-
Notifications
You must be signed in to change notification settings - Fork 31
Description
想必每个程序员都对游戏编程有着或多或少的向往吧,虽然现在用canvas, js就能写出一些小游戏,但真正的游戏开发比想象中的复杂多了,下面就与憧憬于游戏编程的同学分享一下游戏开发的基础要素与学习方法,也请技术大牛们对文章的错误之处加以指正,积极分享你们的经验。
////////////////////////////////////////////////////////////////////////////////
1) 了解平台
PC单机平台游戏(Windows)
PC网络平台游戏(Windows,Linux)
移动平台游戏(J2ME,Symbian,Plam…)
掌上游戏机平台游戏(GB,GBA,NDS,3DS,PSP,PSV…)
家用游戏机平台游戏(PS1/2/3/4,Xbox,Wii…)
网页游戏(HTML,Flash)
智能移动设备平台游戏(iOS,Android)
2) 基础语言
大型游戏:基础 --- C++\C
进阶 --- 汇编语言,CPU硬件指令,高级SHADER语言
小型游戏:C#\JAVA
Android手游:JAVA
iPhone手游:Objective-c
3) 基础知识
重点掌握数学,c和c++,汇编,数据结构,线性代数,空间解析几何
基本掌握计算机体系结构,离散数学,编译原理,计算机网络,操作系统,软件工程,数据库,人工智能
4) 游戏引擎
游戏引擎是指一些已编写好的可编辑电脑游戏系统或者一些交互式实时图像应用程序的核心组件。这些系统为游戏设计者提供各种编写游戏所需的各种工具,其目的在于让游戏设计者能容易和快速地做出游戏程式而不用由零开始。大部分都支持多种操作平台,如Linux、Mac OS X、微软Windows。
游戏引擎包含以下系统:渲染引擎(即“渲染器”,含二维图像引擎和三维图像引擎)、物理引擎、碰撞检测系统、音效、脚本引擎、电脑动画、人工智能、网络引擎以及场景管理。
引擎相当于游戏的框架,框架打好后,关卡设计师、建模师、动画师只要往里填充内容就可以了。因此,在3D游戏的开发过程中,引擎的制作往往会占用非常多的时间。出于节约成本、缩短周期和降低风险这三方面的考虑,越来越多的开发者倾向于使用第三方的现成引擎制作自己的游戏。
列一个公式就是:
游戏=引擎(程序代码)+资源(图象,声音,动画等)
时下流行的优秀游戏引擎:
Unity3D:全面整合的3D专业游戏引擎,支持C#,JS。代表作品《神庙逃亡》,《纪念碑谷》,《仙剑6》
Cocos2d-x:开源的移动2D跨平台游戏引擎,支持C++,lua(嵌入式脚本语言)。代表作品《保卫萝卜》,《梦幻西游》。
是中国的在github上有名的大型开源项目:https://github.com/cocos2d/cocos2d-x
Orge:开源的图形解决方案,可与其他子系统库如物理库等整合。国内大型3D网游多用。
Unreal:AAA级顶尖游戏制作引擎,支持C++,代表作品《剑灵》,《无尽之剑》
Gamebryo:专业级游戏制作引擎,支持C++,lua脚本,其渲染引擎部分是私有的,但允许使用者添加自己的图形绘制代码,代表作品《古剑奇谭》,《上古卷轴5》
BigWorld:在线网络游戏引擎,支持C++,python脚本,代表作品《魔兽世界》,《天下2》
5)计算机图形接口
DirectX
OpenGL
他们是一个函数库,函数库为我们做了一些最基本的和底层打交道的处理,其他还提供了一些常用的3D函数库,算是一个2次开发。最大功劳在于充分调度和发挥了显卡性能,把显卡的特性用接口的形式提供出来。
6)学习编写2D游戏与3D游戏
3D游戏处理可以分成2个部分,一个是3D空间数据处理,经过纹理映射把象素写到屏幕缓冲,接下来其他特效处理都是归结到2D问题,所以学习3D游戏的基础是真正了解游戏图象处理过程,也就是学习2D原理。
而2D游戏主要学习像素图像处理,颜色模式与2D动画系统。书本推荐《WINDOWS游戏编程大师技巧》。
3D游戏开发需要无比的耐力与勇气,你需要学习基础的3D数学,3D流水线(3D游戏的脊柱),D3D流水线。书本推荐《3D游戏编程大师技巧》。
7)主要发展方向
a.游戏逻辑开发程序员:
主要集中于游戏逻辑的编写。
游戏逻辑开发是集中力量只开发游戏中剧情部分,你只需要做的是什么时候显示什么,什么时候放出什么声音,什么时候通过网络传输什么数据,什么时候这个物体或者人物做什么动作。
初学时可运用4)的一个引擎(鄙人现在刚开始接触cocos2d-x),选择其支持的一门语言,学习理解游戏中的场景管理,资源管理,状态机,AI和网络这些模块的编写。
b.游戏引擎开发程序员:
主要是自主设计编写游戏引擎。
基本包括:(1)图形引擎(2)声音引擎(3)网络引擎(4)脚本引擎(5)GUI(图形用户接口)(6)人工智能引擎(7)物理引擎
其中,(6)(7)在开发小型游戏中并不必要,而图形引擎是最难的,它基本要处理游戏引擎中70-80%的工作量,主要任务是负责图形高效显示,包括速度和精度。
初学时可先选用4)中的一个引擎,仔细剖析它的内部工作原理,学习5)的一个图形接口以及参照6)学习2D,3D游戏的编写。
以上许多信息都是鄙人从度娘上搜索整合出来的,在这个过程中也是受益良多。可以看出游戏开发所需的知识面及其广袤,原理繁杂且专深,入门容易,精通却要大量时间与精力的投入。如果真正要向游戏开发发展的话势必要下一番苦工(所以部门里没有游戏方向?),不过,做游戏开发无论在物质上还是精神上都有着非常可观的收益,当在游戏上做出一定成果时,对程序员来说一定有莫大的buff加成(勾搭妹子,哄女票什么的 ⁄(⁄ ⁄•⁄ω⁄•⁄ ⁄)⁄…)。
//////////////////////////////////////////////////////////////////////////////////////////////////
下面是本文部分资料的出处与推荐阅读的文章:
这是篇很好的关于如何做好游戏编程的文章:
http://blog.csdn.net/rabbit729/article/details/7014170
这篇主要讲游戏引擎:
https://www.zhihu.com/question/32063728
游戏开发论坛,有各种各样游戏开发相关的干货:
http://www.gameres.com/
by 汤雪儿