云游戏

  • 云游戏的架构设计和技术实现
    https://blog.csdn.net/RA681t58CJxsgCkJ31/article/details/79226317

  • 云游戏产业发展白皮书 ——5G 助力云游戏产业快速发展http://www.caict.ac.cn/kxyj/qwfb/bps/201912/P020191216525617679369.pdf

  • 云游戏:从概念到落地,游戏开发商确定 受益、平台何方有望率先突围?http://pdf.dfcfw.com/pdf/H3_AP201911211370954237_1.pdf

image.png

视频音频+ 操作指令 TRTC实时音视频来实现

指令控制流的传输方式???

  • 华为云游戏的架构


    华为云的架构

云游戏的三种实现形式

  • 基于视频串流的云游戏
  • 基于文件串流的云游戏
  • 基于指令流实现方案概要及难点和解决方法
    实现方案概要:基于通用的3D API(OpenGL、Driect3D),截获游戏对API的调用信息及资源,进行针对性的压缩,在client使用这些信息调用API进行渲染。
    实现难点及解决方法:
    a)设备之间的兼容性:需要保证双向设备都渲染正常;设备支持的特性交b)性能与流量之间权衡:压缩与性能之间调整,保证整体效果最优;帧与帧之间存在强关联性;针对性的Diff算法及优化,Diff策略控制
    c)多线程渲染:区分不同的线程,在client进行合成
    d)声音的体验优化:同样的基于指令,但要实现多套API,声音缺乏统一的API
    端游指令流介绍
    基于指令流的端游,在原理、与架构上与终端游戏的指令流是一致,区别在于,API调用时产生的数所量级大,也视频流方案也大很多,因此需要针对数据做细分压缩;在服务器端,需要实现Virtual DirectX3D,摆脱对显卡、显示器的依赖。

视频串流中的具体实现

  • 控制流的传输 (重点)
    本次演讲主要内容将包括云游戏整体方案的架构介绍、使用开Open WebRTC ToolKit (OWT)实现流和控制命令的传输,以及为实现云游戏所需的超低延迟所做的优化。

WebRTC实时音视频和数据传输为云游戏提供了很好的技术支撑,用户不用下载任何插件,在浏览器里就可以玩高端游戏,所以用WebRTC进行视频和音频的传输。传输层会把音视和视频的数据发到客户端,客户端再进行解码和播放。因为玩游戏,用户是有输入的,所以客户端还需要采集用户的鼠标、键盘、手柄等信息,这些信息通过WebRTC的data channel,发到服务器上的WebRTC的传输层,然后传输层会把指令拆出后再传到事件的重播模块,重播模块相当于把用户在客户端的指令重新应用到游戏里面去。https://cloud.tencent.com/developer/article/1554806



游戏直播


上图部分我将对WebRTC的传输模块做一个更详细的解释,首先,在视频源外部进行编码器的优化,这是基于SDK做的一个编码好的视频数据,视频数据再把编码好的视频源送进WebRTC的模块,所以这里用到的是一个已经构造好的接口。其次,音频方面,目前我们是直接把GamingAnywhere抓到的音频的PCM数据直接输入,用WebRTC内置的音频编码器进行编码,最终将音频和视频全部发送到发送器,作为RTP打包后再发送出去。另一端通过客户端把鼠标、键盘等事件全部收集好,再传到datachannel的SCTP模块。通过ga-controller把客户端上JSON格式的鼠标、键盘事件转成SDL格式的事件送到SDL模块。

  • 事件传输 SCTP

腾讯云的解决方案

image.png

稳定低延时的音视频互动能力

  • 基于 Tencent-RTC 进行扩展,大幅度降低开发难度;
  • “腾讯明眸极速高清”智能动态编码技术,低码率高画质;
  • 基于优秀的网络调控算法和完善的差错恢复机制,有效提升播放效果;
  • 基于 UDP 的高效信令数据传输通道,方便实现操作信令交互。

精细化的资源调度能力

  • 基于镜像更新,无缝更新游戏内容版本;
  • 遍布全国的边缘计算节点,请求就近调度管理;
  • 支持 BGP、边缘网络接入,降低带宽使用成本;
  • 提供端游 X86 架构+手游 ARM 架构方案。

类似案例

  • 远程桌面 一种基于WebRTC与UDP组播的一对多远程控制桌面的实现思路https://juejin.im/post/5c4ef28d5188252533160efc

  • Chrome リモートデスクトップ
    リモート側のマウスやキーボード情報を WebRTC DataChannel を利用して P2P 経由で送っている
    リモート先のマシンの全画面を WebRTC MediaChannel を利用して P2P 経由で送っている
    data-channels: https://webrtc.org/getting-started/data-channels

  • IMSDK 通过自定义消息来传送包装过的鼠标和键盘事件。即时通信保障可靠但是比实时TRTC的延时来得慢。
    具体函数:sendC2CCustomMessage , sendGroupCustomMessage
    API:http://doc.qcloudtrtc.com/im/classcom_1_1tencent_1_1imsdk_1_1v2_1_1V2TIMManager.html#a59a8ba6e4a973b4c40a09ae7dfdc6981

  • 通过TRTC发送自定义消息来实现
    具体函数:sendCustomCmdMsg,sendSEIMsg 但是每秒只能发30次。也就是说至少有33ms的延迟
    http://doc.qcloudtrtc.com/group__TRTCCloud__ios.html#acbc86da0cb558c549f42e7e987c7beaf

你可能感兴趣的:(云游戏)