相關(guān)申請的交叉引用
本申請要求2014年12月31日提交且標(biāo)題為“gamestatesave,transferandresumeforcloudgaming”的美國臨時專利申請?zhí)?2/099,027的優(yōu)先權(quán),所述申請的全文出于所有目的以引用的方式并入本文。
本發(fā)明總體涉及云游戲環(huán)境,并且更具體地涉及用于在游戲中的任何點處保存正在進行的游戲的狀態(tài)并且在稍后的某個時間在游戲的相同點處恢復(fù)游戲的系統(tǒng)和方法。
背景技術(shù):
由可供用戶經(jīng)由互聯(lián)網(wǎng)訪問的聯(lián)網(wǎng)服務(wù)器的系統(tǒng)來促進云游戲。服務(wù)器托管多個用戶的游戲會話。通常,為用戶分配虛擬服務(wù)器或物理服務(wù)器以用于托管用戶的游戲進行。許多游戲是復(fù)雜的并且可能無限期持續(xù)下去。通常,由于許多不同的原因,用戶將暫停他的游戲以允許用戶休息一下。
游戲通常包括編程到游戲中的周期性的、預(yù)定義的停止點。例如,預(yù)定義的停止點通常在游戲中的每個場景或動作級別的結(jié)尾處。在這些預(yù)定義的停止點處,游戲?qū)⒈4鎭碜杂螒蜻M行的數(shù)據(jù)(諸如所達到的級別、所獲得的成就)并且執(zhí)行其他內(nèi)務(wù)處理功能。如果用戶希望繼續(xù)玩游戲,那么在停止點或另一個稍后的時間點之后,游戲系統(tǒng)將例如在下一級別或階段處重新開始或重新啟動游戲。如果用戶希望暫停游戲,那么可暫停游戲,但游戲機將需要保持凍結(jié)以等待另外的用戶輸入。如果用戶希望短暫休息,那么當(dāng)然是這樣。然而,如果用戶希望暫停并且在一段時間內(nèi)停止玩游戲,那么游戲機繼續(xù)運轉(zhuǎn)幾個小時或幾天以等待用戶恢復(fù)是無效率的且不切實際的。
在預(yù)定義的暫停點之間的游戲的內(nèi)容包括獨特的、復(fù)雜的、交互式的圖形和動作,所述圖形和動作對用戶玩游戲的特定實例來說是獨特的。獨特的、復(fù)雜的、交互式的圖形和動作體現(xiàn)在眾多不同的、獨特的游戲狀態(tài)數(shù)據(jù)中。在游戲中的獨特的、復(fù)雜的、交互式的圖形和動作點中的一個中保存游戲相應(yīng)地是復(fù)雜的,并且經(jīng)常被各種硬件版本和軟件版本的不兼容性所阻止。
如上所述,可暫停托管用戶的游戲進行的云游戲服務(wù)器,然而,這樣不必要地消耗云游戲服務(wù)器的時間和能量并且還在暫停的用戶的游戲進行被暫停的同時阻止任何其他用戶使用云游戲服務(wù)器。此外,如果用戶不再恢復(fù)他的游戲進行,那么服務(wù)器將專用于不再回來的用戶。因此,目前的技術(shù)將暫停游戲進行限制到預(yù)定義的停止點。
此外,如果用戶在游戲中的停止點(即,戰(zhàn)斗的結(jié)尾、級別的結(jié)尾、場景的結(jié)尾等)之前的某個點處停止游戲進行,那么可將游戲進行重置到最后保存的停止點(即級別開始之前的狀態(tài))。這種重置抹掉了用戶在最近經(jīng)過的預(yù)定義的停止點之間的游戲進行。
本發(fā)明的實施方案正是在這種情況下出現(xiàn)的。
技術(shù)實現(xiàn)要素:
一般來說,本發(fā)明通過提供一種用于在游戲中的任何點處暫停正在進行的游戲并且在將來的某個時間在游戲的相同點處恢復(fù)游戲的系統(tǒng)和方法來滿足這些需要。實施方案允許在暫停點處保存游戲狀態(tài)。用足以在用戶選擇恢復(fù)時重建游戲狀態(tài)的數(shù)據(jù)來保存暫停的游戲狀態(tài)。當(dāng)游戲暫停時,游戲狀態(tài)被收集并保存到存儲體,以使得云游戲系統(tǒng)或服務(wù)器不再將狀態(tài)存儲在硬件的活動存儲器或寄存器中。這允許空出系統(tǒng)以便進行其他游戲進行或處理。此外,恢復(fù)游戲進行可在任何時間并且從任何遠程客戶端發(fā)生。當(dāng)期望恢復(fù)時,用戶將直接選擇已暫停游戲并且系統(tǒng)將加載游戲狀態(tài)。加載游戲狀態(tài)將包括從多個文件和數(shù)據(jù)結(jié)構(gòu)生成游戲狀態(tài),以使得重建的游戲狀態(tài)將使機器回到與在游戲暫停時相同或大致上相同的狀態(tài)。
在一個實施方案中,當(dāng)游戲暫停時,保存的游戲狀態(tài)也將節(jié)省在暫停被觸發(fā)的時間之前的一段時間。節(jié)省這個附加的時間量將允許用戶趕上或被重新引入到在暫停之前發(fā)生在游戲中的情況。將如下所述,游戲狀態(tài)的保存發(fā)生在通常不是由游戲設(shè)計者預(yù)先設(shè)計的某個時間,所以必須完成處理以從硬件寄存器、緩沖器、存儲器等以及軟件緩沖器、寄存器和文件收集狀態(tài)數(shù)據(jù)。這種狀態(tài)數(shù)據(jù)收集將允許另一個云游戲系統(tǒng)恢復(fù)游戲進行,其中在狀態(tài)數(shù)據(jù)被加載在適當(dāng)?shù)挠布恢煤蛙浖恢弥兄笸V故占?,以使得可恢?fù)活動的交互式游戲進行。應(yīng)理解的是,本發(fā)明可以多種方式來實現(xiàn),包括實現(xiàn)為程序、裝置、系統(tǒng)、計算機可讀介質(zhì)或設(shè)備。以下描述本發(fā)明的若干發(fā)明性實施方案。
一個實施方案公開一種云游戲系統(tǒng),所述云游戲系統(tǒng)包括暫停游戲并恢復(fù)所述游戲的能力。所述云游戲系統(tǒng)包括云控制器、聯(lián)接到所述云控制器的存儲設(shè)備以及通過網(wǎng)絡(luò)聯(lián)接到所述云控制器的多個游戲控制臺。多個游戲控制臺中的每一個包括硬件層、操作系統(tǒng)層以及應(yīng)用層。操作系統(tǒng)層被配置用于與硬件層交互,操作系統(tǒng)層包括狀態(tài)管理器客戶端。應(yīng)用層被配置用于與操作系統(tǒng)層的至少一部分和硬件層的一部分交互。應(yīng)用層包括游戲,狀態(tài)管理器客戶端被配置來在游戲暫停時捕獲游戲控制臺的游戲狀態(tài)數(shù)據(jù)并且存儲所述捕獲的游戲狀態(tài)數(shù)據(jù)。狀態(tài)管理器客戶端還可在相同的或不同的游戲控制臺上應(yīng)用游戲狀態(tài)數(shù)據(jù)并且在游戲被暫停的點處恢復(fù)游戲。
另一個實施方案提供一種在云游戲系統(tǒng)中暫停游戲的方法。所述方法包括:在云游戲系統(tǒng)中所包括的第一游戲控制臺上玩游戲,以及在游戲中的選定點處暫停游戲。針對已暫停游戲捕獲游戲狀態(tài)數(shù)據(jù)。通過檢索游戲狀態(tài)數(shù)據(jù)并且將游戲狀態(tài)數(shù)據(jù)應(yīng)用于選定的游戲控制臺并且在選定的游戲控制臺上、在游戲中的選定點處恢復(fù)游戲,可恢復(fù)已暫停游戲。還可在不同用戶之間共享游戲狀態(tài)數(shù)據(jù),以允許第一用戶與一個或多個其他用戶共享他的游戲狀態(tài)。
結(jié)合附圖來閱讀以下詳細描述,本發(fā)明的其他方面和優(yōu)點將變得顯而易見,以下詳細描述通過舉例的方式說明本發(fā)明的原理。
附圖說明
通過結(jié)合附圖進行的以下詳細描述,將容易理解本發(fā)明。
圖1是用于實現(xiàn)本公開的實施方案的簡化云游戲系統(tǒng)。
圖2a是示出用于實現(xiàn)本公開的實施方案的方法操作的簡化概述的流程圖,所述方法操作是在云游戲狀態(tài)保存、恢復(fù)和傳輸機構(gòu)中執(zhí)行的。
圖2b是用于實現(xiàn)本公開的實施方案的用戶云游戲系統(tǒng)儀表板的簡化圖形用戶界面。
圖2c示出用于實現(xiàn)本公開的實施方案的實施例,其中為用戶提供了共享并且保存恢復(fù)點的功能。
圖3是示出用于實現(xiàn)本公開的實施方案的方法操作的流程圖,所述方法操作是在云游戲狀態(tài)保存、恢復(fù)和傳輸中執(zhí)行的。
圖4是根據(jù)本發(fā)明的各種實施方案的游戲系統(tǒng)的框圖。
具體實施方式
現(xiàn)在將描述用于在游戲中的任何點處保存正在進行的游戲的狀態(tài)并且在將來的某個時間在游戲的相同點處恢復(fù)游戲的系統(tǒng)和方法的幾個示例性實施方案。然而,對于本領(lǐng)域技術(shù)人員將顯而易見的是,可以在沒有本文中陳述的一些或全部具體細節(jié)的情況下實踐本發(fā)明。
云游戲正在成為非常受歡迎的游戲環(huán)境。云游戲允許單個玩家玩游戲和多玩家玩游戲并且還允許用戶玩復(fù)雜的、內(nèi)容豐富的游戲,諸如具有豐富的交互內(nèi)容以及身臨其境的三維(3d)圖形的游戲。這類內(nèi)容豐富的游戲需要復(fù)雜且強大的、通常非常專業(yè)的計算機,所述計算機具有專業(yè)處理器、協(xié)處理器以及圖形處理器。云游戲還需要精心設(shè)計的服務(wù)器進程以減少延時并且監(jiān)控延時以避免性能下降。作為額外的益處,云游戲允許用戶在更簡單的客戶端計算機上玩內(nèi)容豐富的游戲。例如,用戶可使用能夠經(jīng)由本地網(wǎng)絡(luò)和/或互聯(lián)網(wǎng)與云游戲系統(tǒng)通信的平板計算機、智能手機或其他手持式計算設(shè)備在云游戲系統(tǒng)上玩游戲。
在云游戲環(huán)境中,僅維持對用戶開放的游戲會話以在未來某個不明確的時刻回到游戲會話不是可行的選項。無限期地維持對用戶開放的游戲會話對于云游戲供應(yīng)商來說成本太高。這些成本包括云游戲控制臺的用電量以及阻止另一個用戶使用所述相同的游戲控制臺。在一個實施方案中,云游戲系統(tǒng)可以在每個游戲會話中為用戶分配專用的游戲控制臺(即,由云游戲服務(wù)器管理的游戲控制臺)。因此,當(dāng)較早的用戶不再被分配到供使用的游戲控制臺時,相同的游戲控制臺也可被分配到第二用戶。隨時間推移,多個用戶共享游戲控制臺,但他們不會在相同的時間點使用相同的游戲控制臺。
所公開的云游戲狀態(tài)保存、恢復(fù)和傳輸技術(shù)允許用戶在游戲進行期間的用戶選擇的任何時間暫停他的游戲進行會話。在幕后,存儲用戶的游戲狀態(tài)并且隨后用戶的云游戲控制臺被空出給另一個用戶。云游戲狀態(tài)保存、恢復(fù)和傳輸技術(shù)節(jié)省能量,因為游戲服務(wù)器可將用戶的所分配游戲控制臺的使用傳輸給另一個用戶。
當(dāng)用戶準(zhǔn)備好恢復(fù)他的游戲時,用戶的保存的游戲狀態(tài)被檢索并且被加載到相同的或不同的云游戲控制臺中。用戶可隨后在他暫停游戲進行的相同點處恢復(fù)他的游戲進行。用戶可使用相同的或不同的客戶端設(shè)備來恢復(fù)他的游戲狀態(tài)。用戶可使用相同的或不同的云游戲數(shù)據(jù)中心來恢復(fù)他的游戲狀態(tài)。用戶可從世界上的地理上不同的地區(qū)恢復(fù)他的游戲狀態(tài)。
所公開的云游戲狀態(tài)保存、恢復(fù)和傳輸技術(shù)也具有其他用途。例如,用戶的游戲會話可在其他用戶之間共享,以允許其他用戶經(jīng)歷相同的游戲會話或者可能幫助另一個用戶(可能在另一個遠程位置、但連接了云游戲服務(wù)的用戶)。例如,第一用戶暫停游戲進行,將游戲狀態(tài)數(shù)據(jù)傳遞(例如,共享)給第二用戶,第二用戶為第一用戶完成艱難的戰(zhàn)斗并且隨后再次暫停游戲并將新的游戲狀態(tài)數(shù)據(jù)傳遞回到第一用戶。在一個實現(xiàn)方式中,用戶可在控制器或其他用戶界面上選擇共享按鈕或選項來共享保存的游戲狀態(tài)。所公開的云游戲狀態(tài)保存、恢復(fù)和傳輸技術(shù)也具有許多其他用途。當(dāng)用戶共享游戲狀態(tài)時,接收到共享的用戶可由云游戲系統(tǒng)分配到另一個游戲控制臺(即,與共享用戶的游戲控制臺不同)。在每次共享之前,保存狀態(tài),并且在恢復(fù)狀態(tài)時,取決于用戶在不同時間被分配了哪個游戲控制臺,可在相同的游戲控制臺或另一個游戲控制臺上恢復(fù)狀態(tài)。
圖1是用于實現(xiàn)本公開的實施方案的簡化云游戲系統(tǒng)100。云游戲系統(tǒng)100包括云控制器130、多個游戲控制臺112a-n、一個或多個游戲控制臺管理器113以及存儲服務(wù)器110。云控制器130、多個游戲控制臺112a-n、一個或多個游戲控制臺管理器113以及存儲服務(wù)器110可位于一個或多個數(shù)據(jù)中心111、115、117中。云控制器130、多個游戲控制臺112a-n以及存儲服務(wù)器110由局域網(wǎng)104a、104b、104c和/或互聯(lián)網(wǎng)102聯(lián)接在一起。多個游戲控制臺112a-n和游戲控制臺管理器113可共同位于單個數(shù)據(jù)中心115中或分布在超過一個數(shù)據(jù)中心之中。
一個或多個游戲控制臺管理器113可包括在游戲控制臺112a-n的每個機架中。游戲控制臺管理器113根據(jù)一個或多個硬件和/或軟件體系結(jié)構(gòu)來管理一個或多個游戲控制臺112a-n。使用網(wǎng)絡(luò)連接115和/或任選的通用輸入/輸出、通用串行總線或等效控制連接將游戲控制臺管理器113物理連接到游戲控制臺112a-n以啟動對游戲控制臺的供電。游戲控制臺管理器113可以任選地包括附加功能,諸如在所分配游戲控制臺與用戶的客戶端設(shè)備之間建立并管理流式會話。
本地存儲服務(wù)器116可以任選地與多個游戲控制臺112a-n中的一個或多個共同位于相同的數(shù)據(jù)中心115中。本地存儲服務(wù)器116可存儲將要由多個游戲控制臺112a-n和/或云控制器130使用的或?qū)⒁獜亩鄠€游戲控制臺112a-n和/或云控制器130接收的數(shù)據(jù)116a。數(shù)據(jù)中心111、115、117可在地理上分離。舉例來說,第一數(shù)據(jù)中心111和第三數(shù)據(jù)中心117可位于加利福尼亞的洛杉磯,并且第二數(shù)據(jù)中心115可位于瑞典的斯德哥爾摩。
云控制器130和/或游戲控制臺管理器113包括游戲數(shù)據(jù)庫132以用于存儲可被下載到多個游戲控制臺112a-n中的一個或多個的多個游戲和其他應(yīng)用程序。云控制器130還包括授權(quán)管理器135。授權(quán)管理器135確定第一用戶是否具有有效帳戶和對云游戲系統(tǒng)100的授權(quán)訪問。第一用戶的賬戶信息包括在用戶賬戶數(shù)據(jù)庫133中。在一個或多個實現(xiàn)方式中,云控制器130還可包括狀態(tài)控制器134。狀態(tài)管理器134在啟動時還可與游戲控制臺112a-n中的每一個中所包括的狀態(tài)管理器客戶端144一起工作來捕獲用于相應(yīng)游戲控制臺的游戲狀態(tài)數(shù)據(jù)。
存儲服務(wù)器110為云游戲系統(tǒng)100提供存儲設(shè)施。存儲服務(wù)器110包括一個或多個存儲設(shè)備110a、110b以用于存儲云游戲系統(tǒng)100可能需要的數(shù)據(jù),諸如用戶的狀態(tài)數(shù)據(jù)114’。一個或多個存儲設(shè)備110a、110b可以是任何合適的存儲介質(zhì),例如硬盤驅(qū)動器、固態(tài)驅(qū)動器或光驅(qū)等。
游戲控制臺112a-n中的每一個包括硬件層143和覆在所述硬件層上面的操作系統(tǒng)層142。應(yīng)用層141覆蓋操作系統(tǒng)層142。應(yīng)用層141包括在游戲控制臺112a上運行的游戲和其他應(yīng)用程序。硬件層包括主處理器145、協(xié)處理器146、圖形處理器(gpu)147、存儲器系統(tǒng)148、輸入輸出系統(tǒng)149、網(wǎng)絡(luò)接口卡150以及許多其他物理外圍設(shè)備和虛擬外圍設(shè)備,上述各項可能是游戲控制臺112a的操作所需的。主處理器145、協(xié)處理器146、圖形處理器147、存儲器系統(tǒng)148、輸入輸出系統(tǒng)149、網(wǎng)絡(luò)接口卡150以及其他外圍設(shè)備由一個或多個數(shù)據(jù)總線151聯(lián)接在一起。
在至少一個實現(xiàn)方式中,操作系統(tǒng)層142包括狀態(tài)管理器客戶端144。在其他實現(xiàn)方式中,狀態(tài)管理器客戶端144可包括在應(yīng)用層141中的一個或多個應(yīng)用程序中。狀態(tài)管理器客戶端144也可實現(xiàn)為有部分常駐在操作系統(tǒng)層142和應(yīng)用層141兩者中。狀態(tài)管理器客戶端144在啟動時可捕獲游戲控制臺112a的游戲狀態(tài)數(shù)據(jù)114。捕獲的游戲狀態(tài)數(shù)據(jù)114可作為游戲狀態(tài)數(shù)據(jù)114’存儲在本地存儲服務(wù)器116中和/或存儲服務(wù)器110中。存儲的游戲狀態(tài)數(shù)據(jù)114’的存儲位置被提供到云控制器以添加到用戶帳戶數(shù)據(jù)庫133中的第一用戶的帳戶信息。
客戶端設(shè)備122a、122b經(jīng)由互聯(lián)網(wǎng)102或本地網(wǎng)絡(luò)104a-c提供對云游戲系統(tǒng)100的訪問??蛻舳嗽O(shè)備122a、122b可以是能夠訪問互聯(lián)網(wǎng)102和/或本地網(wǎng)絡(luò)104a-c的任何合適的平臺。舉例來說,客戶端設(shè)備122a、122b可以是個人計算機、便攜式計算機、筆記本式計算機、手持式游戲設(shè)備、手持式計算設(shè)備(諸如平板計算機或智能電話或任何其他合適的計算平臺)。第一客戶端計算設(shè)備122a和第二客戶端計算設(shè)備122b可用在多個不同的、地理上分離的位置中。舉例來說,第一客戶端計算設(shè)備122a可以是由第一用戶在他的家里、在他的辦公室中以及在他旅行時用來訪問互聯(lián)網(wǎng)102和云游戲系統(tǒng)100的平板計算機。類似地,第二客戶端計算設(shè)備122b可以是能夠在家里、在辦公室或在可以訪問互聯(lián)網(wǎng)的其他場所中訪問互聯(lián)網(wǎng)102和云游戲系統(tǒng)100的筆記本式計算機。
在一個實現(xiàn)方式中,第一用戶可使用第一客戶端計算設(shè)備122a來經(jīng)由互聯(lián)網(wǎng)102訪問云控制器130。身份驗證管理器135對第一用戶進行身份驗證并且確定針對第一用戶所允許的訪問級別。云控制器130和/或游戲控制臺管理器113針對目前的云游戲會話將第一用戶分配到游戲控制臺a112a并且提供已授權(quán)級別的訪問,所述訪問包括來自游戲和應(yīng)用程序數(shù)據(jù)庫132的授權(quán)的應(yīng)用程序和游戲。云控制器130和/或游戲控制臺管理器113還可將授權(quán)的游戲和其他應(yīng)用程序從游戲和應(yīng)用程序數(shù)據(jù)庫132傳輸?shù)剿峙溆螒蚩刂婆_a112a。在一個實現(xiàn)方式中,所分配游戲控制臺a112a可訪問游戲和應(yīng)用程序數(shù)據(jù)庫132以將授權(quán)的游戲和其他應(yīng)用程序傳輸?shù)剿峙溆螒蚩刂婆_a。
所公開的云游戲狀態(tài)保存、恢復(fù)和傳輸技術(shù)針對云游戲目的是特別有用的,因為暫停和恢復(fù)游戲狀態(tài)中涉及有大量的數(shù)據(jù)。云游戲系統(tǒng)100非常適合所公開的云游戲狀態(tài)保存、恢復(fù)和傳輸技術(shù),因為云游戲系統(tǒng)包括使用高速網(wǎng)絡(luò)104a-c在世界各地連接起來的成千上萬個云游戲控制臺112a-n。
本文公開云游戲狀態(tài)保存、恢復(fù)和傳輸技術(shù)和方法的多個實現(xiàn)方式。一種方法是在游戲控制臺之間傳輸完整的硬件狀態(tài)數(shù)據(jù)或完整的應(yīng)用程序狀態(tài)數(shù)據(jù)中的至少一個。以下是對云游戲狀態(tài)保存、恢復(fù)和傳輸機構(gòu)可以怎樣工作的描述。還提供了對怎樣復(fù)制硬件狀態(tài)數(shù)據(jù)和應(yīng)用程序狀態(tài)數(shù)據(jù)的詳述。
云游戲狀態(tài)保存、恢復(fù)和傳輸機構(gòu)允許將游戲狀態(tài)數(shù)據(jù)從一個游戲控制臺傳輸?shù)搅硪粋€游戲控制臺。圖2a是示出用于實現(xiàn)本公開的實施方案的方法操作200的簡化概述的流程圖,所述方法操作200是在云游戲狀態(tài)保存、恢復(fù)和傳輸機構(gòu)中執(zhí)行的。在操作205中,第一用戶正在云游戲系統(tǒng)100中的游戲控制臺112a上玩游戲。在操作210中,第一用戶選擇在游戲中的選定的暫停點處暫停游戲。選定的暫停點可以是游戲中除預(yù)定義的游戲暫停點之外的任何點。由于一個或多個云游戲系統(tǒng)管理的原因,云游戲系統(tǒng)100還可自動地暫停用戶的游戲。舉例來說,如果云控制器130在比預(yù)先確定的不活動時間極限長的時間段內(nèi)未檢測到來自第一用戶的活動,或者如果云控制器從第一用戶的客戶端設(shè)備112a檢測到網(wǎng)絡(luò)斷開。
在一個實施方案中,云控制器了解可用的游戲和可用的游戲服務(wù)器,但由于能力原因,通常依賴于所分配游戲控制臺和/或游戲控制臺管理器中的流式軟件來處理與客戶端設(shè)備112a-b的連續(xù)交互。游戲控制臺管理器、所分配游戲控制臺或客戶端設(shè)備可以確定不活動。用戶的不活動(諸如在預(yù)定義的持續(xù)時間內(nèi)沒有按鈕按壓)可由客戶端設(shè)備確定。游戲控制臺管理器和/或所分配游戲控制臺可類似地識別用戶的不活動。舉例來說,當(dāng)客戶端設(shè)備檢測到用戶在預(yù)定義的持續(xù)時間內(nèi)的不活動時,客戶端設(shè)備將斷開消息發(fā)送到所分配游戲控制臺和/或游戲控制臺管理器。斷開消息還可包括造成斷開消息的原因,例如,沒有用戶活動。當(dāng)所分配游戲控制臺和/或游戲控制臺管理器接收到斷開消息時,啟動關(guān)閉流式會話的其余部分的過程,諸如停止游戲、存儲用戶數(shù)據(jù)、捕獲游戲狀態(tài)數(shù)據(jù)等。在一個實現(xiàn)方式中,斷開消息由所分配游戲控制臺中和/或游戲控制臺管理器中的流式軟件接收,并且流式軟件向游戲控制臺管理器發(fā)布關(guān)閉消息,并且游戲控制臺管理器處理關(guān)閉過程。
根據(jù)體系結(jié)構(gòu),用戶斷開最終還可被傳達到云控制器。在一個實施方案中,云控制器可監(jiān)視或跟蹤用戶當(dāng)前是否在進行流式傳輸(例如,為了計費目的)或者阻止用戶多次進行流式傳輸,如果用戶從兩個或更多個位置訪問他所保存的數(shù)據(jù),所述多次流式傳輸可能造成數(shù)據(jù)損壞。
在操作215中捕獲并存儲第一用戶的游戲狀態(tài)數(shù)據(jù)。在捕獲并存儲第一用戶的游戲狀態(tài)數(shù)據(jù)之后,游戲控制臺112a可被空出以供第二用戶使用。游戲狀態(tài)數(shù)據(jù)包括硬件狀態(tài)數(shù)據(jù)和/或應(yīng)用程序狀態(tài)數(shù)據(jù)。游戲狀態(tài)數(shù)據(jù)還可包括在游戲的選定的暫停點處重建游戲可能所必需的歷史相關(guān)數(shù)據(jù)和過程數(shù)據(jù)。歷史相關(guān)數(shù)據(jù)和過程數(shù)據(jù)可以呈數(shù)據(jù)結(jié)構(gòu)的形式,所述數(shù)據(jù)結(jié)構(gòu)包括形成能夠在選定的暫停點處恢復(fù)的可執(zhí)行游戲應(yīng)用程序所需的時間元數(shù)據(jù)和用戶交互歷史元數(shù)據(jù)。時間元數(shù)據(jù)和用戶交互歷史元數(shù)據(jù)的實例包括圖形數(shù)據(jù),諸如顏色數(shù)據(jù)、紋理數(shù)據(jù)、頂點數(shù)據(jù)、分段數(shù)據(jù)、藝術(shù)資產(chǎn)、繪圖數(shù)據(jù)、陰影數(shù)據(jù)、照明數(shù)據(jù)等等。時間元數(shù)據(jù)和用戶交互歷史元數(shù)據(jù)還可包括各種緩沖器和高速緩存的內(nèi)容和狀態(tài),以及協(xié)調(diào)游戲操作所必需的各種計數(shù)器和計時器的狀態(tài)。捕獲游戲狀態(tài)數(shù)據(jù)還可包括在第一用戶的選定的暫停點處捕獲游戲中的場景的當(dāng)前圖像。
在稍后的某個時間,在操作220中,第一用戶選擇恢復(fù)已暫停游戲并且所存儲的第一用戶的游戲狀態(tài)數(shù)據(jù)被檢索并且加載在所分配游戲控制臺上,并且在操作225中,在游戲中的暫停點處恢復(fù)游戲。用戶可在原來用戶最初用來玩游戲的那個相同的游戲控制臺112a上恢復(fù)游戲??蛇x地,第一用戶可在另一個游戲控制臺112b上恢復(fù)游戲。第一用戶還可授權(quán)第二用戶訪問第一用戶的游戲狀態(tài)數(shù)據(jù)以允許第二用戶恢復(fù)第一用戶的已暫停游戲?;謴?fù)游戲包括在選定的游戲控制臺上應(yīng)用游戲狀態(tài)數(shù)據(jù)。游戲狀態(tài)數(shù)據(jù)可包括數(shù)據(jù)結(jié)構(gòu),所述數(shù)據(jù)結(jié)構(gòu)包括形成能夠在選定的暫停點處恢復(fù)的可執(zhí)行游戲應(yīng)用程序所需的時間元數(shù)據(jù)和用戶交互歷史元數(shù)據(jù)。
圖2b是用于實現(xiàn)本公開的實施方案的用戶云游戲系統(tǒng)儀表板250的簡化圖形用戶界面。云游戲系統(tǒng)儀表板250包括以下選項:選擇新游戲252、研究用戶在游戲比賽中的當(dāng)前名次254、查看用戶的游戲歷史256、更新用戶的朋友258、其他選項260和更新用戶帳戶262。選項中的每一個使用戶移動到對應(yīng)的屏幕來執(zhí)行選定的選項。
云游戲系統(tǒng)儀表板250還可包括已暫停游戲菜單270。已暫停游戲菜單270包括已暫停游戲列表和恢復(fù)或刪除已暫停游戲的選項。應(yīng)注意,用戶可具有超過一個已暫停游戲并且可任何時間并且由于他選擇的任何理由暫停游戲。云游戲系統(tǒng)儀表板250屏幕中還示出了用于選擇所顯示的菜單選項的指針280。
云游戲狀態(tài)保存、恢復(fù)和傳輸提供捕獲并且允許將用戶的游戲狀態(tài)從一個游戲控制臺傳輸?shù)搅硪粋€游戲控制臺。用戶的游戲狀態(tài)可包括在用戶暫停游戲時用戶的游戲控制臺的硬件狀態(tài)數(shù)據(jù)和/或應(yīng)用程序狀態(tài)數(shù)據(jù)中的一個或兩個。
圖2c示出一個實施例,其中為用戶提供了共享290游戲a的保存狀態(tài)的功能。系統(tǒng)還可保存用戶與bob292保存游戲狀態(tài)的數(shù)據(jù),并且隨后具備從由bob保存的某個暫停點或狀態(tài)恢復(fù)292的能力。bob還可能完成一個級別并保存或向用戶指示所述級別已完成,這將允許重新開始下一級別。圖2c中還示出保存游戲b中的暫停點的歷史信息294的選項。如果用戶多次暫停,那么用戶可能在這些較早的暫停點處而不是僅在最后保存的暫停點處恢復(fù)。在一些實施方案中,為了歷史目的保存一定數(shù)量的暫停點以節(jié)省存儲空間,或者用戶可具備下載所存儲暫停點的能力。此外,用戶也許能夠與超過一個用戶共享暫停點。例如,用戶可與多個用戶(例如,朋友)共享游戲a中的暫停點,以查看誰在一個級別中取得最佳成績,獲得最佳的獎品等。隨后,用戶可選擇他或她希望從哪個朋友暫停點接管或恢復(fù)。
圖3是示出用于實現(xiàn)本公開的實施方案的方法操作300的流程圖,所述方法操作300是在云游戲狀態(tài)保存、恢復(fù)和傳輸中執(zhí)行的。在操作305中,第一用戶訪問云游戲系統(tǒng)云控制器130。授權(quán)管理器135通過查詢用戶帳戶數(shù)據(jù)庫133以及將第一用戶的登錄訪問信息與用戶帳戶數(shù)據(jù)庫133中的第一用戶的帳戶信息進行比較來確認用戶具有有效帳戶和第一用戶的授權(quán)訪問。第一用戶可經(jīng)由客戶端設(shè)備122a訪問云控制器。
在操作310中,云控制器130將第一用戶分配到游戲控制臺112a。在一個實現(xiàn)方式中,將第一用戶分配到游戲控制臺112a可包括將第一用戶的先前已暫停游戲中的任一個自動地加載在所分配游戲控制臺112a上。將游戲控制臺112a分配到第一用戶還可包括顯示第一用戶的云游戲系統(tǒng)儀表板250屏幕。在一個實現(xiàn)方式中,游戲控制臺管理器可將第一用戶分配到游戲控制臺112a。云控制器執(zhí)行授權(quán),并且游戲控制臺管理器激活游戲控制臺(例如,應(yīng)用電力),傳輸任何所需的數(shù)據(jù)(諸如游戲數(shù)據(jù)、用戶數(shù)據(jù)、游戲狀態(tài)數(shù)據(jù)等)并觸發(fā)向所分配游戲控制臺的登錄序列??蛇x地,所分配游戲控制臺可從用戶數(shù)據(jù)所指示的對應(yīng)的存儲位置和/或游戲控制臺管理器和/或云控制器130檢索任何所需的數(shù)據(jù)(諸如游戲數(shù)據(jù)、用戶數(shù)據(jù)、游戲狀態(tài)數(shù)據(jù)等)。
在操作315中,第一用戶在所分配游戲控制臺112a上選擇并執(zhí)行游戲或應(yīng)用程序。所分配游戲控制臺112a可以是一個或多個云游戲服務(wù)器中的許多游戲控制臺中的一個。在一個實現(xiàn)方式中,第一用戶的所分配游戲控制臺112a可被限制于游戲控制臺的時間共享,其中僅分配給第一用戶所分配游戲控制臺112a的操作時間的一部分。游戲控制臺112a可提供一個或多個時間共享,所述時間共享中的每一個可被分配給相應(yīng)的用戶,從而允許多個用戶同時使用單個游戲控制臺。
在操作320中,在游戲中、在除應(yīng)用程序中的預(yù)定義暫停點之外的點處啟動暫停。例如,第一用戶可啟動暫停請求來暫停他的流式游戲會話??蛇x地,云控制器130可由于第一用戶的不活動超過預(yù)先選擇的不活動時間極限而啟動暫停。由于成本原因,云控制器130可自動地暫停第一用戶的游戲控制臺112a,以使得第一用戶的游戲控制臺可被空出并且可供第二用戶使用。第一用戶可通過將暫停請求傳達到云控制器130和第一用戶的所分配游戲控制臺112a中的一個或兩個來啟動暫停。如上所述,暫停操作可分布在所分配游戲控制臺、游戲控制臺管理器、云控制器130以及流式軟件之中。
在操作325中,捕獲所分配游戲控制臺112a的第一用戶的當(dāng)前游戲狀態(tài)數(shù)據(jù)114。所捕獲的第一用戶的游戲狀態(tài)數(shù)據(jù)114可以是硬件狀態(tài)數(shù)據(jù)或應(yīng)用程序狀態(tài)數(shù)據(jù)或者是硬件狀態(tài)數(shù)據(jù)和應(yīng)用程序狀態(tài)數(shù)據(jù)兩者。以下更詳細地描述硬件狀態(tài)數(shù)據(jù)和應(yīng)用程序狀態(tài)數(shù)據(jù)以及用于捕獲硬件狀態(tài)數(shù)據(jù)和應(yīng)用程序狀態(tài)數(shù)據(jù)的方法和系統(tǒng)。
在操作330中,存儲捕獲的第一用戶的游戲狀態(tài)數(shù)據(jù)114以用于稍后檢索。如上所述,捕獲的第一用戶的游戲狀態(tài)數(shù)據(jù)114可作為存儲的游戲狀態(tài)數(shù)據(jù)114’存儲在本地存儲服務(wù)器116中和/或存儲服務(wù)器110中。存儲服務(wù)器110和本地存儲服務(wù)器116可為多個游戲控制臺和/或多個用戶有效地存儲游戲狀態(tài)數(shù)據(jù)。在操作335中,第一用戶的存儲的游戲狀態(tài)數(shù)據(jù)114’的位置與用戶帳戶數(shù)據(jù)庫133中的第一用戶的帳戶數(shù)據(jù)相關(guān)聯(lián)。這允許第一用戶的帳戶信息包括第一用戶的暫停的游戲狀態(tài)數(shù)據(jù)的存儲位置。
在稍后的某個時間,并且在操作340中,啟動在以上操作320中暫停游戲的那個點處恢復(fù)第一用戶的已暫停游戲的請求。恢復(fù)請求可來源于第一用戶或授權(quán)的第二用戶。第一用戶或授權(quán)的第二用戶可通過所分配游戲控制臺(諸如游戲控制臺112b)來發(fā)布恢復(fù)請求。
如果第一用戶已經(jīng)退出他的初始游戲會話或者他的初始游戲會話以其他方式中斷(諸如,云控制器終止初始游戲會話或者第一用戶經(jīng)歷與云游戲服務(wù)器130或與游戲控制臺管理器113或與所分配游戲控制臺的網(wǎng)絡(luò)連接的中斷),那么可能需要第一用戶重新訪問云游戲服務(wù)并分配有游戲控制臺,如以上操作305中所述。當(dāng)?shù)谝挥脩舴峙溆杏螒蚩刂婆_112b時,第一用戶的已暫停游戲中的一個或多個可被自動地加載在所分配游戲控制臺上。當(dāng)?shù)谝挥脩舴峙溆杏螒蚩刂婆_112b并且第一用戶的已暫停游戲中的一個被加載在所分配游戲控制臺上時,所分配游戲控制臺可向第一用戶提供已暫停游戲準(zhǔn)備好恢復(fù)的指示,并且為第一用戶提供訪問來在以上操作320中暫停游戲的那個點處恢復(fù)已暫停游戲。
如上所述,第一用戶還可共享或發(fā)送存儲的游戲狀態(tài)數(shù)據(jù)114'或以其他方式授權(quán)第二用戶訪問存儲的游戲狀態(tài)數(shù)據(jù)114'。在云控制器130中從所分配游戲控制臺(例如游戲控制臺112b)接收恢復(fù)游戲的請求。
在接收到恢復(fù)請求之后,在操作345中,云控制器130查詢用戶帳戶數(shù)據(jù)庫133中的第一用戶的帳戶信息以確定用于用戶的已暫停游戲的存儲的第一用戶的游戲狀態(tài)數(shù)據(jù)114’的存儲位置。在操作250中,云控制器130和/或游戲控制臺管理器113可檢索存儲的第一用戶的游戲狀態(tài)數(shù)據(jù)114’并且將存儲的第一用戶的游戲狀態(tài)數(shù)據(jù)114’發(fā)送到發(fā)出請求的游戲控制臺112b。在操作355中,發(fā)出請求的游戲控制臺112b接收存儲的第一用戶的游戲狀態(tài)數(shù)據(jù)114’。
在操作360中,發(fā)出請求的游戲控制臺112b應(yīng)用存儲的第一用戶的游戲狀態(tài)數(shù)據(jù)114’來產(chǎn)生恢復(fù)的游戲狀態(tài)數(shù)據(jù)114”以在暫停點處重建游戲。在暫停點處重建游戲?qū)l(fā)出請求的游戲控制臺112b配置成與游戲控制臺112a等效的配置,并且將游戲配置成當(dāng)在以上操作320中暫停游戲時。在暫停點處重建游戲可包括使用恢復(fù)的游戲狀態(tài)數(shù)據(jù)的相應(yīng)部分來填充發(fā)出請求的游戲控制臺112b內(nèi)的多個相應(yīng)方面和位置。舉例來說,在暫停點處重建游戲可包括填充在暫停游戲的點處重建游戲所必需的所有歷史相關(guān)數(shù)據(jù)和過程數(shù)據(jù)。重建游戲所必需的相關(guān)數(shù)據(jù)和過程數(shù)據(jù)的實例包括圖形數(shù)據(jù),諸如顏色數(shù)據(jù)、紋理數(shù)據(jù)、頂點數(shù)據(jù)、分段數(shù)據(jù)、藝術(shù)資產(chǎn)、繪圖數(shù)據(jù)、陰影數(shù)據(jù)、照明數(shù)據(jù)等等。相關(guān)數(shù)據(jù)和過程數(shù)據(jù)還可包括各種緩沖器和高速緩存的內(nèi)容和狀態(tài),以及協(xié)調(diào)游戲操作所必需的各種計數(shù)器和計時器的狀態(tài)。在暫停游戲的點處重建游戲還可包括顯示在第一用戶的選定暫停點處、游戲中的場景的捕獲圖像。
在操作370中,在游戲中與以上操作320中暫停游戲的相同點處、在游戲控制臺112b中恢復(fù)第一用戶的游戲,并且所述方法操作可以結(jié)束。
游戲狀態(tài)數(shù)據(jù)可以表達為應(yīng)用程序狀態(tài)數(shù)據(jù)和/或硬件狀態(tài)數(shù)據(jù)的形式。應(yīng)用程序狀態(tài)數(shù)據(jù)捕獲和恢復(fù)以及硬件狀態(tài)數(shù)據(jù)捕獲和恢復(fù)中的每一個都對云游戲狀態(tài)保存、恢復(fù)和傳輸技術(shù)有它自己的挑戰(zhàn),如下文所討論。
應(yīng)用程序狀態(tài)數(shù)據(jù)
計算機是由一個或多個處理器、存儲器以及輸入輸出外圍設(shè)備(例如圖形處理器單元(gpu)、聲卡、鍵盤以及其他外圍設(shè)備)組成的一件硬件。計算機運行的任務(wù)是計算機程序或應(yīng)用程序。計算機處理器執(zhí)行這些應(yīng)用程序的代碼并且基于i/o作出決定,例如,鍵盤按鈕按壓可導(dǎo)致在顯示器上輸出視頻幀。
應(yīng)用程序狀態(tài)數(shù)據(jù)可歸因于硬件狀態(tài)數(shù)據(jù)。應(yīng)用程序所使用的存儲器緩沖器最終是ram芯片的或在交換文件中的區(qū)域,例如硬盤驅(qū)動器或固態(tài)驅(qū)動器。處理器在指令高速緩存中存儲用于應(yīng)用程序的指令,并且在處理器寄存器、數(shù)據(jù)高速緩存或ram中檢索/存儲數(shù)據(jù)。在執(zhí)行期間,每個計算機應(yīng)用程序具有對應(yīng)的應(yīng)用程序狀態(tài)數(shù)據(jù)。應(yīng)用程序狀態(tài)數(shù)據(jù)呈以下形式:
打開文件句柄
呈開放式套接字形式的網(wǎng)絡(luò)連接
管道
應(yīng)用程序所使用的存儲器緩沖器的狀態(tài)
指令計數(shù)器
計時器
例如,應(yīng)用程序狀態(tài)數(shù)據(jù)可包括信號、線程、文件描述符、虛擬存儲器映射、線程本地存儲、線程、進程id、用戶id、組id、管道、套接字等等。應(yīng)用程序狀態(tài)數(shù)據(jù)還可包括操作系統(tǒng)級概念,諸如由游戲占用的gpu資源。游戲意識到資源,諸如紋理、幾何緩沖器、供gpu執(zhí)行的著色器指令以及其他資源。紋理存儲在gpu存儲器中,著色器指令被加載到gpu存儲器中并且在執(zhí)行期間加載在指令高速緩存中,并且最終有一個匹配的指令指針。
再次參考以上圖3,當(dāng)在以上圖3的操作320中啟動暫停時,游戲或應(yīng)用程序被暫停。在操作325中,通過捕獲應(yīng)用程序狀態(tài)數(shù)據(jù)來捕獲游戲狀態(tài)數(shù)據(jù)。應(yīng)用程序狀態(tài)數(shù)據(jù)包括虛擬存儲器映射、檢索文件描述符等。在一個實現(xiàn)方式中,來自應(yīng)用程序內(nèi)的類似調(diào)試程序的功能可用來捕獲虛擬存儲器映射、檢索文件描述符等。
應(yīng)用程序狀態(tài)數(shù)據(jù)的一部分也可在linux操作系統(tǒng)上從外部獲得,例如從/proc/<proccessid>應(yīng)用程序獲得。應(yīng)用程序狀態(tài)數(shù)據(jù)的實例可以是打開文件,針對所述打開文件,應(yīng)用程序具有為數(shù)值的文件描述符。在文件讀/寫調(diào)用中使用數(shù)值文件描述符作為用于文件的標(biāo)識符。為了還原這種狀態(tài),應(yīng)用程序需要具備正確的數(shù)值文件描述符。舉例來說,在linux操作系統(tǒng)中,可通過偽碼捕獲數(shù)值文件描述符,所述偽碼諸如:
-original_file_descriptor=42
-file_descriptor=open("/path/to/file",..)
-dup2(file_descriptor,original_file_descriptor)
另外,在linux操作系統(tǒng)上,可使用名稱空間來虛擬化其他類型的應(yīng)用程序狀態(tài)數(shù)據(jù),諸如進程id(pid)、用戶id、組id、網(wǎng)絡(luò)布局以及其他數(shù)據(jù)。虛擬化的進程id(pid)、用戶id、組id、網(wǎng)絡(luò)布局等允許創(chuàng)建沙箱/容器環(huán)境,其中系統(tǒng)的部分可被隱藏并且其中可重新創(chuàng)建pid、用戶id以及其他操作系統(tǒng)級資源。
捕獲的應(yīng)用程序狀態(tài)數(shù)據(jù)可隨后用來在圖3的操作360中在相同的或不同的計算機系統(tǒng)(例如,游戲控制臺112b)上重新創(chuàng)建相同的應(yīng)用程序狀態(tài)數(shù)據(jù)??蓪⒏鞣N應(yīng)用程序狀態(tài)數(shù)據(jù)放置在用來恢復(fù)應(yīng)用程序或游戲的游戲控制臺112b中的相應(yīng)位置中??稍诓僮飨到y(tǒng)中重新創(chuàng)建網(wǎng)絡(luò)緩沖器的內(nèi)容。可選地,網(wǎng)絡(luò)緩沖器可被排空到安全還原點,類似于以下描述的硬件中斷。以這種方式,用戶將能夠在以上操作320中暫停應(yīng)用程序或游戲的點處恢復(fù)應(yīng)用程序。
硬件狀態(tài)數(shù)據(jù)
硬件狀態(tài)數(shù)據(jù)包括在執(zhí)行應(yīng)用程序期間,諸如當(dāng)用戶選擇暫停應(yīng)用程序時,被暫停的計算機的操作狀況。及時凍結(jié)計算機的當(dāng)前操作狀況,以使得計算機的硬件,例如處理器、ram、所有外圍設(shè)備、gpu、聲卡、網(wǎng)卡等。在用戶已經(jīng)在第一計算機中暫停應(yīng)用程序的情況下,捕獲這個硬件狀態(tài)數(shù)據(jù)并隨后將捕獲的硬件狀態(tài)數(shù)據(jù)應(yīng)用到另一個計算機可允許用戶恢復(fù)所述應(yīng)用程序。
仿真程序是完全在軟件中模擬計算機的硬件的應(yīng)用程序。仿真程序通常用來在最近生產(chǎn)的計算機系統(tǒng)上運行來自很舊的計算機或游戲控制臺(諸如已過時的計算機或游戲控制臺)的舊版應(yīng)用程序。由于硬件不兼容和沒有仿真程序應(yīng)用程序,最近生產(chǎn)的計算機系統(tǒng)與舊版應(yīng)用程序不兼容,所以最近生產(chǎn)的計算機系統(tǒng)不能運行舊版應(yīng)用程序。
為了在操作中的任何選定點處保存硬件狀態(tài)數(shù)據(jù),仿真程序可將用于仿真計算機的仿真硬件狀態(tài)數(shù)據(jù)保存到例如文件。仿真硬件狀態(tài)數(shù)據(jù)包括捕獲用于仿真設(shè)備的所有存儲器、外圍設(shè)備的狀態(tài)、將當(dāng)前執(zhí)行的指令的地址存儲在用于仿真計算機的其他地方。仿真計算機完全在仿真程序應(yīng)用程序中實現(xiàn),從而如上所述捕獲仿真程序應(yīng)用程序的應(yīng)用程序狀態(tài)數(shù)據(jù)。
虛擬機狀態(tài)類似于仿真硬件狀態(tài)數(shù)據(jù)。在云游戲、硬件狀態(tài)數(shù)據(jù)捕獲、傳輸和恢復(fù)的情況下,對仿真程序的一個挑戰(zhàn)是在多個虛擬游戲機之間共享仿真硬件狀態(tài)數(shù)據(jù)。
通常,服務(wù)器應(yīng)用程序(例如web服務(wù)器、數(shù)據(jù)庫服務(wù)器、電子郵件服務(wù)器等)在物理服務(wù)器硬件(例如服務(wù)器機器)上運行。服務(wù)器機器包括強大的中央處理單元(cpu)以及大量存儲器,這允許并行運行多個服務(wù)器應(yīng)用程序。計算機硬件(諸如處理器、存儲器、數(shù)據(jù)總線等)已變得更強大,并且服務(wù)器運行時間和安全性已變得甚至更關(guān)鍵且重要。
服務(wù)器應(yīng)用程序通常在虛擬化服務(wù)器硬件上運行。在這種情況下,存在強大的服務(wù)器處理器,所述服務(wù)器處理器運行虛擬化應(yīng)用程序。虛擬化應(yīng)用程序允許創(chuàng)建多個虛擬機。每個虛擬機是單獨運行的仿真計算機硬件。每個虛擬機包括它自己的一組虛擬外圍設(shè)備或物理外圍設(shè)備,例如網(wǎng)卡、存儲設(shè)備等。每個虛擬機可運行它自己的操作系統(tǒng)。虛擬機中的每一個虛擬機上的操作系統(tǒng)可與其他虛擬機不同并且與物理機(例如運行多個虛擬機的linux物理機)的操作系統(tǒng)不同,所述虛擬機中的每一個運行不同版本的windows或其他合適的計算機操作系統(tǒng)。
每個服務(wù)器應(yīng)用程序(例如web服務(wù)器、數(shù)據(jù)庫服務(wù)器、電子郵件服務(wù)器等)通常由于安全隔離的原因被分配到它自己的虛擬機。通常,虛擬機(例如仿真程序)是軟件概念,并且可與仿真程序以類似的方式被暫停,并且虛擬機狀態(tài)可被捕獲為虛擬化應(yīng)用程序的應(yīng)用程序狀態(tài)數(shù)據(jù)。
隨后可將虛擬機狀態(tài)傳輸?shù)降诙摂M機。第二虛擬機可在可能使用不同物理部件的不同物理服務(wù)器上運行,但由于虛擬外圍設(shè)備和虛擬機的虛擬處理器,物理部件將并不重要。
虛擬機狀態(tài)可被認為是一種類型的應(yīng)用程序狀態(tài)數(shù)據(jù)。在計算機系統(tǒng)之間傳輸虛擬機狀態(tài)被稱為虛擬機遷移,并且是服務(wù)器世界中的常見特征。
對虛擬機遷移的最近擴展被稱為實時遷移,并且提高了服務(wù)器可靠性。例如,虛擬數(shù)據(jù)庫服務(wù)器可檢測到物理硬件出現(xiàn)故障(例如存儲器錯誤、硬盤讀錯誤等),并且觸發(fā)虛擬數(shù)據(jù)庫服務(wù)器遷移到托管在不同服務(wù)器硬件上的另一個相同的虛擬數(shù)據(jù)庫服務(wù)器。實時遷移可在僅幾毫秒或更少的停機時間內(nèi)并且在不斷開任何客戶端的情況下發(fā)生。
不幸的是,虛擬機的所有外圍設(shè)備都必須是虛擬外圍設(shè)備,以便虛擬機的遷移正常工作。虛擬機的遷移不支持物理外圍設(shè)備的遷移。將第一游戲控制臺的硬件狀態(tài)數(shù)據(jù)遷移到第二游戲控制臺需要遷移物理硬件,并且因此虛擬機遷移不適合這個目的。
由于產(chǎn)生內(nèi)容豐富的交互式游戲環(huán)境所需的游戲控制臺硬件的復(fù)雜性,不能容易地或有效地仿真或虛擬化游戲控制臺。用戶被分配到特定的游戲控制臺,并且用戶的選定游戲正由所分配游戲控制臺的硬件執(zhí)行。因此,仿真和虛擬化將不提供捕獲硬件狀態(tài)數(shù)據(jù)作為一種類型的應(yīng)用程序狀態(tài)數(shù)據(jù)所需的功能。
如上所述,硬件遷移需要捕獲計算機和用于所述計算機的外圍設(shè)備的相關(guān)硬件狀態(tài)數(shù)據(jù)??刹樵冇糜谙鄳?yīng)外圍設(shè)備的設(shè)備驅(qū)動程序,以捕獲用于外圍設(shè)備的相關(guān)硬件狀態(tài)數(shù)據(jù)并且在系統(tǒng)進入休眠時將這種狀態(tài)存儲在系統(tǒng)存儲器中。當(dāng)系統(tǒng)再次通電時,從磁盤還原所有存儲器狀態(tài),并且還將命令外圍設(shè)備驅(qū)動程序還原任何硬件狀態(tài)數(shù)據(jù),例如用于gpu的包含3d紋理的緩沖器。
在一個實現(xiàn)方式中,游戲控制臺112a如以上圖1中所示包括主處理器145和協(xié)處理器146。當(dāng)用戶選擇暫停游戲控制臺112a時,在以上操作320中,主處理器145可凍結(jié)當(dāng)前操作中的一個或多個。在操作325中,協(xié)處理器146可查詢主處理器145、緩沖器、圖形處理器147、存儲器系統(tǒng)148、輸入輸出系統(tǒng)149、網(wǎng)絡(luò)接口卡150以及其他外圍設(shè)備,以確定相應(yīng)的目前狀態(tài)來捕獲硬件狀態(tài)數(shù)據(jù)??蛇x地,與操作系統(tǒng)一起工作或作為操作系統(tǒng)的一部分的應(yīng)用程序可暫停并查詢緩沖器、圖形處理器147、存儲器系統(tǒng)148、輸入輸出系統(tǒng)149、網(wǎng)絡(luò)接口卡150以及其他外圍設(shè)備。
為了支持從第一游戲控制臺112a到第二游戲控制臺112b的游戲控制臺硬件狀態(tài)數(shù)據(jù)遷移,需要額外的手段,即使第二游戲控制臺112b包括與第一游戲控制臺112a相同的部件和外圍設(shè)備。例如,游戲控制臺112a、112b中的每一個中的外圍設(shè)備將具有不同的內(nèi)部序列號,其可能需要某種重新配置。另一個實例將是網(wǎng)絡(luò)設(shè)備的mac地址,其需要附加的重新配置。
此外,第二游戲控制臺112b可處于與第一游戲控制臺112a不同的網(wǎng)絡(luò)環(huán)境中。不同的網(wǎng)絡(luò)環(huán)境很可能使用不同的網(wǎng)絡(luò)設(shè)置,并且因此游戲控制臺硬件狀態(tài)數(shù)據(jù)遷移也將需要網(wǎng)絡(luò)重新配置。也可能需要針對第一游戲控制臺112a與第二游戲控制臺112b之間的地理差異來重新配置游戲控制臺硬件狀態(tài)數(shù)據(jù)遷移。例如,傳輸?shù)教幱谂c第一游戲控制臺112a不同的地理區(qū)域中的第二游戲控制臺112b可能需要時區(qū)變化、語言變化以及甚至可能在正在運行的游戲中使用的語言的變化。
第二游戲控制臺112b還可具有與第一游戲控制臺112a不同的硬件版本,其可能需要不同的重新初始化。例如,第二游戲控制臺112b可以是例如在較小的半導(dǎo)體工藝中的較新的硬件版本,可具有比第一游戲控制臺112a更高的功率效率并且將需要與第一游戲控制臺112a不同的功率和冷卻設(shè)置。
單個應(yīng)用程序的實時遷移是相當(dāng)新的領(lǐng)域。一種方法允許暫停應(yīng)用程序,然后捕獲應(yīng)用程序狀態(tài)數(shù)據(jù)(諸如文件句柄、套接字、存儲器狀態(tài)以及諸如上文所述的其他類型的應(yīng)用程序狀態(tài)數(shù)據(jù))。在恢復(fù)期間,將相同的文件描述符還原到與應(yīng)用程序被暫停時相同的狀況。網(wǎng)絡(luò)連接、計時器、相互排斥以及其他類型的狀態(tài)也被還原。3d游戲應(yīng)用程序依賴于呈常駐在gpu上的緩沖器形式的硬件狀態(tài)數(shù)據(jù)。先前方法不捕獲相應(yīng)的硬件狀態(tài)數(shù)據(jù),并且將需要先前方法進行3d游戲的應(yīng)用程序狀態(tài)數(shù)據(jù)傳輸。在這種情況下,硬件狀態(tài)數(shù)據(jù)是指代表應(yīng)用程序存儲在硬件中的任何數(shù)據(jù)或狀態(tài)。例如,gpu存儲器中的緩沖器包含幾何圖形或紋理數(shù)據(jù),存儲器緩沖器包含硬盤上的游戲數(shù)據(jù)文件。應(yīng)用程序通常通過由操作系統(tǒng)核心或設(shè)備驅(qū)動程序提供的軟件抽象層來訪問這種硬件狀態(tài)數(shù)據(jù)。這種抽象的實例可以是,磁盤上的文件的文件描述符最終是存儲設(shè)備之上的層,文件描述符表示gpu側(cè)緩沖器和圖形情境。有時,由于性能原因,應(yīng)用程序可直接訪問硬件緩沖器。直接訪問硬件緩沖器可由設(shè)備驅(qū)動程序引導(dǎo)。
用來捕獲硬件狀態(tài)數(shù)據(jù)的一種方法包括暫停應(yīng)用程序,并且鏈接到暫停的硬件狀態(tài)數(shù)據(jù)的軟件抽象將被捕獲。如果軟件抽象機構(gòu)是文件描述符,那么文件描述符可用來查找對應(yīng)的硬件狀態(tài)數(shù)據(jù)。由于文件描述符通常是設(shè)備驅(qū)動程序/os核心概念,所以對應(yīng)的設(shè)備驅(qū)動程序需要揭露用于檢索其相關(guān)聯(lián)的硬件狀態(tài)數(shù)據(jù)的方法。識別應(yīng)用程序背后的所有硬件狀態(tài)數(shù)據(jù)的過程可能相當(dāng)困難。
硬件狀態(tài)數(shù)據(jù)的實例包括各種寄存器、fifo緩沖器、指令高速緩存(在cpu和gpu兩者中)、數(shù)據(jù)高速緩存(cpu/gpu)、ram、cpu和gpu上的程序計數(shù)器/指令指針的內(nèi)容。gpu指令將用于著色器應(yīng)用程序。
硬件狀態(tài)數(shù)據(jù)還包括過渡態(tài)相關(guān)信息。例如,硬件可發(fā)出中斷信號??梢灾匦律芍袛嘈盘?,或者緩沖器可排空緩沖器的當(dāng)前內(nèi)容,并且隨后在已知的安全還原狀態(tài)下重新加載緩沖器。在一個實現(xiàn)方式中,可允許硬件完成任何已排入隊列或已計劃的操作。中斷可隨后用來觸發(fā)新的操作或用來通知操作已完成。如果硬件忙于操作,那么可重新生成這類中斷信號,否則在硬件正等待中斷信號以便進行某個掛起的操作的情況下,硬件可能無法完成恢復(fù)操作。某些操作可具有較少的過渡態(tài)要捕獲。在一個實現(xiàn)方式中,可繼續(xù)游戲操作,直到掛起的過渡態(tài)被最小化或低于選定的閾值為止,隨后在恢復(fù)游戲期間可能需要較少的過渡硬件狀態(tài)數(shù)據(jù)(諸如中斷和指令計數(shù)器)用于重建。
另一種方法是從應(yīng)用程序獲取幫助。代替暫停應(yīng)用程序,可向應(yīng)用程序發(fā)送暫停信號,所述暫停信號使得應(yīng)用程序?qū)⑵渌袃?nèi)部狀態(tài)存儲到磁盤并且允許應(yīng)用程序還原任何所需的硬件狀態(tài)數(shù)據(jù)。在恢復(fù)應(yīng)用程序之后,應(yīng)用程序的工作就是進行還原。優(yōu)點是應(yīng)用程序知道它真正需要捕獲什么硬件狀態(tài)數(shù)據(jù)。通過從它的游戲文件重新加載數(shù)據(jù),可能會還原硬件狀態(tài)數(shù)據(jù)的很大一部分。游戲也可處理還原,例如斷開到在線云控制器的網(wǎng)絡(luò)連接。
獨立于經(jīng)由傳輸應(yīng)用程序狀態(tài)數(shù)據(jù)或硬件狀態(tài)數(shù)據(jù)的還原,存在附加的恢復(fù)方面,包括在線游戲斷開、對用戶和游戲控制臺的時區(qū)的調(diào)整、為用戶選擇適當(dāng)?shù)恼Z言以及恢復(fù)游戲計時器。游戲通常使用高精度的總是增加的計時器,以便進行內(nèi)部游戲計時。在恢復(fù)之后,這些計時器需要在與它們之前被暫停時完全相同的時間重新開始,否則游戲可能做出錯誤的決定,例如游戲角色可能被卡在墻中或死亡。根據(jù)可能處理或可能還未處理這種重新開始的操作系統(tǒng),需要進行軟件修改。如上所述,在操作350以及以下操作中,成功的恢復(fù)需要正確的應(yīng)用程序或游戲以及所有支持?jǐn)?shù)據(jù)文件。
圖4為根據(jù)本發(fā)明的各種實施方案的游戲系統(tǒng)400的框圖。游戲系統(tǒng)400被配置來經(jīng)由網(wǎng)絡(luò)415向一個或多個客戶端410提供視頻流。游戲系統(tǒng)400通常包括視頻服務(wù)器系統(tǒng)420和任選的游戲服務(wù)器425。視頻服務(wù)器系統(tǒng)420被配置來以最低的服務(wù)質(zhì)量向一個或多個客戶端410提供視頻流。例如,視頻服務(wù)器系統(tǒng)420可接收改變視頻游戲的狀態(tài)或所述視頻游戲內(nèi)的視角的游戲命令,并且以最小的滯后時間給客戶端410提供反映這種狀態(tài)變化的更新后的視頻流。視頻服務(wù)器系統(tǒng)420可被配置來以多種替代視頻格式(包括還未定義的格式)提供視頻流。此外,視頻流可包括配置用于以多種幀速率呈現(xiàn)給用戶的視頻幀。典型的幀速率是每秒30幀、每秒60幀和每秒420幀。但是本發(fā)明的替代實施方案中包括更高或更低的幀速率。
在本文中被單獨稱為為410a、410b等的客戶端410可包括頭戴式顯示器、終端、個人計算機、游戲控制臺、平板計算機、電話、機頂盒、信息亭、無線設(shè)備、數(shù)字板、獨立設(shè)備、手持式玩游戲設(shè)備和/或類似設(shè)備。通常,客戶端410被配置來接收編碼的視頻流,對視頻流進行解碼,并且將所得的視頻呈現(xiàn)給用戶,例如游戲玩家。接收編碼的視頻流和/或?qū)σ曨l流進行解碼的過程通常包括將個別視頻幀存儲在客戶端的接收緩沖器中??梢栽谂c客戶端410成一體的顯示器上或在諸如監(jiān)視器或電視機的單獨設(shè)備上將視頻流呈現(xiàn)給用戶??蛻舳?10任選地被配置來支持超過一個游戲玩家。例如,游戲控制臺可被配置來支持兩個、三個、四個或更多個同時的玩家。這些玩家中的每一個可接收單獨的視頻流,或單個視頻流可包括特別針對每個玩家所生成(例如,基于每個玩家的視角所生成)的幀的區(qū)??蛻舳?10任選地在地理上分散。游戲系統(tǒng)400中所包括的客戶端的數(shù)量可從一個或兩個廣泛變化到幾千個、幾萬個或更多個。如本文所使用,術(shù)語“游戲玩家”用來指玩游戲的人,并且術(shù)語“玩游戲設(shè)備”用于指用來玩游戲的設(shè)備。在一些實施方案中,玩游戲設(shè)備可指多個計算設(shè)備,這些計算設(shè)備合作來向用戶傳達游戲體驗。例如,游戲控制臺和hmd可與視頻服務(wù)器系統(tǒng)420合作來傳達通過hmd看到的游戲。在一個實施方案中,游戲控制臺從視頻服務(wù)器系統(tǒng)420接收視頻流,并且游戲控制臺將視頻流或?qū)σ曨l流的更新轉(zhuǎn)發(fā)給hmd以便呈現(xiàn)。
客戶端410被配置來經(jīng)由網(wǎng)絡(luò)415接收視頻流。網(wǎng)絡(luò)415可以是任何類型的通信網(wǎng)絡(luò),其包括電話網(wǎng)絡(luò)、互聯(lián)網(wǎng)、無線網(wǎng)絡(luò)、電力線網(wǎng)絡(luò)、局域網(wǎng)、廣域網(wǎng)、私有網(wǎng)絡(luò)和/或類似網(wǎng)絡(luò)。在典型的實施方案中,經(jīng)由諸如tcp/ip或udp/ip的標(biāo)準(zhǔn)協(xié)議來傳達視頻流?;蛘?,經(jīng)由專有標(biāo)準(zhǔn)來傳達視頻流。
客戶端410的典型實例是個人計算機,所述個人計算機包括處理器、非易失性存儲器、顯示器、解碼邏輯、網(wǎng)絡(luò)通信能力以及輸入設(shè)備。解碼邏輯可包括硬件、固件和/或存儲在計算機可讀介質(zhì)上的軟件。用于解碼(和編碼)視頻流的系統(tǒng)在本領(lǐng)域中是熟知的,并且根據(jù)所使用的具體編碼方案而變化。
客戶端410可能(但不需要)還包括被配置用于修改接收到的視頻的系統(tǒng)。例如,客戶端可被配置來:執(zhí)行進一步呈現(xiàn),將一個視頻圖像疊加在另一個視頻圖像上,修剪視頻圖像,和/或類似操作。例如,客戶端410可被配置來接收各種類型的視頻幀,諸如i幀、p幀和b幀,并且被配置來將這些幀處理成圖像以向用戶顯示。在一些實施方案中,客戶端410的構(gòu)件被配置來對視頻流執(zhí)行進一步呈現(xiàn)、陰影處理、轉(zhuǎn)換成3-d或類似操作??蛻舳?10的構(gòu)件任選地被配置來接收超過一個音頻或視頻流??蛻舳?10的輸入設(shè)備可包括:例如,單手游戲控制器、雙手游戲控制器、示意動作辨別系統(tǒng)、注視辨別系統(tǒng)、語音辨別系統(tǒng)、鍵盤、操縱桿、指針設(shè)備、力反饋設(shè)備、運動和/或位置傳感設(shè)備、鼠標(biāo)、觸摸屏、神經(jīng)接口、攝像機、還未開發(fā)出的輸入設(shè)備,和/或類似設(shè)備。
客戶端410所接收的視頻流(和任選的音頻流)是由視頻服務(wù)器系統(tǒng)420生成并提供的。如在本文中其他地方進一步描述的,這個視頻流包括視頻幀(并且音頻流包括音頻幀)。視頻幀被配置成(例如,它們包括在適當(dāng)數(shù)據(jù)結(jié)構(gòu)中的像素信息)在很大程度上構(gòu)成向用戶顯示的圖像。如本文所使用,術(shù)語“視頻幀”用來指主要包括被配置來構(gòu)成(例如實現(xiàn))展示給用戶的圖像的信息的幀。本文中關(guān)于“視頻幀”的大部分教義也可適用于“音頻幀”。
客戶端410通常被配置來從用戶接收輸入。這些輸入可包括游戲命令,所述游戲命令被配置來改變視頻游戲的狀態(tài)或以其他方式影響游戲進行。可使用輸入設(shè)備接收游戲命令,且/或可由在客戶端410上執(zhí)行的計算指令自動地生成游戲命令。將接收到的游戲命令經(jīng)由網(wǎng)絡(luò)415從客戶端410傳達到視頻服務(wù)器系統(tǒng)420和/或游戲服務(wù)器425。例如,在一些實施方案中,將游戲命令經(jīng)由視頻服務(wù)器系統(tǒng)420傳達到游戲服務(wù)器425。在一些實施方案中,將游戲命令的單獨拷貝從客戶端410傳達到游戲服務(wù)器425和視頻服務(wù)器系統(tǒng)420。游戲命令的傳達任選地取決于命令的標(biāo)識。通過用來向客戶端410a提供音頻或視頻流的不同路線或通信信道,從客戶端410a任選地傳達游戲命令。應(yīng)理解,游戲服務(wù)器425可包括如上所述的云控制器130和/或游戲管理器113的部分。
游戲服務(wù)器425任選地由不同于視頻服務(wù)器系統(tǒng)420的實體來操作。例如,游戲服務(wù)器425可由多玩家游戲的發(fā)行商來操作。在這個實例中,視頻服務(wù)器系統(tǒng)420任選地被游戲服務(wù)器425視為客戶端,并且任選地被配置來(從游戲服務(wù)器425的角度看)表現(xiàn)為執(zhí)行現(xiàn)有技術(shù)游戲引擎的現(xiàn)有技術(shù)客戶端。視頻服務(wù)器系統(tǒng)420與游戲服務(wù)器425之間的通信任選地經(jīng)由網(wǎng)絡(luò)415發(fā)生。因此,游戲服務(wù)器425可以是向多個客戶端發(fā)送游戲狀態(tài)信息的現(xiàn)有技術(shù)多玩家游戲服務(wù)器,所述客戶端中的一個是視頻服務(wù)器系統(tǒng)420。視頻服務(wù)器系統(tǒng)420可被配置來同時與游戲服務(wù)器425的多個實例通信。例如,視頻服務(wù)器系統(tǒng)420可被配置來向不同用戶提供多個不同的視頻游戲。這些不同視頻游戲中的每一個可由不同游戲服務(wù)器425支持且/或由不同實體發(fā)行。在一些實施方案中,視頻服務(wù)器系統(tǒng)420的一些地理上分散的實例被配置來向多個不同用戶提供游戲視頻。視頻服務(wù)器系統(tǒng)420的這些實例中的每一個可與游戲服務(wù)器425的相同實例通信。視頻服務(wù)器系統(tǒng)420與一個或多個游戲服務(wù)器425之間的通信任選地經(jīng)由專用通信信道發(fā)生。例如,視頻服務(wù)器系統(tǒng)420可經(jīng)由高帶寬信道連接到游戲服務(wù)器425,所述高帶寬信道專門用于這兩個系統(tǒng)之間的通信。
視頻服務(wù)器系統(tǒng)420至少包括:視頻源430、i/o設(shè)備445、處理器450,以及非暫時性存儲體455。視頻服務(wù)器系統(tǒng)420可包括一個計算設(shè)備或分布在多個計算設(shè)備之中。這些計算設(shè)備任選地經(jīng)由諸如局域網(wǎng)的通信系統(tǒng)連接起來。
視頻源430被配置來提供視頻流,例如,流式視頻或形成運動圖片的一系列視頻幀。在一些實施方案中,視頻源430包括視頻游戲引擎和呈現(xiàn)邏輯。視頻游戲引擎被配置來:從玩家接收游戲命令,并且基于接收到的命令維持視頻游戲的狀態(tài)的拷貝。這個游戲狀態(tài)包括游戲環(huán)境中的對象的定位,并且通常包括視角。游戲狀態(tài)還可包括對象的性質(zhì)、圖像、顏色和/或紋理。通常基于游戲規(guī)則以及游戲命令(諸如,移動、轉(zhuǎn)動、攻擊、設(shè)置焦點、交互、使用和/或類似命令)來維持游戲狀態(tài)。游戲引擎的部分任選地設(shè)置在游戲服務(wù)器425內(nèi)。游戲服務(wù)器425可基于使用地理上分散的客戶端從多個玩家接收到的游戲命令來維持游戲狀態(tài)的拷貝。在這些情況下,游戲服務(wù)器425將游戲狀態(tài)提供給視頻源430,其中存儲游戲狀態(tài)的拷貝并且執(zhí)行呈現(xiàn)。游戲服務(wù)器425可經(jīng)由網(wǎng)絡(luò)415直接從客戶端410接收游戲命令,且/或可經(jīng)由視頻服務(wù)器系統(tǒng)420接收游戲命令。
視頻源430通常包括呈現(xiàn)邏輯,例如硬件、固件和/或存儲在諸如存儲體455的計算機可讀介質(zhì)上的軟件。這個呈現(xiàn)邏輯被配置來基于游戲狀態(tài)創(chuàng)建視頻流的視頻幀。呈現(xiàn)邏輯的全部或部分任選地設(shè)置在圖形處理單元(gpu)內(nèi)。呈現(xiàn)邏輯通常包括被配置用于確定對象之間的三維空間關(guān)系且/或用于基于游戲狀態(tài)和視角來應(yīng)用適當(dāng)?shù)募y理等的處理階段。呈現(xiàn)邏輯產(chǎn)生原始視頻,所述原始視頻隨后通常被編碼,然后傳達給客戶端410。例如,可根據(jù)adobe
在替代實施方案中,視頻源430包括諸如攝像機的視頻錄制設(shè)備。這個攝像機可用來生成可被包括在計算機游戲的視頻流中的延遲視頻或?qū)崨r視頻。所得的視頻流任選地包括所呈現(xiàn)的圖像和使用靜態(tài)攝像機或視頻攝像機錄制的圖像。視頻源430還可包括被配置來存儲將要包括在視頻流中的先前錄制視頻的存儲設(shè)備。視頻源430還可包括:被配置來檢測對象(例如,人)的運動或定位的運動或定位傳感設(shè)備;以及被配置來基于檢測到的運動和/或定位來確定游戲狀態(tài)或產(chǎn)生視頻的邏輯。
視頻源430任選地被配置來提供疊加,所述疊加被配置來放置在其他視頻上。例如,這些疊加可包括命令界面、登入指令、發(fā)給游戲玩家的消息、其他游戲玩家的圖像、其他游戲玩家的視頻饋送(例如網(wǎng)絡(luò)攝像機視頻)。在客戶端410a包括觸摸屏界面或注視檢測界面的實施方案中,所述疊加可包括虛擬的鍵盤、操縱桿、觸摸板和/或類似物。在疊加的一個實例中,將玩家的語音疊加在音頻流上。視頻源430任選地還包括一個或多個音頻源。
在視頻服務(wù)器系統(tǒng)420被配置來基于來自超過一個玩家的輸入來維持游戲狀態(tài)的實施方案中,每個玩家可具有不同視角,所述視角包括觀察的位置和方向。視頻源430任選地被配置來基于玩家的視角給每個玩家提供單獨的視頻流。此外,視頻源430可被配置來向客戶端410中的每一個提供不同的幀大小、幀數(shù)據(jù)大小和/或編碼。視頻源430任選地被配置來提供3-d視頻。
i/o設(shè)備445被配置以供視頻服務(wù)器系統(tǒng)420用來發(fā)送和/或接收信息,所述信息諸如:視頻、命令、對信息的請求、游戲狀態(tài)、注視信息、設(shè)備運動、設(shè)備位置、用戶運動、客戶端身份、玩家身份、游戲命令、安全信息、音頻和/或類似信息。i/o設(shè)備445通常包括諸如網(wǎng)卡或調(diào)制解調(diào)器的通信硬件。i/o設(shè)備445被配置來與游戲服務(wù)器425、網(wǎng)絡(luò)415和/或客戶端410通信。
處理器450被配置來執(zhí)行在本文中論述的視頻服務(wù)器系統(tǒng)420的各種部件內(nèi)所包括的邏輯,例如軟件。例如,處理器450可編程有軟件指令,以便執(zhí)行視頻源430、游戲服務(wù)器425和/或客戶端限定器460的功能。視頻服務(wù)器系統(tǒng)420任選地包括處理器450的超過一個實例。處理器450還可編程有軟件指令,以便執(zhí)行視頻服務(wù)器系統(tǒng)420所接收的命令或協(xié)調(diào)本文中討論的游戲系統(tǒng)400的各種元件的操作。處理器450可包括一個或多個硬件設(shè)備。處理器450是電子處理器。
存儲體455包括非暫時性模擬和/或數(shù)字存儲設(shè)備。例如,存儲體455可包括被配置來存儲視頻幀的模擬存儲設(shè)備。存儲體455可包括計算機可讀數(shù)字存儲體,例如,硬盤驅(qū)動器、光盤驅(qū)動器或固態(tài)存儲體。存儲體415被配置(例如,借助于適當(dāng)?shù)臄?shù)據(jù)結(jié)構(gòu)或文件系統(tǒng))來存儲視頻幀、人工幀、包括視頻幀與人工幀兩者的視頻流、音頻幀、音頻流和/或類似物。存儲體455任選地分布在多個設(shè)備之中。在一些實施方案中,存儲體455被配置來存儲本文中其他地方所討論的視頻源430的軟件部件。這些部件可存儲為準(zhǔn)備好在需要時供應(yīng)的格式。
視頻服務(wù)器系統(tǒng)420任選地還包括客戶端限定器460??蛻舳讼薅ㄆ?60被配置用于遠程確定諸如客戶端410a或410b的客戶端的能力。這些能力可包括客戶端410a本身的能力以及介于客戶端410a與視頻服務(wù)器系統(tǒng)420之間的一個或多個通信信道的能力。例如,客戶端限定器460可被配置來測試通過網(wǎng)絡(luò)415的通信信道。
客戶端限定器460可手動或自動地確定(例如,發(fā)現(xiàn))客戶端410a的能力。手動確定包括:與客戶端410a的用戶通信,以及要求用戶提供能力。例如,在一些實施方案中,客戶端限定器460被配置來在客戶端410a的瀏覽器內(nèi)顯示圖像、文字和/或類似物。在一個實施方案中,客戶端410a是包括瀏覽器的hmd。在另一個實施方案中,客戶端410a是具有瀏覽器的游戲控制臺,所述瀏覽器可顯示在hmd上。所顯示的對象請求用戶輸入客戶端410a的信息,諸如操作系統(tǒng)、處理器、視頻解碼器類型、網(wǎng)絡(luò)連接類型、顯示器分辨率等。向客戶端限定器460傳達回用戶所輸入的信息。
自動確定可例如通過在客戶端410a上執(zhí)行代理程序和/或通過向客戶端410a發(fā)送測試視頻來進行。代理程序可包括嵌入網(wǎng)頁中或安裝為加載項的計算指令,諸如java腳本。代理程序任選地由客戶端限定器460提供。在各種實施方案中,代理程序可發(fā)現(xiàn):客戶端410a的處理能力、客戶端410a的解碼和顯示能力、客戶端410a與視頻服務(wù)器系統(tǒng)420之間的通信信道的滯后時間可靠性和帶寬、客戶端410a的顯示器類型、客戶端410a上存在的防火墻、客戶端410a的硬件、在客戶端410a上執(zhí)行的軟件、客戶端410a內(nèi)的注冊表項和/或類似物。
客戶端限定器460包括硬件、固件和/或存儲在計算機可讀介質(zhì)上的軟件。客戶端限定器460任選地設(shè)置在與視頻服務(wù)器系統(tǒng)420的一個或多個其他元件分開的計算設(shè)備上。例如,在一些實施方案中,客戶端限定器460被配置來確定客戶端410與視頻服務(wù)器系統(tǒng)420的超過一個實例之間的通信信道的特性。在這些實施方案中,客戶端限定器所發(fā)現(xiàn)的信息可用來確定視頻服務(wù)器系統(tǒng)420的哪個實例最適合于向客戶端410中的一個傳達流式視頻。
本發(fā)明的實施方案可以利用各種計算機系統(tǒng)配置來實踐,所述計算機系統(tǒng)配置包括手持式設(shè)備、微處理器系統(tǒng)、基于微處理器的或可編程的消費型電子設(shè)備、小型計算機、大型計算機等。本發(fā)明還可以在分布式計算環(huán)境中實踐,其中由通過基于有線或無線的網(wǎng)絡(luò)鏈接起來的遠程處理設(shè)備來執(zhí)行任務(wù)。
考慮到以上實施方案,應(yīng)理解,本發(fā)明可以采用各種計算機實施的操作,所述操作涉及存儲在計算機系統(tǒng)中的數(shù)據(jù)。這些操作是需要對物理量進行物理操縱的操作。本文中描述的形成本發(fā)明的一部分的任何操作都是有用的機器操作。本發(fā)明還涉及用于執(zhí)行這些操作的設(shè)備或裝置。所述裝置可出于所需目的而專門構(gòu)造而成,或所述裝置可以是由存儲在計算機中的計算機程序來選擇性地激活或配置的通用計算機。具體來說,各種通用機器可與根據(jù)本文中的教示所編寫的計算機程序一起使用,或者可以更方便地構(gòu)造更專門的裝置來執(zhí)行所需的操作。
本發(fā)明也可體現(xiàn)為計算機可讀介質(zhì)上的計算機可讀代碼。計算機可讀介質(zhì)是可存儲數(shù)據(jù)的任何數(shù)據(jù)存儲設(shè)備,所述數(shù)據(jù)隨后可由計算機系統(tǒng)讀取。計算機可讀介質(zhì)的實例包括硬盤驅(qū)動器、網(wǎng)絡(luò)附接存儲體(nas)、只讀存儲器、隨機存取存儲器、cd-rom、cd-r、cd-rw、磁帶以及其他光學(xué)和非光學(xué)數(shù)據(jù)存儲設(shè)備。計算機可讀介質(zhì)可包括分布在網(wǎng)絡(luò)聯(lián)接式計算機系統(tǒng)上的計算機可讀有形介質(zhì),以使得計算機可讀代碼是以分布方式進行存儲和執(zhí)行。
盡管以特定順序描述了方法操作,但應(yīng)理解,可以在操作之間執(zhí)行其他內(nèi)務(wù)處理操作,或者可以調(diào)整操作以使得它們在略微不同的時間發(fā)生,或者可以分布在系統(tǒng)中,所述系統(tǒng)允許處理操作以與所述處理相關(guān)聯(lián)的各種時間間隔發(fā)生,只要重疊操作的處理以所需方式執(zhí)行即可。
盡管為了理解的清晰性而略微詳細地描述了前述發(fā)明,但很顯然,可以在所附權(quán)利要求書的范圍內(nèi)實踐某些變化和修改。因此,目前的實施方案應(yīng)被認為是說明性而非限制性的,并且本發(fā)明不限于本文所給出的細節(jié),而是可在所描述的實施方案的范圍和等效物內(nèi)進行修改。