大綱
1.云游戲概念
2.游戲流程圖
3.按鍵下發(fā)
4.按鍵自定義
5.sdk接口
6.鼠標模式
7.優(yōu)化和方案
8.解決的問題
9.歷史
10.后續(xù)
云游戲概念
云游戲就是通過和遠程服務(wù)器建立連接,服務(wù)器通過推送視頻流,音頻流,顯示在客戶端,同時客戶端發(fā)送操作指令,操作遠程服務(wù)器的行為。
游戲業(yè)務(wù)啟動流程圖

云游戲sdk初始化流程圖

部分說明:本地sdk獲取clientSession -> 業(yè)務(wù)服務(wù)器再獲取ServerSession -> sdk.start->建立連接->獲取視頻流
按鍵下發(fā)
1.定義按鍵接口
2.按鍵下發(fā)后臺
3.游戲按鍵設(shè)計圖

按鍵自定義
1.目前支持自定義的按鍵包含: 鼠標和鍵盤,組合鍵,輪盤鍵, 左右鍵
2.按鍵的具體可定義屬性包含: 按鍵增,刪,改,
3.單個按鍵支持行為:縮放,編輯內(nèi)容,刪除
4.按鍵的點擊模式:點擊模式,長按模式,狀態(tài)模式
自定義輪盤鍵技術(shù)總結(jié)
按鍵增刪改,縮放,拖拽總結(jié)
5.按鍵對應(yīng)的mean()
注意點:
1.按鍵模式的區(qū)分, 2.例如:點擊模式 down的時候,先move還是先down
2.組合鍵:2個按鍵合并為一個按鍵
3.輪盤鍵(按鍵數(shù)量>=2&& >= 8)
4.按鍵數(shù)據(jù)的設(shè)計和按鍵功能
5.按鍵增刪改設(shè)計
sdk接口
視頻流和接口底層使用webrtc協(xié)議傳輸,保證傳輸穩(wěn)定和安全,詳情見:TenGameController
鼠標模式
目前支持的鼠標模式包含: 1.點擊模式 2.滑動模式 3.滑動點擊模式
舊版本有我們業(yè)務(wù)方自己實現(xiàn),最新的純原生sdk,已經(jīng)交由騰訊sdk實現(xiàn),具體參考類: GameView
屏幕雙指縮放,拖拽
舊版本也是我們業(yè)務(wù)方自己實現(xiàn),最新的純原生sdk,也已經(jīng)交由騰訊sdk
【雙指縮放和拖拽相關(guān)技術(shù)總結(jié):

優(yōu)化和方案
1.鼠標位置如何映射
舉個例子:比如后臺下發(fā)分辨率為1280 * 800的視頻,但是手機(橫屏)是1920 * 1080,根據(jù)等比例縮放規(guī)則,
scaleX = 1920 / 1280 = 1.5
scaleY = 1080 / 800 = 1.35
scale = Math.min(scaleX, scaleY)
divide = (1920 - 1080 * scale) / 2 = 96 //那么2邊留黑空隙為96
那么eventX,eventY必須處理為(1280 * 800的區(qū)間)
changeX = (eventX - divide) / scale
changeY = eventY / scale
2.提高采集速度,減少視頻延遲
首先分為合采和獨采,所謂合采就是把鼠標圖標采集到視頻,獨采就是指視頻流不包含鼠標。
合并的優(yōu)點是鼠標帶入視頻,無需客戶端自己繪制,缺點是采集鼠標需要消耗性能,增加視頻采集時間,增加延遲,獨采反之。
3.保證游戲操作的及時性和可靠性,使用kcp協(xié)議
Udb 效率高,但是可能丟包,不可靠
Tcp 可靠,面向連接,擁有流量控制和擁塞機制,但是效率低
Kcp 是一個快速可靠協(xié)議,能以比Tcg浪費10%-20%的寬帶的代價,換取平均延遲降低30%-40%,且最大延遲降低3倍的傳輸效率,同時Kcp是純算法協(xié)議,本身并不負責(zé),底層的收發(fā)。
項目使用Kcp為算法協(xié)議,底層傳輸為Udp,利用Udp的快速傳輸,同時使用Kcp內(nèi)部算法驗證機制,保證游戲操作的快速和數(shù)據(jù)完整性。
碰到到的一些小問題
#1.鼠標滑動和按鍵TouchEvent事件不能同時觸發(fā)
#2.雙指縮放和拖拽
#3.屏幕縮放問題
#4.部分機型適配問題
1.鼠標滑動和按鍵TouchEvent事件不能同時觸發(fā)
由于父容器和子view同時監(jiān)聽onTouchListener事件,導(dǎo)致事件被攔截。當容器間存在父子關(guān)系時候,只能由一方接管touch事件。

消費事件圖

通過消費事件圖,我們可以知道當子View的 setOntouchListener返回true時,View的onTouchEvent已經(jīng)消費事件,上層ViewGroup將無法收到該事件,所以為了解決該問題,我們在父容器中增加觸摸層和按鍵,2者變?yōu)樾值荜P(guān)系,問題解決。
2.雙指縮放和雙指拖拽
走入縮放和拖拽必須2選一的誤區(qū),結(jié)果無論怎么判斷都無法達到流暢的目標
相關(guān)技術(shù)總結(jié)
3.部分機型適配問題
(1.部分機型擠壓問題)

1.本身空間不足
4. 縮放功能
歷史
公司云游戲已經(jīng)停運
后續(xù)
如果后期需要加大云游戲開發(fā),包括手游支持,可能需要獨立出游戲插件,