在刚刚过去的腾讯全球数字生态大会上,腾讯云发布了全新的云游戏解决方案,将云游戏带入了2.0时代。今天的技术解码就由胡小华老师为大家解读云游戏的相关技术细节。
云游戏是一种以云计算、渲染及云传输为基础的游戏实现方式,与传统游戏区别在于游戏的运行在云端边缘计算节点上,而非用户本地终端上;用户本地终端通过网络接收云端边缘计算节点发送的数据进行游戏声音与画面的本地呈现,同时用户将对游戏的操作控制指令发送到云端进行对游戏的控制。
云游戏解除了传统游戏方式中游戏本身对终端设备的系统软件、硬件等能力要求的限制,可以轻松的在PC、手机、平板等终端进行接入,其应用场景主要如下:
云游戏应用场景
1、3A大作随时玩
3A游戏的安装与运行全部在云端边缘计算节点中进行,终端只需要实现简单的网络数据包接受、渲染与交互,并不需要发烧级的硬件配置来支持,普通的一台能支持高清视频播放的手机、平板与TV等终端设备就可以玩3A游戏。
2、端游/手游覆盖
云游戏淡化了端游/手游概念,我们通过虚拟化VM与容器技术,将端游与手游部署运行在云端边缘节点上,玩家通过我们提供的多终端SDK,可以通过网页、客户端app等接入方式,在手机、平板、电视等任何支撑的终端上玩PC游戏或者手机游戏。
3、游戏试玩
云游戏的游戏试玩,跳过了传统游戏的下载、安装等步骤,玩家直接通过体验入口进入就可以立即进行游戏的试玩。
4、多人云游
“独乐乐不如众乐乐”,云游戏打破了传统的多人同屏游戏限制,跨越了空间,在任何地方都可以随时邀请好友多人一起玩游戏。
5、游戏助力
游戏通关不过?云游戏提供了游戏助力功能,可以让你正在玩的游戏,实时授权给其它玩家来操作,替你通关……
6、云游直播
云游戏支持游戏分享、游戏观战,可以将游戏的内容实时直播出去。
云游戏除了调度与游戏管理等相关模块,其底层主要由流化、传输、渲染交互三大块组成。
流化:在云端边缘计算节点中实现,完成游戏的流化;
传输:通过边缘网络来实现,选择最短的链路打通边缘节点与终端用户的网络通道;
渲染交互:在用户终端中实现,完成对游戏数据流的本地渲染呈现以及交互控制。
其中,流化根据实现方式的不同,可分为视频流与指令流两种形态。
1、视频流实现
视频流方案
视频流实现:游戏运行在带有GPU的边缘计算节点,将GPU生成的游戏图像转换为H.264/H265的视频流以及音频数据,通过网络传到终端,同时终端将操作指令如鼠标,键盘,触控等数据回传到服务器中。
2、指令流实现
指令流方案
指令流实现:游戏运行在边缘计算节点中,通过带有支持图形API的虚拟GPU或者软件图形库,复制游戏下发的图形API,并序列化为指令流,将指令流通过网络传输到带有GPU的终端,由终端运行指令流,并渲染出游戏图像,同时终端将操作指令如鼠标,键盘,触控等数据回传到服务器中。
目前,市面上已经对外发布的云游戏方案主要为视频流方案,下面我们将对基于视频流的实现做详细讲解。
3、基于视频流的云游戏技术实现
视频流系统框架
3.1 流化处理
视频流的流化处理主要是采集游戏音视频数据编码为音视频流,为了提高处理效率与降低延时,云游戏视频处理直接从GPU显存获取游戏画面,然后传到GPU编码模块进行编码输出,减少了GPU与CPU之间拷贝导致的性能损失;音频处理直接从声卡获取游戏声音数据进行编码输出,具体如下:
(1)视频流化处理
GPU采集编码
视频流化处理:将游戏渲染的画面,直接从GPU显存中获取,然后传输到GPU 编码模块进行编码输出视频流。
(2)音频流化处理
音频采集编码
音频流化处理:从声卡获取游戏声音进行编码为音频流。
3.2 传输处理
云游戏为了降低延时,传输采用实时流协议,如:常用的RTP/RTSP/RTC等协议,同时根据当前国内的网络环境,针对云游场景进行了专门的自适应抗抖动优化。
传输自适应抗抖动
传输自适应抗抖动处理,根据网络状况与终端渲染播放能力进行综合判断,自动调整视频流的码率、帧率,分辨率,实现在弱网、网络切换以及弱终端的最优体验。
3.3 渲染交互处理
(1)渲染处理
终端渲染
渲染处理:主要实现音视频数据的解码与同步渲染输出,为了提高终端解码能力,云游戏优先采用开启系统硬件解码的方式来进行解码,同时,为了减低延时,严格控制缓存buffer,让视频画面尽快输出。
(2)交互处理
终端交互处理:云游戏支持各种终端输入设备,完成键鼠、Touch,手柄等输入事件处理,发送到云端边缘计算节点来来完成对游戏的操控。
1、成本
云游戏成本主要源于硬件与流量,如何提高单台机器的最高并发数?如何提升编码压缩比来降低带宽成本?是当前云游优化的两个主要方向。
针对这两个问题,云游戏给出了云游虚拟化的解决方案,主要实现CPU/GPU虚拟化,将资源利用最大化;针对不同的游戏场景,虚拟出不同的虚拟机类似,细分资源粒度,尽量将成本做到最低。例如:vGPU根据不同的游戏场景,具体划分如下:
2、延时
云游戏的延时在整个链路上由如下几个部分组成:
云游戏相对于本地游戏,额外增加的延时主要来自于输入、网络传输、编码、解码,终端渲染几个部分;通过对整体链路的优化,将总延时控制在了50ms以内,保证一个好的游戏体验。
3、运维
云游戏运维主要包含边缘节点管理,游戏管理,游戏自动更新,账户管理,游戏安全管理等工作。云游戏需要维护大量的边缘计算节点,大量的游戏,而且游戏一般都比较大且更新频繁,需要及时处理游戏自动更新分发同步等问题。
云游戏随着基础实施能力提升,云计算与5G技术融合,让云游戏的质量、操作流畅性等都获得大幅提升,游戏延时也在玩家可以接受的范围内;随着入局的企业越来越多,整体产业生态越来越完善,未来2~3年会有一个比较大的突破;同时,新的交互方式和游戏类型也会将在接下来的几年陆续出现,云游戏会从一个细分市场,逐渐走进每一个玩家的生活。