转载自http://job.17173.com/content/2008-10-30/20081030174833105.shtml
作为目前国内游戏业的从业人员,我就我的工作经历把我知道的游戏开发知识分享给大家。所知有限,大家不要见笑哈~今天先说一下一个游戏制作团队需要使用的开发工具。毕竟“工欲善其事,必先利其器”,没有顺手的开发工具,表达和实现难免总是受限。
业界标准的游戏制作团队包括设计师(策划)、艺术家(美术)、架构师(程序)三部分,同时也要加上QC(测试)小组以保证迭代开发中的快速验证、除bug与模块稳健度。那么这次就主要介绍各个工作岗位的开发人员需要使用和建议使用的各种开发工具。
先从程序说起。程序员需要使用的工具,依据游戏平台的不同、开发端的不同有着不同的区分。但是一般都离不开C++,因此必备的开发工具就是Visual
Studio。以前PC平台上多用C开发,现在基本已经全部采用C++,但考虑到运行效率,有些网络游戏的服务器端开发仍然使用C。但是完全依靠人工写代码不但低效、劳累而且容易出错。因此出现了许多中间件(MiddleWare)开发套件,这些是封装好的图形、物理、粒子、AI、网络、声音、UI模块,内部嵌入了各种游戏中使用的函数。程序员只需要写好接口、加入针对性的运算函数便可以把这些部分的工作量减少很多了。而比较大型的中间件可能包含了这其中的许多模块,这便是游戏引擎(Game
Engine)。游戏引擎有很多种,有综合性的,比如unreal tournament、quake
3D、LithTech、jupiter等等。也有专注性的,最主要专注于两个方面——图形和物理。比如专注图形的ogre和专注物理的havok、ode,现在由于网络游戏开发比较热,引擎的网络部分也得到重视,一般采用C/S方式,也有P2P的方式,有些引擎会提供强大的分布式运算和ado技术。但也有一些引擎没有网络部分,一是由于调用数据的不确定,二是网络端会有专门的优化,许多程序员会写专门的算法处理这一部分。图形用户界面(GUI)有的为团队自己写,因为各种游戏界面需求不太一样。有的用引擎或第三方提供的GUI包写的。有很多……比较著名的是GTK+、wxWidgets、Qt
美术方面,二维的标准开发工具是painter和photoshop,三维的标准开发工具是3D
max和maya。二维不用多说,基本多少年都没什么变化。输出的标准格式早期是pcx、bmp,现在最常用的是tga、dds,tga是标准工业格式,已被业内大多数企业所接受很久。dds是为对应directX节省缓存的一种压缩格式,本身也有很多种格式,效果没有无损压缩图像那么好,但对于提高显示效率和节省游戏容量效果很好(图形是游戏中最占容量的部分)。png也是很好用的一种格式,正被逐渐接受。jpeg很少被使用,一是因为图像有损压缩,二是不支持alpha通道,无法实现一些特定效果。三维最早是max和lightwave,但maya的崛起使得其也逐渐成为游戏开发的标准工具。现在不少制作团队都开始转向maya,lightwave在欧美开发团队使用的比较少,日本的开发团队则非常喜欢lightwave。除此之外,由于CG产业的迅猛发展以及开发要求的提高,许多新型的优秀三维工具也进入游戏开发领域。比如softimage、motion
builder等,它们在动画制作方面有着强大的功能。三维输出的主要格式是max(流行)和obj。游戏中各种绚丽的效果是用粒子实现的,这也是美术工作的一部分。一般没有什么标准的工具,只要美术制作出粒子最基础的纹理材质图片(很小的二维图形,常用png格式),再导入到程序中计算路径、发射角、密度、生命周期、着色、受力等。也出现了一些独立的专门制作粒子特效的工具,二维游戏里面最常用的是particle
illusion(它本来是用于影视粒子特效制作的)。三维的有很多,比如particle accelerator、particle
editor等等。
策划方面的标准和使用的工具都很杂。由于策划是内容的开发者,所以首先要解决文字和数据的问题。MS
word和excel是不可少的工具。虽然策划不是美术和程序,但是图像表达和逻辑表达也是策划应该尽量作到的。二维图像表达你至少要会使用word自带的绘图功能,但仍然建议掌握一些基础的平面绘图工具,比如photoshop、fireworks等等,如果你能用动画表示更好,比如flash、gif等;三维建议了解max、maya,我推荐使用轻型快速的三维工具进行表达,比如silo、sketchup等。它们都可以输出为obj格式,方便导入到max中(多用于查看,因为模型会有一定程度的破损,部分需要重新制作),也可以使用截图软件截屏然后制作二维示意图。策划的工作还涉及脚本(script)创作,比如游戏的部分AI、任务逻辑、物品(诞生、消失)控制、运算(hp减血、攻击数值)数据、物理碰撞锁死编辑、触发器等。这些方面的主要文件格式为ini、xml,还有直接封包为bin、pak以及程序自己开发的各种存储格式。不少游戏使用python、lua等通用的脚本语言进行解释,它们可以很方便的嵌入到宿主程序中,加快了调试效率。多数游戏引擎也会提供强大的脚本编译器。
其实策划拥有强大的编辑器就可以把上面这些全省了……不过需要程序先把框架搭好,美术先把资源做好,策划才可以拼接设计,这已经耗费了很多时间了。所以能保证制作之前完成规划性的设计是很重要的。策划还需要要考虑可用性、复用性、逻辑锁死以及提出的资源需求(包括质量、数量)对效率的影响。比如哪些美术资源是可以重复使用的,图像质量要求要达到什么程度(过高的要求会大大降低程序渲染效率,也会增加整个团队的工作量),数值变化的临界点以及控制机制。当然这些就是具体的工作内容了,这里不再详述。
音乐音效部分有专门的创作团队制作,多数游戏制作商为外包。但也有许多不太注重品质的制作商直接就让策划做了(无敌的音效库……)。标准的创作方法是,首先需要在录音室创作音源,用音频采集卡录制cd品质,在专业工具中进行编辑,包括采样、滤波、除噪、编辑通道、混音、剪辑和合成,最后输出为wav或ogg格式。ogg格式压缩率更高,品质也很好(强于mp3),比起wav格式更省体积;也可以直接创作数字音源,制作midi格式的音乐音效,这就要有更多的专业知识了。这方面的工具有很多,Cubase是标准的开发工具,也可以使用sound
forge、sound editor编辑。