制作独立/同人游戏需要哪些技能

之前我发在知乎的,现在主页做好了,转载过来,欢迎关注我的知乎专栏。

http://zhuanlan.zhihu.com/indieGame

著作权归作者所有。
商业转载请联系作者获得授权,非商业转载请注明出处。
作者:Jin Han自己经常在B站直播游戏制作的过程的时候,经常会有喜欢游戏的人问我,很喜欢游戏,也想自己做游戏,但是需要学习什么技能。这个答案我总觉得没有办法回答,为啥呢,因为游戏是个过于大的概念,不同类型的游戏需要的技能也非常的不同。最简单的说起,比如桌游,这种游戏甚至不需要任何的高科技,纯粹是一个设计的活。然后休闲游戏,也可以非常简单,一个礼拜几乎就能做了。Flappy Bird这样的游戏,也是大学生都能做的东西。在手机上做一个打牌的游戏,那也是做游戏。但如果说道欧美的大作,星际争霸这样的作品,那无论美术还是程序都几乎是个人无法完成的了。
所以我还是改一下问题,分开说说不同的技能/属性在制作游戏中的一些作用吧。

1.喜欢游戏的心于坚持下去的动力

有爱有动力,才能坚持,做游戏也是一门“手艺”,一下子就成功的例子也不多,有的游戏开发周期长,坚持下去要顶住很多的压力,但是只有有爱才有动力,才能完成。

2.一定的经济基础与受教育程度

我觉得如果想要做独立同人游戏,还是自己经济上不要有压力的为好,制作独立游戏风险很大,市场也不成熟。另外,一个人的品味,学识,教育程度,技能程度,前瞻性,往往和经济基础相关。家庭条件不好,高中辍学说要做游戏的案例很多,但是往往不会有太好的结果。还是应该先“忍辱负重”混入大学,虽然国内大学教育有些蠢,但方向基本还是对的,到了大学再转行也不是问题。

3.英语

为啥我把英语的重要性甚至放在程序之前了,是因为我觉得真的英语太重要了。我个人学生时期一直不喜欢英语,英语也一直不好,好不容易才低分混过了Toefl,导致申请的学校也不是很好,但是我从没否定过英语的重要性。我很早开始就是强行限制自己用英文操作系统,玩英文游戏,有问题用英文问Google,给自己一个英文环境慢慢记忆单词和提高阅读能力。英文最大的作用就是,给你一双眼睛,能让能够看到更多的第一手信息。现在主流的游戏引擎的文档,官网的教程,YouTube的教程,基本都没有中文的,中文的游戏开发社区和英文的社区也是差距很大。会英文能够极大的扩大你资料搜索的范围和搜索能力,外国网站也更容搜索到技术问题的答案,举个例子,当你用百度搜索查找Unity的API脚本bug,结果搜出一个百度知道时。。。那种崩溃的感觉不用我说了吧。另外,英语能够提高一个人其它各方面的修养,社交能力,对游戏很有好处。

4.至少一门编程语言

具体是哪一种语言,我是觉得无所谓的,特别对于完全不会编程的人来说,选择哪一门语言入手完全不重要。因为很快,当你成为码农的时候,同时会几门编程语言一定会成为家常便饭的。。。不过如果是想做游戏,还是非常推荐大家使用Unity+C#的组合。C#这门语言非常不错什么的知乎大概已经讨论过1w次了,这里就不说了。

不过这里要特别说一下C++,现在这么多语言,唯独C++是特殊的存在,因为目前几乎所有引擎游戏脚本语言可以千变万化,但是渲染底层都是C++的。C++是最涉及到计算机原理,渲染原理的语言。3D渲染都有个“渲染管线Render Pipeline”的问题,基本都要从C++的层面去理解,虽然不一定要使用C++,但是得大概知道,你这么做大概会有个什么结果。

5.一定的游戏用数学知识

无论做3D游戏还是2D游戏,将会大量涉及到的一个东西就是游戏的数学问题。主要集中在线性代数,特别是矩阵坐标的各种变换。当然在实际游戏或者编码中,是不需要自己去演算的,但是编码的时候要知道用什么公式能出什么结果。比如向量的加减意义,矩阵相乘的意义,旋转变换矩阵,四元数等等。 如果有机会,自己可以试着看一下引擎的数学函数库的每个函数是干嘛的,就能基本都了解了是为啥了。当然有的复杂的变换也不是随时要用,需要的时候去查也行。 比如要把一个物体从UI的镜头空间里变换到游戏场景的空间里去,需要什么样的计算大概有个数基本就可以了。

6.渲染管线

这方面的知识匮乏,是主要决定了国内大部分独立游戏制作者只能制作2D游戏,大部分美术工作者无法参与制作3D游戏,或者3D游戏画面粗糙的原因。对于新手来说,也听不太懂什么叫做“管线”这个英文单词是Pipeline,我觉得应该翻译成流程更好,说白了就是图形渲染的过程,其中包括多边形绘制,采样着色渲染,也包括动画导入播放等等。目前大部分游戏引擎都简化了这个步骤,也提供了很好的预设,但是理解其背后的意义与实现方法还是很有必要的。总的来说,这一块大概就是一个模型如何正确的导入引擎,如何渲染出想要的效果等一系列的综合知识。想要学习的话,对于新手来说,可以从专业名词开始一个个理解,知道分别是什么,不过进一步深入学习还是需要一个比较长时间的积累和一定C++基础的。

7. Photoshop等平面图片处理技术

这个就不用多说了,一般游戏都离不开的工具。可以用来制作各种2D,UI素材和模型贴图。做游戏的话其实也不一定要会画画,但是基本的剪裁,调整图层等技巧还是要会的。PS不难学,还是很快能掌握的,而且平时生活上PP图还是很有用的。

8. 一款/数款3D建模,动画制作软件

3D建模常用软件有 3DSMAX,MAYA,Blender等,各有优劣。个人觉得对于游戏来说Maya建模+3DSMAX制作动画是比较好的流程。3D建模动画软件对于新手来说,还是相对比较复杂的,因为刚接触的时候会一下子接触到很多新的概念,不过这方面很多的概念和渲染管线的重合度很高,可以互相学习借鉴。

9. 美术综合技巧,美感与品味

以上所说的软件说到底只是工具,但核心还是综合美术的技巧,美感与品味,游戏做出来效果如何,UI怎么摆,游戏镜头怎么处理等等一系列问题,都是个综合美术的技巧,不是说某个环节非常厉害,全局把握就厉害的,当然也有能够全局把握好的美术高手。制作游戏,特别是初期实现阶段,不懂技术的话,容易没有话语权,没有话语权的话设计也就轮不到你了。

10.游戏性的设计

这个是个很大的范畴,但是我个人觉得,其实电脑游戏从最初到现在,基本上大部分游戏的玩法都有人做过,只是有的做的成功有的不成功。 比如说迷宫在暗黑2,在仙剑中的感觉和轩辕剑的感觉都是非常不同的。游戏的很多元素都是可以剥离出来的,比如需要增加游戏时长就可以做更大的地图,想要增加紧张感就加大操作频率,想要显得游戏智商高就做点巧妙的解谜。如何抽丝剥茧的把不同的玩法整合到一起,配上比较好的剧情美术等等,就是很不错的游戏了。游戏的制作实现是技术的工作,而游戏最终的成功,一定是游戏设计的成功。

11.故事情节编写

游戏的设计和故事情节一般都是分不开的,(除了有些完全不需要故事情节的游戏)大部分正儿八经的游戏还是需要一个故事情节的。故事情节要和游戏其他的设计结合好。由于游戏制作中可能有许多限制和困难,游戏并不是什么都能表现的出来的,那么有点时候修改游戏剧情为游戏设计方面的问题服务,让整个剧情结合游戏看起来合理也非常的重要,总的来说需要一个全局的考虑。

11.音乐/音效制作技巧

游戏的音乐音效总的来说还是比较容易外包出去的,价格一般还比较合理,而且免费的资源和付费的资源包也非常多,总的来说这个问题很容易解决,而且玩家对这些也不是很敏感,只要不难听就不会有人吐槽了。所以如果不懂音乐,那至少也要会找正确的人帮你做音乐。当然音乐极好的游戏,肯定是游戏的加分项。

12.版本管理

这个版本管理确实应该专门说一下,因为确实非常重要。开发的时候,特别是坑挖的比较大的时候,会发现乱七八糟的事情,代码,美术资源会越来越多,多人合作的时候项目不同步也是大问题。版本管理虽然是个“小事”但是实际工作的时候会发现这东西其实没那么容易,能正确使用也是一门“手艺”。这里我们使用的是Perforce,Git的话虽然很火,但是其实感觉没想象中那么好用(也有可能是我用的不熟练的问题)也要考虑到很多人不会用命令行的问题。

13.游戏引擎

游戏引擎选用也比较重要,这个年头我觉得如果是想做游戏而不是搞技术,那还是用别人的引擎把。游戏引擎现在比较火的 Unity Unreal CryEngine等等基本都是跨平台的,给人区分的第一印象都是画面的好坏。但是我个人觉得游戏引擎选用还是应该优先考虑合适不合适这个问题,还有引擎容易不容易上手,工具多不多的问题。说到底无论什么引擎最终都是要通过Dx或者OpenGL之类的图形接口来渲染的,只是各种引擎预先配制好的渲染功能和方便调整效果的工具不同导致画面不同,如果水平高,Unity也能做出类似CryEngine的效果(当然没那么方便了),但是用CryEngine做手游,估计就没Unity方便了。游戏画面好不好,美术的水平也很重要,容易用容易上手的引擎,可以让一般的美术工作者稍微学一下就能开引擎自己调整游戏中的效果,这点也是很重要的。游戏工具多不多也非常重要,因为不可能全部的功能都自己去实现,针对这个引擎的“插件”多,也能大大简化开发的流程,或者做出一般人做不出的效果。

14.Shader或材质

写Shader是个很高级的事情,因为需要综合能力特别多,需要懂程序还要懂美术,不过现在好多引擎都附带了材质连连看,很多美术就都能做了。但是怎么连效果好资源占用少,还有很多选项的意义,就需要有一些渲染方面的知识了。当然有的东西连连看解决不了的时候,就需要自己去写了Shader了,然而这方面的学习资料少的可怜。

15.整合能力,其他综合性技能,学习能力

以上说了这么多,最终能够整合到一起,还需要有很多工作,比如各种小工具,各种小技巧的运用积累,都是需要比较长的时间去慢慢体会提高的。学习能力是保持自己不断进步的前提,也是开发过程中带来提升的动力。

X.好像还有很多,一下子又想不到了,欢迎补充。。。

写了这么多,总觉得没写完,又开始有些后悔开始写这个话题了,因为我发现,实在涉及的方面还是太多了,我回答不全面,而且还有大量问题以我目前的水平也无法回答,但想想如果删了又有些可惜,或许对有些人还是有些帮助的,所以姑且先这样吧。
(反正今后觉得自己蠢了可以回来再改233)

3 comments

    • chelly on 2016年8月6日 at 上午2:33

    觉得以后自己做游戏有信心了!!!!!!!!!!

    • Mg_07 on 2016年8月29日 at 下午7:29

    本来还想投个简历的,看来还是不出去祸害别人的好,继续宅家深造。

  1. 喜欢游戏的信心与动力 嗯 有了。 一定的经济基础 嗯 有了。英语要好编程要学 嗯 这个可以有。一定的游戏用数学知识……..??????????
    数学渣这种感觉就像被判了死刑一样难受(哭)

发表评论