IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ グーグル インコーポレイテッドの特許一覧

特許7493621ゲームストリーミングシステムにおけるレベル変更
<>
  • 特許-ゲームストリーミングシステムにおけるレベル変更 図1
  • 特許-ゲームストリーミングシステムにおけるレベル変更 図2
  • 特許-ゲームストリーミングシステムにおけるレベル変更 図3
  • 特許-ゲームストリーミングシステムにおけるレベル変更 図4
  • 特許-ゲームストリーミングシステムにおけるレベル変更 図5
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-05-23
(45)【発行日】2024-05-31
(54)【発明の名称】ゲームストリーミングシステムにおけるレベル変更
(51)【国際特許分類】
   A63F 13/355 20140101AFI20240524BHJP
   A63F 13/52 20140101ALI20240524BHJP
   H04L 67/131 20220101ALI20240524BHJP
【FI】
A63F13/355
A63F13/52
H04L67/131
【請求項の数】 12
(21)【出願番号】P 2022568938
(86)(22)【出願日】2020-05-13
(65)【公表番号】
(43)【公表日】2023-06-15
(86)【国際出願番号】 US2020032665
(87)【国際公開番号】W WO2021230862
(87)【国際公開日】2021-11-18
【審査請求日】2023-02-02
(73)【特許権者】
【識別番号】502208397
【氏名又は名称】グーグル エルエルシー
【氏名又は名称原語表記】Google LLC
【住所又は居所原語表記】1600 Amphitheatre Parkway 94043 Mountain View, CA U.S.A.
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】ゴグリン,スティーブン・ディ
【審査官】嶋田 行志
(56)【参考文献】
【文献】米国特許出願公開第2015/0141152(US,A1)
【文献】特表2016-505291(JP,A)
【文献】特表2019-509078(JP,A)
【文献】特表2018-512907(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
A63F 13/00-A63F 13/98
H04L 67/131
(57)【特許請求の範囲】
【請求項1】
ゲームプログラム(109)の第1のインスタンス(111)を、プレイヤー状態(108)に基づいて実行することにより、クライアントデバイス(104)にストリーミングするための、レンダリングされたフレーム(115)の第1のセットを生成するステップを含み、前記プレイヤー状態は、基本状態(328)と前記基本状態に対する変更(329)とを含み、前記基本状態に対する変更は、前記ゲームプログラムの前記第1のインスタンスの実行に基づき
前記ゲームプログラムの第2のインスタンス(112)が使用する、前記ゲームプログラムに関連付けられるゲームアセットの第1のセットをプリロードするステップと、
前記ゲームプログラムに対するゲームレベル変更(225)の指示に応じて、前記プレイヤー状態の少なくとも一部分を、前記ゲームプログラムの前記第2のインスタンスに転送するステップとを含み、前記プレイヤー状態の少なくとも一部分を転送するステップは、前記基本状態に対する変更を転送し、前記基本状態を前記転送から除外することを含み
前記ゲームプログラムの前記第2のインスタンスを、前記プリロードされた第1のセットに基づいて、かつ、前記プレイヤー状態の前記転送された一部分に基づいて、実行することにより、前記クライアントデバイスにストリーミングするための、レンダリングされたフレーム(116)の第2のセットを生成するステップと、
前記ゲームレベル変更の指示に応じて、または、前記ゲームレベル変更の指示の前に、前記ゲームプログラムの前記第2のインスタンスに前記基本状態をロードするステップとを含む、方法。
【請求項2】
前記第2のインスタンスを実行することは、前記ゲームアセットの第1のセットをデータストア(428)から第1のメモリ(433)にプリロードすることを含み、
前記第1のインスタンスを実行することは、ゲームアセットの第2のセット(430)を前記データストアから第2のメモリ(432)にロードすることを含み、前記ゲームアセットの第2のセットは前記ゲームアセットの第1のセットと異なる、請求項に記載の方法。
【請求項3】
前記ゲームアセットの第2のセットをロードすることは、前記ゲームアセットの第2のセットをプリロードすることを含む、請求項に記載の方法。
【請求項4】
前記ゲームプログラムの第1のインスタンスを実行することは、第1のグラフィック処理装置(GPU)において、前記レンダリングされたフレームの第1のセットを生成することを含み、
前記ゲームプログラムの第2のインスタンスを実行することは、前記第1のGPUと異なる第2のGPUにおいて、前記レンダリングされたフレームの第2のセットを生成することを含む、請求項1~のいずれかに記載の方法。
【請求項5】
前記ゲームプログラムの第1のインスタンスを実行することは、第1のサーバ(102)において、前記レンダリングされたフレームの第1のセットを生成することを含み、
前記ゲームプログラムの第2のインスタンスを実行することは、前記第1のサーバと異なる第2のサーバ(103)において、前記レンダリングされたフレームの第2のセットを生成することを含む、請求項1~のいずれかに記載の方法。
【請求項6】
方法であって、
ゲームプログラム(109)の第1のインスタンス(111)を実行することにより、クライアントデバイス(104)にストリーミングするための、レンダリングされたフレーム(115)の第1のセットを生成する間に、前記ゲームプログラムに関連付けられるプレイヤー状態(108)に対する第1の変更(329)を識別するステップを含み、前記プレイヤー状態は、基本状態(328)と前記基本状態に対する変更(329)とを含み、前記基本状態に対する変更は、前記ゲームプログラムの前記第1のインスタンスの実行に基づき
前記ゲームプログラムに対する第1のゲームレベル変更(225)の指示に応じて、前記識別したプレイヤー状態に対する第1の変更を示す第1の変更ファイルを、前記ゲームプログラムの第2のインスタンス(112)に転送するステップを含み、前記第1の変更ファイルを転送するステップは、前記基本状態に対する変更を転送し、前記基本状態を前記転送から除外することを含み
前記ゲームプログラムの前記第2のインスタンスを、前記転送した第1の変更ファイルに基づいて実行することにより、前記クライアントデバイスにストリーミングするための、レンダリングされたフレーム(116)の第2のセットを生成するステップと、
前記第1のゲームレベル変更の指示に応じて、または、前記第1のゲームレベル変更の指示の前に、前記ゲームプログラムの前記第2のインスタンスに前記基本状態をロードするステップとを含む、方法。
【請求項7】
前記ゲームプログラムの前記第2のインスタンスを実行する間に、前記プレイヤー状態に対する第2の変更を識別するステップと、
前記ゲームプログラムに対する第2のゲームレベル変更の指示に応じて、前記識別したプレイヤー状態に対する第2の変更を示す第2の変更ファイルを、前記ゲームプログラムの第3のインスタンスに転送するステップと、
前記ゲームプログラムの前記第3のインスタンスを、前記転送した第2の変更ファイルに基づいて実行することにより、前記クライアントデバイスにストリーミングするための、レンダリングされたフレームの第3のセットを生成するステップとをさらに含む、請求項に記載の方法。
【請求項8】
実行可能命令のセットを含むプログラムであって、前記実行可能命令のセットは、少なくとも1つのプロセッサを操作することにより、
ゲームプログラム(109)の第1のインスタンス(111)を、プレイヤー状態(108)に基づいて実行することにより、クライアントデバイス(104)にストリーミングするための、レンダリングされたフレーム(115)の第1のセットを生成し、前記プレイヤー状態は、基本状態(328)と前記基本状態に対する変更(329)とを含み、前記基本状態に対する変更は、前記ゲームプログラムの前記第1のインスタンスの実行に基づき、
前記ゲームプログラムの第2のインスタンス(112)が使用する、前記ゲームプログラムに関連付けられるゲームアセットの第1のセットをプリロードし、
前記ゲームプログラムに対するゲームレベル変更(225)の指示に応じて、前記プレイヤー状態の少なくとも一部分を、前記ゲームプログラムの第2のインスタンス(112)に転送し、前記プレイヤー状態の少なくとも一部分を転送することは、前記基本状態に対する変更を転送し、前記基本状態を前記転送から除外することを含み
前記ゲームプログラムの前記第2のインスタンスを、前記プリロードされた第1のセットに基づいて、かつ、前記プレイヤー状態の前記転送された一部分に基づいて、実行することにより、前記クライアントデバイスにストリーミングするための、レンダリングされたフレーム(116)の第2のセットを生成
前記ゲームレベル変更の指示に応じて、または、前記ゲームレベル変更の指示の前に、前記ゲームプログラムの前記第2のインスタンスに前記基本状態をロードする、プログラム。
【請求項9】
前記第2のインスタンスを実行することは、前記ゲームアセットの第1のセットをデータストア(428)から第1のメモリ(433)にプリロードすることを含み、
前記第1のインスタンスを実行することは、ゲームアセットの第2のセット(430)を前記データストアから第2のメモリ(432)にロードすることを含み、前記ゲームアセットの第2のセットは前記ゲームアセットの第1のセットと異なる、請求項に記載のプログラム。
【請求項10】
前記ゲームアセットの第2のセットをロードすることは、前記ゲームアセットの第2のセットをプリロードすることを含む、請求項に記載のプログラム。
【請求項11】
前記ゲームプログラムの第1のインスタンスを実行することは、第1のグラフィック処理装置(GPU)において、前記レンダリングされたフレームの第1のセットを生成することを含み、
前記ゲームプログラムの第2のインスタンスを実行することは、前記第1のGPUと異なる第2のGPUにおいて、前記レンダリングされたフレームの第2のセットを生成することを含む、請求項8~10のいずれかに記載のプログラム。
【請求項12】
前記ゲームプログラムの第1のインスタンスを実行することは、第1のサーバ(102)において、前記レンダリングされたフレームの第1のセットを生成することを含み、
前記ゲームプログラムの第2のインスタンスを実行することは、前記第1のサーバと異なる第2のサーバ(103)において、前記レンダリングされたフレームの第2のセットを生成することを含む、請求項8~11のいずれかに記載のプログラム。
【発明の詳細な説明】
【背景技術】
【0001】
背景
ゲーム機またはパーソナルコンピュータ等のビデオゲームシステムは、ゲームプログラムが作り出した仮想環境とユーザが対話することを可能にする。ユーザは、ゲームコントローラまたはその他の入力デバイスを介してゲームプログラムと対話し、ゲームプログラムは、ユーザ入力に応じて、ゲームに関連付けられるゲーム状態を修正する。ゲームプログラムは、ゲーム内容に基づいて、ユーザに対して表示される仮想環境の特徴を変更する。このように、ユーザは、ゲーム状態を変更する一連の入力を通して、ゲームプログラムに関連付けられるゲームをプレイする。
【0002】
ゲームプログラムは、ユーザに対して仮想環境を生成し表示するために、保存されたグラフィックオブジェクト、テクスチャ、音声ファイルなどのような、ゲームアセットを使用する。ゲームプログラムは、ゲームアセットに素早くアクセスして申し分のないユーザ体験を提供するために、典型的には、ダイナミックランダムアクセスメモリ(DRAM)等の比較的高速のメモリに必要なアセットを保存する。しかしながら、多くのゲームプログラムは、大きな仮想環境を実現し、仮想環境全体に関連付けられるゲームアセットのすべてをこの比較的高速のメモリに保存することはできない。そのようなゲームプログラムは、典型的には、「レベリング」アプローチを採用し、仮想環境は、比較的離散的なレベルまたは世界に分離される。ゲームプログラムは、仮想環境に関連付けられるアセットのセット全体を、1つ以上のディスクドライブ等の比較的低速のメモリに保存し、ユーザが現在対話しているレベルに関連付けられるアセットのみをより高速のメモリにロードする。
【0003】
ユーザによるレベルの変更(すなわちゲームレベルが切り替えられるべきであることを示すゲーム入力をユーザが提供)に応じて、ゲームプログラムは、新たなレベル(切り替えようとしているレベル)に関連付けられるゲームアセットを、低速メモリから高速メモリに転送する。しかしながら、この転送処理は、比較的長い時間を要する可能性があり、たとえば、転送が行われている間にユーザに対して「ロード画面」を表示することで、ゲームプログラムがゲームフローを一時停止することを必要とする。このようなゲームフローの中断は、ゲームに対するユーザ体験に悪影響を及ぼす可能性がある。
【0004】
本開示は、添付の図面の参照によってより適切に理解されその数多くの特徴および利点が当業者に対して明らかにされるであろう。異なる図面で使用される同一の参照符号は同様または同一のアイテムを示す。
【図面の簡単な説明】
【0005】
図1】いくつかの実施形態に係る、ゲームレベル変更に応じて、同時に実行されるゲームインスタンス間でプレイヤー状態情報を転送する、ゲームストリーミングシステムのブロック図である。
図2】いくつかの実施形態に係る、ゲームレベル変更に応じてプレイヤー状態情報を転送する図1のゲームストリーミングシステムの一例を示すブロック図である。
図3】いくつかの実施形態に係る、図1のゲームストリーミングシステムのゲームプログラムに関連付けられるプレイヤー状態情報のブロック図である。
図4】いくつかの実施形態に係る、異なるゲームレベルに関連付けられるアセットを異なるサーバにプリロードする図1のゲームストリーミングシステムの一例を示すブロック図である。
図5】いくつかの実施形態に係る、ゲームレベル変更に応じて、同時に実行されるゲームインスタンス間でプレイヤー状態情報を転送する、ゲームストリーミングシステムの方法のフロー図である。
【発明を実施するための形態】
【0006】
詳細な説明
図1図5は、いくつかの実施形態に係る、ゲームストリーミングシステムにおけるレベル切り替え中のユーザ体験を改善するための技術を示す。ゲームストリーミングシステムは、ゲームプログラムの異なるインスタンスを同時に実行し、各インスタンスは、異なるサーバまたは異なるGPUのハードウェアリソース等の異なるローカルメモリを含む、ハードウェアリソースの異なるセットを採用する。各ゲームインスタンスは、対応するローカルメモリに、異なるゲームレベルのアセットをロードする。ゲームストリーミングシステムは、所与のゲームレベルを示すゲーム状態に基づいて、レンダリングされたフレームを、このゲームレベルに関連付けられるハードウェアリソースの第1のセットからクライアントデバイスにストリーミングし、レンダリングされたフレームは、仮想環境の一部分を示す。ゲームプログラムからの、新たなゲームレベルへのゲームレベル変更の指示に応じて、ゲームストリーミングシステムは、新たなゲームレベルに関連付けられるハードウェアリソースの第2のセットに、プレイヤー状態を転送し、ハードウェアリソースの第2のセットからクライアントデバイスへの、レンダリングされたフレームのストリーミングを開始する。これにより、ゲームストリーミングシステムは、ゲームフローが中断される時間を短縮または排除することで、ユーザ体験を改善する。
【0007】
一例によってさらに説明すると、いくつかの実施形態において、ゲームストリーミングシステムは、この例ではサーバAおよびサーバBと呼ぶ2つのサーバを含み、サーバAおよびサーバBの各々で、ゲームプログラムのインスタンスを同時に実行する。サーバAおよびBは、それぞれ、レベルAおよびレベルBと呼ぶ異なるゲームレベルのアセットを、アセットに迅速にアクセスしてフレームをストリーミングのためにレンダリングできるように、ローカルDRAMメモリにロードする。クライアントデバイス(たとえばコンピュータまたはビデオストリーミングデバイス)のユーザは、ゲームを開始し、最初にレベルAにアクセスする。したがって、ゲームストリーミングシステムは、サーバAで実行されるゲームインスタンスを採用することにより、レベルAに関連付けられる仮想環境を表す、レンダリングされたフレームを、サーバAのためにローカルメモリに保存されたアセットに基づいて、生成し、レンダリングされたフレームをサーバAからクライアントデバイスにストリーミングする。加えて、サーバAは、現在のゲームセッション中、ユーザのゲームとの対話に関する情報を表すプレイヤー状態情報を維持する。
【0008】
ゲームプログラムがレベルBへのレベル変更を開始することを要求するユーザの対話に応じて、ゲームストリーミングシステムは、プレイヤー状態をサーバBに転送する。サーバBにおけるゲームインスタンスは、サーバBのためにローカルメモリに保存されたアセットに基づく、レベルBに関連付けられる仮想環境を表すレンダリングされたフレームの生成を開始し、レンダリングされたフレームをサーバBからクライアントデバイスにストリーミングする。ゲームストリーミングシステムは、レンダリングされるフレームのソースの、サーバAからサーバBへの変更を同期させて、サーバの変更がクライアントデバイスのユーザに対してトランスペアレントになるようにする。さらに、サーバBは、レベルBに関連付けられるアセットを対応するローカルメモリにプリロードしたので、レベルBに関連付けられるレンダリングされたフレームの生成を比較的素早く開始することができる。これに対して、従来のシステムは、新たな各レベルのアセットを比較的遅いデータストア(たとえばハードドライブ)からロードしなければならないので、データストアからアセットがロードされている間、ユーザはゲームとの対話を一時停止することが求められる。よって、プレイヤー状態を、プリロードされたレベルアセットとともに、異なるゲームインスタンスに転送することにより、ゲームストリーミングシステムは、ゲームレベル変更に関連する時間を短縮し、それによってユーザ体験を改善する。
【0009】
図1は、いくつかの実施形態に係る、レンダリングされたゲームコンテンツをサーバのセット101からクライアントデバイス104にストリーミングし、ゲームレベル変更に応じて、同時に実行するゲームインスタンス間でプレイヤー状態情報を転送するように概ね構成された、ゲームストリーミングシステム100を示す。
【0010】
示されている例において、サーバのセット101およびクライアントデバイス104は、ネットワーク110を介して通信し、ネットワーク110は、1つ以上のルータ、サーバ、通信タワー(たとえばセルラー通信タワー)など、またはそれらの任意の組み合わせを介して、ビデオデータを含むデータを転送するように概ね構成された、パケット交換またはその他のネットワークである。したがって、さまざまな実施形態において、ネットワーク110は、ワイドエリアネットワーク(たとえばインターネット)、ローカルエリアネットワークなど、またはそれらの任意の組み合わせである。
【0011】
サーバのセット101およびクライアントデバイス104は、ストリーミングされるゲームセッションを共同で実現するように概ね構成され、双方向型ゲームコンテンツは、サーバのセット101からクライアントデバイス104にストリーミングされる。サーバのセット101は、示されているサーバ102および103等の複数のサーバを含む。サーバ102、103の各々は、ラックマウント型サーバ、クラスタサーバ(すなわちサーバデバイスのクラスタで実現されるサーバデバイス)、モバイルサーバデバイスなど、またはそれらの組み合わせ等の、本明細書でさらに説明する機能を実現する任意のタイプのコンピュータデバイスとすることができる。クライアントデバイス104は、ビデオフレームをユーザに対して表示することができ、かつユーザ入力を受けることができる、任意のコンピュータデバイスとすることができ、したがって、デスクトップまたはラップトップコンピュータ、デジタルメディアプレイヤー(たとえばストリーミングメディアプレイヤー)、ゲーム機、スマートフォン、タブレットなどとすることができる。
【0012】
ストリーミングされるゲームセッション中、クライアントデバイス104へのゲームコンテンツのストリーミングをサポートするために、サーバ102、103の各々は、中央処理装置(CPU)およびグラフィック処理装置(GPU)等の複数の処理装置を含む。CPUは、コンピュータプログラムの形態で編成された汎用命令セットを実行して、サーバに代わってタスクを実行するように概ね構成される、処理装置である。そのようなコンピュータプログラムの例は、オペレーティングシステム、仮想マシン、データセキュリティプログラム(たとえばデータ暗号化/復号化プログラム)、ウェブページ、データベースプログラムなどを含む。
【0013】
GPUは、CPUから受けたコマンドに基づいて、グラフィックおよびベクトル処理に関連付けられる動作を実行するように概ね構成される、処理装置である。たとえば、1つ以上の汎用プログラムを実行する過程で、CPUは、表示のためのグラフィックモデルを生成および操作するためのコマンドを生成し、このコマンドをGPUに提供する。それに応じて、GPUは、1つ以上の対応するグラフィック動作を実行することによってコマンドを実行し、それにより、グラフィックモデルを操作して、表示する1つ以上のフレームを生成する。いくつかの実施形態において、GPUによって生成されたフレームは、ディスプレイデバイスで表示する準備が整っている、レンダリングされたフレームである。
【0014】
ストリーミングされるゲームコンテンツの受信および表示をサポートするために、クライアントデバイス104は、CPUおよびGPU(図示せず)を含む。これらのモジュールの各々は、サーバ102、103の対応するモジュールに類似している。したがって、たとえば、クライアントデバイス104のCPUは、オペレーティングシステム、ウェブブラウザなどのうちの1つ以上の実行のように、クライアントデバイス104に代わって汎用命令を実行するように概ね構成される。いくつかの実施形態においてクライアントデバイス104はサーバ102、103と比較して比較的小さな計算能力を概ね有することが理解されるであろう。そのため、ゲームストリーミングシステム100は、サーバ102、103の計算能力を強化して、クライアントデバイス104が単独で生成できるものよりも高品質のゲームコンテンツをクライアントデバイス104にストリーミングする。
【0015】
動作時において、クライアントデバイス104で実行されるコンピュータプログラム(図示せず)を介して、たとえばウェブブラウザ、専用ゲームストリーミングプログラム、ビデオストリーミングサービスプログラムなどを介して、ユーザがゲームセッションを要求したことに応じて、クライアントデバイス104はゲームストリーミングセッションを開始する。ユーザ要求に応じて、クライアントデバイスは、ゲームセッション要求をネットワーク110を介してサーバ102に送信する。これに応じて、サーバ102は、ゲームプログラム109の実行を開始する。いくつかの実施形態において、サーバ102は、ゲームプログラムのライブラリのうちのいずれか1つを実行するように構成され、クライアントデバイス104によって提供される要求は、実行されるゲームプログラムのうちの特定の1つを示す。
【0016】
ゲームフローの低減された中断をサポートするために、サーバ102、103の各々は、ゲームセッション要求に応じて、それぞれインスタンス111および112で示される、ゲームプログラム109の別々のインスタンスの実行を開始する。いくつかの実施形態において、本明細書でさらに説明するように、インスタンス111および112の各々は、実行されるゲームプログラム109の同一の命令を含むが、異なるゲームレベルを実現するために異なるゲームアセットを採用する。特に、示されている例において、サーバ102、103の各々は、異なるゲームアセットを、たとえば異なるグラフィックオブジェクト、テクスチャ、オーディオファイルなどを採用して、異なるゲームレベルを実現するように指定されると仮定する。
【0017】
ユーザによるゲームプログラム109の開始に応じて、サーバ102、103は、それぞれインスタンス111および112を開始し、対応するゲームレベルのアセットをデータストアから、アセットに比較的速くアクセスすることができるローカルメモリ(図1には示されていない)にロードする。インスタンス111および112の各々は、現在のゲームセッションのためのゲームプログラムに関連付けられる初期ゲームレベルを決定する。いくつかの実施形態において、初期ゲームレベルは固定されたゲームレベルであってもよい。他の実施形態において、初期ゲームレベルは、ユーザによって示されてもよく、または保管ファイル等の保存されたゲーム状態情報によって示されてもよい。初期ゲームレベルに関連付けられるサーバは、対応するゲームインスタンスを実行して、クライアントデバイス104にストリーミングするためのフレームのセットを生成する。以下でさらに説明するように、他のサーバは、プレイヤー状態情報の転送を待つために一時停止状態に入ることができる。例示のためにサーバ102は初期ゲームレベルに関連付けられていると仮定する。
【0018】
実行中、インスタンス111は、ゲームのコンディションまたは状態を表すゲーム状態と呼ばれるデータの集まりを維持する。クライアントデバイス104のユーザは、入力デバイスを用いて入力データを提供する。入力デバイスは、キーボード、ゲームコントローラ、マイクロフォン、もしくは他の入力デバイス、またはそれらの任意の組み合わせとすることができる。クライアントデバイス104は、ネットワーク110を介して入力データをインスタンス111に伝達する。入力データに応じて、インスタンス111は、ゲームプログラム109によって実現される特定のゲームのルールに従いゲーム状態を修正する。
【0019】
インスタンス111は、ゲーム状態に基づき、かつ実現されるゲームのルールに従って、サーバ102のCPUおよびGPUを使用して、仮想環境、ゲームボード、選択画面、ヘッドアップディスプレイ(HUD:heads-up display)など、またはそれらの任意の組み合わせ等の、視覚的ゲーム情報を表す、レンダリングされたフレームを生成する。サーバ102は、ストリーミングされるフレーム115として示される、これらのレンダリングされたフレームを、クライアントデバイス104に伝達するためにネットワーク110に提供する。クライアントデバイス104は、ストリーミングされるフレーム115の少なくともサブセットを受信し、受信したフレームをディスプレイ(図示せず)に表示するためにGPUを使用する。このように、クライアントデバイス104は、視覚ゲーム情報をユーザに表示し、ユーザは、それに応じてゲームコントローラまたは他の入力デバイスを使用してさらなる入力データを提供し、その結果、ゲームプログラム109によって維持されるゲーム状態がさらに変更されそれに対応してフレームストリーム115のフレームが変更される。このようにして、クライアントデバイス104のユーザは、サーバ102で実行されるゲームをプレイするためにゲームプログラム109と対話する。
【0020】
ユーザがゲームをプレイする際、インスタンス111は、現在のゲームセッションに、またはクライアントデバイス104のユーザに、またはそれらの任意の組み合わせに、一意に関連付けられる、ゲーム状態の一側面を表す、プレイヤー状態108として示されるデータ構造(たとえばデータファイル)を維持する。したがって、プレイヤー状態108は、プレイヤースコア、ゲームキャラクタの前進または状態、ユーザによって収集または修正されたゲームアイテム、ゲームに関連付けられる非プレイヤーキャラクタの状態など、またはそれらの任意の組み合わせを、表すことができる。
【0021】
ゲームをプレイしている間、クライアントデバイスのユーザは、ゲームプログラム109に関連付けられるゲームレベルの変更を示す1つ以上の指定された方法で、ゲームインスタンス111と対話することができる。いくつかの実施形態において、異なるレベルは、ゲームプログラム109の設計者またはプログラマによって決定され、それ故に、ゲームレベル変更指示に応じて、プログラム自体によって識別される。ゲームレベル変更指示の例は、ユーザが、入力デバイスを介して、特定のゲームレベルを選択すること、指定された前進を示すゲームキャラクタの前進(たとえばゲームキャラクタが仮想環境の新たなまたは異なるセクションに移動すること)を選択することなどを含む。
【0022】
いくつかの実施形態において、ゲームレベル変更は、新たなまたは異なるゲームアセットがローカルメモリにロードされるべきであるとインスタンス111が判断したときに指示される。たとえば、インスタンス111は、ストリーミングされるフレーム115を生成するために必要なゲームアセットのマニフェストを保持することができ、かつ、ゲーム状態に基づいてマニフェストを更新することができる。マニフェストに一覧表示されたゲームアセットがローカルメモリに保存されていないという判断に応じて、インスタンス111はレベル変更を識別することができる。
【0023】
図1の例のために、ゲームレベル変更はサーバ103に関連付けられるレベルへの変更を示すものと仮定する。したがって、レベル変更を識別したことに応じて、ゲームインスタンス111は、プレイヤー状態108をサーバ103に転送する。いくつかの実施形態において、ゲームインスタンス111は、ネットワーク110、またはサーバのセット101を接続するローカルエリアネットワーク等のネットワークを介してプレイヤー状態108をサーバ103に伝達することにより、プレイヤー状態108を転送する。いくつかの実施形態において、ゲームインスタンス111は、プレイヤー状態108とともにレベル変更の指示を提供する。加えて、ゲームインスタンス111は、ゲームプログラム109に関連付けられるユーザ入力がサーバ103に向けられねばならないこと、およびゲームプログラム109に関連付けられるストリーミングされたフレームをクライアントデバイス104がサーバ103から受信しなければならないことを示す、コマンドまたは他の指示を、クライアントデバイス104に提供することができる。
【0024】
インスタンス112は、プレイヤー状態108を受けたことに応じてゲームの実行を開始する。特に、サーバ102に関して先に述べたやり方と同様に、インスタンス112は、ゲームのゲーム状態を維持し、クライアントデバイス104から提供された入力データに基づいてゲーム状態を修正し、入力データは、入力デバイスとのユーザの対話に基づく。インスタンス112は、ゲーム状態に基づき、かつ実現されるゲームのルールに従って、対応するローカルメモリに保存されたゲームアセットを使用する、サーバ103のCPUおよびGPUを使用して、レンダリングされたフレームを生成し、ストリーミングされるフレーム116として示される、これらのレンダリングされたフレームを、クライアントデバイス104に伝達するためにネットワーク110に提供する。クライアントデバイス104は、ストリーミングされるフレーム116の少なくともサブセットを受信し、受信したフレームをディスプレイに表示するためにGPUを使用する。このように、サーバ103におけるゲームインスタンス112は、ゲームインスタンス111がサーバ102で以前に行っていたゲームセッションを継続する。
【0025】
ゲームインスタンス112は、転送されたプレイヤー状態108を使用してゲームセッションを継続し、特に、転送されたプレイヤー状態を使用して、ゲーム状態全体を維持し、かつ、ストリーミングされるフレーム116を生成する。これは、ゲームプログラム109を実行するサーバの変更がクライアントデバイス104のユーザからは見えないことを保証する。すなわち、プレイヤー状態108の転送により、インスタンス111およびインスタンス112は、あたかもゲームプログラム109が単一のサーバ上でまたは他のハードウェアリソースのセット上で実行されているかのように、ゲームプログラム109を一括して実行することができる。インスタンス111および112の各々は、対応するサーバ(それぞれサーバ102および103)のハードウェアリソースを使用して、対応するゲームレベルを実現するが、ゲームプログラム109を実行する特定のハードウェアリソースの変更はクライアントデバイス104のユーザからは見えない。
【0026】
図1のゲームストリーミングシステム100は一例であり他の実施形態においてシステム100はサーバセット101内に追加のサーバを含み得ることが理解されるであろう。たとえば、いくつかの実施形態において、ゲームプログラム109は、N個の異なるゲームレベルを実現することができ、サーバのセット101はN個の異なるサーバを含み、各サーバはN個のゲームレベルのうちの異なる1つのレベルを実現するように割り当てられる。第1のレベルから第2のレベルへのゲームレベルの変更を識別したことに応じて、第1のレベルを実現するサーバは、第2のレベルに関連付けられるサーバを識別および選択し、プレイヤー状態108を第2のサーバに転送することができる。第2のサーバは、転送されたプレイヤー状態に基づいて、ゲームプログラム109のインスタンスを実行して第2のレベルを実現する。第2のレベルから第3のレベルへのゲームレベルの変更を識別したことに応じて、第2のサーバは、第3のレベルに関連付けられるサーバにプレイヤー状態を転送する。このようにして、ゲームストリーミングシステム100は、セット101のうちのサーバ間でプレイヤー状態108を転送して異なるゲームレベルを実現することで、レベルロード時間を短縮しゲームに対するユーザ体験を改善することができる。
【0027】
他の実施形態において、単一のサーバは、2つ以上のゲームレベルを実現することができるが、ハードウェアリソースの複数のセットを含み、ハードウェアリソースの各セットは、異なるゲームレベルを実現するように割り当てられる。たとえば、いくつかの実施形態において、単一のサーバは、N個のGPUを含み、各GPUは、ゲームプログラムに関連付けられるN個のレベルのうちの異なる1つのレベルに関連付けられるフレームを生成するように割り当てられる。ゲームプログラム109がレベル変更を示したことに応じて、サーバは、フレームを生成するGPUを、新たなレベルに割り当てられたGPUに変更する。
【0028】
いくつかの実施形態において、サーバ103は、プレイヤー状態108を受信する前に、対応するゲームレベルのアセットを、ローカルメモリよりも前にプリロードし、それによってストリーミングフレーム116のより高速のレンダリングをサポートする。説明すると、所与のゲームレベルのためのストリーミングフレーム116を生成するために、サーバ103は、ゲームオブジェクト、テクスチャなどを表すデータ構造等のゲームアセットを使用する。ストリーミングフレーム116のうちの1つ以上をレンダリングするために必要な特定のアセットは、プレイヤー状態108によって異なり得る。プレイヤー状態108を受信する前に、あるレベルのためのアセットをローカルメモリにプリロードすることによって、サーバ103は、それらのアセットのロード時間を短縮し、サーバ102からプレイヤー状態108を受信したことに応じて、プリロードされたアセットを使用してレンダリングを素早く開始し、それによってユーザ体験を改善することができる。
【0029】
図2は、いくつかの実施形態に係る、プレイヤー状態108を転送する図1のゲームストリーミングシステム100の例を示す。示されている例において、サーバ102は、ゲームプログラム109のインスタンス111を実行してゲームレベル220を実現する。特に、インスタンス111は、クライアントデバイス104から受信したユーザ入力によって修正されたゲーム状態に基づいて、かつゲームレベル220に関連付けられるゲームアセットに基づいて、ストリーミングフレーム115を生成することにより、ゲームレベル220を実現する。たとえば、いくつかの実施形態において、ゲーム状態は、ストリーミングのためのフレームを生成するために必要な特定のアセットを、たとえばゲームキャラクタが見ることができるかそうでなければ知覚できる仮想環境の一部分(たとえばゲームキャラクタが見ることができるグラフィックオブジェクトおよびテクスチャ)を表すアセットなどを示す。インスタンス111は、仮想世界のこの一部分を見えるように表すためにアセットを使用してフレームを生成し、ストリーミングフレーム115を介してこのフレームをクライアントデバイス104に提供する。
【0030】
指定された、ゲームとのユーザの対話に応じて、インスタンス111は、レベル変更指示225を決定する。いくつかの実施形態において、レベル変更指示225は、ゲームプログラム109がゲームレベルを変更することを示す、任意のユーザ入力または一連のユーザ入力である。たとえば、いくつかの実施形態において、レベル変更指示225は、インスタンス111によってユーザに提示されたゲームレベルのリストからのユーザ選択を示す、ユーザ入力または一連のユーザ入力である。他の実施形態において、レベル変更指示は、ゲームキャラクタが、ゲームレベル220に関連付けられる仮想環境の一部分から出て、ゲームレベル222で示される異なるゲームレベルに関連付けられる仮想環境の異なる一部分に入ったことを示す、ユーザ入力または一連のユーザ入力である。
【0031】
レベル変更指示225に応じて、インスタンス111は、プレイヤー状態118を、サーバ103で実行されるインスタンス112に転送することにより、レベル変更を開始する。加えて、インスタンス111は、後続のユーザ入力がサーバ103に向けられることになるという表示と、ゲーム109に関連付けられる後続のストリーミングされるフレームがサーバ103から受信されることになるという表示とをクライアントデバイス104に提供する。たとえば、場合によってはクライアントデバイス104で実行されているクライアントプログラム(図示せず)が、ゲームプログラム109へのインターフェイスを提供し、これは、現在のゲームレベルについてゲームプログラム109のインスタンスを実行しているサーバのネットワークアドレス(「ターゲットサーバアドレス」と呼ぶ)を保存することを含む。クライアントプログラムは、このネットワークアドレスを使用して、クライアントデバイス104で受信されたユーザ入力を誘導し、表示のためにストリーミングされたフレームを受信する。レベル変更指示225に応じて、インスタンス111は、サーバ103のネットワークアドレスをクライアントプログラムに提供し、クライアントプログラムは、受信したアドレスをターゲットサーバアドレスとして保存する。
【0032】
インスタンス112は、サーバ102からプレイヤー状態118を受信し、それに応じて、受信したプレイヤー状態118を使用してゲームレベル222の実現を開始する。いくつかの実施形態において、インスタンス112は、受信したプレイヤー状態118を組み込むためにパッチング技術を採用する。たとえば、いくつかの実施形態において、インスタンス111は、プレイヤー状態118をバイナリコードファイルとして提供し、インスタンス112は、プレイヤー状態118のバイナリコードをインスタンス112の指定された場所に挿入し、それにより、プレイヤー状態118を、ゲームプログラム109によって実現されるルールに従い、ストリーミングされるフレームを生成するために、使用できるようにする。他の実施形態において、インスタンス112は、プレイヤー状態118を保存すると予想されるメモリ位置へのポインタを含み、インスタンス112は、受信したプレイヤー状態108を指定されたメモリ位置に保存することによってプレイヤー状態108を組み込む。
【0033】
いくつかの実施形態において、ゲームストリーミングシステム100は、保存された基本状態に対するプレイヤー状態の変更のみを転送することにより、サーバまたは他のハードウェアリソース間で転送されるプレイヤー状態情報の量を削減する。いくつかの実施形態に係る例を図3に示す。示されている例において、プレイヤー状態108は、基本状態328と状態更新情報329とを含む。基本状態328は、ゲームプログラム109の特定のインスタンスによる修正なしの、プレイヤーの基本状態を表すプレイヤー状態情報を含む。たとえば、いくつかの実施形態において、ユーザがゲームプログラム109のゲームセッションを終了すると、ゲームプログラム109の現在実行中のインスタンス(たとえばインスタンス111)は、現在のプレイヤー状態を基本状態328として保存する。
【0034】
その後ユーザがクライアントデバイス104で別のゲームセッションを開始したことに応じて、セット101のうちの各サーバは、対応するゲームインスタンスをプリロードし、また、ゲームレベルをサーバで実現するためのアセットをローカルメモリにプリロードする。加えて、セット101のうちの各サーバは、基本状態328をローカルメモリにプリロードする。
【0035】
ストリーミングのためにレンダリングされたフレームを生成することを含むゲームプログラム109のインスタンスが実行されている間、インスタンスは、プレイヤー状態108に対する変更を識別し、これらの変更を示す情報を状態更新情報329として保存する。そのような変更の例は、プレイヤースコアに対する変更、ユーザに関連付けられるプレイヤーキャラクタの側面に対する変更(たとえばプレイヤーキャラクタの装備、プレイヤーキャラクタの属性および特性に対する変更、プレイヤーキャラクタの外観の見かけ上の変更)などを含む。
【0036】
レベル変更の識別に応じて、実行中のインスタンスは、プレイヤー状態108全体ではなく、状態更新情報329のみを転送する。たとえば、再び図2を参照すると、レベル変更指示225に応じて、インスタンス111は、状態更新情報329をインスタンス112に転送し、基本状態情報がサーバ103のローカルメモリにプリロードされているので、基本状態328は除外する。ゲームストリーミングシステム100は、プレイヤー状態108全体ではなく状態更新情報329のみを基本状態328とともに転送することにより、セット101のうちのサーバ間の通信オーバーヘッドを低減し、さらにレベルロード時間を短縮することができる。
【0037】
状態更新情報328の受信に応じて、インスタンス112は、ローカルメモリの基本状態情報328にアクセスし、基本状態情報328を修正して、状態更新情報によって示される変更を反映する。これにより、サーバ103におけるプレイヤー状態情報108は、インスタンス111がゲームレベル220を実現している間に生じたプレイヤー状態の変更を反映するように更新される。
【0038】
図4は、いくつかの実施形態に係る、対応するゲームレベルのためのアセットをプリロードするサーバ102および103を示すブロック図である。示されている実施形態において、サーバ102および103の各々は、ゲームプログラム109のためのゲームアセットを保存するデータストア428にアクセスすることができる。データストア428は、アクセスが比較的遅い比較的大きなデータストアであると仮定される。たとえば、いくつかの実施形態において、データストア428は、1つ以上のハードディスクドライブ、1つ以上のフラッシュメモリドライブなどのような、1つ以上の不揮発性メモリ(NVM)デバイス、またはそれらの任意の組み合わせである。示されている実施形態において、サーバ102および103の各々は同一のデータストア428にアクセスすることができるが、他の実施形態において、サーバ102および103の各々は別々のデータストアを含む。
【0039】
サーバ102および103の各々は、それぞれメモリ432およびメモリ433で示されるローカルメモリを含む。ローカルメモリ432および433は各々、データストア428よりも小さな全記憶空間を含むが、アクセスが比較的高速であると仮定される。そのため、たとえば、いくつかの実施形態において、ローカルメモリ432および433は、データストア428のNVMデバイスよりも迅速にアクセス可能なダイナミックランダムアクセスメモリ(DRAM)である。
【0040】
クライアントデバイス104のユーザがゲームプログラム109のゲームセッションを開始したことに応じて、サーバ102および103の各々は、対応するゲームインスタンス(それぞれインスタンス111および112)の実行を開始する。インスタンス111および112の各々は、データストア428からゲームアセットを取り出して、サーバに割り当てられたゲームレベルを実現する。そのため、インスタンス111は、ゲームアセット430をデータストア428からメモリ432にロードする。ゲームレベル220の実現中に、インスタンス111は、メモリ432に保存されたゲームアセット430にアクセスして、ストリーミングフレーム115を生成する。同様に、インスタンス112は、ゲームアセット431をデータストア428からメモリ433にロードする。ゲームレベル221の実現中に、インスタンス112は、メモリ433に保存されたゲームアセット431にアクセスして、ストリーミングフレーム116を生成する。
【0041】
いくつかの実施形態において、インスタンス111および112の各々は、対応するゲームレベルを実現する前に(たとえば、クライアントデバイス104が対応するサーバにフレームを要求する前に、またはクライアントデバイス104にストリーミングするためのフレームを生成する前に)アセットをロードすることによって、ゲームアセット430およびゲームアセット431をそれぞれメモリ432およびメモリ433にプリロードする。たとえば、インスタンス112は、たとえばインスタンス111がゲームレベル220を実現するのと同時にまたはその前にプレイヤー状態108をロードすることによってゲームレベル221を実現する前に、プレイヤー状態108をメモリ433にプリロードすることができる。プレイヤー状態108をプリロードすることによって、インスタンス112は、プレイヤー状態108の受信に応じてゲームレベル221を迅速に実現することができ、それによって、レベル変更に関連付けられるゲームフローの中断を低減する。
【0042】
図5は、いくつかの実施形態に係る、ゲームプログラムの1つのインスタンスからゲームプログラムの別のインスタンスにプレイヤー状態を転送する方法500のフロー図を示す。説明のために、方法500を、図1のゲームストリーミングシステム100における実装形態の例との関連で説明する。ブロック502において、クライアントデバイス104のユーザは、指定された入力または入力シーケンスをクライアントデバイス104に入力することによってゲームセッションを開始する。これに応じて、クライアントデバイス104は、ネットワーク110を介して、セット101のサーバのうちの指定されたサーバに、ゲーム開始要求を送信する。この例のために、クライアントデバイス104がゲーム開始要求をサーバ102に送信すると仮定する。
【0043】
ゲーム開始要求に応じて、サーバ102のオペレーティングシステムは、ゲームプログラム109のインスタンス111の実行を開始する。この開始に応じて、インスタンス111は、セット101の他のサーバに、ゲームプログラム109のそれら自身のインスタンスの実行を開始することを求める要求を送信する。たとえば、インスタンス111はサーバ103に要求を送信し、サーバ103はこれに応じてゲームプログラム109のインスタンス112の実行を開始する。インスタンス111によって送信される各要求は、対応するインスタンスによって実現されるべきゲームレベルを示す。ブロック502において、実行されている各インスタンスは、このインスタンスの割り当てられたレベルのためのアセットを、データストア428から対応するサーバのローカルメモリにロードする。
【0044】
ブロック504において、上述のように、現在のゲームセッションの初期レベルのためのゲームインスタンスは、ユーザ入力およびゲーム状態に応じて、ストリーミングのためにレンダリングされたフレームを生成することにより、初期レベルを実現する。ゲームインスタンスは、サーバのローカルメモリに保存されたアセットを使用してレベルを実現する。ブロック506において、現在のレベルを実現する過程で、サーバはプレイヤー状態108を維持し、これは、ゲームプログラム109によって実現されるゲームのルールが義務付けるプレイヤー状態に対する任意の修正を行うことを含む。
【0045】
ブロック508において、現在のレベルを実現するサーバは、レベル変更を示すゲーム状態をもたらす入力をユーザがクライアントデバイス104に入力すること等による、レベル変更の指示を、受信したか否かを判断する。レベル変更が指示されない場合、この方法フローはブロック504に戻り、サーバはゲームプログラム109の現在のレベルの実現を継続する。
【0046】
この方法は、ブロック508におけるレベル変更の指示に応じて、ブロック510に進み、現在のサーバは、レベル変更によって示されるターゲットレベル(すなわちレベル変更の結果実現されることになるレベル)を決定する。現在のサーバは、ターゲットレベルを実現するために割り当てられるサーバ(説明のためにターゲットサーバと呼ぶ)を識別し、プレイヤー状態108をターゲットサーバに送信する。ターゲットサーバは、たとえば受信したプレイヤー状態をゲームインスタンスにパッチングすること、プレイヤー状態を指定されたメモリアドレスに保存することなどにより、受信したプレイヤー状態を、ターゲットレベルの実現に使用するために準備する。この方法は、ブロック510に戻り、ターゲットサーバのインスタンスは、受信したプレイヤー状態と、ターゲットサーバのローカルメモリに保存されたゲームアセットとを使用して、ターゲットレベルを実現する。
【0047】
第1の局面において、方法は、ゲームプログラムの第1のインスタンスを、プレイヤー状態に基づいて実行することにより、クライアントデバイスにストリーミングするための、レンダリングされたフレームの第1のセットを生成するステップと、ゲームプログラムの第2のインスタンスが使用する、ゲームプログラムに関連付けられるゲームアセットの第1のセットをプリロードするステップと、ゲームプログラムに対するゲームレベル変更の指示に応じて、プレイヤー状態の少なくとも一部分を、ゲームプログラムの第2のインスタンスに転送するステップと、ゲームプログラムの第2のインスタンスを、プリロードされた第1のアセットに基づいて、かつ、プレイヤー状態の転送された一部分に基づいて、実行することにより、クライアントデバイスにストリーミングするための、レンダリングされたフレームの第2のセットを生成するステップとを含む。
【0048】
第1の局面の一実施形態において、プレイヤー状態は、基本状態と基本状態に対する変更とを含み、基本状態に対する変更は、ゲームプログラムの第1のインスタンスの実行に基づく。ある具体的な実施形態において、この方法の、プレイヤー状態の少なくとも一部分を転送するステップは、基本状態に対する変更を転送し、基本状態を転送から除外することを含む。より具体的な実施形態において、この方法は、ゲームレベル変更の指示に応じて、ゲームプログラムの第2のインスタンスに基本状態をロードするステップを含む。もう1つの具体的な実施形態において、この方法は、ゲームレベル変更の指示の前に、ゲームプログラムの第2のインスタンスに基本状態をロードするステップを含む。
【0049】
第1の局面のさらに他の実施形態において、この方法の、第2のゲームインスタンスを実行することは、ゲームアセットの第1のセットをデータストアから第1のメモリにプリロードすることを含み、第1のゲームインスタンスを実行することは、ゲームアセットの第2のセットをデータストアから第2のメモリにロードすることを含み、ゲームアセットの第2のセットはゲームアセットの第1のセットと異なる。ある具体的な実施形態において、この方法の、ゲームアセットの第2のセットをロードすることは、ゲームアセットの第2のセットをプリロードすることを含む。もう1つの実施形態において、この方法の、ゲームプログラムの第1のインスタンスを実行することは、第1のグラフィック処理装置(GPU)において、レンダリングされたフレームの第1のセットを生成することを含み、ゲームプログラムの第2のインスタンスを実行することは、第1のGPUと異なる第2のGPUにおいて、レンダリングされたフレームの第2のセットを生成することを含む。さらにもう1つの実施形態において、この方法の、ゲームプログラムの第1のインスタンスを実行することは、第1のサーバにおいて、レンダリングされたフレームの第1のセットを生成することを含み、ゲームプログラムの第2のインスタンスを実行することは、第1のサーバと異なる第2のサーバにおいて、レンダリングされたフレームの第2のセットを生成することを含む。
【0050】
第2の局面において、方法は、ゲームプログラムの第1のインスタンスを実行することにより、クライアントデバイスにストリーミングするための、レンダリングされたフレームの第1のセットを生成する間に、ゲームプログラムに関連付けられるプレイヤー状態に対する第1の変更を識別するステップと、ゲームプログラムに対する第1のゲームレベル変更の指示に応じて、識別したプレイヤー状態に対する第1の変更を示す第1の変更ファイルを、ゲームプログラムの第2のインスタンスに転送するステップと、ゲームプログラムの第2のインスタンスを、転送した第1の変更ファイルに基づいて実行することにより、クライアントデバイスにストリーミングするための、レンダリングされたフレームの第2のセットを生成するステップとを含む。
【0051】
第2の局面の一実施形態において、この方法は、ゲームプログラムの第2のインスタンスを実行する間に、プレイヤー状態に対する第2の変更を識別するステップと、ゲームプログラムに対する第2のゲームレベル変更の指示に応じて、識別したプレイヤー状態に対する第2の変更を示す第2の変更ファイルを、ゲームプログラムの第3のインスタンスに転送するステップと、ゲームプログラムの第3のインスタンスを、転送した第2の変更ファイルに基づいて実行することにより、クライアントデバイスにストリーミングするための、レンダリングされたフレームの第3のセットを生成するステップとを含む。
【0052】
第3の局面において、非一時的なコンピュータ読取可能媒体は実行可能命令のセットを実現することを含み得るものであり、実行可能命令のセットは、少なくとも1つのプロセッサを操作することにより、ゲームプログラムの第1のインスタンスを、プレイヤー状態に基づいて実行することにより、クライアントデバイスにストリーミングするための、レンダリングされたフレームの第1のセットを生成し、ゲームプログラムの第2のインスタンスが使用する、ゲームプログラムに関連付けられるゲームアセットの第1のセットをプリロードし、ゲームプログラムに対するゲームレベル変更の指示に応じて、プレイヤー状態の少なくとも一部分を、ゲームプログラムの第2のインスタンスに転送し、ゲームプログラムの第2のインスタンスを、プリロードされた第1のアセットに基づいて、かつ、プレイヤー状態の転送された一部分に基づいて、実行することにより、クライアントデバイスにストリーミングするための、レンダリングされたフレームの第2のセットを生成する。
【0053】
第3の局面の一実施形態において、コンピュータ読取可能媒体の、プレイヤー状態は、基本状態と基本状態に対する変更とを含み、基本状態に対する変更は、ゲームプログラムの第1のインスタンスの実行に基づく。ある具体的な実施形態において、コンピュータ読取可能媒体の、プレイヤー状態の少なくとも一部分を転送することは、基本状態に対する変更を転送し、基本状態を転送から除外することを含む。より具体的なある実施形態において、コンピュータ読取可能媒体の、実行可能命令のセットは、ゲームレベル変更の指示に応じて、ゲームプログラムの第2のインスタンスに基本状態をロードするための命令を含む。さらに他の実施形態において、コンピュータ読取可能媒体の、実行可能命令のセットは、ゲームレベル変更の指示の前に、ゲームプログラムの第2のインスタンスに基本状態をロードするための命令をさらに含む。
【0054】
第3の局面の別の実施形態において、コンピュータ読取可能媒体の、第2のゲームインスタンスを実行することは、ゲームアセットの第1のセットをデータストアから第1のメモリにプリロードすることを含み、第1のゲームインスタンスを実行することは、ゲームアセットの第2のセットをデータストアから第2のメモリにロードすることを含み、ゲームアセットの第2のセットはゲームアセットの第1のセットと異なる。ある具体的な実施形態において、コンピュータ読取可能媒体の、ゲームアセットの第2のセットをロードすることは、ゲームアセットの第2のセットをプリロードすることを含む。別の実施形態において、コンピュータ読取可能媒体の、ゲームプログラムの第1のインスタンスを実行することは、第1のグラフィック処理装置(GPU)において、レンダリングされたフレームの第1のセットを生成することを含み、ゲームプログラムの第2のインスタンスを実行することは、第1のGPUと異なる第2のGPUにおいて、レンダリングされたフレームの第2のセットを生成することを含む。さらに別の実施形態において、コンピュータ読取可能媒体の、ゲームプログラムの第1のインスタンスを実行することは、第1のサーバにおいて、レンダリングされたフレームの第1のセットを生成することを含み、ゲームプログラムの第2のインスタンスを実行することは、第1のサーバと異なる第2のサーバにおいて、レンダリングされたフレームの第2のセットを生成することを含む。
【0055】
第1の局面において、方法は、ゲームプログラムの第1のインスタンスを、プレイヤー状態に基づいて実行することにより、クライアントデバイスにストリーミングするための、レンダリングされたフレームの第1のセットを生成するステップと、ゲームプログラムの第2のインスタンスが使用する、ゲームプログラムに関連付けられるゲームアセットの第1のセットをプリロードするステップと、ゲームプログラムに対するゲームレベル変更の指示に応じて、プレイヤー状態の少なくとも一部分を、ゲームプログラムの第2のインスタンスに転送するステップと、ゲームプログラムの第2のインスタンスを、プリロードされた第1のアセットに基づいて、かつ、プレイヤー状態の転送された一部分に基づいて、実行することにより、クライアントデバイスにストリーミングするための、レンダリングされたフレームの第2のセットを生成するステップとを含む。
【0056】
第1の局面の一実施形態において、プレイヤー状態は、基本状態と基本状態に対する変更とを含み、基本状態に対する変更は、ゲームプログラムの第1のインスタンスの実行に基づく。ある具体的な実施形態において、この方法の、プレイヤー状態の少なくとも一部分を転送するステップは、基本状態に対する変更を転送し、基本状態を転送から除外することを含む。より具体的な実施形態において、この方法は、ゲームレベル変更の指示に応じて、ゲームプログラムの第2のインスタンスに基本状態をロードするステップを含む。もう1つの具体的な実施形態において、この方法は、ゲームレベル変更の指示の前に、ゲームプログラムの第2のインスタンスに基本状態をロードするステップを含む。
【0057】
第1の局面のさらに他の実施形態において、この方法の、第2のゲームインスタンスを実行することは、ゲームアセットの第1のセットをデータストアから第1のメモリにプリロードすることを含み、第1のゲームインスタンスを実行することは、ゲームアセットの第2のセットをデータストアから第2のメモリにロードすることを含み、ゲームアセットの第2のセットはゲームアセットの第1のセットと異なる。ある具体的な実施形態において、この方法の、ゲームアセットの第2のセットをロードすることは、ゲームアセットの第2のセットをプリロードすることを含む。もう1つの実施形態において、この方法の、ゲームプログラムの第1のインスタンスを実行することは、第1のグラフィック処理装置(GPU)において、レンダリングされたフレームの第1のセットを生成することを含み、ゲームプログラムの第2のインスタンスを実行することは、第1のGPUと異なる第2のGPUにおいて、レンダリングされたフレームの第2のセットを生成することを含む。さらにもう1つの実施形態において、この方法の、ゲームプログラムの第1のインスタンスを実行することは、第1のサーバにおいて、レンダリングされたフレームの第1のセットを生成することを含み、ゲームプログラムの第2のインスタンスを実行することは、第1のサーバと異なる第2のサーバにおいて、レンダリングされたフレームの第2のセットを生成することを含む。
【0058】
第2の局面において、方法は、ゲームプログラムの第1のインスタンスを実行することにより、クライアントデバイスにストリーミングするための、レンダリングされたフレームの第1のセットを生成する間に、ゲームプログラムに関連付けられるプレイヤー状態に対する第1の変更を識別するステップと、ゲームプログラムに対する第1のゲームレベル変更の指示に応じて、識別したプレイヤー状態に対する第1の変更を示す第1の変更ファイルを、ゲームプログラムの第2のインスタンスに転送するステップと、ゲームプログラムの第2のインスタンスを、転送した第1の変更ファイルに基づいて実行することにより、クライアントデバイスにストリーミングするための、レンダリングされたフレームの第2のセットを生成するステップとを含む。
【0059】
第2の局面の一実施形態において、この方法は、ゲームプログラムの第2のインスタンスを実行する間に、プレイヤー状態に対する第2の変更を識別するステップと、ゲームプログラムに対する第2のゲームレベル変更の指示に応じて、識別したプレイヤー状態に対する第2の変更を示す第2の変更ファイルを、ゲームプログラムの第3のインスタンスに転送するステップと、ゲームプログラムの第3のインスタンスを、転送した第2の変更ファイルに基づいて実行することにより、クライアントデバイスにストリーミングするための、レンダリングされたフレームの第3のセットを生成するステップとを含む。
【0060】
第3の局面において、非一時的なコンピュータ読取可能媒体は実行可能命令のセットを実現することを含み得るものであり、実行可能命令のセットは、少なくとも1つのプロセッサを操作することにより、ゲームプログラムの第1のインスタンスを、プレイヤー状態に基づいて実行することにより、クライアントデバイスにストリーミングするための、レンダリングされたフレームの第1のセットを生成し、ゲームプログラムの第2のインスタンスが使用する、ゲームプログラムに関連付けられるゲームアセットの第1のセットをプリロードし、ゲームプログラムに対するゲームレベル変更の指示に応じて、プレイヤー状態の少なくとも一部分を、ゲームプログラムの第2のインスタンスに転送し、ゲームプログラムの第2のインスタンスを、プリロードされた第1のアセットに基づいて、かつ、プレイヤー状態の転送された一部分に基づいて、実行することにより、クライアントデバイスにストリーミングするための、レンダリングされたフレームの第2のセットを生成する。
【0061】
第3の局面の一実施形態において、コンピュータ読取可能媒体の、プレイヤー状態は、基本状態と基本状態に対する変更とを含み、基本状態に対する変更は、ゲームプログラムの第1のインスタンスの実行に基づく。ある具体的な実施形態において、コンピュータ読取可能媒体の、プレイヤー状態の少なくとも一部分を転送することは、基本状態に対する変更を転送し、基本状態を転送から除外することを含む。より具体的なある実施形態において、コンピュータ読取可能媒体の、実行可能命令のセットは、ゲームレベル変更の指示に応じて、ゲームプログラムの第2のインスタンスに基本状態をロードするための命令を含む。さらに他の実施形態において、コンピュータ読取可能媒体の、実行可能命令のセットは、ゲームレベル変更の指示の前に、ゲームプログラムの第2のインスタンスに基本状態をロードするための命令をさらに含む。
【0062】
第3の局面の別の実施形態において、コンピュータ読取可能媒体の、第2のゲームインスタンスを実行することは、ゲームアセットの第1のセットをデータストアから第1のメモリにプリロードすることを含み、第1のゲームインスタンスを実行することは、ゲームアセットの第2のセットをデータストアから第2のメモリにロードすることを含み、ゲームアセットの第2のセットはゲームアセットの第1のセットと異なる。ある具体的な実施形態において、コンピュータ読取可能媒体の、ゲームアセットの第2のセットをロードすることは、ゲームアセットの第2のセットをプリロードすることを含む。別の実施形態において、コンピュータ読取可能媒体の、ゲームプログラムの第1のインスタンスを実行することは、第1のグラフィック処理装置(GPU)において、レンダリングされたフレームの第1のセットを生成することを含み、ゲームプログラムの第2のインスタンスを実行することは、第1のGPUと異なる第2のGPUにおいて、レンダリングされたフレームの第2のセットを生成することを含む。さらに別の実施形態において、コンピュータ読取可能媒体の、ゲームプログラムの第1のインスタンスを実行することは、第1のサーバにおいて、レンダリングされたフレームの第1のセットを生成することを含み、ゲームプログラムの第2のインスタンスを実行することは、第1のサーバと異なる第2のサーバにおいて、レンダリングされたフレームの第2のセットを生成することを含む。
【0063】
いくつかの実施形態において、上記技術のいくつかの側面は、ソフトウェアを実行する処理システムの1つ以上のプロセッサによって実現されてもよい。ソフトウェアは、非一時的なコンピュータ読取可能記憶媒体に格納されたまたはそうでなければ有形で実現された、実行可能命令の1つ以上のセットを含む。ソフトウェアは、1つ以上のプロセッサによって実行されると、上記技術の1つ以上の側面を実行するように1つ以上のプロセッサを操作する命令および何らかのデータを含み得る。非一時的なコンピュータ読取可能記憶媒体は、たとえば、磁気または光ディスク記憶装置、フラッシュメモリ、キャッシュ、ランダムアクセスメモリ(RAM)または他の(1つまたは複数の)不揮発性メモリデバイス等のソリッドステート記憶装置などを、含み得る。非一時的なコンピュータ読取可能記憶媒体に格納された実行可能命令は、ソースコード、アセンブリ言語コード、オブジェクトコード、または1つ以上のプロセッサによって解釈されるかそうでなければ実行可能な他の命令フォーマットであってもよい。
【0064】
コンピュータ読取可能記憶媒体は、命令および/またはデータをコンピュータシステムに提供するために使用中にコンピュータシステムによってアクセス可能な任意の記憶媒体または記憶媒体の組み合わせを含み得る。そのような記憶媒体は、光学媒体(たとえばコンパクトディスク(CD)、デジタル多用途ディスク(DVD)、ブルーレイ(登録商標)ディスク)、磁気媒体(たとえばフロッピー(登録商標)ディスク、磁気テープ、または磁気ハードドライブ)、揮発性メモリ(たとえばランダムアクセスメモリ(RAM)またはキャッシュ)、不揮発性メモリ(たとえば読出専用メモリ(ROM)またはフラッシュメモリ)、またはマイクロエレクトロメカニカルシステム(MEMS:microelectromechanical systems)ベースの記憶媒体を含み得るが、それらに限定されない。コンピュータ読取可能記憶媒体は、コンピューティングシステム(たとえばシステムRAMまたはROM)に埋め込まれてもよく、コンピューティングシステム(たとえば磁気ハードドライブ)に固定的に装着されてもよく、コンピューティングシステム(たとえば光ディスクまたはユニバーサルシリアルバス(USB)ベースのフラッシュメモリ)に取り外し可能に装着されてもよく、または有線もしくは無線ネットワーク(たとえばネットワークアクセス可能ストレージ(NAS:network accessible storage))を介してコンピュータシステムに結合されてもよい。
【0065】
一般的な説明における上記アクティビティまたは要素のすべてが必要な訳ではなく、特定のアクティビティまたはデバイスの一部が必要ではない場合があり、記載されているものに加えて1つ以上のさらに他のアクティビティが実行されてもよくまたは要素が含まれてもよいことに、注意されたい。さらに、アクティビティが列挙される順序は、必ずしもそれらが実行される順序ではない。また、概念は、特定の実施形態を参照して説明されている。しかしながら、当業者は、以下の請求項に記載される本開示の範囲から逸脱することなく各種修正および変更を行い得ることを理解する。したがって、明細書および図面は、限定的な意味ではなく例示されたものとみなされる必要があり、すべてのそのような修正は、本開示の範囲に含まれることが意図される。
【0066】
利益、その他の利点、および問題に対する解決策は、具体的な実施形態に関して先に述べた通りである。しかしながら、上記利益、利点、問題に対する解決策、および、何らかの利益、利点、または解決策をもたらし得るもしくはより顕著なものにし得るどの特徴も、請求項のうちのいずれかまたはすべての、重要な、必要な、または必須の特徴として解釈されてはならない。加えて、開示されている主題は、本明細書における教示の利益を享受する当業者には明白である、異なるが同等の態様で、修正および実施され得るので、開示された上記具体的な実施形態は例示にすぎない。以下の請求項に記載されているもの以外の、本明細書に示される構造または設計の詳細に対する限定は意図されていない。したがって、開示された上記具体的な実施形態は、変更または修正されてもよく、すべてのそのような変形が、開示されている主題の範囲に含まれると考えられることは、明らかである。よって、本明細書において求める保護は、以下の請求項に記載されている通りである。
図1
図2
図3
図4
図5