游戏开发完整学习路线

2017年03月30日 17:02 0 点赞 0 评论 更新于 2017-05-06 08:57

在软件开发领域,游戏开发看似目标明确,实则涵盖范围广泛。初学者若缺乏指引,极易误入歧途;相反,若能借鉴前人经验,则可事半功倍。

一、平台与编程语言选择

游戏开发平台类型

游戏开发的平台丰富多样,主要包括以下几类:

  • 个人主机平台:如 Windows、Linux、Mac OS。
  • 移动平台:涵盖 iOS、Android、Windows Phone、BlackBerry OS、Symbian 等。
  • 专业主机平台:例如 Xbox、PlayStation、Wii 等。

不同平台主流编程语言

若从事移动平台游戏开发,Android 平台主流使用 Java 语言,iOS 平台则以 Objective - C 语言为主。而在个人主机上,C++ 目前及未来很长一段时间内仍将是主流的游戏开发语言。

不过,不同平台的游戏开发并非毫无共通之处。在编程领域,深入学习后会发现很多知识的本质相似。例如,扎实理解 C++ 基本语法(而非死记硬背)后,转用 Java 语言并不困难,因为它们的面向对象特性及其他编程语言特性相通。所以,学习时应深入底层,这样能更轻松地触类旁通。但初期最好选择贴合自身的专属领域和编程语言,以便尽快在该领域立足。

游戏开发路线选择

无论选择哪个平台,游戏开发都离不开游戏引擎,主要有两条路线可供选择:

线路一:只使用游戏引擎

此路线适合想快速上手游戏开发工作的人。在实际工作中,多数情况下无需自行开发游戏引擎,因此该路线满足日常工作需求。对于只使用游戏引擎的开发者,入门阶段应阅读引擎教程(包括书籍、视频、网上博客、教程、官方帮助文档等),并熟练掌握教程所使用的编程语言。

流行游戏引擎介绍

不同平台下流行的游戏引擎因性能和支持的编程语言不同而有所差异(方括号内为特别推荐,基于开源性、易用性、性能与效果等综合因素):

  • Windows 或游戏主机:【Unreal】、寒霜、CE3
  • 苹果 iOS:【Unity3D】、【cocos2d - ObjC】、【Unreal】、sparrow、sprite kit
  • 安卓:【Unity3D】、【cocos2d - x】、【Unreal】、AndEngine、libgdx
  • 网页:【Egret】、【cocos2d - html5】、Fancy3D、Unity3D

选择游戏引擎时,建议选用流行的引擎,因为其官方功能完善、易用,问答社区也更活跃。各游戏引擎特点如下:

  • Unity3D:简单易用,对性能要求不高,但画面效果一般,常用于移动平台。
  • Unreal:开源免费,画面效果出色,但对设备配置要求较高,常用于开发大型绚丽游戏。
  • cocos2d - x:开源免费,在 2D 领域表现出色,但不支持可视化开发。

不同游戏引擎使用的编程语言或脚本语言可能不同。通常,Windows 平台使用 C++,并结合 Lua 或 Python 脚本语言;iOS 平台使用 Objective - C 或 Swift;安卓平台使用 Java。但也有例外,如 Unity 在各平台均可使用 C# 或 JavaScript 脚本语言。

商业流行游戏引擎详细比较

  • Unreal4(虚幻 4)
  • 适用平台:Microsoft Windows、Mac OS X、iOS、Android、虚拟现实设备(包括但不限于 SteamVR/HTC Vive、Morpheus、Oculus Rift 及 Gear VR)、Linux、SteamOS 及 HTML5 平台。
  • 编程语言:C++ 或无需编写代码。
  • 优点:开源免费,画面效果出色,有丰富的商业大作开发经验,支持跨平台,商店资源丰富,具备可视化开发功能。
  • 缺点:开发机器配置要求较高。
  • 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#、JavaScript、Boo。
  • 优点:方便易用,中文资料丰富,跨平台,商店资源丰富,支持可视化开发。
  • 缺点:画面效果一般,非免费开源,引擎效率较低。
  • 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 技术不成熟。
  • CryEngine3
  • 适用平台:Microsoft Windows、OS X、Linux、PlayStation 3、PlayStation 4、Wii U、Xbox 360、Xbox One、iOS、Android。
  • 编程语言:C++、Lua。
  • 优点:画面效果世界一流,支持可视化开发,跨平台。
  • 缺点:开发机器配置要求较高,非免费开源。
  • Frostbite3(寒霜 3)
  • 适用平台:Microsoft Windows、PlayStation 3、PlayStation 4、Xbox 360、Xbox One。
  • 编程语言:C++。
  • 优点:画面效果出色,支持可视化开发,跨平台。
  • 缺点:开发机器配置要求较高,非免费开源。
  • Egret(白鹭)
  • 适用平台:HTML5、iOS、Android、Windows Phone。
  • 编程语言:TypeScript、JavaScript。
  • 优点:免费开源,配套工具多,全中文文档,支持可视化开发,跨平台。
  • 缺点:支持平台较少,主要用于开发对性能和效率要求不高的小游戏。

然而,仅使用游戏引擎只能停留在表面,难以触及本质。当遇到问题或有特殊需求时,处理起来较为困难。且游戏引擎技术发展迅速,所学多为他人的方法,而非本质思想。未来新的游戏引擎兴起时,又需重新学习。许多大公司都有内部专用引擎,如网易的风魂引擎、金山的剑网 3 引擎、蜗牛的 Flexi 引擎等。因此,单纯走此路线可能难以长远发展,且容易感到乏味。

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

深入学习游戏引擎原理短期内可能不会带来显著成效,但可弥补仅使用游戏引擎的不足。学习原理并非一定为了自创引擎,而是为了更好地理解和使用现有引擎。积累到一定程度后,开发者也有能力自行开发游戏引擎。

学习游戏引擎原理的建议

对于想学习游戏引擎原理的开发者,需制定明确的长期目标:

  1. 初步使用游戏引擎:初期对游戏引擎概念模糊,建议先使用一两个游戏引擎。推荐 C++ 程序员学习虚幻 4 游戏引擎,它免费开源,值得学习。尽量避免学习不开源的游戏引擎,因其对学习原理帮助不大。
  2. 学习图形库:游戏开发涉及实时渲染,离不开图形库。目前主流的图形库是 Windows 平台专用的 DirectX 11 和通用平台的 OpenGL,至少应入门其中一个。
  3. 学习计算机图形学:开始阅读计算机图形学相关书籍。若理论基础不足,需补充线性代数、基本微积分和 3D 数学知识。
  4. 专攻感兴趣的部分:游戏引擎包含多个部分,渲染只是其中之一。完成渲染部分的基础学习后,可选择着色器编写、地形编写、物理引擎编写、模型和动画、人工智能体设计、网络编程等感兴趣的部分进行深入学习。毕竟实际工作多为团队开发,开发者应专精擅长的领域。

基础理论知识和游戏引擎组件书籍推荐(按需选择阅读)

数学基础

以下数学基础书籍专为游戏开发设计,学习效率更高:

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

图形库

  • 针对 DirectX 的书籍
  • 《Introduction to 3D Game Programming with DirectX 11》(龙书,入门必看)
  • 《Practical Rendering and Computation with Direct3D 11》(进阶)
  • 《Real - Time 3D Rendering with DirectX and HLSL》
  • 针对 OpenGL 的书籍
  • 《OpenGL SuperBible》(蓝宝书,以例子为主,有中文版,但翻译欠佳)
  • 《OpenGL Programming Guide》(红宝书,如 API 手册,例子较少,适合熟练者查询,有中文版)
  • 《OpenGL 4.0 Shading Language Cookbook》(进阶,类似 API 手册,有中文版,翻译不佳)

计算机图形学

  • 《The Nature of Code》(有中文版,较简单)
  • 《Fundamentals of Computer Graphics》(国外多所大学采用的入门教材,涵盖范围广)
  • 《Physically Based Rendering》(主要涉及离线渲染)
  • 《Real - Time - Rendering》(必读经典)
  • 《计算机图形学》(作者舍利)
  • 《Computer Graphics》(建议看最新第三版)
  • 《计算机图形学原理及实践:C 语言描述》

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 为主,讲解详细)

地形

《Real Time 3D Terrain Engines Using C++ And DX9》全面讨论了地形渲染技术。

模型导入和动画

  • 《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》

网络

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

物理

  • 《Game Physics》
  • 《Game Physics Engine Development》
  • 《Real - time Collision Detection》(碰撞检测领域的优秀书籍)
  • 《3D Game Engine Design, 2nd》(第 8、9 章值得一读)

细节层次

《Level of Detail for 3D Graphics》

光线跟踪

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

人工智能

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

综合

  • 《Game Programming Gems》(文章范围广,选择性阅读)
  • 《Color and Light in Nature》
  • 《Digital Design of Nature》
  • 《Form + Code in Design, Art, and Architecture》

注:以下图片非原创,出自作者星铃丹,经授权发布,转载请注明出处。该图片内容详细,特此分享。

作者信息

孟子菇凉

孟子菇凉

共发布了 3994 篇文章