做个几万人一起玩的《荒野大镖客》有可能吗?

更新日期:2022年05月31日

       典型的C/S架构交互为了保证用户规模足够大, 传统的MMORPG在保真度上做出了很多牺牲。所谓保真度, 可以简单理解为游戏的细节程度, 包括物理模拟, 比如撞墙后的反作用力, 或者像《半条命2》那样拿起手中的罐子;它还包括延迟和同步, 例如动作游戏和FPS游戏, 对服务器帧率有非常高的要求。按照天桑的解释, 传统的C/S客户端不做模拟, 或者说是比较轻量级的模拟。他们以相对较低的频率将这些状态发送到服务器, 这对服务器的负载要求较低, 因此他们可以让更多的玩家同时在线。 《黑色沙漠》在MMORPG中的保真度不错, 但相比单人游戏, 还是比单人游戏差了一点。我们甚至可以从单人游戏和MMO的渲染逻辑上看出来。单人游戏的图形将尽可能从 GPU 加载, 理想情况下不访问硬盘和主内存。超级马里奥兄弟每个关卡中的方块和怪物都固定在一个固定的位置。角色、敌人和场景在游戏开始时被渲染和读取, 然后放置在 GPU 内存中。在MMO中​​, 引入了更多其他玩家的变量, 他们的技能、位置、位置的组合数不胜数。提前确定要渲染什么基本上是不可能的。因此, 纹理等数据只能从主存和硬盘中动态读取。客户端和服务器之间的交互只决定了玩家的位置。在保持帧率的前提下, 稍微看一下画面, 体验肯定会更差。突然出现这么多人, 在线多人游戏的画面难以预料。事实上, 以牺牲保真度为代价, 保证用户规模足够大, 尽可能降低服务器负载, C/S架构还是需要编写极其复​​杂的后端。从《魔兽世界》的处理方式上, 不难看出当年暴雪工程师的天赋有多高。最常用的方法是空间分割法, 即将游戏中的地理(地图)进行划分, 并一一分配到不同的服务器进程或设备上。空间分割法的一个变种是空间复制法, 即将世界复制成多份, 每份单独放在一个服务器上;并且为了解决因寻宝和挑战高难度怪物而导致玩家大量聚集的问题, 他们还开发了一个示例方法。 , 以单一副本的形式为每一波玩家提供极其有限的区域。因此, 在田桑眼里, C/S类MMORPG有着非常高的技术门槛:抛开市场偏好。 MMORPG的技术门槛高于DS。我个人认为UE的DS是一款非常不错的产品, 比如《方舟:生存进化》等很多工作室, 不需要太多后端积累就可以把游戏制作到那种规模。这里提到的DS(Dedicated Server, 专用服务器)不仅是很多主流在线多人游戏都在使用的技术, 而且它也恰好能够回答为什么会有100个“吃鸡”玩家。(当然DS和C/S不是同一个概念)。为什么一个游戏必须有 100 名玩家?首先你要声明一下, 100名玩家只是一个数量级, 并不是一个必须注意的数字。简单地说, DS 可以比作房间系统。比如《绝地求生》、《堡垒之夜》、《战地5》和《我的世界》, 一个服务器(独立主机)对应一个房间, 然后这个房间大概能容纳两位数到三位数的玩家。目前市面上的主流游戏引擎如Unreal、Unity等都提供在线多人游戏的DS解决方案。这是一种可以最大限度地提高网络游戏保真度的架构。其最早的目的是解决FPS的同步问题, 追求高精度和低延迟, 涵盖客户端预测、服务器验证、延迟补偿等多种技术。 《GTA5》的战况也是DS天梭虚幻引擎。举个例子:DS结构下, 把引擎带到服务端运行, 剥离客户端渲染相关部分, 运行物理、AI等纯逻辑。 .因为服务器可以运行物理计算, 所以在线游戏可以实现物理同步, 可以实现非常逼真的游戏体验。在虚幻引擎的DS下, 服务器承担计算碰撞同步的任务, 比如判断武器是否命中, 环境爆炸产生的碎片轨迹等。而且角色的AI行为树同步也依赖DS, 所以服务器会频繁处理状态, 负载很重。这就导致了DS架构虽然有支持高保真游戏的优势, 但也有支持高保真游戏的优势。它也有高消耗和低负载的缺点。一个典型的例子是 Halo 5 的 Warzone 模式。该模式采用DS架构, 支持的玩家数量为24个, 并且对AI、载体和目标的数量有相应的限制, 原因是为了保证不超过服务器的容量。开发团队为此简化了 AI 逻辑, 因此战区中的 NPC 会显得比战役中更笨。如果继续C/S架构下的扩容思路, 玩家可能会觉得一台服务器负载太高。
       增加几台服务器还不够吗?但是, DS架构在这一点上仍然受限于游戏引擎:虚幻引擎的主要逻辑是单线程运行。如果将服务器的主频性能从16核改为32核, 实际上无法增加可加载人数。而且即使从一台机器增加到两台机器, 可以容纳的玩家数量也不会改变, 因为存在技术架构限制。至于增加核心数是否有用, 就看引擎本身是否支持多线程扩展了。 Epic为了支持Fortnite的100人已经绞尽脑汁, 对虚幻引擎做了很多优化。比如在跳伞降落过程中, 主动降低远程通话所需的带宽;另一个例子是限制客户端向服务器发送移动更新的频率, 以避免由于客户端的高帧率导致服务器负载过大。 Epic曾经提到一个观点, 一个公司既然要做大型MMO, 就必须有自己独特的需求和后端解决方案。不适合像葫芦一样抄他们的DS。虚幻本身研究扩展可能相对没用, 鼓励开发者基于这项技术寻找自己的解决方案。主要逻辑是 Unity 在单线程上运行。事实上, 它或多或少与虚幻引擎相同。有没有可能成为数万人的《荒野大镖客》。从以上两部分不难发现, 在线多人游戏正面临两难境地。要么使用传统的C/S, 后端自己写,

追求规模, 牺牲保真度;或者使用 DS 架构来减少规模和提高保真度。但是有没有办法整合它们?事实上, 很多开发团队都在思考这个问题。市面上具备这样特点的产品并不多, 评价褒贬不一的海盗冒险多人游戏《ATLAS》更是寥寥无几。抛开产品质量问题不谈, 《ATLAS》采用DS架构, 理论上支持4万玩家同时游玩。 “ATLAS”他们的做法是在DS之外编写世界服务器和数据服务器的后端。先把多个DS实例拼在一起, 然后世界服务器负责统一管理。
       例如, 只要玩家通过地图, 玩家的数据就会被移动到另一个服务器。其实可以类比《魔兽世界》的空间划分法。当然, 很明显, 这项技术还不是很成熟。 Steam上最差评价的就是卡和人脉。颖婷还打算打造一个庞大的高保真游戏世界, 但发现技术脸是坑。因此, 我们先简单梳理了DS的问题, 降低了未来游戏制作的门槛和风险, 于是诞生了一个解决方案(工具):SpatialOS。 SpatialOS是基于底层公有云资源的游戏开发环境。一方面会为你提供云端的服务器托管, 另一方面会提供技术支持, 类似于一个多功能的插件。这个工具可以很方便的连接到Unreal和Unity引擎, 甚至任何第三方引擎, 主要是提供了一种扩展DS架构下多人游戏规模的手段。其中一个扩展思路有点类似于“ATLAS”。如果一个DS不够用, 可以将多个DS拼接在一起, 统一管控。
       因为SpatialOS Unreal Development Kit的方向是多进程, 更容易使用多核甚至多机的计算资源, 可以突破传统DS的限制。简而言之, 将服务器添加到游戏中很有用。上面这段有点混乱, 直接一起看DS的例子图更直观。下图中的9个方格代表9个DS, 每个游戏服务器的管辖区域用不同的颜色表示。玩家不仅可以无缝跨越服务器边界, 还可以与不同区域的其他玩家互动。据田桑介绍, 这背后的秘密在于, 9 DS之上还有一个网络层, 真正负责所有游戏状态的管理。 DS 是连接所有地区的地区。客户端连接到这个管理层, 而不是所有的 DS。使用多个游戏服务器模拟游戏世界的不同区域说到分层的概念, SpatialOS中还有一个功能叫AI负载拆分, 正好可以解决之前的《光环5》战区模式问题。理论是, 如果把AI负载扔到另一个服务器上, 那岂不是给玩家腾出空间来扩展, 也不必把NPC弄傻,

可以说是一石二鸟。这种方法可以在广泛的应用中使用, 具有低延迟要求并且与核心系统(如物理)的低耦合, 例如天气系统。分离层放置在另一个基于云的虚拟机上。莹莹自己也做过一些实验。使用原生虚幻引擎时, 在现有100个玩家的基础上最多可以运行229个AI;而在将AI负载抛给另一台服务器后, 在保持服务器帧率不变的前提下, AI的数量可以达到479个, 相当于容量翻了一番。目前正在测试的冒险生存游戏《清道夫》恰好使用了AI负载分担技术。开发商 Midwinter Entertainment 表示, 玩家在游戏中会遇到极端天气、怪物肆虐、外来入侵者和敌对玩家队伍等威胁。 AI负载分担让他们能够在3x3公里的地图内, 一方面保证这些高保真体验, 另一方面实现60名玩家和300个AI的规模。当然, 虽然层次感看起来很棒, 但没有灵丹妙药, 田桑提到示例:假设A1区域有10000人, 负载过高。要么把A1分成A1和A2, 分别放5000人, 要么在A1上面加一层, 由开发者自己控制。但是这个东西是有代价的, 因为两个区间之间有很多通信, 而且还要靠服务器硬件来叠加。例如, 如果一个服务器需要从 1000 人扩展到 3000 人, 就会分为三层。如果每层造成的额外性能损失为 50%, 那么每层实际上只能跑 500 人, 而第三层只有 1500 人。那么你的层数更多, 此时的损失可能会超过50%。因此, 要想在DS架构下扩大播放器规模, 就不得不整合多种方法。 SpatialOS其实有一个系统叫QBI, 可以定制, 降低同步频率, 解决一些网络负载问题。比如其中一个表现就是让移动的物体离玩家越近看起来越流畅, 离得越远越卡, 主要取决于开发者如何运用自己的想象力。如前所述, MMORPG的人数非常多,

可以达到几万人, 但基本上都是以社交互动、打怪、或者地下城的互动为主, 很少有真实的实体模拟。另一个方向是像《堡垒之夜》和《方舟:生存进化》这样的游戏, 有些地方很详细, 但是人数容易出现瓶颈, 通常是房间为主。这就引出了一个能不能容纳几万人的《荒野大镖客2》的问题。田桑认为, 理论上是可行的。是的, 但还没有开发人员接触过这个线程。
       即使在技术问题得到解决之后, 话题又回到了不可避免的开发风险和成本上。然而, 未来这两种需求应该会融合在一起, 使在线多人游戏比今天的标准更上一层楼:一方面它可以支持更多的玩家, 另一方面它可以保证更逼真的模拟。至少目前有人在朝这个方向努力, 或许用不了多久,

高保真MMO不再只是幻想。

Copyright © 2010 亿博科技有限公司 yibokejiyouxiangongsi ,All Rights Reserved (www.phytodivablog.com)