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 几乎是最后唯一的选择。dingdang 看中的是他们宣称的网络模块的优秀性能。这是一种动态负载均衡的技术。
bigworld 和别的网络游戏不同,它并不是把地图切分成一个个独立部分分担到独立的进程中去管理。这样比较来讲,bigworld 是以人群而不是以地图区域来分担负载的。举个例子,如果有一大堆人拥挤在一起,那么他们就由一台服务器为它们服务。当这个人群群体向一个方向移动时,那么为他们服务的服务器也会跟着在虚拟场景中移动。只到有人从里面分流出来,在资源允许的情况下,分流出来的人会进入一个新的服务器。
听起来很神奇,bigworld 理论上可以支撑无限大(其实还是有限的,只是比常规做法大几个数量级)的游戏世界。世界间的每个区域都是无缝连接的。因为服务器本就不是按区域划分的,那就谈不到缝了。
我们拿到了部分代码,服务器真正核心的那部分(负载均衡)他们不愿意卖给我们,只是提供了二进制文件。dingdang 读过入手的一些程序,据说代码质量很高。反复衡量后,决定购买这套引擎。我说,其实没有什么东西是绝对神秘的,让我试试,可能可以还原被隐去的代码。
如果允许我接触已经购买的代码,需要签下一份保密协议。这样,我就签了,和许多正式转入 3d 组的程序员一起签的。kyo 也在那时脱离了大话二的开发,进入这个小组。
bigworld 的服务器是用 C++ 编写的,跑在 linux 上。当时只支持 red hat ,而我们公司用较多的是 freebsd 。部分源码缺失,使得移植很困难。我拿到 C++ 的头文件和那些 .o 文件后,发现做个简单的逆向工程,甚至可以把大部分缺失的代码还原出来。隐藏的源码的那部分其实和开放源码的部分耦合度很高,设计上根本不应该拆分开。它们中间有着千丝万缕的联系。部分内部数据结构虽然表面看不到,但是到后来我基本都推测出来了。
由于 bigworld 大量用了多重继承,早期分析还是挺麻烦的。读这些汇编,让我对 C++ 编译器生成出来的复杂的数据结构有了几分认识。几个月后,对于各种形式的 C++ 程序最终编译出来的汇编形式,以及对象的内存布局,我几乎都能立刻在脑海里做出条件反射般的印象了。对着这些汇编码,新写下的 C++ 程序重新编译后,可以做到和无源码的 .o 文件,逐字节一致。
这个工作其实只做了一半,后来公司花了极大价钱买下了全部的代码。只是那个时候我已退出天下组,没有权限去看那些东西了。
从 bigworld 的源代码中我倒没学到什么新鲜东西。那段时间只是把逆向工程当成一件有挑战的趣事在做。做的过于细节,反而无法高屋建瓴的来看 bigworld 的整体设计。额外的收益就是实践了一把 C++ 的对象模型,我想当时的公司里不会有比我对 C++ 语言 更熟悉的人了。
年底,由 dingdang 带队,kyo 我还有老王三个程序,月猫和陈由金两个美术,六个人出发去悉尼接受 bigworld 开发公司给我们做的短期培训,学习 bigworld 的用法。
此行让我感触比较深的是老外程序员的敬业。他们工作很正规,一天八小时都在那写程序,如果没有特别的事情,不会像我们那样在办公室里穿来串去。下了班就准时回家,上班就工作。可以说,一个工作日就是一个,不象我们公司,程序员们相对懒散,除了短期的兴奋期,每天集中精力能写程序的时间远不到八小时。想来这也不是网易一家如此,我见过的许多国内公司都有此问题。所以在澳洲看到的情景给我不小触动。
另外他们的电脑,大多数人都装的 linux ,运行 windows 的机器上没有任何盗版软件。一个个把画笔和记事本用的相当娴熟,因为只有这些是不用额外掏钱买的。
回到 bigworld 的话题上,我学到并欣赏的一点是:他们嵌入的 python ,使用起来非常方便。client 和 server 之间完全屏蔽了网络这个东西。server 的各个进程之间也感觉不到跨进程通讯的存在。这应该算是一个设计非常良好的引擎了。给予了我后来几年独立开发的东西许多灵感。只是隐藏了太多细节,也出现了很多局限性。从我的感觉上,引擎是为特定游戏类型去设计的(或许他们最早想做一个 MMOFPS?),离我们心目中 MMORPG 的需求有一
[ 关键词:
团队 原文/来源链接 ]