13

上海麻辣马资深程序员叶劲峰:我的游戏人生

作者: wuzhimin 分类:坊间人语   阅读:44,757 次 添加评论

我是在香港土生土长、现于上海工作的游戏程序员。有曰人生如戏,当代若说人生如游戏或更有共鸣。然而,我们是这游戏的玩家而不是设计师,世事往往并非各遂其愿,却又带来无尽惊喜。游戏中与其以赚取货币提升等级为目标,不如享受过程,尽兴而归。适逢其会,有缘和大家分享我的成长点滴。

童年玩意

我生于1977年英国殖民时代的香港。家境并不富裕,童年羡慕其他小朋友拥有许多玩具,曾经想过将来要做玩具设计师,现在做游戏编程,也许也不差太远。当年缺乏玩具,就找到些不花钱的玩意儿,例如折纸。从小父母每周带我去借阅图书,包括折纸书籍。回想起来,我怀疑幼年的我是从折纸中学到如何阅读说明去自我学习的,并且尝试做事情以完美为目标。那时候我的技术还不错,例如可以用一张正方形纸,不用粘贴折九只头尾相连的鹤。当然,单单按照说明来执行并不太有趣,后来便学会设计纸模型。首先是做些长方体、锥体之类,记得有一次按书用纸做足球形的截角20面体,被同学取笑说足球应该是圆的。设计了一些规则的几何体之后,就可以设计一些不规则形状的,例如一辆跑车。由于要在纸上画设计图,也学会了一些作图法,后来也学习了建筑设计的透视技法。大约从小学三年级开始,父母让我参加了校内开办的电脑兴趣班。课程之初,是通过教育软件去学一些电脑知识(用BBC Micro),之后再慢慢加入一点BASIC编程内容。不过我最喜欢的,都是课堂结束前的电脑游戏时间。

小学四年级,我当上了学校图书馆的管理员。有一天馆里送来一台Apple IIe,听说是一家公司换IBM PC而留给学校的。那台没软盘没录音机的Apple IIe,只能用来编写BASIC程序,不能玩游戏。当时心里传来一道声音——

“想玩游戏?自己写啊!”

我借来一堆Apple IIe书籍,阅读、上机编程,把午休和放学后的时间都用上了。课上和晚上,还会把程序写在纸上,在脑海中运行程序。那时候写的程序,主要围绕游戏和图形。记得曾经在Apple上重写BBC Micro上玩的“撞砖”游戏,从中学到了一点游戏模拟技巧,后来还学习了一点6502汇编。在学习的过程中,我意识到编程的世界是虚拟的、完美的,不像机械或电子等物理系统有许多限制,几乎凡是想得到的事情都能用编程实现,并且能完全自动化地执行。这让我感到,编程本身,比使用软件的乐趣要大得多。

初试啼声

从小学升上中学,1990年的暑假我终于获得人生第一台电脑——一台二手的286。那个暑假我躲在家中,使用GW-BASIC继续编程。286可以存档,意味着可以写更大型的程序。规模越大,更让我认识到BASIC语言在编程上的局限。尽管如此,当时仍然很快乐地编写了不同类型的程序:图形、音乐、游戏。通过阅读书籍,我还学会了画不同的二维图形,包括曲线、分形(fractal)、简单的三维渲染等。

在升中二的那年暑假,我就开始转为学习C语言。DOS对许多设备都没有直接支持,不同的设备甚至连标准的接口都没有。所以那时编程,还必须学一些x86汇编知识,以及使用不同设备的底层技术。

中二时得知有一个“微电脑教育(MIE)”比赛,这是我个人电脑比赛生涯的开始。我用Turbo C写了一个名为《3D Solid Maker and Viewer(三维实体制作及检示工具)》的软件,其实只是个非常原始的三维建模软件,可以设置简单的摄像机动画。当时花了许多时间去编写GUI系统,就是要由绘画控件、处理滑鼠键盘事件等做起。基于知识经验所限,系统架构很糟糕,并有大量硬编码。初试啼声,这个作品最后获得全场总亚军,大大增强了我对编程的信心。

进入业界

1992年前后,我在BBS上结识了一群有意开发游戏的朋友,成立了香港首家游戏工作室M&P System。最初我并没有直接参与开发,只是向朋友们学习更多游戏开发的知识,写过一些引擎和工具的原型,有时帮忙做点小事情。例如在公司首个作品《疯狂双响炮》(1993年)中,我设计了一个游戏关卡和做游戏测试。之后公司开发RPG《勇者传奇》(1994年)时,我在开发另一个RPG,做了地图编辑器和引擎,可操控主角行走,也有初步的战斗模式。

后来公司改组为阿博克。我在新项目里首次担负重任,那时我在读中四理科班。这个新项目《王子传奇》是我发出的提案,一个奇幻背景的策略角色扮演游戏(SRPG),采用等角(isometric)的无缝(seamless)游戏世界。我主要负责游戏策划、编剧、游戏性编程(gameplay programming)。项目的野心很大,或是太大。整个项目约由6位成员,历时18个月完成。

当时DOS运行于真实模式,能直接使用的内存只有640KB,完全不足以做无缝的地图渲染。最后,我们做了个大胆的决定,用汇编开发32位保护模式的引擎,用Turbo C++开发16位真实模式的游戏性部分。引擎部分由我那牛人拍档开发,而我主要编写游戏性部分。那个引擎,基本上就是要先从头写一个32位保护模式的操作系统,管理内存、磁盘读写、设备驱动等,再开发地图渲染引擎。游戏的“脚本”使用C语言来编写(包括用宏来做数据驱动),利用覆盖(overlay)机制的按需载入。

在那漫长的制作期,星期一至星期五,放学后经常会返回办公室,有时候晚上11点才回家。周末和假期,也会经常到公司干活。后来一些伙伴在项目结束前就离开公司,最后在不太欢乐的气氛下完成了这个作品,游戏内容有点虎头蛇尾。听说这作品在台湾卖得还不错,可是由于一些问题,我最终除了暑假获得的一点津贴外就没有其他经济上的收益,当然,开发经验除外。自此我离开了游戏业界,继续求学之路。

比赛生涯

自中二参加第一次电脑比赛之后,我又陆续参加了多次这类比赛。中三开发了一个教学软件,采用图形冒险游戏的形式去做几个化学实验。中四开发《王子传奇》时,同期开始学习C++,中五参加电脑辅助学习(CAL)比赛时,就试验用C++开发了一个地理科辅助教学软件《Landscapist(地形设计家)》,它其实是一个三维地形编辑及可视化工具,希望借此学习不同的地形,以及认识读取相应等高线图的方法。为了这个软件又开发了第二个GUI系统,这个系统采纳了面向对象设计思想。赛前自信满溢,可惜大热倒灶,只获小组季军。那个反差使我很失落,但后来也学会,单靠技术能力,不能做出大众喜爱的软件。而且也觉得名次对我越来越不重要,开发过程的乐趣和收获才是最重要的。

升上中六后,虽然我仍以个人名义参赛,但为了师弟师妹们也能参加比赛,就用Turbo Pascal开发了一个简单的二维游戏引擎,配合图像转换工具可以较容易做出作品来。为这个系统设计了易用的API,并多做了些测试以避免应用时出现问题,这些都为我积累了很好的经验。而我在这届比赛中,开发了《Logicmate(逻辑伙伴)》,这个软件是一个数字电路的设计工具和模拟器。配合高考电脑科的内容,这个软件可以用逻辑门设计数字电路。另外也有一个模式,是老师可以定义输入输出讯号,储存为习题,学生按要求去设计电路,并自动评分。周而复始,我又写了第三个GUI系统。该作品获得科学组亚军、全场总亚军和最佳教育奖。而师弟师妹们用了我的引擎拿了小组冠军和很多奖项,那又是另一种喜悦。

中七,最后一次参加CAL,我和一个同学组队参赛,用两个月的业余时间开发了两个组别的软件。在科学组制作了《Cyber Optics(奇妙的光学)》。当时Windows 95成为主流,我首次采用Visual Basic 开发这个软件。最初的感觉就是语言倒退,一大堆C++的特性都没有了。但后来也适应了,并觉得程序员不应该受语言所限,脑里能想到的,这些通用语言都能实现。另一个是语言组作品《Angel’s Adventure in English Land(小天使英语历险记)》,是一个马利奥式的横向平台动作寓教于乐(edutainment)软件。基本上是把英文词汇拼写问题加进游戏关卡里,除了跑、跳、踏、射,每关还有Boss战。这是过往软件中最好玩的一个,经过实际测试,目标对象(小学生们)也很喜欢。

大学之道

一直以为,我会顺利入读计算机系。因为一个意外,我未能如愿,当打算要重考,却又竟然进了香港大学的认知科学(Cognitive Science)。我当时百感交集,觉得人生走上了未知之路。那是1997年的夏天,香港回归祖国。

认知科学是一门以科学方法去研究人类心灵(Human Mind)的跨领域学科。出生以来从没想过自己会去心理学系、哲学系、语言学系、神经科学系上课,而这学科又同时含计算机系的课。回头想来,认知科学也许更适合我,开阔了我的视野,而不是把我变成一个电脑极客。再者,这学科容许文、理、商科的同学报考,能和不同背景的同学一起学习,互补长短,而那一届男女比例也刚好是1比1,不禁同情选了读工科的旧同学们。

港大校训是“明德格物(Sapientia et Virtus)”,在迎生营中却学到了另一传统口号“Working hard and playing hard in HKU”。前者出自《礼记·大学篇》,可理解为修养自己的道德,探求外在世界的物理;后者是港大学生的生活态度,努力工作学习,游戏同样尽力。

港大课程都用英语教学,起初还怕会成障碍,但很快就适应过来了。教学方式比较互动,教授也乐见学生指出黑板上的错误。虽然编程课无甚惊喜,两门算法课却都很具启发性,也系统地弥补了我这方面知识的不足。此外,还有一门人工智能课,作业内容是做黑白棋(reversi),或有额外加分的象棋。为了挑战,我选择了后者,也试用刚学不久的OpenGL做三维图形用户界面,历时两个月完成《美绿中国象棋》。

科学之上,还有哲学。学习哲学中的逻辑学是理性思考的基础,而哲学亦讲究如何清晰表达抽象思维。因为学科关系,课堂主要讲述心灵哲学此分支,例如二元论、物理主义、功能主义等,和人工智能有关的有图灵测试、中文房间论证、玛丽房间论证等。然而,对我人生观影响更深的,是接触有关宗教、自由意志和道德方面的哲学命题。虽然学习哲学并不能像学习算术,能找到问题的“正确解答”,但是哲学提供了一些问题的可能答案,或是揭开事物的表象,尝试分析其本质。我相信,能认清自己的卑微无知,及尽量避免盲目相信别人的答案,是哲学带给我一生的收获。

本科最后一年,我选择了计算机系的教授作为毕业论文导师。题目是基于内容的图像检索(CBIR),主要使用了名为自组织地图(SOM)的人工神经网络算法,进行自动图像分类。题目也许不太重要。重要的是,我从中学到了科学研究的方法,诸如搜索和阅读论文等训练,并且能以尽量客观的方式书写学术或业务上的文章。现在每逢遇到技术问题,都能应用那时学习到的技巧,先找相关书籍和论文,分析后再思考采用哪些方案,甚至尝试一些新的点子。每年也留意工作相关的学术会议,筛选一些论文细阅,从而掌握最新技术趋势。

本科毕业时,我的导师去了香港中文大学系统工程及工程管理系任教,他邀请我到该系念硕士研究生。而得到奖学金的学生,每个学期都要担任一门课的助教。我比较特殊的经历是担任计算机架构课的助教。因为我本科不是计算机系或工程院的,没有正式上过这门课,唯有在学生上课时又一起上课,回去读教科书写导修课教程。教学也是有趣的人生经历,当尝试以最简单最好的方式向学生讲解时,自己同时也对题目有更深的了解,或许也算是教学相长之体验。作为学生,上研究院的课也和本科有莫大差别。以一个中级数据库课程为例,教授在第一课讲解了一些研究题目,同学们在那些题目中抽签取得一篇论文,之后每课就是由同学轮流讲解抽到的论文,其实就是互相教学、互相学习。

硕士的研究题目其实是深化本科论文题目,配合使用者的实验数据,找出不同算法的实际应用效能。最后成功通过答辩,也获得了博士入学资格。然而,经过两年的研究,虽然我对从事研究感兴趣,但对这方面的研究并不是特别热衷。那时,反复询问自己,最想做的是什么,最适合做的是什么。我决定,最终要回归游戏,而在进入游戏产业之前,希望在这一学习阶段做游戏方面的研究。

回归游戏

硕士毕业后,我加入了香港理工大学的多媒体创新中心,先做项目研究员,再思考申请博士生的研究提案。最初我参与增强现实(Augmented Reality)游戏项目。首个游戏中,玩家手里拿着一块纸板,但看到的却是一个虚拟的木制迷宫,用双手把纸板倾侧,便可把虚拟的金属珠滚到终点,当中要小心控制力道避开洞穴。另一个是跳舞游戏,能在现场环境中看见虚拟的舞伴,并要按箭头移动身体。

增强现实游戏用于控制真实物件,并混合现实和虚拟画面

增强现实游戏用于控制真实物件,并混合现实和虚拟画面

至于兼读攻博方面,我的研究方向是游戏世界内容的自动生成。最初做对自然环境方面的研究,利用雨水侵蚀等模型去生成地形、河流等。刚刚中文大学举办一个游戏开发的比赛,便建议联合正在中心念三维美术的同学一起创作一个作品。想法是利用之前的研究,加上自动道路生成,去制作一个全地形车(ATV)赛车游戏,游戏中的环境、赛道每次都能自动产生。最后我们十多个组员一起完成的作品《Infiniti Rally(无限赛车)》顺利夺冠。可惜,攻博中期和导师出现了严重的分歧,便暂停了历时两年的兼读博士生生涯。

接着主要是开发一个三维在线游戏平台的大型项目,供香港业界、学界使用,后来要参与较多的业务和管理。因为洽谈项目和合作,多次到英国和中国台京沪杭穗等地,见识各地业界状况。直到而立之年,有感缺乏大型游戏制作经验,便毅然离家,漂泊上海,重新投身于游戏业界。有幸能于育碧完成四平台的《美食从天降》,之后到了现在任职的麻辣马,开发我喜爱的游戏的续作《Alice: Madness Returns》。

《Alice:Madness Returns》截图

《Alice:Madness Returns》截图

2010年初,因读了一本有点失望的书,并在豆瓣网站写了一篇书评,认识了许多IT、出版业界朋友,也促使我建立博客、翻译游戏开发书籍以回馈社会。我的路并非一帆风顺,但是遇到出人意表之事,是好是坏,也只由自己心态去决定,随遇而安。制定或接受挑战,因为有难度的游戏才好玩。凡事独立思考,尽心尽力而为。祝你也能享受这个名为人生的游戏。

作者简介:

叶劲峰Milo Yip(叶劲峰),香港土生土长,取得认知科学学士、系统工程及工程管理哲学硕士。爱好编程和游戏,高中时曾开发游戏于台湾发行,现担任上海麻辣马资深程序员。

博客: http://miloyip.cnblogs.com/

(本文来自《程序员》杂志10年10期,更多精彩内容敬请关注10期杂志)

《程序员》10月刊最新上市:http://www.programmer.com.cn/4128/

《程序员》订阅:http://dingyue.programmer.com.cn/

转播到腾讯微博

----->立刻申请加入《程序员》杂志读者俱乐部,与杂志编辑直接交流,参与选题,优先投稿

46 Responses to “上海麻辣马资深程序员叶劲峰:我的游戏人生”

  1. 程序员 说道:

    此人和老赵有的一比

  2. abc 说道:

    妈的你知足吧!老子在2001年才接触过电脑,在2007年才有了自己的电脑!你比老子幸福多了!老子要是有你那些经历,早成才了!

  3. 码农 说道:

    作者长得很有游戏感。。。

  4. 绽放 说道:

    写的挺好的,人生有的时候就像是游戏,你不知道下一步会有什么场景和BOOS等着你去挑战。
    希望作者更上一层楼,开发出经典游戏!支持你!

  5. lin 说道:

    我05年才接触电脑

  6. 武汉会议公司 说道:

    编码10年,很有感触。

  7. zhoufoxcn 说道:

    “2010年初,因读了一本有点失望的书,并在豆瓣网站写了一篇书评,认识了许多IT、出版业界朋友,也促使我建立博客、翻译游戏开发书籍以回馈社会。”
    这里一本失望的书就是“淋巴哥(0 bug)”的书。

  8. sx 说道:

    2楼那个蠢才,一嘴巴的粪

  9. hiloves 说道:

    就是叶劲峰与无bug老师在豆瓣PK,现在叶劲峰都有专访了,不知道无bug老师安在

  10. hiloves 说道:

    不知道无bug老师看到本文会不会唏嘘一番,不知会否蒙生肖传国之流的恶意来

  11. 佛像 说道:

    诶,我2003年才接触电脑。。。。不过照样很牛,这人太庸了

  12. 庸才 说道:

    11 楼貌似很牛逼。。

  13. webrobot 说道:

    abc :你不知天高地厚!!!!

  14. webrobot 说道:

    我哥们也跟你2001有电脑类似,人家已经是架构师级别。开奔驰,上百人技术团队!abc :你真不知天高地厚!!!!

  15. 凡夫 说道:

    此人绝对是个技术大牛,希望多些些书籍,供我等凡夫俗子欣赏,哈哈。

  16. MIK 说道:

    不用妄自菲薄,亦不必恶语相向

  17. 白一梓 说道:

    作者很令我佩服,我是06(大一)年开始学的编程,看来想成为高手,还需要向作者那样历经九九八十一难,才能修成正果。我前面的路还很长……

  18. simpleframework 说道:

    佩服佩服。

  19. 卜风 说道:

    佩服,佩服啊,呵呵

  20. Louis 说道:

    唉,虽然小时候就接触了电脑,但只懂玩,没想过这么高深的东西。
    直到三年前,大一才开始学习编程。

  21. skall 说道:

    进来是骂2楼那个sb的
    操,哥最讨厌这种人渣

  22. xiaofei 说道:

    曾经对编程很感兴趣,可惜那时候没条件,现在有点条件了,那些兴趣却都丢失了。

  23. z 说道:

    人品和技术都很不错。
    0bug老师这种就不评论了。

  24. kui 说道:

    没听说过麻辣马,只听说过顽皮狗。
    而且这些游戏不是没听说过就是一点都不好玩

  25. yeka 说道:

    叶劲峰先生的豆瓣主页上推荐并评论了他认为不错的好书:

    http://book.douban.com/people/miloyip/

  26. Anders 说道:

    3年级就开始编程设计游戏,一生都在设计,这个有点传奇性质撒,我们大学都没有设计游戏,能不牛叉都怪了

  27. G_cofa 说道:

    Milo Yop 大牛啊。

  28. G_cofa 说道:

    7楼说的对,就是那本,,,没有bug的。

  29. gouhan 说道:

    我也一直想从事游戏编程。我热爱游戏。特别是玩游戏的时候,有些关卡是很难过去的,我想,要是能够自己做这个游戏,那么我就可以设置一些机关。那么玩起来就有意思很多。哈,曾看过windows编程上。现在从事的是高级编程。或许做的多了,技术熟练起来了。觉得高级编程挺 乏味,正准备转底层的编程去。
    请 赐教一二。谢谢。

  30. gouhan 说道:

    写了自己的想法,却忘记了对于别人的评论。这里补充一下
    博主真是强悍,或许我能够得到如此的指引,现在应该会更好。

  31. zhucai 说道:

    从围观0bug事件到敬仰Milo Yip ….

  32. 暮秋雨 说道:

    作者的经历让我知道,作为游戏程序员,要有深厚扎实的编程基础。同时羡慕作,和云风一样,在那么早就接触电脑,接触游戏编程。我从小玩FC,就想着有一天能自己编出那样的游戏,但由于生在信息闭塞的农村,没有那样的机会去接触编程,上大学后,终于意外的进了游戏设计专业,但自己的不思进取和好逸恶劳,让大四的我现在深感后悔,没有把握机遇,现在觉醒,希望为时未晚。

  33. AND1 说道:

    我们程序员的素质有待提高啊

  34. 说道:

    2楼的在吹牛吧?我看就算给你长个天才的脑袋,你还是扶不上墙根,因为你的人品不行!

  35. linuxboy_007 说道:

    优秀的程序员都有一个共同点,强烈的求知欲和敢想敢干,所用的语言,年龄,学习编程的时间长短都是次要的。想有所成就又觉得自己学习编程太晚的朋友们,你们了解过王江民么?顺便在此还念一下这位高手,愿他在天国安息。

    —————————————————————————————————
    另外,对2楼说一句,你说的话、你的名字和你回帖时的楼层,都让我生动地看见了你!

  36. ray 说道:

    好像比云风还要强啊!

  37. north face outlets 说道:

    good post! thank you for share it!

  38. buy north face 说道:

    buy north face千里马常有,而伯乐不常有

  39. cheap north face 说道:

    真的太重要了

  40. sam 说道:

    很强大…

  41. tom 说道:

    游戏人生!!

  42. Canada Goose 说道:

    Beneficial document helps make frequent advance, appreciate it

    write about, this pile-up connected with expertise is usually to

    hold finding out, focus is usually the beginning of money.

  43. seems so interesting .I think the man is so smart.GAME & LIFE ,JUST THAY STYLE .I REALLY LIKE IT.

  44. tomli 说道:

    人生如梦~~

  45. 沫沫 说道:

    我只能说,很强大,膜拜中

  46. sxyzbbs 说道:

    麻辣马是EA旗下的工作室,EA出品什么样的游戏大家都知道

请评论

preload preload preload
京ICP备06065162