游戏开发需要学习什么?
其实知乎已经有类似的问题了,首先推荐你去关注这个问题:想要自己做一款游戏,需要学习哪些知识? - 知乎 (zhihu.com) 底下已经有很多很棒的回答了。其中最精彩的莫过于这篇高赞回答:想要自己做一款游戏,需要学习哪些知识? - 知乎 (zhihu.com),囊括了游戏开发的三个重要岗位:策划、程序、美术所需要的知识技能,面面俱到,十分详尽。可以说是心血之作了,建议三连。我也强烈推荐想要入门游戏开发的同学关注这位答主,他写的很多文章都很有价值,能帮助我们了解到很多游戏开发的知识。当初我在想转行入门游戏开发的时候,也是从他的文章中受益良多。然后分享一下我的个人经验吧。题主是一个软件工程的学生,那么我假设你将要从事游戏开发中的程序岗位。游戏程序一般也分三个方向,游戏客户端、游戏引擎和游戏服务端。游戏服务端开发一般只有网络游戏或联网游戏有,我自身也不是特别了解。并且你说希望做一款3A级别的游戏,那么游戏程序应该更多的是客户端和引擎方向的,所以服务端我就不说了,下面的分享主要针对这两个方向而言。
我很喜欢将知识学习和游戏中的武功修炼做类比,比如我最喜欢的游戏《武林群侠传》/《侠客风云传》。在这个游戏中,如果你想成为一个绝世高手,那么除去一些闲逛奇遇的离谱事件之外,你需要关注三个事情:基本功、内功和招式。
基本功在游戏里包含了硬功、软功、轻功、耳功、眼功等等。它是你成为习武之人的最低门槛,决定了你师父是会欣然收你为徒,还是会说:“看来你不是一块习武之料啊”,然后出门被猎人一箭射死,GameOver。那么在游戏开发里面,基本功对应了计算机体系下的基础知识,包括:编程语言(C++)、数据结构、算法、操作系统、计算机组成、汇编语言、计算机网络等等。这些基础知识的具备与否,决定了你是否有资格成为一名游戏程序员,而掌握得扎实与否,更是影响着你今后的成长速度。从我的个人经验来看,这些基础知识的重要程度正如我列出的顺序所示,尤其是前三项,不仅是对于游戏开发本身重要,而且也是求职面试中最关注的。至于如何学习,这又是另外一个话题了,知乎也已经有很多对应的问题和优秀的答案了,此处我就不赘述了。
再来说内功,在游戏里每个门派都有自己独有的内功心法,功效特点也各不相同,或阳刚(九阳神功)、或阴柔(九阴真经)、或偏重进攻(龙象般若功)、或偏重防守(金刚不坏神功)。选择什么内功决定了你的修炼方式和发展路线。而内功的深厚与否,更是决定了你将来能成为绝世高手,还是沦为无名之辈。除了主角之外,一个人短时间内一般只能修炼一门内功心法。
那么对应于游戏开发,内功心法意味着你将要研究和专注的领域。包括专注于视觉效果的图形渲染领域(紫霞神功,修炼时有氤氲紫气浮现于脸上,视觉效果好)、专注于运行效率的性能优化领域(化功大法,将所有性能瓶颈化于无形)、专注于模拟万事万物运动规律的物理模拟领域(小无相功,所有功法皆为我所用,模拟一切),还有动画、3C、Gameplay、AI等等多种领域。这些领域都有着非常庞大且高深的知识等着我们学习,因此正如内功修炼一般,我们在短时间内,甚至整个职业生涯,其实专注于某一个特定的领域就可以了,你对该领域研究得越深入,你的内功就越深厚。
另外,这些领域也分别对应着游戏引擎开发和游戏客户端开发的一些工作范畴,如果你对这些领域还不太了解,或者不知道想要从事哪一个岗位,可以看我之前的一个回答请问腾讯校招中游戏引擎开发和游戏客户端开发有什么区别吗? - 知乎 (zhihu.com)。
最后是招式,招式是你在江湖上安身立命的本领,是真正能上阵杀敌、攻城略地的法宝。对应于游戏开发,就是你在研究领域下的特定细分方向的技术积累,是你真正能产生价值的工作能力。从我个人的看法来说,我认为现在的游戏行业稀缺的不是一个什么都会,但是各项都不是非常精通的人,而是十分专业化、在细分领域有深厚积累的人才。最近我看了一下米哈游的校招描述,光是跟图形学相关的岗位就有六七个,包括但不限于:图形算法工程师、图形学研究员(深度学习方向)、图形工程师、渲染开发、引擎开发... 而在实际的工作中,一般也是优先某个人负责自己擅长的方向。因此,你是否有自己的独门招式,或者是否把一项技艺修炼得炉火纯青,决定了HR和面试官是否会跟你相见恨晚、表示欢迎加入,还是觉得这个人平平无奇,因为没有什么特点而筛选掉。
具体而言,比如渲染领域中的招式:六脉神剑(光线追踪)、暴雨梨花针(粒子系统),比如物理领域的招式:乾坤大挪移(物理碰撞),比如AI领域的招式:凌波微步(寻路AI)、移魂大法(怪物AI)...(不好意思,上头了,假期实在太无聊了)。正经一点,那就大概列出一些我知道的各个领域的细分方向吧:
渲染(光照、着色、阴影、抗锯齿)、物理(刚体碰撞、流体模拟、布料模拟、毛发模拟)、动画(骨骼蒙皮、Motion matching)、3C(角色、相机、控制)、AI(怪物、寻路、车辆)、Gameplay(战斗、任务、技能)、工具(各种编辑器)。另外值得提的一点是,程序岗位是一个非常重视实践的岗位,所谓招式的熟练度,对应于你的实际工程经验,包括你做过的项目、解决过的问题,你对于游戏引擎的熟练程度等。
最后我再提一些具体可行的建议吧。题主现在才大一,十分年轻,很幸运这么早就找到了自己想要从事的方向,我在这么大年纪的时候还是个网瘾少年呢。题主还有很多时间可以慢慢地修炼和提升自己。建议前两年的时间先沉下心去学习计算机的基础知识,平时学校的专业课都好好听听,如果觉得上得不好,可以学学一些国外名校的经典课程,或者自己买一些经典书籍来学习。先把C++、数据结构和算法基础打好了,做一些小项目练手。
期间可以多看看知乎一些优秀的游戏领域的答主的文章,加深对游戏开发的了解。然后去买一本《游戏引擎架构》,当作课外书来看(第一次可能很多看不懂),同时思考自己感兴趣的、未来想要研究的领域。基础打好之后,可以开始尝试做一些游戏项目。选择一款引擎,Unity或者Unreal,既然你想开发3A级的游戏,那么我建议选Unreal。然后就跟着网上的教程,手把手地学做几个游戏吧。做完游戏过把瘾之后,你应该也可以算是初窥游戏开发的奥妙了。接下来可以开始深入学习自己想要钻研的领域的知识,然后围绕着这个领域尽可能得去做一些可以拿得出手的项目吧。比如图形学领域,那知识真的是浩如烟海,学习路线也可以看看知乎的其他答案,我也不介绍了。
一年多的时间,你应该也到了找实习的时候,勇敢地向游戏公司投递简历吧。顺利的话,就可以得到实习的机会,那就继续如饥似渴地学习吧,尽快地积累自己的工作经验。如果到了这一步,你应该也算踏入了游戏行业,很多东西应该会清晰明了很多,接下来就自己把握吧。
最后我想引用我喜欢的游戏《武林群侠传》/《侠客风云传》中,主角有一句很经典的台词,曾经也作为我奋斗时期的座右铭——“一点一滴的磨练,都是通往强者之路的基石。”
加油吧少年~!
页:
[1]