云游戲的架構(gòu)設(shè)計(jì)和技術(shù)實(shí)現(xiàn)
https://blog.csdn.net/RA681t58CJxsgCkJ31/article/details/79226317云游戲產(chǎn)業(yè)發(fā)展白皮書 ——5G 助力云游戲產(chǎn)業(yè)快速發(fā)展http://www.caict.ac.cn/kxyj/qwfb/bps/201912/P020191216525617679369.pdf
云游戲:從概念到落地谭贪,游戲開發(fā)商確定 受益、平臺(tái)何方有望率先突圍?http://pdf.dfcfw.com/pdf/H3_AP201911211370954237_1.pdf
視頻音頻+ 操作指令 TRTC實(shí)時(shí)音視頻來(lái)實(shí)現(xiàn)
指令控制流的傳輸方式?颗管??
-
華為云游戲的架構(gòu)
華為云的架構(gòu)
云游戲的三種實(shí)現(xiàn)形式
- 基于視頻串流的云游戲
- 基于文件串流的云游戲
- 基于指令流實(shí)現(xiàn)方案概要及難點(diǎn)和解決方法
實(shí)現(xiàn)方案概要:基于通用的3D API(OpenGL矾策、Driect3D)唱星,截獲游戲?qū)PI的調(diào)用信息及資源愧旦,進(jìn)行針對(duì)性的壓縮,在client使用這些信息調(diào)用API進(jìn)行渲染埠胖。
實(shí)現(xiàn)難點(diǎn)及解決方法:
a)設(shè)備之間的兼容性:需要保證雙向設(shè)備都渲染正常糠溜;設(shè)備支持的特性交b)性能與流量之間權(quán)衡:壓縮與性能之間調(diào)整,保證整體效果最優(yōu)直撤;幀與幀之間存在強(qiáng)關(guān)聯(lián)性非竿;針對(duì)性的Diff算法及優(yōu)化,Diff策略控制
c)多線程渲染:區(qū)分不同的線程谋竖,在client進(jìn)行合成
d)聲音的體驗(yàn)優(yōu)化:同樣的基于指令红柱,但要實(shí)現(xiàn)多套API,聲音缺乏統(tǒng)一的API
端游指令流介紹
基于指令流的端游蓖乘,在原理锤悄、與架構(gòu)上與終端游戲的指令流是一致,區(qū)別在于嘉抒,API調(diào)用時(shí)產(chǎn)生的數(shù)所量級(jí)大零聚,也視頻流方案也大很多,因此需要針對(duì)數(shù)據(jù)做細(xì)分壓縮;在服務(wù)器端隶症,需要實(shí)現(xiàn)Virtual DirectX3D容诬,擺脫對(duì)顯卡、顯示器的依賴沿腰。
視頻串流中的具體實(shí)現(xiàn)
- 控制流的傳輸 (重點(diǎn))
本次演講主要內(nèi)容將包括云游戲整體方案的架構(gòu)介紹、使用開Open WebRTC ToolKit (OWT)實(shí)現(xiàn)流和控制命令的傳輸狈定,以及為實(shí)現(xiàn)云游戲所需的超低延遲所做的優(yōu)化颂龙。
WebRTC實(shí)時(shí)音視頻和數(shù)據(jù)傳輸為云游戲提供了很好的技術(shù)支撐,用戶不用下載任何插件纽什,在瀏覽器里就可以玩高端游戲措嵌,所以用WebRTC進(jìn)行視頻和音頻的傳輸。傳輸層會(huì)把音視和視頻的數(shù)據(jù)發(fā)到客戶端芦缰,客戶端再進(jìn)行解碼和播放企巢。因?yàn)橥嬗螒颍脩羰怯休斎氲娜美伲钥蛻舳诉€需要采集用戶的鼠標(biāo)浪规、鍵盤、手柄等信息探孝,這些信息通過(guò)WebRTC的data channel笋婿,發(fā)到服務(wù)器上的WebRTC的傳輸層,然后傳輸層會(huì)把指令拆出后再傳到事件的重播模塊顿颅,重播模塊相當(dāng)于把用戶在客戶端的指令重新應(yīng)用到游戲里面去缸濒。https://cloud.tencent.com/developer/article/1554806
上圖部分我將對(duì)WebRTC的傳輸模塊做一個(gè)更詳細(xì)的解釋,首先粱腻,在視頻源外部進(jìn)行編碼器的優(yōu)化庇配,這是基于SDK做的一個(gè)編碼好的視頻數(shù)據(jù),視頻數(shù)據(jù)再把編碼好的視頻源送進(jìn)WebRTC的模塊绍些,所以這里用到的是一個(gè)已經(jīng)構(gòu)造好的接口捞慌。其次,音頻方面遇革,目前我們是直接把GamingAnywhere抓到的音頻的PCM數(shù)據(jù)直接輸入卿闹,用WebRTC內(nèi)置的音頻編碼器進(jìn)行編碼,最終將音頻和視頻全部發(fā)送到發(fā)送器萝快,作為RTP打包后再發(fā)送出去锻霎。另一端通過(guò)客戶端把鼠標(biāo)、鍵盤等事件全部收集好揪漩,再傳到datachannel的SCTP模塊旋恼。通過(guò)ga-controller把客戶端上JSON格式的鼠標(biāo)、鍵盤事件轉(zhuǎn)成SDL格式的事件送到SDL模塊奄容。
- 事件傳輸 SCTP
騰訊云的解決方案
穩(wěn)定低延時(shí)的音視頻互動(dòng)能力
- 基于 Tencent-RTC 進(jìn)行擴(kuò)展冰更,大幅度降低開發(fā)難度产徊;
- “騰訊明眸極速高清”智能動(dòng)態(tài)編碼技術(shù),低碼率高畫質(zhì)蜀细;
- 基于優(yōu)秀的網(wǎng)絡(luò)調(diào)控算法和完善的差錯(cuò)恢復(fù)機(jī)制舟铜,有效提升播放效果;
- 基于 UDP 的高效信令數(shù)據(jù)傳輸通道奠衔,方便實(shí)現(xiàn)操作信令交互谆刨。
精細(xì)化的資源調(diào)度能力
- 基于鏡像更新,無(wú)縫更新游戲內(nèi)容版本归斤;
- 遍布全國(guó)的邊緣計(jì)算節(jié)點(diǎn)痊夭,請(qǐng)求就近調(diào)度管理;
- 支持 BGP脏里、邊緣網(wǎng)絡(luò)接入她我,降低帶寬使用成本;
- 提供端游 X86 架構(gòu)+手游 ARM 架構(gòu)方案迫横。
類似案例
遠(yuǎn)程桌面 一種基于WebRTC與UDP組播的一對(duì)多遠(yuǎn)程控制桌面的實(shí)現(xiàn)思路https://juejin.im/post/5c4ef28d5188252533160efc
Chrome リモートデスクトップ
リモート側(cè)のマウスやキーボード情報(bào)を WebRTC DataChannel を利用して P2P 経由で送っている
リモート先のマシンの全畫面を WebRTC MediaChannel を利用して P2P 経由で送っている
data-channels: https://webrtc.org/getting-started/data-channelsIMSDK 通過(guò)自定義消息來(lái)傳送包裝過(guò)的鼠標(biāo)和鍵盤事件番舆。即時(shí)通信保障可靠但是比實(shí)時(shí)TRTC的延時(shí)來(lái)得慢。
具體函數(shù):sendC2CCustomMessage 员淫, sendGroupCustomMessage
API:http://doc.qcloudtrtc.com/im/classcom_1_1tencent_1_1imsdk_1_1v2_1_1V2TIMManager.html#a59a8ba6e4a973b4c40a09ae7dfdc6981通過(guò)TRTC發(fā)送自定義消息來(lái)實(shí)現(xiàn)
具體函數(shù):sendCustomCmdMsg合蔽,sendSEIMsg 但是每秒只能發(fā)30次。也就是說(shuō)至少有33ms的延遲
http://doc.qcloudtrtc.com/group__TRTCCloud__ios.html#acbc86da0cb558c549f42e7e987c7beaf