如何成为一名游戏程序员--Steven Messinger
序
是坐在狭小的办公空间里,穿着不合身的拘谨的制服,致力于一款已经问世25年了的财务软件,还有一个管着你的上司催你交那些技术问题摘要报……还是喝着小酒,随意地穿着T恤短裤,开发下一款xbox360大作呢?
我的故事
有很多人想进入电视游戏行业,我也是其中之一。在过去的四年里,我尝试,失败,并最终达成了目标。
现在,我将与你分享那些在我进入游戏行业的旅途中帮助过我和妨碍过我的事情。
我刚从密西根州立大学计算机科学系毕业,并辅修了数字媒体与艺术。当我还在学校的时候,我在Image Space Inc. (当时在做《Rfactor》) 和 Electronic Arts (当时在做《BFME2》)实习了一段时间. 现在我是Rockstar Games的全职软件工程师。
游戏行业适合你吗?
你需要问自己的第一件事情是你是否会喜欢游戏开发者的生活方式。很多软件工程师已经习惯于稳定的工作时间,而任何一个想要照顾好家庭的人都不会想过那种有 时需要每周工作6天或晚上9点后才能回家的生活(在这个行业里,加班早已是家常便饭)。游戏工作室在加班费方面比较厚道,而且也不会让员工一周干7天,但 这里的工作时间依然和稳定的朝9晚5完全不同。
我个人很喜欢这种灵活的工作时间,它让我可以在早上10点多开始工作,在中午花一个小时去健身或者海边散步,只要我能按时完成我的工作并保证每周5天八小时的工作时间。我们公司在工作时间上相对比较灵活。
办公环境
这里的工作环境也非常舒适。可以着装随意,可以在会议上喝啤酒,可以玩游戏,也可以和工作室boss的60级亡灵法师聊天。(译者注:本文发表于06年11月2日,当时wow满级就是60级)
游戏程序员工作的另外一个重要方面是多样性的工作内容。其编程范围涵盖了人工智能,图形,网络,工具,游戏可玩性等各个方面。作为一个游戏可玩性程序员, 我真不知该怎么告诉你,相比于一般的软件公司,我的工作有多让人兴奋。那是控制Saramon杀死所有哈比人(hobbits)和反复点击下拉菜单已确认 程序不会崩溃之间的差距。
那么你应该做什么来实现你进入游戏行业的梦想呢?
教育
选一所学校。作为一个程序员,最好的选择是在一个传统的的4年制大学里拿一个计算机科学的学位。虽然现在有很多学校冒出来号称将教你“ 如何制作游戏”,但你真的需要一个比较好的稳固的基础和一套正规的计算机科学的课程。另外,要知道现在大部分游戏公司都直接从大学里招募新人,全国各地都 是如此。最后,因为进入游戏行业的竞争很激烈,所以学习用途广泛的一般性理论基础教育比那些只学在游戏行业中才用得到的知识的人更容易受到雇佣。同时,你 要注意所选择的大学里是否有能为你进入游戏行业提供帮助的课程。比如说,我读的大学里有一个提供游戏理论和游戏设计课程的系。虽然我是软件工程系的,我还
是可以在保证不影响专业课的前提下去旁听那些对我有帮助的课程。
选修课。很多我任职过的工作室都一直在寻找全面的程序员。对于学生来说,这意味着你真的必须花精力在你所有的计算机课程上。即使你对人工智能或计算机图形学程完全没有兴趣,了解它们的基本原理对你成为一个成功的游戏程序员还是非常重要的。
你在寻找课程方面也应该保持积极。通常,可能会有一门对你很有帮助的课程却不是开在你们专业的。试着求求你的指导教授或院长答应你去听那门课。找一个允许 你在独立研究里拿几个学分的教授,然后选一个和游戏相关而你除此之外在学校里无法接触到的研究方向。比如果,我找到了我们学校远程通信专业的Brian Winn教授,它允许我跟着他做一些3D图形学和游戏引擎编程方面的独立研究。这些独立研究经历强化了我求职时的演示DEMO,扩大了我的技能覆盖面,并 使我的简历与众不同。
脱颖而出
简历。看看你现在的简历。根据你在学校所学的专业,你的简历可能和那些每天和你坐在一个教室的其他成百上千的学生完全一样。而全国又有成千上万的来自其他学校计算机科学系的学生的简历和你们的一样。在我的几次实习中,同事告诉我他们收到数千封求职申请,而每份只花几秒钟扫一眼。
实习。早点开始找实习。即使不是游戏公司,至少它是一个开始。仔细的找一个和游戏沾点边的公司,或者准备好去其他地区做一次暑假实习。
做点什么!可以是一个游戏,一个小mod,甚至一个用游戏引擎制作的完整的游戏,把它做到可以玩,然后坚持把它做完。
做你自己的研究。和教授一起做那些其他人不会有的独立研究。
把材料放在网上。只在简历里放一条简单的URL。可能它们一眼看上去不是那么引人注目,但当公司真的想看看的你的演示代码或者玩你做的游戏,或者只是看看你的成果的截图时,一个简洁的URL将使事情变得简单而快捷。
我凭借顽强的毅力得到了第一份游戏公司的实习机会(也可能是我说我不要钱这点吸引了他们)。当时我连做梦都想进入游戏行业,终于在学校的帮助下,我找到当 地的一家公司并成功的实现了梦想。我得到第二份实习机会是因为我用一个免费的C++ 3D游戏引擎自己做了一个FPS游戏出来——而同时我的简历上已经有了一个在游戏公司实习的经验。
实习
让我们深入的讨论一下实习吧。你们中的很多人可能都被游戏行业的一个奇怪的规定为难过:大部分工作岗位要求应聘者参与过几款已上市游戏的开发工作。这一点 对正在寻找实习机会的人恐怕很难做到。这对我来说也是最麻烦的部分。但是当你的简历上已经有了两条在游戏公司的实习经验,人们就很容易对你的简历产生兴 趣。
一些值得经常光顾的地方有 http://www.gamasutra.com/, http://www.creativeheads.net/,
和http://jobs.ea.com/. EA有着很好的实习安排,这可能是所有游戏公司里最大的实习基地了。
我曾经尝试过很多策略。首先我会给每个游戏工作室的人力资源部门发我的简历询问是否需要实习,不管他们是否宣称正在招募实习生。我还列了一个游戏开发公司 的清单然后逐一送上我的简历而不管他们是不是正在招人。我这两招我都没有用太多次,但还是给我留下了深刻印象:当我大三再次发简历给些公司时,我得到了更 好的的回复,而且其中的一些公司甚至还保有我去年寄去的简历的备份。所以即使没有收到回复,也不用担心他们是否随手扔掉了你的简历。
重要的是尽量早点开始找实习,大二也许不错。你需要的只是亲身去做,然后期待在大三或大三暑假时能有所收获。
如果你可以使你的简历脱颖而出然后找到一份好的实习,那下一步就是面试了。
面试
预面试。我经历过好几次测试,电话面试和网上面试。我真希望我能早点看到John Mongan 和 Noah Suojanen写的《Programming Interviews Exposed》。我在面试生涯的晚期才得到的这本书,它给了我很大的帮助。我强烈建议你入手这本书,因为它涵盖了全部的面试流程细节和大部分你可能被问 及的技术问题。下面我讲一些我亲身经历过的东西。
几乎我面试过的每家公司的流程都不一样。举几个例子:
- 一开始是人力资源部门不涉及技术问题的电话面试,然后是限时编程测试,接下来是全天的在线编程考试。
- 一开始是不现实编程测试,然后是半天的在线面试。
- 一开始是人力资源部门不涉及技术问题的电话面试,然后是涉及技术问题的电话面试,接下来是另一个涉及技术问题的电话面试。
- 编一个简单的比如国际象棋的程序,或者一些算法。
这些面试真的很耗费精力,尤其当好几家公司同时要求你在规定时间内完成编程测试的时候。它们中有些极其冗长而且充满细节需要花好多天才能完成,而且包括了所有的方面:AI,数学,物理学和编程。有些测试要求你不许寻求外界帮助,而另一些允许你使用书本和网络。
在大学里最好找机会早点做这些测试,这样你就可以对游戏公司需要什么技术和知识有一个大概的了解。尽管我做的几乎所有的编程题目都不一样,他们之中还是明显存在一些联系的。
在线面试。还是要说,《Programming Interviews Exposed》对如何面对在线面试也提出了非常有价值的建议。我给出的关于电话面试和在线面试的具体意见是“充满热情”和“提前了解一下你应聘的公司 ”。在在线面试之前,练习一下他们打算考你的编程语言。了解你所应聘的岗位。举例来说,如果是一家游戏主机开发公司而他们主要使用C语言,那你就要准备回 答链表,内存管理之类底层的问题。如果你应聘的是游戏开发工具程序员,那你就要准备回答STL,MFC和C++方面的问题。务必要把事情问清楚。通常人力 资源部的人什么也不知道,他们无法给你有价值的信息。举例来说,我曾经参加过EA奥兰多的在线面试,当我询问更多关于面试的技术信息时,他们没告诉我全部
测试都要求使用C语言。因为我当时只用过C++而对C语言知之甚少,那次测试进行的不怎么顺利。
如何拼命的坚持下去
即使你没有得到这份工作,也可以把它看作是使自己更接近目标的一次尝试。如果一家公司在编程测试后拒绝了你,不要害怕,去要一份具体的反馈,这样你就能了解自己的缺点并加以改正。通常在你刚进入计算机科学系的时候,你应该致力于把程序写出来,而不是把程序写的优雅。
我要推荐的另一本书是Scott Meyers的《Effective C++》,它对于提高你的代码质量很有帮助。不遵循这本书中所提到的如“尽可能的使用常量”、“传常量引用”、“声明类成员时设访问属性为 private”之类的基本规则的话,将足以确定你的代码是不合格的。真正花大量时间在你将提交的每一行代码上,并设法确保你的代码不仅是能运行的,而且 是高质量并高效的使用内存的。
游戏产业正在稳步成长。游戏公司也在雇佣更多的应届生。EA的整个人力资源部们都专注于招募应届毕业生。大学生进入游戏行业正变得越来越容易。我能给你的 最重要的忠告就是不断尝试。我在寻找第一份工作时曾被拒绝过好几次。这对你来说可能并不容易,但如果你真的对以开发游戏为生充满激情,那你的梦想就一定可 以实现。
Steven Messinger, 毕业于密西根州立大学计算机科学系,辅修数字媒体与艺术。他在EA的电脑游戏《指环王:中土大战 II》中担任游戏可玩性工程师。在Image Space Inc的电脑竞速游戏《Rfactor》中担任游戏开发工具程序员,现在在Rockstar Games 开发一款尚未公布的Xbox360游戏