3DM游戏网|《魔兽世界》工程师座谈:重现安其拉战争捐献 为游戏体验保驾护航( 二 )
接下来 , 我们需要分析影响服务器性能的因素 , 这样就能将一个艰巨的任务拆分为可以理解的目标了 。 我们面对的是一个多项式问题 , 仅凭运算速度更快的硬件是无法解决的 , 因为硬件的性能无法实现指数级提升 。 相反 , 我们必须定制优化 , 精心选择需要传送给玩家的数据和传输频率 。 为了让这个难题更容易理解 , 我们假设有20个玩家排成一圈 , 不停地跳跃着 。 服务器会通过数据包(可传输数据) , 将每个玩家的行为发送给另外19个玩家 。 在这20个人之间 , 服务器需要处理380个数据包(20个玩家x 19个接收者= 380个数据包) 。 在该区域中进行相同行为的玩家越多 , 这个问题就会越显著 。 如果有500个玩家 , 服务器就要发送249500个数据包 。 如果有1500个玩家 , 服务器就要发送2248500个数据包 。 取决于玩家的行为 , 每秒还可能发送多个数据包——别忘了 , 我们刚才的例子中 , 所有人的行为是一样的 。 服务器收到了更多的数据包 , 也需要为单个玩家花费更长时间 , 随后才能去处理其他玩家的行为 。 随着这个问题不断加剧 , 服务器也逐渐濒临死锁 。 在《魔兽世界》经典怀旧服中 , 每个服务器中的玩家数量远远超过2006年 , 甲虫之门附近预计接待的玩家数量也远超往日 。
优化服务器性能
我们的服务器在发生死锁时会自动崩溃并重启 , 所以我们必须尽力缩短处理时间 。 在进行了一番测试后 , 我们发现“移动”对服务器产生的压力最大 。 我们首先停用了方向信息更新(显示出玩家角色面朝的方向) , 并且只在玩家开始、停止或使用键盘移动时更新信息 。 因为当玩家人数过多时 , 延迟已经相当严重了 , 如果继续使用CPU时间来发送微乎其微的方向信息更新 , 情况只会雪上加霜 , 所以还不如停止发送 。 我们决定降低发送移动信息更新的频率 , 以便在区域中容纳更多玩家 。 别忘记 , 我们的目标是找到服务器崩溃前的节点 , 同时在希利苏斯容纳尽可能多的玩家 。 毕竟 , 就算有时候移动信息无法更新 , 也总比角色完全无法登录好 。 我们还限制了优先级较低的数据传输 。 如果你的行为“不那么重要” , 其发送频率就会低于“更重要”的行为 。 我们发现有许多讯息会被同时发送 , 而其重要性并没有得到区分 。 因此我们优化了代码 , 以较低的频次批量发送“不那么重要”的信息 。
另一个严重拖累性能的因素是增减益效果 。 在整个世界中 , 尤其是和敌人交战的时候 , 增减益效果会同时作用于所有单位 。 这看起来没什么大不了的 , 但如果一大堆玩家聚集在一起 , 这类信息就必须发送给每一个玩家 。 我们采用了与低优先级数据类似的限流方法 , 将增减益效果批量发送 , 以避免连续向玩家发送多个数据包 。
本文插图
管理玩家人数
除了优化服务器、让每个区域能容纳更多玩家之外 , 我们也意识到 , 希利苏斯不可能容纳整个服务器的玩家(比《魔兽世界》1.12服务器的玩家数量翻倍还不止) 。 我们做出了一个艰难的决定:控制能够进入该地区的玩家和人数 , 限制玩家前往该地区 。 我们决定只让60级的玩家进入希利苏斯 , 并且人满为患时拒绝更多玩家进入 。 设立这个限制是一个明智的决定 , 因为希利苏斯是游戏的终局内容 , 低级角色可以在其他区域中参加战争 , 例如20级至30级的玩家可以在贫瘠之地挑战游荡的阿努比萨斯 。 第二个关键点是 , 我们已经知道了服务器崩溃前可以在该地区承载的最大人数 , 那么将人数控制在多少才能获得最好的“性能与玩家比”呢 。 我们在测试中发现 , 如果玩家们叠在一起的话 , 这个数字大约是1500人 。 但由于战争事件遍布整个地区 , 所以当玩家们分散开之后 , 基本不会产生什么性能问题 。
这个事件应该涉及所有区域 , 所以它必须能够在多个分层中同时开始 。 这意味着流沙节杖的持有者在某个分层中敲响甲虫之锣后 , 该服务器的所有分层都应该开启这个事件 。 因为事件的触发取决于玩家互动 , 我们需要确保节杖持有者能出现多个分层中 , 让这个服务器的所有玩家都能看见这位英雄 。 这就产生了一个有趣的问题 。 服务器现在需要传输这些平时无需传输的信息 。 我们需要在服务器中汇集并发送信息 , 确保这个数据能够在多个分层、甚至数千个分层中体现出来 。 这无疑会导致许多复杂问题 。
推荐阅读
- 魔兽|魔兽世界:燃烧军团洗白在即?暴雪埋下二十年伏笔,伊瑟拉也是反派
- 魔兽世界|《魔兽世界官方食谱》现已隆重推出
- 网络游戏|魔兽世界怀旧服提升伤害的三大核心要素,装备只能排末尾!
- 魔兽世界怀旧服TAQ软泥怪技能BOSS难点说明 软泥怪击杀方法攻略|魔兽世界怀旧服TAQ软泥怪技能BOSS难点说明,软泥怪击杀方法攻略
- 178游戏网|明日方舟:5w5饼终于解锁了全收藏品
- 3DM游戏网|手绘漫画风格FPS《堕落王牌》上架Steam
- 魔兽世界|魔兽世界怀旧服平民盗贼的选择,和“初恋情人”一样!
- 魔兽世界|魔兽世界:P5阶段安其拉神殿,竟然缺少法师?只是团队要求苛刻
- 横店小鹿玩游戏|星魂 泰坦 虚空,魔兽世界:你不知道的宇宙
- 3DMGAME|《孤岛危机:复刻版》PC版4K最高画质截图
