为应对提供快速、流畅、无抖动游戏和超低端到端延迟的挑战,社交媒体巨头 Meta 创建了一个能够在单个服务器上运行多个游戏的基础设施(为了经济效率),同时保持数据安全。
Meta的工程师们认为,这个低延迟的游戏平台也可以作为Metaverse的基础。
Facebook 于 2020 年推出其云游戏平台,为用户提供跨所有浏览器的原生 Android 和 Windows 手机游戏的快速访问。伴随着大量的访问而来的是大量的对开发人员和工程的挑战。
网络、托管和集群管理
Meta 提供低端到端延迟的第一步是物理延迟——减少云游戏基础设施与玩家本身之间的距离——Meta 使用边缘计算并部署在靠近大量玩家的边缘。边缘计算的目标是“拥有一个统一的托管环境,以确保可以尽可能流畅地运行尽可能多的游戏。”
边缘计算站点越多,用户延迟越低。
接下来,Meta 的目标是“确保可以尽可能流畅地运行尽可能多的游戏。”。
为此,Meta 与 Nvidia 合作,在GPU 之上构建了一个托管环境。Meta 相信这一步将提供“加载和流式传输游戏所需的高保真度和低延迟”。
集群管理是端到端延迟减少挑战的最后一部分。为此,Meta 使用了其内部的 Twine 集群管理。Twine 在边缘协调游戏服务器,而自定义构建编排服务管理流信号。Windows 和 Android 都有不同的托管解决方案,可以提供更大的灵活性。
Meta 的云游戏基础设施
音频和视频流
高音频和视频质量可以说是云游戏最重要的事情。人物可以跳,但音视频不能。Meta 工程师选择了带有安全实时传输协议 (SRTP) 的 WebRTC 用于流式传输用户输入和视频/音频帧。
工程师们仔细研究了他们目前使用的工作流程:
玩家执行了一个动作(让角色跳跃)—>点击事件被捕获并发送到服务器—>游戏模拟器收到事件—>游戏渲染了一个包含动作结果的帧(角色跳跃)—>捕获了渲染帧,使用视频编码器对其进行复制和编码—> 帧被打包以适合用户数据报协议 (UDP) 数据包 —> 通过网络发送到播放器 —> 数据包被解码为帧并为播放器渲染。
尽管每个动作都被快速执行,但所有这些动作加起来可能会导致看似缓慢的性能。
修改后的工作流程包括更少的步骤:
GPU 编码有助于减少视频和音频流的延迟。
现在,当游戏渲染一帧时,它会在 GPU 中渲染,并且在编码之前不会离开 GPU 内存。因此,新进程不会使用 GPU 和主服务器之间的大部分 PCI 总线。为了进一步提高效率,此过程还创建了一个最终小于原始帧的编码帧。
为了继续推动改进延迟,当需要解码时,视频会在音频之前发送,这与当前音频和视频一起发送的做法背道而驰。Meta 还可以利用玩家电脑显示器或手机屏幕的固有延迟。屏幕以一定的速率(例如,30fps 或 60fps)一帧一帧地渲染。Meta 可以使用帧之间那些难以察觉的间隔来帮助吸收一些抖动并平滑视频。对于支持更高 FPS 的设备,延迟可以进一步降低。
安全
该系统服务于基于 Windows 和 Android 的系统,固有地承担了这些环境的安全挑战,并且还需要保护免受 DDOS 攻击等威胁。
为确保安全,Meta 的云游戏基础设施与其核心数据完全分离。就云游戏基础设施的保护方式而言,安全威胁在开发的各个阶段都进行了测试,从设计开始,一直持续到实施和测试。这包括威胁建模、安全代码审查、模糊测试和安全测试。Meta 也有外部公司执行安全评估作为额外的保护层。
云游戏的下一步是什么?
在技术改进方面,Meta 目前正在与移动网络载体合作以改善移动网络的延迟,并与芯片组网络合作以改善用户设备的延迟。工程团队还在研究新的容器技术,以提供更好的流传输效率,并继续确保安全措施与所有增长领域保持同步。
开发人员还可以通过系统兼容性和更好的开发、测试、调试和分析工具来寻找即将到来的重大改进。
原文链接:
https://thenewstack.io/a-look-at-metas-low-latency-metaverse-infrastructure/