国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

游戲模擬器云化的架構(gòu)與實施

2022-03-11 12:39呂麗珺
電腦知識與技術(shù) 2022年1期
關(guān)鍵詞:性能優(yōu)化解決方案

摘要:該文以安卓平臺上一款游戲模擬器的云化過程為例,分析了研發(fā)背景和云化方案的選擇思路,根據(jù)游戲模擬器的特點設(shè)計了輕量級、低損耗的音視頻攔截方案,給出了具體實施的系統(tǒng)架構(gòu)和各模塊功能,并針對解決方案中存在的問題提出了節(jié)約系統(tǒng)資源、提高用戶體驗、減少用戶流量成本的一系列優(yōu)化方法。

關(guān)鍵詞:游戲模擬器;云游戲;音視頻攔截方案;解決方案;性能優(yōu)化

中圖分類號:TP37? ? ? 文獻標識碼:A

文章編號:1009-3044(2022)01-0116-03

1 背景

隨著智能手機的普及,原來傳統(tǒng)游戲平臺遇到了瓶頸,面臨淘汰的風(fēng)險。游戲平臺升級會帶來老用戶體驗下降、用戶流失,如果游戲平臺不升級但是隨著用戶手機硬件變?yōu)橹悄苁謾C而無法使用。因此,如何利用軟件技術(shù)實現(xiàn)傳統(tǒng)游戲平臺到云游戲平臺的轉(zhuǎn)化,實現(xiàn)用戶體驗不變,又能很好地兼容不同的智能手機硬件是傳統(tǒng)游戲平臺急需解決的問題。

某公司就是該場景的典型案例,該公司有一款面向功能機的游戲模擬器產(chǎn)品。該產(chǎn)品在功能機為游戲開發(fā)提供了統(tǒng)一接口,屏蔽了不同機型的硬件差異?;谠撃M器開發(fā)的游戲可便利地在不同功能機上移植,因此吸引了眾多游戲開發(fā)商為其開發(fā)游戲,而豐富的游戲內(nèi)容為該模擬器吸引了大量用戶。

隨著智能機時代的到來,該游戲模擬器被移植到安卓平臺。因市場環(huán)境變化,新增用戶較少但仍有大量存量用戶。

某段時間,該公司發(fā)現(xiàn)存量用戶的流失加快。經(jīng)市場部門調(diào)研發(fā)現(xiàn)是因為蘋果發(fā)布新手機,導(dǎo)致不少用戶從安卓手機更換為蘋果手機。經(jīng)進一步調(diào)研得知,這些更換手機的用戶都是公司從功能機時代積累起來的,具有較高的忠誠度,他們?nèi)匀幌M谔O果手機上能夠使用對應(yīng)的游戲模擬器。

為此市場部門要求研發(fā)部門在iOS平臺提供對應(yīng)的游戲模擬器產(chǎn)品,以防止安卓手機上的用戶進一步流失,并挽回已遷移到蘋果手機上的用戶。

2 技術(shù)方案選擇

2.1 移植方案

研發(fā)部門計劃把游戲模擬器和游戲從安卓上移植到iOS系統(tǒng)上,但是經(jīng)研究發(fā)現(xiàn)兩者均存在困難。

對于游戲模擬器,移植的困難有三點。1)游戲模擬器代碼規(guī)模龐大,達數(shù)十萬行,且邏輯復(fù)雜;2)游戲模擬器底層需要針對iOS平臺做大量的接口適配工作,技術(shù)挑戰(zhàn)大;3)游戲模擬器產(chǎn)品已經(jīng)處于維護階段,只有少數(shù)員工維護,開發(fā)所需的人力資源不足。

對于游戲的移植,雖然不需要變動游戲邏輯(因為游戲模擬器屏蔽了設(shè)備和系統(tǒng)差異),但是需要游戲編譯iOS平臺的版本。然而這些游戲年代久遠,不少開發(fā)商已經(jīng)聯(lián)系不上或者注銷,無法被重新編譯。

綜合考慮,移植方案不可行。

2.2 云游戲方案

由于移植方案的成本高昂,那么是否有其他方案呢?研發(fā)部門把目光投向了云游戲解決方案。

云游戲是使得在計算能力較弱的客戶端能運行高品質(zhì)游戲的一種方式。云端運行游戲邏輯,而客戶端僅僅是展示游戲畫面、播放音頻,以及收集、傳遞用戶的控制命令發(fā)送到云端。因此可以避免客戶端上大量的移植和改造工作。由于模擬器上的游戲都較老,分辨率普遍較低,也適合做成云游戲。

實現(xiàn)云游戲的關(guān)鍵是服務(wù)端能高效快速地實現(xiàn)對游戲音視頻的攔截。傳統(tǒng)的攔截方式有兩種:一種是在設(shè)備截獲其音視頻,進行編碼,這種方式需要依賴較高級的硬件配置。另一種是hook操作系統(tǒng)中游戲用到的圖像繪制和音頻播放接口,以攔截對應(yīng)的數(shù)據(jù)流,這種方案需要了解對應(yīng)操作系統(tǒng)的相關(guān)接口[1]。

如果采用上述攔截方式,需要涉及大量研發(fā)部門未曾用過的技術(shù),不利于在資源少、投入少的情況下快速開發(fā),因此還需另辟蹊徑??紤]到游戲的繪制、音頻播放都是調(diào)用游戲模擬器的接口,如果在相應(yīng)的接口層攔截數(shù)據(jù),也可以達到和傳統(tǒng)攔截方式同樣的目的。這種輕量級的攔截方式不僅技術(shù)難度較低,而且還因為避免繪制游戲或者拷貝顯存而更加高效。

3 技術(shù)架構(gòu)設(shè)計

3.1 技術(shù)框架設(shè)計

整體技術(shù)方案的框架劃分為模擬器端、服務(wù)器端和客戶端。模擬器端運行真實MRP游戲,實現(xiàn)畫面攔截轉(zhuǎn)發(fā),模擬用戶操作游戲動作。服務(wù)器控制模擬器管理,進行數(shù)據(jù)轉(zhuǎn)發(fā)(通過TCP連接)??蛻舳苏故居螒虍嬅妗r截和轉(zhuǎn)發(fā)用戶行為,且實現(xiàn)登錄等其他基本功能。模擬器端由節(jié)點管理服務(wù)矩陣組成,服務(wù)器端由數(shù)據(jù)庫、配置服務(wù)和ftp服務(wù)組成,客戶端為移動終端。具體架構(gòu)如圖1所示。

1)iOS客戶端。iOS客戶端是用戶使用云游戲的入口,按照安卓游戲模擬器界面風(fēng)格設(shè)計,出于跨平臺的考慮,使用h5技術(shù)實現(xiàn)。

用戶先需登錄客戶端以獲取訪問云游戲系統(tǒng)的權(quán)限。之后,客戶端請求列表服務(wù)獲取可用的游戲列表,展示在界面上。當(dāng)用戶在界面上選擇使用某款游戲后,客戶端啟動該游戲的一次云服務(wù)過程。

在云游戲過程中,客戶端首先向游戲模擬器資源分配服務(wù)申請資源,接著連接到資源中指定的游戲數(shù)據(jù)傳輸中介服務(wù),之后借助于傳輸中介服務(wù)和云端的游戲模擬器通信,進而完成整個云游戲的過程。

2)游戲列表服務(wù)。游戲列表服務(wù)是云端供客戶端查詢云游戲列表的接口。它通過查詢配置數(shù)據(jù)庫把查詢結(jié)果返回給客戶端。配置數(shù)據(jù)庫中的數(shù)據(jù)由運營人員通過部署服務(wù)器配置。

3)游戲模擬器資源分配服務(wù)。游戲模擬器資源分配服務(wù)是云端供客戶端創(chuàng)建云游戲服務(wù)的接口。

空閑的游戲模擬器會連接到游戲模擬器資源分配服務(wù),等待任務(wù)分配。當(dāng)游戲模擬器資源分配服務(wù)收到客戶端連接請求時,它會把請求轉(zhuǎn)發(fā)到某個等待中的游戲模擬器,之后將游戲模擬器返回的資源信息轉(zhuǎn)發(fā)給客戶端。

4)游戲數(shù)據(jù)傳輸中介服務(wù)。游戲數(shù)據(jù)傳輸中介服務(wù)是客戶端和游戲模擬器傳輸數(shù)據(jù)的中介。它的主要任務(wù)是協(xié)助客戶端和游戲模擬器進行對接及數(shù)據(jù)轉(zhuǎn)發(fā)。

5)游戲模擬器集群。云端有多臺服務(wù)器節(jié)點,每個服務(wù)器節(jié)點裝有Ubuntu系統(tǒng) + VirtualBox + genymotion環(huán)境[2]。Genymotion可創(chuàng)建多個安卓模擬器實例,每個安卓模擬器可以安裝一個預(yù)裝了目標游戲的游戲模擬器應(yīng)用,由此組成游戲模擬器集群。每個游戲模擬器可為一個用戶提供云游戲服務(wù)。由于游戲模擬器處于內(nèi)網(wǎng)不能直接被客戶端訪問,因此必須通過游戲模擬器資源分配服務(wù)和游戲數(shù)據(jù)傳輸中介服務(wù)才能為客戶端提供服務(wù)。

游戲模擬器有三種狀態(tài),空閑、等待以及忙碌狀態(tài)。在空閑狀態(tài)下,它連接到游戲模擬器資源分配服務(wù)等待任務(wù)的分配。取得任務(wù)后它連接到游戲數(shù)據(jù)傳輸中介等待客戶端連接,同時將資源信息(模擬器id、對接客戶端的游戲數(shù)據(jù)傳輸中介服務(wù)器url地址)返回給游戲模擬器資源分配服務(wù)。此時進入等待狀態(tài)。在等待狀態(tài)下,如果在規(guī)定時間內(nèi)對應(yīng)的客戶端連接到了游戲數(shù)據(jù)傳輸中介服務(wù),則游戲模擬器進入忙碌狀態(tài)。此后,它啟動目標游戲、攔截并轉(zhuǎn)發(fā)數(shù)據(jù)到客戶端、接收并處理來自客戶端用戶控制命令。最后,當(dāng)一次云服務(wù)結(jié)束時,客戶端、游戲數(shù)據(jù)傳輸中介服務(wù)、游戲模擬器之間的連接被銷毀,游戲模擬器重新恢復(fù)到空閑狀態(tài)。

6)配置服務(wù)。配置服務(wù)是運營人員部署云游戲的接口。運營人員可以通過配置服務(wù)配置系統(tǒng)支持的游戲列表,為每款游戲設(shè)定對應(yīng)的部署資源包,并將該部署資源包指派給特定的服務(wù)器節(jié)點。

部署資源包中含有g(shù)enymotion安卓模擬器鏡像和部署參數(shù)文件,其中鏡像上預(yù)裝了含有目標游戲的游戲模擬器。它最會被上傳到ftp服務(wù)器供需要服務(wù)器節(jié)點下載。

7)節(jié)點管理服務(wù)。節(jié)點管理服務(wù)負責(zé)在服務(wù)器節(jié)點上的部署云游戲。它定時配置服務(wù)本節(jié)點的部署資源包。如果有新部署資源包,它會則下載到本地。

下載完畢后,它先執(zhí)行g(shù)enymotion命令卸載所有老安卓模擬器鏡像,然后使用部署資源包中的新安卓模擬器鏡像創(chuàng)建并啟動多個實例。最后,它再根據(jù)部署資源包中的部署參數(shù)文件啟動、配置游戲模擬器。

3.2 交互設(shè)計

系統(tǒng)的客戶端和游戲模擬器對接、傳輸數(shù)據(jù)的完整過程如圖2所示。通過加入游戲列表、游戲模擬器資源分配服務(wù)、游戲數(shù)據(jù)傳輸中介服務(wù)將每個用戶占用一整套服務(wù)資源進行云化,根據(jù)算法進行分步、分時為提供用戶不同操作下異步的請求實現(xiàn)多用戶多端口并行處理服務(wù)。

4 技術(shù)框架的實施

4.1 用戶到云游戲模擬器端的技術(shù)實施

游戲模擬器上的游戲端與服務(wù)器保持長鏈接,瀏覽器端與服務(wù)器保持長鏈接。

登錄行為:瀏覽器端html實現(xiàn)輸入框彈窗,登錄時將賬號密碼封裝成protobuf數(shù)據(jù)包發(fā)送至游戲模擬器端登錄成功后啟動游戲。

斷線行為:當(dāng)網(wǎng)絡(luò)環(huán)境不好或用戶關(guān)閉瀏覽器時,瀏覽器端與服務(wù)端的長鏈接斷開,此時,游戲模擬器端與服務(wù)器端的長鏈接會持續(xù)保存5分鐘,如果5分鐘后無再次連接,游戲模擬器端就會重啟游戲進程重新連接服務(wù)器,如果5分鐘內(nèi)瀏覽器端重新連接上,那么服務(wù)端會將該瀏覽器與游戲模擬器重新匹配上,達到斷線重連的效果。

點擊行為:游戲模擬器上的游戲端畫面分辨率為240x320,所以在瀏覽器端畫面等比放大,瀏覽器端捕捉點擊與抬起事件,當(dāng)滑動屏幕時,定時捕捉屏幕坐標作為點擊事件,捕捉到的事件通過protobuf協(xié)議封裝成數(shù)據(jù)包發(fā)送至游戲模擬器的游戲端[3]。

4.2 云游戲模擬器的技術(shù)實施步驟

將游戲在模擬器上后臺運行多個(節(jié)省服務(wù)器資源)。游戲模擬器上額外運行一個管理程序,負責(zé)游戲的啟動關(guān)閉,異常處理。

每個游戲啟動一個連接至中轉(zhuǎn)服務(wù)保持的長鏈接,瀏覽器端發(fā)起websocket長鏈接至中轉(zhuǎn)服務(wù)。

中轉(zhuǎn)服務(wù)將瀏覽器端的長鏈接與游戲端的長鏈接進行互傳數(shù)據(jù)。

游戲端在收到瀏覽器端發(fā)來的指令后啟動游戲,生成游戲畫面,分片抓取生成數(shù)據(jù)包傳輸至瀏覽器端。

瀏覽器端收到數(shù)據(jù)之后分片在不同屏幕區(qū)域上進行展示畫面。

游戲端根據(jù)摘要算法對每個數(shù)據(jù)包緩存md5值,發(fā)送數(shù)據(jù)包的時候進行md5值比對,不發(fā)送相同的數(shù)據(jù)包。

在前端進行數(shù)據(jù)包緩存,根據(jù)md5值進行存取達到節(jié)省流量提高運行速度的效果。

瀏覽器端捕捉屏幕觸摸事件,輸入框或按鈕生成指令發(fā)送到游戲端進行交互從而控制游戲。

5 系統(tǒng)性能優(yōu)化

相比而言,云游戲方案避免了移植所帶來的巨大工作量和風(fēng)險,但是它也存在一些問題。一方面,由于游戲?qū)嵗技性谠贫说姆?wù)器節(jié)點運行,使服務(wù)器節(jié)點的計算能力成為瓶頸。另一方面,云游戲需要處理、傳輸大量音視頻數(shù)據(jù),容易引發(fā)延時、卡頓、用戶流量消耗過大等問題。為此,研發(fā)部門采用了如下幾類措施進行優(yōu)化。

5.1 優(yōu)化資源

1)精簡模擬器鏡像。刪除genymotion鏡像上無關(guān)的系統(tǒng)應(yīng)用,如郵件、聯(lián)系人、圖庫等,以減少鏡像內(nèi)的存儲資源占用。

2)多開游戲模擬器。通過變更包名的方式,可多個游戲模擬器可在安卓上同時運行。在某特定型號的服務(wù)器節(jié)點上,可支持同時開啟5個安卓模擬器,每個安卓模擬器可開啟5個游戲模擬器。故單節(jié)點可支持25個用戶,并發(fā)量大大提高。

3)自動化縮放游戲模擬器集群。通過實時監(jiān)控游戲模擬器集群的連接狀況,可以動態(tài)縮放集群的規(guī)模。當(dāng)總連接數(shù)超過最高閾值時,配置管理模塊可以自動化快速動態(tài)部署新游戲模擬器到新服務(wù)器節(jié)點;當(dāng)總連接數(shù)低于最低閾值時,配置管理模塊則自動化取消部分服務(wù)器節(jié)點,釋放資源。

5.2 減少視頻數(shù)據(jù)傳輸

1)單圖片分塊傳輸。模擬器游戲的一個特點是存在大量的只有局部圖像變化的場景(例如砍殺怪物時),此時沒有必要傳輸全部的圖像。

游戲模擬器把游戲畫面分塊,檢測各個區(qū)塊的變化,并僅將變化的區(qū)塊發(fā)送到客戶端[4]??蛻舳酥恍柙隽扛缕渲凶兓牟糠?。由于游戲的分辨率不高,大多只有320x240,因此分塊算法所消耗的CPU在可以接受的范圍內(nèi)。此項優(yōu)化大大減少了網(wǎng)絡(luò)傳輸?shù)膱D像數(shù)據(jù)量,自然而然也降低了網(wǎng)絡(luò)傳輸?shù)牟淮_定性和時延。

2)幀優(yōu)化。根據(jù)游戲在游戲模擬器平臺上的開發(fā)約定,游戲過程中游戲只能在模擬器的局部區(qū)域內(nèi)繪制畫面。當(dāng)播放過場動畫時,需要切換到全屏繪制。

因此游戲模擬器可以根據(jù)接口層檢測到的繪制尺寸的變化來判斷游戲是否處于過場動畫階段。如果處于過場動畫階段,游戲模擬器只攔截并傳輸過場動畫的第一幀,丟棄后續(xù)幀。直到繪制區(qū)域大小發(fā)生變化(意味著過場動畫結(jié)束,重新進入游戲界面)。

這種方法是犧牲部分用戶體驗,節(jié)省了數(shù)據(jù)傳輸成本。

3)優(yōu)化網(wǎng)絡(luò)協(xié)議??蛻舳伺c中繼、中繼與云端的交互中,都使用protobuf協(xié)議封裝數(shù)據(jù)[5]。目的是減少傳輸?shù)膮f(xié)議數(shù)據(jù)量、且提高解析速度。protobuf具有平臺無關(guān)和語言無關(guān)的優(yōu)點,易擴展,便于在服務(wù)端和客戶端異質(zhì)平臺通信。解析速度比解析XML快約20-100倍。且序列化數(shù)據(jù)非常緊湊,其序列化之后的數(shù)據(jù)量約XML文本方式的1/3到1/10。

6 結(jié)束語

經(jīng)過上述優(yōu)化,整個云游戲系統(tǒng)能穩(wěn)定地工作。最終客戶端和服務(wù)端的處理和傳輸?shù)臅r延小于100ms,游戲所需的帶寬約為30KB/S,畫面較為流暢,用戶體驗良好。因單臺服務(wù)器節(jié)點支持25路并發(fā)服務(wù),部署十臺服務(wù)器可供250個用戶同時在線,滿足了業(yè)務(wù)部門的目標。

參考文獻:

[1] 劉穎,秦貴和.基于iOS遠程控制應(yīng)用的設(shè)計與實現(xiàn)[J].吉林大學(xué)學(xué)報(信息科學(xué)版),2011,29(5):451-456.

[2] 姜洪濤.基于WPF的云游戲時延可視化系統(tǒng)設(shè)計與實現(xiàn)[J].工業(yè)控制計算機,2019,32(6):76-77,80.

[3] 劉螢.基于私有云平臺的手游開發(fā)環(huán)境構(gòu)建研究[J].計算機產(chǎn)品與流通,2018(4):145.

[4] 關(guān)鵬宇.基于云技術(shù)的網(wǎng)絡(luò)游戲平臺的設(shè)計與實現(xiàn)[D].長春:吉林大學(xué),2015(12).

[5] 梁國壯,安在秋,田涵雷,等.基于網(wǎng)絡(luò)協(xié)議的無線遠程數(shù)據(jù)傳輸系統(tǒng)設(shè)計[J].現(xiàn)代電子技術(shù).2020,43(6):23-26.

【通聯(lián)編輯:謝媛媛】

收稿日期:2021-09-16

作者簡介:呂麗珺(1981—),女,浙江松陽人,講師,碩士,研究方向為網(wǎng)絡(luò)應(yīng)用技術(shù)、電子商務(wù)應(yīng)用和商務(wù)數(shù)據(jù)分析。

3808500338226

猜你喜歡
性能優(yōu)化解決方案
艾默生自動化解決方案
解決方案和折中方案
S700K-C轉(zhuǎn)轍機防水解決方案探討
SQL Server數(shù)據(jù)庫性能優(yōu)化的幾點分析
Web應(yīng)用的前端性能優(yōu)化
WEB網(wǎng)站緩存性能優(yōu)化
Oracle數(shù)據(jù)庫性能調(diào)整與優(yōu)化分析
4G LTE室內(nèi)覆蓋解決方案探討
Moxa 802.11n WLAN解決方案AWK-1131A系列