Meta 云游戏基础设施

Sep 6, 2023 20:00 · 2795 words · 6 minute read

原文:https://engineering.fb.com/2022/06/09/web/cloud-gaming-infrastructure/


Facebook 于 2020 年推出了其云游戏平台,使得 Faceboook 上的任何人都可以通过屏幕和浏览器访问原生 Andriod 和 Windows 游戏。

游戏本身也在不断发展,从 AR 和 VR 这样新的 3D 体验到最终的元宇宙,全世界的人们都想要尽可能简单地玩上更具沉浸感的游戏。虽然要实现元宇宙需要整个行业付出巨大的努力,但我们相信创建基础设施并接受云游戏的挑战,会指引我们通向元宇宙。

为什么是云游戏?

云游戏的关键在于可达性——无论人们身处世界何地使用何种设备,都能享受到游戏。将游戏应用程序放置在云端,人们无需购买新硬件,也不必大量下载或等待更新。它实现了桌面和移动设备之间的跨平台和灵活的应用程序分发。

云游戏也提供了更好的开发者体验,因为他们不需要太多关心如何为多种硬件平台(桌面和手机)优化游戏。在理想情况下,开发者只要一次构建应用程序,就可以分发至多种设备上,无需生成多种二进制文件。对于关注安全和完整的玩家和开发者来说,云游戏则意味着更少的作弊和盗版问题。

Meta 的云游戏基础设施

启动云游戏项目就意味着开发新的硬件和软件基础设施,来应对云游戏中的挑战。基于云的游戏需要低端到端的延迟以提供快速流畅的游戏体验,其中高质量的视频和音频流要尽可能无抖动地传输;基础设施也需要能够在单个云服务器上运行多个游戏才能更经济。而且所有这些都必须抵挡各种网络攻击,保持健壮和稳定。

边缘计算、GPU 和虚拟化

云游戏基础设施提供低延迟服务的最佳办法就是尽可能在地理距离上靠近玩家,仅凭 Meta 的数据中心无法提供云游戏所要求的超低级别延迟。因此我们要依靠边缘计算,在接近大型人口规模的都市区域部署边缘节点,将云游戏基础设施带向玩家。

随着边缘计算节点的数量增加,我们可以为玩家改善延迟

目标是在每个边缘计算站点拥有一个统一的主机环境,来确保尽可能流畅地运行尽可能多的游戏。如今的游戏都是为 GPU 设计的,因此我们与 NVIDIA 合作,在基于 NVIDIA Ampere 架构的 GPU 之上构建一个主机环境。随着游戏越来越图形化和复杂,GPU 将为我们提供加载、运行和流式传输游戏时所需的高保真度和低延迟。

在边缘计算操作系统上我们使用 Twine 集群管理系统来运行游戏本身:我们构建了编排服务来管理流媒体信号,并使用 Twine 来协调边缘的游戏服务器。

我们为 Windows 和 Android 游戏构建并使用容器技术,为两种平台的游戏提供不同的托管解决方案,Windows 主机方案还集成了 PlayGiga。我们已经做好了一个统一的编排系统来管理和运行两种操作系统的游戏,意味着可以用更灵活的方式跨平台分发游戏。

音视频流

最终,提供流畅的视频和音频是云游戏体验中最重要的部分之一,任何玩过在线游戏的人都会对延迟可能造成的破坏性有所了解。

考虑到技术的成熟度和兼容性,我们选择了安全实时传输协议(SRTP)的 WebRTC 作为流式传输用户输入以及游戏音视频的解决方案,这样还能显著地提高音视频的流媒体性能。

当玩家在游戏中点击做动作(例如使他们的角色跳跃),我们捕捉到点击事件并发送至服务器。然后游戏渲染一个包含该动作(即跳跃)结果的帧,我们对该帧使用视频解码器进行编码。再将帧封包装入 UDP 数据包,通过网络发送给玩家。最后在玩家端,有一个抖动缓冲区来帮助平滑地播放过来的数据包,我们将数据包解码成帧,为玩家渲染。

所有这些都发生的如此之快,以至于玩家没有感知到任何时间。但是每个步骤都需要一点点时间,当它们累加起来,会导致玩家感知到更高的延迟和卡顿。

我们当前的模型使用 GPU 编码来降低延迟,意味着游戏渲染一个帧,是在 GPU 中进行的,并且直到在编码前它都不会离开 GPU 的内存。这样处理更高效,也不会占用太多的 GPU 和服务器之间的 PCI 总线带宽,编码后的帧体积也比原始的小。

Our current model for video and audio streaming significantly improves on latency by using GPU encoding.

当前的音视频流模型通过使用 GPU 编码大幅改善延迟

在网络方面,边缘计算站点靠近玩家也有助于减少音视频的延迟——甚至比将整个流媒体管道移动到 GPU 上更有效得多。

在玩家侧,我们现在使用硬件解码来减少解码时间。视频和音频通常是同步的,但我们可以稍微提前发送视频来改善延迟;还可以利用玩家电脑显示器和手机屏幕的固有延迟,屏幕以固定的速率(例如 30 fps 或 60 fps)逐帧显示。我们利用看不见的帧间隔来吸收抖动和平滑视频。对于支持更高 FPS 的设备,延迟可以进一步降低。

保证云游戏安全

玩家和开发者需要确保任何云游戏体验都是安全可靠的:玩家要知道他们的数据是安全的,而且游戏不会被作弊者主导;开发者要知道他们的产品将免受盗版和其他安全漏洞威胁。

整合边缘计算、GPU 虚拟化和音视频流使云游戏基础设施非常复杂,这种复杂性给安全带了挑战。作为一个基于 Windows 和 Android 的系统,承担了这些环境的安全挑战,还要防御像 DDOS 攻击这类威胁。

为了识别和解决安全问题,我们在开发的每个阶段都进行安全评估,从设计到实现到测试:包括威胁建模、代码安全审查、模糊测试和安全测试。我们不希望云游戏成为攻击其他 Meta 系统的一个入口,因此云游戏基础设施与 Meta 核心数据基础设施完全隔离。我们还有一个内部的安全团队与外部公司一起对系统进行定期的安全评估。

云游戏和元宇宙

元宇宙对游戏的未来有着重大的影响——不仅在于人们将玩到的游戏类型,还有如何将这些游戏分发给他们。元宇宙将比以往任何时候都更进一步推动网络连接的需求,我们今天打造的云基础设施,将在帮助整个行业处理创建元宇宙体验所需的复杂计算方面发挥重要作用。

就像 3A 级游戏一样,未来的元宇宙体验需要最高的真实感和最低的延迟。如果体验不流畅,那都是白搭,这意味着元宇宙网络必须超低延迟、高可扩展、高吞吐量,还有联合的数据存储。

这种新的网络架构无论如何,都需要对现在的整体网络架构进行跃迁式的增强。它需要一个可靠的、QoS 感知的、点对点通信连接和协议,来在近程范围内交换信息;需要一个统一且无处不在的网络拓扑来限制全球范围内的延迟、抖动和丢包。改善延迟、可靠性和吞吐量还有开发联合数据库等挑战可能会迫使工程师重新设计并重新分配端到端通信网络中的计算和路由资源。然后元宇宙在每个网络段以及应用/网络协议层(从顶部的应用层到底部的 OS 层)都需要一个无处不在的端到端的 QoS 管理策略。

云游戏的明天?

很多人将通过游戏踏入元宇宙。在我们朝着元宇宙的长期愿景努力时,我们会继续构建新的 2D 体验以帮助填平人们和元宇宙之间的鸿沟。

随着云游戏平台规模的扩大,我们正在不断升级和改进云游戏基础设施。在接下来的两三年里,我们将致力于国际拓展,来将游戏带给全世界更多的人。我们将与移动网络运营商合作,显著地降低网络的延迟;在硬件方面,正在与芯片制造商合作来降低用户设备的延迟;我们也在研究新的容器技术来更高效地提供流媒体。当然随着系统不断成长和改进,安全也不能落下。

开发者可以期待更好的系统兼容性,提供开发、测试、调试、实验和分析工具以减少他们的心智负担。而玩家作为云游戏中最重要的部分,可以期待更沉浸的游戏体验。