谁有97年逆火邪神工作室的《天惑》,求下载地址,谢...

“天行健者,星斗齐惑”,97年下半年的飞行射击类游戏《天惑》也是整个年度的亮点。这部游戏的投入低得惊人,而逆火工作室在设备、资金等条件极其恶劣的情况下,耗时两年多做出这种品质的作品,更是难能可贵的。在当时即时战略充斥市场的时候,《天惑》选择飞行射击这一题材,正说明了他们的理智。《天惑》采取的640x480的16位彩色,多重卷轴,而且其画面绚丽,极具未来风格。

国庆突然想起这个经典的游戏,想和几个老朋友重温一下,可惜搜索了无数资源,都没能找到可下载的,谁有刻碟或硬盘上有的,麻烦共享一下,多谢。

        明天就是五一假期了,同事都已放假。我不打算在假期加班,因为加班也无事可做,手头上的工作都需要与人合作。

        前几天和新同事吃夜宵,大家聊的异常兴奋,我也忍不住开始想当年。当年那些美好的日子,记忆已经很模糊了。我想再过个两年,估计我都不能准确回忆起那些曾经对我影响深刻的日子准确的时间。是时候记下点什么,对自己是一种纪念。

我这人有个优点,选择性记忆,那些不快的回忆很容易随风而去。活在我记忆中的人们,对他们只留下感激。我也曾经爱写日记,很早我就写电子日记,记在自己的机器上,PDA上,当我有一些不愿意再回忆的事情时,我会个将整个文件加上密码,长长的一次性密码,保证自己只能记住一小段日子。当这段日子过去,密码就消失在记忆中。然后再也打不开这些文字,等到下次更换硬盘,无论我多么的想再看一眼当年的自己,也无能为力,只好把加密过的文件删去。

我想我就是这么成长过来,没有什么挫折的感觉被反复咀嚼,都已经抛在脑后。生命中没有什么不可以失去的,这个道理很早就明白了。我曾经懊恼过丢失了大量的源代码、自以为写的不错的文章、早年的聊天记录、珍贵的日记、数年的电子邮件……最后我明白了,一切的一切不过是身外之物,我能拥有回忆中最美好的部分,那么已经是特别幸福了。

        不过也正是如此,以下的记录也只能是我努力的回忆。或许因为时间久远,跟真实有所偏差,或许从我的角度只看到的事物的一面,但是、我可以保证,并没有故意在叙述中掺差虚假的东西。

        是的,我想讲一个真实的故事,一个拥有数千万玩家的游戏诞生的故事。我并不喜欢这个游戏系列本身,但是我为这个产品自豪。我的代码曾运行在几千万用户的机器上,作为一个程序员,还有什么比这更让人满足的呢?也许有,比如让这个用户数量再扩大10倍。

        认识“古越”还是我读大四下学期的时候(2000年初)。有一天,他在QQ上蹦出来,问我一些“风魂”的问题。我当时上网主要在泡sina的游戏制作论坛,“风魂”就是那几年写的游戏之作。

更早的时候,我比较喜欢在dos下写点东西。研究一下allegro这个游戏开发库。我翻译了allegro第3版的所有文档(为此还自己做了一个辅助翻译工具),这项工程耗去了很长的时间,从98年开始到99年中,业余时间我几乎都在维护这个东西。为了翻译不出差错,同时也阅读了大部分allegro的源代码,从中学习到了许多游戏引擎的理念。

那些日子,时常在allegro的maillist说几句话,为一些代码做优化并迅速被allegro开发社区吸收进去。同时我也提出了许多自己的想法。不过由于新的想法需要对allegro的接口做调整,这是一个成熟的库不可接受的,和allegro的原作者Shawn通email的过程中,Shawn用很友好的语气说,如果你觉得那样比较好,为什么不自己做一套东西出来?然后我就做了,甚至第一个版本在allegro的mallist中发布。有人说,这样的东西没什么意义,allegro已经够好了(当时已经有了Windows版)。Shawn还帮我解释。

        哦,我说的就是“风魂”。甚至不到一个月,风魂就有了一个匈牙利用户,他还用它做了一个小游戏。

        这是1999年3月4日到3月8日的事情。我在网吧通宵了三个晚上把风魂的第一个版本完成。之所以日子记的这么清楚,是因为我查到了当年留下的一份记录文档。开发环境是MSVC 5,因为我不愿意(也没有足够的硬盘空间)装IE4,所以没有***自己的。原以为问题很容易解决。也就是为了这个问题,开始和公司邮件组的同事进行交流。我总觉得,处理这个问题弄个白名单就ok了,对于长期群发邮件,但没有被任何人投诉的帐号,应该很容易纳入白名单。但接下来听了邮件组的同事倒的许多苦水。嗯、其实一些表面上容易做的事情,即使技术上也没有障碍,实际操作时还是有各式各样的困难的啊。

        虽然一再被封帐号,甚至冻结ip,这个半人工的maillist还是开了一年多。只到03年11月底,我群发了最后一封邮件宣布它关闭。大家觉得可惜,不久以后,我从公司申请到服务器资源,又重新开起来。

        另一件事情,我开始健身。一直坚持了近三年。这段经历让我明白了一个道理。别人能做的事情,自己也是能做到的。无论目标看起来多么遥不可及。关键还是看是否有决心坚持下去。而一件事情能坚持,往往看的并不是兴趣爱好,或是利益诱惑,更多的只是习惯。养成习惯才是最重要的。

我从小身体就非常瘦弱。到小学毕业时,一个引体向上都拉不起来。上学期间,我觉得自己天生在体育方面就比别人差。进高中前,还担心体育不达标会影响入学。到读大学期间,曾经被寝室的同学怂恿着去健身,但只去了几天,听了教练讲一些要领后就没怎么再去。毕业后,一米八多的个头,体重只有130。夏天脱了上衣就是一身排骨。

公司不远处(员村)有一间健身房,先去打探了一下,感觉设施很齐备。如果按次去,就比较贵,一次要十多块。而且容易荒废。比较了一下,办那种早卡比较划算,一个月才100多点,唯一的限制是在中午12点前进场。一咬牙,决定彻底一点,改掉晚睡晚起的习惯。每天七点起床,吃个早餐休息一下,就走过去(大约半小时路程)锻炼。

        旁边是个电影院,只要是周末,训练完了还进去看场电影。电影业很萧条,好几次放映厅空空的就我一人。感觉是个人包场,非常的惬意。碰到滥片,窝在情侣座里小睡一会。那几年,真是贡献了不少银子给我们国家的电影事业呢。

健身房的器械区早上基本没人,教练也很无聊。几句话我们就聊上了。他乐得交个朋友,便帮我指定计划,一点点的开始练习。我想我就是那么下了个决定就开始了。一直坚持下去。一开始是隔天去一次(因为没有习惯大量肌肉练习的人,一开始必须保证每次之后48小时的休息),然后逐步增加频率,直到一周五次。

很辛苦,也很单调。每天一个半小时的训练,各个大肌肉群分开练习。全是各种器械的反复机械练习。一组组的做,直到压榨出肌肉中的每一点能量。还有每天100个的仰卧起坐(从平板到斜板再到几十千克的负重)。最初的那段时间,整天腰酸背痛,四肢无力。记得有天躺在床上,用手硬是撑不起身体坐起来,我知道那是肱三头肌脱力的现象。

        唯一的乐趣,就是每天测量自己的各处肌肉的围度,以及称体重,看那些数字在小数点后的变化。神奇的是,晚上的睡眠也是相当的好。白天虽然没力气,但很有精神。每天都能吃上十多个白水煮鸡蛋。身体也就一天一天明显的膨胀起来。

        一年之后,体重就从最初的130上升到了156。卧推从刚开始的不到30公斤,增加到接近100公斤,深蹲也达到了140以上。看着杠铃两端厚厚的哑铃片,心里特有成就感。

        一直以为,身体主要是父母给的,后天能改变的很少。当看见别人身材魁梧,总是很羡慕。小时候没注意锻炼,觉得大学毕业后就成年了,能改善的可能性不大。没想到,一切都不晚,只要去努力,依旧可以改变自己的。

        只是这两年,项目实在太忙,主要是劳心。我中断了健身的习惯。感觉身体状态降了很多。体重也掉了下来。不过还是比大学时好一些。我想能够在这几年玩命去做新的项目,这身体基础跟前几年的坚持锻炼是分不开的。真所谓养兵千日,用兵一时啊:D。等现在手头的事情做完,一定要恢复这些好习惯。

        大话二收费以后,因为我脱离了这个项目的开发组,也就没什么记忆了。不过也时常关心一下,记得十月刚回公司时,在游戏里的聊天频道中,经常有玩家哭述自己被骗。他们用游戏币和人交换点卡,却总有单方面失信的事情发生。

        我们曾想过在玩家条款中加入禁止游戏虚拟物品和虚拟货币与现实货币交易的条款,正如暴雪今天在wow中做的那样。有一种直觉告诉我们,游戏牵扯进金钱交易,游戏本身会受到冲击,不是什么好事。

        直觉不总是正确的。固然,我们可以利用程序规则限制虚拟物品的转移,但那也会极大的破坏游戏性。有如美国当年的禁酒令最终执行不下去一样,禁止不了的事情,不如提供更大的便利去疏通。开发团队决定给系统增加一个公正的点卡交易系统。

     这个系统,在02年10月底一台服务器上试运行。不久就在全部服务器推广开。我很赞同这个系统,但技术上没出什么力。讨论过程中,我只强调了一点,一定要在交易过程中征税,这个意见被顺利采纳了。

点卡交易系统一开始并不起眼,没人会想到它能起到多大价值。只是几个程序员看见玩家的需求,临时拍脑袋加上的。设计实现时也完全没考虑它会促进游戏的收益。开始时,有玩家传言,某些玩家寄售的点卡是由系统变出钱来凭空买下的。这种事情从未发生过,如果真的这么做了,其实也很容易被玩家发觉。其实,经过仔细考虑,我们也觉得没有必要这样去做。

        玩家在这个系统的辅助下,游戏内的经济系统达到一个更为稳定的平衡状态。实际上促进了游戏的发展。金融工具可以促进经济的发展,点卡交易系统,就是一种在现实社会中不可能存在的金融工具,但对于网络游戏中的虚拟社会,则是非常有益的补充。

慢慢的我也明白了,网络游戏和从前单机游戏之不同。网络游戏更为注重人和人之间的交流,更多的是在模拟一个社会。而社会的稳定和平衡是一个动态的过程,并非一开始设计好规则,就可以保证的。人的行为没有固定的模式,尤其是对比现实社会少的多的人群,规律更不确定。没有游戏规则是普适的。对规则的不断修改,增删,调整,就是一个动态调节的过程。后来我们的许多产品,包括许多同行发行的产品,没能经历这样一段调整期,也是最终没能成功的因素之一。

        由于没有项目开发的压力,我的注意力主要放在了学习研究各种有趣的东西上。因为对C++的热爱,那些日子大部分的精力都是围绕这方面。比如boost,阅读它的源码是主要的工作之一。

一开始看的是boost.thread,因为之前的多线程程序的复杂度印象太深刻了。我相信C++可以带来一些方法来回避其复杂度。设计良好的线程库非常值得参考。当时和泡泡组黄晓东的后继者李鑫也有讨论,他们在项目中尝试用过boost.thread。我询问过他的意见,他说他们发现这个东西还不太稳定,有一些bug。现在无法确定当时泡泡那个版本遇到的问题是否真的有boost.thread的问题。但是,C++模板库不好调试,已经深深的影响了实际的开发。

从我们那个C++邮件列表02年10月的信笺存档中,可以找到当时大家关心的许多话题。当时我还去看了boost.python,它是boost中不多见的几个需要编译才能使用的部件之一。为什么不是boost.ruby而是boost.python,引起了我的好奇心。看起来C++社区对python真的是特别有爱啊。这引起我对python语言的关注。

“他(Stroustrup)说Python很有趣,不过说Python是C++的最佳搭档言过其实,因为C++一直都是很多种语言的最佳排挡。关键不在于那种语言多么的出色,而在于你应该选择最合适的工具解决问题。而C++很少被用来构造整个系统,通常只构造系统中的关键部分,这时候,他当然鼓励把其他语言与C++共同使用,而且实际上,一直以来都是这样。”

另外值得一提的是Stroustrup的其他一些观点,例如对于boost和loki,他毫不犹豫地赞同我们这个圈子当时许多人的观点,“某些库中有过分运用模板机制的倾向”。并强调,“C++是一种多范式语言,最好的风格是综合运用各种范式,保持平衡,求得对某个特定问题的最佳解决方案。过分运用泛型程序设计技术,与过分运用面向对象技术一样,都是他不赞成的。”

        还有关于指针的问题,“他(Stroustrup)通常把实际对象也放到容器里,然后再用一个容纳指针的容器进行关键操作。他认为只要你仔细考虑,大多数资源都是有一个唯一的owner的。接着,他主动谈到智能指针,最有趣的东西就在这里了,他说,有很多人开发了类似shared ptr这样的东西,使事情看上去很漂亮。但是他不太喜欢智能指针。这个东西实际上是一种半吊子GC,它比手工管理自动化,又不如GC自动化,高不成低不就。你同样不知道对象是什么时候被析构的,那为什么不直接用GC呢?在他看来,普通指针仍然有很大用处,不应该试图绕开它。”

     当时,我们也关注一些诸如敏捷编程的时髦话题。孟岩曾经(02年10月24日)转过一封Bob大叔Robert Martin给他的信,里面有一段话无关敏捷编程,但我觉得挺有趣,

        是时候好好看看python了,不知不觉的公司里许多程序员中都开始出现学习python的势头。我第一次认真的审视这些动态语言,而不仅仅把它们当作一种嵌入式脚本使用。

        叶航是在02年10月来公司报道的。以前我更熟悉他的网名:高铃响。我们在sina游戏制作论坛泡了好些年,是多年未见过面的网友。只听说他在深圳万智源做最初幻想,然后就被dingdang叫到了网易来。也有人叫他老高,不过我更多还是只呼其名了。

        那天,我在天河跟sina论坛的坛友龙云峰喝酒。听说叶航过来了,打了个***把他叫过去,大家版聚一下。就在一个很小的酒吧,为他接风。他是个好青年,时不时的接一下女朋友的***。我们聊一些论坛上的旧事。叶航和我同届,真是奇怪的很,我认识的许多做游戏的同行,居然都是2000年大学毕业的,

        叶航入职后进了大话组,不知道忙着什么。离他正式转入天下组做策划,随后升为主策划还有半年时间。不过我想dingdang早就想好了让他负责天下的吧。

        大话一的玩家流失的很快,到了03年时,据说有的服务器上最少的时候只有两三个人,其中还有一个是在线的GM。不得不佩服这样忠实的玩家,即使把一个网络游戏玩成单机版,也要坚持下去。

徐波在那里摆弄大话一的新版本“仙履奇缘”,成天在论坛里跟玩家吵吵闹闹。同时,大部分的大话一玩家被分流到这个使用大话二的新client以及从大话二服务器分支出来开发的服务器系统。这个服务器免费,聚集着上千个前大话一的玩家。我想那是一块实验田,可以不断的尝试加一些新的东西,对规则不断的修正,补充一些细节。我想,我们到现在为止,再没有一个项目可以这样。有稳定的程序,稳定且有一定数量的用户,没有项目时间的安排,只是不断的修改游戏设计,让它更好玩。

丁丁去而复返,dingdang安排他做徐波的上司,在这个分不清是旧瓶装新酒还是新瓶装旧酒的项目里做主策划。作为外人,我对项目策划方面的进展了解不多,无法判断到底是丁丁的贡献更大,还是徐波的。但是我能肯定,不能否定他们任何一人为这个游戏,日后被称为《梦幻西游》的游戏,初期所做的一切。

        03年初,lua第5版即将发布的消息从lua的邮件列表中传出。我饶有兴趣的查看了新特性列表,被深深吸引的是新加入的coroutine。直觉告诉我,这是一种用来描述游戏逻辑不错的工具。

        之前,大话二的client一直在用类似状态机的方式控制屏幕上的角色。虽然kyo dingdang都觉得这样就够了,因为已经比大话一做的好。但是我始终不太满意。我想找到更自然的方法去描述画面行为。只有这样,程序员才好放手去描述更多的细节,游戏才能表现的更生动。

我花了许多时间来写一个C的coroutine库。事后发现完全可以用标准C语言(借助longjmp)来实现,但是当时还是采用了汇编。这样我能更精确的控制内存的布局(尤其是堆栈方面的处理),因为按我的想法,为每个控制序列附加一个线程控制,可能会达到千个这样的数量级。不仔细推敲是不行的。

     郭老对这个东西很感兴趣,我给他演示了一些简单的例子,他觉得用起来很方便。

大约在03年的春天,郭老对我说,我这里风魂已经用C++再次重写过了。我们这半年又弄出了许多好玩的东西,例如那个coroutine。不如大家用新的代码重新写一个游戏client吧。这次我用coroutine实现了新的网络底层接口,声音模块,还有对象的管理。一切都感觉比上次做大话二时舒服多了。

        掌握了新的技术,总是能激发程序员们的斗志。就这样,我们再次开始从头开始写西游的客户端程序。目标是让《梦幻西游》可以用上新的技术。哦,那个时候还不叫《梦幻西游》,但不久就会换上这个留在无数玩家心里的名字了。

《梦幻西游》就这样兵分几路,独立的开发着。策划用着大话二的程序系统测试着玩法,并由服务器程序跟进。美术按照留下来的规范制作着新的资源,当然,我们的工具慢慢的也齐备了。我为之制作了可视化的编辑器,郭老做了一个魔法效果的编辑器。因为我们讨论的结果是,既然有时间,应该进一步的压缩client需要的美术资源,以后当以程序控制的动画为主。还有诸如更换武器,局部换色等等方案,都在有条不紊的制定出来。

而Client程序方面,由郭老和我一起制作。我还是写底层,除了重写了所有的engine代码外。还新增加了不少特性。比如图象动态缩放,这RLE压缩图片的实时缩放写起来相当麻烦,虽然最后我把它实现了,但因为换装拼接时,出现一些接缝问题效果不太满意,最终放弃未用。这会是名副其实的并肩作战,大家在发现潜在的问题时都可以当天解决。新的client质量得以提升就是理所当然的事了。

        梦幻西游这个项目,悄然开始,顺利展开,正在于这种相互独立的开发。这个优势,在大话西游二的研发期间已经显露出来,但到梦幻西游,发挥的淋漓尽致。

大话二的收入不错,慢慢的大家的口袋里都富裕了起来。我不知道公司具体给开发组的提成是多少。从往日的一封邮件来模糊的揣测,应该不到8%。但是,这个游戏的收入总量是巨大的,而我们也没有投入太多的研发经费。连宣传都是少之又少。最终,大家拿到手的奖金自然是非常丰厚。这给了所有人一个非常宽松的开发环境。

     如果要说点别的,在02年底,我突然爱上了ps2上的游戏。从最终幻想X开始。公司里有两台ps2,就放在办公区的一角。每天下班后,大家都去玩一玩。一天,我看见麻雀在那玩最终幻想,这是个老游戏,但英文版出来不久。我帮他做翻译,一边看着他玩。然后自己就开始手痒了。由于不好霸占着公共的游戏机资源。周末立刻去买了一台回家。

        之后一发不可收拾。我想我购买了几乎所有发行过的ps2游戏,数以千计。和许多游戏收藏爱好者不同,有一年的时间,我都是很认真的玩每个不那么垃圾的游戏。很多很多游戏都从头打到尾了。

        那几年的业余生活很简单,健身,打游戏。当然后来还有更多的一些活动,比如骑车、攀岩、看卡通,这么看的话,不算宅男,嘿嘿。

2003年3月,网易最大的一家风险投资商,新闻集团,***。短时间内,公司的股价从15块以上跌到了11块。我想公司那个时候是有许多人感到不安的,毕竟咬在嘴的肉一下子少了一块,多少有些不舒服。接下来的股票执行窗口(按美国法律,公司员工***自己公司的股票,必须在限定的时间段内进行,这个时间段被简称为交易窗口),许多人抛掉了自己手上的股票。但游戏部门的人对将来都充满信心。

        这段时间,公司又为员工颁发了奖励性质的期权。我拿的比前一年少,dingdang也是。而游戏部的人多了许多,每个人都有。我还记得那天,CEO Ted亲自颁发的文件。他头发花白,看起来比实际年纪大许多。人很和善。读到我的名字,当我上去领文件时,特地与我握了下手。当时说了些什么不太记得了,但是他给我传递的那种感觉,影响非常深刻。这是我第一次见他,也是最后一次。

        Ted人缘很好,是慢慢感觉到的。第二年跟Michael Tong去美国出差时,有机会拜访了几位跟网易有些渊源的朋友。见面后,大家一定会很关切的询问Ted的身体情况。聊起来都会说,Ted真是个不错的人啊。

05年底收到丁发给我的Ted手术失败的消息时,我正从岩道上下来休整,一下子感慨万千。多好的一个人走了,活着的人更应该保重身体。上海一个同事曾给我转述了他听来的故事,据说是北京办公室的同事讲的。Ted走的那一晚,他在北京空着的那间办公室的天花板上的消防水龙头突发故障,喷出的水洒了一屋。周一大家得到了噩耗,纷纷说那是Ted放心不下,又回来看看了。

五月间,非典袭来。最早是深圳的同学给我发短信,说是他们那的醋被抢购一空,让我赶紧备一点。接下来几天,广州满大街的酸味。我是从头到尾没觉得多大个事儿,每天照样去健身房锻炼,到公司上班。我能理解人们的恐慌,但不知为啥,无论别人怎么渲染,我就是觉得没啥。倒是健身房和公司里的消毒水味道有点不好受。最严重那几天,公司的同事都在家办公了。我家里没有计算机,所以依旧泡在公司里。

这个事件对运营的游戏的影响说不太清,有好有坏吧。大话正处于加速上升期,而在此同时短信方面的业务量在萎缩。游戏部门相对独立,大部分时间,部门以外的人甚至别的部门的高管都不清楚游戏的情况。不然,到03年年底的时候,也不会有无线部的头儿违反规定,私自抛售公司股票,最终被美国证监会抓个正着了。

        我在03年年中的时候,卖过一点点公司的股票,换到一些美圆。很好奇的炒了几个月外汇。读了许多技术分析的书,颇有些心得。大约玩了半年,起起落落,最终赚了百分之二三十,相比同期许多赔了的人,已经是很好的成绩了。但终究觉得无论是外汇还是股票,都只能当玩具玩玩。

        炒这些东西,从中找到些许规律,并尽量做出准确的趋势估计,固然可以满足自己的成就感。但那实在是太浪费时间和精力了。人不能把美好的青春浪费在这么点成就感上。

        不过一直以来,我还是乐于帮同事做分析,许多人也信任我的判断。只是每每说到自己公司的股票,我只有一句话,要相信自己的公司,自己做的事业。因为自己公司的股价,是股市上唯一能靠自己把握的东西了。

        今天,ntes几经沉浮,再次升到24~25美圆(曾经一拆四,相当于以前的100美圆左右)。我很庆幸我坚持的理念,把自己大半的积蓄都投资在上面(19美金,大家都纷纷***时还继续跟进过,当然是在窗口交易的),它给了我莫大的回报。

        03年的下半年,我们确认要购买一个成熟的引擎制作3d项目(不久被定名为天下二)。dingdang最终选择了bigworld,价格不菲。再此之前,我们也和很多游戏公司谈过。曾考虑过无冬之夜的引擎,甚至还联系过暴雪,希望他们把魔兽三的引擎授权给我们开发,结果当然是被拒绝。

bigworld和别的网络游戏不同,它并不是把地图切分成一个个独立部分分担到独立的进程中去管理。这样比较来讲,bigworld是以人群而不是以地图区域来分担负载的。举个例子,如果有一大堆人拥挤在一起,那么他们就由一台服务器为它们服务。当这个人群群体向一个方向移动时,那么为他们服务的服务器也会跟着在虚拟场景中移动。只到有人从里面分流出来,在资源允许的情况下,分流出来的人会进入一个新的服务器。

        听起来很神奇,bigworld理论上可以支撑无限大(其实还是有限的,只是比常规做法大几个数量级)的游戏世界。世界间的每个区域都是无缝连接的。因为服务器本就不是按区域划分的,那就谈不到缝了。

        我们拿到了部分代码,服务器真正核心的那部分(负载均衡)他们不愿意卖给我们,只是提供了二进制文件。dingdang读过入手的一些程序,据说代码质量很高。反复衡量后,决定购买这套引擎。我说,其实没有什么东西是绝对神秘的,让我试试,可能可以还原被隐去的代码。

        如果允许我接触已经购买的代码,需要签下一份保密协议。这样,我就签了,和许多正式转入3d组的程序员一起签的。kyo也在那时脱离了大话二的开发,进入这个小组。

hat,而我们公司用较多的是freebsd。部分源码缺失,使得移植很困难。我拿到C++的头文件和那些.o文件后,发现做个简单的逆向工程,甚至可以把大部分缺失的代码还原出来。隐藏的源码的那部分其实和开放源码的部分耦合度很高,设计上根本不应该拆分开。它们中间有着千丝万缕的联系。部分内部数据结构虽然表面看不到,但是到后来我基本都推测出来了。

由于bigworld大量用了多重继承,早期分析还是挺麻烦的。读这些汇编,让我对C++编译器生成出来的复杂的数据结构有了几分认识。几个月后,对于各种形式的C++程序最终编译出来的汇编形式,以及对象的内存布局,我几乎都能立刻在脑海里做出条件反射般的印象了。对着这些汇编码,新写下的C++程序重新编译后,可以做到和无源码的.o文件,逐字节一致。

        这个工作其实只做了一半,后来公司花了极大价钱买下了全部的代码。只是那个时候我已退出天下组,没有权限去看那些东西了。

        从bigworld的源代码中我倒没学到什么新鲜东西。那段时间只是把逆向工程当成一件有挑战的趣事在做。做的过于细节,反而无法高屋建瓴的来看bigworld的整体设计。额外的收益就是实践了一把C++的对象模型,我想当时的公司里不会有比我对C++语言更熟悉的人了。

此行让我感触比较深的是老外程序员的敬业。他们工作很正规,一天八小时都在那写程序,如果没有特别的事情,不会像我们那样在办公室里穿来串去。下了班就准时回家,上班就工作。可以说,一个工作日就是一个,不象我们公司,程序员们相对懒散,除了短期的兴奋期,每天集中精力能写程序的时间远不到八小时。想来这也不是网易一家如此,我见过的许多国内公司都有此问题。所以在澳洲看到的情景给我不小触动。

        另外他们的电脑,大多数人都装的linux,运行windows的机器上没有任何盗版软件。一个个把画笔和记事本用的相当娴熟,因为只有这些是不用额外掏钱买的。

回到bigworld的话题上,我学到并欣赏的一点是:他们嵌入的python,使用起来非常方便。client和server之间完全屏蔽了网络这个东西。server的各个进程之间也感觉不到跨进程通讯的存在。这应该算是一个设计非常良好的引擎了。给予了我后来几年独立开发的东西许多灵感。只是隐藏了太多细节,也出现了很多局限性。从我的感觉上,引擎是为特定游戏类型去设计的(或许他们最早想做一个MMOFPS?),离我们心目中MMORPG的需求有一些距离。

后来的发展也的确是这样。可以说,03年到今天(08年),网易和bigworld公司是一种相互依存的关系。我们用他们的引擎,提出各种意见,找到设计问题和bug,反馈给他们修改,一步步的把bigworld打造成更适合现代MMORPG的游戏引擎。kyo后来担任天下二的技术主管,坚定着不自己开发服务器的分支版本,一切问题交给澳洲处理的方针。虽然开发过程往往有点憋火,但也保持了最终版本的唯一。最近几天在看《人月神话》,里面提到设计概念一致的重要性,这就是一个佐证。

我说,花了这么多钱,购买这么贵一个游戏引擎,我们就应该在游戏设计上有所突破。既然bigworld的技术优势就在于更大的世界,更多的人互动。我们为何不为之实现一个不一样的游戏出来,突出这些特点。而不仅仅是重复已有的网游游戏模式,只是把我们已经做到的2d游戏3d化。如果不做这些,让我们自己开发一个3d engine就够用了,不过半年的时间,我有信心搞定。

        大概就是这样的观点吧,具体也记不清了。不知为什么,我们的分歧越来越大。最后,我坐在桌子上一言不发。过了好久,dingdang心情也平静了些,主动过来向我道歉,为他的态度道歉。这是我们第一次,也是最后一次争吵。其实我能理解他,一如既往。

        回广州的一年后,类似的问题我和叶航也争过一次。慢慢我就明白,永远不要对别人的项目指手画脚,当局者未必迷,旁观者未必清。有什么事情自己有想法的话,最好的办法是自己去做。

        在我们一队人去澳洲上飞机的那一天,还有一个有趣的小插曲。当天公司的中层人员都被安排去参加一个管理培训。虽然我手下没有一个兵,可也被安排去了。

        估计是丁磊故意的,dingdang我还有张金等五个人被分到一个组。培训课上做了一个小游戏颇有意思,培训结束后,我们还热烈讨论。真的是可以看出每个人的性格来了。有兴趣的同学可以找人做上一次。

        游戏是这样的,五个人被发了五张纸。游戏开始后,大家阅读手上的纸,并努力完成游戏。这个游戏需要五个人合作,但不许语言交流。信息沟通只能靠传字条。便签纸是可以无限取用的,但是每个小组只指定了一个人可以向任何一个人传字条,而其他人只允许向他传。

     我们这一组,这个关键人是张金。游戏一开始她就收到了大量的字条,忙个不停。

        我拿到的纸上什么字都没有,只画了五个奇怪的符号。我觉得其他人也应该是如此,我们借助张金传递着信息,想弄清楚别人手上都画了些什么。大家都在猜测这个游戏到底想让我们做什么。很快我们就达成了一项约定,在字条上写上to XXX,from

        一开始我在字条上写了好多,写了我看到的图案,还有我的猜测。写了很多字,比如,假设游戏需要我们找出所有的图案,我们应该怎么办;假设游戏需要我们找出一个特别的图案应该怎么办,假设游戏需要找到某个人手上一个特别的图案应该怎么办……

     而旁边kyo的组没多久就完成了游戏,相继还有许多组。我们这里还一筹莫展。

        我是颇为着急,写了个字条给张金,让她把所有手上的条子全部给我。因为我看她在那里一边分析着手上的情报,一边帮其他人传递,实在忙不过来了。dingdang也在那边沉思,不断的找张金要新的条子。我想这么下去也不是办法,索性一个人来做算了。

        当我对比了所有人的字条,艰难的从杂乱无章的各种信息中判断游戏的真实意图时,我发现每个人的图案都有一些共同点。如果这是有一道智力题,那么就应该是找出大家公有的部分了。但是老师不理会我的结果,直到dingdang最后也做出了判定,才结束了游戏。

        游戏的谜底原来是这样的,dingdang那张纸上除了五个图案外,还有详细的文字解说。明明白白的写着,找到五个人手***有的一个符号。

        老师向我们解释,其实这个游戏中每个角色都是有象征意义的。拿到dingdang那张纸的象征着老板,他知道目标;负责中转的人,张金那个角色,相当于管理人员,她负责跟员工沟通;剩下的三个人,就是公司的员工,他们负责实现目标。

        在游戏中,dingdang始终没有想到,别人其实都不知道游戏要干什么,他以为大家手上均有文字说明。认为只要通过张金,最后总能有一个人完成游戏。而我当时所想,就是大家和我一样,都只看到一堆莫名其妙的图案,我们的目的是猜测游戏目的。

        kyo那个组之所以完成的快,和kyo的第一张字条分不开。kyo明确的写道,我不知道我要做什么,我的纸上只画了这些……。并且他不厌其烦的把这段话copy了4份,转发给每个人。当“老板”得到这个消息后,再向“管理人员”要求把所有信息转到他那里,很顺利的就找出了***。

        这个游戏教会了我,让一个团队有一个明确的目标是多么的重要。由于信息不对等,每个人看到的东西都不一样,想的也不一样。我们在团队合作时,沟通胜过一切。说出你之所想你所知,了解他人之所想所知,道理很简单,做起来很难。

        由于《仙履奇缘》这个名字已经被人使用过,公司决定给新产品换个更响亮一点的名称。内部征集了很多意见,大家决定使用《梦幻西游》。

     《梦幻西游》这个项目比《大话西游二》更为稳健,策划有相当长的时间做调整。我依稀记得早期徐波在论坛上和玩家们的争执。哪些门派应该增强一些,哪些应该削弱一点。被逼急了,他也放过话,“谁说各个门派需要做成平衡的了?”。

游戏的各种玩法也是一样。徐波自己的角色慢慢练了上去,建立了服务器上第一个帮派。还不想让人知道帮主就是他,怕被人怀疑是***练出来的。我想设计人员能有机会耐心的把自己的游戏玩上一年,以一个普通玩家的身份去玩,各种细节自然就照顾的到了。大部分策划不是不想这么干,而是没有机会。有多少项目有如此长的测试期,在稳定的环境下,拥有这样多的玩家一同游戏呢。

        梦幻的美术部分也算是精益求精了。虽然有同行对他评价不算太高,但我觉得大家是尽了很多心力的。

        到后来,丁磊请了一个从中国美院退休的老教授来给美术人员上课,为美术质量把关。第一堂课我也去旁听了,讲的一些概论性质的东西。我以前没学过专业的美术,听起来自然是收益非浅。后来经常看见晚上会议室有在上课,原画稿也被更严格的审核。

程序方面更不用多说,前面已经讲的很多了。我和郭老搭档的非常愉快,基本上他不会提什么非常要求,因为他在提需求时已经仔细考虑过了。然后,我把需求都一一实现。大家也时常探讨一下接口的设计,不为眼前的问题做草率的决定。后期,为大话二写界面逻辑的许扬调过来做梦幻的界面逻辑。这次C++到python的接口比大话二时设计的对lua的接口要漂亮一些,工作进行很顺利。

        郭老自己也玩梦幻,做起来更来劲一些。后来,帮派地图,玩家家中的家具摆设这些玩法实现都花了很多心思去做。在梦幻运营之后,我们还更换过一次通讯加密的方案。研究了很久,只是觉得新方案更Cool一点,然后两个人很努力的干了几个月。

        起初有一个外挂花了很长时间研究(我们在client中下了些套子,一些不正常操作会被记录下来备案),最终发布了出来正式版本,打算准备收费。就在第二天,我们就更新了几乎全部的相关代码(其实之前已经做了很久了,时间上完全是巧合),狠狠的挫伤了为梦幻做外挂的人的信心。

        03年底,梦幻公测之前,我就脱离梦幻的一线开发了。这一年,随着网易股价的疯长,在福布斯中国富豪榜上,丁磊被排在了首位。他信心高涨,一心想把公司发展壮大。

年底,我们还是按往年的那样,从网上和广州本地的学校里选了几份简历,打算做个简单的招聘活动。突然dingdang被老丁的邮件批评了一顿。他说,郭斌打算新成立一个研发P2P产品的部门,都填了二十人以上的人员预算,你们若大一个游戏部怎么才要这么几个人?不行,得多招人。人才最宝贵,不能让别的公司抢了去。

        dingdang急匆匆的制定新的招聘计划,我隐隐有些担忧。这种担忧dingdang也有,人员扩张太快,会不会消化不良?但是在一片大好形势下,老板的殷切希望中,我们开始了新的招聘之旅。全国各大城市间做宣讲会,收集简历,做笔试面试。

记得那几天,每天都有成箱的简历运到公司,几乎所有程序员晚上都在看简历。我们八九个人围在会议室中,每个人分到半箱,一份份的读。把简历分为好中差三类。最好的一堆要求比较严格,按一个高标准,只要一个人认可就可以归去那类;差的一类底线非常的低,也是一个人认可就可以扔掉。中间类别的堆的最高。全部梳理完毕,接下来再如法重新轮换一圈,换人翻阅,从中选出较好的出来。

此时,ruiheng已经被大家公推升认技术部总监,而因micro已经正式离开公司,dingdang从原来的技术部总监升为游戏部总监。我和ruiheng两人一组开始奔波于全国各地做巡回招聘,同时还有别的组别分头去各地,有时我们也汇合在某一个大学较多的大城市。有丁老板的指示,游戏部的技术人员几乎全员出动了。相比前一年02年的招聘工作,完全不是一个阵势。

头一次没有什么经验,也没想过委托专业的招聘公司协办。记得03年底我和ruiheng第一站去浙江大学最为狼狈。事先完全没有和校方联系,就是网上的bbs上发了个消息。直到我们进了校园才跑过去找毕分办的老师借教室,名片还正巧用完,ruiheng拿着***去登记的(._.!)。然后我一个个的给学生打***,通知他们来笔试加面试。笔试题都是在飞机上现出的。广州很热,杭州很冷。我就穿了件衬衣,在小雨中的校园里冻了个半死。好在之前简历挑的很细,来面试的同学许多成了日后的同事。不过这次得罪了浙大的老师,等我们回到广州后,怪罪我们不跟他们事先联系就去招聘学生。为了陪罪,一个月后,大家又组织人马去浙大做了次规模盛大的宣讲会。

        接下来有些经验和准备了,事前都让公司和学校打好招呼,然后再过去先搞个宣讲活动。那些天那个累啊,每到一个学校先讲上一个多小时。然后发下头天编好的题目,开始笔试。晚上回酒店开始批改卷子,找到答卷中的亮点,并比对收来的简历研究。

因为丁的要求是多招人,我们的要求放的较低,这就更不好挑人(否则直接找出出类拔萃的就够了)。往往选出一大堆,第二天开始面试。面试从早上排到夜晚,基本上是没时间吃中饭的。为了保证质量,每场面试都是一对一做40分钟左右。全部面试结束后,还要出下一份笔试题(一份题目一直用下去显然是不合适的)。所以晚上只能睡上五六个小时。

     有些学生过来做完面试,一兴奋就拉上他的同学。通常这样的拉过来的人都不错,而我们又有多多益善的指示在先,加班加点是常有的事。记得那年在重庆站,就因为面试排的太多,我一个人改签机票多留了一天。

     这样高负荷工作,也找出不少优秀的人才。甚至一些是从别的公司口中抢出来的。现在大话三的client主程祥子,当时在成都读书。本来他已经拿了金山的offer,被同学介绍到我们面试现场看看。然后就让我“连蒙带骗”硬是说到网易来了。当时他说,他对破解很有兴趣,我就给他介绍ida pro,说怎么做效率比较高,如何分析别人游戏资源中的图片格式。还讨论他刚做的一些东西的细节,告诉他我的办公室电脑里还有自己写的很多好玩的程序。聊到兴奋处,祥子就决定把金山毒霸组给他的offer拒掉。我没有问他那份offer的薪水数值,只承诺了一个不高的数字。他说,不比那份高。

那一年,我们能许诺的待遇不高(以后几年也是如此),只能靠跟学生聊聊技术。让优秀的人觉得来我们这里工作会很有趣。曾经有几个学生,他们刚考完人工智能的考试,就来参加我们的面试。我就和他们聊刚刚考过的试题,说出我的解法,列举这些知识以后能怎样运用。让大家觉得,学到的东西是有用的,以后的工作中,还会有更多人一起来探讨这些。我始终觉得,这是吸纳人才最有效的方法。

        等招聘活动结束,我想自己也闲着没事,就搭了一个maillist,给每个签了offer的学生发email联系。一是想促进交流,避免再被别的公司挖走,二是想进一步了解每个人的实际水平,为日后进入公司组织工作做计划。

        当时做这件事很来劲,给大家出了题目布置下去做,列出书目供大家读。为每个人批改作业,写邮件交流。我觉得为团队培养新鲜血液,是促进整体发展的重中之重。

        03 04 05做了三年的招聘工作,感触很深。也面试了太多人。现在想想,在公司里和许多程序员关系很好,也来源于此呢。到04年许多新同事到公司报道,头几个月都是一到周末就领着大家到处玩耍吃喝,一个月吃饭买单的开销都是五六千,挺快活。

        《梦幻西游》在招聘的间隙公测,那是2003年12月中的事情。之前的内测反应相当的好,公测后在线人数也是节节上升。不少游戏制作圈子的老朋友都跟我说,梦幻西游挺好玩的。而以往,这些人都是单机游戏的玩家,对网络游戏不屑一顾。我想我们这次成功了。

        丁显然也是充满信心。有上次顶住玩家漫骂,把大话西游二从三毛提价到四毛的成功收费经验;这次他想把价格定在五毛一小时。在正式收费前,大家都没太多意见。毕竟没什么好说的,大话二有前车之鉴。反对的话也是找骂。

        但是在2004年1月正式收费那天,游戏的同时在线人数瞬间从10万以上跌到了3万以下。丁丁和徐波都坐不住了。我能理解他们的心情,测试期间的繁华到收费后的冷清,落差太大。

他们想降价。那天晚上我在公司,跟他们争论了很久。我是不主张立刻降价的,虽然一开始不赞成把价格定的过高。但既然定下来了,也不是坏事,我们不应该在第一天就否定掉这个决定。如果图一时之块把价格又降下来,可能日后会损失一大笔长期的收入。dingdang也是急促不安,他给步步高的阿段打了***,征询意见。最后犹豫了一天,终于拍板说降。

以我今天的观点,当时更应该做的是延长免费公测期,并同时开放点卡交易系统(收费后,点卡交易系统并没有立刻移植到梦幻中)。让游戏内的经济尽快达到一个平衡,然后再依原计划标准收费。在时间收费是唯一收费模式的游戏中,辅以点卡交易系统后,玩家群体的消费能力是由群体的支付能力决定的,而不是个体。如今的许多道具收费游戏,平均每个玩家的消费水平都要略高于梦幻。但梦幻却只有一个手段扩大收入——增加玩家群,而很难提高个体的平均消费水平。

        当然这是一家之言了,也说不定因为坚持五毛一小时的收费标准,梦幻就从此一蹶不振,谁又能说的清呢。

        无论怎样,《梦幻西游》一路凯歌走到了今天,成为了中国第一大MMORPG。你说它颓势尽显也好,无聊之极也罢。它的最高同时在线人数还是在前不久又创下了新记录:200万人。不能否认,这是款成功的产品。

        泡泡游戏的故事、大唐的故事、飞飞的故事、大话三的故事、天下二的故事……千百人经历过,正在经历。我想如果有缘,会有人接下去讲述。

        网易互动娱乐从04年开始极速壮大,不再是一个小小的团队。方方面面,我们多了更多的观察角度。每个人的眼睛里都看到了不同的东西。如果你也身在其中,也许你会喜欢上这些人,也许你突生反感,也许你因为和这样一些人一起工作而兴奋,也许你有许多无奈。

“天行健者,星斗齐惑”,97年下半年的飞行射击类游戏《天惑》也是整个年度的亮点。这部游戏的投入低得惊人,而逆火工作室在设备、资金等条件极其恶劣的情况下,耗时两年多做出这种品质的作品,更是难能可贵的。在当时即时战略充斥市场的时候,《天惑》选择飞行射击这一题材,正说明了他们的理智。《天惑》采取的640x480的16位彩色,多重卷轴,而且其画面绚丽,极具未来风格。

国庆突然想起这个经典的游戏,想和几个老朋友重温一下,可惜搜索了无数资源,都没能找到可下载的,谁有刻碟或硬盘上有的,麻烦共享一下,多谢。

参考资料

 

随机推荐