3d数学基础图形与游戏开发第⼆版_游戏开发完整学习路线,
都在这⾥了
在软件开发中,游戏开发这个⽅向看起来⽬标很明确,但其实是个领域很⼴的⽅向,⼊门的时候如果得不到指点⼀⼆,很容易误⼊歧途,相反,如果⾛这条路之前能得到前⼈的⼀些指路,是可以事半功倍的。
平台与编程语⾔选择
⾸先,游戏开发的平台就有很多类型:
个⼈主机平台:Windows、Linux、Mac OC;
移动平台:iOS、Android、Windows Phone、BlackBerryOS、Symbian;
专业主机平台:Xbox、PlayStation、Will等。
如果你想从事移动平台的游戏开发,Android主流JAVA语⾔,iOS主流Object-C语⾔,那么你就要去学习这个平台主流的语⾔,⽽在个⼈主机上主流的游戏开发语⾔现在包括以后很长时间也还是C++。
sourceforge镜像站但是并不是所不同平台的游戏开发,就毫⽆共通之处,学了这个到了另⼀个平台就⽆⽤了。不是这样的,编程的世界⾥你⾛得越远你会发现很多东西的本质都是相似的,例如你如果扎实地理解了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脚本语⾔。
下⾯是商业上流⾏的游戏引擎详细⽐较:
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#、javascript、Boo。
优点:⽅便易⽤,中⽂资料丰富,跨平台,商店资源丰富,可视化开发。
缺点:画⾯效果⼀般,不是免费开源,引擎效率⽐较低。
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⽅⾯技术不成熟。
4) CryEngine3
适⽤平台:Microsoft Windows、OS X、Linux、PlayStation 3、PlayStation 4、Wii U、Xbox 360、Xbox One、iOS、Android。
编程语⾔:C++、Lua。
优点:画⾯效果世界⼀流,可视化开发,跨平台。
缺点:开发机器配置要求较⾼,不是免费开源。
5) Frostbite3(寒霜3)
适⽤平台:Microsoft Windows、PlayStation 3、PlayStation 4、Xbox 360、Xbox One。
编程语⾔:C++。
优点:画⾯效果出⾊,可视化开发,跨平台。
缺点:开发机器配置要求较⾼,不是免费开源。
python入门教程视屏6) Egret(⽩鹭)
适⽤平台:HTML5、iOS、Android、Windows Phone。
编程语⾔:TypeScript、JavaScript。
优点:免费开源,配套⼯具多,全中⽂⽂档,可视化开发,跨平台。
缺点:⽀持平台较少,⼤多数时候⽤于开发对性能和效率要求不⾼的⼩游戏。
但是使⽤游戏引擎毕竟是停留在表⾯看不到本质,当游戏开发的时候出现了某些问题或者特殊需求,你往往很难处理。⽽且游戏引擎技术⽇新⽉异,你所学的⼏乎都是别⼈留下来的⽅法,⽽不是其本质思想。如果将来别的游戏引擎兴起,你⼜要重新学习另外的游戏引擎怎么使⽤。在很多⼤公司⾥⾯,甚⾄都有⾃⼰公司内部专⽤的引擎(如⽹易公司的风魂引擎、⾦⼭公司的剑⽹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) 图形库
items是什么意思英语针对 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》系列,每年出版⼀本,包含最新的实时渲染技术。论⽂性的⽐较多,偏难。jquery分页插件代码
《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》
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论