如何进入游戏行业成为一个程序员

“我想在电脑游戏行业里找到一个工作。”

对这个目标的标准答案通常会归结为“做一个游戏 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 游戏至少都会需要数百万元以上的预算。