原文作者:Geoff Howland
游戏行业可能是现今这个世界上能够找到的为数不多的迷人工作之一。在高科技的外表掩护下,她让你充分享受创作和玩耍游戏的乐趣。最近一些成功的传奇故事更是把她捧上了天。id Software 已经成了成千上万想要成为游戏开发者的家伙们每天必做的美梦。 万事开头难 “我从那里下手?” 这是每个家伙在开始时都要问的一句话。古人云:“三思而后行”,在你行动以前,先订出一个计划,这无疑才是明智之举。否则你只会成为一个迷失在沙漠里的亡魂,永远也找不到你渴求的绿洲。 如果没有一个明确、合理、可行的计划,你将不可能得到你所想要的结果,唯一的结果就是你始终无法完工。一个可笑的例证是作者本人,三年前我一步步走上这条绝路,其最重要的一个原因就是没人写这篇文章给我看。 话说回来,要一个新手搞出一个明确、合理、可行的计划,跟派一个婴儿去争夺奥运会金牌没什么两样。我对此的建议是先从小一点的计划做起。 选定目标 “我想在电脑游戏行业里找到一个工作。” 对这个目标的标准答案通常会归结为“做一个游戏 DEMO”。这是否确切意味着什么呢? 它代表着你将写一些程序,或是做一段动画,再不就是一堆音乐和音效。不过这可不是随便做做就行的,这些东西必须适合于视频游戏,最好它们就是一个具备商业加专业水准的视频游戏的一个部分。 对程序员们来说,这会导致出一个拥有 2D 或是 3D 外观的复杂引擎,一大堆必备的游戏辅助开发工具,比方说地图编辑器什么的。你做的工作结果越接近实际的游戏产品,就越有可能给潜在的雇主或是投资者留以更深刻的印象。比方说你做了一个平台式的跳跃游戏,有各种关卡、得分、生命、宝物等等,你实际上已经实实在在地证明了你确实理解一个视频游戏的基本工作过程,你还证明了你有着为潜在的雇主或是投资者去完成一个制作项目的积极主动性,最后还证明了你有坚持直到成功的毅力。 你的游戏产品越出色,它就越可能帮你找到一个工作。不信?不妨把你自己放到雇主或是投资者的位置来观察,成百上千的求职书摆在你的面前,都想要在你的公司里谋一个差事,如果不当慈善家,你会选择谁?能帮你做出最出色产品的那个家伙难道不是你最想雇来尽情剥削压榨的吗? 进一步发挥你的想象,也许你的游戏产品会如此出色,以至于比尔小朋友会牵着你的衣角,乞求你带上他去征服整个幼儿园世界中的财宝? “我只是想从制作电脑游戏中寻求乐趣。” 你一但抱定此种念头,那么除了你自己,没有人能阻止你一直干下去。你就象生活在真空中一样,可以不需要丝毫的外部援助。你可以加入一些开发共享软件的小组,也可以自己一个人干。在加入一个小组之前,你必须知道一个事实,那就是在这种小组里工作,尤其是在那种远距离小组里工作会遇到更多的困难。这个事实可以用公式来描述:新的问题 = 问题本身 + 人与人的问题。 “我需要找一个出版发行商,这样我就可以用游戏销售收入来保障自己可以把时间全部都投进去。” 听上去很不错,但不幸的是,从很久以前就开始的记录表明,其他人也都这么想。你的唯一出路在于,要让你手里的东西比其他任何人的都好,而且看上去准能赚大钱。由此可以推论,一个能够实际运行的演示程序在帮你吸引出版发行商这件事上的效果远比只是一段演示动画强。现在的出版发行商们的精明程度是呈指数增长的,用一段演示动画就可以轻松糊弄他们的黄金岁月早已记入了厚厚的历史书中。 那么接下来要考虑的是,一个游戏的 DEMO 要做到什么程度才够呢?根据前人的经验,至少要有一个关卡,或是一个可以实际玩耍的区域来进行演示,这这件事情上,你做得越多,你就离想获得的目标更近了一步。你还应该对游戏的艺术风格有一个完整的概念,如果在实际的 DEMO 中无法彻底展现这种风格,最好还是想办法用一个详细的描述文档来阐述它,以便让出版发行商能够弄懂你的意图。你的游戏 DEMO 没有音乐音效?这根本算不上是什么致命伤,在出版发行商的眼中,这些东西按照惯例,通常都会放到游戏制作的后期去完成,他们会组织一批专业好手去干这种事。告诉你这一点的目的是为了减少你对于此类事情的过分担心。不过你必须要明白,这不是让你的游戏变得更好的最佳方案,这样的东西通常都会草草收工,你能指望其他素不相识的家伙会为你的游戏而投入无比的热情?充其量他们只会为了自己那一份报酬而装出卖力的样子罢了。 在动手做你的 DEMO 的时候,还必须记住要表现出两点。如果你的游戏想以技术难度取胜,那么在 DEMO 中你就要尽量多地表现出各种你值得炫耀的技术,这将证明你能够完成这个游戏,而不是眼高手低。第二点需要记住的是,要在 DEMO 中让人能找到感觉,当然最好是你希望的那种。一个让人感到有趣的游戏肯定会比另一个让人觉得玩起来没什么意思的游戏要好很多,至少会对吸引出版发行商这件事多起些作用。 最后,你还必须考虑到一个更残酷的现实,那就是国内的出版发行商们的实际情况比上面说的还要糟,要同这批家伙打交道而不吃亏绝非易事。他们唯一感兴趣的是从你和你的游戏身上能赚多少钱,这样的结果就是说他们只可能在制作游戏时帮你的倒忙。在你的游戏还没完工之前去找他们投资,不失为一个葬送你的游戏和你的热情的好办法。这也许是国产游戏让人反复失望的一个微不足道的原因吧。 “我要比 id 更威猛!”(或是“我要超过 XXX!”) 见鬼的是,每个人都这么想。无数的小组和个人为实现这个目标而投入的精力绝对超出了你的想象。然而直到如今,这个游戏开发者的圣杯依然高高地漂浮在天际。你得明白,罗马不是一天就建成的,id 的职业生涯不是从 QUAKE&QUAKE II 开始的,也不是从 DOOM 开始的,甚至连 Wolfenstein 3D 都不是。他们一开始做的都是一些小东西,大量的 2D 小游戏。你可以象蠢笨的作者本人一样去把自己的第一个游戏项目拟订得无比宏伟,干了很久以后才发现实际需要的资源会花上你两千年去完成。我估计自己没那么长的寿命,也许你能行? 因此,对于一个新手来说,最好的开始还是抛开这些不切实际的念头,从一些简单的游戏或游戏 DEMO 做起,并试着发表它们。 接下来,让我们谈谈具体的 该如何干 如果你试图自行制作一只游戏但又不知从何下手,那么,我所能为你提出的最好建议就是去学习,去拼命地学习一大堆东西。在你学有所获以前,先把你关于你自己的游戏的所有胡思乱想通通扔开,然后一头扎进你所想涉足的领域。 一个讨厌的现实是游戏行业推荐你必须学习 C++,最好是 Microsoft Visual C++。比较幸运的是,如果你只想为自己做游戏,那随便你怎么干,你用 Visual Basic、Delphi 都不会有什么影响。一旦你想有人花钱请你写游戏,那么最好还是遵从这一点。 编程能力是创作视频游戏的基本要点,游戏行业以光速发展的后果导致,如果你不是这方面的行家里手,你最好打消自己做游戏的念头,以免今后痛苦不堪。什么?你一点都不懂编程还是不想放弃?好吧,那么让我们来看看,你还能做些什么。对了,正如上文所说,你可以先去学习 C++,通过学习,你应该可以逐渐看懂你感兴趣的游戏例程。不过千万不要指望短短几个月的学习就能够精通编程,尽管有些诈骗犯写的书说一周就够了。还是以作者本人为例,虽然已经在游戏编程上花了十几年功夫,虽然日渐瘦弱的身躯似乎在暗示着某种进化,但依然离终极目标还差很远,看起来还有无限长的路要走。 “我应该选择什么平台?” 当然应该是 Windows 95/98,原因是它至少已经占据了个人电脑 90% 以上的份额,今后多半还会变得更多。难道用户聚集之地会不是钞票聚集之地? “怎样学习编程?” 虽然国内有不少大学院校,但你就是找不到游戏专业。因此,你只要去买两本合适的书就行了。下面这些主题是你在选购书籍时应该考虑的。 * C++ * Windows API's * DirectX * Game Programming * Math 关于 C++ 的书,最好就是集中讲解标准 C++ 的,以免分散你的学习注意力。不管今后平台怎么变,这些基础的东西都会有用。同时,熟练掌握 C++ 会对你今后调试程序大有好处。 至于 Window's API (Application Programming Interface) 的书,千万不要去看那些大谈特谈 MFC (Microsoft Foundation Classes) 的,完全不谈 MFC 的书才是你应该去找的。原因很简单,我们做游戏根本就不用 MFC。它的类又大又慢,简直就是故意同我们的游戏需求作对。 DirectX 是 Windows 95 下的一套专用 API,用来处理对图形、声音、网络以及 3D 加速硬件的访问,详情请参见拙著《Microsoft DirectX 6.0 演武传奇》。Microsoft 为 DirectX 提供了一些源程序例子,按照 Microsoft 的惯例,它们是很难读懂弄明白的。涉及这个主题的书最好能够详细告诉你各个例子源程序的每一行代码实际上在干什么,你怎么在自己的制作中使用它们。如果发现一本书从头到尾都是在讲怎样为这本书的一个特定项目服务,比方说是为 DirectX 设计一个类,你千万不要买它!这种书只会把问题越搞越复杂,它们根本就没有解释清楚你真正应该了解的内容。 一本好的关于 Game programming 的书应该教会你各种基本要素,去指导你怎样写出一个电脑游戏,它将带你深入到那些制作视频游戏所涉及的最简单、最直接的元素。对初学者来说,看看那些涉及许多种不同类型的游戏的书可能会比只看详细谈论某一特定类型的游戏的书收获更大。 Math 绝对是制作视频游戏必不可少的东西,没有哪种数学不能应用在视频游戏上。对初学者来说,应该记住各种基本的代数方程式,熟悉三角运算和几何学等等,3D 图形学所涉及的数学知识比较复杂,在一开始先别去碰它。 你最好的打算是不要把 3D 游戏作为你的起点,它远远超出了你的承受能力。一步跨出半米,这样你肯定能做到,一步飞越大峡谷,跳远冠军都不行,请记住,你我只是普通人,不是漫画里的超人。如果你还不明白这一点,可以去思考一个事实:3D 游戏至少都会需要数百万元以上的预算。 “我应该单独干还是与人合伙?” 这其实全看你的个人喜好。你能同其他人相处得很融洽吗?你愿意同他人一起承担责任并共挑重担吗?你能组织管理好其他人吗?或者你希望有些人来领导你? 我个人认为,在你一开始时还是自己单干比较合适一些。起码你需要成为一个有足够能力的程序员,并亲自动手做一些小小的游戏。需要什么图片的话,你就自己画吧,即使你画得很糟也没有关系,这个过程只是为了让你能够增长宝贵的经验。等到今后你着手于一个具有更高标准和要求的项目时,这些经验会带给你极大的帮助。另外一个办法是使用一些现成的资源,比方说在 Internet 上去搜寻一些共享图片库什么的,这样做可以为你节省大量的时间,你要看到,这些东西再糟,可能也比你那程序员级的美工强。还有人从现成的游戏里窃取资源,你如果也想如法炮制,请慎重考虑此举会引起的种种不良后果。 当你决定请用一个专门的美工时,尽量不要到离你太远处去找,那样会让你们无法协同工作。不信你可以试一下,很快你就会发现你总是不能按时得到你所需要的东西。 假若你考虑自己成立一个制作小组,最重要的事情就是谨慎地选择你的小组成员。管人是一件费时费力的工作,尽管有不少人抢着干,但真正干好了的又有几人呢?一旦项目被分配下去后,随便一个家伙的耽搁都会延误你的项目进度。 “我应该创作什么内容呢?” 很自然地,你首先会想到,应该是做哪种类型的游戏呢?飞行模拟、驾驶赛车、枪战射击……? 理所当然,你所需考虑的自然是你实际能完成并能吸引自己的那种类型。只有这样,当你遇到困难时,才会有激情去克服它并最终完成你的游戏。很容易想象,如果让你去做你根本不感兴趣的那种游戏,你会有足够的动力去把它完成? 许多人第一想到的就是角色扮演游戏。然而,根据实际情况表明,把角色扮演游戏做为你的第一个游戏是非常不明智的行为。随便提一句,本人便拥有这种不明智的过去,带领四个人足足白忙了一年半。 最恰当的想法是你的第一个游戏是如此地简单,以至于你绝不可能失败。有很多人是从打砖块,堆方块,吃豆豆做起的。如果你也有了这种想法,你就应该坚持下去,直到这个游戏得以彻底实现。记住,在这个游戏没完工以前,不要急着去开始做其他所谓更大、更好的游戏。游戏设计在很大程度上就是在于你能否坚持到最后,在这个过程中,大约是每五十个游戏中只有一个是完工了的,你想成为另外那四十九个中的一员吗? “怎样实现我的游戏呢?” 先给你的游戏拟订一个良好的规划,详细描述从头到尾的每一屏的内容,以及玩家在其间怎样与电脑发生互动等等。需要如此详细描述的一个原因是,如果你自己都不知道你确切地想要什么,在这种情况下,你会犹豫不决,不时地改变主意,不断地加入一些让你的程序无法协调的东西……你又怎么保证你能把它完成呢?更不要说按时完成了! 这样看来,我们确实需要一个 设计文档 终于谈到这个话题了,实际上每个游戏的开发者都会有非常详尽的设计文档,关于这点,有人甚至说:“一个设计文档应该详尽到任何两个不同的开发小组按照它的指引都会写出一个同样的游戏。” 一旦你考虑到人们对于同一事物所做出的千奇百怪的解释,你就可以体会到设计文档的巨大意义。那么 什么是设计文档呢? 一个设计文档通常会分为许多条目,俗话说:“百闻不如一见”,看个例子你就明白了。 I. 一般性描述 II. 屏幕描述和用户界面规范 III. 艺术规范 IV. 音乐音效规范 V. 实例规范 (具体实现) VI. 人工智能规范 VII. 法律材料 你已经看到了,只是一个简单的提纲就这么长。一旦给这些标题加上详尽的内容,这个文档就会变得非常大。一个大中型项目至少会有一百页以上的文档。那么 设计文档要写多少才够呢? 不用担心,出于平衡性的考虑,你总有一天会停手的。写得过多实际上也不是好事情,你会在沮丧中耗尽热情,最后不得不痛苦地取消项目。 尽管写起文档来是如此地费力,但这种努力绝对是很值得的。你的思想会在文档书写过程中定型,你会逼着自己回答,“我该怎样来完成这个?”在做游戏时,掌握这一点是绝对必要的,它将指给你一个正确的方向。 无论如何,你至少应该花上几天去着手写些文档,用这点时间,你可以完成一个初步的框架。从这以后开始,随着游戏的进展,你会不断发现某些东西是你所无法实现的,这时就是你该回过头修改文档的时候了。遵循这个过程,你将不会偏离你的最终目标。 有人可能会问 我只想编一个小小的游戏,那我还是需要写设计文档吗? 这个问题的答案绝对是“要”。除了为你今后进入这个行业打下基础以外,其主要原因有两点:第一,在这种情况下,设计文档同样会指导你编程;第二,因为是个小游戏,那么设计文档也不可能太长。还有什么说的?坚持写吧! 接下来,该考虑一个大家都很关心的重要问题了: 在制作过程中遇到无法解决的困难时该怎么办 这种倒霉的事情是谁都会碰到的,即使一个很有经验的游戏开发者也会遇到他觉得无法逾越的障碍。幸运的是,这是一个网络时代,在 Internet 上你会找到你所急需的帮助。不过由于中文信息太少的缘故,这要附带一个条件,即你的英语能力值不得低于那些讲英语的同类。 据我所知,有很多站点有游戏开发的各类相关指南,用搜索引擎可以很容易地发现它们。如果不知道搜索所用的关键字,你可以试一试“games programming”,剩下来的工作就是一个个地去浏览搜索结果。本人曾用这种方法找到过很多好东西。 如果这样还不够的话,你可以去新闻组试一下。不过在你第一次发帖子之前,你应该先留心观察几天,看看这里的人们是怎么做的,免得乱贴东西上去后会惹人嘲笑及反感。 有着悠久历史的 rec.games.programmer 新闻组前不久被分成了 comp.games.development.* 一系列的新闻组,这绝对是你该常去的地方。如果你上不了这个新闻组,微软的 msnews.microsoft.com 也是一个值得流连之处。至于国内的那些新闻组、论坛什么的,去不去都无所谓,它们帮不了你多少忙。 使用新闻组时一定要注意选择适当的组发帖子,不要把关于 DirectX 的问题拿到设计组或是艺术组去问。发出帖子后,即使没有人马上回答,也要耐心地多等上两天再重新发帖子。 如此日复一日、年复一年,终于有一天 游戏做好了!现在又该干什么? 这是你该好好想想怎样发布你的大作的时候了!你做这个游戏的目的不会只是拿来自己一个人偷着玩的罢? 我们一起来看看有那些途径可以帮你完成这个事情。 肯定有人想过、试过自己去卖他们的游戏软件,但我实在是想不出这样的结果有多么美好。 还记得前面提到的出版发行商吗?你可以壮着胆子去找它们(嗜钱的动物),它们会帮你把游戏摆上商店的货架。不过要让这群家伙如此干的唯一理由就是,你的游戏产品质量要足够地好,至少要比已经摆在货架上的大部分游戏都好。 还有一个办法是通过常规的软件销售渠道去散发你的游戏软件。但你要慎重考虑该渠道在推广游戏软件方面的能力,以免明珠暗投。 尽管已经有了这些途径,还是有人喜欢用共享的方式发放自己的游戏软件。你经常可以看到那种装满共享软件的光盘,从 download.com 这样的地方,你也能下载到各种共享游戏软件。 进一步 怎样去联系出版发行商呢? 这点倒不用担心,他们通常都有自己的站点和电子邮件,因此同他们取得联系并不困难。你要注意的是,不要直接把你的游戏寄给他们,那样一旦出了什么事,你想起诉他们都没门。在你向他们展示产品之前,你最好先同他们签署一个非泄密协议(Non-Disclosure Agreement,即 NDA)。如果这份协议签署得当的话,它可以很好地保护你的权益。 NDA 这样的协议是一个标准程序,你千万不要忽略它。如果你发现他们的站点没有关于 NDA 方面的信息,你可以发个 email 给他们进行询问。有些出版发行商不接受第三方的产品,还有一些出版发行商只想要专用游戏机的产品。所以你最好先确定你手里这样的产品是否正是他们所需要的。 一个比较安全的做法是先告诉他们你的游戏的类型及运行平台,看看这是否他们所正在寻找的。不管他们回答“是”或“否”,这都将会是一个良好的开端。 怎样去保护你自己和你的游戏? 好好保护你的游戏产品是非常重要的。你已经为此付出了无数的汗水和心血,难道会忍心看着有人从中窃取原本属于你的权益? 尽管你所写下的一切内容都受版权法所保护,但你首先必须证明那些东西确实是你所写的。 为达此目的,你要做的第一件事就是在产品中放一条版权声明,宣称你对它版权所有,这样做的目的是告诉其他人你非常清楚地知道你对自己产品所享有的权益。 一个可靠的办法当然是到国家版权局登记,根据本人的体会,这虽然要花你不少时间和精力,但绝对是值得的。 象本人一样贫困的同志们还想出了一个经典的办法:把想要获得版权的东西及相关材料用密封袋装好,再通过邮局寄给自己。根据国外的案例表明,这种证据是合法的,法庭会支持这种证明。因此,你可以开动脑筋,把这个办法做得更严密一些。 使用注册商标是最可靠的办法,对你的权益保护得也最完整,但它稍微有点贵,你不一定付得起这笔钱。 还有一点忠告,如果你的游戏卖点是基于新的思路,你在签署 NDA 之前,千万不要详细告诉他人这个思路,你应该用一些现成的产品打打比方,作一个近似描述就行了,剩下的内容让他自己去想象吧! 唠叨了这么半天,我也有点累了,不知道你是否有所收获,我想,只要你做事足够努力,一步步地不断前进,你总有一天会做出你期望中的游戏的(此前省去限制条件若干条),祝你好运!? |