hi~ 我们邀请了网易游戏雷火的资深引擎渲染同事回答了这个问题 以下是他的回答:

游戏引擎是什么?问这个问题,想得到回答的人应该是刚入门游戏行业的新人。对此,直接推荐一本书,这也是很多大佬都已经推荐过的,读完之后应该对游戏引擎就有比较全面的一个认知了。对,就是这本《游戏引擎架构》,现在有第二版了,之前一直读的是第一版,两本书的图都贴了一下。

怎样开始做一个游戏,这里也假定出发点是从程序开发角度,也就是纯技术角度。毕竟策划、美术如果也牵扯进来,那要学的东西还真是多的不行。

开发角度,其实也是分两种类型。一种是:知其然,也就是任务在身,想早点完成各种需求,把游戏做出来。另一种是:知其所以然,也就是想知道很多底层实现是为何,想花时间弄得明明白白。

对于第一种类型,很直接的推荐就是使用商用引擎unity、unreal,赶紧下载一个,官方文档看起来,官方游戏demo运行起来。网上现在这两个引擎的资源和问答非常多,很多问题都可以在网上得到相关回复。当然最重要的一点:请自己动手做,就算是照着文档一步步走也都行,不要停留在看上面,实践第一位。

对于第二种类型,要关注和学习、补充的内容就会多很多。游戏开发需要使用的技术,基本是一个大杂烩,就是你大学有学到、没学到的各种知识都可能会运用到,甚至包括很多人觉得没有用的数学和硬件知识。当然,这些都不是必须的。而其中最基础的能力我想是:

1. c/c++。很多游戏内核都是用c、c++写的,而且这也是大部分人大学的必须课,读懂基础代码必不可少。如果对于语言还不是很熟悉的同学,建议可以阅读下这些经典书籍:

入门级的C++ Primer Plus
提升版C++ Primer

2. 数学。游戏引擎,不管是渲染还是物理,甚至很多效果,都离不开数学计算,不要求精通,但是至少对于一些常见数学知识能有概念,否则很多文档看得都云里雾里了。最基本和需要了解的应当算线性代数了,里头矩阵、向量计算对于理解游戏的一些计算帮助意义很大。

3. 一门脚本语言。python或者lua是游戏中最常见的脚本语言。不管客户端、服务端开发都会用到。并且在实际工作中,用它们写一些小工具也是非常好用的。简单语法入门,这几个网站可以花几小时过一遍:

有了这些基础,那到底怎么学习或者开始呢?

概括为八个字:“循序渐进、实践落地”。

怎么一个“循序渐进”?

第一阶段:熟悉自己项目的引擎或者找开源引擎进行使用。这一阶段,不要求研究太深,先学会用。可以对照《游戏引擎架构》的各个部分来熟悉、使用引擎。

主要目的——熟悉整个游戏引擎的各个方面。

第二阶段:在某个领域扎根,做深入。可以是:物理相关,柔布相关,UI界面相关,植被相关、人物表现相关、动作相关、特效相关。因为大部分人精力有限,不可能一下样样精通。虽然说只是强化某个方面,实际上游戏各个环节环环相扣,在了解熟悉一个方面的时候,你对其它环节或多或少也有不少了解。这个阶段,还需要阅读大量相关领域的博客或者论文,最快的速度让自己在某一方面有所建树,这也能够提高自己的信心,毕竟游戏要学的东西真的太多,如果一下想吃成一个胖子,很可能很快自己就迷失了。很有效的一种方法,就是先和同事前辈取经,先找对路,然后再深究。如果一开始找错地方挖井,挖再深可能都不一定有水喝。关于这部分,渲染方面有几个优秀的博客大家可以看看:

主要目的——不慌不忙,由点入手,深化游戏引擎的认知。

第三阶段:阅读自己项目引擎、开源引擎的底层实现。在有了第二步的基础,基本上对引擎有了初步的认知,在第三阶段,就可以将原来很多比较模糊的概念完全细节化,了解其中实际的实现奥秘。

到这个阶段,可能很想多补充能量。我想milo大神的书单可以关注一下:

主要目的——全面对游戏引擎内核实现进行了解。

第四阶段:到了这个阶段,其实也不太需要再问这个问题了。自己应该有自己很多的判断和职业规划了。游戏性能优化可能是一个不错的方向,可以考虑。

主要目的——强化个人硬实力,锻炼不可或缺的能力。

怎么一个“实践落地”?

任何和技术相关的知识,做完半本书,永远比看完整本书重要得多很多。不做,永远是纸上谈兵,而且遇到实际问题,瞬间崩塌。只有自己做了,看到结果产出了,遇到各种问题,甚至很多都是资料上没有记录的,学习才能真正到位。

而且,只有落地,才能给工作岗位做足够的输出,有这些输出,才能更好地支撑你个人的职业发展。

最后祝你,学有所成,爱上做游戏,做出游戏大作!