云游戏技术概述

历史

  云游戏具有极大的想象空间,从20年前,就吸引众多的前辈们尝试。由于技术条件不够成熟,而纷纷成为了前浪。

云游戏的4波浪潮

  我认为云游戏会有三个阶段(求高大上的三阶段总结名字)

  • 『适配阶段』

  这个阶段,大家比较好理解,主要的目标就是将当前已经开发好的游戏搬到云游戏的平台上来

  • 『原生阶段』

  到了这个阶段,市场已经接受了云游戏的方式,各家都准备大力投入了。在这个阶段,需要像大数据、AI一样,在云端使用GPU集群来完成游戏的渲染;同时利用平行可扩容的GPU能力,催生未来的云游戏形态,扩展游戏策划的空间。

  • 『VR阶段』

  经历了『原生阶段』,云端大规模GPU集群渲染技术已经成熟,可以支持更复杂,更精细的VR游戏制作。前两个阶段也准备好了更高压缩比、低耗时的音视频编解码方案以及实时网络传输方案,以支撑VR视频流的高压缩率、高带宽的需求。

  下面重点讲一下『适配阶段』的整体技术,『原生阶段』和『VR阶段』还没有太清晰的思路,简单提一下现在的初步想法。

『适配阶段』

关键技术点

  我们现在是处于第四波的云游戏浪潮中,这一波相对以前有更多的巨头入场,这是因为以下的5个核心技术点已经成熟起来了。

关键技术点
  • GPU服务器:随着AI、大数据的发展,推动了高密度GPU服务器的发展。虽然还不是特别贴合云游戏,但已经有了一个比较好的基础
  • 虚拟化:这里的虚拟化技术包含了虚拟机、容器等隔离技术,也包含了GPU的虚拟化技术。针对不同的场景,会有不同的考虑。
  • 音视频技术:264、265已经能成熟应用了,并且短视频、直播业务的发展,提升了编解码的效率,扩大了硬件编解码的市场普及度。
  • 实时网络传输:同样得益于短视频、直播业务的发展,已有的网络协议优化技术为云游戏奠定了一定的基础,可以进化为适应大带宽、低时延的网络优化技术。
  • 边缘计算:云业务的大力发展,推动了CDN业务的普及,就腾讯云在全国已经有1000+的CDN节点。现在国家牵头推动的5G中,有一个关键特性MEC(Multi-Access Edge Computing),也会大力推动边缘节点的建设。

软件栈

  国外主要是在做PC游戏、主机游戏的云游戏解决方案,国内除了这些,还有做移动游戏的云游戏方案(基于Android)。整个云游戏的一个软件栈全景图如下:

云游戏软件栈

从下往上一一介绍

服务器层:

  • PC游戏/主机游戏:

   服务器主要基于x86架构,最关键的软件技术在于显卡驱动,这部分是由显卡厂商把持的。虽然AMD的UMD层驱动开源,但其核心的KMD层还是闭源的,脱离显卡厂商在外部很难对驱动做出针对性的优化。

   这一领域,定制服务器也有两个方向。

  1. 传统服务器+多显卡,多CPU核+多GPU,是一种资源池互相配合的服务器方案,这种方案下对资源调度到算法要求比较高,也有很大的灵活性。从调度方案上来看,个人是比较倾向这条路线的,在未来的『原生阶段』,为了充分发挥硬件资源超卖、性能可平行伸缩的特点,必然是CPU池+GPU池的IaaS方案。
  2. 小节点方案,从披露的信息看PS Now、GFN 2.0、xCloud都是这样的方案,即一个CPU带1-2张显卡,做一个最小的资源粒度。这个方案和『原生阶段』的理念有违背,比较难做到GPU能力的平行扩展,服务器硬件的更新换代有很高成本,应该是过渡期方案。
  • Android游戏:服务器形态有三种,
  1. x86服务器,基于intel的houdini指令翻译工具将arm的risc指令集翻译成x86指令集,以实现Android游戏在x86服务器上运行;方案的优势在于x86服务器很成熟,很容易规模化,易于运维,劣势在于指令集翻译这一层有较大的损耗,且服务器成本相对于ARM的两个方案偏高。
  2. ARM服务器,就是将传统服务器中的x86 CPU替换成ARM CPU;
  3. ARM板卡阵列,相当于手机板卡上只留下CPU、GPU、MEM和网络等关键硬件,一定数目的板卡装配到一个服务器机箱内,配合上电源、交换机等设备,形成一个ARM板卡服务器。

ARM的两个方案优势在于成本和Android原生运行环境;劣势在于产业链还没有成熟,较难运维,一是服务器链条,包括方案,生产环节,一是GPU生态,无法使用A卡和N卡。不过ARM公司正在推进这一块,期待未来的演进。

虚拟化层

  基于不同的底层操作系统会有不同的虚拟化方案

  • PC/主机云游戏:Linux Host + Linux docker/Linux VM

  猜测Google Stadia平台会采用Linux Host + Linux docker的方案。docker现在已经可以实现静态资源(文件系统)和运行时资源(CPU/MEM等)的隔离,难点在于GPU渲染能力的共享和调度(CUDA已支持docker)。

  在Linux OS + Linux VM(vGPU/GPU Passthrough)方案里,用虚拟机和GPU虚拟化来实现GPU资源的隔离和调度。

  一种是vGPU,即GPU虚拟化方案。当前业内的GPU虚拟化方案,在核心的管线和shader资源上都是基于时间片轮询的虚拟化调度方案,时间片过大,则带来较长的响应延迟,时间片过短则有较大的调度损耗。

  一种是GPU Passthrough,即GPU直通。将整个GPU直通进虚拟机,为单个VM独占。GPU资源的最大化利用存在难度,需要配合其他方案一起做(这里其实就回到docker方向的考虑了)。

  • PC/主机云游戏:Linux Host + Windows VM 这种方案运行PC游戏,可以快速构建云游戏服务器,很多技术积累不够深的创业公司选择的都是此方案,另外Nvidia GFN也是此方案。 方案的弱点在于单纯的虚拟机方案,虚拟机的控制权完全或部分交给用户,无法控制用户行为。那云游戏宣传的No Cheating,No Hacking就是一句空话了。举个例子,玩家获得虚拟机控制权,通过浏览器可以在虚拟机上任意的上传下载内容,也就能获取游戏文件做分析,进而做出破解和外挂了。所以该方案不可单纯的使用,需要配合上系统权限控制的方案才行。 另外,该方案在GPU虚拟化上的实现,同Linux VM。
  • PC/主机云游戏:Windows Host + Windows Sandbox   这里的思想类似于Linux Host + Linux Docker,Sandbox就是一个Windows Docker(或是叫做Container,微软有一个windows Container项目,该项目对图形接口的支持当前仅限于OpenGL)。Sandbox需要提供游戏进程运行资源和静态资源的隔离,同时要提供GPU调度能力。
  • Android云游戏 基于服务器(x86/ARM)的方案,需要用到kvm(CPU、MEM虚拟化)和qemu(I/O虚拟化)的虚拟化技术。ARM板卡的方案就不需要虚拟化实现了,每个板卡提供一个真实Android环境即可。

游戏引擎

  在『适配阶段』,游戏引擎参与较少,主要的工作会集中在游戏效果设置方面,以确定每一路玩家的资源消耗,便于服务器资源调度、体验保证和成本控制。

音视频编解码

  云游戏是大带宽低时延场景,264和265是较成熟的方案;AV1和VP9当前还较难满足低时延的要求,因其授权免费,需持续关注。

  编码端,由于低时延的要求,需要尽可能的使用硬件编码器;同时软件编码在特定场景下有很多压缩带宽的方法,因此带宽和时延需要平衡考虑,不同场景可做定制。

  解码端,264硬件解码已经很普及了。265硬件解码也覆盖较广。因为移动端ROM和硬件解码实现有厂家差异,移动端的硬件解码需要有适配工作。

  需要再提及一下和音视频流并列的一个方案,渲染指令流方案。在PC/主机云游戏领域,这不是一个好方案,因为:

1. 用户还是需要显卡渲染,还需要硬盘存储游戏素材,不是轻量客户端。
2. 大量的骨骼动画带来的动态数据,指令流需要的带宽也不低,并且没有现成的编解码方案。
3. 图形SDK的兼容性问题,云端1.0版本,客户端有2.0、3.0版本,这里需要做API的版本间兼容。
4. 手机上现在还不支持dx,只支持opengl和vulkan。

但在移动游戏领域,因为当前手机处于追求配置升级的阶段,因此可以通过该方案充分利用手机端的硬件能力,节省服务端的硬件开销,是一个可接受的方案

网络传输

  这里的思路是做灵敏的流量控制。基本思想就是需要实时检测网络带宽能力,再结合客户端的数据包处理能力上限,动态的反馈给编码端,实时调节编码参数以适应网络抖动。

  大家都把云游戏和5G放在一起讨论,但我接触到的大多数人对这两者的联系认识并不是很准确。准确的说,5G是云游戏的催化剂,没有5G云游戏还是会到来,只是速度会慢一些。下来说一下5G对云游戏具体的催化作用:

移动网络拓扑
  1. 加速移动设备上应用云游戏的进程,5G会带来空口链路(手机到基站之间无线传输链路)上带宽的提升和时延的降低,有利于移动端云游戏体验提升。
  2. 5G推动核心网与固网的交换节点下沉,带来整体网络路由的缩短。在4G及以前的时代,交换节点通常在省会和大城市,5G时代,交换节点会下沉到二、三线城市。
  3. 5G中有个很重要的一个节点MEC(Multi-Access Edge Computing)多接入边缘计算节点,在基站之后会很快的接入到MEC,MEC会作为一个交换节点,快速接入到固网中。我们可以在MEC之后紧跟着部署云游戏服务器,以降低用户到云游服务器间的时延。同时MEC也允许有线接入网的接入,对宽带用户的云游戏体验也有提升。
5G-MEC

『原生阶段』

  这个阶段的核心:GPU、云游戏引擎,游戏开发生态。

基于云游戏引擎的原生云游戏

  GPU需要能有集群化渲染的能力。现在的HPC应用,可以基于Nvidia的NvLink总线或PCIe总线在GPU之间交换数据,使用GPU的集群运算能力;未来的云端GPU渲染集群也需要类似的能力,并且需要更高的数据交换效率。

  基于GPU渲染集群,游戏渲染管线的流程会有变化,引擎需要变化,以充分利用GPU能力。同时引擎要为游戏开发者构建一套全新的游戏研发流程和生态。

支持游戏全生命周期的云游戏平台

  在新的研发生态中,游戏的开发、发布和运营均在云游戏技术平台中完成。一切基于云端。

『VR阶段』

  也许是VR,也许不是VR,基于原生云游戏,会出现更大的游戏世界,更细腻的游戏表现。

#最后

  云游戏虽然已有20年历史,仍是一个新方向,有很多的可能性。

  云游戏成功了,云OS也就不远了。

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

START云游戏

1 篇文章3 人订阅

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券