宇宙清洁工

网友评论0 来源: 1t1t作者: 玩家

  大家好!我是EVE 的数据库开发人员Prism X,为大家带来了本人的开发日志处女作。本人平时基本上都在幕后工作因此我不大写这类东西,但说不准日后也会再来一篇。随着CCP的壮大,越来越多有数据库经验的人加入到我们的行列,我的工作重心也随之转移到了其他有需要的地方。现在我就是要告诉大家在即将要推出的《重生V1.1》里的一项新功能:清除宇宙垃圾!

  如何实现

  这玩意儿的具体功能同我们要讨论的宇宙垃圾类型密切相关。

  普通垃圾

  下列物品被列为普通垃圾:无人机、无人机铁骑、穿梭机及新手船。普通垃圾会在每月头一天从太空里被清除(注意了,是永久删除哦)。不过由于此类普通垃圾出于物流原因在空中漂浮已久,所以我们对该规则有个例外处理。详情我们会在后面提到。

  可锚定的货柜

  可锚定的货柜从现在起有一个自最近使用后为期30天的生命期。这意味着一旦你锚定了一个箱子,那它便会有一个“距失效期还有:”属性。如果在服务器维护时间里该箱子的生命期只剩0天了,那它就会从宇宙中消失。无论是最近锚定还是最近打开,都算最近使用过了。这也就是说,只要你每月都去打理一下你的箱子那它就没事。但是如果你留下一个未锚定的箱子,那在下次服务器维护时间里它就会立即消失。当然,前面说的那个针对普通垃圾的例外同样也适用于可锚定的箱子。(详情请看后面)

  例子

  这里我们可以看到一个未锚地的巨型货柜和一个最近锚定的小型货柜。

  母星因素

  为了尽可能多地去除该功能给物流运作带来的负面影响,我们决定给母星加一个可以让你东西免遭清除的力场。这意外味着只要普通垃圾或可锚定货柜与母星相距甚小,它们就不会被清除掉。不管东西所有者是谁都这样。这样一种设定可以让常用的物品继续有用,潜藏的物品则必须进行照料,而废弃的东西便可以消失于宇宙中,多出来的资源为大家共享。

  为什么这样做

  自从宣布了我们的Need For Speed(NFS)计划后,我们就一直在不停地对我们的源代码进行清理。但这不只针对老功能。当我们编写新功能时,我们也有意识地对代码进行简化。这一简化思想同时也被应用到了游戏功能设计中。本文就是一个例子。我们清楚地意识到宇宙中存有那些似乎永远仍不掉的垃圾。当然我不是指铁骑无人机,但谁不记得高安全星系中那些锚定的箱子?对啦,就是那个上面写着“Prism X 的箱子有奶酪堡!!…给点ISK!”或其他差不多搞笑的东西。很讨厌是吧?

  这些东西其实不只讨厌。我不想对这扯太多(虽然我知道你们当中有些人希望我这样做)。我想大家都知道,当你进入一个星系时,你会从其所在的服务器节点上预先载入所有与其相关的(非敏感)信息。因为这是查询频率相当高的信息,所以服务器节点便会所有这些信息进行高速缓存—根据信息种类,可以是预先缓存或按需缓存。这样一来就无需为了同一信息而对活数据库进行反复查询。

  假设你现在跳入一个星系,在切换场景时,一切所需信息都从SOL节点上的不同缓存中传输到你这里。由于活数据库里的某些缓存可能变为无效或为了容纳新的、更常用的项目而被清空,这一过程中可能也会对那些缓存进行刷新。现在,一切都安然无恙因为你是这个过于简化的例子中唯一的活动实体,而且每个星系都有独享一个节点。(顺便说一下,在这个例子中,高速缓存的作用与其说是为了“预先载入”,还不如说是为了“重新载入”。)

  现在,如果我们回到现实看看事情的实际情况,接受所谓“资源限制”这类让人不爽的东西,你就会发现事情就不大一样了。现在有30万左右的玩家不断地在星系(服务器节点)之间移来移去,每一跳都要求获取新的星系信息。由于资源有限,我们把很多星系都放在了一个SOL节点上,所有的各类缓存服务都只配备有限的容量大小。越来越多的玩家从大数据集里获取信息致使缓存失效更频繁(不是所有的缓存,但因资源限制,那些重要性较低的任务上的缓存必须变为失效)。

  现在让我们设想如果SOL节点上的一个星系里含有大于箱子缓存容量的箱子信息(注:这里又是一个简化了的假设。实际上你不可能对一切东西都进行缓存因此这适用于更复杂的情况)。这意味着每次有人跳入那个星系时,节点上其他星系里的每个货柜缓存信息都会失效以便腾出新空间来让新信息使用。另外该星系无法一次性缓存所有的信息,这样根据缓存的实际运作方式,可能意味着一大堆冗余的输入输出操作。

  现在设想一下所有的箱子都属于一个健忘的家伙,它们导致你的场景切换时间变长,频繁查询我们的数据库,越来越多的数据经过电线等等。毫无意义可言,因为没人使用这些箱子!简而言之,这就是我们的NFS计划。实现了这个变动后,我们实际上就是改进了箱子缓存的使用效率,而不是其大小。当然增大缓存也是可能的,但缓存增大的效果是与其效率成正比的。

  所以:宇宙垃圾必须去死!

  什么时候开始弄这个

  我前面已经提到我们会在《重生V1.1》里实现这功能。

  将来我们可能还要对可锚定箱子的失效时间做修改。根据我们获得的速度提升,可能我们会频繁地清理这些垃圾。也许我们还会征收锚定月缴费。这些都还未定。不过有一件事是铁定下来了:宇宙垃圾必须去死!

>>>更多 《EVE星战前夜》攻略
发 表 留 言
我要留名