【开发日志】合同的改进
日期:在Incursion 1.1版本中,我们对日渐老化的合同系统做了大量改进。该系统可以改进的地方有很多,这几年来我们从玩家那儿得到了大量有关合同搜索功能的改进建议。 后台工作 之所以我们现在才开始改进工作,主要是由于后台的性能问题。目前合同的搜索是在数据库层面进行的,而合同的管理(比如查看合同)则是在合同创建时所在的服务器节点上进行的。 这样做的理由在于,它是一种非常自然的负载均衡方式,并...
在Incursion 1.1版本中,我们对日渐老化的合同系统做了大量改进。该系统可以改进的地方有很多,这几年来我们从玩家那儿得到了大量有关合同搜索功能的改进建议。
后台工作
之所以我们现在才开始改进工作,主要是由于后台的性能问题。目前合同的搜索是在数据库层面进行的,而合同的管理(比如查看合同)则是在合同创建时所在的服务器节点上进行的。
这样做的理由在于,它是一种非常自然的负载均衡方式,并且利用了数据库的专长。可惜实际情况却不是这样,因为目前大多数合同都集中在吉他星系,多数合同搜索请求也都从那儿发起。所以实际情况就是大多数合同的搜索与查看都在一个已经十分繁忙的节点上进行,谁让大家都喜欢去吉他消费呢?
正是这个原因,再加上搜索合同对数据库产生的巨大资源消耗,迫使我们重新审视我们的合同系统。结果就是我们对合同系统后台的架构进行了重新设计,将搜索任务从数据库移到一个专门的合同节点上。此外,所有的合同也都被放在了那个节点(而不是90%都放在吉他节点上)。
采用这个新系统后,除了放入或拿出合同物品的步骤之外,你所处星系的节点将不会与合同扯上任何关系。这样星系节点就得到了解放,在吉他那样的地方,查看合同的速度会加快很多,即使是在异常繁忙的星系,合同的搜索速度也会相应加快。
在人物节点上,我们也在做类似的优化工作,将人物节点的负载均衡工作转移到专门的服务器集群中去,这样星系节点的负担就轻一点。
优化之后,我们新增了很多原有结构不支持的功能。每当你对服务器做优化的时候,只要能在减轻其负担的同时又新增了其他功能,那它就是一项有价值的优化工作。
现在让我来为大家详细介绍一下新功能吧。
新的合同搜索功能
新的合同搜索功能尚处于实验阶段,我们会花数月时间去不断调试完善它。在此期间,现有的合同搜索功能依旧可用,同时我们欢迎大家去论坛向我们提出针对这一实验功能的意见。我想,几个补丁过后,我们就可以让这个新搜索功能正式取代现有的搜索功能了。但是我们向大家保证,即使是实验性的搜索功能,它也是完全可用的,所以还是希望大家能尽量尝试这一新搜索功能。
合同搜索与控制边栏是首批被实验的功能。这是我们最近在尝试的一种新的应用方式:就是先在小范围内使用新功能,然后再进一步扩大新功能的应用范围。希望你们能喜欢这种做法,然后尽可能多的给我们反馈。
需要提醒大家的是,这毕竟是一项实验功能,因此或多或少会存在一点问题。如果出现大问题,我们可能会在不提醒大家的情况下关闭这一功能。
如果你不想读下去了,那现在就去测试服务器上试试新功能吧。如果你还想听点什么,那我再进一步细述合同搜索的新功能。
打开了新的合同系统之后,你应该看到如下的标签窗口:
哇,看起来有不少新玩意儿。现在,让我一一道来吧!
服务器端进行的排序
目前合同系统的最大问题之一就是,整个合同列表都是按照创建时间的先后排列的,而你只能在含有100项的分页上进行其他排序。这样一来,搜索变得非常困难,因为你的搜索范围可能是数千份合同。除非你能很好地缩小搜索范围,否则这样搜索是件非常麻烦的事。
好在新设计能够让我们改变这一状况。现在搜索操作都由服务器来负责,服务器将对整个结果进行排序,然后再将结果传给客户端。这样,你就可以按照下列标准对合同进行排序了:
1、 创建日期
2、剩余时间
3、价格(拍卖与物品交换)
4、奖励(快递)
5、押金(快递)
6、体积(快递)
但比较遗憾的一点,就是我们无法让你按距离排序,因为这牵涉到具体用户的路径寻找,而这一操作是服务器负担不起的。但是,在每个分页上,你还是可以进行距离排序。
新的合同搜索将返回最多1000份合同,总共10个分页。它们的排序是针对全体合同而言的,因此不会出现隐形排序。
列表中有了更多的信息
目前的搜索功能并没有在其结果中提供很多的内容。这是因为我们当初想让大家比较容易地立即找到各种不同类型的合同,因此搜索结果必须比较粗略,比较宽泛,所以实用性就打了折扣。例如,下图显示了搜索快递合同的一个结果:
大家可以看到我们在新的搜索窗口中做了改动,突出“每次只搜一种合同”这样一种概念(当然大家还是可以继续同时搜拍卖与物品交换合同,只不过在搜索结果中,信息量较少)。这样我们就能提供针对某一类型合同的搜索结果,然后添加相应的选项栏,供玩家进行排序。
从这个快递合同搜索的结果来看,你可以按目的地、体积、路线长度等指标来对它们进行排序。如果你搜索拍卖合同,那相应的选项栏也会有所不同,与合同的类型相对应。
可能你已经注意到,如果合同不在你所处的星域,那结果中还会包含星域名称以及终点星系的安全等级。除此之外,你还能从结果中知道你目前的自动导航设置是否能带你到目的地。
地点搜索选项
地点选项有很多。你可以像以前一样,选自己在的空间站、星系或星域,同时,你还可以选星座,或者其他的星系、星座或星域。你可以因此进行多样化的搜索,比如你在某处找到了你感兴趣的装备,现在你可以搜索该装备所在的星座来看看附近是否有其他你感兴趣的物品。
寻找相关合同
现在你可以在合同搜索结果中以及合同详情窗口上的合同菜单中使用“寻找相关合同”功能。通过它,你可以搜寻来自同一发布者、同一星系/星座/星域的合同,另外如果是快递合同的话,还能搜索运往同一星系/星座/星域的合同。
这是个简单但又非常有用的功能。例如,你可以利用它迅速获得所有运往某一地区的合同信息。
对于含有一个物品的拍卖与物品交换合同,你可以利用该功能寻找同一类型、组别或种类的物品。
快递合同搜索选项
现在搜索快递合同的时候,你可以指定其范围、报酬、押金或者体积。另外你也可以像以前一样,指定星系、星座或星域之类的合同目的地。
页面过滤器
在服务器上实现这一功能非常慢,但在客户端上这类功能跑起来非常快。通过页面过滤器,你可以筛选每页结果。使用过滤器之后,每页上显示的合同也会相应减少。
你可以设置的筛选条件有:
1、排除无法到达的地点
2、 排除已忽略的合同发布者
3、 最大跳跃距离
4、 最大路径长度(仅针对快递合同)
部分类型搜索
对于一直使用合同系统的人来说,每次只能搜一个类型物品的合同是件让人火大的事。现在,新的合同系统能让我们改变这点。
你可以在“类型”框里输入部分名称,搜索结果将返回所有含有那部分名称的合同。另外你还可以指定种类或组别来进一步细化你的搜索。最后,你可以将物品直接拽入“类型”框来搜索包含这类物品的合同,也可以很方便地将人物名称从“人物和地点”界面或聊天窗口中拽入“发布者”框进行搜索。
将垃圾信息过滤掉
你可以在搜索中过滤掉含有多件物品、求购或者交换类型的合同,也可以过滤掉那些无法到达的星系和空间站,这样整个搜索结果看起来就能清爽些。
界面仍在制作中
新合同搜索系统的界面还在不断修改之中。接下来的几周时间里,CCP Karkur 将会继续完善合同界面。如果你有什么好点子,只管说出来!
但……新系统只适用于公共合同
新的合同搜索系统无法搜索私人合同,只能搜索公共合同。
之所以这样,是因为真正指派到每个联盟、军团或个人头上的合同并不多,因此对新功能的需求也不是那么紧迫。另外,可搜索合同的缓存对服务器资源占用较大,且私人合同总量也并非小数目,我们最终决定私人合同的搜索依旧采用老系统。
如果你觉得私人合同也有必要运用新系统,那就请告诉我们,毕竟现在我们还不觉得有任何理由需要这样做。
大量新功能
除了新的搜索功能之外,我们还新增了一些合同方面的新功能以及对其可用性的改善,其中大多数都来自于玩家和星际管理委员会(CSM)的意见。在这里我要感谢大家。
复制合同
现在你可以利用合同详情上的这一右键菜单来“复制”合同,它会弹出一个参数都已预先填满的“创建合同”向导窗口。这在你想创建多份相同合同的情况下尤其有用,能大大降低你的鼠标点击次数。
已投保的舰船
快递合同中,已投保的舰船的保险将不再失效,这样才更符合常理。
通知
当你登录游戏后,如果有指派给你的合同,你将会收到通知,并且可以非常容易地找到相关合同。另外,需要你注意的合同也会以类似的方式高亮显示,这样你一旦登录便能对合同情况一目了然。
合同通知系统运行的机制,与技能训练完成通知的机制一样。
物品体积
在“创建合同”向导的“选择物品”这一步,我们新增了“体积”一栏。此外,创建快递合同的时候,所有选中物品的体积将显示一个总和,这将有助于你更加容易地创建这类合同。
损坏的物品
损坏物品今后可以被放入任意一种合同,损坏的物品会在合同详情窗口中显示说明。这适用于所有的物品与合同。大伙儿不必再为含有二级科技晶体的合同烦恼了。
星系信息
现在,你会看到合同所在星系的更多信息,这样你就能明白前往那儿是否安全。
合同详情会显示目的地星系的安全等级,同时也会显示经过星系的安全等级。你还能看到某个空间站是否归玩家所有(如果是的话,你或许就进不了那个站)或者你目前的自动导航设定能否将你带往目的地。
查找塑料包裹对应的合同
对于查询塑料包裹对应的合同,我们在其右键菜单上新增了“查找合同”这一选项。点击它,你就可以看到该包裹所属的合同了。
在合同中搜索
现在你可以右键点击任何类型的物品,然后选择“在合同中搜索”来查看包含该类型物品的公共合同。
已装填的弹药
当你将一艘武器上装有弹药的舰船放入合同时,那些弹药将被自动卸载到舰船货柜舱中,而不再是机库里。我想很多人都会为此欢呼雀跃的。
已装配的装备
包含舰船的合同将在每个装配在其上的装备旁显示一个“已装配”标志。由于改装件装配好后就无法再拆下(除非毁掉),因此这一功能对于查看合同中的舰船是否插了改装件特别有用。
其他改进
1、对于只有一个条目的搜索结果,我们添加了“显示信息”右键菜单选项。
2、简化了“创建合同”向导。
3、物品交换合同现在有了不同的图标。它们将采用“自由合同”之前使用的图标。
4、如果合同目的地是个你无法进入的玩家拥有空间站,那系统会通知你这一点。
5、合同中,物品的衍生等级信息将正确显示。
6、现在你可以在合同详情窗口中预览物品。
7、提升了合同的打开速度,不会再有较长的等待时间。
8、其他一些小改进。
不远的将来
在不远的将来,我们还打算添加其他功能,比如保存搜索条件(快速搜索),添加合同书签,合同API及一些使用上的改善。我们希望能在接下来数月时间里完成这些功能。
如果你有任何意见或建议,欢迎在官网论坛上提出。我们期待你的反馈。