写点什么

揭秘 Meta 的云游戏基础设施

  • 2022-09-20
    北京
  • 本文字数:3422 字

    阅读完需:约 11 分钟

揭秘 Meta 的云游戏基础设施

云游戏的未来是实现游戏大众化。任何一个喜欢游戏的人都应该能够享受游戏,并与好友分享游戏体验,无论他们身在何处,即使他们没有最新最贵的游戏硬件。Meta 在 2020 年启动了云游戏平台,让 Meta 用户可以通过各种屏幕和网页浏览器即时地访问原生 Android 和 Windows 游戏。


这种前所未有的云游戏访问体验需要 Meta 的工程师们迎接新的挑战,开发出能够为世界各地的人们提供高质量游戏体验的硬件基础设施。


游戏本身也在不断演化,从 AR 和 VR 等 3D 体验到元宇宙,世界各地的人们都希望尽可能无缝且轻松地玩越来越具有沉浸感的游戏。实现元宇宙需要整个行业投入巨大的努力,但我们相信创建基础设施和解决云游戏的挑战将为我们指明走向元宇宙的道路。



为什么要构建云游戏


云游戏关注的是可访问性——为人们提供游戏,不管他们使用什么设备,也不管他们位于世界何处。将游戏应用放到云端,人们就不需要购买新硬件,也不需要大量下载或等待更新。它支持游戏跨桌面和移动设备无缝交叉,可以实现灵活的应用分发。


云游戏还为开发者提供了更轻松的开发体验,因为他们不再需要过多地考虑针对多个硬件平台(如桌面和手机)优化游戏。在理想的情况下,开发者只需要构建一次应用,就可以分发到多个设备上,而不需要构建多个二进制文件。对于关心安全和完整性的玩家和开发者来说,云游戏意味着更少的作弊和盗版问题。

Meta 云游戏基础设施


在 Meta 实现云游戏意味着工程师们需要开发新的硬件和软件基础设施来解决云游戏所面临的挑战。云游戏要求较低的端到端延迟,并提供快速流畅的游戏体验,而高质量的视频和音频需要以尽可能小的抖动进行传输。为了提升成本效率,基础设施还需要能够在单个云游戏服务器上运行多款游戏。所有这一切都必须受到保护,免受各种网络攻击,同时保持健壮和高效。

边缘计算、GPU 和虚拟化


Meta 云游戏基础设施为玩家提供低延迟体验的方法是在网络距离方面让其尽可能地靠近玩家。Meta 的数据中心无法单独为云游戏提供超低的延迟,所以我们依赖边缘计算,在靠近大量人口的大都市地区边缘部署服务,让云游戏基础设施更靠近玩家。



通过增加边缘计算站点降低延迟


我们的目标是在每一个边缘计算站点中都有一个统一的托管环境,确保我们可以尽可能平稳地运行尽可能多的游戏。如今的游戏都是为 GPU 设计的,所以我们与 NVIDIA 合作,基于 NVIDIA Ampere 架构的 GPU 构建托管环境。随着游戏图像渲染变得越来越密集和复杂,GPU 将为游戏的加载、运行和流化提供高保真度和低延迟。


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


我们为 Windows 和 Android 游戏使用了容器技术,提供了不同的托管解决方案,其中 Windows 托管解决方案集成了 PlayGiga。我们已经构建了一个统一的编配系统来管理和运行两个操作系统平台的游戏。这意味着我们可以更灵活地跨不同的平台交付游戏和管理容量。



视频和音频流


提供流畅的视频和音频是云游戏体验最重要的部分之一。任何玩过在线游戏的人都体会过延迟可能带来的挫败感。


考虑到技术的成熟度和兼容性,我们结合了 WebRTC 和安全实时传输协议(SRTP),将其作为流式处理用户输入和发送游戏视音频帧的解决方案。随着时间的推移,这种方案显著提高了视频和音频流式传输的性能。


我们将从刚开始的云游戏基本的流开始讲起。


无论玩家在何时点击执行游戏中的动作(例如让游戏角色跳跃),我们都会捕捉到点击事件并将其发送给服务器,服务器将接收到这个事件。然后,游戏渲染包含该动作结果的帧(即角色跳跃)。我们捕获并复制渲染的帧,使用视频编码器对其进行编码,然后将其打包,装入用户数据报协议(UDP)数据包,再通过网络发送给玩家。最后,玩家端有一个抖动缓冲区来平滑接收到的数据包。我们将数据包解码为帧,然后为玩家渲染帧。


所有这一切都发生得如此之快,以至于玩家察觉不到点击和角色动作之间存在延迟。然而,每一个步骤都需要花费一点时间,这些时间累积起来会给玩家带来更高的延迟。


我们当前的模型在此基础上进行了显著改进,通过 GPU 编码降低了延迟。使用 GPU 编码意味着游戏渲染帧是在 GPU 中进行的,并且在编码完成之前不会离开 GPU 的内存。这个过程非常高效,并且不需要在 GPU 和主服务器之间占用大量的 PCI 总线带宽。编码后的帧也会比原始帧小。



目前的视频和音频流媒体模型,通过使用 GPU 编码显著降低了延迟


在网络方面,让边缘计算站点靠近玩家也有助于降低视频和音频的延迟——甚至比将整个流式管道转成 GPU 所节省的成本更加显著。


在玩家端,我们现在也使用硬件解码来缩短解码时间。视频和音频通常是同步在一起的,但我们也可以为了降低延迟在音频之前发送视频。我们还可以利用玩家电脑显示器或手机屏幕的固有延迟。屏幕会以一定的速率(如 30fps 或 60fps)逐帧显示视频。我们可以利用帧之间难以察觉的间隔吸收掉一些抖动,让视频变得更加平滑。对于支持更高 FPS 的设备,延迟可能会进一步下降。


确保云游戏的安全


玩家和开发者需要确保云游戏体验是安全的。玩家希望他们的数据是安全的,游戏不会被作弊者利用。开发者需要确保他们的产品不会受到盗版和其他安全漏洞的侵害。


边缘计算、GPU 虚拟化和视频 / 音频流的结合使得云游戏基础设施变得非常复杂。这种复杂性带来了独特的安全性挑战。作为一个基于 Windows 和 Android 的系统,系统本身承担了这些环境的安全性挑战,还需要保护免受 DDOS 攻击等威胁。


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


云游戏和元宇宙


元宇宙对游戏的未来有着重要的影响——不仅是关于人们可以玩的游戏类型,还包括如何向人们分发这些游戏。元宇宙将比以往任何时候对网络连接有着更高的要求。我们今天奠定的基础将在帮助整个行业构建云基础设施方面发挥重要作用,这些基础设施将承担创建元宇宙体验所需的复杂计算。


就像 3A 级游戏一样,未来的元宇宙体验需要最高的保真度和最低的延迟。如果无法无障碍地实现这种体验,那它就不适合任何人,这意味着元宇宙网络必须具有超低延迟、高可伸缩性、高吞吐量和联邦数据存储。


无论这种新的网络架构是什么样子,我们都需要对今天的整体网络架构进行改进。它将需要一个可靠的、服务质量(QoS)感知的、点对点的通信链路和协议,让在同一个区域内(例如,在相同的 Wi-Fi AP 覆盖下)的人们可以相互交换信息。它需要一个统一的、无处不在的网络拓扑来限制全球范围内的延迟、抖动和丢包。降低延迟、提高可靠性、提升吞吐量和开发联邦数据库的挑战可能会迫使工程师在端到端通信网络中重新设计和分配计算和路由资源。然后,元宇宙在网络的每一段以及每一个应用 / 网络协议层(从顶部的应用层到底部的操作系统层)都需要无处不在的端到端 QoS 管理策略。


我们正在研究解决这些问题的方法。我们的云游戏基础设施提供了一些见解,我们正在与移动网络运营商和运营商、硬件芯片组制造商和其他合作伙伴合作,创建可以满足元宇宙需求的解决方案。


云游戏的未来


许多人将通过游戏进入元宇宙。我们朝着元宇宙的长期愿景努力,我们将继续构建新的二维体验,帮助 Meta 应用用户跨越元宇宙鸿沟。最近 Facebook 游戏平台推出的 Crayta 就是一个很好的例子。


随着云游戏平台的规模不断扩大,我们也在不断升级和完善云游戏基础设施。在接下来的 2 到 3 年里,我们将进行更多的国际扩张,将游戏带给世界各地更多的人。我们还与移动网络运营商合作,显著降低其接入网络的延迟。在硬件方面,我们正在与芯片组制造商合作,降低用户设备的延迟。我们还在研究新的容器技术,提供更好的流媒体效率。当然,随着系统的发展和改进,安全性也会不断提高。


开发者对显著的改进有所期待,包括改进系统的兼容性,减少开发者负担,并为他们提供更好的开发、测试、调试、实验和分析工具。玩家是我们云游戏工作最重要的组成部分,他们可以期待即将到来的更具沉浸感的全新游戏体验。


我们的目标是让人们在任何时刻、任何地点一起玩优秀的游戏,这一点始终不变,我们在云游戏方面的持续努力将确保这些体验变得更好。


原文链接:


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


2022-09-20 09:452801

评论

发布
暂无评论
发现更多内容

区块链电子合同应用平台-助力企业数字化转型

13530558032

简单工厂模式、工厂模式、抽象工厂模式比较

良知犹存

设计模式

饿了么刚给我确认了p7的职位,对自己的经历,做一个面试总结。

Java架构之路

Java 程序员 架构 面试 编程语言

正则表达式.01 - 元字符

insight

正则表达式 3月日更

《不看后悔》38个JVM精选问答,让你变成专家

Java 架构 面试 JVM虚拟机原理

力扣(LeetCode)刷题,简单题(第21期)

不脱发的程序猿

面试 LeetCode 28天写作 算法面经 3月日更

程序员必须知道的数据结构:线性表与链表

老王说编程

Java 链表 线性表

阿里面经最新分享:Java面试指南/成长笔记(金三银四程序员必备)

比伯

Java 编程 程序员 架构 面试

mock 请求分发

blueju

JavaScript React Mock umi umijs

简易项目搭建 Models层封装

happlyfox

学习 28天写作 3月日更

【金三银四】这才是打开Java面试的正确方式,吃透这份【Java面试手册】offer稳了

Java 编程 面试

微信团队分享:微信直播聊天室单房间1500万在线的消息架构演进之路

JackJiang

微信 架构设计 即时通讯

恋物志(二):独居者的智能生活指南

脑极体

LeetCode题解:714. 买卖股票的最佳时机含手续费,动态规划,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

程序员必须知道的数据结构:队列与栈

老王说编程

数据结构 队列

Elasticsearch Index Types and Mappings

escray

elastic 七日更 28天写作 死磕Elasticsearch 60天通过Elastic认证考试 3月日更

用c++创作一个简单小游戏

张鹤羽

28天写作 3月日更

开源镜像仓库Harbor的镜像安全

运维研习社

Docker Harbor 漏洞扫描 镜像安全 私有仓库

萌新不看会后悔的C++基本类型总结(二)

花狗Fdog

金三银四程序员面试必备:2021最新 最全面Java复习路线!已收录GitHub

比伯

Java 编程 程序员 架构 面试

Oracle table()函数的合理运用,提高工作效率

xiezhr

oracle table() Oracle函数 3月日更

区块链药品溯源解决方案-区块链技术监管医药溯源

13530558032

Flutter 2 来了

SamGo

flutter

总结近期腾讯+阿里+百度Java岗高频面试题,提问率高达98%,看到这篇文章基本offer稳了

Java架构之路

Java 程序员 架构 面试 编程语言

两会热词“区块链”,打开传统溯源的一扇大门!

源中瑞-龙先生

区块链 两会

Wireshark数据包分析学习笔记Day3

穿过生命散发芬芳

Wireshark 数据包分析 3月日更

Redis 与 I/O 多路复用模型

学个球

redis

程序员必须知道的数据结构:HashMap 与 LinkedHashMap

老王说编程

Java 数据结构 hashmap

智慧党建系统开发,智慧组工平台建设

13530558032

【回溯算法】借助最后一道「组合总和」问题来总结一下回溯算法 ...

宫水三叶的刷题日记

面试 LeetCode 数据结构与算法

揭秘 Meta 的云游戏基础设施_语言 & 开发_Qunshu Zhang_InfoQ精选文章