(57)【要約】【解決手段】コンピュータシステムは、プロセッサによって動作されるコンピュータアプリケーションと関連付けられた論理空間に対応するベースＷＡＤをそれのメモリの中にロードし得る。ベースＷＡＤは、論理空間と一意に関連付けられたデータを含有する。活動のゼロ以上の局面が、アプリケーションの動作の間に論理空間において行われる。局面は、ベースＷＡＤと一意に関連付けられる。ベースＷＡＤにおけるデータは、局面のそれぞれについてロードされたままである。各局面について、システムは、異なる組のゼロ以上のサブＷＡＤをメモリの中にロードする。各局面は、異なる対応する組のゼロ以上のサブｗａｄを有する。各サブＷＡＤは、対応する局面と関連付けられたデータを含有する。システムは、ベースＷＡＤにおけるデータおよび所与の局面に対応するサブＷＡＤの組におけるデータを使用して所与の局面についての活動を管理する。【選択図】図１
2014534849.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサおよびメモリを有するコンピュータシステムにおけるデータ管理のための方法であって、
ａ）前記コンピュータシステムを用いて、前記プロセッサによって動作しているコンピュータアプリケーションと関連付けられた論理空間に対応するベースＷＡＤであって、前記論理空間と一意に関連付けられた１組のデータを含有するベースＷＡＤを前記メモリの中にロードすることであって、前記コンピュータアプリケーションの動作の間に前記論理空間において行われる活動のゼロ以上の局面があり、前記ゼロ以上の局面は前記ベースＷＡＤと一意に関連付けられ、前記ベースＷＡＤにおける前記１組のデータは、前記ゼロ以上の局面のそれぞれについてロードされたままである、当該ロードすることと、
ｂ）前記コンピュータシステムを用いて、前記ゼロ以上の局面の各局面について、異なる組のゼロ以上のサブＷＡＤを前記メモリの中にロードすることであって、それによって、ゼロ以上の組のサブＷＡＤがあり、各サブＷＡＤは、前記ゼロ以上の局面の対応する局面と関連付けられたデータを含有する、当該ロードすることと、
ｃ）前記コンピュータシステムを用いて、前記ベースＷＡＤにおける共通データおよび所与の局面に対応する前記ゼロ以上の組のサブＷＡＤにおける前記データの組を使用して前記ゼロ以上の局面の前記所与の局面についての前記活動を管理することと、を含み、
各局面は、対応する組のゼロ以上のサブｗａｄを有し、
前記コンピュータシステムは、前記論理空間にアクセスできる１つ以上の他のコンピュータシステムと通信するように構成され、前記コンピュータシステムは、前記論理空間のための制御マシンとして働くように構成され、前記制御マシンは、前記ゼロ以上の局面の間の局面の変化を排他的に制御する、方法。
【請求項２】
前記コンピュータシステムを用いて、前記ゼロ以上の局面は２つ以上の局面を含み、当該方法は、前記２つ以上の局面の現在のまたは後の局面に必要ではない前記２つ以上の局面の前の局面と関連付けられた１つ以上のサブＷＡＤをアンロードすることを更に含む、請求項１に記載の方法。
【請求項３】
前記現在の局面または後の局面に必要ではない前記１つ以上のサブＷＡＤをアンロードすることは、必要ではない前記１つ以上のサブＷＡＤと関連付けられた１つ以上のアセットについての現在の状態を保存することを含む、請求項２に記載の方法。
【請求項４】
前記論理空間は、複数の関連した論理空間の１つであり、前記複数における他の論理空間のそれぞれは、ベースＷＡＤと関連付けられており、それによって、複数のベースＷＡＤ、ゼロ以上の局面および１つ以上の対応する組のサブＷＡＤがある、請求項１に記載の方法。
【請求項５】
所与のベースＷＡＤと関連付けられたサブＷＡＤのそれぞれは、いかなる他のベースＷＡＤとも共有されない、請求項４に記載の方法。
【請求項６】
前記複数のベースＷＡＤのそれぞれは、関連付けられた同じゼロではない有限数の局面を有する、請求項４に記載の方法。
【請求項７】
前記複数の１つ以上のベースＷＡＤについての１つ以上の局面について、対応する組のサブＷＡＤは空の組である、請求項６に記載の方法。
【請求項８】
前記複数の前記１つ以上のベースＷＡＤについての１つ以上の他の局面について、対応する組のサブＷＡＤは、空ではない組である、請求項７に記載の方法。
【請求項９】
前記コンピュータアプリケーションはビデオゲームアプリケーションである、請求項１に記載の方法。
【請求項１０】
前記論理空間は、前記ビデオゲーム内のレベルである、請求項９に記載の方法。
【請求項１１】
前記論理空間は、前記ビデオゲーム内の仮想位置である、請求項９に記載の方法。
【請求項１２】
前記ベースＷＡＤを前記メモリからアンロードすることを更に含む、請求項１に記載の方法。
【請求項１３】
前記ベースＷＡＤをアンロードすることは、ゼロ以上の局面の現在の局面を保存することを含む、請求項１２に記載の方法。
【請求項１４】
前記コンピュータシステムは、ピアツーピアネットワークにおいて１つ以上の他のコンピュータシステムに接続される、請求項１に記載の方法。
【請求項１５】
前記論理空間と関連付けられた前記ベースＷＡＤは、前記１つ以上の他のコンピュータシステムのいずれのためにもメモリの中にロードされない、請求項１４に記載の方法。
【請求項１６】
前記１つ以上の他のコンピュータシステムは、前記コンピュータシステムによって決定された前記局面に従う、請求項１４に記載の方法。
【請求項１７】
前記１つ以上の他のコンピュータシステムのうちの異なる１つはメモリを含み、異なる論理空間のためのベースＷＡＤがそのメモリの中にロードされ、前記１つ以上の他のコンピュータシステムの前記異なる１つは、前記異なる論理空間のための制御マシンとして働くように構成される、請求項１４に記載の方法。
【請求項１８】
コンピュータシステムであって、
プロセッサと、
メモリと、
前記メモリ内に記憶され、前記プロセッサによって実行可能な１つ以上のコンピュータで実行可能な命令とを含み、
前記命令は、前記プロセッサによって実行されるときに前記コンピュータシステムにおけるデータ管理のための方法を実施するように構成され、
前記方法は、
ａ）前記プロセッサによって動作しているコンピュータアプリケーションと関連付けられた論理空間に対応するベースＷＡＤであって、前記論理空間と一意に関連付けられた１組のデータを含有するベースＷＡＤを前記メモリの中にロードすることであって、前記コンピュータアプリケーションの動作の間に前記論理空間内で行われる活動のゼロ以上の局面があり、前記ゼロ以上の局面は、前記ベースＷＡＤと一意に関連付けられ、前記ベースＷＡＤにおける前記組のデータは、前記ゼロ以上の局面のそれぞれについてロードされたままである、当該ロードすることと、
ｂ）前記ゼロ以上の局面の各局面について、前記メモリの中に異なる組の１つ以上のサブＷＡＤをロードすることであって、それによって、１つ以上の組のサブＷＡＤがあり、各サブＷＡＤは、前記ゼロ以上の局面の対応する局面と関連付けられたデータを含有する、当該ロードすることと、
ｃ）前記ベースＷＡＤにおける共通データおよび所与の局面に対応する前記ゼロ以上のサブＷＡＤの前記組における前記データの組を使用して、前記ゼロ以上の局面の前記所与の局面についての前記活動を管理することと、を含む、当該１つ以上のコンピュータで実行可能な命令と、を備え、
各局面は、対応する組のゼロ以上のサブｗａｄを有し、
前記コンピュータシステムは、前記論理空間にアクセスできる１つ以上の他のコンピュータシステムと通信するように構成され、前記コンピュータシステムは、前記ゼロ以上の局面の間の局面の変化を排他的に制御するように構成される、コンピュータシステム。
【請求項１９】
媒体の中に具体化されたコンピュータで実行可能な命令を有する非一時的なコンピュータで読み取り可能な媒体であって、
前記コンピュータで実行可能な命令は、プロセッサおよびメモリを有するコンピュータシステムにおけるデータ管理のための方法を実施するように構成され、
前記方法は、
ａ）前記コンピュータシステムを用いて、前記プロセッサによって動作しているコンピュータアプリケーションと関連付けられた論理空間に対応するベースＷＡＤであって、前記論理空間と一意に関連付けられた１組のデータを含有するベースＷＡＤを前記メモリの中にロードすることであって、前記コンピュータアプリケーションの動作の間に前記論理空間において行われる活動のゼロ以上の局面があり、前記ゼロ以上の局面は前記ベースＷＡＤと一意に関連付けられ、前記ベースＷＡＤにおける前記１組のデータは、前記ゼロ以上の局面のそれぞれについてロードされたままである、当該ロードすることと、
ｂ）前記コンピュータシステムを用いて、前記ゼロ以上の局面の各局面について、異なる組のゼロ以上のサブＷＡＤを前記メモリの中にロードすることであって、それによって、ゼロ以上の組のサブＷＡＤがあり、各サブＷＡＤは、前記ゼロ以上の局面の対応する局面と関連付けられたデータを含有する、当該ロードすることと、
ｃ）前記コンピュータシステムを用いて、前記ベースＷＡＤにおける共通データおよび所与の局面に対応する前記ゼロ以上の組のサブＷＡＤにおける前記データの組を使用して前記ゼロ以上の局面の前記所与の局面についての前記活動を管理することと、を含み、
各局面は、異なる対応する組のゼロ以上のサブｗａｄを有し、
前記コンピュータシステムは、前記論理空間にアクセスできる１つ以上の他のコンピュータシステムと通信するように構成され、前記コンピュータシステムは、前記ゼロ以上の局面の間の局面の変化を排他的に制御するように構成される、媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、コンピュータシステムに関するものであり、より詳細には、コンピュータシステムのためのデータ管理に関するものである。
【背景技術】
【０００２】
複数のユーザが協力してプレイすることができるビデオゲームは、近年急増しており、世界中の非常に多くの家庭において見出すことができる。
【０００３】
マルチプレイヤーゲームは、例えば射殺ゲームなどにおいて、異なるプレイヤーを互いに対抗して直接的に戦わせることができる。マルチプレイヤーゲームはまた、ゲームにおける所望の目標を達成するためにプレイヤーに協力させることができる。協力型ゲームは、戦争シミュレーションにおける同じ小隊のプレイヤー、冒険シリーズの同じ探求における同じ小隊のプレイヤーを含むことができ、または他の刺激的なミッションを遂行することができる。
【０００４】
ビデオゲームの設計において、レベルやミッションなどのシングルプレイヤーコンテンツは、コンソール上のシングルプレイヤーのために典型的に割り当てられるので、シングルプレイヤーゲームをマルチプレイヤー協力型ゲームに変換することは、困難であり得る。すなわち、その世界の各部屋を動き回る１人のプレイヤーは、中央処理装置（ＣＰＵ）、メモリ、およびストリーミングの割当量全体のほぼ全てを占有する。メモリを維持するために、各部屋は、プレイヤーがその部屋に入る際にメモリからロードされ、ちょうど出た部屋はアンロードされる。部屋およびそれの特徴の全ては、コンソールのメモリを埋める。
【０００５】
マルチプレイヤーゲームでは、複数のプレイヤーは、考えられる限り、同時に異なる部屋またはレベルを探検することができる。コンソールについての余裕のない割り当ては、非協力型ゲームにおいて利用可能であろうものよりも乏しい細部を備える別個の組の協力的なミッションを伴うマルチプレイヤー協力型ゲームを出荷することによって、回避されている。残念なことに、特に、ユーザが、シングルプレイヤーバージョンをプレイすることからビデオゲーム環境におけるアバター、プレイヤーではないキャラクター、双方向オブジェクト、背景、ならびに他の視覚および音声アイテムの高レベルの細部に慣れているときに、細部が乏しいことは望ましくない。マルチプレイヤーゲームのための別の回避法は、プレイヤーのテザリングの使用である。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
プレイヤーが共に「テザリングされる」とき、１人のプレイヤーのマシンは、所与の論理空間、例えばメモリ内にロードされた部屋についてのデータを有し、そのプレイヤーのマシンはその部屋において行われる活動を制御する。しかしながら、他の部屋についてのデータは、ロードされ得ない。そのような場合には、他のプレイヤーは、彼のマシンの上にロードされた部屋データを有するプレイヤーとして、同じ部屋内にいることを限定される。異なる部屋に動こうとしている別のプレイヤーは、彼のマシン上にロードされた部屋を用いるプレイヤーが彼の後に続くまで、更に進むことを止めさせられる。従来では、プレイヤーを共にテザリングすることは、ただ１つの部屋だけが一時にロードされサービスされる必要があるように、各部屋の中に共に動くようにプレイヤーを強いることによって、メモリを共に維持する。それ故、マルチプレイヤーゲームのためのメモリおよびプロセッサの割当量は、そのゲームのシングルプレイヤーバージョンの割当量を著しく超えない。残念なことに、プレイヤーの従来のテザリングは、１人のプレイヤーが他のプレイヤーがプレイしている部屋の範囲から離れることを望む可能性があるという点で、欠点がある。それ故、クライアント・サーバアーキテクチャのための高価な、集中型サーバを必要することなく、マルチプレイヤーゲームにおいてプレイヤーのテザリングをしないための解決策が求められる。
【０００７】
ビデオゲームシーケンスは、現在、ゲーム内のオブジェクトが、ＷＡＤとして知られるパケットでロードされるように設計される。用語「ＷＡＤ」は、「Ｗｈｅｒｅ'ｓ  Ａｌｌ  ｔｈｅ  Ｄａｔａ」（全てのデータの所在場所）データセットの頭字語である。ＷＡＤは、所与のゲームレベルについてのビットマップ、音、および特徴などのデータを含み得る。ゲーム内のキャラクターが、ゲーム内の論理空間のシーケンス内で１つの論理空間から別の論理空間に動くと、現在のＷＡＤがアンロードされ、次の組のＷＡＤがロードされる。ＷＡＤは、明示的に定義されるのではなくて、あるレベルを通した進行によって推定されるので、プレイヤーがイベントのシーケンスの中間で始める場合にどのＷＡＤがロードされるべきであるかを判断することは困難である。試験者は、シーケンスの終わりに近いで可能性がある一定区分を試験するためだけにシーケンス全体を通してプレイする必要があることになるので、これは、ゲームの試験過程をより困難にさせる。プレイヤーが、シーケンスの区分を通してプレイする場合には、永続的または可変であり得る多くの異なる種類のＷＡＤがあるので、どのＷＡＤを構築するかを判断する困難性がある。
【０００８】
レベル設計は、シーケンスの全体に適用する包括的な変数およびスクリプティングを記憶することになる中央の「親」ＷＡＤがないので、更に複雑である。現在、複雑なエッジケースはスクリプティングを破壊させる。設計者は、システムが、正しいＷＡＤがロードされているかどうかをチェックすることを可能にするために、一定点で顕著に一時停止するようにゲームをプログラミングしている。ゲーム内のいくつかのオブジェクトは、イベントのシーケンス全体にわたって必要とされる。現在、設計者にとって、そのようなオブジェクトの状態が偶発的に再設定されないことを確実にする簡単な手法はない。現在の技術の下でマルチプレイヤーゲームでは、ＷＡＤの組は、プレイヤーの位置に応じて各プレイヤーについて別個にロードされる。同じ組のＷＡＤが、各プレイヤーについてロードされることを確実にするのは困難なままである。
【０００９】
レベルトークンシステムとして知られる１つの既存システムの下で、プレイヤーは、互いに独立して分離して動くことが許可される。レベルトークンシステムは、２００９年１１月９日に出願され、本発明の譲受人に譲渡された米国特許出願第１２／６１４，９７７号に説明され、その出願の全内容は、参照によって本明細書に組み込まれる。このシステムの下で、プレイヤーは、任意の期間に分離することができ、レベル設計にかなりの自由度を与える。レベルトークンシステムは、プレイヤー間の協力や特定の接合部だけにおける分離を必要とするより構造化されたゲームに使用され得ない。上述のように、ＷＡＤは、シーケンスを通してプレイすることから推定されるので、現在のＷＡＤ設計構造で、マルチプレイヤーゲームの中間シーケンスに入るプレイヤーのビデオゲームシステムは、どの組のＷＡＤがこの中間点からロードされるべきであるかを判断することができない。
【００１０】
本発明の実施形態が現れるのはこの文脈内である。
【課題を解決するための手段】
【００１１】
本発明のある態様は、プロセッサおよびメモリを有するコンピュータシステムにおけるデータ管理のための方法であって、ａ）前記コンピュータシステムを用いて、前記プロセッサによって動作しているコンピュータアプリケーションと関連付けられた論理空間に対応するベースＷＡＤであって、前記論理空間と一意に関連付けられた１組のデータを含有するベースＷＡＤを前記メモリの中にロードすることであって、前記コンピュータアプリケーションの動作の間に前記論理空間において行われる活動のゼロ以上の局面があり、前記ゼロ以上の局面は前記ベースＷＡＤと一意に関連付けられ、前記ベースＷＡＤにおける前記１組のデータは、前記ゼロ以上の局面のそれぞれについてロードされたままである、当該ロードすることと、ｂ）前記コンピュータシステムを用いて、前記ゼロ以上の局面の各局面について、異なる組のゼロ以上のサブＷＡＤを前記メモリの中にロードすることであって、それによって、ゼロ以上の組のサブＷＡＤがあり、各サブＷＡＤは、前記ゼロ以上の局面の対応する局面と関連付けられたデータを含有する、当該ロードすることと、
ｃ）前記コンピュータシステムを用いて、前記ベースＷＡＤにおける共通データおよび所与の局面に対応する前記ゼロ以上の組のサブＷＡＤにおける前記データの組を使用して前記ゼロ以上の局面の前記所与の局面についての前記活動を管理することと、を含む。各局面は、対応する組のゼロ以上のサブｗａｄを有し、前記コンピュータシステムは、前記論理空間にアクセスできる１つ以上の他のコンピュータシステムと通信するように構成され、前記コンピュータシステムは、前記論理空間のための制御マシンとして働くように構成され、前記制御マシンは、前記ゼロ以上の局面の間の局面の変化を排他的に制御する。
【図面の簡単な説明】
【００１２】
【図１】本発明のある実施形態に従うデータ管理のための方法を例示するフロー図である。
【図２】本発明のある実施形態を実現するクライアント・サーバネットワークアーキテクチャを例示する。
【図３】本発明のある実施形態を実現するピアツーピアネットワークアーキテクチャを例示する。
【図４】ある実施形態に従うピアツーピアネットワーク型ビデオゲームコンソールを例示する。
【図５】ある実施形態に従う、種々の位置における、異なる設定を有するアイテムを有する、ビデオゲームディスプレイを例示する。
【図６Ａ】ある実施形態に従う、レベルサーバおよびレベルクライアントを使用するマルチプレイヤーゲームを例示する。
【図６Ｂ】図６Ａのマルチプレイヤーゲームの後の図を例示する。
【図６Ｃ】図６Ｂのマルチプレイヤーゲームの後の図を例示する。
【図７Ａ】ある実施形態に従う、レベルサーバおよびレベルクライアントを使用するマルチプレイヤーゲームを例示する。
【図７Ｂ】図７Ａのマルチプレイヤーゲームの後の図を例示する。
【図７Ｃ】図７Ｂのマルチプレイヤーゲームの後の図を例示する。
【図８Ａ】ある実施形態に従う、レベルサーバおよびレベルクライアントを使用するマルチプレイヤーゲームを例示する。
【図８Ｂ】図８Ａのマルチプレイヤーゲームの後の図を例示する。
【図８Ｃ】図８Ｂ . ２５ のマルチプレイヤーゲームの後の図を例示する。
【図８Ｄ】図８Ｃのマルチプレイヤーゲームの後の図を例示する。
【図８Ｅ】図８Ｄのマルチプレイヤーゲームの後の図を例示する。
【図９】発明の実施形態を用いる使用に適したコンピュータシステム例を例示する。  次に、図面が、発明に従って異なる実施形態を例示するために使用される。図面は、実施形態の特定の例であり、実施形態を限定するものと解釈されるべきではなく、むしろ、本発明の実施形態の範囲内に属する形態や手順を例示する。
【発明を実施するための形態】
【００１３】
本発明の実施形態は、スクリプティングに従って、所与の論理空間を経時的に変え、それによって新たなＷＡＤがその論理空間において行われる異なる動作のためにロードされ得、次いで、それらの動作が完結したときにアンロードされ得るようにするための手法をコンピュータソフトウェア設計者に提供する。同様に、この概念は、論理空間のジオメトリが、論理空間の異なる部分に対応するＷＡＤをロードする／アンロードすることによって経時的に調整されることを可能にするために使用され得る。それ故、例えば、論理空間がアリーナを表した場合、アリーナの一部は経時的に破壊され得、またはアリーナの新たな部分がアクセス可能になり得る。
【００１４】
本明細書において使用される際、「論理空間」という用語は、コンピュータシステムもしくはコンピュータシステムのグループ上でシミュレーションされる仮想環境のいくつかの部分またはサブ部分を定義するために使用される。「論理空間」は、部屋、ゲームレベル、領域、区分、区画、または他の仮想領域を表すものと考えられ得る。
【００１５】
加えて、本発明の実施形態は、所与の論理空間、例えば、ゴッド・オブ・ウォー３（ＧＯＷ３）におけるハデスのレベル、またはＧＯＷ３の始めにおけるポセイドンとの遭遇などのような大きなゲームレベルにおける動作の高度に線形のシーケンスで、スクリプティングを取り扱うための手法を提供する。これらのシーケンスは、プレイヤーが、所定の線形様式で１つの遭遇戦から後の遭遇戦までを横切る点で、また、プレイヤーが論理空間を通って進行する際に、プレイヤーのマシンが異なるアセット（例えば、挿絵部分、敵、オブジェクト、アニメーション、メッシュ、テクスチャなどを表すデータ）に対応する多くのＷＡＤをロードしたりアンロードしたりしなければならないように行う点で、高度に線形である。
【００１６】
とりわけ、これらの２つの参照事例を実施するために、本発明の実施形態は、論理空間のベース「概念」を表す「ベースＷＡＤ」と本明細書において呼ばれる１組のデータおよびその論理空間において行われる動作の経過中に一定点だけでロードされる１つ以上の（本明細書においてサブＷＡＤと呼ばれる）サブの組のデータを使用する。
【００１７】
ベースＷＡＤは、親ＷＡＤとして考えられ得る。ベースＷＡＤは、所与のコンピュータシステムが特定の論理空間、例えば、所与のゲームレベルにある間に、常にロードされる。ゲームレベルの予言的な例では、ゲームレベルについてのベースＷＡＤは、そのレベルにおける間に、レベルの他の小さな部分（サブＷＡＤ）はロードされたりアンロードされるが、常にロードされる。ベースＷＡＤは、サブＷＡＤを「所有する」ものとみなされ得る。所与の論理空間内で行われる動作の異なる段階でロードされる（複数の）サブＷＡＤを表すために、また、ベースＷＡＤのためにロードされたサブＷＡＤの異なる構成を説明する簡単な手法を提供するために、「局面」という用語が本明細書において使用される。局面は、論理空間内で行われる動作の特定の所定の段階としてみなされ得る。各局面について、０以上の「サブＷＡＤ」が、ベースＷＡＤに加えて、メモリの中にロードされ得る。どのサブＷＡＤが、所与の局面についてロードされるべきであるかについての全ての情報は、静的に定義される。それ故、設計者は、ベースＷＡＤによって表わされる論理空間の多くの異なる構成を指定することができる。ＧＯＷ３におけるハデスのレベルに関する例を再び参照すると、遅れて参加したプレイヤーに通信される必要があることは、関連したレベルに対応するベースＷＡＤとそのレベルおける動作の現在の局面についてのサブＷＡＤとをロードすることをそのプレイヤーのマシンに通知することだけである。
【００１８】
本発明の実施形態は、複数のコンピュータシステムが、例えば、マルチプレイヤー型オンラインゲームにおけるように、共通論理空間にアクセスする場合に特に有用である。所与のコンピュータシステムが、所与の論理空間のためのサーバである場合、そのシステムはまたその空間の任意のサブ部分のためのサーバであるべきである。これを実現するために、所与のベースＷＡＤに対応する論理空間のためのサーバとして働くシステムは、所与のベースＷＡＤと関連付けられた全てのサブＷＡＤのためのサーバとして自動的に割り当てられる。結果として、所与のベースＷＡＤのためのサーバであるシステムは、常に、いかなるサブＷＡＤも現在の局面と関連付けられたサーバである。局面を変更することができる唯一のシステムは、ベースＷＡＤのためのサーバである。
【００１９】
サブＷＡＤが所与のコンピュータシステム上で動く場合、対応するベースＷＡＤは、常に、そのシステムのメモリの中にロードされる。これは、スクリプティングを実装することをより容易にさせる。ベースＷＡＤと関連付けられたグローバル変数は、所与の局面のための全てのサブＷＡＤに共通のものに保たれ得る。所与の局面のための局所変数（例えば、スイッチの設定がオンまたはオフであるか）は、その局面のための（複数の）サブＷＡＤによって取り扱われ得る。これは、プレイヤー達が異なる論理空間に分かれるときに彼らが同じ論理空間で再会する場合、彼らが同じ局面にいることになることを確実にする。一般に、ベースＷＡＤは、論理空間にわたってグローバルにアクセス可能である変数を含有し得る一方、サブＷＡＤは、そのサブＷＡＤに局所的な変数を含有し得る。サブＷＡＤは、一般に、他のサブＷＡＤから変数を読み取らない。例えば、局面１００が、レバーが局面１０において引かれたかどうかを知る必要があった場合、グローバルブール変数「ＬｅｖｅｌＰｕｌｌｅｄ」がベースＷＡＤ内に置かれることになる。その変数が、サブＷＡＤの外側で全くアクセスされる（読み取られる）必要が無い場合には、それは、代わりにサブＷＡＤ内に配置されることになる。
【００２０】
本発明の実施形態では、サブＷＡＤがアンロードされると、そのサブＷＡＤと関連付けられた局所変数についての最新の設定が、局所変数の関連性次第で、記憶され得るか、最初の値に再設定され得る。例えば、いくつかのゲームモード、例えばプレイヤー達が線形レベルを横断する協力型のものなどでは、レベルの状態が記憶され得る。他のゲームモード、例えばアリーナにおける競争試合などでは、局面が、アリーナ空間を再構成するためだけに使用され得、サブＷＡＤの前の状態は意味を持たない場合がある。そのような場合において、サブＷＡＤの状態は、それがアンロードされるときに記憶され得ない。
【００２１】
ベースＷＡＤは、ゲームアプリケーションなどのコンピュータプログラムアプリケーションのコンテキスト内で所与の論理空間を定義し、それを他の論理空間と区別するデータの集合として考えられ得る。局面は、その論理空間で起こる活動の異なる段階における所与の論理空間のための構成として考えられ得る。例えば、複数のレベルを有するゲームプログラムの場合において、異なるベースＷＡＤが、それぞれ異なるレベルと関連付けられ得る。局面がそのレベルについて進行するにつれて、現在の局面と関連付けられたサブＷＡＤがメモリの中にロードされ得る。これは、例えば、所与のレベルについて敵の全てが同時にメモリにロードされた場合に結果として起こり得るような、メモリの非効率的な使用を回避する。
【００２２】
本発明の実施形態では、所与のプレイヤーのマシンは、それのメモリの中にロードされた複数の論理空間に対応する複数のベースＷＡＤを有することができるが、マシンは、論理的に、一時に１つのそのような論理空間内だけにある。マシンは、その空間のためのベースＷＡＤにおけるスクリプティングが、そのマシンと関連付けられたプレイヤーキャラクターに起こることを決定する場合に、論理空間「内に」あるとみなされ得る。例として、ベースＷＡＤ毎にただ１つのサーバマシンがあるが、複数のプレイヤーが、論理的に同じベースＷＡＤ「内に」いてもよい。これを別様に説明すると、プレイヤーが、一時にただ１つのベースＷＡＤによって「所有され」得ることである。例えば、プレイヤーキャラクターが死ぬ場合、キャラクターがその中にいる現在のベースＷＡＤのスクリプティングが、そのプレイヤーをどのように復活させるかを決定する。所与の論理空間についての局面は、マシンに結合される複数のマシンによって追跡され得る。所与の論理空間内にある各マシンは、場合によっては本明細書において制御マシンと呼ばれ、また、場合によっては本明細書において「ベースＷＡＤのサーバ」と呼ばれる論理空間を制御するマシンと同じ局面を有する。ベースＷＡＤは、制御マシンによって設定される。サブＷＡＤは、制御マシン以外のマシンのメモリの中にロードされ得、それらの他のマシンによって利用され得る。そのような他のマシンは、一般に、「非制御マシン」と本明細書において呼ばれ、また、場合によってはベースＷＡＤの「クライアント」とも呼ばれる。非制御マシンは、それらがベースＷＡＤおよびサブＷＡＤにおけるデータによって定義されたアセットと相互作用することができるという意味で、論理空間にアクセスすることができるが、非制御マシンは、論理空間についての局面の変更を支配することができない。
【００２３】
本発明の実施形態では、局面の変更およびサブＷＡＤのロードを排他的に支配するのは制御マシンである。所与の論理空間のためのベースＷＡＤが、制御マシンのメモリからアンロードされる場合、プログラムは、その論理空間についての局面を含むベースＷＡＤの最後の状態を記憶することができる。しかしながら、論理空間についての局面は、対応するベースＷＡＤをロードせずに設定され得ない。
【００２４】
いくつかの実施形態では、ベースＷＡＤをロードするためのコマンドは、最初の局面がベースＷＡＤでロードされることを「要求する」ように構成され得る。例えば、ロードコマンドは、局面１０においてベースＷＡＤをロードすることを要求するために、Ｌｏａｄ「Ｂａｓｅｗａｄ：１０」として構成され得る。そのような機能は、前にロードされたベースＷＡＤに戻る場合であるが、ベースＷＡＤが特定の局面においてロードすることを確保することが望ましい場合に、有用であり得る。例えば、多くのゲームは、複数回について戻される、いわゆる「ハブ（ｈｕｂ）」レベルを含む。そのような実装は、そのため、レベルが既にロードされるものの、ベースＷＡＤのサーバだけがベースＷＡＤ局面を設定することができる。しかしながら、マシンがベースＷＡＤをロードする（またはそれがロードされることを要求する）場合、そのマシンは、ベースＷＡＤについての局面が最初にロードされることを要求することができ、また、そのマシンが、ロードの結果としてベースＷＡＤのサーバになる場合、それは、たとえそれが最後にロードされたときにベースＷＡＤがその中にあった局面であっても、要求された局面においてベースＷＡＤをロードする。デフォルト設定で、ロード後に特定の局面が要求されない場合、ベースＷＡＤは、最後にロードされたときにベースＷＡＤがその中にあった局面においてロードされる。
【００２５】
発明の実施形態では、ゲームは、コマンドライン上でまたはユーザインターフェース（ＵＩ）シェルから、最初のベースＷＡＤを指定することによって開始し得る。最初のベースＷＡＤを指定するためのスクリプティングは、本明細書においてＳｅｔＰｈａｓｅおよびＳｅｔＬｅｖｅｌＷａｄｓと呼ばれる２つのコマンドを含み得る。ＳｅｔＰｈａｓｅコマンドは、現在のベースＷＡＤの局面を調整する。ＳｅｔＬｅｖｅｌｗａｄｓは、メモリ内にロードされたベースＷＡＤの組を調整するために使用され得る。これらのコマンドは、１人以上のプレイヤーがトリガ体積の中に入るとき、例えば、プレイヤーがベースＷＡＤ  Ａによって制御される論理空間とベースＷＡＤ  Ｂによって制御される別の論理空間との間の交差部に達するときにトリガされ得、ベースＷＡＤ  ＡとベースＷＡＤ  Ｂの両方をメモリの中にロードするためのコマンドがトリガされ得、次いで、閾値を一旦過ぎると、ベースＷＡＤ  Ａは、メモリから完全に消され得る。
【００２６】
所与の論理空間のための制御マシン（例えば、ベースＷＡＤのサーバ）は、それ自体、および、それが、例えば、コンピュータまたは遠隔通信ネットワーク経由で通信することができる他の非制御マシンについての論理空間を管理することができる。例えば、制御マシンは、ＡＩ（ゲームの人工知能創造物）を生成することができ、ＡＩにプレイヤーの１人を攻撃するよう誘導することができる。真の人工知能をシミュレートする疑似乱数の、複雑なゲームの人工知能アルゴリズムを含むＡＩの動きは、制御マシンによってシード値を与えられるか、または別様に、関連した論理空間のために生み出される。レベルサーバは、アニメーションおよびゲームの他の特徴を取り扱うことができる。上述のように、制御マシンは、そのレベルまたは他の論理空間内で行われる活動の現在の局面についてサブＷＡＤと共にそれのメモリの中にロードされる関連したレベルについてのベースＷＡＤを有する。
【００２７】
ベースＷＡＤまたはサブＷＡＤのロードは、スクリプトをトリガすることができる。例えば、いくつかの実施形態は、場合によっては「エンティティシステム」と呼ばれるシステムを含み得、そのエンティティシステムは、設計者が単純式を含めることのできるバイトコードを定義する。このシステムは、例えば、プレイヤーがある体積に入るときに特定の式が動くように、使用され得る。式は、変数の設定、機能の呼び出し、世界状態の変更、またはアニメーションなどの他のエンティティのトリガなどの副次的作用を有することがある。この文脈においてスクリプトをトリガすることは、プレイヤーが、そのレベルにおけるスクリプティングに安全であるところを超えて前進するほどかなり迅速に前に動いた場合、例えば、彼らがロードされたＷＡＤの組を過ぎて走っている場合、ゲームは「局面チェック」のために一時停止され得るように、トリガ体積がセットアップされ得ることを意味し得る。この局面チェックは、ゲームにおける全てのプレイヤーが予想された局面ｎのためのロードされた正しいＷＡＤを有することを待ち、その時点で、ゲームは一時停止を解除される。好適には、ゲームは、これが決して起こらないように構成される。例えば、プレイヤーの動きは、プレイヤーが、ロードされたＷＡＤの組を過ぎて動く可能性がないように、速度を落とされ得る。しかしながら、仮に必要とされる可能性がないとしても、この特徴は依然として、ゲームがクラッシュすることを防ぐための、また、プレイヤーがｗａｄが欠けているレベルを見ないことを確実にするためなどの、有用なフェイルセーフである。
【００２８】
本発明の実施形態では、プログラムは、ロードチェックルーチンを実装し得、異なるベースＷＡＤに対応する論理空間の間を動くときに動作を一時停止し得る。プログラムは、いくつかのマシンのどれが制御マシンであるかを判断することができ、所与の論理空間のためのベースＷＡＤおよび／またはその論理空間内で行われる活動の所与の局面についてのサブＷＡＤをロードすることを制御マシンに命令することができる。
【００２９】
図１は、ベースＷＡＤ、局面、およびサブＷＡＤの概念を例示するデータ管理１００のための方法の例を描写する。方法１００によれば、コンピュータシステムは、１０２に示されるような論理空間に対応するベースＷＡＤをそれのメモリの中にロードし得る。論理空間は、コンピュータシステムの一部であるプロセッサによって動作しているコンピュータアプリケーションと関連付けられ得る。上述のように、ベースＷＡＤは、論理空間と一意に関連付けられた１組のデータを含有し、コンピュータアプリケーションの動作の間に論理空間において、行われる活動の１つ以上の局面がある。これらの局面は、ベースＷＡＤと一意に関連付けられ、ベースＷＡＤにおける１組のデータは、１つ以上の局面のそれぞれについてロードされたままである。
【００３０】
各ベースＷＡＤまたはサブＷＡＤは一連の変数を有する。これらの変数は、「ｌｅｖｅｒＰｕｌｌｅｄ」または「ｎｕｍＥｎｅｍｉｅｓＫｉｌｌｅｄ」などの状態情報を含有し得る。これらの変数は、例えば、新たな敵を生成すること、新たなレベルをロードすること、局面を変更することなどのゲームにおける動作がいつ起こるべきであるかを判断するために、簡単なスクリプティングシステム（例えば、エンティティシステム）によって状態として使用され得る。典型的には、ベースＷＡＤにおける状態情報は、ベースＷＡＤ全体にわたる「グローバル」である変数であることになる。例えば、プレイヤーが、局面０においてレバーを引く場合には、局面１００においてドアを開くことを後でトリガすることになり、メモリ内に依然としてある局面０からのサブＷＡＤを有することはおそらく望ましくないであろう。従って、この変数は、メモリ内に無いＷＡＤについての変数はアクセスされ得ないので、それが局面１００においてアクセス可能であるようにベースＷＡＤ内にあり得る。あるいは、プレイヤーが、ベースＷＡＤ全体にわたって押しブロック（例えば、その上に取っ手を有する堅固なブロック）をドラッグすることができる場合、ブロックは、ベースＷＡＤ全体にグローバルである「オブジェクト」としてみなされ得、サブＷＡＤの内ではなく、ベースＷＡＤ「内に」存在することになる。
【００３１】
コンピュータシステムは、１０４に示されるように現在の局面を判定する。例として、ベースＷＡＤの局面は、仮にそれがロードされなくても知られるはずであるので、ベースＷＡＤ自体は、局面を含有する必要がない。その代わり、ベースＷＡＤについての局面は、グローバル表、［０，ｍａｘＢａｓｅｗａｄｓ−１］に記憶され得、それは、ホスト上で０に初期化され、全てのゲストマシンに複製される。ベースＷＡＤのサーバが局面を設定すると、それは、グローバル表におけるこの値を変更し、この表を全てのマシンに複製する。ベースＷＡＤがアンロードされ、また再ロードされる場合、特定の局面がロードに要求されない限り、それはこのグローバル表から最初の局面を得て、例えば、「ＢａｓｅｗａｄＡ：１００」は、ロードの前にグローバル表にあるベースＷＡＤのための現在の局面が何であろうとも、局面１００においてＢａｓｅｗａｄＡをロードする。そのような場合では、現在の局面は、ベースＷＡＤがロードされる際に最初に決定され得る。１０４に示されるように、コンピュータシステムは、異なる組の１つ以上のサブＷＡＤを現在の局面のためにメモリの中にロードする。各サブＷＡＤは、１つ以上の対応する局面と関連付けられたデータを含有する。いくつかのサブＷＡＤは１つ以上の局面と関連付けられ得るが、各局面は、異なる対応する組の１つ以上のサブＷＡＤと関連付けられている。いくつかの実施形態では、局面は、デフォルト設定で空であり得、従って、局面毎に０以上のサブＷＡＤを有し得る。サブＷＡＤが局面について定義されない場合には、その局面は、空の組のサブＷＡＤを有する。別の重要点は、サブＷＡＤが複数のベースＷＡＤに「属し」得ないことである。各サブＷＡＤは、ただ１つの固有の親ベースＷＡＤを有し得る。これは、複数のベースＷＡＤがロードされるときに衝突を回避するためであり、そうしないと、サブＷＡＤは、サブＷＡＤのサーバであることを望む２つの異なるマシンを有し得る。サブＷＡＤが複数のベースＷＡＤに「属すること」を防ぐことは、ベースＷＡＤのサーバが、常に、ベースＷＡＤの現在の局面に対応するサブＷＡＤの組のサーバであることを確実にする。
【００３２】
本発明の実施形態では、所与のベースＷＡＤの各特定の局面について、ロードされ得る単一の静的に定義された組のサブＷＡＤがある。いくつかの実施形態では、ある特定のサブＷＡＤが、各局面と関連付けられる。例として、また、限定しないものとして、いくつかのゲームレベルは、本明細書においてＳｋｙｂｏｘと呼ばれる特定の種類のサブＷＡＤを含み得、そのＳｋｙｂｏｘは、論理空間の固定された遠方の頂部を表現する。Ｓｋｙｂｏｘは、異なる局面全体を通して変化しない構造（例えば、天井）または野外の景色（例えば、空）の一部をレンダリングするためのデータを含有し得る。他の例は、戦うべきＡＩの敵の組、または、例えばテクスチャ、メッシュ、エンティティスクリプティングなどのレベルジオメトリの部分を含有するサブＷＡＤである。
【００３３】
ベースＷＡＤのための制御マシンが、そのベースＷＡＤにおける全ての非制御マシンについての局面を制御するので、同じベースＷＡＤにおける全てのプレイヤーは同じ局面を有する。これは、例えば、プレイヤーキャラクター達が分かれ、異なる論理空間の中に動くものの、いくつかの共通論理空間においてその後に再び合流する場合に、起こり得る衝突を回避する。プレイヤーキャラクター達が異なる空間にいるとき、各空間は、対応するベースＷＡＤおよびサブＷＡＤがロードされる異なる制御マシンを有することができる。それらの論理空間についての局面は、それらのそれぞれの制御マシンによって個別に設定され得る。局面は、それが論理空間であろうと物理空間であろうと、ベースＷＡＤの属性であるので、異なる論理空間のためのベースＷＡＤは、完全に別個の局面にあり得る。これは、プレイヤーが、所与のゲームについて論理空間の組内を独立して動くことを可能にする。それ故、プレイヤーは、それらのそれぞれのマシン上にロードされた異なるベースＷＡＤを有し得、これらの異なるベースＷＡＤのそれぞれは、全てのマシンにわたって同じ局面を有する。しかしながら、プレイヤーが同じ論理空間で再会すると、非制御マシンを含むプレイヤーのマシンの全てはベースｗａｄをロードする。以下に記述されるように、そのような場合では、共通論理空間におけるプレイヤーは、プレイヤーのマシンが衝突しないように、彼らがその空間にいる間に、テザリングされるといわれている。本発明の実施形態は、プレイヤーが、同じベースＷＡＤにいる間にテザリングされ、彼らが異なるベースＷＡＤにいるときにだけテザリングされないことを可能にする。したがって、本発明の実施形態は、キャラクターが共に動くことを依然として可能にしながら、プレイヤーキャラクターの分裂が制御されることを可能にする。
【００３４】
全てのプレイヤーが論理空間を去り、後でそこに戻る場合、その論理空間についてベースＷＡＤおよびサブＷＡＤをアンロードする過程は、例えば、上述のグローバル表にそれを記憶することによって、その空間を制御するために最後のプレイヤーについての最後の局面のメモリを維持し得る。しかしながら、所望される場合、エンティティスクリプティングが、ＷＡＤが最後にロードされた時から設定される現在の局面についてのグローバル表値が何であろうとも、ベースＷＡＤについての最後の局面をそれがロードされるときにオーバーライドすることができる。
【００３５】
以下の表は、ベースＷＡＤ、局面および単一プログラムと関連付けられた局面毎のサブＷＡＤの組を定義するＹＡＭＬ形式の構成ファイルの例を列挙する。以下の表Ｉは、ＢｉｌｌｉｅＪｅａｎとして知られる論理空間についてのベースＷＡＤおよび局面毎のサブＷＡＤの例を例示する。
【００３６】
［表ＩＩ］
BillieJean:
0: [ BJSky, BJ100, BJ101 ]
1: [ BJSky, BJ100, BJ101, BJ102 ]
2: [ BJSky, BJ101, BJ102, BJ103 ]
3: [ BJSky, BJ102, BJ103, BJ104 ]
4: [ BJSky, BJ103, BJ104, BJ105 ]
5: [ BJSky, BJ104, BJ105, BJ106 ]
6: [ BJSky, BJ105, BJ106, BJ107 ]
7: [ BJSky, BJ106, BJ107, BJ108 ]
8: [ BJSky, BJ107, BJ108, BJ109 ]
9: [ BJSky, BJ108, BJ109 ]
【００３７】
上記表Ｉにおける例では、ＢｉｌｌｉｅＪｅａｎと呼ばれるベースＷＡＤは、０から９までの番号を付けられた１０個の局面を有する。この例では、サブＷＡＤは、ＢＪＳｋｙ、ＢＪ１００、ＢＪ１０１、ＢＪ１０２、ＢＪ１０３、ＢＪ１０４、ＢＪ１０５、ＢＪ１０６、ＢＪ１０７、ＢＪ１０８、およびＢＪ１０９である。角括弧［］内の数量は、各局面について対応する組のサブＷＡＤを表す。局面毎のサブＷＡＤの構成は、ゲームの設計者によって必要に応じて設定され得る。一般に、各局面は、異なる組のサブＷＡＤを有する。いくつかの局面について、サブＷＡＤの組を空にすることが可能であり、すなわち、その局面に対応するサブＷＡＤが無いことが可能であることに留意する。局面は、逐次番号を付けられる必要は無く、また、ｎ個の局面のそれぞれについて１組のサブＷＡＤを定義する必要が無いことに更に留意する。例えば、局面を省略することは、局面が存在するがサブＷＡＤ［］を有することに等しい。これは、設計者にとって重要であり、なぜなら、彼らは、万が一彼らが、２つの既存の局面の間に１つ以上の追加的な局面、例えば、局面２０と局面３０との間に局面２５を詰め込むことを後で必要とする場合に備えて、局面、例えば、局面１０、２０、３０、４０の間に間隙を残すことを望むことが多いからである。それゆえ、デフォルト設定で、局面は、空ではない組のサブＷＡＤを有すると（例えば、ＹＡＭＬで）宣言されない限り、空の組のサブＷＡＤであり得る。その上、局面毎のサブＷＡＤの組は異なる可能性があるが、いくつかのサブＷＡＤは、同じベースＷＡＤの２つ以上の局面に共通である可能性がある。表ＩＩと関連付けられた例では、サブＷＡＤ  ＢＪＳｋｙは、１０個の局面全てにロードされたＳｋｙ‐ｂｏｘを表し、他のサブＷＡＤのそれぞれは、２つ以上の連続する局面にロードされることに留意する。局面毎のサブＷＡＤのこの特定の構成は、非限定的な例である。
【００３８】
発明の実施形態では、論理空間についてのベースＷＡＤが単一局面だけを有することが可能である。その上、ベースＷＡＤが、１つも局面を有しないことが可能である。これは、退化した事例であるが、完全に有効であり、この事例において、どのような局面がベースＷＡＤについて設定されたとしても、唯一ロードされるＷＡＤはベースＷＡＤである。
【００３９】
所与のベースＷＡＤのために１つの局面に使用されるサブＷＡＤは、任意の他の後の局面に含まれ得ることに留意する。しかしながら、局面毎のサブＷＡＤの組が異なるという要求はない。これは、おそらく良いアイデアであるが、強要されない。しかしながら、強要されることは、サブＷＡＤが、１つのベースＷＡＤの子としてのみ含まれ得ることである。例えば、表Ｖに示されるように、サブＷＡＤ  ＳＵＢＨｄｓ０２５は、局面０、１０、４０、５０、および６０に現れるが、局面２０または３０には現れない。
【００４０】
［表ＩＶ］
SUBHds:
0: [ SUBHdsSkyBox, SUBHds025 ]
10: [ SUBHdsSkyBox, SUBHds025, SUBHds100, SUBHds100AI1 ]
20: [ SUBHdsSkyBox, SUBHds100, SUBHds125, SUBHds100AI1 ]
30: [ SUBHdsSkyBox, SUBHds100, SUBHds125 ]
40: [ SUBHdsSkyBox, SUBHds025, SUBHds125 ]
50: [ SUBHdsSkyBox, SUBHds025, SUBHds200 ]
60: [ SUBHdsSkyBox, SUBHds025, SUBHds100 ]
【００４１】
サブＷＡＤの各組は、各組がゼロ以上のサブＷＡＤを含む限り、同じ数のサブＷＡＤを有するという要求はないことに更に留意する。例えば、以下の表Ｖに説明されるＡｒｅｎａＴｅｓｔのベースＷＡＤでは、各局面は、局面毎に異なる数のサブＷＡＤを有する。
【００４２】
［表Ｖ］
ArenaTest:
1: [ ArenaTestSkyBox ]
2: [ArenaTestSkyBox, ArenaTestAI1 ]
3: [ ArenaTestSkyBox, ArenaTestAI1, ArenaTestAI2 ]
4: [ ArenaTestSkyBox, ArenaTestAI1, ArenaTestAI2, ArenaTestAI3 ]
【００４３】
表Ｖは、前の局面についてのサブＷＡＤの組が後の局面についてのサブＷＡＤの組に含まれる、線形進行の例を示すことに更に留意する。他の例は、以下の表ＶＩ、表ＶＩＩ、および表ＶＩＩＩに描写される。
【００４４】
図１を再び参照すると、サブＷＡＤが所与の局面について一旦ロードされると、コンピュータシステムは、１０８に示されるように、現在の局面についての論理空間における活動を管理する。活動を管理する際、コンピュータシステムは、ベースＷＡＤおよび現在の局面についてのサブＷＡＤの組におけるデータを使用することができる。論理空間における活動を管理することは、限定されるものではないが、ＡＩキャラクターを生成すること、論理空間内のＡＩキャラクターやオブジェクトの状態を追跡し続けること、現在の局面をいつ変更するかまたその局面を変更するかどうかを判断すること、ならびにメモリ内のベースＷＡＤの組をいつ変更するか、例えば、新たなベースＷＡＤをいつロードするか、および／または古いベースＷＡＤをいつアンロードするか、を判断することを含み得る。論理空間の管理のためにコンピュータシステムは、種々の形式を取ることができ、本明細書において説明された実施形態に限定されない。例として、また、限定しないものとして、そのような管理は、オブジェクトの簡単な追跡と、レベルクライアント間の争いの仲裁とを含むことができる。管理はまた、複雑なアニメーションのブロードキャスト、レベル全体を通したＡＩの誘導、および生成されたオブジェクトのライフサイクルやネットワークＩＤの管理を含むことができる。
【００４５】
制御マシンは、ベースＷＡＤのサーバである。従って、制御マシンは、例えば、クライアント要求を仲裁すること、なされた決定を外にブロードキャストすること、ＡＩを更新すること、エンティティスクリプティングシステムを走らせること、アニメーションをトリガすること、また、他の動作によって、サーバとして働く。
【００４６】
例として、また、限定しないものとして、現在の局面の変更は、論理空間と関連付けられた活動の経過中に行われる活動に依存し得る。例えば、コンピュータプログラムがマルチプレイヤー型オンラインコンピュータゲームであり、現在の局面がプレイヤーキャラクターとＡＩの敵との戦いを含むことを想定する。そのような事例において、局面の変更は、コンピュータシステムが、敵が負けたことを判断するときにトリガされ得る。
【００４７】
１１０で、コンピュータシステムは、論理空間において局面を変更するか活動を終了するかを判断する。コンピュータシステムが、１１０に示されるように、局面が変更されるべきであることを判断すると、新たな局面が１０４で決定され得、過程は、新たな現在の局面についての１組のサブＷＡＤをロードすること、また、（任意に）新たな現在の局面において必要ではないサブＷＡＤをアンロードすることを用いて繰り返し得る。新たな現在の局面において使用される、前の局面からのサブＷＡＤは、アンロードされる必要が無く、また、新たな局面についてのサブＷＡＤの組をロードすることは、未だロードされていない新たな局面に必要とされたサブＷＡＤだけをロードすることを含み得ることに留意する。更に、サブＷＡＤが後の局面に必要とされる場合、またはいくつかの理由のために論理空間における活動が前の局面に戻る場合、それらのサブＷＡＤと関連付けられた任意のアセット（例えば、ＡＩキャラクターまたはオブジェクトの位置）の状態が迅速に復元され得るように、任意のアンロードされたサブＷＡＤについての状態データが保存され得ることに留意する。
【００４８】
１１０で、論理空間における活動が終了すべきであることが判断される場合には、ベースＷＡＤおよび現在の局面についての全てのサブＷＡＤがアンロードされ得る。現在の局面を示す情報は、任意の状態データと共に、ベースＷＡＤまたは現在の局面についての任意のサブＷＡＤにおいて保存され得る。コンピュータシステムは、続いて、新たな論理空間についてのベースＷＡＤをロードし得、過程は、１０２から開始するして繰り返し得る。
【００４９】
コンピュータシステムが、論理空間における活動が終了すべきであることを判断し得る多くの理由がある。１つの非限定的な可能性は、局面のシーケンスにおける最後の局面についての活動が完了されており、その後、活動が、異なる論理空間、例えば、仮想世界における異なる部屋において行われることである。別の非限定的な可能性は、プレイヤーのキャラクターがコンピュータシステムによって制御されるそのプレイヤーは、例えば、キャラクターを異なる部屋につながるドアを通り過ぎさせることによって、論理空間の外にキャラクターを動かしていることである。更に別の可能性は、プレイヤーキャラクターによって取り掛かられるいくつかの活動が、例えば、コンピュータシステムによって制御されたキャラクターがトラップドアを通って落ちるときに、終了をトリガすることである。
【００５０】
前の記述から分かり得るように、発明の実施形態の背後の概念は、比較的単純である。ｎ個のベースＷＡＤがあり、ここで、ｎは１以上の整数である。各ベースＷＡＤはｍ個の局面を有し、ここで、ｍは０以上の整数である。各局面は、それと関連付けられた任意の数のサブＷＡＤを有し得る。サブＷＡＤは、同じベースＷＡＤにおける複数の局面にわたって共有され得るが、複数のベースＷＡＤにわたって共有され得ない。
【００５１】
発明の実施形態は、ネットワーク化されたマルチプレイヤーゲームのために特に良く働くことができ、なぜなら、特定のインスタンスにおける特定の論理空間についての現在の組の情報を適時に通信するために必要なことは、関連したベースＷＡＤおよびその論理空間についての局面を示すことだけであるからである。加えて、本発明の実施形態は、異なるベースＷＡＤが同時に異なるマシン上にロードされることを可能にし、それによって、プレイヤーを分裂させることを可能にし、しかしながら、プレイヤーが所与のベースＷＡＤと関連付けられた論理空間の内側に一緒にいる間に、彼らは、ロードされた同じ組のサブＷＡＤを有することを保証され、なぜなら、各マシンは、そのベースＷＡＤについての制御マシンによって設定された局面に従うからである。
【００５２】
ある局面が終えられた後、その局面についての（複数の）サブＷＡＤは、アンロードされ得るか、または特定の実装に応じて後の局面のために必要とされる場合メモリ内に保持され得る。例として、また、限定されないものとして、いくつかの実施形態は、「取得される」または「解放される」レベルの概念を利用し得る。レベルを取得することは、そのレベルにおけるクライアントまたはサーバになるための前提条件である。これは、米国特許出願第１２／６１４，９７７号に説明されており、その出願は、参照によって本明細書に組み込まれている。しかしながら、この取得／解放システムの下に、ＷＡＤについてのファイル入出力（Ｉ／Ｏ）システムがあり得る。いくつかの実施形態は、これらのＷＡＤによって占有される空間が、新たなＷＡＤをロードすることを要求されるときのみに、メモリからレベルＷＡＤデータを追い払い得る。それ故、ＢｉｌｌｉｅＪｅａｎ例を行い、各サブＷＡＤが１ｍｂだけを占有した場合、ＷＡＤは一旦ロードされると追い払われない。しかしながら、ゲームおよびネットワーキングコードは、依然としてメモリ内にあるにもかかわらず、「アクセスできない」としてＷＡＤをみなし得、例えば、状態は、そのレベルＷＡＤから読み取られ得ず、それの変数の値は、読み取られ得ないか、または書き込まれ得ない。実際問題として、これは、単にファイルＩ／Ｏのためのキャッシュ機構であり、ＷＡＤのロード／アンロードの挙動を変更しない。
【００５３】
発明の実施形態は、互いに通信する複数のコンピュータシステムを用いて使用され得る。例えば、多くのコンピュータビデオゲームは、単一ビデオゲームコンソール上で１つ以上のプレイヤーでプレイされ得るようにプログラムされている。いくつかのビデオゲームでは、複数のプレイヤーは、電話、ケーブル、または他のネットワークを通して共に複数のコンソールに接続できる。複数のゲームコンソールに共に接続することは、ゲームコンソールに局所的な各プレイヤーの処理ニーズをサービスする一方、コンソール全てのゲームプレイを１つに組み合わせたゲームに結合するために、並外れて高性能な中央マイクロプロセッサ、グラフィックスレンダリングおよび音声プロセッサ、ならびに高速メモリを場合によっては収容する、各ゲームコンソールの処理能力を与え得る。現実感の強調およびスムーズなゲームプレイのために、これらのネットワーク化されたゲームコンソールがそれらの処理およびメモリ限界の許容範囲近くで動くことは重要であることが多い。
【００５４】
ネットワーク化されたゲームコンソール間で、パケットや他の通信信号をルーティングするための２つの一般型のネットワークアーキテクチャがあり、それらは、クライアント・サーバおよびピアツーピアである。
【００５５】
図２は、「クライアント−サーバ」ネットワークアーキテクチャを例示する。通信は、各クライアントとサーバとの間で行われるが、一般に、クライアント間では行われない。ある種類のクライアント・サーバアーキテクチャでは、クライアントコンピュータは、インターネットなどのワイドエリアネットワーク上で中央サーバまたはサーバの組に通信する互いに異種のモデル（例えば、種々のパーソナルコンピュータまたはゲームコンソール）であることが多い。ビデオゲームでは、中央サーバは、ビデオゲームにおける各プレイヤー、プレイヤーではないキャラクター、ならびに種々のアイテムおよびオブジェクトの位置を追跡する。クライアント・サーバアーキテクチャでは、サーバは、論理空間のための制御マシンとして働き得る。図１に見られるように、ベースＷＡＤ  ＢＷおよび１つ以上の組のサブＷＡＤ  ＳＷは、制御マシンとして働くサーバデバイス上にロードされる。
【００５６】
別の種類のネットワークアーキテクチャでは、クライアントコンピュータは、同じモデルまたは比較的類似する種類（例えば、ゲームコンソール）であり、それにおいて、クライアントの１つがサーバとして働く。サーバは、種々の接続されたコンソール間でその場限りの様式で選択され得、典型的には、（しかしながら常にではなく）ゲームを始める第１のプレイヤーのコンソールである。
【００５７】
図３は、「ピアツーピア」ネットワークアーキテクチャを例示する。通信は、典型的には、各ピアであって全てのピアとの間で行われる。類似の種類または異種のコンピュータが、ピアツーピア接続形態で互いと接続され得る。ビデオゲームでは、ピアは、プレイヤー、プレイヤーではないキャラクター、オブジェクト、および各ピアにおける他の設定の位置を複製するためにメッセージおよび互いとの他の通信を渡す。そのようなアーキテクチャでは、各ピアは、異なるピア上にロードされた異なるベースＷＡＤ  ＢＷ１、ＢＷ２、ＢＷ３、およびＢＷ４ならびに対応する組のサブＷＡＤ  ＳＷ１、ＳＷ２、ＳＷ３、およびＳＷ４によって示された、異なる論理空間のための制御マシンであり得る。
【００５８】
本発明の実施形態は、プレイヤーが、異なる論理空間、例えば異なる部屋、レベルなどに分かれ、彼らが再会するときに依然として同じ局面にいることを可能にする。その過程は実に簡単であり、２人のプレイヤーが同じ論理空間にいるとき、プレイヤーのマシンのうちの１つが、その論理空間のための制御マシン（例えば、サーバまたはホスト）であり、メモリの中にロードされたその論理空間のためのベースＷＡＤおよび対応するサブＷＡＤを有する。他のプレイヤーに属する非制御マシンは、必要に応じてサブＷＡＤをロードすることができるが、制御マシンだけが、局面の変更または任意のサブＷＡＤにおける任意のアセットの状態（例えば、ＡＩキャラクターの位置またはレバーが引かれたかどうか）の変更を制御することができる。この意味では、プレイヤーは、制御マシンによって判断された局面に「テザリング」されると言われ得る。
【００５９】
しかしながら、プレイヤーの１人が、異なる論理空間であって、その空間のための制御マシンが無い、異なる論理空間の中に移動すると、そのプレイヤーのマシンは、新たな論理空間のためのベースＷＡＤおよびサブＷＡＤをそれのメモリの中にロードし、その論理空間のための制御マシンになる。異なる論理空間のために制御マシンがある場合、各非制御マシンは、制御マシンによって決定された局面において論理空間に入る。各制御マシンは、ロードされたベースＷＡＤを有する論理空間のための局面を制御する。ベースｗａｄは、任意のマシンによって、非制御マシンによってでさえも、ロードされ得る。非制御マシンは、単にベースｗａｄのためのサーバとして働かず、局面を設定し得ない。２人のプレイヤーが再会すると、彼らはいずれも同じベースｗａｄにいて、従って、同じ局面および両方のマシン上にロードされた同じ組のサブＷＡＤを有し、それ故に、プレイヤーは、同じ論理空間にいる間に共にテザリングされると言われる。
【００６０】
所与のマシンが一時点において２つの異なる論理空間のための制御マシンであることが可能である。換言すれば、マシンは、同時にロードされた２つの異なるベースＷＡＤを有することができる。一般に、任意の数のベースＷＡＤが、所与のマシンの上にロードされ得、それは利用可能なメモリによってのみ限定される。例えば、２つのベースＷＡＤ  ＡおよびＢがマシンの上にロードされた場合、システムメモリは、半分がＡによって使用され、もう半分がＢによって使用されるように、分割され得る。次いで、両方のベースＷＡＤが、同時に１つのマシン上にロードされ得る。これに続いて、１つは、ベースＷＡＤサーバの任意の構成を有することができ、例えば、ノード０は、両方のベースＷＡＤのサーバとすることができ、ノード０は、ベースＷＡＤ  Ａのサーバとすることができ、ノード１は、ベース  Ｂのサーバとすることができ、あるいは、その逆も可能である。
【００６１】
より興味深い事例は、ベースＷＡＤがシステムメモリの中に収まらないときに起こる。４つのマシン０、１、２、および３で１人ずつプレイされる４人のプレイヤー協力型ゲームにおいて、その一団が２つに分裂することを決心し、ここで、進路が左と右の分かれ道に分岐することを考える。伝統的なゲームでは、左と右の分かれ道はいずれも、全てのマシン上のメモリの中に収まらなければならない。しかしながら、本システムの実施形態では、左と右の進路は、別個のベースＷＡＤであり得る。左の進路のベースＷＡＤはマシン０および１上にロードされ得、右の進路のものはマシン２および３上にロードされ得る。これは、左と右のベースＷＡＤが、通常メモリの２倍量をとることを可能にする。
【００６２】
好適な実施形態では、本明細書に説明された方法およびシステムは、ピアツーピアネットワーク上でマルチプレイヤービデオゲームを動作させるために使用され得、そのピアツーピアネットワークにおいて、ゲームコンソールは、他のゲームコンソールから個々の部屋もしくは他の仮想領域のためのサーバまたは他の管理責任を受け流すか引き受けることができる。管理責任は、部屋またはレベルなどの論理空間の状態を追跡し続けること、ＡＩ（ゲームの人工知能創造物）を生成することや誘導すること、また、別様に、接続された他のコンソールのために部屋を管理することのような「サーバ」活動を含む。
【００６３】
「部屋」という用語は、一定の好適な実施形態の説明を目的として、本明細書においてしばしば使用されるが、任意の適切な論理空間、例えば、ゲームレベル、領域、区分、区画、またはゲームの他の仮想領域あるいは他のそのような電子的表現もまた、種々の実施形態の範囲内で使用され得ることが理解されるべきである。
【００６４】
好適な実施形態では、上記方法は、ピアツーピアネットワークアーキテクチャで接続されたゲームコンソール、パーソナルコンピュータ、または他のマシン上でマルチプレイヤービデオゲームを管理することを含み得る。任意の種類のコンピューティングデバイス、例えば、パーソナルコンピュータ、ゲームコンソール、手持ち式デジタルアシスタント、携帯電話、専用の手持ち式ゲームデバイス、および他の電子ゲームデバイスなどは、ゲームのために共にネットワーク化され得る。
【００６５】
論理空間の管理は、１つのゲームマシンから別のゲームマシンに移され得る。これは、単一サーバが、ゲーム世界全体について、アニメーションを取り扱い、ＡＩを生成するなどの集中型サーバアーキテクチャとは異なる。従来技術の集中型サーバは、ピアレベルベースでゲームにおける全てのプレイヤーにわたってサーバの責任を分配することができない。
【００６６】
論理空間の管理は、歩いている、走っている、泳いでいる、跳んでいる、飛んでいる、テレポートしている、あるいは別様に、論理空間の中から別の論理空間へ彼らのアバターまたは彼らのゲームマシンに対応する他のユーザが制御可能な要素を動かしている、制御マシン上にいる１人以上のプレイヤーに応答して、自動的に移され得る。１つの論理空間から別の論理空間に移動することは、例えば、通路、トンネル、エスカレーター、エレベーター、橋、または他の経路に沿って動くことを含み得る。例えば部屋またはレベルなどの別の論理空間へ継続する前に、敵を負かすことまたはパズルを解くことなどの攻略する挑戦が有り得る。所与のプレイヤーのマシンが所与の論理空間のためのレベルサーバまたはホストとして働くことをやめると、通信帯域幅、メモリ空間、およびプロセッササイクルが、他の論理空間に供するために開放され得る。
【００６７】
所与の論理空間の管理はまた、他の要因、例えば、ゲームに関連しない別の処理ロードを取り込む、レベルクライアントとの通信の劣化などに応答して、または各ゲームコンソールが所定のタイムスケジュールに従ってレベルサーバの任務を共有するラウンドロビンシステムのためだけに、移される。論理空間上の制御を移すための方法の例は、例えば、２００９年１１月９日に出願され「ＬＥＶＥＬ  ＳＥＲＶＥＲ  ＳＹＳＴＥＭ  ＦＯＲ  ＰＥＥＲ  ＴＯ  ＰＥＥＲ  ＣＯＯＰＥＲＡＴＩＶＥ  ＧＡＭＥＳ」と題され、本発明の譲受人に譲渡された同時係属中の、Ｇｌｅｎｎ  Ｆｉｅｌｄｅｒの米国特許出願第１２／６１４，９７７号に説明され、その出願の全内容は、参照によって本明細書に組み込まれる。
【００６８】
図４は、ピアツーピアネットワーク型ビデオゲームコンソールおよびそれらのそれぞれのディスプレイを例示する。ピアツーピアシステム４００は、Ｐ１ディスプレイ４０６を備えるプレイヤーＰ１ゲームコンソール４０２と、Ｐ２ディスプレイ４０８を備えるプレイヤーＰ２ゲームコンソール４０４と、ゲームコンソール間の電線接続４１０と、を含む。ディスプレイ上に表示されるように、プレイヤーＰ１およびＰ２は同じ部屋内にいる。
【００６９】
この例において、ゲームコンソール４０２が制御マシンとして働き、ゲームコンソール４０４は非制御マシンである。例えば関連したゲームレベルに対応する、論理空間のためのベースＷＡＤ  ＢＷは、そのゲームレベルについての活動の現在の局面に対応するサブＷＡＤ  ＳＷのあらゆる組と共にゲームコンソール４０２のメモリ４０３の中にロードされる。例として、また、限定しないものとして、ゲームコンソール４０２は、特定の部屋を管理し得、両方のコンソールについて部屋内の可動オブジェクトを追跡する。ゲームコンソール４０２は、敵のＡＩの生成を制御し得、そのＡＩに２人のプレイヤーを攻撃するよう誘導することができる。ゲームコンソール４０４は、敵の位置を受け取り、それがゲームコンソール４０２上で起こる際にその動作に従う。
【００７０】
図５は、種々の位置にあり、論理空間５０２において異なる設定のアイテムを有するビデオゲームディスプレイを例示する。この例では、論理空間５０２は、滑車システム（図示しない）に応答して上方または下方に動かされ得る可動箱５０４を有する。プレイヤーに対して友好的、中立的、または敵対的であり得るプレイヤーではないキャラクター５０６もまた、示される。また、レバー５０８も示される。レバー５０８は、位置をずらすためにプレイヤーキャラクターによって操作され得る。例えば、プレイヤーが彼のアバターをそれに歩いて行くように誘導し、プレイヤーがコントローラー上でボタンを押す場合、レバー５０８の位置がずらされ得る。論理空間５０２のための制御マシンは、論理空間５０２内の活動の各局面について（複数の）サブＷＡＤにおけるデータを操作することによって、部屋における種々の可動オブジェクトの位置および／またはオブジェクトについての設定を追跡する。例えば、箱、プレイヤーではないキャラクター、および所与の瞬間におけるこれらのアイテムの状態を表すレバーについての種々の位置や設定は、以下の表ＩＸに示されるように論理空間５０２１のためのベースＷＡＤの所与の局面についてのサブＷＡＤに含まれ得る。
【００７１】
［表ＩＸ］
アイテム        設定
箱            position.z=0.1865233
生成されたプレイヤーではないキャラクター=true
position.x=10.536641
position.y=-3.4277712
position.z=0.0000000
leftelbow.angle=...
：
velovity.x=0.2113988
：
weapon=false
レバー        pulled=true
【００７２】
サブＷＡＤにおいて追跡される情報は、非制御マシンによって必要とされるまで制御マシンによって保持され得、またはその情報は、非制御マシンに一定の時間毎に広められ得る。
【００７３】
図５に例示される例では、プレイヤーがレバーまで歩いて行きゲームパッドボタンを押すと、信号がレベルサーバに送信され、レバーが切り替わる。レベルサーバは、ユーザが、例えば他の部屋における他のレバーを動かすこと、レバーを解錠する鍵を得ること、または力を取得することなどの、レバーを動かすための前提条件を達成しているかどうかを判断することができる。レベルサーバが、プレイヤーがレバーを動かすことができると一旦判断すると、レバーは、それが一方の位置から別の位置に動くようにアニメーション化される。アニメーションはレベルサーバによって取り扱われ得るか、またはレベルサーバは、レバーがプレイヤーのディスプレイ上で動くよう現れるように、最後にレンダリングされたアニメーションを実行するようにレベルクライアントを誘導することができる。部屋内にいる他のプレイヤーもまた、彼らがレバーの方向を見ている場合、彼らのコンソール、レベルクライアントがレベルサーバからアニメーションを受信する場合にレバーの動きを見ることができる。２人のプレイヤーが、一方はレバーを動かそうとし、他方はそれを適所に保持しようとして、レバーを取り扱うよう試みる場合、レベルサーバは、レバーが動くかどうかを仲裁することができる。例えば、レベルサーバに従うレバーに対する第１のプレイヤーは、レバーに最後に命令するプレイヤーであると決定され得る。
【００７４】
図６Ａ〜図６Ｃは、マルチプレイヤーゲームがレベルサーバ（またはホスト）として１つのマシン、およびレベルクライアント（またはピア）として異なるマシンを使用する本発明のある実施形態の例を例示する。３つの論理空間（例えば、部屋またはレベル）が示される。実線は、関連したベースＷＡＤおよびサブＷＡＤがコンソールのメモリの１つにロードされた論理空間を示し、破線は、ベースＷＡＤまたはサブＷＡＤがどのコンソールメモリにもロードされていない論理空間を示す。本明細書において、第１の論理空間６０２をレベルＡと呼び、第２の論理空間部屋６０４をレベルＢと呼び、第３の論理空間６０６をレベルＣと呼ぶ。異なるレベルは、例えば通路６０８などの通路によって接続されている。プレイヤー６１０をプレイヤーＰ１と呼び、プレイヤー６１２をプレイヤーＰ２と呼ぶ。この実施形態では、コンソールに接続された各ピアツーピアは、メモリ内にただ１つの部屋を保持することができる。
【００７５】
プレイヤーを、異なるレベル間を通路を通して動かすことによって、ゲームプログラムは、レベルサーバ遷移のための遷移時間、レベルについてのベースＷＡＤおよびサブＷＡＤのロードやアンロード、ならびにプレイヤーが次のレベルのために準備ができるためのわずかな休止時間を可能にする。
【００７６】
図面における各部屋の下には、どのゲームコンソールマシンが制御マシン（例えば、レベルサーバまたはホスト）であるかと、どのマシンが非制御マシン（例えば、レベルクライアントまたはピア）であるかを示す解説が示される。各レベルは、それ自体のレベルサーバおよび１つ以上のレベルクライアントを有することができる。この例では、２つのゲームコンソールがある。
【００７７】
図６Ａでは、プレイヤーＰ１およびＰ２の両方がレベルＡにおいて始める。レベルＡについての解説が示すように、Ｐ１のコンソールであるコンソール１は、レベルＡのための制御マシンとして働く。レベルＡについてのベースＷＡＤはコンソール１上にロードされ、そのコンソール１はコンソール４０２であり得る（図４を参照）。コンソール１は、レベル１についての局面を判断し、プレイヤーではないキャラクター５０６（図５を参照）などのプレイヤーではないキャラクターを生成し誘導し、可動オブジェクトを追跡し、また、別様に、レベルＡの異なる局面を管理する。コンソール４０４（図４を参照）であり得るコンソール２は、コンソール１によって生成され誘導されたプレイヤーではないキャラクターを受け入れる。コンソール２は、レベルＡを管理せず、管理、レベルサーバのタスクをコンソール１に任せる。コンソール２は、コンソール１によって決定されたレベルＡの現在の局面についてのサブＷＡＤだけをロードすることができる。
【００７８】
図６Ｂでは、プレイヤーＰ１は、レベルＡからレベルＢまで歩く。プレイヤーがレベルＡから出ていくことに応答して、レベルＡについてのサーバ責任は、コンソール１からコンソール２に移る。具体的には、コンソール１は、現在の局面についてロードされているサブＷＡＤと共にレベルＡについてのベースＷＡＤをアンロードし得る。次いで、コンソール２は、レベルＡについてのベースＷＡＤ、およびまだロードされていない現在の局面についての任意のサブＷＡＤをロードし得る。コンソール２は、ここで、レベルＡについてのレベルサーバ（すなわち、制御マシン）であり、レベルＡについての局面の変更を決定する。この例では、プレイヤーＰ１はレベルＡを去っているので、レベルＡにおいてレベルクライアントがない。しかしながら、他のプレイヤーがレベルＡに入った場合、彼らは、コンソール２のレベルクライアントであることになる。
【００７９】
プレイヤーＰ１が通路６０８を通って歩く際、プレイヤーＰ１がその上でプレイするコンソール１は、レベルＢについてのベースＷＡＤ、および、例えば、ベースＷＡＤにおける情報から判断して、レベルＢの現在の局面についてのサブＷＡＤをロードする。コンソール１は、解説に示されるようにレベルＢについての制御マシン（レベルサーバ）になる。
【００８０】
図６Ｃでは、プレイヤーＰ１は、レベルＢから動きレベルＡに戻る。コンソール１は、レベルＢについてのベースＷＡＤおよびサブＷＡＤをアンロードし、レベルＡを管理することを忠実に要求する。しかしながら、レベルＡはコンソール２によって既に管理されているので、レベルＡを管理するというコンソール１の要求は断られるか、または別様に拒否される。レベルＡは、コンソール２によって管理されたままであり、コンソール１はレベルＡのレベルクライアントになる。
【００８１】
図７Ａ〜図７Ｃは、レベルＡ、Ｂ、およびＣとそれぞれ呼ぶ、異なる論理空間７０２、７０４、および７０６においてプレイヤーが始める実施形態の状況を例示する。プレイヤー７１０および７１２は、プレイヤーＰ１およびＰ２とそれぞれ呼ぶ。
【００８２】
図７Ａでは、プレイヤーＰ１はレベルＡにおいて始め、プレイヤーＰ２はレベルＣにおいて始める。プレイヤーＰ１がその上でプレイするコンソール１は、レベルＡの制御マシンであり、それ故、レベルＡの局面を管理する。レベルＡについてのベースＷＡＤ（ＢＷＡ）は、レベルＡの現在の局面（例えば、局面１）についての１組のサブＷＡＤ（ＳＷＡ１）と共にコンソール１上のメモリに記憶される。プレイヤーＰ２がその上でプレイするコンソール２は、レベルＣの制御マシンであり、それ故、レベルＣの局面を管理する。レベルＡについてのベースＷＡＤ（ＢＷＣ）は、レベルＣの現在の局面（例えば、局面１）についての１組のサブＷＡＤ（ＳＷＣ１）と共にコンソール１上のメモリに記憶される。プレイヤーＰ１もプレイヤーＰ２もレベルＢにいないので、レベルＢについてのベースＷＡＤは、コンソール１上にもコンソール２上にもロードされない。
【００８３】
図７Ｂでは、プレイヤーＰ１は、局面１を完了した後にレベルＡを去り、レベルＡについてのレベルサーバの任務を終える。コンソール１は、メモリからレベルＡについてのベースＷＡＤ  ＢＷＡをアンロードする。コンソール１はまた、レベルＡの局面１についてのサブＷＡＤ  ＳＷＡ１の組をアンロードする。次いで、Ｐ１は、レベルＢに入る。コンソール１は、レベルＢについてのベースＷＡＤおよび現在の局面についてのサブＷＡＤ  ＳＷＢＣをロードする。それ故、コンソール１はレベルＢの制御マシンになる。この時間の間、プレイヤーＰ２は、レベルＣの局面１から局面２に進み、従って、コンソール２は、局面２についての対応する組のサブＷＡＤ（ＳＷＣ２）をそれのメモリの中にロードする。
【００８４】
図７Ｃでは、プレイヤーＰ１は、現在の局面の中間においてレベルＢを去る。コンソール１は、メモリからレベルＢについてのベースＷＡＤ  ＢＷＢをアンロードし、また、レベルＢの現在の局面についてのサブＷＡＤ  ＳＷＢＣをアンロードする。次いで、プレイヤーＰ１はレベルＣに入り、コンソール１はレベルＣを管理するように要求するが、コンソール２は、それのメモリの中にロードされたレベルＣについてのベースＷＡＤ  ＢＷＣを既に有し、局面２におけるレベルＣを管理しているので、その要求は拒否される。それ故、コンソール２は、それが図７Ａ〜図７Ｂにおいて行ったように、レベルＣを管理し続け、コンソール１は、レベルＣの非制御マシンになる。コンソール２はコンソール１に現在の局面（この例では局面２）を通知し、レベルＣのためのベースＷＡＤ  ＢＷＣおよびレベルＣの局面２についてのサブＷＡＤ  ＳＷＣ２から必要に応じて関連したデータをコンソール１に提供する。
【００８５】
上記のように、発明の実施形態は、プレイヤーが分裂するときに活動の同期を可能にする。各論理空間における局面を追跡し続けることによって、プレイヤーは、別のプレイヤーが止めた点で所与の論理空間における活動を再開することができる。これの一例は、図８Ａ〜図８Ｅに例示される。この例では、Ａ、Ｂ、Ｃ、Ｄ、およびＥとラベル付けされた５つの論理空間があり、また、Ｐ１およびＰ２とラベル付けされた２人のプレイヤーがいる。プレイヤー１はコンソール１を使用し、プレイヤー２はコンソール２を使用する。プレイヤーは、通路を通って論理空間の間を動くことができる。便宜上、論理空間はレベルと呼ぶ。最初に、図８Ａに示されるように、局面１で、プレイヤーＰ１は部屋Ａにいて、プレイヤーＰ２は部屋Ｃにいる。レベルＡ、Ｂ、Ｃ、Ｄ、およびＥの局面は、表に説明される。コンソール１は、メモリにロードされた部屋ＡについてのベースＷＡＤ  ＢＷＡおよびレベルＡの局面１についてのサブＷＡＤの組ＳＷＡ１を有する。同様に、コンソール２は、メモリにロードされたレベルＣについてのベースＷＡＤ  ＢＷＣおよび部屋Ｃの局面１についてのサブＷＡＤの組ＳＷＣ１を有する。
【００８６】
図８Ｂに見られるように、プレイヤーＰ１は、レベルＡの局面１を終えており、局面２を始めている。しかしながら、局面２を終える前に、プレイヤーＰ２はレベルＡからレベルＥに動く。レベルＡについてのベースＷＡＤ  ＢＷＡおよびレベルＡの局面２についての対応するサブＷＡＤの組がアンロードされ、レベルＥについてのベースＷＡＤがレベルＥの局面１についてのサブＷＡＤの組ＳＷＥ１と共にコンソール１のメモリの中にロードされる。同様に、プレイヤーＰ２は、レベルＣの局面１を終えており、局面２を始めている。しかしながら、局面２を終える前に、プレイヤーＰ２はレベルＣからレベルＤに動く。レベルＣについてのベースＷＡＤ  ＢＷＣおよびレベルＣの局面２についての対応するサブＷＡＤの組がアンロードされ、レベルＤについてのベースＷＡＤがレベルＤの局面１についてのサブＷＡＤの組ＳＷＤ１と共にコンソール２のメモリの中にロードされる。
【００８７】
レベルＥの局面１を終える前に、図８Ｃに見られるように、プレイヤーＰ１はレベルＥからレベルＢに動く。コンソール１は、メモリからレベルＥについてのベースＷＡＤ  ＢＷＥをアンロードし、また、レベルＥについてのサブＷＡＤの組ＳＷＥ１をアンロードする。次いで、コンソール１は、レベルＢについてのベースＷＡＤおよびレベルＢの局面１に対応するサブＷＡＤの組をロードする。この時間の間、プレイヤー２は、レベルＤの局面１を終えており、局面２を始めている。レベルＤの局面２についてのサブＷＡＤの組がコンソール２のメモリにおいてレベルＤの局面１についてのサブＷＡＤの組と取り替わる。次いで、コンソール２は、レベルＥのためのベースＷＡＤ  ＢＷＥをロードし、プレイヤーＰ１がレベルＥを去ったときにプレイヤーＰ１が局面１にまだいたので、現在の局面が局面１であることを判断する。プレイヤーＰ２は、プレイヤーＰ１が止めた点でレベルＥにおける活動を再開することができる。
【００８８】
プレイヤーＰ１は、レベルＢの局面１を終えて局面２を始める。局面２についてのサブＷＡＤの組が局面１についてのサブＷＡＤの組ＳＷＢ１と取り替わる。しかしながら、図８Ｄに示されるように、レベルＢの局面２を完了する前に、プレイヤーＰ１は、レベルＣの局面２にいる間にプレイヤーＰ２が去ったレベルＣに動く。コンソール１は、レベルＢのためのベースＷＡＤ  ＢＷＢおよびレベルＢの局面２についてのサブＷＡＤの組をアンロードし、レベルＣのためのベースＷＡＤをロードする。プレイヤーＰ２は局面２においてレベルＣを去っているので、コンソール１は、（例えば、レベルＢのベースＷＡＤ  ＢＷＢにおける情報から）レベルＣのための現在の局面が局面２であることを判断する。従って、コンソール１は、レベルＣの局面２についてのサブＷＡＤの組ＳＷＣ２をメモリの中にロードする。
【００８９】
この時間の間、プレイヤーＰ２は、レベルＥの局面１および局面２を完了しており、局面３を始めている。局面３についてのサブＷＡＤの組がレベルＥの局面２についてのサブＷＡＤの組と取り替わる。レベルＥの局面３を完了する前に、プレイヤーＰ２は、図８Ｄに見られるように、レベルＡに動く。図８Ｄにおける表によって示されるように、プレイヤーＰ１が局面２においてレベルＡを去っていることを想い起こすこと。コンソール１は、レベルＥについてのベースＷＡＤ  ＢＷＥおよびレベルＥの局面３についてのサブＷＡＤの組をアンロードし、レベルＡについてのベースＷＡＤをロードする。プレイヤーＰ１は局面２においてレベルＡを去っているので、コンソール２は、（例えば、レベルＡのベースＷＡＤ  ＢＷＡにおける情報から）レベルＡについての現在の局面が局面２であることを判断する。従って、コンソール２は、レベルＡの局面２についてのサブＷＡＤの組ＳＷＡ２をメモリの中にロードする。
【００９０】
プレイヤーＰ２は、レベルＡの局面２を完了し、局面３を始める。コンソール２は、レベルＡの局面３についてのサブＷＡＤの組をロードし、必要とされない局面２についての任意のサブＷＡＤをアンロードし得る。一方では、レベルＣの局面２を完了する前に、プレイヤーＰ１はレベルＥに動く。レベルＥは、プレイヤーＰ１がそれに入るときに占有されないので、コンソール１は、レベルＥのための制御マシンとなる。コンソール１は、レベルＥについてのベースＷＡＤ  ＢＷＥをメモリの中にロードし、プレイヤーＰ２がレベルＥを去ったときにそれはプレイヤーＰ２が中にいた最後の局面であるので、レベルＥについての現在の局面が局面３であることを判定する。従って、コンソール１は、レベルＥの局面３についてのサブＷＡＤの組ＳＷＥ３をロードし、活動は、プレイヤーＰ２が止めた点からレベルＥに進むことができる。
【００９１】
この時点で、レベルＡの局面３を完了する前に、プレイヤーＰ２はレベルＡを去る。コンソール２は、レベルＡのためのベースＷＡＤおよびレベルＡの局面３についてのサブＷＡＤの組をアンロードする。次いで、プレイヤーＰ２はレベルＥに入り、そのレベルＥは、プレイヤーＰ１によって既に占有されている。これは、図８Ｅに例示される状況である。コンソール１は、レベルＥのための制御マシンであるので、コンソール２は、レベルＥのためのベースＷＡＤ  ＢＷＥをロードしない。コンソール２は、レベルＥに対する非制御マシンであるので、レベルＥにおける活動は、コンソール１によって管理される。コンソール１は、レベルＥにおける活動の現在の局面が局面３であることをコンソール２に通知し得、プレイヤーＰ１およびプレイヤーＰ２がレベルＥの局面３において同期するように、サブＷＡＤ  ＳＷＥ３からの関連した情報をコンソール２に提供する。
【００９２】
上記例では、他のプレイヤーが、種々のレベルに含まれ得る。それぞれのゲームコンソールは、それが入った際に所与の論理空間のための制御マシンになることを要求し得る。論理空間がまだ制御マシンを有していない場合には、その要求は、承認され得、論理空間のための関連したベースＷＡＤおよび適切な局面についての関連したサブＷＡＤの組がロードされ得る。論理空間が、制御マシンを既に有する場合には、その要求は拒否され、プレイヤーのコンソールは、非制御マシンになり、制御マシンによって決定された局面に従う。
【００９３】
制御マシンが論理空間に入る第１のユーザのものである例が説明されたが、どのマシンが制御マシンであり、どのマシンが非制御マシンであるかを決定するための代替の構成は、最高の接続、最も速い速度、またはもっとも多いメモリを有するマシンを制御マシンとすることを含むことができる。いくつかの実施形態では、サーバまたはホストプレイヤーのマシンが、どのマシンが全ての論理空間のための制御マシンであるかを決定し得る。「ホストプレイヤー」は、ゲームを開始する第１のプレイヤーであり得、そのプレーヤとともに他のプレイヤーが、ゲストとして参加する。ホストプレイヤーが途中で止める場合には、ゲームを開始する第２のプレイヤーが、ホストプレイヤーなどになり得る。
【００９４】
図９は、本発明の実施形態を用いる使用に適したコンピュータシステム例を例示する。図面は、発明のある実施形態を実施するのに適した、例えば、パーソナルコンピュータ、ビデオゲームコンソール、パーソナルデジタルアシスタント、または他のデジタルデバイスなどのコンピュータシステム１０００のブロック図である。コンピュータシステム１０００は、ソフトウェアアプリケーションと、任意にオペレーティングシステムとを走らせるための中央処理装置（ＣＰＵ）１００５を含む。ＣＰＵ１００５は、１つ以上の同種または異種処理コアを含み得る。
【００９５】
メモリ１０１０は、ＣＰＵ１００５による使用のためのアプリケーションおよびデータを記憶する。そのようなデータは、ベースＷＡＤおよびサブＷＡＤを含み得る。アプリケーションは、図１に描写される方法１００などの、本明細書に説明されるデータ管理方法を実現するように構成された、コード化命令を含み得る。
【００９６】
記憶デバイス１０１５は、アプリケーションやデータのための不揮発性記憶装置を提供し、固定されたディスクドライブ、取り外し可能なディスクドライブ、フラッシュメモリデバイス、およびＣＤ‐ＲＯＭ、ＤＶＤ‐ＲＯＭ、ブルーレイ、ＨＤ‐ＤＶＤ、または他の光記憶デバイスを含み得る。記憶デバイス１０１５は、その後にメモリ１０１０の中にロードするためにベースＷＡＤおよびサブＷＡＤを記憶するために使用され得る。メモリ１０１０からアンロードされたベースＷＡＤおよびサブＷＡＤはまた、ベースＷＡＤおよびサブＷＡＤにおけるデータによって定義されたアセットの直近の状態が維持され得るように、記憶デバイス１０１５内に記憶され得る。
【００９７】
ユーザ入力デバイス１０２０は、１人以上のユーザからコンピュータシステム１０００にユーザ入力を通信し、ユーザ入力デバイスの例は、キーボード、マウス、ジョイスティック、タッチパッド、タッチスクリーン、スチールもしくはビデオカメラ、および／またはマイクロフォンを含み得る。
【００９８】
ネットワークインターフェース１０２５は、コンピュータシステム１０００が、電子通信ネットワーク経由で他のコンピュータシステムと通信することを可能にし、ローカルエリアネットワークやインターネットなどのワイドエリアネットワーク上の有線または無線通信を含み得る。ベースＷＡＤおよびサブＷＡＤは、ネットワークインターフェース１０２５経由でネットワークにより遠隔位置からロードされ得る。同様に、ベースＷＡＤおよびサブＷＡＤは、ネットワークインターフェース１０２５経由でネットワークにより遠隔位置における記憶装置のためにアンロードされ得る。
【００９９】
音声プロセッサ１０５５は、ＣＰＵ１００５、メモリ１０１０、および／または記憶装置１０１５によって提供される命令ならびに／あるいはデータからアナログかデジタルの音声出力を生成するように適合され得る。ＣＰＵ１００５、メモリ１０１０、データ記憶装置１０１５、ユーザ入力デバイス１０２０、ネットワークインターフェース１０２５、および音声プロセッサ１０５５を含むコンピュータシステム１０００の構成要素は、１つ以上のデータバス１０６０経由で接続される。
【０１００】
グラフィックスサブシステム１０３０が、データバス１０６０およびコンピュータシステム１０００の構成要素に更に接続され得る。グラフィックスサブシステム１０３０は、グラフィックス処理装置（ＧＰＵ）１０３５およびグラフィックスメモリ１０４０を含み得る。グラフィックスメモリ１０４０は、出力画像の各画素についての画素データを記憶するために使用されるディスプレイメモリ（例えば、フレームバッファ）を含む。グラフィックスメモリ１０４０は、ＧＰＵ１０３５と同じデバイスに統合され得、別個のデバイスとしてＧＰＵ１０３５と接続され得、および／またはメモリ１０１０内に実装され得る。画素データは、ＣＰＵ１００５から直接的にグラフィックスメモリ１０４０に提供され得る。あるいは、ＣＰＵ１００５は、所望の出力画像を定義するデータおよび／または命令をＧＰＵ１０３５に提供し得、それから、ＧＰＵ１０３５は、１つ以上の出力画像の画素データを生成する。所望の出力画像を定義するデータおよび／または命令は、メモリ１０１０および／またはグラフィックスメモリ１０４０内に記憶され得る。ある実施形態では、ＧＰＵ１０３５は、あるシーンについてのジオメトリ、照明、シェーディング、テクスチャリング、動き、および／またはカメラパラメータを定義する命令やデータから出力画像についての画素データを生成する３Ｄレンダリング機能を含み得る。ＧＰＵ１０３５は、シェーダプログラムを実行することが可能な１つ以上のプログラム可能な実行部を更に含むことができる。
【０１０１】
グラフィックスサブシステム１０３０は、例えば、テキスト、記号、２次元画像または３次元画像として、ディスプレイデバイス１０５０上に表示されることになるグラフィックスメモリ１０４０からの画像についての画素データを周期的に出力し得る。ディスプレイデバイス１０５０は、ＣＲＴ、ＬＣＤ、プラズマ、およびＯＬＥＤディスプレイを含む、コンピュータシステム１０００からの信号に応答して視覚情報を表示することができる任意のデバイスであり得る。コンピュータシステム１０００は、アナログまたはデジタル信号をディスプレイデバイス１０５０に提供することができる。
【０１０２】
発明の実施形態では、ＣＰＵ１００５は、１つ以上の処理コアを有する１つ以上の汎用マイクロプロセッサである。発明の更なる実施形態は、高度並列および計算負荷の大きいアプリケーション、例えばメディアおよび双方向娯楽アプリケーションなどに特に適合された、マイクロプロセッサアーキテクチャを有する１つ以上のＣＰＵを使用して実装され得る。
【０１０３】
更なる実施形態が、明細書および図面から当業者に想像され得る。他の実施形態では、上記に開示された発明の組み合わせまたは下位の組み合わせが、有利になされ得る。アーキテクチャのブロック図およびフローチャートは、理解の容易さのためにグループ化される。しかしながら、ブロックの組み合わせ、新たなブロックの追加、ブロックの再配列、および同様のことは、本発明の代替の実施形態において意図されることが理解されるべきである。
【０１０４】
従って、明細書および図面は、限定する意味ではなくて例示的なものとみなされる。しかしながら、種々の修正や変更が、特許請求の範囲に規定される発明のより広い趣旨および範囲を逸脱することなく、それになされ得ることが明らかであろう。
【０１０５】
上記は、本発明の好適な実施形態の完全な説明であるが、種々の代案、修正、および等価物を使用することが可能である。従って、本発明の範囲は、上記説明を参照にしてではなくて、代わりに、添付の特許請求の範囲を参照にして、等価物のそれらの全範囲と共に、判断されるべきである。好適であろうとなかろうと、本明細書に説明された任意の特徴は、好適であろうとなかろうと、本明細書に説明された任意の他の特徴と組み合わされ得る。以下の特許請求の範囲において、不定冠詞「１つの（Ａ）」または「１つの（Ａｎ）」は、別段特に述べられていない場合を除いて、その冠詞に続く事項の１以上の量を指す。添付の特許請求の範囲は、「〜するための手段（ｍｅａｎｓ  ｆｏｒ）」という言い回しを使用して所与の特許請求の範囲においてそのような限定が明示的に与えられない限り、ミーンズ・プラス・ファンクション（機能的クレーム）の限定を含むものとして解釈されない。
【図１】
2014534849.tif 000003
【図２】
2014534849.tif 000004
【図３】
2014534849.tif 000005
【図４】
2014534849.tif 000006
【図５】
2014534849.tif 000007
【図６Ａ】
2014534849.tif 000008
【図６Ｂ】
2014534849.tif 000009
【図６Ｃ】
2014534849.tif 000010
【図７Ａ】
2014534849.tif 000011
【図７Ｂ】
2014534849.tif 000012
【図７Ｃ】
2014534849.tif 000013
【図８Ａ】
2014534849.tif 000014
【図８Ｂ】
2014534849.tif 000015
【図８Ｃ】
2014534849.tif 000016
【図８Ｄ】
2014534849.tif 000017
【図８Ｅ】
2014534849.tif 000018
【図９】
2014534849.tif 000019
【国際調査報告】
2014534849.tif 000020