2023-11-11
在程序开发中,游戏开发的目标似乎很明确,但实际上是一个广泛的领域。如果你在开始时没有得到指导,很容易迷失方向。相反,如果你能在走这条路之前得到前任的一些指导,你可以用一半的努力得到两倍的结果。
选择平台和编程语言
最先,游戏开发的渠道有很多种:
我的主机平台:Windows、Linux、Mac OC;
移动平台:iOS、Android、Windows Phone、BlackBerryOS、Symbian;
专业主机平台:Xbox、PlayStation、Will等。
如果你想从事移动平台的游戏开发,Android流行JAVA语言,iOS流行Object-C语言,那么你必须学习这个平台的流行语言,但在我的主机上流行的游戏开发语言仍然包含很长一段时间 。
(网友推荐学C/C 89264363学习组,入群后送C//C 一整套学习材料,满满的干货!
(网友推荐学C/C 89264363学习组,入群后送C//C 整套学习材料,满满的干货!)
但不是不同平台的游戏开发,没有共同点,学习这个到另一个平台是没有用的。事实并非如此。在编程的世界里,你走得越远,你会发现许多物品的本质是相似的。例如,如果你对C有一个坚实的理解 基本语法(而不是死记硬背)以后转Java语言并不难,因为它的本质面向对象和各种编程语言都是相互关联的。
因此,如果你想走得很远,你就不能简单地学习。同样的知识越深入到底层,你就越能看到其他知识与之相似,所以你会比别人更容易。然而,最好在一开始就迎合你的专属领域和编程语言,这样你就可以在这个领域尽快占有一席之地。
无论你选择哪个平台,游戏引擎对于游戏开发这个庞大的项目来说都是不可或缺的,所以这里有两条路经供你选择:
只使用游戏引擎;
应用游戏引擎,加强游戏引擎原理的学习。
线路1:只使用游戏引擎
对于第一条路经来说,游戏引擎的应用并不难,所以适合想要快速开始游戏开发的人。大多数时候,我们不会开发自己的游戏引擎,所以这对我们的日常工作没有什么大问题。对于那些只使用游戏引擎的人来说,他们在入门阶段所能做的就是阅读该模块的教程(书籍、视频、在线博客、在线教程、官方帮助文档等),并熟练掌握教程中使用的编程语言。
所以你要做的第一件事就是掌握流行的游戏引擎。由于不同平台可以支持不同的编程语言,不同平台的流行游戏模块也不同(强烈推荐在方括号中,综合推荐开源、实用、能效等方面):
windows或游戏主机:【Unreal】、寒霜、CE3
苹果ios:【unity3D】、【cocos2d-ObjC】、【Unreal】、sparrow、sprite kit。
安卓:【unity3:d】、【cocos2d-x】、【Unreal】、AndEngine、libgdx。
安卓:【unity3:d】、【cocos2d-x】、【Unreal】、AndEngine、libgdx。
网页:【Egret】、【cocos2d-html5】、Fancy3D、unity3d。
在选择游戏引擎时,尽量使用流行的游戏模块,因为游戏引擎的流行代表着相对完美和实用的官方角色,更多的人回答问题。每个游戏引擎也不一样。Unity3d简单实用,对能源要求低,但效果不美观。因此,它通常用于移动平台,而不是电脑或游戏主机。Unreal免费获胜,效果极佳,但对系统要求很高,所以经常用于开发效果华丽的大型游戏。cocos2d-x是免费开源的,在2D行业有很深的基础,但缺点是不可视化开发。另外,如果你想了解游戏引擎的原理,主要考虑的是开源游戏引擎。
不同的游戏引擎使用不同的编程语言或开发语言,所以当你想学习游戏引擎时,你也应该注意游戏引擎使用的语言。在大多数情况下,Windows使用Cindows ,并结合lua或python开发语言。Objective-c或ios平台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 或者不需要编写代码。
编程语言: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。
编程语言: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#。
编程语言:Python、Objective-C、C 、 Lua、 JavaScript、 Swift、JavaScript、 C#。
优点:开源免费,跨平台,中文材料丰富,2D技术丰富完善。
优点:画面效果世界一流,可视化开发,跨平台。
缺陷:开发产品配置要求高,不免费开源。
Frostbite3(寒霜3)
可用平台:Microsoft Windows、PlayStation 3、PlayStation 4、Xbox 360、Xbox One。
编程语言:C 。
优点:画面效果优异,可视化开发,跨平台。
缺陷:开发产品配置要求高,不免费开源。
Egret(鹭鸶)
可用平台:HTML5、iOS、Android、Windows Phone。
编程语言:TypeScript、JavaScript。
优点:免费开源,配套工具多,全中文文档,可视化开发,跨平台。
缺陷:支持平台较少,大部分时间用于开发对能源和效率要求较低的游戏。
(网友推荐学C/C 89264363学习组,入群后送C//C 一整套学习材料,满满的干货!)
然而,游戏引擎的使用最终局限于表面。当游戏开发过程中出现一些问题或特殊要求时,你可能很难解决。而且游戏引擎技术日新月异,你学到的几乎都是别人留下的方式,而不是实质性的概念。如果其他游戏引擎在未来很流行,你必须重新学习如何使用其他游戏引擎。在很多大企业中,甚至都有自己的内部专用模块(如网易的灵魂模块、金山的剑网3模块、蜗牛的Flexi模块等。).因此,纯粹走这条路线可能不会让你走得很远,也可能会变得越来越无聊。
线路2:应用游戏引擎,全面了解游戏引擎的原理
对于第二条路,加强对游戏引擎原理的学习不能让你的工作在短期内有任何非凡的效果,但可以弥补只使用游戏引擎造成的问题,学习游戏引擎原理,更多的时间不一定是为了在未来建立一个游戏引擎,但更深入地了解他们的游戏引擎,更好地使用它。自然,千里之行始于足下,经常学习游戏引擎的底层原理,得到一定的积累,自己创造一个游戏引擎也可以。
对于那些学习游戏引擎原理的人来说,他们需要制定自己明确的长期目标:
首先,一开始可能对游戏引擎没有概念,建议先使用一两个游戏引擎(推存C) 目前,程序员学习虚幻4游戏引擎是免费开源的,非常值得学习。尽量不要学习那些不开源的游戏引擎,因为它们对学习原理没有太大的贡献)。
由于游戏开发是一门实时渲染的艺术,图形库的学习是不可或缺的。现在主流图形库是Windows平台专用DirectX Opengl11和通用平台。这两个图形库,至少要入门其中一个。
然后,你可以读计算机图形学的书。假如你觉得自己的理论技能不够,那么就要补上线代数、基本微积分、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》
对于 OpengGL 的书:
《OpenGL SuperBible》,著名的蓝宝书,以案例为主,有汉化版。但不建议看汉化版,翻译不好。但不建议看汉化版,翻译不好。
《OpenGL Programming Guide》,著名的红宝书,有汉化版。红宝书更像是指南,API全集,案例少,适合熟练人士查看应用。
《OpenGL 4.0 Shading Language Cookbook》,升级,基本上是API指南,有汉化版。但不建议看汉化版,翻译不好。
3) 计算机图形学
《The Nature of Code》,有汉化版,很简单
《Fundamentals of Computer Graphics》,在国外很多大学都采用了入门教材,介绍范围比较广,从基础数学到模型、渲染、动画和应用
《Physically Based Rendering》,通常是离线渲染
《Real-Time-Rendering》,必读经典!必看!
《Computer Graphics》,看看最新的第三版
计算机图形学原理与实践:C语言描述
4) 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》每年出版一个系列,包括最新的实时渲染技术。
《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) 物理
《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) 综合
《Game Programming Gems》,文章范围广,选择阅读
《Color and Light in Nature》《Digital Design of Nature》

《Form Code in Design, Art, and Architecture》
