游戏开发完整学习路线

在软件开发中,游戏开发这个方向看起来目标很明确,但其实是个领域很广的方向,入门的时候如果得不到指点一二,很容易误入歧途,相反,如果走这条路之前能得到前人的一些指路,是可以事半功倍的。

线路一:只使用游戏引擎

对于第一条路线,游戏引擎的使用并不困难,因此适合想快速上手游戏开发工作的人。我们工作大多数时候也不会自己开发游戏引擎,所以这样对于一般的日常工作也没什么大碍。对于只使用游戏引擎的人来说,入门阶段要做的就是看该引擎的教程(书籍、视频、网上博客、网上教程、官方帮助文档等),并且熟练该教程所使用的编程语言。

所以你要做的第一件事,就是去了解现在流行的游戏引擎。因为不同平台下的性能不同,支持的编程语言也不尽相同,所以针对不同平台下的流行的游戏引擎也是不同的(方括号里面是特别推荐的,基于开源性、易用性、性能与效果等方面的综合水平推荐):

  • windows或游戏主机:【Unreal】、寒霜、CE3
  • 苹果ios:【unity3D】、【cocos2d-ObjC】、【Unreal】
  • 安卓:【unity3d】、【cocos2d-x】、【Unreal】
  • 网页:【Egret】、【cocos2d-html5】、unity3d。


在选择游戏引擎的时候,尽可能选用流行的游戏引擎,因为这个游戏引擎流行意味着官方的功能比较完善和易用,问答社区也比较多人解疑。各个游戏引擎也各有千秋,Unity3d胜在简单易用,对性能要求不高,但是效果不够华丽,因而一般用在移动平台而不会用在电脑或游戏主机。Unreal胜在开源免费,而且效果也很出色,但是对设备要求比较高,因而常常用来开发效果绚丽的大型游戏。cocos2d-x也是开源免费的,在2D领域深有造诣,但是缺点是不可视化开发。另外,如果你想了解游戏引擎原理,那么首要考虑的就是开源的游戏引擎。

不同游戏引擎使用的编程语言或者脚本语言可能是不一样的,所以当你想要学习某个游戏引擎的时候,也应该留意该游戏引擎所使用的语言。

下面是现在流行的游戏引擎详细比较:

1) Unreal4(虚幻4)

  • 适用平台:Microsoft Windows、Mac OS X、iOS、Android、虚拟现实设备(包括但不限于SteamVR/HTC Vive、Morpheus、Oculus Rift及Gear VR)、Linux、SteamOS及 HTML5平台。
  • 编程语言:C++。
  • 优点:开源免费,画面效果出色,已有多款商业大作经验。同时,它还能跨平台,商店资源丰富,提供了无需编写代码即可制作游戏的强大功能(可视化开发)。

2) Unity3D

  • 适用平台:iOS、Android、Windows phone 8、Tizen、Microsoft Windows、Windows Store应用程序、Mac、Linux/Steam OS、网络播放器、WebGL、PlayStation3、 PlayStation4、PlayStation Vita版、Xbox One、Xbox 360、Wii U、Android TV、Samsung SMART TV、Oculus Rift、Gear VR、Microsoft Hololens、Playstation VR。
  • 编程语言:C#。
  • 优点:方便易用,中文资料丰富,跨平台,商店资源丰富,可视化开发。
  • 缺点:画面效果一般,不是免费开源,引擎效率比较低。

3) Cocos2d系列(包Cocos2d-x、Cocos2d-ObjC、Cocos2d-html5、Cocos2d-xna等)

  • 适用平台:Microsoft Windows、OS X、 Linux、iOS、 Android、 Tizen、 Linux、Mac OS X、HTML5浏览器、Windows Phone 7 & 8、Xbox 360。
  • 编程语言:Python、Objective-C、C++、 Lua、 JavaScript、 Swift、JavaScript、 C#。
  • 优点:开源免费,跨平台,中文资料丰富,2D技术丰富且成熟。
  • 缺点:不可视化开发,3D方面技术不成熟。

但是使用游戏引擎毕竟是停留在表面看不到本质,当游戏开发的时候出现了某些问题或者特殊需求,你往往很难处理。而且游戏引擎技术日新月异,你所学的几乎都是别人留下来的方法,而不是其本质思想。如果将来别的游戏引擎兴起,你又要重新学习另外的游戏引擎怎么使用。在很多大公司里面,甚至都有自己公司内部专用的引擎(如网易公司的NeoX和Messiah引擎、金山公司的剑网3引擎、蜗牛公司的Flexi引擎等等)。所以单纯地走这条路线,可能不会让你走得很远并且可能会日渐乏味。 

线路二:使用游戏引擎并深入了解游戏引擎原理

对于第二条路线,深入学习游戏引擎原理短时间不会让你的工作有什么卓越的成效,但是可以弥补只使用游戏引擎导致的问题,而且学习游戏引擎原理,更多时候不是一定就为了自己日后要造个游戏引擎,而是更深入理解自己的游戏引擎,更好地使用它。当然,千里之行始于足下,经常学习游戏引擎底层原理的人到了一定的积累的时候,自己造个游戏引擎也是可以的。 

对于像学习游戏引擎原理的人来说,需要制定自己明确的长期目标: 

1) 首先,一开始可能对游戏引擎没什么概念,建议先使用一两个游戏引擎(我推荐C++程序员学习虚幻4游戏引擎,现在是免费开源的,非常值得学习。那些不开源的游戏引擎尽量不要去学习,因为其对于学习原理来说没有多大贡献)。 

2) 因为游戏开发就是一门实时渲染的艺术,所以离不开图形库的学习。现在主流的图形库是Windows平台专用的DirectX 11和通用平台的Opengl。这两个图形库,至少需要入门其中一个。 

3) 然后,你就可以开始看计算机图形学的书籍了。如果你发现你的理论底子不足,这个时候就需要补一下线性代数、基本的微积分、还有3D数学的知识。 

4) 游戏引擎中包含了各个部分,上面的渲染只是游戏引擎的一部分。还有其它诸如着色器编写、地形编写、物理引擎编写、模型和动画、人工智能体设计、网络编程等等,完成渲染部分的基本学习后,你可以选择自己感兴趣的部分进行专攻,毕竟我们实际工作大多数时候是团队开发,而不是单打独斗,每个人都应该精通自己所擅长的那部分。

下面是基础理论知识和游戏引擎组件书籍推荐(不必全看,请有选择地阅读):

1) 数学基础

下面这些数学基础书籍是为游戏开发量身定制的,比专门看某一数学方向更有效率:

  • 《3D Math Primer for Graphics and Game Development》,有中文版
  • 《Mathematics for 3D Game Programming and Computer Graphics》
  • 《Essential Mathematics Guide》
  • 《Geometric Tools for Computer Graphics》

2) 图形库

针对 DirectX 的书籍:

  • 《Introduction to 3D Game Programming with DirectX 11》,大名鼎鼎的龙书,入门必看的
  • 《Practical Rendering and Computation with Direct3D 11》,进阶
  • 《Real-Time 3D Rendering with DirectX and HLSL》


针对 OpengGL 的书籍:

推荐先从LearnOpenGL中文教程开始,有丰富的实例,深入浅出的讲解。学完这个之后,再选择看下面的书籍,会更好。

LearnOpenGL中文教程地址:https://learnopengl-cn.github.io/intro/

  • 《OpenGL SuperBible》,著名的蓝宝书,以例子为主,有中文版。但不建议看中文版,翻译得不好。
  • 《OpenGL Programming Guide》,著名的红宝书,有中文版。红宝书更像是手册,API大全,例子较少,适合熟练者查询使用。
  • 《OpenGL 4.0 Shading Language Cookbook》,进阶,基本上就是API手册,有中文版。但不建议看中文版,翻译得不好。

3) 计算机图形学

推荐先从《Real-Time-Rendering》开始,必读经典!必读!这里有个中文版的《Real-Time Rendering 3rd》提炼总结,可以把它看做《Real-Time Rendering 3rd》的解读版与配套学习伴侣。

《Real-Time Rendering 3rd》提炼总结地址:https://github.com/QianMo/Real-Time-Rendering-3rd-CN-Summary-Ebook

  • 《The Nature of Code》,有中文版,比较简单
  • 《Fundamentals of Computer Graphics》,被国外多所大学采用的入门教材,介绍范围比较广,从基本的相关数学到建模、渲染、动画、应用方面都有提及
  • 《Physically Based Rendering》,主要是离线渲染
  • 《计算机图形学》,作者舍利
  • 《Computer Graphics》,要看最新的第三版
  • 《计算机图形学原理及实践:C语言描述》

4) Shader着色器

如果使用的是Unity引擎,推荐从《Unity Shader 入门精要》这本书开始,讲的非常通俗易懂。

  • 《Cg_tutorial》,入门
  • 《The Complete Effect and HLSL Guide》,入门
  • 《Shaders for Game Programmers and Artists》,含有大量入门例子
  • 《Advanced Lighting And Materials With Shaders》,介绍光照模型和技术
  • 《GPU Gems》进阶必读。
  • 《Shader X》系列,每年出版一本,包含最新的实时渲染技术。论文性的比较多,偏难。
  • 《Programming Vertex, Geometry, and Pixel Shaders》,以DirectX 10为主,很详细。

5) 地形

《Real Time 3D Terrain Engines Using C++ And DX9》非常全面的讨论了关于地形渲染的各种技术。

6) 模型导入和动画

  • 《Character Animation With Direct3D》包含了最新的游戏动画技术
  • 《Computer Animation》
  • 《Real-Time Cameras》
  • 《Computer Facial Animation》
  • 《Realtime 3D Character Animation with Visual C++》
  • 《Advanced Animation and Rendering Techniques》
  • 《Cloth Modeling and Animation》

7) 网络

  • 《TCP/IP 详解 卷2》
  • 《Network Programming for Microsoft Windows》
  • 《Advanced Programming in the UNIX Environment》
  • 《Windows核心编程》
  • 《Multithreading applications in Win32》
  • 《网络游戏核心技术与实战》

8) 物理

推荐阅读PhysX中文文档,有详细的内部实现原理介绍

  • 《Game Physics》
  • 《Game Physics Engine Development》
  • 《Real-time Collision Detection》,碰撞检测方面最好的书
  • 《3D Game Engine Design, 2nd》第8、9章值得一看

9) 细节层次

《Level of Detail for 3D Graphics》

10) 光线跟踪

  • 《Physical-Based Rendering - From Theory to Implementation》
  • 《Another Introduction to Ray Tracing》

11) 人工智能

  • 《Programming Game AI by Example》有中文版
  • 《Artificial Intelligence for Games》
  • 《AI Programming Wisdom》
  • 《AI Game Engine Programming》

12) 设计模式

推荐《设计模式与游戏完美开发》,通过一个游戏从无到有,实际应用设计模式。

自己写的设计模式的读书笔记C#版本的。网上也有其他语言版本的,资料很多。

C#版本:https://blog.csdn.net/qq826364410/column/info/33846

Java版本:https://blog.csdn.net/LoveLion/article/details/17517213

13)数据结构

C#语言可以多看看MSDN,学习API正确的使用范例,也可以查看C#内部源码,ReferenceSource里面有所有的常用数据的实现,List,Dictionary,Queue,Stack等。

ReferenceSource地址:

https://referencesource.microsoft.com/#mscorlib/system/collections/generic/list.cs,aa7e01fcb80a917e

14)算法

最基础的算法,八大排序算法七大查找算法,然后还有动态规划,贪心算法,A*算法等,还可以去LeetCode上刷刷题,上面有超多的题目,还有官方解答。

八大排序算法:https://blog.csdn.net/qq826364410/article/details/79725619

七大查找算法:https://blog.csdn.net/qq826364410/article/details/79715080

动态规划:https://blog.csdn.net/qq826364410/article/details/80007415

贪心算法:https://blog.csdn.net/qq826364410/article/details/80007433

A*算法:https://blog.csdn.net/qq826364410/article/details/79827915

LeetCode地址:https://leetcode-cn.com/

15)引擎本身学习

根据作者自己4年游戏开发曲折历程,吐血推荐先从官方文档开始,然后,对常用API多练多写,做到明其意,会用的程度。然后对引擎的物理,渲染,网络,动画,UI,导航等深入去研究。

Unity文档:https://docs.unity3d.com/Manual/index.html

UnityAPI:https://docs.unity3d.com/ScriptReference/index.html

自己写的一些总结,希望可以帮到学习的你。

Unity用户手册详解:https://blog.csdn.net/qq826364410/column/info/33870

Unity常用API:https://blog.csdn.net/qq826364410/column/info/34836

  • 6
    点赞
  • 102
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值