很多人会问怎么样学习开发游戏呢?比如想开发像《星际争霸》、《帝国时代》或者《大话西游》那样的游戏。其实开发游戏就是一件努力工作,努力工作,更努力工作的事情,没有其它什么秘密可言了。
当然,要想成为一个游戏开发人员,就得先成为一个很好的程序开发人员。当你成为一个很好的程序开发人员时,就可以考虑学习游戏开发了。要想成为一个非常好的游戏开发人员,最重要的一点,就是需要对数学非常好。当然,这里指的数学好,不是指加减法好,或者心算好,而是指线性代数,几何和几何代数,物理方面的数学等等。如果你对于数学是毫无兴趣,或者索然无味的话,就要重新想想自己是否可以改变自己的理想了。如果你的数学不好,还想成为游戏中的人员,呵呵,有一个办法,就是成为游戏的测试人员,游戏的艺术人员,或者是游戏设计人员,或者游戏的管理人员。
上面知道数学是开发游戏的第一个基本条件了,但还是有很多其它知识需要学习的。下面就来详细说明一下:
l 程序设计语言:在程序语言方面,不但要精通一两门语言,还需要了解其它的语言。一般开发游戏都是使用C++或者C,因此精通这门语言是必然的选择了。由于开发游戏需要不同的语言,比如脚本语言,这样就需要了解一下动态语言,比如Python等等。
l 数据结构:不管计算机发展到什么程度,只要是编写程序,就少不了数据结构。目前,基本上都不再会有自己去创造“车轮”年代了,应去理解和使用STL,或者其它更好的数据结构库了。精通地使用STL,就基本上解决了数据结构的问题了。
l 浮点数:在开发游戏里,使用最多的数据类型是什么呢?显然就是浮点数。比如3D游戏里的点坐标,就是使用三个浮点数来表示的。浮点数的计算,往往就会有不精确的现像,比如判断一个数是否等于0,就不能想当然地认为是否等于0了。
l 编程工具:编程工具,就像自己的柴刀,如果没有柴刀,就砍不到柴的。当然,磨刀不误砍柴功。因此,一定要对自己的编程工具非常熟悉,比如调试,工程配置,编辑,编译等等,还有经常出现的编译错误等。如果你还是使用VC6来开发现在的游戏话,建议你赶紧放弃吧。那都是8年前的开发工具了,目前都需要使用VS2005的开发工具了,强大的C++语言特性,强劲的编辑工具,让你写代码,就如流水般流畅。它还能支持编译x64位的代码,64位的PC越来越流行了。
l 计算机体系结构:不了解计算机的体系结构,就没有办法知道程序的运行环境。很多年前,还是8086的体系的结构,接着,就是80386的保护模式。到目前多核体系结构,对于编写程序,要求发挥多核CPU的性能,就需要了解怎么样合理地分配CPU资源了。或许,你还可以控制那个CPU进行渲染的操作,那个CPU进行网络通迅。如果到四核的CPU,又要需要多少个CPU进行数据库的查询工作呢?
l Windows编程:目前90%的游戏运行环境就是Windows,如果不了解Windows,就无从下手了。比如Windows的消息处理过程,事件响应,还有Windows的网络通迅过程,这些都是需要了解的。还有Windows提供的API,更加要熟练运用了。
l DirectX:对于每个游戏开发者,都是必备常识。
l 软件工程:现在的游戏开发,都不是一个人就可以开发完成的。一定是一个团队,相互之间的协作,就成为了需要解决的问题。比如每个人写的一部份的程序库,是怎么样连接在一起,都是软件工程的问题,怎么样安排进度,都是需要使用甘特图来说明,以及怎么样进行测试,也是测试人员配合进行的。
现在的游戏都进行入了3D的时代,那么你从哪里开始呢,最快的方法,就是下载DX SDK,然后打开一个空的工程,看看DX给你创建了什么文件,以及这些源程序作什么用的。接着试着创建一个三角形显示出来看看,试着改变它的颜色,试着让它转动起来,最后创建两个三角形,计算一下这两个三角形会不会相交呢?会不会碰撞呢?
蔡军生 2006-11-14写于深圳