雙模式程序執行和加載的制作方法
【專利摘要】一種計算系統,被配置以在服務器上執行計算機程序,以及通過通信網絡向地理位置上的遠程客戶端提供程序輸出的視頻流。所述計算系統還被配置以與所述視頻流并行地、通過通信網絡向客戶端提供計算機程序的可執行內容。當已經給客戶端提供了足夠多的可執行內容時,將計算機程序的執行從服務器切換到客戶端。該切換可選地包括從服務器向客戶端傳送計算機程序的狀態。該可執行內容能夠以基于計算機程序狀態確定的順序,提供給客戶端。被認為在客戶端上支持游戲進行最可能需要的可執行內容的那些部分被給予優先級。
【專利說明】雙模式程序執行和加載
[0001]相關申請的交叉引用
[0002]本發明是:
[0003]2008年12月15日申請的美國專利申請序列號為12/334,819,名稱為“Systemsand Methods of Serving Game Video” 的部分延續;
[0004]2010年6月29日申請的美國專利申請序列號為12/826,130,名稱為“Video GameOverlay”的部分延續;以及
[0005]2010年6月29日申請的美國專利申請序列號為12/826,489,名稱為“VoiceOverlay”的部分延續;以及
[0006]本發明要求享有2010年9月13日提交的美國臨時專利申請序列號為61/382,470名稱為“Add-on Management”、2010年10月28日提交的美國臨時專利申請序列號為61/407,898 名稱為“Dual-Mode Program Execution,,、2010 年 12 月 8 日提交的美國臨時專利申請序列號為61/421,163名稱為“Intelligent Game Loading”以及2010年12月8日提交的美國臨時專利申請序列號為61/421,175名稱為“Program Mode Switching”的權益和優先權。所有上述共同擁有的專利申請的公開內容在此作為參考并入本發明。
【背景技術】
[0007]本發明的【技術領域】
[0008]本發明屬于計算機編程領域,具體地說,屬于計算機程序的服務器側執行的領域。
[0009]相關技術
[0010]通過使用兩種方法之一,計算機程序的執行一般能夠發生。在一個模型中,計算機程序在從用戶,例如游戲玩家接收輸入的單個設備上被執行,并且程序輸出展現給用戶。在另一個模型中,程序執行在由一個或多個客戶端的控制下的遠程服務器上發生。用戶在客戶端提供輸入,并且接收用于在客戶端顯示的程序輸出。客戶端和服務器之間的通信通過通信網絡,例如因特網進行。
[0011]能夠在客戶端和服務器兩者之間分配程序執行,是可能的。例如,在多人視頻游戲中,通常服務器基于從多個用戶的輸入維持游戲的全局狀態,并且通常每個客戶端響應于游戲規則和全局狀態的一部分,呈現各自的視頻。這需要將視頻游戲的軟件客戶端安裝在客戶端上。
【發明內容】
[0012]程序執行的雙模式模型被用于提供游戲的立即執行(播放)和客戶端側視頻呈現兩者。通過最初在服務器上呈現視頻,并且通過通信網絡,例如因特網將呈現的視頻提供給客戶端,基本上實現立即執行。與呈現的視頻并行地、或在其之后將客戶端側游戲邏輯和相關內容下載到客戶端。當客戶端接收客戶端側軟件的所有或足夠的部分時,改變程序執行的模式,這樣視頻的呈現發生在客戶端上,而不是或除了在服務器上。
[0013]因為能夠快速提供或在接收開始游戲的請求之前提供服務器側游戲邏輯和相關組件,所以基本上實現了立即執行。服務器側游戲邏輯的輸出包括響應于接收到的游戲命令、游戲狀態和游戲玩家的視點而在服務器上呈現的視頻流。該視頻流被通信到客戶端,在所述客戶端處實時地向游戲玩家展現所述視頻流。為了完成這件事,在客戶端上所需要的邏輯僅僅是需要接收、解碼和顯示視頻流。
[0014]本發明的多種實施例包括一種游戲系統,所述游戲系統包括被配置以向地理位置上遠離視頻源的第一客戶端提供流視頻的視頻源,該流視頻在視頻源產生且基于計算機程序狀態(例如,計算機游戲狀態),以及被配置以在流視頻從視頻源被提供給第一客戶端的同時,經由網絡、從代碼源下載可執行代碼和計算機程序的其他組件到第一客戶端的下載管理器。這些實施例還可選地包括被配置以向第一客戶端提供計算機程序狀態的狀態源。
[0015]本發明的多種實施例包括一種游戲服務器,所述游戲服務器包括輸入端、游戲引擎、切換邏輯、狀態存儲器和輸出端。所述輸入端被配置以從多個地理位置上的遠程客戶端接收游戲命令,以及所述游戲引擎被配置以基于接收到的游戲命令維持視頻游戲的全局狀態并且給多個客戶端的不同成員提供視頻游戲的全局狀態的不同子集,每個子集分別被分配給多個客戶端的特定成員。所述切換邏輯被配置以將全局狀態的子集之一從多個客戶端的第一成員重新分配給多個客戶端的第二成員,所述狀態存儲器被配置以存儲全局狀態,以及所述輸出端被配置以通過因特網向多個客戶端提供全局狀態的子集。
[0016]本發明的多種實施例包括一種用于提供計算機游戲的方法,所述方法包括在視頻服務器上執行游戲邏輯,其中在所述視頻服務器上游戲邏輯的執行使得基于游戲狀態的視頻流呈現。所述方法進一步還包括通過通信網絡、從視頻服務器向客戶端提供視頻流,以及與視頻流并行地向客戶端提供可執行游戲內容,所述可執行游戲內容被配置以基于游戲狀態產生視頻。
[0017]另外,游戲邏輯和相關內容(例如,游戲邏輯使用的內容)能夠被分成多個部分,并且這些部分基本上能夠以任何順序從游戲系統下載到客戶端。在多種實施例中,以基于正在進行的游戲可能需要的那些部分的概率的順序來下載所述部分。例如,如果,考慮游戲的當前狀態,可能需要客戶端側游戲邏輯(以及其他內容)的特定部分支持進一步的游戲進行,則那部分將在下載序列中被給予高優先級。響應于游戲播放,所述下載序列可選地動態更新,以及游戲邏輯和相關內容的多個部分與流視頻并行被下載到客戶端,直到認為下載到客戶端的游戲邏輯和相關內容的數量足夠支持在客戶端側模式下的客戶端側上的游戲進行。此時,游戲進行能夠切換到客戶端,流視頻停止,并且游戲代碼的下載可能完成。在到客戶端的流視頻結束后,游戲代碼的剩余部分能夠繼續被動態地排序,并且根據那個順序、響應于游戲狀態被下載到客戶端。可選地,如果完整的游戲代碼沒有被下載,并且出乎意料地,游戲狀態需要尚未下載的游戲代碼的一部分,則游戲進行能夠切換回服務器側模式。
[0018]本發明的多種實施例包括一種游戲系統,所述游戲系統包括視頻源和下載管理器。所述視頻源被配置以給地理位置上遠離視頻源的客戶端提供流視頻,所述流視頻響應于計算機程序當前狀態,在視頻源產生。所述下載管理器被配置以響應于計算機程序當前狀態,動態地確定計算機程序的可執行代碼和其他組件(連帶“可執行內容”或“可執行游戲內容”)多個部分的下載序列。所述下載管理器還被配置以在從視頻源給客戶端提供流視頻的同時,根據所述下載序列,經由網絡、從代碼源將部分可執行內容下載到客戶端。在多種實施例中,視頻源包括所述下載管理器。在多種實施例中,所述下載管理器被配置以通過基于計算機程序的當前狀態,確定計算機程序的其他狀態概率,來動態地確定下載序列。在這些實施例的一些中,所述游戲系統進一步還包括存儲概率樹數據庫的計算機可讀介質,并且所述計算機可讀介質與下載管理器通信。在這些實施例中,所述下載管理器還被配置以通過查詢概率樹,基于計算機程序的當前狀態來確定計算機程序的其他狀態概率。在多種實施例中,所述游戲系統進一步還包括被配置以維持概率樹數據庫的統計引擎。
[0019]本發明的多種實施例包括一種用于提供計算機游戲的方法。在這些實施例中,所述方法包括在視頻服務器上,以游戲執行的服務器側模式執行游戲邏輯,以基于游戲狀態呈現視頻流,以及通過通信網絡、從視頻服務器給客戶端提供視頻流。所述方法進一步還包括響應于游戲狀態,動態地確定可執行游戲內容的多個部分的下載序列,所述可執行游戲內容被配置以基于游戲狀態產生視頻,以及根據下載序列將部分可執行游戲內容與視頻流并行地提供給客戶端。在多種實施例中,動態地確定下載序列包括查詢概率樹數據庫。在多種實施例中,所述方法進一步還包括確定給客戶端提供部分可執行游戲內容的下載速率,以及在這些實施例的一些中,確定下載速率包括監視到客戶端的通信信道的帶寬。在多種實施例中,所述方法進一步還包括發起從游戲執行的服務器側模式到游戲執行的客戶端側模式的切換,其中在游戲執行的客戶端側模式下,在客戶端上執行游戲邏輯以基于游戲狀態呈現視頻流。在這些實施例的一些中,所述方法進一步還包括在發起所述切換后,給客戶端提供所述部分可執行游戲內容,以及在另一些的實施例中在發起切換之后給客戶端提供所述部分可執行游戲內容,能夠根據下載序列被執行。在另一些的實施例中,在發起切換之后,所述方法進一步還包括響應于游戲狀態動態地確定下載序列。
【專利附圖】
【附圖說明】
[0020]圖1示出了根據本發明的多種實施例的游戲系統。
[0021]圖2是根據本發明的多種實施例的被配置以服務多個視頻游戲的視頻源的進一步的細節。
[0022]圖3示出了根據本發明的多種實施例的游戲服務器的進一步的細節。
[0023]圖4示出了根據本發明的多種實施例的用戶界面。
[0024]圖5示出了根據本發明的多種實施例的下載管理器的進一步的細節。
[0025]圖6示出了根據本發明的多種實施例的決策樹。
[0026]圖7示出了根據本發明的多種實施例的用于下載可執行游戲內容的方法。
[0027]圖8示出了根據本發明的多種實施例的用于提供計算機游戲的方法。
[0028]圖9示出了根據本發明的多種實施例的用于傳送游戲會話的方法。
【具體實施方式】
[0029]本發明的多種實施例包括同時下載可執行游戲邏輯和流傳輸游戲視頻到同一客戶端,和/或從游戲執行的服務器側模式切換到游戲執行的客戶端側模式。這些過程潛在地涉及幾個部分和系統。視頻服務器系統被配置以響應于游戲規則和接收到的游戲命令,經由網絡給客戶端提供流視頻。下載管理器被配置以與提供視頻流并行地,給客戶端提供可執行游戲邏輯和相關內容。客戶端被配置以在向游戲玩家顯示流游戲視頻的同時,接收可執行游戲邏輯和內容。可選地,游戲服務器被配置以維持多玩家視頻游戲的全局游戲狀態,以及給視頻服務器系統和游戲服務器的其他客戶端提供這個游戲狀態的子集。可執行游戲邏輯能夠由游戲服務器、視頻服務器系統或第三方系統提供。
[0030]服務器側模式的特征在于在視頻服務器上呈現游戲視頻以及將呈現的視頻提供給地理位置上的遠程客戶端。在這個模式下,游戲視頻響應于視頻服務器經由通信網絡從客戶端接收的游戲命令。客戶端側模式的特征在于響應于本地輸入到客戶端的游戲命令,在客戶端上呈現游戲視頻。服務器側模式和客戶端側模式未必是相互排斥的。可選地在視頻服務器和客戶端兩處呈現游戲視頻,以及并行或相繼在客戶端上顯示。
[0031]被配置以管理服務器側模式和客戶端側模式之間切換的切換邏輯可選地分布于上述設備中。例如,在客戶端上切換邏輯能夠被配置以終止流游戲視頻的顯示,接收本地游戲狀態的副本,和/或發起接收到的可執行游戲邏輯的執行。在視頻服務器系統上,切換邏輯能夠被配置以終止流游戲視頻的傳遞,給客戶端提供本地游戲狀態的所述副本,確定已經給客戶端提供了足夠的可執行游戲邏輯的時間以發起切換,和/或確定可執行游戲邏輯應該被提供給客戶端的順序。在游戲服務器上,切換邏輯能夠被配置以重定向視頻服務器系統和游戲服務器之間的通信,包括游戲命令和游戲狀態,以致于這些通信發生在游戲服務器和客戶端之間。在本發明的其他地方討論切換邏輯的進一步的特征。
[0032]圖1示出了根據本發明的多種實施例的被配置以執行計算機程序的游戲系統
100。游戲系統100被配置以經由網絡115給一個或多個客戶端110提供視頻流。游戲系統100通常包括視頻服務器系統120和可選的游戲服務器125。視頻服務器系統120被配置以最小服務質量向一個或多個客戶端110提供視頻流。例如,視頻服務器系統120可以接收改變視頻游戲的狀態的或視頻游戲中的視點的游戲命令,以及以最小延遲給客戶端110提供反映這個狀態上改變的更新了的視頻流。視頻服務器系統120可以被配置以各式各樣的可替代視頻格式提供視頻流,包括尚未定義的格式。進一步地,視頻流可以包括被配置以各種的幀速率展現給游戲玩家的視頻幀。雖然在本發明可替代的實施例中,包括更高或更低的幀速率,但是典型的幀速率是30幀/秒、60幀/秒和120幀/秒。在一些實施例中,視頻服務器系統120被配置以提供三維視頻數據,例如,從被人眼之間的距離分開的視點處,呈現的匹配視頻流。
[0033]在這里分別被指代為110AU10B等的客戶端110,可以包括終端、個人計算機、游戲主機、平板電腦、電話、電視、機頂盒、公共電話亭、無線設備、數字平板、獨立設備、掌上游戲設備和/或諸如此類的。通常,客戶端110被配置以接收編碼的視頻流、解碼視頻流,以及給游戲玩家,例如,一個游戲的玩家展現結果視頻。接收編碼的視頻流和/或解碼視頻流的過程可選地包括在客戶端的接收緩沖器中存儲個別視頻幀。視頻流可以在客戶端110的一部分顯示器上或在獨立的設備,例如監視器或電視上展現給游戲玩家。客戶端110可選地被配置以支持多于一個的游戲玩家。例如,游戲主機可以被配置以支持兩個、三個、四個或更多同時的玩家。這些玩家中的每個可以接收單獨的視頻流,或單個視頻流,可以包括專門為每個玩家產生的,例如,基于每個玩家的視點產生的幀區域。可選地,客戶端110在地理位置上是分散的。包括在游戲系統100中的客戶端的數量可以廣泛地變化,從一個或兩個到數千個,數萬個,或更多。這里使用的術語“游戲玩家”被用于指代玩游戲的人以及術語“游戲進行設備”被用于指代用于播放游戲的設備。[0034]客戶端110被配置以經由網絡115接收視頻流。網絡115可以是計算設備之間的任何類型的通信網絡包括,電話網絡、因特網、無線網絡、電力線網絡、局域網、廣域網、專用網,和/或諸如此類的。網絡115明確地不包括完全在計算設備中的通信信道,例如母板總線。在典型的實施例中,經由標準協議,例如TCP/IP或UDP/IP傳送視頻流。可替代地,經由專有的標準傳送視頻流。
[0035]客戶端110的一個典型的例子是包括處理器、非易失性存儲器、顯示器、解碼邏輯、網絡通信能力、和輸入設備的個人計算機。所述解碼邏輯可以包括硬件、固件、和/或存儲在計算機可讀介質上的軟件。用于解碼(和編碼)視頻流的系統是本領域公知的并且依賴于使用的特定編碼方案而變化。
[0036]客戶端110可以,但不要求,進一步還包括被配置以用于修改接收到的視頻的系統。例如,客戶端可以被配置以執行進一步的呈現,將一個視頻圖像覆蓋到另一個視頻圖像上,修剪視頻圖像,和/或諸如此類的。客戶端110可以被配置以接收多種類型的視頻幀,例如I幀、P幀和B幀,以及將這些幀處理成圖像以顯示給游戲玩家。在一些實施例中,一個或多個客戶端HO的成員被配置以執行進一步的呈現、陰影、轉換到3D,或類似的在視頻流上的操作。客戶端110的成員可選地被配置以接收多于一個的音頻或視頻流。客戶端110的輸入設備可以包括,例如,鍵盤、游戲桿、指向設備、力反饋設備、動作和/或位置感應設備、鼠標、觸屏、神經界面、攝像機、尚未開發的輸入設備、和/或諸如此類的。
[0037]客戶端110接收的視頻流(和可選地,音頻流)由視頻服務器系統120產生并提供。如在本發明的其他地方所進一步描述的,這個視頻流包括視頻幀(并且音頻流包括音頻幀)。視頻幀被配置(例如,它們包括具有合適數據結構的像素信息)來為顯示給游戲玩家的圖像做有意義的貢獻。有意義的貢獻是游戲玩家易于觀察到的貢獻。這里使用的術語“視頻幀”被用于指代包括主要信息的幀,所述信息被配置以貢獻于,例如產生展示給游戲玩家的圖像。這里關于“視頻幀”的大部分教導也能夠應用于“音頻幀”。客戶端110可以被配置以同時接收多于一個的視頻流。例如,客戶端IlOB可以被配置以當其中一個流被展現給一只眼睛并且另一個流被展現給另一只眼睛時,接收一對被配置以形成三維圖像的匹配視頻流。客戶端IlOB可選地被配置以從第一源接收第一視頻流,從第二源接收第二視頻流,以及覆蓋這兩個視頻流以展現給游戲玩家。
[0038]客戶端110通常被配置以從游戲玩家接收輸入。這些輸入可以包括游戲命令,所述游戲命令被配置以改變視頻游戲的狀態或以其他方式影響游戲進行。游戲命令能夠通過使用輸入設備接收和/或可以通過在客戶端110上執行計算指令自動產生。接收到的游戲命令經由網絡115、從客戶端110被傳送到視頻服務器系統120和/或游戲服務器125。例如,在一些實施例中,游戲命令經由視頻服務器系統120被傳送到游戲服務器125。在一些實施例中,個別的游戲命令的副本從客戶端110被傳送到游戲服務器125和視頻服務器系統120。可選地,游戲命令的傳送依賴于命令的身份。可選地,經由不同于用于給客戶端IlOB提供音頻或視頻流的路由或通信信道,從客戶端IlOB通信游戲命令。例如,能夠從無線設備,例如蜂窩電話接收游戲命令,并且音頻和/或視頻流能夠提供給顯示器,例如電視機。無線設備和顯示器不需要直接通信。在這個例子中,客戶端IlOB包括兩個獨立的設備。來自于蜂窩電話的命令可以穿過蜂窩電話網絡或無線路由器。
[0039]在多種實施例中,客戶端110被配置以在每個客戶端100和視頻服務器系統120之間、或在客戶端110的不同成員之間通信附加數據。例如,使語音通信能夠直接在客戶端之間進行的附件能夠包括在客戶端之間的音頻數據的通信。增加服務器側計算機程序功能的附加數據可以被存儲在客戶端110之一上,以供服務器側附件使用或供客戶端側附件使用。附加數據也可以被存儲在視頻服務器系統120上或獨立的附加服務器上,并且由位于客戶端110、視頻服務器系統120或所述附加服務器之一上的附件使用。
[0040]可選地,游戲服務器125由不同于視頻服務器系統120的實體操作。例如,游戲服務器125可以由多玩家游戲的發行者操作。在這個例子中,視頻服務器系統120可選地被游戲服務器125視為客戶端,以及可選地被配置以從游戲服務器125的視點處看來是執行現有技術的游戲引擎的現有技術客戶端。視頻服務器系統120和游戲服務器125之間的通信能夠經由網絡115發生。這樣,游戲服務器125能夠是給多個客戶端發送游戲狀態信息的現有技術的多玩家游戲服務器,其中,多個客戶端之一是視頻服務器系統120。視頻服務器系統120可以被配置以同時與游戲服務器125的多個實例通信。例如,視頻服務器系統120能夠被配置以給不同的游戲玩家提供多個不同的視頻游戲。這些不同的視頻游戲中的每一個可以由不同的游戲服務器125支持和/或由不同的實體發行。在一些實施例中,視頻服務器系統120的一些地理上分布的實例被配置以給多個不同的游戲玩家提供游戲視頻。視頻服務器系統120的這些實例中的每一個可以與游戲服務器125的同一實例通信。視頻服務器系統120和一個或多個游戲服務器125之間的通信可選地經由專用通信信道發生。例如,視頻服務器系統120可以經由致力于這兩個系統之間通信的高帶寬信道,連接到游戲服務器125。
[0041]視頻服務器系統120至少包括視頻源130、I/O設備145、處理器150、以及非暫時性存儲器155。視頻服務器系統120可以由一個計算設備組成或分布于多個計算設備中。這些計算設備可選地經由通信系統,例如局域網連接。
[0042]視頻源130被配置以提供視頻流,例如,流視頻或構成影片的一系列視頻幀。在一些實施例中,視頻源130還被配置以提供音頻流。在一些實施例中,視頻源130包括視頻游戲引擎和呈現邏輯。視頻游戲引擎被配置以從玩家接收游戲命令并且基于接收到的命令維持視頻游戲狀態的副本。這個游戲狀態包括游戲環境中目標位置,以及通常包括視點。游戲狀態也可以包括對象的屬性、圖像、顏色和/或紋理。游戲狀態通常基于游戲規則,以及游戲命令例如移動、轉動、進攻、設置焦點、互動、使用、和/或諸如此類的命令維持。游戲引擎的一部分可選地被安置在游戲服務器125中。游戲服務器125可以基于從多個玩家接收到的游戲命令,通過使用地理位置上分散的客戶端維持游戲狀態的副本。在這些情況下,游戲狀態由游戲服務器125提供給視頻源130,其中游戲狀態的副本被存儲并且執行呈現。游戲服務器125可以經由網絡115、直接從客戶端110接收游戲命令,和/或可以經由視頻服務器系統120接收游戲命令。
[0043]視頻源130通常包括呈現邏輯,例如,硬件、固件、和/或存儲在計算機可讀介質,例如存儲器155上的軟件。這個呈現邏輯被配置以基于游戲狀態創建視頻流的視頻幀。全部或部分的呈現邏輯可選地被安置在圖形處理單元(GPU)中。呈現邏輯通常包括處理階段,所述處理階段被配置以基于游戲狀態和視點,確定目標之間的三維空間關系,和/或應用合適的紋理等。呈現邏輯生成原始視頻,隨后所述原始視頻通常在通信給客戶端110之前編碼。例如,原始視頻可以根據Adobe Flash?標準、.wav、H.264,H.263、0n2、VP6、VC_l、WMA、Huffyuv > Lagar i th、MPG-χ、Xvid.FFmpeg > x264、VP6-8、real video、mp3、或諸如此類的標準編碼。所述編碼過程產生視頻流,所述視頻流可選地被封裝以傳遞到遠程設備上的解碼器。視頻流的特征在于幀大小和幀速率。雖然可以使用任何其他的幀大小,但是典型的幀大小包括800 X 600、1280 X 720 (例如,720p)、1024X 768。幀速率是每秒視頻幀的數量。視頻流可以包括不同類型的視頻幀。例如,H.264標準包括“P”幀和“I”幀。I幀包括在顯示器設備上刷新所有宏塊/像素的信息,而P幀包括刷新其子集的信息。P幀的數據大小通常小于I幀。如這里所使用的術語“幀大小”旨在指代幀中像素的數量。術語“幀數據大小”被用于指代存儲所述幀需要的字節數量。
[0044]在可替代的實施例中,視頻源130包括視頻記錄設備,例如攝像機。這個攝像機可以被用于產生延遲的或實時的視頻,所述延遲的或實時的視頻能夠包括在計算機游戲的視頻流中。結果視頻流可選地包括呈現的圖像和使用靜態或視頻攝像機記錄的圖像兩者。視頻源130也可以包括存儲設備,所述存儲設備被配置以存儲之前記錄的包括在視頻流中的視頻。視頻源130也可以包括被配置以檢測目標,例如人的動作或位置的動作或位置感應設備,以及被配置以確定游戲狀態或基于檢測到的動作和/或位置生成視頻的邏輯。
[0045]視頻源130可選地被配置以提供覆蓋,所述覆蓋被配置以放置于其他視頻上。例如,這些覆蓋可以包括命令界面、登錄指令、從另一個游戲玩家的視點呈現的視頻幀、給游戲玩家的消息、其他游戲玩家的圖像、其他游戲玩家視頻供給(例如,網絡攝像機視頻)。在包括觸屏界面的客戶端IlOB的實施例中,覆蓋可以包括虛擬鍵盤、游戲桿、觸摸板、和/或諸如此類的。在一個覆蓋的例子中,玩家的聲音被覆蓋到音頻流上。可選地,視頻源130進一步還包括一個或多個音頻源。
[0046]在一些視頻服務器系統120被配置以基于來自于多于一個玩家的輸入,維持游戲狀態的實施例中,每個玩家可以具有包括位置和觀察方向的不同視點。視頻源130可選地被配置以基于他們的視點,為每個玩家提供各自的視頻流。進一步地,視頻源130可以被配置以提供不同的幀大小、幀數據大小、和/或為每個客戶端110編碼。可選地,視頻源130被配置以提供3D視頻。
[0047]I/O設備145被配置來為視頻服務器系統120發送和/或接收信息,例如視頻、命令、附件、附加數據、信息請求、游戲狀態、客戶端身份、玩家身份、游戲命令、安全信息、音頻數據、和/或諸如此類的。I/o設備145通常包括通信硬件,例如網卡或調制解調器。I/O設備145被配置以與游戲服務器125、網絡115、和/或客戶端110通信。I/O設備145被配置以從多于一個的客戶端110接收信息。可選地,I/O設備145被配置以通過使用標準,例如TCP或UDP,接收作為數據包(packet)的信息。
[0048]視頻服務器系統120可選地進一步還包括客戶端資格器160。客戶端資格器160被配置以遠程確定客戶端,例如客戶端IlOA或IlOB的能力。這些能力可能包括客戶端IlOB自身的能力以及在客戶端IIOB和視頻服務器系統120之間的一個或多個通信信道的能力。例如,客戶端資格器160可以被配置以通過網絡115測試通信信道。
[0049]客戶端資格器160能夠人工地或自動地確定(例如,發現)客戶端IlOB的能力。人工確定包括與客戶端IlOB的游戲玩家通信以及詢問游戲玩家以提供能力。例如,在一些實施例中,客戶端資格器160被配置以在客戶端IlOB的瀏覽器中顯示圖像、文本、和/或諸如此類的。顯示的對象代表請求,請求游戲玩家輸入客戶端IlOB的信息,例如客戶端IlOB的操作系統、處理器、視頻解碼器類型、網絡連接類型、顯示器分辨率等。將游戲玩家輸入的信息傳送回客戶端資格器160。
[0050]自動確定可以,例如,通過客戶端IlOB上代理的執行和/或通過給客戶端IlOB發送測試視頻而發生。所述代理可以包括在網頁中嵌入或作為附件安裝的計算指令,例如java腳本。可選地,由客戶端資格器160提供代理。在多種實施例中,代理能夠查出客戶端IlOB的處理力,客戶端IlOB的解碼和顯示能力、客戶端IlOB和視頻服務器系統120之間的滯后時間可靠性和通信信道的帶寬、客戶端IlOB的顯示器類型、存在于客戶端IlOB上的防火墻、客戶端IlOB的硬件、在客戶端IlOB上執行的軟件、客戶端IlOB中的注冊表項、是否經由無線路由器連接客戶端IlOBjP /或諸如此類的。
[0051]客戶端資格器160包括硬件、固件、和/或存儲在計算機可讀介質上的軟件。客戶端資格器160可選地安置在與視頻服務器系統120的一個或多個其他元件分開的計算設備上。例如,在一些實施例中,客戶端資格器160被配置以確定客戶端110和視頻服務器系統120的一個以上實例之間的通信信道的特征。在這些實施例中,由客戶端資格器160發現的信息能夠被用于確定,視頻服務器系統120的哪個實例最適合傳遞流視頻到客戶端110之
O
[0052]下載管理器165被配置以管理到客戶端IlOB的可執行游戲內容下載。這個下載與由視頻源130提供給客戶端IlOB游戲視頻而向游戲玩家顯示并行發生。一個以上的客戶端110中的每一個可以同時接收流游戲視頻和可執行游戲內容兩者。下載代碼與流視頻并行意味著,可執行游戲內容的數據包與流游戲視頻的數據包同時或在流游戲視頻的數據包之間,被通信到客戶端110B。下載管理器165包括硬件、固件、和/或存儲在計算機可讀介質上的軟件,并且下載管理器165能夠分布于一個或多個設備中。可執行游戲內容被配置以在客戶端IlOB上執行并且,當被執行時,基于游戲環境產生顯示給游戲玩家的視頻。
[0053]在一些實施例中,游戲視頻和可執行游戲內容兩者在同一個數據包中提供給客戶端110B。例如,數據包可能包括(多種可能的類型之一的)視頻幀和作為可執行游戲內容的一部分的數據。在傳遞到I/O設備145前,編碼器225A或后置處理器260將可執行游戲內容可選地插入到數據包中。在一些實施例中,編碼器225A或后置處理器260被配置以檢查包括視頻幀的數據包,計算還能夠將多少數據置入數據包,以及插入可執行游戲內容以填滿數據包中的剩余空間。優選的數據包大小可選地被用于進行這個計算。在客戶端110B,數據包被解析,并且視頻幀與可執行游戲內容分開被解碼。
[0054]下載管理器165部分地通過控制在該速率下載可執行游戲內容的速率,例如,M比特/秒,管理執行游戲內容下載。這個速率取決于包括游戲代碼的數據包的大小以及這些數據包被發送的頻率。能夠使這兩個因素中的任一個變化以選擇速率。選擇速率基于I)視頻服務器系統120和客戶端IlOB之間的通信信道的可用帶寬,和2)這個帶寬被用于提供流狀游戲視頻的部分。例如,如果通信信道帶寬是15M比特/秒,并且以渴望得到的質量提供流游戲視頻所需要的是IOM比特/秒,則下載可執行游戲內容的速率將被限制到5M比特/秒。一般來說,如果X M比特/秒的帶寬是可用的,并且Y M比特/秒被用于流視頻,則下載管理器165將下載可執行內容的速率限制到小于(X-Y)M比特/秒。相對于最大可能速率,下載管理器165將減小下載可執行游戲內容的速率,這樣由客戶端IlOB接收的流游戲視頻有渴望得到的質量等級,例如,在給定的分辨率下渴望得到的可靠性、顏色深度、和幀大小等。通信流視頻優先于下載可執行游戲內容。
[0055]因為視頻服務器系統120和客戶端110不同成員之間的通信信道的帶寬能夠具有不同的帶寬,所以將相同可執行游戲內容下載到客戶端110的這些不同成員的速率可以是不同的。進一步地,即使通信信道具有相同的帶寬,如果將流游戲視頻下載到每個客戶端110的速率是不同的,則下載可執行游戲內容的速率也可以是不同的。例如,如果客戶端IlOA接收第一幀大小的流視頻,并且客戶端IlOB接收第二幀大小的流視頻,則即使它們各自通信信道具有相同的帶寬,它們接收可執行游戲內容的速率也能夠是不同的。
[0056]從視頻服務器系統120將可執行游戲內容下載到客戶端IlOB的速率能夠隨著時間動態變化。例如,如果通信信道的帶寬降低,則下載管理器165可以響應于這個降低,減小將可執行游戲內容下載到客戶端IlOB的速率。有時通過監視丟失數據包檢測所述帶寬的降低。在一些實施例中,下載管理器165被配置為如果可執行游戲內容數據包和/或流視頻數據包丟失,則自動減小下載可執行游戲內容的速率。在減小下載可執行游戲內容速率的同時,通信流游戲視頻的速率能夠保持不變。例如,如果通信流游戲視頻速率的減小將導致展現給游戲玩家的視頻質量降低到最低質量以下,則隨后在減小通信流游戲視頻的速率前,將減小下載可執行游戲內容的速率。這樣,減小了可執行游戲內容與流游戲視頻通信速率的比值。
[0057]在下載過程中,能夠增加和減少下載可執行游戲內容的速率。例如,在通信信道帶寬暫時減小后,能夠逐漸增加速率以測試是否較高的下載速率是可能的。如果數據包丟失,則再降低一些下載速率。通過使用這種方法,即使當通信信道的帶寬隨著時間變化時,也能夠找到最佳下載速率。在一些實施例中,通過在相對低的下載速率下開始以及增加下載速率直到數據包丟失,開始可執行游戲內容的下載。至此,減小下載可執行游戲內容的速率直到數據包丟失達到可接受的等級。
[0058]在一些實施例中,下載管理器165被配置以接收視頻服務器系統120和客戶端IlOB之間可用帶寬的估計值。這個可用帶寬能夠通過本發明其他地方討論的測試來確定,以及可以包括一個以上的通信信道。例如,能夠從客戶端資格器160接收可用帶寬的估計值。可選地,經由不同于流游戲視頻的通信信道下載可執行游戲內容的數據包。這些不同通信信道可以具有一些共同分段。例如,可以從代碼源170下載可執行游戲內容,而從視頻源130傳送流游戲視頻。可選地,代碼源170被安置于地理位置上遠離視頻源130的位置處。這樣,可執行游戲內容相對于流游戲視頻可以穿過網絡115的多個不同分段。即使一些分段是不同的,可執行游戲內容和流游戲視頻兩者也都可以穿過網絡115的其他分段,例如,連接網絡115和客戶端IlOB的最后分段。
[0059]依賴于限制通過其通信可執行游戲內容和流游戲視頻的通信信道帶寬的網絡115的分段,有時可以通信和下載比只通過一個信道多的總字節。例如,如果第一通信信道被分段限制于X M比特/秒的帶寬,則能夠下載的流游戲視頻和可執行游戲內容兩者的字節總數將大于X M比特/秒,其中,穿過所述第一通信信道傳送流游戲視頻,所述分段不被用于下載可執行游戲內容。有時可以增加下載可執行游戲內容的速率,直到要么達到用于下載可執行游戲內容的第二通信信道的帶寬,要么達到第一和第二通信信道兩者共享的網絡115的分段容量。能夠增加下載可執行游戲內容的速率,直到要么可執行游戲內容的數據包,要么流游戲視頻的數據包太頻繁地丟失。隨后減小這個速率到沒有或有可接受數量的數據包丟失的最優值。通過使用下載管理器165和/或客戶端資格器160,能夠管理最優的通信和下載速率的確定。
[0060]代碼源170包括存儲設備,例如硬件驅動和/或被配置以存儲可執行游戲邏輯和可選地,相關內容的固態存儲器。可選地,代碼源170安置于地理位置上遠離視頻服務器系統120的其他部分位置處。例如,第一位置中的代碼源170的單個實例能夠由在一個以上不同位置中的一個以上視頻服務器系統120共享。在這些實施例中,代碼源170被配置以并行地給客戶端110的不同成員提供可執行游戲內容的多個副本(游戲邏輯和相關內容),有時每個副本與提供給客戶端110的同一成員的流游戲并行提供。可選地,代碼源170被包括在與游戲服務器125相同的部分和/或被同一部分管理。代碼源170可選地被配置來為一個以上的視頻游戲題目提供可執行游戲內容。可選地,可執行游戲內容包括附件和/或附加數據。
[0061]在一些實施例中,所有或部分的代碼源170分布在多個設備中,可選地,包括客戶端110的成員。在這些實施例中,所有或部分的可執行游戲內容能夠基于端對端,從一個客戶端Iio提供給另一個客戶端110。為了這個目的,所描述的關于代碼源170和視頻源130 (作為視頻服務器系統120的一部分)之間通信的通信信道的測試和監視,也能夠應用于客戶端110成員之間的通信信道。例如,由客戶端IlOB接收的部分可執行游戲內容能夠從視頻服務器系統120、客戶端IlOA和/或客戶端IlOC(沒有示出)接收。在一些例子中,客戶端IlOA和客戶端IlOB的相對臨近度比客戶端IlOB和視頻服務器系統120的臨近度近得多。因此,端對端通信信道可以是優選的。可執行游戲內容的哪些部分從哪個源接收的選擇可選地使得到客戶端IlOB的傳遞最優化。當從端對端傳遞時,通過使用多于3、5或10或更多的端作為源,可以減小每個端上的負擔。可選地,下載管理器165被配置以管理端對端通信。
[0062]可選地,下載管理器165被配置以管理下載可執行游戲內容的順序。例如,響應于存儲在視頻服務器系統120或客戶端IlOB上視頻游戲的狀態,能夠改變下載可執行游戲內容的順序。下載管理器165可選地被配置以在流和/或客戶端側模式下執行游戲的同時,監視這個狀態。
[0063]下載管理器165還進一步被配置以管理到客戶端IlOB的游戲狀態的下載。這個游戲狀態是由視頻源130使用以產生流游戲視頻的游戲狀態。所述游戲狀態能夠從可選的狀態源175或從游戲服務器125下載。在一些實施例中,一旦下載初始狀態,下載管理器165就被進一步配置以下載更新以致于維持兩份游戲狀態。例如,能夠在狀態源175存儲一份游戲狀態(且由視頻源130使用),而同時在客戶端IlOB上維持第二份游戲狀態。
[0064]狀態源175包括存儲設備,例如硬件驅動和/或被配置以存儲視頻游戲的狀態的固態存儲器。可選地,存儲的狀態是存儲在游戲服務器125的全局游戲狀態的子集,且通常基于從客戶端HO的成員接收的命令和/或從游戲服務器125接收的狀態更新,進行更新。
[0065]可選地,下載管理器165還被配置以監視可執行游戲內容的下載過程以及通過使用切換邏輯180,在客戶端IlOB上發起下載代碼的執行。當下載可執行游戲內容的可執行子集時或當下載所有可執行游戲內容時,所述發起能夠發生。通常,下載管理器165被配置以檢測何時滿足這些條件中的一個或兩個。
[0066]所述發起可是自動的或人工的。自動的發起由切換邏輯180執行,并且不需要客戶端IlOB游戲玩家的任何行動,而人工的發起需要游戲玩家的一些行動。在自動的發起中,命令從切換邏輯180A被發送到在客戶端IlOB上的切換邏輯180C,使得可執行游戲內容安裝和/或開始。由于安全原因,不必所有類型的客戶端110都允許程序執行遠程自動發起。
[0067]在人工的發起中,游戲玩家采取一些行動以開始或允許下載的可執行游戲內容的執行。例如,游戲玩家可以點擊按鈕、以允許安裝可執行游戲內容、設置配置和數據文件、和/或一旦安裝則開始執行游戲代碼的安裝程序的執行。這是最小的互動情況,在上述情況下,游戲玩家僅僅需要單擊。在其他實施例中,游戲玩家必須首先發起來自于下載到的可執行游戲內容游戲客戶端的安裝,在安裝期間回答配置問題,鍵入許可密鑰,人工發起安裝游戲客戶端的執行,和/或諸如此類的。在多種實施例中,這些任務的任意組合可以需要或可以不需要游戲玩家。
[0068]在一些實施例中,通過與顯示流游戲視頻的瀏覽器窗口同樣的瀏覽器窗口,將控制展現給游戲玩家,便利下載可執行游戲內容執行的人工發起。例如,發起按鈕能夠作為置于游戲視頻上覆蓋的一部分,展現給游戲玩家,或在展示流游戲視頻的同一瀏覽器窗口的另外一部分中,顯示發起按鈕。可選地,流游戲視頻和發起控制在瀏覽器窗口不同的幀中。
[0069]在一些實施例中,對游戲玩家給予何時發起下載代碼的執行的控制。例如,可以給游戲玩家顯示消息,所述消息規定游戲進行必須在預定時間內例如,5分鐘,從服務器側模式切換到到客戶端側模式。這個消息可以作為覆蓋顯示,或可以在顯示流視頻的瀏覽器窗口中的別處顯示,或可以在一個單獨窗口中顯示。所述消息可包括按鈕,所述按鈕允許游戲玩家在預定時間內,在他們選擇的時間發起切換。可選地,所述消息對預定時間進行倒計時。雖然可以提供不包括實時游戲進行的可替代內容,但是在這個時間結束時,不再給客戶端提供流游戲視頻。在一些實施例中,在客戶端IlOB上,下載的可執行游戲內容執行的發起需要游戲玩家人工終止流游戲視頻的接收,基于可執行游戲內容人工執行游戲客戶端安裝,以及隨后人工發起游戲客戶端的執行。可選地,給游戲玩家預定時段,在上述時段中人工執行這個切換的全部或部分。
[0070]在一些實施例中,從游戲玩家接收開始下載的許可,并且這個許可也被用于發起安裝例程和視頻游戲客戶端兩者的執行。例如,消息能夠被展現給請求下載可執行游戲內容的許可的游戲玩家,并且當準備好時也執行下載的代碼。通過本發明別處將討論的控制展現方法可以展現這個控制。一旦游戲玩家請求游戲,一旦流游戲視頻的通信開始,或在流游戲視頻被展現給游戲玩家后的某個時間,所述控制就可被展現。例如,在多種實施例中,可執行游戲內容的下載只發生在預定時間延遲后,特定游戲狀態達到后,玩家推進到游戲中的某一階段后,玩家保存游戲狀態后,和/或諸如此類的。開始下載和/或發起可執行游戲內容執行許可的請求可選地伴有購買游戲的選項。例如,下載的發起和/或執行的發起可能需要付費。
[0071]在一些實施例中,直到游戲玩家已經終止流游戲視頻的傳遞,才開始可執行游戲內容的下載。例如,一旦游戲玩家停止播放游戲,就可以配置下載管理器165以提供游戲玩家下載可執行游戲內容。這樣,在一個實施例中,游戲玩家可以在服務器側模式下播放游戲30分鐘(或一些其他的時間段)并且隨后退出游戲。一退出游戲,就給游戲玩家提供購買游戲的機會。如果游戲玩家接受,則下載可執行游戲內容。在服務器側模式下時,下載順序可選地取決于在游戲中游戲玩家已經做了什么。例如,支持游戲玩家化身當前位置所需的可執行游戲內容可以被最先下載。
[0072]在這個下載在進行的同時,游戲玩家可以決定繼續或不繼續游戲。如果游戲玩家決定繼續游戲,則下載管理器165被配置以首先確定可執行游戲內容的可執行子集(或全部)是否已經被下載了。如果可執行游戲內容的可執行子集或全部已經被下載了,則執行下載的游戲代碼。如果可執行游戲內容的可執行子集或全部尚未被下載,則隨后再次在流模式下執行游戲。在游戲在服務器側模式下再次被播放的同時,可以下載或可以不下載進一步可執行游戲內容。當游戲玩家隨著時間推移參加多個游戲會話時,服務器側模式播放的時間能夠穿插在下載的時間。
[0073]在一些實施例中,可以發現被認為可執行游戲代碼的子集是不足以使游戲玩家玩游戲的。例如,如果在支持更高等級的游戲區域被下載前,游戲玩家直接將化身進入該區域,則可以中斷游戲的客戶端側模式。如果這發生,則可選地配置下載管理器165以回到游戲的服務器側模式執行。在這種情況下,這里描述的多種切換步驟能夠反過來執行。
[0074]雖然在控制化身前,流游戲視頻的接收最初通常不需要游戲玩家擁有注冊的賬戶,但是,接收流游戲視頻,接收游戲代碼,保存由游戲中游戲玩家的行動導致的游戲狀態和/或從服務器側模式切換到本地執行模式,通常確實需要賬戶。所述賬戶能夠自動建立或由游戲玩家建立。在一些實施例中,為了玩多玩家游戲,游戲服務器125有時需要賬戶。在這些實施例中,視頻服務器系統120中的、或游戲系統100中其他地方中的賬戶管理器185的實例,可以建立滿足游戲服務器125的需要的臨時賬戶。例如,可以配置賬戶管理器185以自動地產生用戶名、密碼、地理位置、和/或諸如此類的。隨后這個賬戶信息被用于建立視頻服務器系統120和游戲服務器125之間的游戲會話。這個游戲會話被用于在視頻服務器系統120和游戲服務器125之間通信游戲命令和游戲狀態信息。因為賬戶管理器185,游戲玩家能夠在游戲玩家提供任何賬戶信息前,開始播放基于服務器的視頻游戲。可以隨著時間的推移,在游戲中一個特定的點,當玩家設法保存游戲狀況時,或當發起游戲本地執行時,從游戲玩家處搜集賬戶信息。例如,游戲玩家已經玩了 5分鐘、10分鐘或15分鐘后,當游戲玩家達到預定游戲等級或游戲狀態時,當游戲玩家嘗試保存游戲狀態時,和/或諸如此類時,可以要求游戲玩家建立用戶名和密碼。當建立賬戶信息時,也可以要求游戲玩家為游戲付費。建立賬戶的請求可選地作為流視頻上的覆蓋展現,或可選地,在展現流游戲視頻的同一瀏覽器窗口上的其他地方展現。
[0075]在一些實施例中,當在游戲視頻服務器側呈現(服務器側模式)和游戲視頻客戶端側呈現(客戶端側模式)之間切換游戲時,切換邏輯180A被配置以將由視頻服務系統120從客戶端IlOB接收的賬戶信息提供到游戲服務器125。切換邏輯180B使用這個賬戶信息以替換賬戶管理器185自動產生的賬戶信息。例如,當游戲玩家首先發起流視頻游戲時,賬戶管理器185可以給游戲服務器125提供隨機產生的用戶名(SLE4IF45FFK1)和密碼(kalLI28Iup)。在服務器和客戶端執行模式之間的切換之前,視頻服務器系統120接收游戲玩家選擇的用戶名(E_aP)和密碼(4mybutterfly)。大約在切換時,游戲玩家選擇的賬戶信息從切換邏輯180A被發送到切換邏輯180B,并且切換邏輯180B使用這些值替換游戲服務器125存儲器中自動產生的賬戶數據。這樣,游戲玩家選擇的賬戶信息替換視頻服務器系統120自動產生的臨時賬戶信息。[0076]在一些實施例中,視頻服務器系統120自動產生的賬戶信息進一步還包括服務器選擇、玩家介紹信息、地理位置、和/或諸如此類的。玩家介紹信息是關于如何向玩家介紹游戲的信息。可以通過網站、營銷程序廣告、另一個游戲玩家等向玩家介紹。在這些情況下,介紹信息通常包括介紹人的身份。例如,被配置以允許第一游戲玩家播放流視頻游戲的鏈接,可以在社交網站上的第二游戲玩家的頁面上顯示。第二玩家(或其化身)的標識能夠被包括在鏈接中,并且視頻服務器系統120被配置以使用這個標識識別第二玩家。賬戶管理器185或游戲服務器125能夠使用第二玩家的身份來給予第二玩家引用第一玩家的信用。進一步地,游戲服務器125能夠使用第二玩家的身份以將第一玩家置于與第二玩家相同的游戲服務器、化身派系、游戲環境中的位置等。這些是由視頻服務器系統120可選地產生賬戶信息的進一步例子。
[0077]在一個更具體的例子中,來自于游戲魔獸世界? (World of Warcraft ? )的,由視頻源130提供給在客戶端IlOB的第一玩家的,流游戲視頻的副本或其一幀被提供給第一玩家的FaceBook ?頁面。將這個流游戲視頻的副本與所述頁面上的鏈接相關聯,所述鏈接被配置以允許第二玩家加入第一玩家玩魔獸世界。當第二玩家點擊鏈接時,標識符被發送到視頻服務器系統120的實例。賬戶管理器185使用這個標識符以查找魔獸世界服務器、玩家派系(部落或聯盟)、以及可選地在魔獸世界游戲空間中第一玩家的位置。賬戶管理器185使用這個信息來為第二玩家自動產生(或建議)賬戶信息,以將第二玩家置于與第一玩家相同的魔獸世界服務器和玩家派系。賬戶管理器185也可以給游戲服務器125提供信息以將第一玩家標識為已經介紹了第二玩家。這樣,第一玩家能夠得到用于將第二玩家帶進游戲的信用。
[0078]從視頻服務器系統120到游戲服務器125的、由賬戶管理器185傳送的一些賬戶信息在游戲進行期間產生。例如,在游戲進行期間,游戲玩家可以將附件與賬戶相關聯或建立化身。這個信息當其產生時可被傳送到為客戶端側執行模式需要該信息的地方,當接下來游戲被保存時,作為周期性通信事件的一部分被傳送,和/或諸如此類的。
[0079]可選地,切換邏輯180被配置以在游戲系統100的元件之間通信其他信息。例如,可以將安裝的附加代碼和產生的附加數據從視頻服務器系統120或游戲系統100中其他地方傳輸到客戶端110B。這個傳輸可以發生在切換的時候或切換之前。在一些實施例中,與從視頻源130到客戶端IlOB的流游戲視頻的通信同時,產生的附加數據和/或附加代碼被拷貝到客戶端110B。
[0080]游戲玩家的賬戶信息可選地包括游戲服務器125向其提供游戲狀態信息的IP (因特網協議)地址。這個IP地址對不同的登錄會話可以是不同的。例如,每次游戲玩家登錄播放由游戲服務器125提供的視頻游戲,可以給視頻源130提供不同的IP地址。同樣地,對于其中視頻源130接收流游戲視頻的每個會話,客戶端IlOB可以具有不同的IP地址。在現有技術中,游戲服務器125發送游戲狀態信息到的IP地址在一個單獨游戲會話中不改變。如果IP地址改變,則游戲玩家必須再次登錄,或從某個初始狀態開始以開始新的游戲會話。這樣IP地址與由登錄認證的游戲玩家相關聯。同樣地,當游戲服務器125接收游戲命令時,從其發送命令的IP地址被用于將所述命令分配到具體的游戲會話/游戲玩家。
[0081]在本發明的一些實施例中,游戲服務器125發送游戲狀態信息到的、和從其接收游戲命令的IP地址在單個游戲會話中改變。例如,當執行流游戲模式和本地游戲模式之間的切換時,游戲服務器125從發送游戲狀態信息到視頻源130并從視頻源130接收游戲命令,切換到發送游戲狀態信息并從客戶端IlOB接收游戲命令。可選地,完成這個不需要游戲玩家再次登錄。
[0082]為了改變IP地址,切換邏輯180A發送視頻源130使用來與客戶端IlOB通信的客戶端IP地址到游戲服務器125。客戶端IP地址伴有游戲服務器125發送游戲狀態信息到客戶端IlOB的請求和/或從客戶端IlOB接受游戲命令的請求。在游戲服務器125,切換邏輯180B接收這個客戶端IP地址并且將它與特定的游戲會話相關聯。隨后發送進一步的游戲狀態到這個客戶端IP地址,除了或代替視頻源130的IP地址。同樣地,如果在游戲服務器125、從客戶端IP地址接收游戲命令,則將它們與游戲玩家的游戲會話相關聯。即使當經由視頻源130初始建立游戲會話和可選的登錄時,也進行這個關聯。進一步地,由視頻源130使用以與游戲服務器125通信的游戲服務器IP地址,被可選地提供給客戶端110B,這樣客戶端IlOB能夠直接發送游戲命令到這個游戲服務器IP地址。在游戲服務器125的IP地址被包括在下載到客戶端IlOB的可執行游戲內容中的實施例中,給客戶端IlOB提供這個游戲服務器IP地址是可選的。
[0083]在一些實施例中,通過將客戶端IP地址與游戲會話相關聯,將所述游戲會話與一個以上的客戶端關聯起來。在這種情況下,可以將游戲狀態的子集發送到兩個客戶端。例如,能夠將游戲狀態的子集從游戲服務器125發送到客戶端IlOB和視頻源130兩者(游戲服務器125將視頻源130視為客戶端,并且可以將,或可以不將不同的視頻源130和客戶端IlOB視為不同類型的客戶端)。一段時間后,可以停止游戲會話和視頻源130的IP地址之間的關聯。在一些實施例中,將客戶端IP地址與游戲會話相關聯,自動地使得視頻源130的IP地址與游戲會話的關聯解除。無論關聯解除立即發生或將兩個IP地址與游戲會話相關聯一段時間后發生,最終的結果都是切換邏輯180使游戲會話從第一客戶端被重新分配到第二客戶端。在不開始新的游戲會話情況下,這個重新分配可選地在單個游戲會話期間發生。
[0084]下載管理器165和/或切換邏輯180可選地被配置以維持兩份游戲狀態的子集,視頻源130使用所述游戲狀態的子集以呈現流游戲視頻。這兩份之一放置在視頻源130,另一份在客戶端110B。通過要么從視頻源130,要么從游戲服務器125發送狀態更新到客戶端110B,維持這兩份子集。在游戲玩家不會感受到狀態不協調的情況下,所述兩份狀態允許進行執行模式切換。特別地,同一狀態可用于視頻源130上的游戲邏輯執行和客戶端IlOB上的游戲邏輯執行的兩者。在切換前、在切換期間和/或切換后,維持兩份狀態一段時間。這段時間可以是短的。在一些實施例中,視頻源130上的游戲邏輯和客戶端IlOB上的游戲邏輯并行被執行一段時間,這樣,被配置以展現給游戲玩家的兩份視頻幀在不同的地方產生。在仍在通信流游戲視頻到客戶端IlOB和/或仍在客戶端IlOB上顯示流游戲視頻的同時,在客戶端IlOB上可選地發起下載的可執行游戲內容的執行。
[0085]在一些實施例中,配置切換邏輯180和/或下載的可執行游戲內容,以一旦執行下載的可執行游戲內容,就終止客戶端IlOB從視頻源130接收的流游戲視頻的展現。例如,可執行游戲內容可以,當被執行時,關閉在其中展現流游戲視頻的瀏覽器窗口。可替代地,可以配置可執行游戲內容以將瀏覽器窗口從視頻源130重定向到可執行游戲內容的視頻輸出。例如,切換邏輯180C可以給瀏覽器窗口提供執行游戲代碼的本地輸出的URL,這樣從視頻源130接收的視頻流被下載可執行游戲內容的視頻輸出代替。下次執行可執行游戲內容,其可選地被配置以在它自己的程序窗口中而不是瀏覽器中展現游戲視頻。
[0086]如在本發明其他地方討論的,在一些實施例中,配置下載管理器165和/或切換邏輯180以在這個游戲代碼的僅僅一個子集被下載后,開始下載的可執行游戲內容的執行。因為為了保證流游戲視頻的最小質量,不再需要限制下載速率,所以,切換后通常配置下載管理器165以增加下載可執行游戲內容的速率。
[0087]處理器150被配置以執行包括在本發明討論的視頻服務器系統120的多種部件中的邏輯,例如,軟件。例如,可以用軟件指令給處理器150編程以執行視頻源130、游戲服務器125、客戶端資格器160、下載管理器165、代碼源170、狀態源175、和/或切換邏輯180A的功能。視頻服務器系統120可選地包括一個以上的處理器150的實例。為了執行視頻服務器系統120接收的命令,或協調本發明討論的游戲系統100的多種元件的操作,也可以用軟件指令對處理器150編程。處理器150可以包括一個或多個硬件設備。處理器150是電子處理器。
[0088]存儲設備155包括非暫時性的模擬和/或數字存儲設備。例如,存儲設備155可以包括被配置以存儲視頻幀的模擬存儲設備。存儲設備155可以包括計算機可讀數字存儲設備,例如,硬盤驅動、光驅、或固態存儲設備。存儲設備155被配置(例如,通過合適的數據結構或文件系統)以存儲視頻幀、人工幀、包括視頻幀和人工幀兩者的視頻流、音頻幀、音頻流、附件、附加數據、可執行游戲內容、和/或諸如此類的。可選地,存儲設備155分布于多個設備中。在一些實施例中,存儲設備155被配置以存儲本發明其他地方討論的視頻源130的軟件組件。可以以準備好當需要時被提供的格式,存儲這些組件。
[0089]圖2示出了根據本發明的多種實施例的、被配置以服務多個視頻游戲的視頻源130的進一步細節。多個視頻游戲能夠包括同一視頻游戲的多個實例和/或不同視頻游戲的實例。可選地,視頻游戲是多玩家游戲。例如,游戲服務器125的一個或多個實例可以維持視頻游戲的一個或多個游戲狀態,其每個都基于從多個客戶端接收的輸入。在圖2中示出的視頻源130的元件可選地通過使用處理器150被執行。
[0090]通過使用游戲邏輯210、分別被標記為210A、210B、210C等的不同實例,執行視頻游戲。游戲邏輯210被配置以使用游戲狀態確定游戲環境,所述游戲環境能夠被呈現給被配置以展現給游戲玩家的視頻流。游戲環境是包括游戲中的目標、化身、目標的位置、他們的形狀、紋理、和之間的空間關系,以及諸如此類信息的兩維或三維虛擬環境。游戲環境能夠包括頂點數據、轉換數據和紋理數據、和/或諸如此類的。
[0091]游戲邏輯210被配置以將視頻游戲作為“游戲會話”的一部分提供。可選地,游戲會話是游戲玩家登錄以播放視頻游戲和注銷,或其他從游戲斷開方式之間的時間段。在沒有建立登錄賬戶的情況下,游戲玩家播放游戲的實施例中,游戲會話是連續時間段,在所述時間段期間,游戲玩家的進展和/或狀態是可追蹤的并且由游戲程序維持。如果玩家不與游戲進展和/或狀態所存儲的賬戶相關聯,則隨后當游戲會話終止時,游戲進展和狀態丟失。游戲會話可以存在于客戶端IlOB和視頻源130之間,客戶端IlOB和游戲服務器125之間,以及視頻源130和游戲服務器125之間。在一些實施例中,在不終止游戲會話的情況下,將游戲會話從在游戲服務器125和視頻源130之間傳送到在客戶端IlOB和游戲服務器125之間(和/或反之亦然)。[0092]游戲環境的呈現通常基于一個或多個與特定游戲玩家相關聯的視點。這些視點可以是截然不同的,例如俯視和直視。或者,視點能夠來自于依據大概人的瞳孔之間的距離而不同的位置,以及被配置以創造3D圖像。視頻源130可以包括多于1、2、3、5、7、15、或31個的游戲邏輯210的實例。可選地,游戲邏輯210是游戲服務器125的客戶端,以及可以被配置以經由網絡115與游戲服務器125通信。
[0093]游戲邏輯210被配置以從一個或多個客戶端110接收游戲命令,并且根據一套游戲規則處理接收到的命令。這些規則覆蓋,例如,化身如何與其他化身或在游戲目標中互動、化身移動、游戲實例管理、和/或諸如此類的。可選地,游戲邏輯210也被配置以基于游戲中的事件產生音頻數據。這個音頻數據可以代表槍聲、濺潑聲、引擎聲、說話聲、飛行聲、雨聲、音樂、或任何可能在游戲中產生的其他聲音。例如,事件,例如一個目標打擊另一個,可以產生代表相關聲音的音頻數據。游戲邏輯210包括硬件、固件、和/或存儲在計算機可讀介質上的軟件。通常將游戲邏輯210與相關游戲內容相關聯。
[0094]游戲邏輯210的每個實例可安置在單獨的計算設備上、或游戲邏輯210的一些實例可安置在同一計算設備上、或游戲邏輯210的單個實例可跨多個計算設備安置。依賴于游戲玩家當前正在經歷的游戲環境需要,游戲邏輯210的實例能夠動態改變使用的計算設備數量和/或身份。可選地,安置在同一計算設備上的游戲邏輯210的實例在單獨虛擬機或虛擬I/O殼中執行。在一些實施例中,游戲邏輯210的不同實例被配置以直接相互傳送游戲命令和/或游戲狀態信息,例如,在沒有必然經由游戲服務器125通信的情況下。
[0095]游戲邏輯210通常在操作系統(OS) 215上執行。操作系統215可以包括Windows?、Linux、UNIX、Mac OS?、Solaris?、和/或諸如此類的。虛擬機平臺可以在操作系統215和游戲邏輯210之間操作。虛擬機平臺能夠包括商業系統,例如ESX、Hyper-V、和/或諸如此類的。在這些實施例中,能夠在虛擬機中執行一個或多個游戲邏輯210。游戲邏輯210的多個實例可以在操作系統215的同一實例上執行。例如,圖2示出了游戲邏輯210A和游戲邏輯210B兩者都在同一操作系統215上執行。可以配置或可以不配置同一操作系統215上執行的游戲邏輯210的實例,以播放同一視頻游戲。例如,游戲邏輯210A、210B和210C可以都是魔獸世界?客戶端,或可以分別是魔獸世界?的、:Eve?的和Call to Arms?的客戶端。
[0096]在一些實施例中,由游戲邏輯210確定的游戲環境被傳給可選的虛擬3D視頻驅動器220。虛擬3D視頻驅動器220被配置以從游戲邏輯210的視點看起來像控制圖形處理單元的非虛擬3D視頻驅動器。可以將游戲邏輯210的每個實例與它自己的虛擬3D視頻驅動器220的實例相關聯,或虛擬3D視頻驅動器220可以由兩個或兩個以上的游戲邏輯210的實例共享。在一些實施例中,由每個游戲邏輯210確定的游戲音頻被傳給可選的虛擬音頻驅動器285。游戲音頻包括被配置以作為音頻流的一部分展現給游戲玩家的聲音數據。游戲音頻能夠由游戲規則產生,例如,射擊槍支應該引起爆裂聲,或可以從其他源,例如音樂曲目、客戶端110的成員、麥克風、和/或諸如此類的源接收。
[0097]在可替代的實施例中,游戲邏輯210被配置以包括本發明討論的、虛擬3D視頻驅動器220的和/或虛擬音頻驅動器285的功能。在這些實施例中,不需要虛擬3D視頻驅動器220和/或虛擬音頻驅動器285。
[0098]虛擬3D視頻驅動器220還被配置以將接收到的游戲環境傳給(非虛擬)3D驅動器230。可選地,到3D驅動器230的、游戲環境的傳遞由虛擬3D視頻驅動器220的多種實例協調。例如,能夠協調傳遞,這樣3D驅動器230每次從僅僅一個或最少數量的虛擬3D視頻驅動器220接收游戲環境。在典型的實施例中,每個虛擬3D視頻驅動器220被配置,這樣它們看起來是獨立的過程以及獨立的到3D驅動器230的視頻數據源。3D驅動器230本身被配置以在呈現后,保持追蹤視頻數據形成的視頻幀。
[0099]3D驅動器230接收的視頻數據被傳給圖形處理單元(GPU) 235以呈現為原始視頻幀。可選地,圖形處理單元235被用于并行呈現一個以上的視頻流。例如,圖形處理單元235可以并行基于從游戲邏輯210A接收的視頻數據產生第一視頻流、基于從游戲邏輯210B接收的視頻數據產生第二視頻流、基于從游戲邏輯210C接收的視頻數據產生第三視頻流等。視頻流的并行產生包括同時生產這些流。然而,視頻流的并行產生可以,但并不一定,包括在圖形處理單元235中同時處理單獨幀。例如,在一些實施例中,3D驅動器230可替代地將多種成員游戲邏輯210產生的視頻數據傳給圖形處理單元235。游戲邏輯210A產生的數據被用于做視頻幀,并且隨后邏輯210B產生的數據被用于做視頻幀等。在這種情況下,視頻流并行產生,而單獨的幀連續產生。可替代地,一個以上的視頻幀可以同時在圖形處理單元235中產生。在這種情況下,圖形處理單元235的第一部分被用于產生一個幀,而圖形處理單元235的第二部分被用于產生第二幀,第一和第二幀源于由不同的游戲邏輯210產生的視頻數據。在一些實施例中,一組圖形計算內核被用于產生第一幀,而同時第二組圖形計算內核被用于在相同時間產生第二幀。結果視頻幀被傳回到3D驅動器230的控制。
[0100]可選地,虛擬3D視頻驅動器220被配置以管理原始呈現的視頻幀從3D驅動器230的傳輸。例如,虛擬3D驅動器220可以被用于協調視頻幀從3D驅動器230的控制到共享存儲器240的傳輸(呈現后,視頻幀在圖形處理單元235的存儲器中或由3D驅動器230管理的存儲器中。在任意一種情況下,它們都在3D驅動器230的控制下)。因為虛擬3D視頻驅動器220管理往返于3D驅動器230的視頻數據和幀的通信,所以在一些實施例中,它們能將視頻幀置于與具體的視頻動態編碼管道(DEP) 245相關聯的共享存儲器240的一部分中。視頻DEP245分別被標識為視頻DEP245A、視頻DEP245B、視頻DEP245C等。在這些實施例中,給每個視頻DEP245在共享存儲器240中,分配具體的存儲器位置,并且配置每個視頻DEP245以從那些位置重新獲得視頻數據。
[0101]在其他實施例中,虛擬3D驅動器220被配置以基于時間而管理到共享存儲器240的視頻數據的傳輸。在這些實施例中,使由每個虛擬3D驅動器220管理的傳輸同步,并且當它們的數據在共享存儲器240中時,虛擬3D驅動器220通知每個視頻DEP245。一旦通知的視頻DEP245的成員重新獲得這個數據,DEP的另一個成員的數據就在虛擬3D視頻驅動器220的控制下,從3D驅動器230傳輸到共享存儲器240。在這些情況下,像素從本地GPU存儲器到共享存儲器240的讀回能夠基于時間表。如本發明所使用的術語“同步”和“同步了的”旨在意味著在時間上相關的兩個事件,所述在時間上相關是通過時間表、通過時間信號、通過時間延遲、或直到其他事件已經滿足條件,例如,已經完成一個事件才開始。例如,虛擬3D驅動器220可以同步操作,這樣一旦圖形處理單元235已經完成來自于的第二虛擬3D驅動器220的游戲環境的呈現,就將游戲環境從第一虛擬3D驅動器220提供給3D驅動器230。可選地,選擇這個同步的時間以使得以最佳方式使用圖形處理單元235。
[0102]由于虛擬3D視頻驅動器220的管理的結果,多個視頻流能夠被存儲在共享存儲器240中,而不會混淆哪些幀屬于哪個視頻流。可選地,共享存儲器240被配置以存儲音頻和視頻數據。可以以與討論過的關于視頻數據相似的方式,存儲和/或管理這個音頻數據。
[0103]虛擬音頻驅動器285可選地是游戲邏輯210和OS 215之間的虛擬I/O殼的一部分。它們被配置以從游戲邏輯210的視點看起來像音頻驅動器,并且將它們從游戲邏輯210接收的任何音頻數據傳給音頻DEP 270之一。例如,在一些實施例中,與游戲邏輯210A相關聯的虛擬音頻驅動器285被配置以發送音頻數據到音頻DEP 270A,以及與游戲邏輯210B相關聯的虛擬音頻驅動器285被配置以發送音頻數據到音頻DEP 270B等。
[0104]共享存儲器240包括隨機存儲器(RAM)或相似的被配置以高效地讀寫視頻數據的存儲器。共享存儲器240被配置以為多個不同的視頻DEP 245存儲視頻數據。可選地,不同的視頻DEP 245的視頻數據同時被存儲在共享存儲器240中。共享存儲器240可以由單個硬件設備組成或可以包括多個設備。
[0105]視頻DEP 245是動態地分配編碼流水線,其被配置以將使用圖形處理單元235呈現的視頻數據編碼。視頻DEP 245的每個成員被配置以編碼到提供視頻DEP 245時指定的視頻格式。這個格式規格通常基于客戶端110之一的需要和/或視頻服務器系統120和客戶端110之間的通信路徑的能力。可選地,相應于來自于客戶端110之一的請求,動態提供視頻DEP 245。例如,當客戶端IlOB連接到視頻服務器系統120,并且發送視頻流請求時,能夠提供視頻DEP 245以包括特定選擇以滿足客戶端IlOB需要的元件,例如編碼器。如在本發明其他地方討論的,可選地,視頻DEP 245的成員被配置以使用一個以上的編碼方案。
[0106]每個視頻DEP 245包括抓取器247,所述抓取器247被配置以從共享存儲器240抓取視頻數據以及將這個視頻數據傳輸到視頻DEP 245的存儲器。可選地,抓取器247在虛擬3D驅動器220成員的控制下。例如,在多種實施例中,由虛擬3D視頻驅動器220的成員控制抓取器247以從共享存儲器240中特定位置抓取視頻數據和/或與到視頻DEP 245其他成員的視頻數據的傳輸同步地在特定時間抓取視頻數據。
[0107]每個視頻DEP 245可選地包括覆蓋邏輯290,其被配置以將一個或多個視頻圖像覆蓋到視頻數據,例如,由圖形處理單元235產生的幀上。覆蓋是被置于第二圖像上的第一圖像,或被加到另一個聲音的聲音。覆蓋可以具有變化透明度等級被應用。例如,第一圖像能夠是不透明的,這樣,完全隱藏第二圖像被覆蓋的部分,或第一圖像能夠是部分透明的,在上述情況下,在第一圖像下面的第二圖像能夠仍是稍微可見的。覆蓋可以遮蓋所有的或部分的在下面的圖像。例如,覆蓋可以被配置以遮蓋在更大區域中的某些像素。在這種情況下,覆蓋被映射到客戶端110之一的顯示器上的像素、或映射到由圖形處理單元235產生的圖像中的像素。映射能夠以多種方式完成。例如,覆蓋左下角的像素可以被分配到圖形處理單元235產生的視頻幀上的特定像素。在一些實施例中,覆蓋邏輯290被配置以在應用所述覆蓋前,調整覆蓋的大小。可選地,覆蓋邏輯290位于視頻DEP 245A中的其他位置。例如,在處理器250后。
[0108]覆蓋能夠包括各種各樣的像素/視頻圖像。例如,覆蓋能夠包括游戲玩家經由因特網接收的實時或靜止的圖像,運動(或其他)事件的實時或靜止的圖像、輸入控制(例如,“a”、“b”、“TAB”、“回車”、“空格鍵”、“功能鍵”、“箭頭”和/或其他鍵或輸入設備)的圖像、地圖、文本、和/或諸如此類的。覆蓋能夠在大小和形狀上千差萬別。在一些情況下,覆蓋是呈現3D游戲環境的結果。能夠將一個以上的覆蓋置于一個圖像上。這些覆蓋能夠是重疊的或單獨的。可選地,在被應用前,覆蓋以一種編碼格式被接收和被解碼。
[0109]覆蓋的存在和內容是可選地響應于接收到的游戲命令,一個或多個游戲玩家的身份、賬戶類型、正在播放游戲的身份、從先前的或實時的運動事件或現實世界的游戲捕捉的視頻、游戲規則、和/或由游戲邏輯210產生的視頻內容。例如,覆蓋可以包括由游戲命令的接收產生的目錄。覆蓋可以包括響應于像素圖案的內容,例如,包括在由游戲邏輯210產生的視頻中的圖像。可選地,覆蓋邏輯290被配置以應用多個覆蓋到單個視頻幀并且這些覆蓋可以來自于不同的源。
[0110]可選地,覆蓋邏輯290被配置以在通過使用預處理器250已經預處理視頻幀后和/或在通過使用編碼器255編碼后,應用覆蓋。在一些實施例中,覆蓋包括經由因特網在視頻源130的輸入(例如,I/O設備145)接收的圖像,并且覆蓋邏輯290包括被配置以從所述圖像產生覆蓋的視頻處理邏輯。可選地,接收到的圖像是從圖像源,例如,攝像機或文件存儲設備接收的。
[0111]可選地,每個視頻DEP245也包括預處理器(PRE)250。預處理器250被配置以執行顏色空間轉換,例如,RGB到YUV和/或縮放操作以增加或減少視頻幀的分辨率。在圖形處理單元235的輸出是在YUV顏色空間中或一些其他渴望得到的顏色空間中的實施例中,預處理器250是可選的。多個預處理器250可以被包括在視頻DEP 245中,所述視頻DEP 245被配置以產生多個具有不同大小的視頻幀的視頻流。
[0112]每個視頻DEP 245包括至少一個編碼器(ENC) 255。編碼器255分別被標識為編碼器255A、編碼器255B等。每個編碼器225被配置以根據特定的編解碼器,以及可選地,特定的顏色深度和/或幀大小對視頻數據進行編碼。例如,編碼器225可以被配置以將視頻數據編碼為 Adobe Flash? 標準、.flv、.wav、.av1、.mpg、H.264, Η.263、0n2、VP6、VC-1、WMA、和/或本發明討論的其他編解碼器。
[0113]視頻DEP 245的成員可以包括一個、兩個或更多的編碼器255。這些編碼器可以被配置以編碼為不同的編解碼器和/或同一編解碼器的不同格式。例如,可以配置編碼器255A以根據Flash標準、以第一幀大小和顏色深度進行編碼,而配置編碼器255以同一Flash標準、以第二幀大小和顏色深度編碼進行編碼。在視頻DEP 245的每個成員中的編碼器255的身份通常在提供視頻DEP 245時確定。例如,單個命令或命令集可以被用于產生(提供)視頻DEP245A以及指定被產生的視頻DEP 245A應該包括哪些組件。在本發明的其他地方進一步討論視頻DEP 245A的產生。包括兩個或兩個以上的編碼器255的視頻DEP 245成員可替代地被視為共有一些但并非全部組件的兩個或兩個以上的單獨的視頻DEP 245。例如,視頻DEP 245A和視頻DEP 245B可以具有同一預處理器250但不同的編碼器 255。
[0114]在一個例子中,編碼器255A被配置以使用H.264編解碼器,而編碼器255B被配置以使用H.263編解碼器。具有兩個或兩個以上不同的可用編碼器使視頻DEP 245A能夠在視頻流傳遞期間改變編碼。所述編碼的改變能夠是從一種編碼類型到另一種,或僅僅是特定類型的編碼特征上的改變。例如,特征可以在顏色深度、每秒幀數量、編碼選項、像素數量、和/或諸如此類方面改變。在一些實施例中,響應于客戶端IlOB特征上的改變或客戶端IlOB和視頻源130之間的通信信道的改變,視頻DEP 245A可選地被配置以在編碼器255A和255B之間切換。[0115]實際上,當需要不同于正在使用的編解碼器的編解碼器時,新的視頻DEP245與當前的視頻DEP245并行產生以及執行一小段時間。可選地,所述新的視頻DEP245是原始視頻DEP245的分支。例如,原始視頻DEP245的一些組件可以被用在新的視頻DEP245中。這兩個視頻DEP245可以具有邏輯上被安排在樹形結構中的組件。
[0116]在一些實施例中,視頻DEP 245被配置以使用兩個或兩個以上的不同的編碼器以同時產生兩個或兩個以上的不同視頻流。這些視頻流基于由圖形處理單元255呈現的同一游戲環境以及,因此,包括基本上相同的材料(有覆蓋的可能的例外)以及能夠被發送到不同的地方。例如,視頻流之一能夠被發送到客戶端110A,而其他的被發送到客戶端110B。可替代的,視頻流之一能夠被發送到客戶端IlOB以及其他被發送到第三方能夠觀看視頻的網站。可選地,這個網站是社交網絡網站或游戲玩家網站的一部分。所述兩個不同的視頻流可在幀速率、編碼類型、幀大小、顏色深度等方面不同。例如,傳遞到社交網站的視頻流可能有比傳遞到通過使用客戶端IlOB正在玩游戲的游戲玩家的視頻流低得多的質量。第二視頻流可以直達正在玩游戲的游戲玩家或僅僅在觀看游戲進行的人。可選地,視頻流直達一個以上的地方。
[0117]視頻DEP 245A可選地包括一個或多個后置處理器(Post) 260。后置處理器260的單獨例子分別被稱作260A和260B。后置處理器260被配置以適合于通過網絡通信的格式、根據公共或私有網絡協議,將編碼的視頻幀打包進容器。例如,一些協議,諸如,Adobe RTMP需要后置處理,而其他視頻標準,例如,H.264附件B不需要后置處理。可以將每個后置處理器260與編碼器255的特定成員相關聯,或一些后置處理器260可以被配置以從編碼器255的一個成員接收編碼的視頻幀。
[0118]后置處理器260的輸出直達I/O設備145以傳遞給一個或多個客戶端110。本發明討論的視頻DEP 245的元件包括硬件、固件、和/或存儲在計算機可讀介質上的軟件。例如,每個視頻DEP 245可以代表一套軟件,所述軟件被載入存儲器中并通過使用電子處理器執行。
[0119]音頻DEP 270被配置以接收由游戲邏輯210成員產生的音頻數據,并且將這個音頻數據編碼為音頻數據包。通過使用I/o設備145和網絡115,所述編碼的數據數據包隨后被發送到客戶端110。可選地,音頻DEP 270也被配置以將音頻覆蓋置于從游戲邏輯210接收的音頻數據上。不同的音頻DEP 270分別被標記為270A、270B、270C等。
[0120]和視頻DEP 245 —樣,音頻DEP 270通常被按需分配以及被分配以處理來自于游戲邏輯210特定成員的音頻數據。這個音頻數據可以基于視頻游戲中的事件。例如,根據游戲規則(例如,落入水中產生拍水聲),視頻游戲的一個或多個玩家采取的行動可以引起音頻數據。音頻DEP 270A的分配通常響應于相同因素并且以與視頻DEP 245A的分配相同的方式執行。例如,包括于音頻DEP 270A中的元件可以響應于客戶端110之一的需要。音頻DEP 270可以從共享存儲器240和/或直接從虛擬音頻驅動器285之一接收音頻數據。
[0121]可選地,音頻DEP 270A包括抓取器275,所述抓取器275被配置以從虛擬音頻驅動器285之一接收音頻數據、從視頻服務器系統120外的一個或多個源接收音頻數據、和/或從共享存儲器240獲得音頻數據。例如,在一些實施例中,抓取器275被配置以重新獲得通過因特網、從視頻源130外的源(例如,從一個或多個客戶端110)接收到的數據。從這些源的任何一個接收的音頻能夠包括聲音、音樂、音響效果、音軌、警報、和/或諸如此類的。例如,使用客戶端IlOA的游戲玩家的聲音可以從客戶端IlOA接收、或游戲玩家可以提供音樂以讓使用另一個客戶端110的游戲玩家聽到。音頻數據可以作為音頻流、并行地從一個以上的游戲玩家接收。
[0122]可選地,音頻DEP 270A進一步還包括覆蓋邏輯295。覆蓋邏輯295被配置以將一個或多個音頻覆蓋置于由游戲邏輯210成員產生的音頻數據上。所述音頻覆蓋能夠包括音頻、音樂、音響效果、音軌、警報、和/或諸如此類的。例如,在一些實施例中,音頻覆蓋包括作為數據包,通過因特網,從一個或多個游戲玩家接收的語音數據。在被包括進覆蓋前,由覆蓋邏輯295可選地對這些數據包進行編碼。將覆蓋置于游戲邏輯210成員產生的音頻數據上可選地包括將這個數據加到產生的音頻數據。所有或部分的音頻覆蓋能夠從視頻源130外的源接收。例如,在一些實施例中,覆蓋包括經由因特網、在I/O設備145接收的音頻數據,且覆蓋邏輯290包括被配置以從這個音頻數據產生音頻覆蓋的音頻處理邏輯。當提及音頻覆蓋時,數據的身份是覆蓋,并且正被應用的所述覆蓋上的數據可以是任意的,因為,在一些實施例中,音頻數據沒有在視頻數據中能夠具有分層的順序感。
[0123]音頻DEP 270A進一步還包括音頻編碼器280A。音頻編碼器280A被配置以根據音頻編解碼器,將游戲邏輯210成員產生的音頻數據和音頻覆蓋編碼進音頻數據包。所述編碼通常在已經將音頻覆蓋應用到音頻數據后執行。
[0124]抓取器275、音頻編碼器280A和覆蓋邏輯295包括硬件、固件、和/或存儲在計算機可讀介質上的軟件。音頻DEP 270B和音頻DEP 270C是音頻DEP 270A的可替代實施例。
[0125]通常,視頻源130的操作由控制器265管理。控制器265包括硬件、固件、和/或存儲在計算機可讀介質上的軟件。例如,控制器265可以包括存儲于存儲器中的、通過使用微處理器執行的軟件。
[0126]在一些實施例中,控制器265被配置以響應于播放游戲的請求,提供游戲邏輯210A、虛擬音頻驅動器285和虛擬3D視頻驅動器220的實例。例如,如果從客戶端IlOB接收特定的視頻游戲的請求,則控制器265可以從存儲設備155重新獲得游戲邏輯210A、虛擬音頻驅動器285和虛擬3D視頻驅動器220,并且將這些置于工作的存儲器中。游戲邏輯210A可以被置于與客戶端IlOB和游戲服務器125兩者的通信中。隨后,為了播放視頻游戲,通過使用處理器150執行游戲邏輯210A。
[0127]在一些實施例中,控制器265被配置以響應于播放游戲的請求,分配視頻DEP 245和/或虛擬音頻驅動器285的實例。例如,控制器265可以被配置以首先確定或接收對視頻DEP 245A和音頻DEP 270A的需求以及隨后提供滿足那些需要的計算指令。隨后,將視頻DEP 245A和音頻DEP 270與游戲邏輯210之一以及虛擬3D驅動器220之一相關聯。可選地,提供的視頻DEP245A被配置以從共享存儲器240中特定區域重新獲得原始視頻數據。
[0128]在一些實施例中,通過查詢使用客戶端IlOB的游戲玩家,確定對視頻DEP 245A和/或音頻DEP 270A的需求。例如,控制器265可以被配置以使文本消息出現在客戶端IlOB上,所述消息請求使用客戶端IlOB的游戲玩家輸入游戲玩家渴望得到的視頻流特征。這些特征能夠包括連接類型、幀大小、編碼方案、幀速率、顏色深度、和/或諸如此類的。鍵入的特征被傳送回控制器265,隨后控制器265使用這些特征選擇元件,以當它們被提供時包括在視頻DEP 245A和/或音頻DEP 270A中。例如,如果游戲玩家請求特定的編碼方案,則被配置以使用請求的編碼方案的編碼器255隨后被選擇并被包括到視頻DEP 245A中。[0129]在一些實施例中,自動確定對視頻DEP 245A和/或音頻DEP 270A的需求。例如,通過使用客戶端資格器聚集的信息可以被用于確定對視頻DEP 245A的需求。在這個例子中,如果客戶端IlOB只包括Microsoft Silverlight ?解碼器和Adobe Flash ?解碼器,則在視頻DEP 245A中需要至少一個相應的解碼器的配置或變量。通過使用視頻DEP 245A產生的視頻流的特征,例如幀大小、顏色深度和幀速率,也能夠由控制器265以這種方式確定。
[0130]對視頻DEP 245A和/或音頻DEP 270A需求的確定可以包括由游戲玩家提供的特征和自動確定的特征兩者的使用。在一些實施例中,可能的特征被游戲玩家的賬戶類型、付款和/或預定限制。例如,游戲玩家可以付費以接收更高質量的視頻流。
[0131]控制器265也可以管理共享存儲器240的共享。例如,控制器265可以配置視頻DEP 245A和/或音頻DEP 270A以使用共享存儲器240中特定的存儲器位置,和/或可以將控制器265配置為被配置的視頻DEP 245A和/或音頻DEP 270A,以響應于某些定時信號訪問共享存儲器240。所述定時信號被定時以便不同的視頻DEP 245訪問共享存儲器240的同步。
[0132]圖3示出了根據本發明的多種實施例的游戲服務器125的進一步細節。游戲服務器125被配置以基于從多個客戶端接收的游戲命令維持視頻游戲的全局狀態。這些客戶端可以是客戶端110、視頻源130、和/或其他類型的客戶端。游戲服務器125能夠包括一個或多個計算設備。例如,在一些實施例中,游戲服務器125包括不同的硬件設備,所述硬件設備貢獻于支持游戲中的不同的區域、實例或地牢。
[0133]游戲服務器125包括輸入/輸出(I/O) 310,所述輸入/輸出310被配置以經由網絡115、從多個地理位置上的遠程客戶端接收游戲命令。輸入/輸出310通常包括網絡連接,例如,以太網端口、路由器、網關、和/或諸如此類的。可選地,這些網絡連接被配置以使用TCP、UDP、和/或其他的標準進行通信。輸入/輸出310也被配置以發送游戲狀態信息到多個客戶端。這個游戲狀態信息通常包括由游戲服務器125維持的全局游戲狀態的子集。所述提供給每個客戶端的子集通常依賴于化身的位置和與客戶端相關聯的特定的游戲會話。例如,全局游戲狀態的子集通常包括代表化身周圍區域的游戲狀態。所述子集被配置以足夠定義化身周圍的游戲環境以及,這樣,能夠基于化身的視點來呈現流視頻。全局游戲狀態是整個游戲或游戲有效部分的代表,且是基于從地理位置上的遠程客戶端接收的游戲規則和游戲命令的。
[0134]游戲服務器125進一步還包括游戲弓丨擎320,所述游戲弓I擎320被配置以基于接收到的游戲命令和一套游戲規則,維持視頻游戲的全局狀態。游戲引擎320也追蹤個別游戲會話,以及被配置為每個游戲會話選擇和產生全局游戲狀態的子集。將這些子集提供給多個客戶端的不同成員。通常每個產生的全局游戲狀態的子集被分別分配給多個客戶端的特定成員。這個分配基于游戲引擎320和特定客戶端之間建立的游戲會話。
[0135]可選地,游戲服務器125進一步還包括切換邏輯180B,所述切換邏輯180B被配置以將游戲進行從服務器側模式切換到客戶端側模式,以及可選地,反之亦然。特別地,切換邏輯180B被配置以在單個游戲會話中將與游戲服務器125的通信從第一客戶端切換到第二客戶端。通常,第一客戶端將是視頻源130的實例,并且第二客戶端將是客戶端110之一(當從客戶端側模式切換回服務器側模式時,這些角色將被倒換)。切換包括將一個全局狀態的子集從多個客戶端的第一成員重新分配到多個客戶端的第二成員。子集本身將被發送到第二成員,而不是或除了多個客戶端的第一成員。此外,切換邏輯180B被配置以改變接收到的通信到游戲會話的分配,這樣,來自于多個客戶端的第二成員通信被分配到,與來自于多個客戶端的第一成員的通信被分配到的游戲會話一樣的游戲會話。在一些實施例中,單個游戲會話和/或游戲狀態子集能夠同時被分配到一個以上的客戶端。在這些情況下,從兩個客戶端接收的游戲命令都被分配到同一游戲會話,并且全局游戲狀態的同一子集被發送到兩個客戶端。從兩個客戶端接收的游戲命令被當做它們是從同一客戶端接收的。
[0136]如本發明的其他地方所描述的,切換可能涉及從視頻服務器系統120接收重新分配游戲會話的請求。這個請求通常包括將對其進行重新分配的客戶端110之一的IP地址或一些其他地址。在一些實施例中,切換邏輯180B被配置以只從特定的預定客戶端接受重新分配請求。例如,切換邏輯180B可以被配置以從視頻服務器系統120的實例而不是客戶端110的實例接受重新分配請求。可選地,重新分配請求被加密和/或可以包括授權代碼。
[0137]游戲服務器125進一步還包括被配置以存儲全局狀態和其子集的狀態存儲設備330。狀態存儲設備330包括一個或多個靜態存儲設備,例如,硬盤驅動器、靜態存儲器、隨機存儲器、和/或諸如此類的。全局狀態可選地被分成一些部分,每個部分代表游戲中的不同區域。
[0138]圖4示出了根據本發明的多種實施例的用戶界面400。在一些實施例中,用戶界面400由視頻源130產生。用戶界面400可以由展現在瀏覽器或其他窗口中的視頻組成。可替代地,用戶界面400可以包括一個以上的視頻和/或視頻和靜態圖像的組合。例如,流游戲視頻可以在游戲顯示區域410中展現,而控件可以在菜單區域420中顯示。控件和流游戲視頻可選地在不同的位置產生。例如,控件可以在客戶端IlOB上產生,而流視頻由視頻源130產生。在一些實施例中,游戲顯示區域410和菜單區域420是瀏覽器窗口中不同的幀。
[0139]菜單區域420能夠包括各種各樣的控制,為了說明的目的示出幾個。在圖4中示出的控制可選地覆蓋在部分流游戲視頻上。點擊、光標經過、或其他的選擇控制的方式能夠使得命令被傳送到切換邏輯180C、切換邏輯180B、切換邏輯180A、下載管理器165、賬戶管理器185、和/或諸如此類的。
[0140]在一個示出的例子中,菜單區域420包括購買按鈕430,為游戲玩家購買視頻游戲配置所述購買按鈕430。在一些實施例中,在不打斷游戲進行的情況下,這個購買能夠進行。例如,在菜單區域420中完成購買(名字和信用卡信息和/或類似信息的輸入)的同時,流游戲視頻能夠繼續在顯示區域410中展現給游戲玩家。購買游戲能夠導致服務器側模式和客戶端側模式之間的切換的發起,能夠導致下載的可執行游戲內容的激活,能夠引起可執行游戲內容下載的發起等。購買游戲通常需要游戲玩家提供賬戶信息。
[0141]在一個示出的例子中,菜單區域420也包括賬戶按鈕440。賬戶按鈕440可被用于訪問賬戶管理器185的特征。在多種實施例中,賬戶按鈕440被用于設置賬戶名、產生化身、選擇服務器、付款、設置密碼、在游戲之間切換、和/或諸如此類的。由游戲玩家通過使用賬戶按鈕440(或購買按鈕430)提供的信息能夠被存儲在視頻服務器系統120、游戲服務器125、或游戲系統100中的其他地方。
[0142]在一個典型的實施例中,選擇賬戶按鈕440或購買按鈕430將使得命令被發送到視頻服務器系統120,其轉而將改變菜單區域420的內容以給游戲玩家進一步的選擇和/或數據輸入域。
[0143]在一個示出的例子中,菜單區域420也包括炫耀按鈕450。炫耀按鈕450被配置以便游戲玩家自動地將游戲視頻張貼到外面的網站,例如社交網站。視頻張貼的位置和視頻的長度是參數的例子,可選地,使用賬戶按鈕440設置上述參數。所述張貼的視頻能夠是實時的或記錄的。例如,炫耀按鈕能夠被配置以張貼最后60秒的播放,殺死首領前2分鐘的播放,或游戲的實時視頻。被選擇張貼的視頻可選地取決于被配置以監視游戲進行的附件的輸出,例如,檢測首領遭遇、成就、等級的改變等。
[0144]在一個示出的例子中,菜單區域420進一步還包括新游戲按鈕460。新游戲按鈕460被配置以展現其他通過游戲系統100給游戲玩家可用的視頻游戲列表。通常,如果游戲玩家選擇新游戲,則來自于當前游戲視頻的傳遞被終止并且被來自于新游戲的視頻取代。可選地,來自于當前游戲和新游戲的視頻,相繼顯示在同一瀏覽器窗口中。可選地,賬戶管理器185被配置以將游戲玩家賬戶信息從一個視頻游戲拷貝到另一個。可選地,新游戲按鈕460被配置以便游戲玩家在沒有重大延時的情況下,從一個視頻游戲移到另一個。可選地,當新游戲開始時,將游戲會話分配給游戲邏輯的不同實例或視頻源130的不同實例。這個分配可能涉及從讓與人傳出客戶端的IP地址或將客戶端的IP地址傳給受讓人。
[0145]如之前所述,下載管理器165被配置以執行與將可執行游戲內容下載到客戶端IlOB相關的多種功能。圖5示出了根據本發明的多種實施例的下載管理器165。下載管理器165能夠包括統計引擎500、概率樹數據庫510、狀態監視器520、帶寬監視器530、下載器540以及優先級列表550中的一些或全部。特別地,下載器540接收輸入,例如,從監視器520,530,以及也訪問概率樹數據庫510來控制可執行游戲內容的下載方面,例如,以什么順序和以什么速率下載可執行游戲內容。
[0146]圖6示出了根據本發明的多種實施例的決策樹600,以及決策樹600被提供以輔助理解本發明描述的下載管理器165的一些功能,例如,關于圖5。決策樹600包括分枝點610,基于游戲玩家輸入、來自于其他游戲玩家的輸入,根據由可執行游戲內容或游戲邏輯210指定的規則,游戲狀態能夠從所述分枝點610推進到數個可選游戲狀態任何一個。分枝點610引出更多的分枝點610,從而產生整體的決策樹600。可以理解,雖然每個分枝點610代表一個唯一的游戲狀態,但是游戲進行可以通過不是那些實例中的分枝點610的游戲狀態進行,在所述實例中,體現在可執行游戲內容中的規則不提供選擇。為了清楚,沒有來自于其選擇的游戲狀態從圖6省略。實際上,計算機游戲可以包括比在圖6中示出的多得多的分枝點610。
[0147]由可執行游戲內容確定從每個分枝點610出發的選擇。最初,在準備階段選項是受限的,例如,幻想游戲的游戲玩家首先不得不選擇固定數量的可能化身之一。選擇化身后,游戲玩家接著可以具有在兩個或兩個以上的隊列或聯盟之間選擇的選項。依據那個選擇,游戲玩家可以具有人物種族、開始配置等等的不同選擇,直到為玩游戲充足地定義了游戲玩家的化身。在一個特定的例子中,如果游戲玩家選擇人類化身,則可知游戲將需要與人類起始區相關聯的可執行游戲內容的可能性高,并且在短期內,將需要與獸人起始區相關聯的資源的可能性較小。在另一個例子中,在賽跑游戲中,如果游戲玩家選擇橢圓形軌道,則相對于只有8字形軌道需要的資源,這個橢圓形軌道需要的資源將被給予較大的下載優先級。其他類型的游戲可以具有不同的準備選擇,例如,車輛類型、跑道、戰場、玩家數量、化身武器、化身技能、化身性別等。隨后游戲玩家從準備進展到玩游戲,例如,通過被置于游戲狀態中。為簡單起見,圖6示出在準備階段中的每個最后的分枝點610被映射到游戲進行中的唯一的初始游戲狀態。然而,將理解,準備階段中的多個最后的分枝點610可以映射到游戲進行中的同一初始游戲狀態。眾所周知,對合適的游戲進行,每個分枝點610需要特定的資源集。
[0148]從可能是分枝點610的初始游戲狀態,游戲玩家可用的玩游戲的選項包括移動到不同的位置、與其他游戲玩家互動、與游戲環境中的特征互動、獲取目標、掙錢等等。如在圖6示出的,游戲玩家輸入,例如,由游戲玩家玩游戲產生的游戲命令,使得游戲狀態增加地改變。在一些實施例中,其他游戲玩家的行動能夠引起游戲狀態的改變。由可執行游戲內容提供的以從特定游戲狀態前進的其他選項能夠包括回到準備階段中分枝點610、改變游戲等級以及采取其他將化身從游戲狀態移走的行動的能力。為簡單起見,在圖6中示出的分枝總是向前推進,然而,如前面所描述的,來自于任何分枝點610的分枝都能夠是復雜的,以及可選地,能夠引導,例如,到位于準備或可供選擇的等級中的分枝點610。游戲玩家從一個分枝點610到下一個的進展的歷史構成那個游戲玩家游戲路徑620。
[0149]在每個分枝點610有一套代表改變的概率,所述改變為游戲路徑620接著將通向每個不同的可替代的游戲狀態,以及隨后超過那些進一步的游戲狀態。在一個具體例子中,在一個分枝點610可以有25個游戲路徑620可能延伸到的不同的可替換游戲狀態。響應于接收到的游戲命令,游戲路徑620將通向的這25個分枝點610前兩個的概率分別是百分之21和百分之9。接下來的23個選擇,每個具有百分之3的概率。也有百分之I概率游戲玩家將暫停或退出游戲。這些概率可以取決于到達一個分枝點610采取的路徑。到達離當前的分枝點610數步遠的分枝點610的概率能夠通過將概率相乘計算。確定這些概率的方法在本發明的其他地方公開。
[0150]再次參考圖5,可選的統計引擎500被配置以計算在當前游戲狀態的游戲玩家將移到距離當前游戲狀態一步的每個其他游戲狀態統計的可能性。可選地,統計引擎500通過在一長段時間,監視大量的游戲玩家的游戲進行執行這個計算。游戲玩家的數量越大以及監視時期越長,結果的統計意義就越好。對于給定的游戲狀態,一些可能的游戲狀態將是很有可能的,而其他游戲狀態可能性較小。例如,游戲玩家將回到設置中的游戲狀態的可能性通常將是小概率的,而推進化身通過當前的游戲等級的選項是較高概率的。也有游戲玩家將退出游戲的概率。因為多個游戲玩家的游戲進行被持續監視,所以統計引擎500隨著時間更新概率樹數據庫510中的概率。統計引擎500的單個實例可以支持大量的下載管理器165。可選地,統計引擎500被安置在地理位置上遠離下載管理器165的其他部分的地方。
[0151]在一些實施例中,統計引擎500為距離當前游戲狀態一步的、可供選擇的游戲狀態中的一些或所有做這個計算。在一些進一步的實施例中,統計引擎500為距離當前的游戲狀態一步以上的、選擇中的一些或所有做這個計算。在多種實施例中,統計引擎500基于當前游戲狀態和/或基于一個或多個之前的游戲狀態,沿著游戲路徑620計算每個選擇的概率。例如,前進到特定的游戲狀態的概率可基于游戲玩家如何到達當前游戲狀態變化。
[0152]在圖5中,雖然統計引擎500在下載管理器165中被示出,但是可以理解,統計引擎500能夠橫跨多個游戲服務器125分布,每個實例基于由游戲服務器125支持的游戲進行,致力于概率樹數據庫510。統計引擎500的每個實例可以包括硬件、固件、和/或存儲在計算機可讀介質上的軟件。概率樹數據庫510包括存儲在計算機可讀介質上的、有組織的并且可檢索的數據收集。在多種實施例中,每個下載管理器165可以包括一份概率樹數據庫510或每個只可以訪問共享的概率樹數據庫510。因為在監視足夠大量的游戲玩家的游戲進行一段足夠的時期后,被存儲在概率樹數據庫510中的概率能夠是適度靜態的,所以,在多種實施例中,下載管理器165不包括統計引擎500和/或概率樹數據庫510不響應于進一步的游戲進行被更新。
[0153]此外,下載管理器165包括狀態監視器520。狀態監視器520被配置以沿著游戲路徑620追蹤游戲狀態,以及可選地,在前分枝點610。可選地,下載管理器165進一步還包括帶寬監視器530。在多種實施例中,狀態監視器520被配置以從游戲服務器125或狀態源175接收游戲狀態。可選地,狀態監視器520監視由游戲邏輯210使用以產生游戲視頻的游戲狀態。狀態監視器520被配置以給統計引擎500提供游戲狀態,這樣,統計引擎500能夠執行概率計算。
[0154]帶寬監視器530監視例如,視頻服務器系統120和客戶端IlOB之間的通信信道的帶寬。狀態監視器520和帶寬監視器530中的每個可以包括硬件、固件、和/或存儲在計算機可讀介質上的軟件。帶寬監視器530通過檢測丟失的數據包、通過測量時延、通過測試增加的通信速率以了解是否導致丟失數據包、通過發送測試數據包、和/或諸如此類的方法監視帶寬。其他的可以由帶寬監視器530使用的帶寬測試方法在共同擁有的、序列號為12/791,819的美國專利申請中和/或本發明其他地方關于客戶端資格器160的討論中公開。
[0155]進一步地,下載管理器165包括下載器540。下載器540被配置以從狀態監視器520,以及可選地,從帶寬監視器530接收輸入,以及還進一步被配置以訪問概率樹數據庫510。下載器540查詢概率樹數據庫510以為了從狀態監視器520接收的游戲狀態,確定從那個游戲狀態出發的每個可能選擇的概率是什么。可選地,下載器540可以為每個可能的可供選擇的游戲狀態,確定從那些游戲狀態出發的每個可能的可供選擇的游戲狀態概率是什么。例如,如果兩個可能的游戲狀態統計上是可能的而其余的游戲狀態統計上是非常不可能的,則下載器540可以查看所述兩個可供選擇的游戲狀態中的每一個以及從兩個可供選擇的游戲狀態考慮進一步可供選擇的游戲狀態。
[0156]給定游戲狀態,以及可選地,一個或多個在前分枝點610,下載器540使用從那個游戲狀態出發的、每個可能的可供選擇的游戲狀態概率,以動態區分可執行游戲內容將被下載的優先順序。下載器540維持提供部分可執行游戲內容將被下載的順序的優先級列表550。可選地,當部分可執行游戲內容被下載以及游戲狀態改變時,下載器540在優先級列表550中改變順序。下載器540根據某些規則維持優先級列表550。例如,即使部分被下載的可執行游戲內容的片段屬于與其他游戲狀態相比,已經變得不太可能的游戲狀態,那些片段也可以被給予優先級以完成下載。作為另一個例子,支持具有最大可能性的游戲狀態需要的、可執行游戲內容的那些部分將具有最高下載優先級,以及支持具有較低可能性的游戲狀態需要的、可執行游戲內容的部分將具有相對較低下載優先級。部分可執行游戲內容能夠被目錄、文件和/或文件的子部分劃分。[0157]如本發明其他地方描述的,在一些實施例中,下載器540調節下載可執行游戲內容的速率。下載器540根據由帶寬監視器530提供的帶寬,以及可選地,來自于視頻服務器系統120的其他信息,例如,用于提供流游戲視頻的帶寬數量,調節下載速率。
[0158]如本發明其他地方描述的,可選地,下載器540被配置以在客戶端IIOB上,通過使用切換邏輯180發起下載代碼的執行。在一些實施例中,在客戶端IlOB上已經發起下載代碼的執行后,并且流游戲視頻不再被視頻服務器系統120發送到客戶端110B,根據優先級列表550,下載器540可以繼續下載游戲代碼到客戶端110B。在這些實施例的一些中,下載器540繼續接收游戲狀態以及繼續動態改變優先級列表550的順序,直到已經完成到客戶端IlOB的整個游戲代碼的下載。
[0159]圖7示出了根據本發明示例性實施例的用于下載可執行游戲內容的方法700。例如,方法700能夠由下載管理器165執行。方法700包括接收游戲狀態的步驟710、確定概率的步驟720、以及確定下載序列的步驟730。每次在步驟710接收新的游戲狀態,可選地,在步驟720例如,通過查詢概率樹數據庫510來確定新的概率。然而,在很多例子中,從一個游戲狀態到下一個的推進不需要在步驟730對下載序列重新排序。然而,在一些例子中,基于從所述游戲玩家或其他游戲玩家接收的輸入,游戲進行可能采用概率上來說可能性更小(相對于預期的進行)傾向。在這些情況下,例如,在優先級列表550中,可執行游戲內容的一個或多個部分被給予新的更高優先級,而可執行游戲內容的其他部分被給予新的更低優先級。在多種實施例中,概率和/或優先級列表550重新計算的時間可以基于固定時間段(例如,1、5或10分鐘)、化身離開游戲中的區域、化身的行程、穿越游戲環境中的邊界、化身執行的特定的行動、到達特定的狀態、化身等級的改變、和/或諸如此類的。
[0160]方法700還可以包括可選的、確定下載可執行游戲內容下載速率的步驟740。在一些實施例中,步驟740包括監視通信信道的帶寬。在一些實施例中,步驟740可包括從帶寬監視器530接收帶寬。如本發明其他地方討論的,能夠基于可用帶寬和提供在最小質量等級的流視頻需要的帶寬,確定下載速率。
[0161]方法700進一步還包括下載可執行游戲內容的步驟750。在多種實施例中,步驟750包括根據從步驟730動態排序的優先級列表,通過網絡115將部分可執行游戲內容通信到客戶端110B。這個步驟可由例如,下載器540執行。在多種實施例中,根據優先級列表指定的順序,部分可執行游戲內容從代碼源170重新獲得并且發送到客戶端110B。在這些實施例的一些中,首先使可執行游戲內容排隊,并且當優先級列表被重排序時,在隊列中的可執行游戲內容的順序被動態重排。
[0162]在一些例子中,步驟750包括改變下載速率。例如可通過下載器540改變下載速率,例如,基于諸如變化的帶寬可用性的因素。由于信道可變性和流視頻的帶寬需要的改變,可用帶寬的數量可能變化。例如,在某些時候,流視頻可能每秒需要的幀比在其他時候的少,以及能夠利用額外的可用帶寬增加下載速率。
[0163]在一些實施例中,某些條件導致相對于流視頻的提供,給可執行內容的下載更高的優先級。例如,如果因為資源是不可用的,所以在客戶端模式游戲的執行將非常可能被打斷,則相對于維持展現給游戲玩家的游戲視頻的最小質量,可以給下載資源更多的優先級。在一些實施例中,幀速率、幀大小、顏色深度、或游戲視頻的一些其他特征可以被改變,這樣下載的幀數量(以比特/秒)減小。這使得對于下載可執行游戲內容,更多的帶寬是可用的。在特定的例子中,如果下載管理器165確定當需要時被需要的資源很可能不可用,則配置下載管理器165發送指令到視頻源130,指示應該減小提供給客戶端IlOB的流視頻的幀速率,以增加資源在需要前將被下載的概率。可選地,基于下載需要的資源預期需要的時間量,計算被減小的幀速率的數量。在可替代的實施例中,當在客戶端側模式下時為了保證需要的資源在需要它們前被下載,游戲的進行是“凍結的”。在可替代的實施例中,如果當客戶端側執行需要時,需要的資源在客戶端IlOB上很可能是不可用的,則游戲的進行從客戶端側模式切換到服務器側模式。
[0164]在一些實施例中,對于正常的游戲進行所需,資源被區別對待。例如,對于正常的游戲進行,場地的幾何結構和/或在游戲的區域中的目標可被認為是必不可少的,而意欲應用在游戲目標中的紋理可能不是必不可少的。在這些實施例中,如果下載管理器165確定當需要時被需要的資源很可能是不可用的,則可以改為使用可替代的資源。例如,內部墻壁的紋理可以被使用在建筑物的外部,或不必要的目標可以從提供給游戲玩家的視頻省略。可選地,由下載管理器165給客戶端IlOB提供被允許的資源替代表。相對于不必要的資源,可以給必要的資源更大的優先級以下載到客戶端110B。如本發明所使用的,術語“正常的游戲進行”指游戲按預期方式展現和播放。不正常的游戲進行可能有不正常的紋理、缺少游戲目標等,盡管如此仍允許游戲進行具有稍微不同的外觀或功能。
[0165]可選地,方法700進一步還包括發起從游戲執行的服務器側模式到游戲執行的客戶端側模式切換的步驟760。步驟760可以包括,例如,在需要可執行游戲內容的任何一部分將被下載前,確定那部分的概率是否低于給定的閾值。這個概率與將到達的游戲狀態需要的部分可執行游戲內容的概率以及何時將到達這個游戲狀態的概率有關。在需要資源前的時間量越大,越可能有機會在被需要前下載資源。在多種實施例中,在被下載前,如果被需要的任何資源的概率低于百分之1、2或5的閾值,則可執行游戲內容的“可執行子集”將被認為已經被下載到客戶端。在這些實施例中,可執行子集的特征描述包括將來可能需要什么資源的考慮以及等到需要它們時下載這些資源的概率。這樣,可執行子集依賴當前的游戲狀態。在其他實施例中,不考慮將來將需要什么,當資源的最小可執行集已經被下載到客戶端時,認為可執行子集被下載。
[0166]當下載可執行子集時,切換邏輯180能夠發起到游戲執行的客戶端側模式的切換。步驟760可以包括,例如,終止流視頻從視頻服務器到客戶端的傳遞以及在客戶端上執行可執行游戲內容以基于游戲狀態產生視頻。在給客戶端提供流視頻的同時,步驟710-760中的每個都可被執行。
[0167]可選地,方法700進一步還包括完成可執行游戲內容的下載步驟770。在這個步驟中,在步驟760后,例如,轉換到客戶端側模式后,能夠繼續下載可執行游戲內容到客戶端。在這些實施例的一些中,能夠根據下載序列下載可執行游戲內容,像下載序列在步驟760的時候一樣。在其他實施例中,在步驟770期間,根據游戲狀態,通過使用步驟730繼續動態地改變下載序列。在這些實施例中,游戲狀態,如在客戶端IlOB上維持的,被傳送回下載管理器165。即使在可執行子集的執行已經在客戶端IlOB上開始后,步驟730也能夠被用于改變下載部分可執行游戲內容到客戶端IlOB的順序。
[0168]可選地,方法700可包括發起切換回給客戶端提供流視頻的步驟780。在如下的例子中,這個步驟可被執行,所述例子為:在步驟760結束后,繼續接收游戲狀態,例如由下載器540接收的例子。這里,如果下載器540基于游戲狀態確定,還沒有被下載客戶端的部分可執行游戲內容有很大的概率被需要以支持正在進行的游戲,則切換邏輯180,例如,能夠將客戶端從游戲執行的客戶端側模式切換回服務器側游戲執行。應當意識到盡管在圖7中,步驟780表現為在步驟770后,但是在那些采取步驟780的例子中,步驟780發生在步驟770完成前。在這些例子中,步驟770被打斷,并且方法700返回步驟710,并且在下載可執行游戲內容到客戶端的同時,繼續流視頻到客戶端,直到步驟760重新切換回游戲執行的客戶端側模式的時刻。
[0169]圖8示出了根據本發明的多種實施例的用于提供計算機游戲的方法。通過使用本發明其他地方公開的系統和方法,這些方法可選擇地被執行。在接收命令步驟810中,通過通信系統,在視頻服務器系統從遠程客戶端接收游戲命令。例如,在一些實施例中,視頻服務器系統120通過網絡115,從客戶端IlOB接收游戲命令。游戲命令的接收是建立在客戶端IlOB和視頻服務器系統120之間的游戲會話的一部分。在圖8中示出的步驟,可選地,以可替代的順序執行。
[0170]在可選的轉發命令步驟815中,接收到的游戲命令被轉發到游戲服務器(例如,游戲服務器125)。經由網絡115,接收到的游戲命令可選地,轉發到游戲服務器125。在可選的接收狀態步驟820中,在視頻服務器系統從游戲服務器接收更新的游戲狀態。接收到的游戲狀態,可選地,是由游戲服務器125維持的全局游戲狀態的子集,以及可選地,通過使用在命令轉發步驟815中轉發的游戲命令更新。在多玩家游戲中,接收到的子集通常是從多個游戲玩家和/或多個客戶端110接收的游戲命令的結果。
[0171]轉發命令步驟815和接收狀態步驟820,可選地,是在不包括游戲服務器125的實施例中。在這些實施例中,更新狀態步驟825在視頻服務器系統120上執行。更新狀態步驟825包括使用從客戶端IlOB接收的游戲命令來新存儲在視頻服務器系統120上的游戲狀態。可選地,通過使用游戲邏輯210之一的游戲規則執行更新。
[0172]在產生視頻步驟830中,基于在接收狀態步驟820中接收的游戲狀態或在更新狀態步驟825中更新的游戲狀態產生游戲視頻。游戲視頻,可選地,如在本發明的其他地方描述的,例如關于圖2,通過視頻服務器系統120產生。例如,在一些實施例中,通過使用視頻驅動器220、3D驅動器230、GPU235和/或視頻DEP 245A,基于由游戲邏輯210產生的游戲環境產生的游戲視頻。
[0173]在提供視頻步驟835中,通過通信網絡,游戲視頻被從視頻服務器系統提供到遠程客戶端。例如,游戲視頻可以經由網絡115,從視頻服務器系統120提供給客戶端110B。雖然游戲視頻,可選地,在顯示前被解碼、被覆蓋和/或以其他方式處理,但是通常以在客戶端IlOB上顯示的格式來提供游戲視頻。
[0174]在確定速率步驟840中,確定可執行游戲內容能夠被傳送到客戶端的速率。這個確定可選地,基于在客戶端維持顯示游戲視頻的最小質量等級,而同時并行地傳送可執行內容。例如可執行內容可以經由網絡115從視頻服務器系統120 (或游戲系統100上的其他地方)傳送到客戶端110B,而同時給客戶端IlOB提供流狀游戲視頻。可執行游戲內容的傳送和游戲視頻的傳遞并行意味著游戲視頻的數據包被同時接收,或散布在可執行游戲內容的數據包之間。可選地,游戲視頻的數據包和可執行游戲內容的數據包兩者都被同時存儲在客戶端IlOB的接收緩沖器中。確定速率步驟840,可選地,通過使用下載管理器165執行。如在本發明的其他地方討論的,傳送傳送速率的確定可以基于視頻服務器系統120和客戶端IlOB之間的通信信道的可用帶寬和/或這個帶寬被用于提供流狀游戲視頻的片段。
[0175]當可執行游戲內容被傳送客戶端IlOB時,確定速率步驟840中的傳送速率的確定可以重復以維持游戲視頻質量。
[0176]在提供代碼步驟845中,通過通信網絡,可執行游戲內容被提供給遠程客戶端。例如,在一些實施例中,經由網絡115,將可執行游戲內容從代碼源170傳送到客戶端IIOB。如這里所使用的術語“可執行游戲內容”和“可執行內容”旨在包括可執行代碼和用于產生游戲(或其他應用)視頻(諸如,例如,腳本、數據結構、圖像、紋理、地理信息,角色姓名、目標形狀、用戶數據、游戲數據等)的相關資源。一般,以不多于如本發明的其他地方所討論的確定速率步驟840中確定的速率,提供可執行游戲內容。可執行游戲內容包括游戲邏輯和/或被配置以基于游戲狀態產生游戲視頻的代碼。所述游戲代碼可選地,進一步還包括紋理、圖像、游戲區的地理數據、和/或被用于支持游戲的其他游戲數據。至少部分可執行游戲內容和游戲視頻的流是被并行地提供給遠程客戶端。例如,經由網絡115,與來自于視頻源130的游戲視頻并行地,可以將來自于代碼源170的可執行游戲內容傳送到客戶端110B。可替代地,可執行游戲內容和游戲視頻可以通過單獨的信道,并行被傳送到客戶端110B。
[0177]這樣,當可用帶寬改變時,流游戲視頻與由客戶端110接收的可執行內容的比例(以字節/秒測量)可以變化。下載管理器165可以周期性地重復確定傳送速率,例如,至少每秒、每十秒、每一百秒、每10巾貞、每1000巾貞、每100巾貞或連續地。在一些實施例中,響應于事件,例如,從視頻源130接收信號指示游戲視頻的數據速率或游戲視頻的數據速率的改變,下載管理器165可以重復步驟840。響應于條件的改變,例如,客戶端IlOB需求的變化(例如,受限于延遲時間可變性、客戶端IlOB和視頻服務器系統120之間的通信信道的帶寬的改變、顯示分辨率的改變等),下載管理器165可以重復步驟840。
[0178]在提供代碼步驟845,部分可執行游戲內容可以以預定特定順序提供給遠程客戶端。例如,相對于第二游戲狀態,客戶端IlOB可具有更大的概率到達第一游戲狀態。因此,相對于在第二游戲狀態需要的資源,給在第一游戲狀態需要的資源更大的優先級。
[0179]在可選的修改順序步驟850中,響應于當前的游戲狀態,將部分可執行游戲內容提供給遠程客戶端的順序可以被動態修改。如本發明的其他地方討論的,重排序通常是基于變化的概率,所述概率是玩家玩游戲時將需要的游戲代碼或一些其他資源的概率。當游戲從一個變到另一個狀態時,由下載管理器165計算進一步的游戲狀態的新概率。在修改順序步驟850中,這些新概率被用于修改給客戶端IlOB提供游戲代碼的順序,這樣,首先提供有最大概率的那些部分。在游戲代碼的下載期間,下載管理器165可以重復修改提供部分可執行游戲內容的順序。可以根據需要重復修改順序步驟850。修改的順序可依賴于可執行內容被下載到的游戲玩家采取的行動和/或在游戲中其他游戲玩家采取的行動。
[0180]在確定子集步驟855中,下載管理器165確定是否可執行游戲內容的可執行子集已經被下載到遠程客戶端,例如,客戶端110B。可執行游戲內容的可執行子集是允許游戲玩家在游戲將不會因為需要的資源還沒有被下載而不得不暫停的具有合理的概率情況下玩游戲的子集。需要的概率能夠是預先確定的,以及在多種實施例中,至少是百分之99、98、
95、90、或85。在游戲視頻的呈現被傳送到客戶端前,所有的可執行游戲內容被下載的實施例中,確定子集步驟855是可選的。[0181]在提供狀態步驟860,將游戲狀態提供給遠程客戶端。可以隨著時間給客戶端提供游戲狀態。例如,在一些實施例中,提供狀態步驟860包括提供初始游戲狀態以及隨后隨著時間提供初始狀態的更新。可替代地,提供狀態步驟860能夠包括提供單個當前狀態。提供游戲狀態可以是從客戶端IlOB和/或客戶端110的其他成員接收的游戲命令的結果。從游戲服務器125和/或視頻服務器系統120能夠提供游戲狀態。
[0182]在傳送狀態更新步驟865中,改變游戲狀態更新的傳遞,這樣,游戲狀態從游戲服務器125被發送到客戶端IlOB而不是從游戲服務器125到視頻服務器系統120。可選地,有一段時間,在所述時間段中游戲狀態更新被發送到客戶端IlOB和視頻服務器系統120的兩者。游戲狀態更新是在游戲服務器125上維持的全局游戲狀態的子集,并且在視頻服務器系統120和客戶端IlOB處被用于產生游戲視頻,。游戲狀態更新可以是增加的和/或全部的。傳送狀態更新步驟865通常由切換邏輯180執行。
[0183]傳送狀態更新步驟865包括隨著指令,給游戲服務器125提供客戶端IlOB的地址,例如,IP地址,所述指令為與特定游戲會話相關聯的游戲狀態應該被發送到的這個地址。在游戲服務器125,將提供的地址與先前已有的游戲會話相關聯。例如,客戶端IlOB的地址被分配給在游戲服務器125和視頻服務器系統120之間先前存在的游戲會話。在這個游戲會話中,游戲狀態更新之前從游戲服務器125被發送到視頻服務器系統120。傳送狀態更新步驟865的結果是,全局游戲狀態的子集被發送到客戶端110B,除了或代替視頻服務器系統120。這個改變,可選地,在單個游戲會話中執行。
[0184]在傳送命令步驟870中,指令由切換邏輯180提供給游戲服務器125,這樣,游戲服務器將從遠程客戶端接收的命令分配到以前在游戲服務器125和視頻服務器系統120之間建立的游戲會話。雖然能夠使用其他的標識符,但是通常通過使用客戶端IlOB的IP地址標識從客戶端IlOB接收的命令。這樣,提供給游戲服務器125的指令,可選地,包括客戶端IlOB的IP地址。
[0185]進一步地,在傳送命令步驟870中,指示客戶端IlOB發送游戲命令到游戲服務器125,而不是或除了視頻服務器系統120。這個指令通常包括游戲服務器125的地址。例如,切換邏輯180A可以給客戶端IlOB提供游戲服務器125的IP地址以及可以(例如,經由切換邏輯180C)指示客戶端IlOB直接將游戲命令發送到游戲服務器125。
[0186]傳送狀態更新步驟865和傳送命令步驟870是可選的。在一些實施例中,即使在從流模式切換到客戶端模式后,在游戲服務器125和客戶端IlOB之間的游戲狀態和游戲命令的通信通過視頻服務器系統120繼續發生。在切換回流模式很可能發生的情況下,通過視頻服務器系統120繼續通信是有幫助的。
[0187]在開始執行步驟875,可執行游戲內容的可執行子集的執行在客戶端IlOB上開始。基于作為提供狀態步驟860和傳送狀態更新步驟865的結果接收的游戲狀態,這個執行導致游戲視頻的產生。這個游戲視頻被配置以在客戶端IlOB上顯示。游戲代碼的執行,可選地,由切換邏輯180A發起或在切換邏輯180A的控制下發起。如在確定子集步驟855中確定的那樣,只有可執行游戲內容的可執行子集(或全部)已經被下載到客戶端后,才執行開始執行步驟875。在一些實施例中,即使在開始執行步驟875后,繼續執行提供代碼步驟845。這允許在執行已經開始后,下載剩余的可執行游戲內容和/或新游戲代碼。
[0188]提供狀態步驟860、傳送狀態更新步驟865、傳送命令步驟870以及開始執行步驟875的結果是計算機游戲的執行從服務器側模式切換到客戶端側模式,其中在客戶端側模式通過使用游戲代碼和代替遠程服務器客戶端上的硬件,進行呈現。特別地,游戲視頻的呈現從游戲服務器傳送到遠程客戶端,例如,從視頻服務器系統120到客戶端110B。如本發明其他地方討論的,在一段時間中,游戲視頻可以并行是從視頻服務器系統120接收的以及在客戶端IlOB產生的兩者。這能夠允許視頻的同步,和/或在游戲玩家選擇時,允許游戲玩家從在瀏覽器播放視頻游戲切換到不同的窗口(可能也是瀏覽器窗口)。
[0189]在終止游戲視頻步驟880中,終止從視頻服務器系統到遠程客戶端的游戲視頻的傳遞。例如,切換邏輯180A可以指示下載管理器165終止從視頻服務器系統120到客戶端IlOB的游戲視頻提供。在可替代的實施例中,人工執行終止游戲視頻步驟880。例如,游戲玩家可以僅僅通過關閉其中顯示游戲視頻的瀏覽器窗口,或通過人工執行下載的可執行游戲內容,終止游戲視頻的傳遞,所述可執行游戲內容被配置以通過發送命令到視頻服務器系統120,或者本地關閉到視頻服務器系統120的通信信道,終止來自于視頻服務器系統120的游戲視頻傳遞。
[0190]在繼續下載步驟885中,可執行游戲內容的進一步和/或新的部分被下載到遠程客戶端。在執行已經被下載到客戶端IlOB的可執行游戲內容的那部分同時,下載管理器165可以繼續給客戶端IlOB提供部分可執行游戲內容。這樣,客戶端IlOB接收可執行游戲內容,同時通過使用已經被下載的部分可執行游戲內容給游戲玩家呈現和展現游戲視頻。一旦不再經由網絡115從視頻服務器系統120給客戶端IlOB提供視頻,可用于到客戶端IlOB的可執行游戲內容傳送的部分帶寬通常大幅度增加。在所有的可執行游戲內容在開始執行步驟875前被下載的實施例中,繼續下載步驟885是可選的。
[0191]在可選的回復步驟890中,視頻服務器系統從客戶端側模式回復到服務器側模式。從視頻服務器系統120到客戶端IlOB的流游戲視頻的傳遞重新開始,并且在客戶端IlOB處的游戲視頻的呈現可選地被終止。例如,當存在于客戶端IlOB的可執行游戲內容子集不再能為當前游戲狀態和/或可能未來的游戲狀態呈現視頻時,回復步驟890可以發生。如上文所述,通過與步驟860-885相似的步驟,能夠完成回復步驟890,除了切換一般反向發生的情況之外。可以重復地執行步驟850-890的執行。這樣,視頻游戲能夠在客戶端側和服務器側模式之間多次切換。在一些實施例中,當視頻游戲在兩維模式和三維模式之間變化,或在一些其他的視頻輸出之間變化時,這個切換發生。
[0192]圖9示出了根據本發明的多種實施例的用于傳送游戲會話的方法。游戲會話從游戲服務器125的第一客戶端傳送到第二客戶端(例如,從視頻服務器系統120到客戶端110B)。為了在同一游戲會話期間,以流模式和客戶端模式兩者進行計算機游戲,這些方法,可選地,由游戲服務器125執行。在圖9中示出的方法能夠允許在不要求游戲玩家終止第一游戲會話,并且人工登錄到游戲服務器125以建立第二游戲會話的情況下改變模式。可替代地,通過為游戲玩家提供合適的登錄界面以登錄第二游戲會話,所述方法可以促進模式改變。與那些在圖9中示出步驟相似的步驟能夠被用于將游戲會話從客戶端IlOB傳送回視頻服務器系統120。在圖9中示出的步驟,可選地,以可替代的順序執行。
[0193]在可選的建立會話步驟910中,建立游戲會話,以在游戲服務器125和第一客戶端,例如,視頻服務器系統120之間通信游戲命令和游戲狀態信息。在本發明其他地方,更充分地描述建立游戲會話。在一些實施例中,為了建立游戲會話,游戲服務器125需要賬戶。如本發明其他地方所描述的,所述賬戶能夠自動建立或由游戲玩家建立。建立的游戲會話包括識別第一客戶端和游戲服務器125的地址。作為游戲會話一部分,游戲命令從第一客戶端被發送到游戲服務器125,以及游戲狀態信息從游戲服務器125被發送到第一客戶端。在游戲會話已經建立的實施例中,建立會話步驟910是可選的。
[0194]在接收游戲命令步驟915,游戲服務器125從第一客戶端接收游戲命令。例如,在一些實施例中,游戲服務器125從視頻服務器系統120接收游戲命令。最初,這個游戲命令可以已經通過客戶端IlOB被發送到視頻服務器系統120。在視頻服務器系統120,游戲命令通常被用于更新一份游戲狀態,所述游戲狀態被用于呈現提供給客戶端IlOB視頻流,和/或在被轉發到游戲服務器125前,游戲命令被處理或否則被修改。游戲命令的接收是在游戲服務器125和視頻服務器系統120之間建立的游戲會話一部分。這樣,將接收到的游戲命令與這個特定游戲會話相關聯。該關聯,可選地,通過使用地址或其中接收游戲命令的數據包中的其他標識符進行。
[0195]在更新狀態步驟920中,游戲服務器125使用從第一客戶端接收的游戲命令更新游戲狀態。更新的狀態可以被存儲在視頻服務器系統120和/或游戲服務器125上。通常,通過使用存儲在游戲服務器125上的游戲規則,執行更新。
[0196]在發送狀態步驟925中,游戲服務器125將計算機游戲更新的游戲狀態作為第一游戲狀態從游戲服務器發送到第一客戶端。例如,第一游戲狀態可以被發送到視頻服務器系統120。在一些實施例中,發送狀態步驟925包括發送初始的第一游戲狀態,以及隨后隨著時間發送第一游戲狀態的更新。可替代地,發送狀態步驟925可包括發送單個第一游戲狀態到視頻服務器系統120。
[0197]在接收切換命令步驟930中,游戲服務器125接收命令以將游戲會話從第一客戶端切換到第二客戶端。在客戶端中的這個改變導致游戲進行的流模式和客戶端模式之間的改變。通常,由切換邏輯180,例如,切換邏輯180A發送所述命令。接收到的命令將游戲服務器125置于準備接收以及處理執行切換所需要信息的狀態中。響應于所述切換命令,游戲服務器125準備從第二客戶端接收游戲命令,而不是或除了第一客戶端,例如,從客戶端IlOB而不是視頻服務器系統120。第二客戶端的例子包括客戶端110 (例如,客戶端IlOA或110B)。在接收切換命令步驟930中,游戲服務器125也準備發送狀態更新到第二客戶端,而不是或除了第一客戶端。
[0198]在可選的認證步驟935中,在接收切換命令步驟930中接收的切換命令被認證。這個認證能夠以各式各樣的方式完成。例如,在一些實施例中,接收的切換命令被加密和/或包括認證代碼,所述認證代碼被配置以阻止游戲會話未授權的重新分配。在一些實施例中,游戲服務器125包括認證IP地址的列表,并且被配置以只接受來自于這個列表中IP地址的切換命令。從其接收切換命令的IP地址,可選地,通過使用握手程序被確認。在一個特定例子中,游戲服務器125被配置以從包括視頻服務器系統120的IP(或MAC)地址的地址有限集,接受切換命令,并且不接受來自于不在這個有限集中地址的切換命令。認證步驟935的認證,可選地,包括解密密鑰、或任何本領域中公知的多種消息認證方案的使用。
[0199]在接收地址步驟940中,游戲服務器125接收第二客戶端的IP地址(或其他類型的網絡地址)。例如,切換邏輯180A可以給游戲服務器125提供客戶端IlOB的IP地址,以及可以指示游戲服務器125 (通過切換邏輯180B)直接發送游戲命令到客戶端110B。可選地,接收地址步驟940也包括給客戶端110提供游戲服務器125的地址。例如,切換邏輯180A和/或切換邏輯180B可以給客戶端IlOB提供游戲服務器125的IP地址以及可以指示客戶端110B(經由切換邏輯180C)直接發送游戲命令到游戲服務器125的IP地址,而不是或除了視頻服務器系統120的IP地址。雖然能夠使用其他的標識符,但是從視頻服務器系統120接收的命令通常由視頻服務器系統120的IP地址標識,以及從客戶端IlOB接收的命令通常由客戶端IlOB的IP地址標識。這樣,提供給游戲服務器125的指令可選地包括客戶端IlOB的IP地址(或其他類型的網絡地址)。
[0200]在關聯地址步驟945中,將第二客戶端的地址與游戲會話相關聯,這樣,計算機游戲的第二狀態將被發送到第二客戶端,和/或這樣,將從第二客戶端接收的游戲命令與游戲會話相關聯。在游戲服務器125,切換邏輯180B將接收到的第二客戶端IP地址與特定的游戲會話相關聯。例如,在游戲服務器125,切換邏輯180B接收客戶端IlOB的IP地址并將它與請求的游戲會話相關聯。隨后,進一步的游戲狀態被發送到客戶端IlOB的IP地址,除了或代替,視頻服務器系統120的IP地址。有時能夠將游戲會話與視頻服務器系統120的IP地址相關聯,以及在另一些時候能夠將同一游戲會話與客戶端IlOB的IP地址相關聯。可選地,將這個游戲會話與兩個IP地址相關聯一段時間。IP地址和游戲會話之間的關聯意思是指游戲會話使用該IP地址發送游戲狀態和/或將接收到的游戲命令識別為那個游戲會話的游戲命令。
[0201]在可選的接收游戲命令步驟950中,從第二客戶端接收游戲命令以及第二客戶端的地址被用于將接收到的游戲命令標識為所述特定游戲會話的游戲命令。在接收游戲命令步驟950中接收的游戲命令是,可選地,與在接收游戲命令步驟915中接收的游戲命令同一類型的游戲命令。通過包括網絡115的通信系統,游戲服務器125從客戶端IlOB接收游戲命令。客戶端110B,可選地,發送游戲命令到游戲服務器125的IP地址,而不是視頻服務器系統120的IP地址。游戲服務器125從客戶端IlOB的IP地址,而不是從視頻服務系統的120IP地址,接收已經在關聯地址步驟945中提供的游戲命令。游戲服務器125使用客戶端IlOB的IP地址以將接收的游戲命令與游戲玩家的游戲會話相關聯。即使最初經由視頻服務器系統120建立游戲會話和登錄時,也可以進行接收到的游戲命令的這個關聯。在可替代的實施例中,除了 IP地址,標識符被用于將接收到的游戲命令與游戲會話相關聯。例如,會話標識符可以包括在游戲命令中。當游戲會話開始時或當游戲玩家登錄時,能夠建立這個會話標識符。
[0202]在在客戶端模式下,通過視頻服務器系統120,由游戲服務器125從客戶端IlOB持續接收游戲命令的實施例中,接收游戲命令步驟950的一些方面是可選的。
[0203]在發送狀態步驟955中,計算機游戲的第二狀態被發送到第二客戶端。游戲服務器125,可選地,使用在接收游戲命令步驟950中接收的游戲命令確定計算機游戲的第二狀態。計算機游戲的第二狀態,可選地,被發送到客戶端IlOB的IP地址,而不是或除了視頻服務器系統120的IP地址。
[0204]在可替代的實施例中,當游戲在客戶端模式下進行時,視頻服務器系統120被配置以作為代理服務器運轉。在這些實施例中,通過視頻服務器系統120,計算機游戲的第二狀態被發送到客戶端110B。作為代理服務器,視頻服務器系統120僅僅將游戲命令和游戲狀態轉發到合適的目的地。對游戲服務器125來說,所述過程能夠是透明的。例如,在游戲進行被切換到客戶端模式后,游戲服務器125能夠繼續發送游戲狀態到視頻服務系統120,和/或從視頻服務器系統120接收命令。同樣地,客戶端IlOB能夠繼續發送游戲命令到視頻服務器系統120,和/或從視頻服務器系統120接收游戲狀態。然而,如本發明其他地方討論的,在客戶端模式下,在客戶端IlOB上顯示的大多數游戲視頻,在客戶端IlOB上被呈現。在這些實施例中,視頻服務器系統120被配置以更改接收到的游戲命令和游戲狀態的地址,以及將它們發送到合適的目的地。如果模式從客戶端模式改變回流模式,視頻服務器系統120再次開始產生和提供流視頻,以及使用接收到的游戲命令更新用于呈現流視頻的本地游戲狀態的副本。
[0205]在上述多種例子中,第一客戶端被描述為本地客戶端(例如,視頻服務器系統120),以及第二客戶端被描述為遠程客戶端(例如,客戶端110B)。然而,在一些實施例中,第一客戶端是客戶端110B,并且第二客戶端是視頻服務器系統120。這樣,在圖9中示出的切換能夠從流模式到客戶端模式、或從客戶端模式到流模式被執行。視頻服務器系統120,可選地,被配置以認證客戶端IlOBdP /或確定是否客戶端IlOB能夠為特定的視頻游戲在客戶端模式下運行。
[0206]在一些實施例中,當從客戶端模式切換到流模式時,在接收游戲命令步驟915中,游戲服務器125經由網絡115,從客戶端IlOB接收游戲命令。在發送狀態步驟925中,游戲服務器125也經由網絡115,將游戲狀態發送到客戶端110B。在接收切換命令步驟930中,游戲服務器125接收從計算機游戲的客戶端模式切換到流模式的命令。在多個步驟,包括接收切換命令步驟930、接收地址步驟940、認證步驟935、以及關聯地址步驟945期間,通信從客戶端IlOB切換到視頻服務器系統120。在可選的認證步驟935中,認證從客戶端模式切換到流模式的命令。一旦切換到流模式,游戲服務器125就在接收游戲命令步驟950中,從視頻服務器系統120接收游戲命令。可以基于接收到的游戲命令確定第二游戲狀態。在發送狀態步驟955中,游戲服務器125將第二游戲狀態發送到視頻服務器系統120。
[0207]在一些實施例中,當游戲會話在流模式和客戶端模式之間來回再三切換時,在游戲服務器125和客戶端110B、或游戲服務器125和視頻服務器系統120之間的通信能夠從視頻服務器系統120到客戶端110B,以及從客戶端IlOB到視頻服務器系統120來回切換。這樣,在游戲會話期間,客戶端IlOB能夠再三地與視頻服務器系統120交換角色。同樣地,在游戲會話期間,視頻服務器系統120能夠再三地與作為游戲服務器125的客戶端的客戶端IlOB交換角色。
[0208]本發明具體地示出和/或描述了一些實施例。然而,應當理解,修改和變化被上述指導覆蓋,并且在不背離本發明的精神和期望范圍的情況下,在所附權利要求書的范圍內。例如,除了游戲,本發明討論的系統和方法能夠應用于計算機程序。這些其他類型的計算機程序能夠包括圖形程序、電子表格、文字處理軟件、數據庫程序、會計程序、項目管理程序、視頻編輯程序、圖像編輯程序、網站開發程序、庫存程序、電子郵件程序、文件管理程序、文檔管理/查看程序、繪圖/計算機輔助設計程序、展示程序、和/或類似的程序。雖然服務器側模式和客戶端側模式作為單獨的游戲傳遞模式在本發明討論,但是在一些實施例中,能夠將這些模式組和起來。例如,從視頻服務器系統120展現給游戲玩家的部分視頻可以是流的,而另一部分視頻可以在客戶端IlOB上產生。在游戲進行的不同模式下,流的視頻對本地產生視頻的部分和/或比例能夠改變。例如,一些游戲事件可以包括比其他游戲事件多的流視頻。
[0209]這里討論的實施例只是用于說明本發明。由于參考此說明描述了本發明的這些實施例,本領域的技術人員可以理解所描述的方法和或特定結構的多種修改或調整。依賴本發明的指導并且使得這些指導領先于現有技術的所有這種修改、調整或變化被認為是在本發明的實質和范圍內。因此,這些說明和附圖不應認為是限制性的,本發明不應被理解為限于所說明的實施例。
[0210]本發明提及的計算系統能夠包括集成電路、微處理器、個人計算機、服務器、分布式計算系統、通信設備、網絡設備、或類似的設備,以及同一設備的多種組合。計算系統也可以包括一個或多個計算機可讀介質包括易失性和/或非易失性存儲器,例如,隨機存儲器(RAM)、動態隨機存儲器(DRAM)、靜態隨機存儲器(SRAM)、磁性介質、光學介質、納米介質、硬盤驅動器、壓縮磁盤、數字通用光盤(DVD)、和/或被配置以存儲模擬或數字信息其他設備,例如,在數據庫中。上面提到的邏輯的多種例子能夠包括硬件、固件、或存儲在計算機可讀介質上的軟件、或它們的組合。如本發明所使用的計算機可讀介質很明顯不包括紙和載波。本發明提到的方法的計算機實現步驟可以包括一套存儲在計算機可讀介質上的指令,當執行所述指令時,使計算系統執行所述步驟。被編程以依照來自于程序軟件的指令執行特定功能的計算系統,是為執行那些特定功能的特殊用途的計算系統。在執行那些特定功能的同時,由特殊用途的計算系統操作的數據至少電子地被保存在計算系統的緩存中,通過存儲數據的每個改變,物理上將計算系統從一個狀態改變到下一狀態。
【權利要求】
1.本發明的多種實施例包括一種提供計算機游戲的方法,所述方法包括: 在視頻服務器系統中,執行計算機游戲的游戲邏輯,所述游戲邏輯的執行使得基于游戲狀態的視頻流呈現; 通過通信網絡,從視頻服務器系統給遠程客戶端提供視頻流;以及與視頻流并行地,給客戶端提供可執行游戲內容,所述可執行游戲內容被配置以基于游戲狀態產生游戲視頻。
2.本發明的多種實施例包括一種提供計算機游戲的方法,所述方法包括: 從客戶端接收游戲命令; 從游戲服務器接收游戲狀態; 在流模式下,在視頻服務器系統中執行計算機游戲的游戲邏輯,游戲邏輯的執行使得基于游戲狀態和游戲命令的視頻流呈現; 在流模式下,通過通信網絡,從視頻服務器系統給遠程客戶端提供視頻流; 從流模式切換到客戶端模式,在所述客戶端模式下,不再在視頻服務器系統提供視頻流,并且計算機游戲的主要視頻在客戶端上呈現; 在視頻服務器系統,從客戶端接收游戲命令以及,在客戶端模式下,將游戲命令轉發到游戲服務器;以及 從游戲服務器接收游戲狀態以及,在客戶端模式下,將游戲狀態轉發到客戶端。
3.一種在客戶端之間傳送游戲會話的方法,所述方法包括: 在游戲服務器和第一客戶端之間建立游戲會話; 從第一客戶端接收游戲命令; 使用接收到的游戲命令更新計算機游戲的第一狀態; 將更新的計算機游戲的第一狀態從游戲服務器發送到第一客戶端; 接收計算機游戲從流模式切換到客戶端模式的命令; 接收第二客戶端的地址; 將第二客戶端的地址與游戲會話相關聯,以使得計算機游戲的第二狀態將被發送到第二客戶端,和/或以使得將從第二客戶端接收的游戲命令與游戲會話相關聯; 接收游戲命令以及使用第二客戶端的地址來將接收到的游戲命令與游戲會話相關聯;以及 將計算機游戲的第二狀態發送到第二客戶端的地址。
4.一種提供計算機游戲的方法,所述方法包括: 在視頻服務器上,在游戲執行的服務器側模式下,執行游戲邏輯,以基于游戲狀態呈現視頻流; 通過通信網絡,從視頻服務器給客戶端提供視頻流; 響應于所述游戲狀態,動態確定可執行游戲代碼的多個部分的下載序列,所述可執行游戲代碼被配置以基于游戲狀態產生視頻;以及 與視頻流并行地,根據下載序列,給客戶端提供部分可執行游戲代碼。
5.一種提供計算機游戲的方法,所述方法包括: 在視頻服務器上,執行游戲邏輯,游戲邏輯的執行使得基于游戲狀態的視頻流呈現; 通過通信網絡,從視頻服務器系統給客戶端提供視頻流;以及與視頻流并行地,給客戶端提供可執行游戲代碼,所述可執行游戲代碼被配置以基于游戲狀態產生視頻。
6.如權利要求1-4或5所述的方法,其中,所述接收到的游戲命令被用于在視頻服務器系統中,在流模式下更新游戲狀態,以及接收到的游戲狀態不被用于在視頻服務器中,在客戶端模式下更新游戲狀態。
7.如權利要求1-5或6所述的方法,進一步還包括認證從流模式切換到客戶端模式的命令。
8.如權利要求1-6或7所述的方法,其中,所述視頻服務器系統被配置以為多個不同的視頻游戲提供視頻流。
9.如權利要求1-7或8所述的方法,其中,所述游戲狀態是在游戲服務器上維持的全局游戲狀態的子集。
10.如權利要求1-8或9所述的方法,其中,所述通信網絡包括因特網。
11.如權利要求1-9或10所述的方法,其中,所述視頻流和所述可執行游戲內容通過不同的通信網絡,被提供給客戶端。
12.如權利要求1-10或11所述的方法,其中,所述不同的網絡包括因特網和電話網絡。
13.如權利要求1-11或12所述的方法,其中,所述不同的網絡具有一些共有的分段。
14.如權利要求1-12或13所述的方法,其中,提供可執行游戲內容的速率依賴于通信網絡的帶寬,速率以字節/秒為單位,且通過所述通信網絡提供視頻服務器系統。
15.如權利要求1-13或14所述的方法,其中,提供可執行游戲內容的速率依賴于以最小質量等級提供視頻流所需的帶寬,速率以字節/秒為單位。
16.如權利要求1-14或15所述的方法,其中,從視頻游戲服務器發送到客戶端的數據包包括視頻流的數據和可執行游戲內容的數據兩者。
17.如權利要求1-15或16所述的方法,進一步還包括從流模式切換到客戶端模式,在所述流模式下,視頻流從視頻服務器系統被提供到客戶端,在所述客戶端模式下,可執行游戲內容被用于在客戶端上產生計算機游戲的視頻。
18.如權利要求1-16或17所述的方法,其中,所述切換包括重新分配游戲會話以在游戲服務器和客戶端之間運行,而不是或除了在游戲服務器和視頻服務器系統之間。
19.如權利要求1-17或18所述的方法,其中,在一段時間中,視頻既在客戶端上產生又由客戶端從視頻服務器系統接收。
20.如權利要求1-18或19所述的方法,其中,切換發生在所有的可執行游戲內容被提供到客戶端前。
21.如權利要求1-19或20所述的方法,其中,切換包括給游戲服務器提供客戶端的IP地址和/或給客戶端提供游戲服務器的IP地址。
22.如權利要求1-20或21所述的方法,其中,在流模式和客戶端模式兩種模式下,部分可執行游戲內容被下載到客戶端。
23.如權利要求1-21或22所述的方法,進一步還包括: 在視頻服務器系統從客戶端接收游戲命令; 將接收到的游戲命令轉發到游戲服務器;以及 從游戲服務器接收游戲狀態,通過使用接收到的游戲命令,所述游戲狀態已經被更新。
24.如權利要求1-22或23所述的方法,進一步還包括使用接收到的游戲命令來在客戶端上更新游戲狀態。
25.如權利要求1-23或24所述的方法,進一步還包括維持在客戶端上最小質量等級的視頻流顯示的同時,確定可執行內容能夠被下載到客戶端的速率。
26.如權利要求1-24或25所述的方法,其中,可執行內容能夠被下載到客戶端的速率依賴于給客戶端提供視頻流的速率。
27.如權利要求1-25或26所述的方法,其中,可執行內容能夠被下載到客戶端的速率隨時間變化。
28.如權利要求1-26或27所述的方法,其中,以小于或等于所述確定速率的速率,將可執行游戲內容提供給客戶端。
29.如權利要求1-27或28所述的方法,其中,可執行游戲內容和視頻流并行地被提供給客戶端。
30.如權利要求1-28或29所述的方法,其中,進一步還包括響應于游戲狀態,修改給客戶端提供部分可執行游戲內容的順序。
31.如權利要求1-29或30所述的方法,其中,順序的修改依賴于到達第二游戲狀態、第一游戲狀態的概率。
32.如權利要求1-30或31所述的方法,進一步還包括確定可執行游戲內容的可執行子集已經被下載到客戶端。
33.如權利要求1-31或32所述的方法,其中,所述可執行子集依賴于游戲的當前狀態。
34.如權利要求1-32或33所述的方法,進一步還包括從視頻服務器系統或游戲服務器給客戶端提供游戲狀態。
35.如權利要求1-33或34所述的方法,進一步還包括傳送游戲會話,這樣,游戲狀態從游戲服務器被發送到客戶端,而不是或除了從游戲服務器被發送到視頻服務器系統。
36.如權利要求1-34或35所述的方法,進一步還包括傳送游戲會話,以使得游戲服務器用以前在視頻服務器系統和游戲服務器之間建立的游戲會話,分配從客戶端接收的命令。
37.如權利要求1-35或36所述的方法,其中,所述游戲會話被自動地傳送。
38.如權利要求1-36或37所述的方法,其中,傳送游戲會話包括將指令發送到游戲服務器,所述游戲服務器被配置以使得游戲服務器改變與游戲會話相關聯的IP地址。
39.如權利要求1-37或38所述的方法,進一步還包括在客戶端上,開始可執行子集的執行,以及通過使用所述執行的子集和所述游戲狀態產生游戲視頻。
40.如權利要求1-38或39所述的方法,其中,所述可執行子集包括所有可執行游戲內容。
41.如權利要求1-39或40所述的方法,進一步還包括在可執行子集已經被提供給客戶端后,終止從視頻服務器系統到客戶端的游戲視頻的提供。
42.如權利要求1-40或41所述的方法,其中,在客戶端產生的游戲視頻和從視頻服務器系統接收的游戲視頻被顯示在同一瀏覽器窗口中。
43.如權利要求1-41或42所述的方法,進一步還包括在可執行游戲內容另外的部分被下載到客戶端的同時,在客戶端上繼續執行可執行子集。
44.如權利要求1-42或43所述的方法,進一步還包括從客戶端模式回復到流模式。
45.如權利要求1-43或44所述的方法,其中,動態確定下載序列包括查詢概率樹數據庫。
46.如權利要求1-44或45所述的方法,進一步還包括計算給客戶端提供部分可執行游戲代碼的下載速率,所述計算依賴于給客戶端提供視頻流的速率。
47.如權利要求1-45或46所述的方法,其中,計算下載速率包括監視到客戶端的通信信道的帶寬。
48.如權利要求1-46或47所述的方法,進一步還包括發起從游戲執行的服務器側模式到游戲執行的客戶端側模式的切換,其中,游戲邏輯在客戶端上執行以基于游戲狀態呈現所述視頻流。
49.如權利要求1-47或48所述的方法,進一步還包括在發起所述切換后,給客戶端提供部分可執行游戲代碼。
50.如權利要求1-48或49所述的方法,其中,根據所述下載序列在發起所述切換后執行,給客戶端提供部分可執行游戲代碼。
51.如權利要求1-49或50所述的方法,進一步還包括,在發起所述切換后,響應于游戲狀態,動態確定下載序列。
52.如權利要求1-50或51所述的方法,進一步還包括從視頻服務器或游戲服務器,給客戶端提供視頻流所基于的游戲狀態的副本。
53.如權利要求1-51或52所述的方法,進一步還包括在客戶端上執行可執行游戲代碼。
54.如權利要求1-52或53所述的方法,其中,當只有可執行游戲代碼的子集已經被下載到客戶端時,在客戶端上執行所述可執行游戲代碼。
55.如權利要求1-53或54所述的方法,進一步還包括從在客戶端上展現在視頻服務器產生的視頻流,切換到在客戶端上展現由可執行游戲代碼產生的視頻。
56.如權利要求1-54或55所述的方法,進一步還包括提供請求到游戲服務器以將視頻流所基于的游戲狀態通信到客戶端,而不是或除了給視頻服務器提供游戲狀態。
57.如權利要求1-55或56所述的方法,進一步還包括給游戲服務器提供客戶端的IP地址。
58.如權利要求1-56或57所述的方法,進一步還包括在終止從視頻服務器給客戶端提供視頻流后,繼續給客戶端提供部分可執行游戲代碼。
59.一種視頻服務器系統,包括: 視頻源,被配置以給地理位置上遠離視頻源的第一客戶端提供流游戲視頻,所述流游戲視頻在視頻源以及基于視頻游戲的狀態產生;以及 切換邏輯,被配置以使視頻服務器系統從流模式切換到客戶端模式,所述流模式包括從視頻源給第一客戶端提供流視頻,所述客戶端模式包括在第一客戶端產生視頻游戲的視頻。
60.—種游戲系統,包括: 視頻源,被配置以給地理位置上遠離視頻源的第一客戶端提供流視頻,所述流視頻響應于計算機程序當前狀態在視頻源產生;以及下載管理器,被配置以 響應于計算機程序當前狀態,動態確定計算機程序可執行內容的多個部分的下載序列,以及 在流視頻從視頻源被提供給第一客戶端的同時,根據所述下載序列,通過網絡,從代碼源下載部分可執行內容到第一客戶端。
61.—種游戲系統,包括: 視頻源,被配置以給地理位置上遠離視頻源的第一客戶端提供流視頻,所述流視頻基于計算機程序的狀態在視頻源產生;以及 下載管理器,被配置以在流視頻從視頻源被提供給第一客戶端的同時,通過網絡,從代碼源將計算機程序的可執行內容下載到第一客戶端。
62.—種游戲服務器,包括: 輸入端,被配置以從多個地理位置上的遠程客戶端接收游戲命令; 游戲引擎,被配置以基于接收到的游戲命令維持視頻游戲的全局狀態,以及給多個客戶端的不同成員提供該視頻游戲的全局狀態的不同子集,每個所述子集被分別分配給多個客戶端的特定成員; 切換邏輯,被配置以將全局狀態的一個子集從多個客戶端的第一成員重新分配到多個客戶端的第二成員; 狀態存儲器,被配置以存儲全局狀態;以及 輸出端,被配置以通 過因特網,給多個客戶端提供全局狀態的子集。
63.如權利要求59-61或62所述的系統,進一步還包括下載管理器,被配置以在流模式下,將流視頻從視頻源提供給第一客戶端的同時,通過網絡,從代碼源將視頻游戲的可執行內容下載到第一客戶端。
64.如權利要求59-62或63所述的系統,其中,所述切換邏輯被配置以傳送IP地址,以使得相對于客戶端模式,游戲命令和游戲狀態在流模式下被發送到不同位置。
65.如權利要求59-63或64所述的系統,其中,所述視頻服務器系統被配置以在客戶端模式下充當代理服務器,以及作為代理服務器,將游戲命令從第一客戶端轉發到游戲服務器,并且將游戲狀態從游戲服務器轉發到第一客戶端。
66.如權利要求59-64或65所述的系統,其中,所述切換邏輯還被配置以將視頻服務器系統從客戶端模式切換到流模式。
67.如權利要求59-65或66所述的系統,其中,所述切換邏輯被配置以在維持同一游戲會話的同時,在流模式和客戶端模式之間切換,其中,在所述游戲會話中,視頻游戲在兩個模式下播放。
68.如權利要求59-66或67所述的系統,其中,所述流游戲視頻,在客戶端模式下,不被從視頻源提供給第一客戶端。
69.如權利要求59-67或68所述的系統,其中,所述視頻源被配置以通過使用圖形處理單元生成流視頻。
70.如權利要求59-68或69所述的系統,其中,所述計算機程序當前狀態依賴于從第一客戶端和/或第二客戶端接收的命令。
71.如權利要求59-69或70所述的系統,其中,所述計算機程序是計算機游戲,以及流視頻在來自于三維游戲環境的視頻源處被呈現。
72.如權利要求59-70或71所述的系統,其中,所述下載管理器被配置以相對于給第一客戶端提供可執行內容,給第一客戶端提供流視頻被給予更大的優先級。
73.如權利要求59-71或72所述的系統,其中,所述下載管理器被配置以改變流視頻的特征,以使得有相當大的概率在被下載到第一客戶端之前,在第一客戶端上需要可執行內容的部分時,下載流視頻的速率被減小。
74.如權利要求59-72或73所述的系統,其中,流視頻的改變的特征是幀速率,或其中相當大的概率大于百分之1、2或5。
75.如權利要求59-73或74所述的系統,其中,所述下載管理器被配置以依賴于代碼源和第一客戶端之間通信信道的帶寬的比特速率來提供可執行內容。
76.如權利要求59-74或75所述的系統,其中,所述比特速率也依賴于提供流視頻的比特速率。
77.如權利要求59-75或76所述的系統,其中,所述下載管理器被配置以受限于提供流視頻的速率的速率將可執行內容下載到第一客戶端,提供所述流視頻的速率滿足在第一客戶端上顯示時能接受的流視頻的最小質量。
78.如權利要求59-76或77所述的系統,其中,所述視頻源包括下載管理器。
79.如權利要求59-77或78所述的系統,其中,所述下載管理器被配置以基于從計算機程序的當前狀態到達計算機程序的其他狀態概率的確定以及在那些狀態中將需要哪些資源的了解,動態修改下 載序列。
80.如權利要求59-78或79所述的系統,其中,所述下載序列的動態修改能夠發生在服務器側模式或者客戶端側模式。
81.如權利要求59-79或80所述的系統,進一步還包括存儲概率樹數據庫并且與下載管理器通信的計算機可讀介質,其中所述下載管理器還被配置以基于計算機程序的當前狀態,通過查詢概率樹數據庫,確定計算機程序的其他狀態的概率。
82.如權利要求59-80或81所述的系統,進一步還包括被配置以維持所述概率樹數據庫的統計引擎。
83.如權利要求59-81或82所述的系統,其中,流視頻的幀和部分可執行內容在同一數據包中,被下載到第一客戶端。
84.如權利要求59-82或83所述的系統,其中,所述視頻源被配置以基于第一用戶的視點產生第一流視頻和基于第二用戶的視點產生第二流視頻,以及分別給第一客戶端和第二客戶端提供第一和第二流視頻。
85.如權利要求59-83或84所述的系統,其中,所述計算機程序的狀態依賴于從第一和第二客戶端接收的命令。
86.如權利要求59-84或85所述的系統,其中,所述視頻源被配置以通過使用圖形處理單元生成流視頻。
87.如權利要求59-85或86所述的系統,其中,所述圖形處理單元被配置以并行地產生兩個或兩個以上視頻流,以及所述視頻源被配置以將這些視頻流通信給不同的客戶端。
88.如權利要求59-86或87所述的系統,其中,所述計算機程序的狀態取決于從第一客戶端接收的命令。
89.如權利要求59-87或88所述的系統,其中,所述計算機程序是計算機游戲,以及所述流視頻在來自于三維游戲環境的視頻源處被呈現。
90.如權利要求59-88或89所述的系統,其中,在流視頻被提供給第一客戶端的同時,所述計算機程序的狀態被提供給第一客戶端。
91.如權利要求59-89或90所述的系統,其中,所述計算機程序的狀態依賴于從第一客戶端接收的命令。
92.如權利要求59-90或91所述的系統,其中,所述下載管理器被配置以,相對于將可執行內容提供給第一客戶端,給將流視頻提供給第一客戶端更大的優先級。
93.如權利要求59-91或92所述的系統,其中,所述下載管理器被配置以提供可執行內容,所述提供可執行內容的比特速率依賴于代碼源和第一客戶端之間通信信道的帶寬,以及也依賴于流視頻的數據量。
94.如權利要求59-92或93所述的系統,其中,所述下載管理器被配置以受限于提供流視頻的速率的速率下載可執行內容到第一客戶端,提供流視頻的速率滿足在第一客戶端上顯示的能夠接受的流視頻最小質量。
95.如權利要求59-93或94所述的系統,進一步還包括被配置以給第一客戶端提供計算機程序狀態的狀態源。
96.如權利要求59-94或95所述的系統,其中,所述狀態源還進一步被配置以更新存儲在第一客戶端上的計算機程序狀態的副本。
97.如權利要求59-95或96所述的系統,其中,所述狀態源還進一步被配置以基于從游戲服務器接收的數據,更新存儲在狀態源上的計算機程序狀態的副本。
98.如權利要求59-96或97所述的系統,進一步還包括切換邏輯被配置以確定可執行內容的可執行子集被提供給第一客戶端的時間。
99.如權利要求59-97或98所述的系統,其中,所述切換邏輯被配置以給第一客戶端的用戶提供通知,所述通知為將計算機程序的執行能夠從視頻源切換到第一客戶端。
100.如權利要求59-98或99所述的系統,其中,所述通知被提供作為在流視頻上的視頻覆蓋或在呈現流視頻的同一瀏覽器窗口中提供。
101.如權利要求59-99或100所述的系統,其中,所述通知包括在流視頻將被終止前,剩余的時間量。
102.如權利要求59-100或101所述的系統,其中,所述切換邏輯還被配置以在第一客戶端上發起可執行子集的執行。
103.如權利要求59-101或102所述的系統,其中,在第一流視頻從視頻源被提供給第一客戶端的同時,發起所述可執行內容在第一客戶端上的執行。
104.如權利要求59-102或103所述的系統,其中,所述下載管理器被配置以在可執行子集的執行發起后,繼續給客戶端提供計算機程序的可執行內容。
105.如權利要求59-103或104所述的系統,其中,所述切換邏輯被配置以將計算機程序的執行從視頻源切換到第一客戶端。
106.如權利要求59-104或105所述的系統,其中,所述計算機程序包括視頻游戲并且所述切換邏輯被配置以在不打斷游戲會話的情況下,將計算機程序的執行從視頻源切換到第一客戶端。
107.如權利要求59-105或106所述的系統,進一步還包括切換邏輯,所述切換邏輯被配置以將在客戶端上的可執行內容的執行與在視頻源處的計算機程序的執行同步。
108.如權利要求59-106或107所述的系統,進一步還包括切換邏輯,所述切換邏輯被配置以在第一客戶端上,發起可執行內容的執行。
109.如權利要求59-107或108所述的系統,進一步還包括切換邏輯,所述切換邏輯被配置以將第一客戶端的IP地址提供給游戲服務器,所述視頻源被配置以從游戲服務器接收計算機程序的狀態。
110.如權利要求59-108或109所述的系統,其中,所述切換邏輯被配置以使得游戲服務器給第一客戶端提供計算機程序狀態的更新。
111.如權利要求59-109或110所述的系統,進一步還包括資格邏輯,所述資格邏輯被配置以確定第一客戶端是否能夠并行地接收在最小質量等級的可執行內容和流視頻。
112.如權利要求59-110或111所述的服務器,其中,給客戶端并行地提供流視頻和可執行內容的總速率比通過其通信流視頻的通信信道的帶寬大。
113.如權利要求59-111或112所述的服務器,其中,將每個子集與特定的游戲會話相關聯,以及子集之一的重新分配包括將游戲會話從多個客戶端的第一成員重新分配到多個客戶端的第二成員。
114.如權利要求59-112或113所述的服務器,其中,所述切換邏輯被配置,以使得重新分配的子集在一段時間并行地提供給多個客戶端的第一和第二成員兩者。
115.如權利要求59- 113或114所述的服務器,其中,所述切換邏輯還被配置以將同一游戲會話分配給多個客戶端的第一和第二成員兩者。
116.如權利要求59-114或115所述的服務器,其中,所述切換邏輯還被配置以將從多個客戶端的第一和第二成員兩者接收的游戲命令分配給同一游戲會話。
117.如權利要求59-115或116所述的服務器,其中,所述切換邏輯還被配置以從多個客戶端的第一成員接收請求,所述請求為請求將分配給多個客戶端的第一成員的全局狀態的子集發送到多個客戶端的第二成員。
118.如權利要求59-116或117所述的服務器,其中,所述請求包括多個客戶端的第二成員的IP地址。
119.一種提供計算機游戲的方法,所述方法包括:在視頻服務器系統或第一客戶端上執行計算機游戲的游戲邏輯,游戲邏輯的執行使得基于游戲狀態的視頻流的呈現;通過通信網絡,從視頻服務器系統或第一客戶端給遠程第二客戶端提供視頻流;以及與視頻流并行地,從第一客戶端給第二客戶端提供可執行游戲內容,所述可執行游戲內容被配置以基于所述游戲狀態產生游戲視頻。
120.如權利要求1-58或119所述的方法,進一步還包括確定第一客戶端到第二客戶端的距離。
121.如權利要求1_58、119或120所述的方法,進一步還包括測試或監視第一客戶端和第二客戶端之間的通信信道。
122.如權利要求1-58、119、120或121所述的方法,其中,進一步還包括通過使用在遠離第一客戶端和第二客戶端兩者的服務器上的下載管理器管理從第一客戶端到第二客戶端的可執行游戲內容的通信。
123.如權利要求1-58、119-121或122所述的方法,其中,所述游戲邏輯在第一客戶端上執行。
124.如權利要求1-58、119-122或123所述的方法,其中,所述可執行游戲內容從多個遠程客戶端被提供到第二 客戶端,所述遠程客戶端包括以端對端為基礎的第一客戶端。
【文檔編號】A63F9/24GK103442774SQ201180047649
【公開日】2013年12月11日 申請日期:2011年9月13日 優先權日:2010年9月13日
【發明者】A·B·高爾特, R·F·A·佩雷拉, D·佩里 申請人:索尼電腦娛樂美國公司