專利名稱:一種云游戲服務(wù)平臺的制作方法
技術(shù)領(lǐng)域:
本發(fā)明屬于游戲服務(wù)技術(shù)領(lǐng)域,具體涉及一種云游戲服務(wù)平臺。
背景技術(shù):
上一個十年,是個人電腦高速發(fā)展的時代,計算機硬件性能越來越強,處理的任務(wù)越來越多。隨著游戲開發(fā)水平的提高,高端游戲畫面越來越逼真,尤其是以3D畫面水平頗高。而這些絢麗畫面的實現(xiàn)離不開高端的硬件支持,因而游戲運行環(huán)境配置要求越來越高,這些配置包括CPU、內(nèi)存、顯卡等。隨著游戲不斷升級更新,這些高配置的機器也將逐步淘汰。這種無止境的硬件升級更新給游戲用戶帶來巨大的資源浪費,如何為游戲用戶節(jié)約錢袋成為游戲廠商和運營商不得不考慮的問題。云計算是繼八十年代大型計算機到客戶端-服務(wù)器的大轉(zhuǎn)變之后的又一種巨變。云計算(cloud computing),是一種基于互聯(lián)網(wǎng)的計算方式,通過這種方式,共享的軟硬件資源和信息可以按需提供給計算機和其他設(shè)備。云計算的核心思想,是將大量用網(wǎng)絡(luò)連接的計算資源統(tǒng)一管理和調(diào)度,構(gòu)成一個計算資源池向用戶按需服務(wù)。提供資源的網(wǎng)絡(luò)被稱為“云”。當(dāng)前,在云計算領(lǐng)域研究開發(fā)和推廣應(yīng)用等方面,處于領(lǐng)先的公司仍然是一些技術(shù)先進、實力雄厚的世界級知名公司微軟、谷歌、亞馬遜、IBM等。他們積極投入研發(fā)并努力將其成果推廣應(yīng)用,如網(wǎng)絡(luò)移動磁盤,全球數(shù)據(jù)備份中心、云存儲基礎(chǔ)架構(gòu)、云計算結(jié)構(gòu)體系、云技術(shù)推廣應(yīng)用的實施標(biāo)準、云安全保障體系等。云計算研究成果的推廣應(yīng)用,為解決游戲用戶資源浪費提供了新的途徑。隨著網(wǎng)絡(luò)寬帶進入千家萬戶,家庭帶寬逐步提高,資費也逐步下調(diào),特別是家庭光寬帶的興起,云游戲的概念也隨之而生。云游戲是云計算和游戲相結(jié)合的產(chǎn)物,其通過云計算和云存儲系統(tǒng)來構(gòu)建一個龐大的、超能的游戲服務(wù)器集群,在云服務(wù)器上運行各種游戲,然后服務(wù)器將畫面進行渲染并壓縮,隨后將這些視頻流實時的傳回到用戶的電腦上,而用戶接收畫面后,再向服務(wù)器發(fā)送操作指令。游戲體驗非常逼真,就和在自己的電腦上運行游戲一樣。用戶無需要下載、安裝大容量的游戲程序,免除了軟件系統(tǒng)和設(shè)備性能升級限制等問題。
雖然云游戲使用方式簡單、輕巧、方便,但是背后卻消耗著大量的資源,如服務(wù)器端資源開銷極大;對網(wǎng)絡(luò)環(huán)境要求極高、帶寬開銷極大;某些游戲?qū)憫?yīng)延遲要求十分苛亥IJ、網(wǎng)絡(luò)穩(wěn)定性要求很高等??梢姡朴螒蛟诮鉀Q用戶硬件問題的同時還給了用戶強大的帶寬承載,但是目前我國的寬帶流量平均值低于2MB/S,所以從客觀上也阻撓了網(wǎng)絡(luò)質(zhì)量的提升、云游戲的推廣。綜上所述,目前云游戲存在以下幾點主要問題1、由于高端游戲運行消耗大量的硬件資源,所以每臺云游戲服務(wù)器只能運行少許數(shù)目的游戲,因此提高每臺云游戲服務(wù)器運行的游戲數(shù)目、節(jié)約云游戲運營成本是當(dāng)前的首要任務(wù);
2、相比于傳統(tǒng)的網(wǎng)絡(luò)游戲和單機游戲,云游戲的用戶體驗還是存在不小的差距,諸如游戲畫面延遲時間較長,分辨率較低等問題目前是急需解決的。
發(fā)明內(nèi)容
針對現(xiàn)有技術(shù)所存在的上述技術(shù)缺陷,本發(fā)明提供了一種云游戲服務(wù)平臺,用戶只需一臺低配客戶機即能在服務(wù)平臺上暢游運行各種游戲,且能享受到較佳的游戲體驗。
一種云游戲服務(wù)平臺,包括控制服務(wù)器集群、流媒體服務(wù)器集群和游戲服務(wù)器集群;所述的流媒體服務(wù)器集群包含有多臺流媒體服務(wù)器,所述的游戲服務(wù)器集群包含有多臺游戲服務(wù)器;所述的控制服務(wù)器集群包含有多臺控制服務(wù)器,所述的控制服務(wù)器用于接收客戶機發(fā)送的游戲啟動指令和游戲關(guān)閉指令,并根據(jù)游戲啟動指令從流媒體服務(wù)器集群和游戲服務(wù)器集群中分別選取出一臺流媒體服務(wù)器和一臺游戲服務(wù)器分配給該客戶機,以使客戶 機通過所述的流媒體服務(wù)器與所述的游戲服務(wù)器連接,同時將所述的游戲啟動指令和游戲關(guān)閉指令轉(zhuǎn)發(fā)給游戲服務(wù)器;所述的流媒體服務(wù)器用于將客戶機發(fā)送的游戲操作指令轉(zhuǎn)發(fā)給游戲服務(wù)器,并將游戲服務(wù)器產(chǎn)生的流媒體碼流轉(zhuǎn)發(fā)給客戶機;所述的游戲服務(wù)器包括游戲進程管理模塊,用于根據(jù)游戲啟動指令或游戲關(guān)閉指令分別開啟或關(guān)閉對應(yīng)未運行的游戲程序;音視頻抓取模塊,用于實時采集游戲程序的音頻和視頻;編碼模塊,用于對采集到的音頻和視頻進行編碼,得到流媒體碼流;操作指令模擬模塊,用于將所述的游戲操作指令模擬至游戲程序中。優(yōu)選地,所述的游戲服務(wù)器還包括虛擬化多開模塊,其根據(jù)游戲啟動指令或游戲關(guān)閉指令分別開啟或關(guān)閉對應(yīng)已運行的游戲程序;能夠在一臺游戲服務(wù)器上同時運行多個同款游戲程序。優(yōu)選地,所述的控制服務(wù)器連接有認證服務(wù)器,其用于對客戶機進行身份認證;能夠幫助平臺建立安全公平的運營體系。優(yōu)選地,所述的編碼模塊采用CUDA并行計算技術(shù)對采集到的視頻進行編碼;能夠大大減少視頻編碼所消耗的CPU資源,可以保證在多路視頻并行編碼的情況下,也可以為游戲騰出CPU資源,保證游戲的順暢運行。優(yōu)選地,所述的編碼模塊采用開源FAAC編碼技術(shù)對采集到的音頻進行編碼;可以用更短的CPU指令周期完成編碼,提高了編碼效率,降低了音頻延遲。優(yōu)選地,所述的音視頻抓取模塊采用Hook技術(shù)實時采集游戲程序的音頻和視頻;其能抓取各類游戲圖像和聲音。優(yōu)選地,所述的操作指令模擬模塊采用Hook技術(shù)將游戲操作指令模擬至游戲程序中;使游戲能正常讀取到客戶端發(fā)送過來的鍵盤、鼠標(biāo)信息,達到模擬地目的。優(yōu)選地,所述的控制服務(wù)器實時獲取流媒體服務(wù)器集群和游戲服務(wù)器集群的負載信息,并從流媒體服務(wù)器集群和游戲服務(wù)器集群中分別選取出一臺負載最小的流媒體服務(wù)器和一臺負載最小的游戲服務(wù)器分配給客戶機;能夠使流媒體服務(wù)器集群和游戲服務(wù)器集群中各服務(wù)器負載均衡。本發(fā)明云游戲服務(wù)平臺能夠使用戶無需自建高端PC用作游戲機,只要使用一臺低配置的PC、移動終端、電視機頂盒等設(shè)備,并接入高速網(wǎng)絡(luò)即可。所有用戶的游戲都在云游戲服務(wù)平臺上運行,使用獨特的高壓縮比視頻壓 縮技術(shù)將渲染完成的畫面?zhèn)鬏數(shù)接脩舻目蛻舳孙@示,延遲低至10ms。用戶無需下載游戲,只要登陸該平臺,選擇想要加入的游戲就可以直接加入戰(zhàn)局。相對傳統(tǒng)游戲不僅需要繁瑣的購買、下載、安裝等過程,更需要用戶主機擁有高效的CPU、內(nèi)存、顯卡等硬件支持;而云游戲作為全新的體驗?zāi)J?,對用戶終端的硬件性能要求非常低,普通的PC機、機頂盒、移動終端設(shè)備都可以體驗本發(fā)明的云游戲;用戶只需要連接到網(wǎng)絡(luò),對屏幕上的視頻進行操作就可以體驗到各類且豐富的游戲應(yīng)用。
圖1是本發(fā)明的云游戲服務(wù)平臺的結(jié)構(gòu)示意圖。圖2是本發(fā)明游戲服務(wù)器的結(jié)構(gòu)示意圖。圖3是本發(fā)明的云游戲服務(wù)平臺的交互示意圖。
具體實施例方式為了更為具體地描述本發(fā)明,下面結(jié)合附圖及具體實施方式
對本發(fā)明的技術(shù)方案進行詳細說明。如圖1所示,一種云游戲服務(wù)平臺包括認證服務(wù)器、云游戲客戶端(I)、云游戲服務(wù)器端(2)和游戲列表(3)。云游戲客戶端通過互聯(lián)網(wǎng)與云游戲服務(wù)器端連接,為用戶提供跨平臺游戲體驗。這些客戶平臺包括低端PC機(Window、MAC操作系統(tǒng))、電視機頂盒,移動終端設(shè)備(iOS、Android手機),平板電腦(蘋果iPad、微軟Surface、三星Galaxy), Flash在線播放等。云游戲服務(wù)器端是整個云游戲服務(wù)平臺的核心部分,其主要包括控制服務(wù)器集群、流媒體服務(wù)器集群、游戲服務(wù)器集群。游戲列表主要是由第三方游戲廠商提供的游戲包,其包括目前流行的單機游戲和少許網(wǎng)絡(luò)游戲。由于云游戲客戶端是在不同的客戶平臺上實現(xiàn)的,所以涉及到的開發(fā)語言包括C++, Java和Object-C等。客戶端由以下模塊組成通信模塊,主要用于向控制服務(wù)器集群發(fā)送認證請求信息、游戲啟動指令和游戲關(guān)閉指令;向流媒體服務(wù)器集群發(fā)送游戲操作指令,并接收流媒體服務(wù)器集群轉(zhuǎn)發(fā)的流媒體碼流;控制指令傳輸采用TCP協(xié)議,流媒體碼流傳輸采用RTP/RTSP協(xié)議。解碼渲染模塊,用于對流媒體碼流進行解碼并在終端渲染顯示。根據(jù)硬件設(shè)備的不同,采用硬件解碼和軟件解碼。硬件解碼就是H. 264算法在數(shù)字信號處理器DSP上實現(xiàn),并詳細設(shè)計DSP嵌入式解碼器的結(jié)構(gòu)、算法優(yōu)化以及改進方向等。認證服務(wù)器主要功能是驗證用戶賬號的合法性,只有通過驗證的賬號才能登錄云游戲服務(wù)器端。從圖1中可以看出,控制服務(wù)器會連接認證服務(wù)器。用戶登錄基本流程是,客戶端發(fā)送賬號和密碼到認證服務(wù)器驗證,如果驗證通過,認證服務(wù)器會給用戶分配一個SessionKey,并把這個SessionKey發(fā)送給客戶端、控制服務(wù)器、流媒體服務(wù)器,在后續(xù)進入游戲過程中,控制服務(wù)器、流媒體服務(wù)將驗證SessionKey合法性,如果和客戶端攜帶的SessionKey不一致,將無法成功開啟游戲服務(wù)。云游戲服務(wù)器端采用高性能高并發(fā)的架構(gòu)設(shè)計。控制服務(wù)器在服務(wù)器組中也起到負載均衡作用,主要職責(zé)是將客戶端的游戲請求分配給負載最小的流媒體服務(wù)器和游戲服務(wù)器,并不需要知道游戲?qū)⒃谀呐_游戲服務(wù)器上開啟運行,只需要知道在某臺流媒體服務(wù)器上接收流媒體碼流和發(fā)送游戲控制指令就可以了。流媒體服務(wù)器起到網(wǎng)關(guān)(Gate)的作用,主要職責(zé)是將客戶端和游戲服務(wù)器隔離,客戶端程序直接與這些流媒體服務(wù)器通信,并不需要知道具體的游戲服務(wù)器內(nèi)部架構(gòu),包括它們的IP、端口、網(wǎng)絡(luò)通信模型(完成端口或epoll)等。客戶端只與流媒體服務(wù)器相連,通過流媒體服務(wù)器轉(zhuǎn)發(fā)數(shù)據(jù)包間接地與游戲服 務(wù)器交互。同樣地,游戲服務(wù)器也不直接和客戶端通信,發(fā)給客戶端的協(xié)議都通過流媒體服務(wù)器進行轉(zhuǎn)發(fā)。根據(jù)網(wǎng)絡(luò)游戲的規(guī)模和設(shè)計的不同,服務(wù)器集群中服務(wù)器的數(shù)量是不盡相同的。本實施方式設(shè)計的服務(wù)器組架構(gòu)如圖1中服務(wù)器組A所示,雖然加大了服務(wù)器的設(shè)計復(fù)雜度,但卻帶來了以下幾點好處(I)控制服務(wù)器作為流媒體和游戲服務(wù)器的控制者,分配游戲請求給負載最小的流媒體服務(wù)器和游戲服務(wù)器,使組中的各個服務(wù)器資源得到充分有效的利用。(2)控制服務(wù)器在游戲開啟成功后,將負載最小的流媒體服務(wù)器的通信信息應(yīng)答給客戶端,從而簡化了客戶端配置流媒體服務(wù)器信息。(3)流媒體服務(wù)器作為網(wǎng)絡(luò)通信的中轉(zhuǎn)站,負責(zé)維護將內(nèi)網(wǎng)和外網(wǎng)隔離開,使外部無法直接訪問內(nèi)部服務(wù)器,保障內(nèi)網(wǎng)服務(wù)器的安全,一定程度上減少外部的攻擊。(4)流媒體服務(wù)器負責(zé)解析數(shù)據(jù)包、超時處理和一定邏輯處理,這樣可以提前過濾掉錯誤包和非法數(shù)據(jù)包。(5)客戶端程序只需建立與流媒體服務(wù)器的連接即可進入游戲,無需與其它游戲服務(wù)器同時建立多條連接,節(jié)省了客戶端和服務(wù)器程序的網(wǎng)絡(luò)資源開銷。服務(wù)器組架構(gòu)還需注意以下可能導(dǎo)致負面效果的兩個情況如何避免控制服務(wù)器成為高負載情況下的通訊瓶頸問題,以及由于控制服務(wù)器的單節(jié)點故障導(dǎo)致整組服務(wù)器無法對外提供服務(wù)的問題。對于上述兩個問題本實施方式采用“多控制服務(wù)器”技術(shù)加以解決?!岸嗫刂品?wù)器”就是同時存在多個控制服務(wù)器,如圖1服務(wù)器組A和B中都有一臺控制服務(wù)器。若服務(wù)器組A中的控制服務(wù)器宕機時,它只會影響到本服務(wù)器組不能增加新的客戶端,已加入本服務(wù)器組的客戶端不受任何影響,新的客戶端可以加入到服務(wù)器組B中。云游戲服務(wù)器端增加服務(wù)器組可以通過NetScaler設(shè)備來完成。NetScaler是由第三方廠商提供的負載均衡(Load Balance)設(shè)備,可幫助企業(yè)構(gòu)建具有彈性、可擴展性和操作簡便性等公共云服務(wù)的重要特征和功能的先進企業(yè)云網(wǎng)絡(luò)。它在一個簡便易用的平臺上結(jié)合了高速負載均衡和內(nèi)容交換、數(shù)據(jù)壓縮、內(nèi)容緩存、SSL加速、應(yīng)用流可視性和強大的應(yīng)用防火墻。如圖1所示,NetScaler可以分發(fā)高并發(fā)的請求給服務(wù)器組A和B,也可以部署更多的服務(wù)器組來分擔(dān)高并發(fā)請求的負載問題,如增加服務(wù)器組C、D、E.......從圖1中的服務(wù)器組A可以看出,一組服務(wù)器包括控制服務(wù)器、流媒體服務(wù)器集群和游戲服務(wù)器集群。控制服務(wù)器由以下模塊組成通信管理模塊,開啟兩個偵聽服務(wù),一個用于偵聽客戶端的連接請求(TCP/HTTP),主要負責(zé)維護客戶端與流媒體服務(wù)器、游戲服務(wù)器之間的網(wǎng)絡(luò)連接與通訊;另一個用于偵聽流媒體和游戲服務(wù)器集群的連接請求(TCP)。當(dāng)接收到連接請求時創(chuàng)建連接信息并保存,當(dāng)客戶端離開或異常時斷開連接并釋放連接資源信息。服務(wù)器管理模塊,包括服務(wù)器基本信息注冊、游戲列表信息注冊、服務(wù)器負載信息更新三個功能。服務(wù)器基本信息注冊用于存儲游戲服務(wù)器和流媒體服務(wù)器的基本信息,包括IP地址、端口、最大負載數(shù)、服務(wù)器類型等。游戲列表信息注冊用于登記游戲服務(wù)器上部署的游戲的種類,以及每種游戲在該游戲服務(wù)器上運行的最大實例數(shù)。服務(wù)器負載信息更新是指對接收到游戲服務(wù)器匯報的當(dāng)前運行的游戲數(shù)目和流媒體服務(wù)器匯報的當(dāng)前連接數(shù)目等負載信息進行更新。
客戶端請求轉(zhuǎn)發(fā)模塊,分為兩部分一是將客戶端認證請求轉(zhuǎn)發(fā)給認證服務(wù)器,根據(jù)認證結(jié)果獲取會話密鑰(SessionKey),并決定是否為客戶端繼續(xù)提供服務(wù);二是收到客戶端游戲請求后,將驗證會話密鑰合法性,然后根據(jù)流媒體服務(wù)器和游戲服務(wù)器定時匯報的負載信息,并將請求和會話密鑰轉(zhuǎn)發(fā)給負載最小的流媒體服務(wù)器和游戲服務(wù)器處理,其好處是將客戶端大量的并發(fā)請求分擔(dān)到多臺流媒體服務(wù)器和游戲服務(wù)器上分別處理,減少客戶端等待響應(yīng)的時間。最后將會話密鑰、流媒體服務(wù)器的外網(wǎng)IP地址和端口、內(nèi)網(wǎng)IP地址和端口分別返回給客戶端和轉(zhuǎn)發(fā)給游戲服務(wù)器。流媒體服務(wù)器由以下模塊組成通信管理模塊,主要負責(zé)在用戶游戲過程中負責(zé)維持游戲服務(wù)器與客戶端之間的網(wǎng)絡(luò)連接和通訊。此模塊將開啟四個偵聽服務(wù)和一個連接請求;四個偵聽服務(wù)包括(I)用于偵聽客戶端發(fā)送游戲控制指令的TCP連接;(2)用于偵聽客戶端請求游戲音視頻碼流的RTSP連接;(3)用于偵聽游戲服務(wù)器接收游戲控制指令的TCP連接;(4)用于偵聽游戲服務(wù)器發(fā)送游戲音視頻碼流的RTP連接。一個連接請求為流媒體服務(wù)器開啟時主動向控制服務(wù)器發(fā)起連接請求。如果連接失敗,流媒體服務(wù)器將定時發(fā)送連接請求,直到連接成功為止。注冊匯報模塊,主要由基本信息注冊和負載信息匯報兩個功能組成。流媒體服務(wù)器開啟后,如果與控制服務(wù)器連接成功,它將把自己的基本信息發(fā)送給控制服務(wù)器,基本信息包括最大負載數(shù)、提供給客戶端連接的IP地址和端口,提供給游戲服務(wù)器連接的IP地址和端口等。負載信息匯報功能定時匯報流媒體服務(wù)器當(dāng)前的會話和連接數(shù)目。會話管理模塊,根據(jù)收到控制服務(wù)器轉(zhuǎn)發(fā)的游戲請求創(chuàng)建一個游戲會話實例,并將收到會話密鑰(SessionKey)保存在會話實例中。創(chuàng)建成功后將會話信息返回給控制服務(wù)器,最終客戶端將獲取會話信息及外網(wǎng)IP地址和端口,游戲服務(wù)器將獲取會話信息及內(nèi)網(wǎng)IP地址和端口??蛻舳藢⒂猛饩W(wǎng)IP地址和端口與流媒體服務(wù)器建立游戲控制指令連接和音視頻碼流傳輸連接。然后對客戶端發(fā)來的一些協(xié)議作簡單的邏輯處理,其中包括驗證會話密鑰合法性。最后發(fā)送會話信息加入游戲會話,同時將兩個連接綁定在游戲會話中。同理,游戲服務(wù)器與流媒體服務(wù)器建立兩個連接的過程類似。如果游戲退出時,根據(jù)提供的會話信息將游戲會話中的四個連接關(guān)閉并釋放資源,最后再釋放游戲會話。游戲服務(wù)器主要負責(zé)開啟配置游戲列表中的游戲進程,然后抓取游戲的音視頻數(shù)據(jù)進行編碼,并實時地傳輸給流媒體服務(wù)器。接收客戶端發(fā)送的游戲控制指令時,模擬鍵盤、鼠標(biāo)、手柄消息來操控游戲進程。如圖2所示,從軟件架構(gòu)角度來看,游戲服務(wù)器分成以下幾個模塊注冊匯報模塊,主要由基本信息注冊、游戲信息注冊和負載信息匯報三個功能組成。游戲服務(wù)器開啟后與控制服務(wù)器建立連接,將把自己的基本信息發(fā)送給控制服務(wù)器進行注冊,緊接著將配置的游戲列表信息發(fā)送給控制服務(wù)器進行登記。游戲列表信息包括游戲編號、游戲運行的最大實例數(shù)等。負載信息匯報功能是定時匯報游戲服務(wù)器當(dāng)前運行的游戲進程數(shù)目。游戲進程管理模塊,包括開啟游戲進程服務(wù)、創(chuàng)建游戲指令與音視頻傳輸連接、游戲進程監(jiān)控三個功能。當(dāng)收到控制服務(wù)器轉(zhuǎn)發(fā)的游戲請求時,根據(jù)提供的游戲編號從游戲列表獲取該游戲的基本信息,初始化該游戲的音視頻數(shù)據(jù)抓取方式、鍵盤鼠標(biāo)模擬方式、編碼實例,然后向負載小的流媒體發(fā)起連接請求,建立游戲指令的TCP連接和音視頻數(shù)據(jù)傳輸?shù)腞TP連接。前述動作執(zhí)行正常的情況下,開啟游戲進程服務(wù),注入游戲動態(tài)鏈接庫(GSD11. dll),并將開啟的游戲基本信息寫入共享內(nèi)存中。最后喚醒游戲進程,并開始編碼。創(chuàng)建獨立的線程來檢測游戲進程的活動狀態(tài)。如果檢測到游戲進程正常/非正常退出,需要向控制服務(wù)器報告游戲會話結(jié)束信息,并終止與流媒體服務(wù)器之間的連接,以便服務(wù)器之間執(zhí)行資源釋放操作。游戲圖像抓取模塊,在游戲動態(tài)鏈接庫(GSD11. dll)中利用Hook技術(shù),攔截了DX8、DX9、DX10、DX11 的 Present 函數(shù);攔截了 OpenGL 的 WglSwapBuffers 函數(shù);更改了 ⑶I窗口的消息處理函數(shù)并攔截WM_PAINT事件。達到抓取DirectX類、OpenGL類、⑶I類游戲圖像地目的。動態(tài)鏈接庫抓取到的游戲畫面將寫入共享內(nèi)存中,游戲服務(wù)器根據(jù)游戲編號和游戲進程句柄從共享內(nèi)存中獲取對應(yīng)的游戲畫面數(shù)據(jù),并進行視頻編碼。游戲聲音抓取模塊,在游戲動態(tài)鏈接庫(GSD11. dll)中利用Hook技術(shù),攔截了DirectSound 的 DirectSoundCreate、DirectSoundCreate8 函數(shù);攔截了 waveOpen 函數(shù);攔截了 XAudio 的 CreateMasteringVoice 函數(shù)。使米用 DirectSouncU waveOut、XAudio 等技術(shù)進行聲音處理的游戲,將游戲的聲音輸出到指定的虛擬音頻設(shè)備,并對特定的虛擬音頻設(shè)備進行聲音采集,達到抓取游戲聲音地目的,而且每款運行的游戲聲音互不干擾。動態(tài)鏈接庫抓取到的游戲音頻數(shù)據(jù)將寫入共享內(nèi)存中,游戲服務(wù)器根據(jù)游戲編號和游戲進程句柄從共享內(nèi)存中獲取對應(yīng)的游戲音頻數(shù)據(jù),并進行音頻編碼。視頻編碼模塊,采用了 H264視頻編碼格式,它是一種被廣泛使用的高精度視頻的錄制和壓縮格式。傳統(tǒng)情況下,游戲服務(wù)器采用CPU對游戲畫面進行H264視頻編碼,這樣會非常消耗CPU資源,一塊高性能的CPU也很難支持多路H264并行編碼。針對上述問題, 本實施方式對游戲服務(wù)器進行了優(yōu)化改進,充分利用顯卡(CUDA)的GPU資源進行H264編碼,大大減少編碼所消耗的CPU資源,在多路H264并行編碼的情況下,保證游戲的順暢運行。同時也為游戲節(jié)約了大量CPU資源,這樣可以在同臺服務(wù)器上運行更多的游戲進程。音頻編碼模塊,采用了 AAC音頻編碼技術(shù),在開源FAAC的基礎(chǔ)上進行了算法優(yōu)化和指令優(yōu)化,大篇幅使用匯編語言替代C/C++語言,編碼效率成倍提升。算法優(yōu)化是指采用性能更加好的算法進行替代;指令優(yōu)化是指利用了現(xiàn)在處理器的一些新指令集,比如MMX、SSE、SSE2、SSE3、SSE4等,利用這些新的指令集,做同樣的事情,可以用更短的CPU指令周期完成。在性能上,優(yōu)化后的AAC音頻編碼器較優(yōu)化前有3倍的提升,提高了編碼效率,降低了音頻延遲。操作指令模擬模塊,在游戲動態(tài)鏈接庫(GSD11. dll)中利用Hook技術(shù),攔截了GetKeyState>GetAsyncKeyState>GetKeyboardState>RawInput 相關(guān)函數(shù)、DirectInput 相關(guān)函數(shù)。當(dāng)游戲服務(wù)器收到客戶端發(fā)送的游戲控制指令消息,將其寫入共享內(nèi)存中,使游戲進程通過動態(tài)鏈接庫能正常讀取客戶端發(fā)送的游戲控制指令,達到模擬鍵盤、鼠標(biāo)信息的目的。虛擬化多開模塊,利用Ring3API Hook技術(shù),Hook 了通用檢測游戲多實例的函數(shù),比如命名內(nèi)核對象、進程名稱、窗口標(biāo)題(窗口類)、公共或臨時文件等。通過這種方法實現(xiàn)的虛擬化多開技術(shù),相比真正虛擬機實現(xiàn)的虛擬化多開技術(shù)具有更好的性能。
圖3給出客戶端與服務(wù)器之間數(shù)據(jù)通訊的主要流程,從這些流程能看出各種服務(wù)器之間是如何數(shù)據(jù)交互和協(xié)同工作的。云游戲服務(wù)平臺交互流程包含了服務(wù)器注冊、客戶端登錄認證,客戶端開啟游戲請求、客戶端操作游戲流程和客戶端關(guān)閉游戲請求五個流程。以下我們從眾多云游戲客戶端中選取個人電腦(PC)來說明交互流程服務(wù)器注冊流程包括第①和②步。①、游戲服務(wù)器啟動后,將自己的基本信息和從配置文件中讀取的游戲列表信息發(fā)送給控制服務(wù)器進行注冊登記,成功后控制服務(wù)器標(biāo)注該游戲服務(wù)器準備就緒。②、流媒體服務(wù)器啟動后,將自己的基本信息發(fā)送給控制服務(wù)器進行注冊登記,成功后控制服務(wù)器標(biāo)注該流媒體服務(wù)器準備就緒。客戶端登錄認流程包括第③、④和⑤步。③、客戶端將用戶名和密碼信息發(fā)送給控制服務(wù)器。④、控制服務(wù)器將用戶名和密碼信息轉(zhuǎn)發(fā)給認證服務(wù)器;認證服務(wù)器收到后驗證用戶的賬號是否合法,驗證通過后,會給用戶分配一個會話密鑰(SessionKey),并返回給控制服務(wù)器。⑤、控制服務(wù)器將在本地保存用戶會話密鑰,并將會話密鑰返回給客戶端??蛻舳碎_啟游戲請求流程包括第⑥、⑦、⑧、⑨、⑩、 、 和 步。⑥、客戶端通過互聯(lián)網(wǎng)發(fā)送開啟游戲請求給控制服務(wù)器,請求中包含會話密鑰(SessionKey);控制服務(wù)器將驗證用戶的合法性,然后通過負載均衡功能計算出負載最小的流媒體服務(wù)器和游戲服務(wù)器,并獲取服務(wù)器的連接信息,分配全局唯一的游戲會話編號。⑦、控制服務(wù)器將游戲會話編號、會話密鑰及其他信息發(fā)送給負載最小流媒體服務(wù)器;流媒體服務(wù)器將創(chuàng)建游戲會話實例,并保存會話實例和會話密鑰。⑧、流媒體服務(wù)器將創(chuàng)建游戲會話結(jié)果返回給控制服務(wù)器。⑨、控制服務(wù)器再將游戲編號、游戲會話編號、負載最小的流媒體連接信息一起發(fā)送給游戲服務(wù)器。⑩、游戲服務(wù)器根據(jù)收到的游戲會話編號、負載最小的流媒體連接信息與流媒體服務(wù)器建立兩個連接(游戲控制指令TCP連接和流媒體傳輸RTP連接);然后根據(jù)游戲會話編號加入流媒體服務(wù)器的游戲會話實例,并將這兩個連接綁定在游戲會話實例中。 、連接成功后,游戲服務(wù)器根據(jù)游戲編號從游戲隊列中獲取游戲基本信息,開啟游戲進程,注入游戲動態(tài)連接庫(GSDll.dll),插入游戲記錄到共享內(nèi)存中,然后喚醒游戲進程。 、游戲服務(wù)器將游戲開啟的結(jié)果返回給控制服務(wù)器。 、控制服務(wù)器將負載小的流媒體服務(wù)器的外網(wǎng)連接信息和全局唯一的游戲會話編號返回給客戶端。 、客戶端收到流媒體服務(wù)器的外網(wǎng)連接信息和全局唯一的游戲會話編號后,先與流媒體服務(wù)器建立兩個連接(游戲控制指令TCP連接和流媒體傳輸RTSP連接);流媒體服務(wù)器根據(jù)客戶端發(fā)送的會話密鑰驗證用戶的合法性,然后再根據(jù)會話編號加入游戲會話實例,并將這兩個連接綁定在游戲會話實例中??蛻舳瞬僮饔螒蛄鞒贪ǖ?、 、 、 、 和 步。根據(jù)上述的步驟可以知道,整個游戲通信握手準備就緒后,流媒體服務(wù)器與客戶端、游戲服務(wù)器之間保持了四個連接,這些連接是決定用戶能否操控游戲的關(guān)鍵。
、游戲準備就緒后,客戶端向流媒體服務(wù)器發(fā)送游戲控制指令。 、流媒體服務(wù)器收到游戲指令后,根據(jù)提供的游戲會話編號找到與游戲服務(wù)器的TCP連接,然后將游戲控制指令轉(zhuǎn)發(fā)給游戲服務(wù)器。 、游戲服務(wù)器收到游戲指令后,進行解析指令得到消息類型,然后根據(jù)消息類型確認消息的輸入方式(鍵盤、鼠標(biāo)、手柄),輸入方式的相關(guān)信息寫入共享內(nèi)存中。 、游戲進程調(diào)用注入的動態(tài)鏈接庫從共享內(nèi)存中讀取輸入方式的相關(guān)信息,然后通過攔截的鍵盤、鼠標(biāo)輸入函數(shù)來操控游戲;游戲操控時變動的畫面和聲音分別寫入視頻和音頻共享內(nèi)存中。 、游戲服務(wù)器從視頻共享內(nèi)存中讀取視頻數(shù)據(jù)進行視頻編碼,從音頻共享內(nèi)存中讀取音頻數(shù)據(jù)進行音頻編碼;然后通過RTP連接將編碼后的音視頻數(shù)據(jù)發(fā)送給流媒體服務(wù)器。 、流媒體服務(wù)器根據(jù)提供的游戲會話編號找到與客戶端的RTSP連接,音視頻數(shù)據(jù)發(fā)送給客戶端。
權(quán)利要求
1.一種云游戲服務(wù)平臺,其特征在于,包括控制服務(wù)器集群、流媒體服務(wù)器集群和游戲服務(wù)器集群;所述的控制服務(wù)器集群包含有多臺控制服務(wù)器,所述的控制服務(wù)器用于接收客戶機發(fā)送的游戲啟動指令和游戲關(guān)閉指令,并根據(jù)游戲啟動指令從流媒體服務(wù)器集群和游戲服務(wù)器集群中分別選取出一臺流媒體服務(wù)器和一臺游戲服務(wù)器分配給該客戶機,以使客戶機通過所述的流媒體服務(wù)器與所述的游戲服務(wù)器連接,同時將所述的游戲啟動指令和游戲關(guān)閉指令轉(zhuǎn)發(fā)給游戲服務(wù)器;所述的流媒體服務(wù)器用于將客戶機發(fā)送的游戲操作指令轉(zhuǎn)發(fā)給游戲服務(wù)器,并將游戲服務(wù)器產(chǎn)生的流媒體碼流轉(zhuǎn)發(fā)給客戶機;所述的游戲服務(wù)器包括游戲進程管理模塊,用于根據(jù)游戲啟動指令或游戲關(guān)閉指令分別開啟或關(guān)閉對應(yīng)未運行的游戲程序;音視頻抓取模塊,用于實時采集游戲程序的音頻和視頻;編碼模塊,用于對采集到的音頻和視頻進行編碼,得到流媒體碼流;操作指令模擬模塊,用于將所述的游戲操作指令模擬至游戲程序中。
2.根據(jù)權(quán)利要求1所述的云游戲服務(wù)平臺,其特征在于所述的游戲服務(wù)器還包括虛擬化多開模塊,其根據(jù)游戲啟動指令或游戲關(guān)閉指令分別開啟或關(guān)閉對應(yīng)已運行的游戲程序。
3.根據(jù)權(quán)利要求1所述的云游戲服務(wù)平臺,其特征在于所述的控制服務(wù)器連接有認證服務(wù)器,其用于對客戶機進行身份認證。
4.根據(jù)權(quán)利要求1所述的云游戲服務(wù)平臺,其特征在于所述的編碼模塊采用CUDA并行計算技術(shù)對采集到的視頻進行編碼。
5.根據(jù)權(quán)利要求1所述的云游戲服務(wù)平臺,其特征在于所述的編碼模塊采用開源 FAAC編碼技術(shù)對采集到的音頻進行編碼。
6.根據(jù)權(quán)利要求1所述的云游戲服務(wù)平臺,其特征在于所述的音視頻抓取模塊采用 Hook技術(shù)實時采集游戲程序的音頻和視頻。
7.根據(jù)權(quán)利要求1所述的云游戲服務(wù)平臺,其特征在于所述的操作指令模擬模塊采用Hook技術(shù)將游戲操作指令模擬至游戲程序中。
8.根據(jù)權(quán)利要求1所述的云游戲服務(wù)平臺,其特征在于所述的控制服務(wù)器實時獲取流媒體服務(wù)器集群和游戲服務(wù)器集群的負載信息,并從流媒體服務(wù)器集群和游戲服務(wù)器集群中分別選取出一臺負載最小的流媒體服務(wù)器和一臺負載最小的游戲服務(wù)器分配給客戶機。
全文摘要
本發(fā)明公開了一種云游戲服務(wù)平臺,包括控制服務(wù)器集群、流媒體服務(wù)器集群和游戲服務(wù)器集群;控制服務(wù)器用于為客戶機分配流媒體服務(wù)器和游戲服務(wù)器;流媒體服務(wù)器用于將客戶機發(fā)送的游戲操作指令轉(zhuǎn)發(fā)給游戲服務(wù)器,并將游戲服務(wù)器產(chǎn)生的流媒體碼流轉(zhuǎn)發(fā)給客戶機;游戲服務(wù)器包括游戲進程管理模塊、音視頻抓取模塊、編碼模塊和操作指令模擬模塊,用于將所述的游戲操作指令模擬至游戲程序中。本發(fā)明云游戲服務(wù)平臺能夠使用戶無需自建高端PC用作游戲機,只要使用一臺低配置的PC,并接入高速網(wǎng)絡(luò)即可,且能享受到較佳的游戲體驗。
文檔編號H04L29/06GK103023872SQ20121046609
公開日2013年4月3日 申請日期2012年11月16日 優(yōu)先權(quán)日2012年11月16日
發(fā)明者曹善焰, 柴葉武, 楊益冬, 彭壽林, 高云, 范科, 王賽炎, 祁德崢, 許鵬飛 申請人:杭州順網(wǎng)科技股份有限公司