1.平台和编程语言选择
首先,游戏开发平台有很多种类型:
如果你想从事移动平台的游戏开发,Android主流的JAVA语言,iOS主流的Objective-C语言,那么你就得学这个平台的主流语言,主流的游戏开发语言在未来很长一段时间内,个人游戏机上都会包含它。 它仍然是C++。
但这并不是说不同平台上的游戏开发没有共同点。 学习这个在另一个平台上是没有用的。 事实并非如此。 在编程世界里走得越远创作人,你就会发现很多事情的本质都是相似的。 比如音乐,如果你对C++的基本语法有扎实的理解(而不是死记硬背),以后转Java语言就会更容易。 这并不难,因为它们本质上的面向对象特性和各种编程语言特性是相同的。
所以,要想走得远,学习的时候就不能单纯的肤浅。 一个知识你越深入底层,你就越能看到与其他知识的相同点和相似之处,所以你会比别人更容易。 不过,当然,最好一开始就尽可能的坚持自己的专属领域和编程语言,这样才能尽快在这个领域占据一席之地。
无论你选择哪个平台,游戏开发浩大的工程都离不开游戏引擎,所以有两条路线供你选择:
路线一:仅使用游戏引擎
对于第一种路线,使用游戏引擎并不困难,因此适合想要快速开始从事游戏开发工作的人。 我们工作的时候大部分时间都不会开发自己的游戏引擎,所以这对我们的日常工作没有太大的影响。 对于只使用游戏引擎的人来说,入门阶段需要做的就是阅读引擎的教程(书籍、视频、在线博客、在线教程、官方帮助文档等)并熟练掌握编程语言在教程中使用。
所以你要做的第一件事就是了解流行的游戏引擎。 因为不同平台下的性能不同,支持的编程语言也不同,所以不同平台流行的游戏引擎也不同(方括号里的是基于开源、易用性、性能特别推荐的)及效果)其他方面推荐综合水平):
在选择游戏引擎时,尽量使用流行的游戏引擎,因为这种游戏引擎的流行意味着官方的功能比较完善且易于使用,并且问答社区中有更多的人回答问题。 每个游戏引擎都有自己的优点。 Unity3d使用方便,对性能要求不高,但效果不够华丽。 因此,它一般用在移动平台上,而不是电脑或游戏机上。 Unreal之所以胜出,是因为它开源、免费,而且效果非常出色。 但它对设备要求比较高,所以常被用来开发大型、效果华丽的游戏。 Cocos2d-x也是开源免费的,在2D领域有很深的造诣,但缺点是不允许可视化开发。 另外,想要了解游戏引擎的原理,首先要考虑的就是开源游戏引擎。
不同的游戏引擎所使用的编程语言或者脚本语言可能会有所不同,所以当你想要学习某种游戏引擎时,你还应该关注游戏引擎所使用的语言。 在大多数情况下,Windows 使用 C++,结合 lua 或 python 脚本语言。 ios平台使用Objective-C或swift,Android平台使用Java。 但这并非不可避免。 例如,Unity可以在各种平台上使用C#或javascript脚本语言。
以下是目前商业上流行的游戏引擎的详细对比:
1)虚幻4(虚幻4)
2)Unity3D
3)Cocos2d系列(包括Cocos2d-x、Cocos2d-ObjC、Cocos2d-html5、Cocos2d-xna等)
4)哭泣引擎3
5) 冻伤3 (霜冻3)
6)白鹭
但使用游戏引擎毕竟只是表面现象,看不到本质。 当游戏开发过程中出现某些问题或特殊需求时,你往往很难处理。 而且游戏引擎技术日新月异,你学到的几乎都是别人留下的方法,而不是底层的思想。 如果以后出现其他游戏引擎,你就得重新学习如何使用其他游戏引擎。 很多大公司甚至有自己专用的内部引擎(如网易的风魂引擎、金山的剑网3引擎、蜗牛公司的Flexi引擎等)。 因此,仅仅走这条路可能不会走得太远,而且可能会变得越来越无聊。
路线二:使用游戏引擎,深入了解游戏引擎原理
对于第二条路线,深入研究游戏引擎原理不会在短时间内给你的工作带来什么突出的成果,但可以弥补只使用游戏引擎带来的问题。 而且,学习游戏引擎原理更多时候不仅仅是为了自己。 未来我想打造一个游戏引擎,但我想更深入地了解自己的游戏引擎并更好地使用它。 当然,千里之行始于足下。 经常学习游戏引擎底层原理的人c directx 游戏开发,当积累了足够的经验后,就可以构建自己的游戏引擎。
对于想要学习游戏引擎原理的人来说,需要给自己设定明确的长期目标:
1)首先,一开始你可能对游戏引擎没有任何了解。 建议先使用一两个游戏引擎(我推荐C++程序员学习Unreal 4游戏引擎,现在免费开源,值得学习。那些不开源的游戏引擎要尽量不要不要研究它,因为它对学习原理没有多大贡献)。
2)因为游戏开发是一门实时渲染的艺术,所以离不开图形库的学习。 目前主流的图形库是Windows平台的DirectX 11和通用平台的Opengl。 您需要至少开始使用这两个图形库之一。
3)然后,你就可以开始阅读计算机图形学书籍了。 如果你发现自己的理论基础不足,这时候就需要补充线性代数、基础微积分、3D数学等知识。
4)游戏引擎包含各个部分,上面的渲染图只是游戏引擎的一部分。 其他还有shader编写、地形编写、物理引擎编写、模型与动画、仿真体设计、网络编程等。完成渲染部分的基础学习后,可以选择自己感兴趣的部分专攻毕竟,我们大多数时候,实际工作都是团队开发而不是单独工作。 每个人都应该精通自己擅长的事情。
为了保持文章的紧凑,我将游戏引擎的基础理论知识以及各个引擎组件的推荐书籍放在了文章的附录中。
推荐参考以下书籍:《Clayman's Graphics Corner》
下表是基础理论知识和游戏引擎组件的推荐书籍列表(不必全部阅读,请选择性阅读):
1)基础数学
以下基础数学书籍是为游戏开发量身定做的c directx 游戏开发,比专注于某个数学方向更有效率:
2)图形库
OpenGL 书籍:
3)计算机图形学
4)Shader着色器
5)地形
“RealTime3DTerrainEnginesUsingC++AndDX9”对地形渲染的各种技术进行了非常全面的讨论。
6)模型导入和动画
7) 网络
8) 物理
9) 详细程度
“3D 图形的细节级别”
10) 光线追踪
11) 人工智能
12) 综合