清洁工走向宇宙
Posted on February 15, 2008

嗨,大家好!我是Prism X,EVE的数据库开发师,今天带给大家我的第一篇Dev Blog。通常我不写这玩意儿的,因为我喜欢低调,不过谁知道呢,或许哪一天我会再写一篇。嬉戏皮越搞越大,有经验的数据库开发员也越来越多,我有时候就换班干些别的差事了。现在,我就在做这项工作,郑重宣布重生1.1版的一个新特性:我们要开始清理太空垃圾了!

如何做

不同的垃圾有不同的清理方式。

普通垃圾 普通垃圾定义为如下物品:无人机,铁骑无人机,穿梭机和新手船。每月的第一天,普通垃圾将被从太空移除(注意:永久删除)。不过,这些个垃圾有时候会因为后勤的原因,被故意的留在太空中,考虑到这种情况,上述的规则会有一个例外,见下文。

可定锚货柜 修改后,可定锚货柜从最后一次使用算起,会有一个30天的寿命。这意味着一旦你定锚一个货柜,它就会得到“XXX天后过期”的属性。当属性变成0天的时候,这个货柜就会被移除。“最后一次定锚”或者“最后一次打开”都算作是最后一次使用。所以说,只要你每个月花点时间照顾一下你的货柜,它就是安全的。当然了,如果你连锚都不定,就别指望它能活过下一次维护的时间了。和普通垃圾一样,这里的规则也有个例外,见下文。

母星因素 为了最大程度的避免此次修改对军事后勤造成影响,我们决定赋予母星一个保护力场,以阻止所有的费多,清洁工和不管其他什么东西不小心把您的箱子弄没了。这意味着只要你把普通垃圾或者可定锚货柜放在母星的附近,那它们就不会被清理掉。不管这东西是谁放的,母星都有保护效果,不过我相信你不会愚蠢到把流浪的原图放进箱子然后丢到浩劫的某个POS附近吧?什么你就是浩劫的后勤人员?好吧当我没说… 那么,这样改进以后,游戏中经常被使用的在太空保存物品的方法依然有效,而被遗弃的垃圾将被清除,天才的双赢!

为什么要这样做

从宣布我们的Need For Speed计划开始,我们就一刻不停的,绞尽脑汁的优化程序代码。当然了,仅仅重写旧的程序还不够,在引入新代码的同时,我们还需要全新的框架。对于那些顽固的太空垃圾我们都深有感触。就算你没碰巧遇到过没人要的铁骑(有这种好事?)难道你不记得吉他那些垃圾箱子了?“XXX军团招人了,新人送YYY启动资金”或者些类似的写着字的箱子。难道你不觉得这些东西很恼人吗?

事实上,这还不仅仅是恼人的问题。我不想说的太深奥(我知道这里有数据党),不过有些常识大家应该都很清楚,比如:在进入一个星系的时候,你的机器会从节点服务器预读取本星系所需的所有(非敏感)信息。鉴于某些信息需要经常使用,程序会用预读取或实时读取的方式缓存这些数据,以避免浪费时间的从动态数据库重复读取。

于是你跳进了某个星系,在“切换场景”的时候,所有需要的数据被从SOL节点传送到你的电脑。这其中包含了刷新某些无效的或者被其他更常被使用的新数据覆盖的部分。在这个过分简化的模型中,一切都很快,因为整个星系只有你一个活人。

好,我们回到现实,考虑到真实的尺度以及胱通的服务器质量,情况就大大地不同了。有将近3万的玩家(好吧,国服是3000)不停的在星系间跳来跳去,每人每跳一次,节点服务器就会产生一组新的星系信息,而你仅仅是这么多玩家中的一个。由于资源有限,有可能多个星系共享同一个服务器,那么能够使用的缓存就是有限的。因为大量玩家不停的需求信息数据,它们就更经常性的变得无效而需要被更新。

很好,让我们看看如果一组服务器中的仅仅是一个星系的箱子太多了,会发生什么。不论什么时候,只要是某个玩家进入了这个星系,那么所有这个服务器所在星系的所有箱子数据都变得无效了,因为要给这个星系的数据腾出空间。而且,这个缓存的动作不能一步完成,不论是什么先进的缓存算法,这都将意味着大量的无意义的存取时间和空间。

非常好,当你意识到这些可恶的“箱子”仅仅是某个人遗忘在太空中的垃圾的时候,是不是有用1400镓金属将这个可恶的家伙从吉他轰到利顿的冲动?没错,就是他,让我们的“切换场景”变得如此漫长,让我们的网速变得这么卡,让我们的电脑看上去像拖拉机一样。对,就是他,还有他的垃圾箱子!不过有了NFS技术,情况就很不同了,我们增加了缓存的效率,而不是仅仅增加缓存的容量,当然容量的增加也是有的嘛。

所以:垃圾都给我死远!

什么时候改

我之前说过了,重生1.1,慢慢等吧。

今后,我们或许会修改箱子过期的时间,然后我们也许会不到一个月就清理一次垃圾。现在任何事都还没确定,然而不管如何,垃圾必须消亡!

原文:The Dustmen Take to Space! 清洁工走向宇宙 翻译 by me