手機云游戲

大綱

1.云游戲概念
2.游戲流程圖
3.按鍵下發(fā)
4.按鍵自定義
5.sdk接口
6.鼠標模式
7.優(yōu)化和方案
8.解決的問題
9.歷史
10.后續(xù)

云游戲概念

云游戲就是通過和遠程服務(wù)器建立連接,服務(wù)器通過推送視頻流,音頻流,顯示在客戶端,同時客戶端發(fā)送操作指令,操作遠程服務(wù)器的行為。

游戲業(yè)務(wù)啟動流程圖

云游戲流程圖.png

云游戲sdk初始化流程圖

云游戲sdk初始化.png

部分說明:本地sdk獲取clientSession -> 業(yè)務(wù)服務(wù)器再獲取ServerSession -> sdk.start->建立連接->獲取視頻流

按鍵下發(fā)

1.定義按鍵接口
2.按鍵下發(fā)后臺
3.游戲按鍵設(shè)計圖

云游戲按鍵設(shè)計圖.png

按鍵自定義

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é):


雙指縮放和拖拽.jpg

優(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事件。


同時觸摸圖.png

消費事件圖


消費事件.png

通過消費事件圖,我們可以知道當子View的 setOntouchListener返回true時,View的onTouchEvent已經(jīng)消費事件,上層ViewGroup將無法收到該事件,所以為了解決該問題,我們在父容器中增加觸摸層和按鍵,2者變?yōu)樾值荜P(guān)系,問題解決。

2.雙指縮放和雙指拖拽

走入縮放和拖拽必須2選一的誤區(qū),結(jié)果無論怎么判斷都無法達到流暢的目標
相關(guān)技術(shù)總結(jié)

3.部分機型適配問題

(1.部分機型擠壓問題)

擠壓圖.png

1.本身空間不足

4. 縮放功能

歷史

公司云游戲已經(jīng)停運

后續(xù)

如果后期需要加大云游戲開發(fā),包括手游支持,可能需要獨立出游戲插件,

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 云游戲的架構(gòu)設(shè)計和技術(shù)實現(xiàn)https://blog.csdn.net/RA681t58CJxsgCkJ31/art...
    Sirus_32e0閱讀 912評論 0 0
  • This article is a record of my journey to learn Game Deve...
    蔡子聰閱讀 4,129評論 0 9
  • 我是黑夜里大雨紛飛的人啊 1 “又到一年六月,有人笑有人哭,有人歡樂有人憂愁,有人驚喜有人失落,有的覺得收獲滿滿有...
    陌忘宇閱讀 8,887評論 28 54
  • 信任包括信任自己和信任他人 很多時候,很多事情,失敗、遺憾、錯過,源于不自信,不信任他人 覺得自己做不成,別人做不...
    吳氵晃閱讀 6,391評論 4 8
  • 步驟:發(fā)微博01-導(dǎo)航欄內(nèi)容 -> 發(fā)微博02-自定義TextView -> 發(fā)微博03-完善TextView和...
    dibadalu閱讀 3,429評論 1 3

友情鏈接更多精彩內(nèi)容