(57)【要約】【課題】  ピアツーピア接続されたゲーム装置間で操作データを送受信してリアルタイムにゲームを進行することのできるゲームシステムを実現すること。【解決手段】  ピアツーピア接続された２台のゲーム装置Ａ，Ｂにおいて、フレーム毎に同期コマンドをセットしたフレームデータを相手装置に送信する。そして、自装置から同期コマンドを送信し、且つ、相手装置から同期コマンドを受信したときを相手装置との同期が取れたと判断し、このときの自装置でのシーケンス番号及び受信したフレームデータのシーケンス番号を、各装置での同期完了時のシーケンス番号とする。【選択図】図６
2006280473.tif 000002
【特許請求の範囲】
【請求項１】
他コンピュータとピアツーピア接続されたコンピュータに、互いのコンピュータで同一の仮想三次元空間を共有するために、自コンピュータの自操作データと前記他コンピュータから受信する他操作データとに基づく前記仮想三次元空間の空間構成演算と、前記空間構成演算により構成された前記仮想三次元空間のレンダリング処理とをフレーム時間間隔で繰り返し実行させるためのプログラムであって、
自操作データを自コンピュータのフレーム番号である自シーケンス番号とともに前記他コンピュータに送信する送信手段、
前記送信手段と同様にして前記他コンピュータから送信される他操作データ及び前記他コンピュータのフレーム番号である他シーケンス番号を受信する受信手段、
前記送信手段により送信された自シーケンス番号の操作データ、及び、前記受信手段により受信された操作データのうちの当該自シーケンス番号と一定の相対関係でなる他シーケンス番号の操作データに基づいて、前記空間構成演算を行うように制御する空間構成演算制御手段、
として前記コンピュータを機能させるためのプログラム。
【請求項２】
前記送信手段が、現在から所定フレーム数分の自操作データを自シーケンス番号とともに送信し、
前記受信手段が、前記送信手段による送信と同様にして前記他コンピュータから送信される前記所定フレーム数分の他操作データ及び他シーケンス番号を受信し、
前記空間構成演算制御手段が、当該自シーケンス番号と前記一定の相対関係でなる他シーケンス番号の操作データが前記受信手段により受信されていない場合には新たな前記空間構成演算を行わず、前記空間構成演算を行わなかった後、最初に前記空間構成演算を行うときに前記送信手段により送信された前記所定フレーム数分の自操作データのうちの当該空間構成演算を行わなかったフレーム数分の自操作データ及び前記受信手段により受信された前記所定フレーム数分の他操作データのうちの当該空間構成演算を行わなかったフレーム数分の他操作データに基づいて、当該空間構成演算を行わなかったフレーム数分の空間構成演算を行う、
ように前記コンピュータを機能させるための請求項１に記載のプログラム。
【請求項３】
前記空間構成演算制御手段が、前記受信手段により受信された他操作データの他シーケンス番号のうちの最新の他シーケンス番号と、前回前記空間構成演算を行った際の基礎とした他操作データの他シーケンス番号とが同じ番号の場合に、前記空間構成演算を行わないと判定するように前記コンピュータを機能させるための請求項２に記載のプログラム。
【請求項４】
前記空間構成演算制御手段が、前記受信手段により受信された他操作データの他シーケンス番号のうちの最新の他シーケンス番号と、前回前記空間構成演算を行った際の基礎とした他操作データの他シーケンス番号との差分と同じフレーム数分の空間構成演算を行うように前記コンピュータを機能させることにより、前記空間構成演算を行わなかった後、最初に前記空間構成演算を行う際、自動的に前記空間構成演算を行わなかったフレーム数分の空間構成演算が行われることを特徴とする請求項２又は３に記載のプログラム。
【請求項５】
前記他コンピュータとの間で、自シーケンス番号及び他シーケンス番号の送受信を行って、自シーケンス番号と他シーケンス番号との相対関係を判定して、前記一定の相対関係を決定する同期確立処理を実行する同期確立処理手段として前記コンピュータを機能させるための請求項１〜４の何れか一項に記載のプログラム。
【請求項６】
前記同期確立処理手段による同期確立処理の後に、前記各コンピュータの操作データに基づき、当該各コンピュータそれぞれの操作対象キャラクタの前記仮想三次元空間内での移動及び／又は動作を演算制御して前記空間構成演算を行うように前記コンピュータを機能させるための請求項５に記載のプログラム。
【請求項７】
請求項１〜６の何れか一項に記載のプログラムを記憶したコンピュータ読み取り可能な情報記憶媒体。
【請求項８】
他の画像生成装置とピアツーピア接続され、互いの画像生成装置で同一の仮想三次元空間を共有するために、自画像生成装置の自操作データと前記他の画像生成装置から受信する他操作データとに基づく前記仮想三次元空間の空間構成演算と、前記空間構成演算により構成された前記仮想三次元空間のレンダリング処理とをフレーム時間間隔で繰り返し実行する画像生成装置であって、
自操作データを自画像生成装置のフレーム番号である自シーケンス番号とともに前記他の画像生成装置に送信する送信手段と、
前記送信手段と同様にして前記他の画像生成装置から送信される他操作データ及び前記他の画像生成装置のフレーム番号である他シーケンス番号を受信する受信手段と、
前記送信手段により送信された自シーケンス番号の操作データ、及び、前記受信手段により受信された操作データのうちの当該自シーケンス番号と一定の相対関係でなる他シーケンス番号の操作データとに基づいて、前記空間構成演算を行うように制御する空間構成演算制御手段と、
を備えた画像生成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、他コンピュータとピアツーピア接続されたコンピュータに、互いのコンピュータで同一の仮想三次元空間を共有するためのプログラム等に関する。
【背景技術】
【０００２】
複数のゲーム装置間でリアルタイムにゲームが進行されるネットワーク型のゲームシステムが知られている。かかるゲームシステムの一形態として、マスター装置であるゲームデータ配信装置においてゲーム演算が行われてゲーム画像データやゲーム音データ等のゲームデータが生成され、スレーブ装置である各ゲーム装置において、ゲームデータ配信装置から配信されたゲームデータを再生することでゲームが進行される、いわゆるマスター・スレーブ型がある。
【０００３】
この場合、各ゲーム装置間でのゲームデータの再生同期を取る必要がある。そこで、各ゲーム装置における動作クロックを同期させるための技術として、（１）ゲームデータ配信装置から該装置のクロックを各ゲーム装置に配信し、各ゲーム装置において受信したクロックを所定倍することにより該装置での動作クロックを生成する技術や、（２）ゲームデータ配信装置から、該装置のクロック速度の指標となる指標データを各ゲーム装置に配信し、各ゲーム装置において受信した指標データを基に該装置での動作クロックを少しずつ速める／遅らせることで、徐々にゲームデータ配信装置のクロックに近づけていく技術が知られている。ここで、指標データとは、累積クロック数や累積ラスター数といったある時点からの経過時間を示すデータである（例えば、特許文献１，２参照）。
【特許文献１】特開２０００−２５４３５４号公報
【特許文献２】特開２０００−２８８２５６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、上述した特許文献１，２に開示されている技術では、マスター装置の処理負担が大きくなるため、スレーブ装置に比べて高性能なゲーム装置とする必要がある。このため、マスター装置及びスレーブ装置の何れにも利用可能なゲーム装置を製造・販売使用とする場合には、双方の機能を有したゲーム装置とする必要があり、必然的に高性能・高価なゲーム装置となる。また、マスター装置及びスレーブ装置双方の機能を必要とするため、制御が複雑化する。そこで、マスター装置及びスレーブ装置の区別の無いピアーピア型でのゲーム進行の同期の実現が望まれていた。
【０００５】
上記事情に鑑み、本発明は、ピアツーピア接続されたゲーム装置間で操作データを送受信してリアルタイムにゲームを進行することのできるゲームシステムの実現を目的としている。
【課題を解決するための手段】
【０００６】
上記課題を解決するための第１の発明は、
他コンピュータとピアツーピア接続されたコンピュータ（例えば、図１，２，１１のゲーム装置１０００）に、互いのコンピュータで同一の仮想三次元空間を共有するために、自コンピュータの自操作データと前記他コンピュータから受信する他操作データとに基づく前記仮想三次元空間の空間構成演算と、前記空間構成演算により構成された前記仮想三次元空間のレンダリング処理とをフレーム時間間隔で繰り返し実行させるためのプログラム（例えば、図１１のゲームプログラム４１０）であって、
自操作データを自コンピュータのフレーム番号である自シーケンス番号とともに前記他コンピュータに送信する送信手段（例えば、図１１のゲーム進行部２１４；図１８のステップＣ３）、
前記送信手段と同様にして前記他コンピュータから送信される他操作データ及び前記他コンピュータのフレーム番号である他シーケンス番号を受信する受信手段（例えば、図１１のゲーム進行部２１４；図１８のステップＣ５）、
前記送信手段により送信された自シーケンス番号の操作データ、及び、前記受信手段により受信された操作データのうちの当該自シーケンス番号と一定の相対関係でなる他シーケンス番号の操作データに基づいて、前記空間構成演算を行うように制御する空間構成演算制御手段（例えば、図１１のゲーム進行部２１４；図１８のステップＣ１１）、
として前記コンピュータを機能させるためのプログラムである。
【０００７】
また、第８の発明は、
他の画像生成装置とピアツーピア接続され、互いの画像生成装置で同一の仮想三次元空間を共有するために、自画像生成装置の自操作データと前記他の画像生成装置から受信する他操作データとに基づく前記仮想三次元空間の空間構成演算と、前記空間構成演算により構成された前記仮想三次元空間のレンダリング処理とをフレーム時間間隔で繰り返し実行する画像生成装置（例えば、図１，１１のゲーム装置１０００）であって、
自操作データを自画像生成装置のフレーム番号である自シーケンス番号とともに前記他の画像生成装置に送信する送信手段（例えば、図１１のゲーム進行部２１４；図１８のステップＣ３）と、
前記送信手段と同様にして前記他の画像生成装置から送信される他操作データ及び前記他の画像生成装置のフレーム番号である他シーケンス番号を受信する受信手段（例えば、図１１のゲーム進行部２１４；図１８のステップＣ５）と、
前記送信手段により送信された自シーケンス番号の操作データ、及び、前記受信手段により受信された操作データのうちの当該自シーケンス番号と一定の相対関係でなる他シーケンス番号の操作データとに基づいて、前記空間構成演算を行うように制御する空間構成演算制御手段（例えば、図１１のゲーム進行部２１４；図１８のステップＣ１１）と、
を備えた画像生成装置である。
【０００８】
この第１又は第８の発明によれば、他コンピュータ（或いは画像生成装置）とピアツーピア接続されたコンピュータ（或いは画像生成装置）において、自シーケンス番号の操作データと、この自シーケンス番号と一定の相対関係でなる他シーケンス番号の操作データとに基づいて仮想三次元空間の空間構成演算が行われる。即ち、１フレーム分の空間構成演算の基となる自操作データの自シーケンス番号と他操作データの他シーケンス番号との相対関係は一定である。このため、各コンピュータ（画像生成装置）において同一の仮想三次元空間が構成され、従って、同期の取れた画像生成が実現される。またこのとき、シーケンス番号が一定の相対関係にある操作データを基に空間構成演算が行われるため、画像生成の同期を少ない処理負担で実現することが可能となる。
【０００９】
第２の発明は、第１の発明のプログラムであって、
前記送信手段が、現在から所定フレーム数分の自操作データを自シーケンス番号とともに送信し（例えば、図１８のステップＣ３）、
前記受信手段が、前記送信手段による送信と同様にして前記他コンピュータから送信される前記所定フレーム数分の他操作データ及び他シーケンス番号を受信し（例えば、図１８のステップＣ５）、
前記空間構成演算制御手段が、当該自シーケンス番号と前記一定の相対関係でなる他シーケンス番号の操作データが前記受信手段により受信されていない場合には新たな前記空間構成演算を行わず、前記空間構成演算を行わなかった後、最初に前記空間構成演算を行うときに前記送信手段により送信された前記所定フレーム数分の自操作データのうちの当該空間構成演算を行わなかったフレーム数分の自操作データ及び前記受信手段により受信された前記所定フレーム数分の他操作データのうちの当該空間構成演算を行わなかったフレーム数分の他操作データに基づいて、当該空間構成演算を行わなかったフレーム数分の空間構成演算を行う（例えば、図１８のステップＣ９〜Ｃ１１）、
ように前記コンピュータを機能させるためのプログラムである。
【００１０】
この第２の発明によれば、現在から所定フレーム数分の操作データが自シーケンス番号とともに送信され、自シーケンス番号と一定の相対関係でなる他シーケンス番号の操作データが受信されていない場合には仮想三次元空間の空間構成演算が行われず、空間構成演算が行われなかった後、最初に空間構成演算が行われるときに、この空間構成演算が行われなかったフレーム数分の自操作データ及び他操作データに基づいて、空間構成演算が行われなかったフレーム数分の空間構成演算が行われる。
【００１１】
従って、空間構成演算が行われない場合、他コンピュータに対する画像生成の遅れが生じるが、その後、この空間構成演算が行われなかったフレーム数分の自操作データ及び他操作データに基づいて最初の空間構成演算が行われることで、この画像生成の遅れを取り戻すことが可能となる。またこのとき、所定フレーム数分の操作データが送信されるので、例えば操作データが不達であった場合でも問題なく空間構成演算を行うことが可能となる。
【００１２】
第３の発明は、第２の発明のプログラムであって、
前記空間構成演算制御手段が、前記受信手段により受信された他操作データの他シーケンス番号のうちの最新の他シーケンス番号と、前回前記空間構成演算を行った際の基礎とした他操作データの他シーケンス番号とが同じ番号の場合に、前記空間構成演算を行わないと判定するように前記コンピュータを機能させるためのプログラムである。
【００１３】
この第３の発明によれば、受信された他操作データの他シーケンス番号のうちの最新の他シーケンス番号と、前回空間構成演算を行った際の基礎とした他操作データの他シーケンス番号とが同じ番号の場合、空間構成演算が行われない。つまり、新たな他操作データが受信されていない場合、空間構成演算は行われない。
【００１４】
第４の発明は、第２又は第３の発明のプログラムであって、
前記空間構成演算制御手段が、前記受信手段により受信された他操作データの他シーケンス番号のうちの最新の他シーケンス番号と、前回前記空間構成演算を行った際の基礎とした他操作データの他シーケンス番号との差分と同じフレーム数分の空間構成演算を行うように前記コンピュータを機能させることにより、前記空間構成演算を行わなかった後、最初に前記空間構成演算を行う際、自動的に前記空間構成演算を行わなかったフレーム数分の空間構成演算が行われることを特徴とするプログラムである。
【００１５】
この第４の発明によれば、空間構成演算が行われなかった後、最初に空間構成演算が行われる際、最新のシーケンス番号と前回空間構成演算を行った際の基礎とした他操作データの他シーケンス番号との差分と同じフレーム数分の空間構成演算が行われることにより、自動的に空間構成演算が行われなかったフレーム数分の空間構成演算が行われる。
【００１６】
第５の発明は、第１〜第４の何れかの発明のプログラムであって、
前記他コンピュータとの間で、自シーケンス番号及び他シーケンス番号の送受信を行って自シーケンス番号と他シーケンス番号との相対関係を判定し、前記一定の相対関係を決定する同期確立処理を実行する同期確立処理手段（例えば、図１１の同期処理部２１２；図１６のステップＡ７）として前記コンピュータを機能させるためのプログラムである。
【００１７】
この第５の発明によれば、他コンピュータとの間で、自シーケンス番号及び他シーケンス番号の送受信を行って自シーケンス番号と他シーケンス番号との相対関係を判定し、自シーケンス番号と他シーケンス番号との一定の相対関係が決定される。即ち、シーケンス番号の送受信及びその相対関係の判定といった少ない処理負担で、コンピュータ間の同期を確立することができる。またこのとき、特許文献１，２に開示されているようなマスター／スレーブ装置それぞれのコンピュータ間で処理負担が偏るといったことは無い。
【００１８】
第６の発明は、第５の発明のプログラムであって、
前記同期確立処理手段による同期確立処理の後に、前記各コンピュータの操作データに基づき、当該各コンピュータそれぞれの操作対象キャラクタの前記仮想三次元空間内での移動及び／又は動作を演算制御して前記空間構成演算を行うように前記コンピュータを機能させるためのプログラムである。
【００１９】
この第６の発明によれば、同期確立処理の後に、各コンピュータの操作データに基づき、各コンピュータそれぞれの操作対象キャラクタの仮想三次元空間内での移動及び／又は動作を演算制御して空間構成演算が行われる。従って、各コンピュータにおいてその操作対象キャラクタを操作してリアルタイムに進行するゲームを実現することが可能となる。
【００２０】
第７の発明は、第１〜第６の何れかの発明のプログラムを記憶したコンピュータ読み取り可能な情報記憶媒体（例えば、図１１の記憶部４００）である。
【００２１】
ここでいう「情報記憶媒体」とは、記憶されている情報をコンピュータが読み取り可能な、例えばハードディスクやＭＯ、ＣＤ−ＲＯＭ、ＤＶＤ、メモリカード、ＩＣメモリ等の記憶媒体である。従って、この第７の発明によれば、該情報記憶媒体に記憶されている情報をコンピュータに読み取らせて演算処理を実行させることで、第１〜第６の何れかの発明と同様の効果を奏することができる。
【発明の効果】
【００２２】
本発明によれば、ゲーム装置間で操作データを送受信してリアルタイムにゲームが進行されるピアツーピア型のゲームシステムにおける同期が実現できる。またこのとき、シーケンス番号が一定の相対関係にある操作データを基に空間構成演算が行われるため、画像生成の同期を少ない処理負担で実現することが可能となる。
【発明を実施するための最良の形態】
【００２３】
以下、図面を参照して本発明の好適な実施形態を説明する。尚、以下では、本発明を、格闘アクションゲームを実行する業務用ゲーム装置に適用した場合を説明するが、本発明の適用可能な実施形態がこれに限定されるものではない。
【００２４】
［全体構成］
図１は、本実施形態におけるゲームシステムの全体構成を示すブロック図である。同図に示すように、本実施形態のゲームシステムは２台のゲーム装置１０００を備え、各装置間が通信ケーブルＫによって通信可能に接続され、その通信形態はピアツーピア接続で成るものである。
【００２５】
図２に、ゲーム装置１０００の外観の一例を示す図である。同図に示すように、ゲーム装置１０００は、プレーヤが操作して格闘アクションゲームを楽しむものであり、ゲーム画面を表示するディスプレイ１０１２と、ゲームの効果音やＢＧＭを音出力するスピーカ１０１４と、ゲーム操作を入力するアナログスティック１０１６及びボタン１０１８と、ゲームプレイ料であるコインを投入するコイン投入部１０２２とを備えて構成されている。
【００２６】
ボタン１０１８は、上ボタン１０１８ａ、左ボタン１０１８ｂ、右ボタン１０１８ｃ及び下ボタン１０１８ｄの４種類を含み、上ボタン１０１８ａは「右パンチ」、左ボタン１０１８ｂは「左パンチ」、右ボタン１０１８ｃは「右キック」、下ボタン１０１８ｄは「左キック」の操作入力が可能となっている。また、従来と同様に、複数のボタン１０１８を同時入力することによって、或いはアナログスティック１０１６の傾斜角度とボタン１０１８の入力とを組み合わせることによって、更に異なる種類の操作入力が可能である。例えば、ボタン１０１８の入力と組み合わせてプレーヤキャラクタが前進する方向にアナログスティック１０１６を傾斜させることにより、種々の攻撃動作の操作入力が可能である。また、ボタン１０１８の入力と組み合わせてプレーヤキャラクタが後退する方向にアナログスティック１０１６を傾斜させることにより、種々の防御動作の操作入力が可能である。
【００２７】
また、ゲーム装置１０００には、ＣＰＵや画像生成ＩＣ、音生成ＩＣ、メモリ等が実装された制御基板１０２４が内蔵されており、ＣＰＵが、メモリから読み出したゲームプログラムやゲームデータ、アナログスティック１０１６及びボタン１０１８から入力される操作信号、接続されている他のゲーム装置１０００からの受信データ等に基づいて格闘アクションゲームを実行する。
【００２８】
このような２台のゲーム装置１０００が、例えば背中合わせに固定設置されて本実施形態のゲームシステムが構成される。各ゲーム装置１０００のプレーヤは、ディスプレイ１０１２に表示されたゲーム画面を見、スピーカ１０１４から出力されるゲーム音を聞きながら、アナログスティック１０１６やボタン１０１８を操作して、他のゲーム装置１０００のプレーヤと対戦する格闘アクションゲームを楽しむ。
【００２９】
［ゲーム画面］
図３は、ディスプレイ１０１２に表示されるゲーム画面の一例であり、対戦中の画面を示している。ゲーム画面は、仮想三次元空間に設定されたゲームステージに、当該ゲーム装置１０００のプレーヤの操作対象キャラクタであるプレーヤキャラクタと、他のゲーム装置１０００のプレーヤの操作対象キャラクタである相手キャラクタとが配置されたゲーム空間を、所与の仮想カメラ等の視点に基づいたゲーム画像として表示される。また、ゲーム空間は各ゲーム装置１０００において共有されるが、視点はゲーム装置１０００毎に、例えばプレーヤの指示に従って設定可能となっている。従って、各ゲーム装置１０００において、同一のゲーム空間を異なる視点で見たゲーム画像が表示され得ることになる。
【００３０】
同図によれば、対戦画面には、当該ゲーム装置１０００のプレーヤが操作するプレーヤキャラクタ１１と、対戦相手のプレーヤが操作する相手キャラクタ１２と、各キャラクタの体力値を示す体力ゲージ１３と、ラウンド毎の勝敗結果１４と、タイム１５とが表示される。かかる対戦格闘ゲームでは、各キャラクタは、キックやパンチといった様々な格闘技を繰り出す攻撃動作や、相手の攻撃から身を守る防御動作等を行って対戦する。各キャラクタは、相手のキャラクタの攻撃によってダメージを受けると、受けたダメージによって体力値が低下し、先に体力値がゼロになったほうが負けとなる。各キャラクタの現在の体力値は体力ゲージ１３で表示される。一回のゲームプレイは、所定時間に設定された複数のラウンドから構成され、各ラウンドでの残り時間はタイム１５で表示される。最終的により多くのラウンドで勝利したものが、該ゲームプレイにおける勝者となる。
【００３１】
［通信構成］
図４は、本実施形態の通信構成を示す図である。同図に示すように、各ゲーム装置１０００は、自装置での操作データを他のゲーム装置１０００（以下、「相手装置」という）に送信する。操作データとは、プレーヤによって為された操作を示すデータであり、具体的には、各ボタン１０１８の操作有無（ＯＮ／ＯＦＦ）や、アナログスティック１０１６の傾斜方向及び傾斜角度のデータである。
【００３２】
そして、各ゲーム装置１０００は、自装置での操作データ（自操作データ）と相手装置から受信した操作データ（他操作データ）とに基づいて各キャラクタの制御やヒットチェック等のゲーム演算を行い、ゲームを進行させる。即ち、自装置での操作データに基づいてプレーヤキャラクタ１１を制御するとともに、相手装置から受信した操作データに基づいて相手キャラクタ１２を制御する。
【００３３】
本実施形態において、ゲーム装置１０００間のデータ通信はフレームを単位として行われる。ここで、フレームとは、高速に画像を更新していく際の更新時間間隔のことを指し、例えば１／６０秒といった固定時間による時間単位のことである。各ゲーム装置１０００は、フレーム毎に、図５に示す構成のフレームデータＦＤを相手装置に送信する。
【００３４】
図５は、フレームデータＦＤのデータ構成の一例を示す図である。同図に示すように、フレームデータＦＤは、シーケンス番号を格納するシーケンス番号領域ＦＤ−１と、各種コマンド値を格納するコマンド領域ＦＤ−２と、自装置での操作データを格納する操作データ領域ＦＤ−３とから成る固定長データである。
【００３５】
シーケンス番号とは、フレームデータＦＤの送信順序を示す番号であり、送信順序に従った連続する整数値である。本実施形態において、フレームデータＦＤはフレーム毎に送信されるので、このシーケンス番号もフレーム毎に更新される。即ち、シーケンス番号は、各フレームを識別するフレーム番号に相当する。また、シーケンス番号は、ゲーム装置１０００毎に独立した値が設定されている。
【００３６】
コマンド領域ＦＤ−２に格納されるコマンド値として、本実施形態では同期コマンドがある。同期コマンドとは、後述のように、相手装置との同期を取るための同期処理にて用いられるコマンドである。また、操作データ領域ＦＤ−３には、詳細は後述するが、連続する過去数フレーム分の操作データの集合である操作履歴データが格納される。以下、シーケンス番号領域ＦＤ−１に格納されているシーケンス番号が「ｎ」のフレームデータＦＤを、フレームデータＦＤ［ｎ］という。
【００３７】
［同期処理］
各ゲーム装置１０００では、相手装置から受信したフレームデータＦＤ中の操作データに基づいてゲーム進行を行うが、当該フレームデータＦＤのシーケンス番号により、その操作データがどのフレームでの操作データであるかを判断することができる。
【００３８】
しかし、シーケンス番号はゲーム装置１０００毎に独立して設定された番号である。また、本実施形態の格闘アクションゲームはリアルタイムで進行するゲームであるとともに、ゲーム装置１０００それぞれにおいてゲーム演算が行われる。このため、双方のゲーム装置１０００でのゲーム進行の開始タイミングを合わせる必要があるとともに、互いにゲーム進行開始時点でのシーケンス番号を把握しておく必要がある。そこで、本実施形態では、ゲーム進行の開始前に、各ゲーム装置１０００において、フレーム毎に同期コマンドを送信することで相手装置との同期を取る同期処理が行われる。
【００３９】
図６は、同期処理を説明するための図である。同図中、右側を一方のゲーム装置Ａとし、左側を他方のゲーム装置Ｂとして、各ゲーム装置１０００での処理手順を、シーケンス番号を基準とした時系列に従って示している。ところで、上述のようにシーケンス番号はフレーム番号に相当する。このため、以下では、シーケンス番号が「ｎ」のフレームをフレームＦＬ［ｎ］という。
【００４０】
同図に示すように、各ゲーム装置１０００から、フレーム毎に同期コマンドが送信される。正確には、コマンド領域ＦＤ−２に同期コマンドをセットしたフレームデータＦＤが送信されることになるが、ここでは、説明の簡明のため、同期コマンドがセットされたフレームデータＦＤの送信を、単に「同期コマンドの送信」と表現して説明する。
【００４１】
そして、各ゲーム装置１０００では、フレーム毎に、この同期データの送受信の状況を基に、同期完了条件を満足するか否かが判定される。同期完了条件とは、相手装置との同期が取れたとみなされるための条件であり、具体的には、自装置から同期コマンドを送信し、且つ、相手装置から同期コマンドを受信していることである。
【００４２】
同期完了条件を満たすと判定されると、相手装置との同期が取れた（同期完了）と判断される。そして、そのフレームでのシーケンス番号が、自装置の同期完了時のシーケンス番号（以下、「自同期シーケンス番号」という）とされ、そのフレームで相手装置から受信したフレームデータＦＤ中のシーケンス番号が、相手装置の同期完了時のシーケンス番号（以下、「相手同期シーケンス番号」という）とされる。
【００４３】
同図では、ゲーム装置Ａからは、シーケンス番号が「１２」，「１３」，「１４」のフレームＦＬ［１２］，ＦＬ［１３］，ＦＬ［１４］それぞれにおいて同期コマンドが送信されている。また、ゲーム装置Ｂからは、シーケンス番号が「２３」のフレームＦＬ［２３］において同期コマンドが送信されている。
【００４４】
つまり、ゲーム装置Ａでは、フレームＦＬ［１２］において、同期コマンドを送信しているが、ゲーム装置Ｂから同期コマンドを受信していない。即ち、該フレームＦＬ［１２］では同期完了条件は満たされていない。そして、次のフレームＦＬ［１３］においては、同期コマンドを送信しており、ゲーム装置Ｂから同期コマンドを受信している。即ち、該フレームＦＬ［１３］では同期完了条件が満たされている。従って、ゲーム装置Ａでは、この同期完了条件が満たされたフレームＦＬ［１３］でのシーケンス番号「１３」が自同期シーケンス番号となり、該フレームで受信したフレームデータＦＤ［２３］のシーケンス番号「２３」が相手同期シーケンス番号となる。
【００４５】
一方、ゲーム装置Ｂでは、フレームＦＬ［２２］において、ゲーム装置Ａから同期コマンドを受信しているが、自装置から同期コマンドを送信していない。即ち、該フレームＦＬ［２２］では同期完了条件が満たされていない。そして、次のフレームＦＬ［２３］においては、同期コマンドを送信しており、ゲーム装置Ａから同期コマンドを受信している。即ち、該フレームＦＬ［２３］では同期完了条件が満たされている。従って、ゲーム装置Ｂでは、この同期完了条件が満たされたフレームＦＬ［２３］でのシーケンス番号「２３」が自同期シーケンス番号となり、該フレームで受信したフレームデータＦＤ［１３］のシーケンス番号「１３」が相手同期シーケンス番号となる。
【００４６】
このように、各ゲーム装置１０００において、フレーム毎に同期完了条件が満たされるか否かが判定されることにより、各ゲーム装置１０００で判定される同期シーケンス番号が一致する。同図では、ゲーム装置Ａ，Ｂの双方において、ゲーム装置Ａの同期シーケンス番号は「１３」と判定され、ゲーム装置Ｂの同期シーケンス番号は「２３」と判定されている。
【００４７】
そして、同期が取れたと判定されると、その次のフレームからゲーム進行処理が開始される。即ち、同図では、ゲーム装置Ａにおいては、フレームＦＬ［１４］からゲーム進行が開始され、ゲーム装置Ｂでは、フレームＦＬ［２４］からゲーム進行が開始される。尚、ここでのゲーム進行開始は、同期完了から所定数フレームをおいた後としても良い。
【００４８】
［ゲーム進行処理］
図７は、ゲーム進行中における１フレームでのゲーム装置１０００間のデータ通信手順を示す図である。同図中、左側をゲーム装置Ａとし、右側をゲーム装置Ｂとしている。また、ゲーム装置Ａにおけるシーケンス番号は「２１」であり、ゲーム装置Ｂにおけるシーケンス番号は「３１」である。
【００４９】
同図に示すように、ゲーム装置Ａにおいては、操作データＣＤａが取り込まれ、この取り込まれた操作データＣＤａが現在のシーケンス番号と対応付けられて自操作履歴バッファ４３２Ａに蓄積される。以下、シーケンス番号「ｎ」と対応付けられている操作データＣＤをＣＤ［ｎ］という。
【００５０】
自操作履歴バッファ４３２とは、自装置における操作データＣＤの履歴を蓄積するバッファである。つまり、同図において、ゲーム装置Ａにおける自操作履歴バッファ４３２Ａにはゲーム装置Ａでの操作データＣＤａが蓄積され、ゲーム装置Ｂにおける自操作履歴バッファ４３２にはゲーム装置Ｂでの操作データＣＤｂが蓄積される。この自操作履歴バッファ４３２に蓄積されている操作データＣＤは、当該操作データＣＤが取り込まれた時点でのシーケンス番号と対応付けられている。
【００５１】
また、自操作履歴バッファ４３２は、所定フレーム数分の操作データＣＤを蓄積可能となっている。同図では、自操作履歴バッファ４３２は１０フレーム分の操作データＣＤを蓄積可能である。このため、新たな１フレーム分の操作データＣＤが蓄積される際には、蓄積順が最も古い（即ち、シーケンス番号が最も小さい）操作データＣＤが削除される。本実施形態では、１フレーム毎に操作データＣＤが取り込まれ、自操作履歴バッファ４３２に蓄積されるので、自操作履歴バッファ４３２には、連続する過去１０フレーム分の操作データＣＤが蓄積されていることになる。
【００５２】
同図では、現在のシーケンス番号「２１」と対応付けられた操作データＣＤａ［２１］が自操作履歴バッファ４３２Ａに蓄積されている。このとき、自操作履歴バッファ４３２Ａから、蓄積順が最も古い操作データＣＤａ［１１］が削除されている。
【００５３】
次いで、この自操作履歴バッファ４３２Ａに格納されている各操作データＣＤａが、操作履歴データとしてフレームデータの操作データ領域ＦＤ−３に格納され、相手装置であるゲーム装置Ｂに送信される。即ち、ゲーム装置Ａにおける現在のシーケンス番号が「２１」であるので、シーケンス番号領域ＦＤ−１にシーケンス番号「２１」が格納されたフレームデータＦＤ［２１］が、ゲーム装置Ａからゲーム装置Ｂに送信される。
【００５４】
そして、ゲーム装置Ｂでは、ゲーム装置Ａから送信されたフレームデータＦＤ［２１］が受信され、受信されたフレームデータＦＤ［２１］中の操作データが相手操作履歴バッファ４３４Ｂに蓄積される。
【００５５】
相手操作履歴バッファ４３４とは、相手装置での操作データＣＤの履歴を蓄積するバッファである。つまり、同図において、ゲーム装置Ｂにおける相手操作履歴バッファ４３４Ｂにはゲーム装置Ａでの操作データＣＤａが蓄積され、ゲーム装置Ａにおける相手操作履歴バッファ４３４Ａにはゲーム装置Ｂでの操作データＣＤｂが蓄積される。
【００５６】
この相手操作履歴バッファ４３４は、フレームデータＦＤが受信される毎に当該フレームデータＦＤ中の操作データＣＤが蓄積されて更新される。従って、相手操作履歴バッファ４３４に蓄積されている操作データＣＤは、当該操作データＣＤが取り込まれた時点での相手装置でのシーケンス番号と対応付けられている。
【００５７】
また、この相手操作履歴バッファ４３４も、自操作履歴バッファ４３２と同様に所定フレーム数分の操作データＣＤを蓄積可能となっている。同図では、自操作履歴バッファ４３２に等しい１０フレーム分の操作データＣＤを蓄積可能である。
【００５８】
また、ゲーム装置Ｂにおいても、ゲーム装置Ａと同様に、操作データＣＤｂが取り込まれ、ゲーム装置Ｂにおける現在のシーケンス番号「３１」と対応付けられて自操作履歴バッファ４３２Ｂに蓄積される。次いで、自操作履歴バッファ４３２Ｂに格納されている操作データＣＤｂが操作履歴データとして格納されたフレームデータＦＤ［３１］が、相手装置であるゲーム装置Ａに送信される。そして、ゲーム装置Ａでは、ゲーム装置Ｂから受信されたフレームデータＦＤ［３１］中の操作データが相手操作履歴バッファ４３４Ａに蓄積されて更新される。
【００５９】
尚、このゲーム装置Ａからゲーム装置ＢへのフレームデータＦＤの送信、及び、ゲーム装置Ｂからゲーム装置ＡのフレームデータＦＤの送信は並行して行われる。
【００６０】
図８は、ゲーム進行処理を説明するための図である。同図中、左側を一方のゲーム装置Ａとし、右側を他方のゲーム装置Ｂとして、各ゲーム装置１０００での処理手順を、シーケンス番号を基準とした時系列に従って示している。
【００６１】
上述のように、ゲーム進行中、各ゲーム装置１０００では、フレーム毎に、（ａ）操作データＣＤが取り込まれ、現在のシーケンス番号と対応付けられて自操作履歴バッファ４３２に蓄積されるとともに、（ｂ）更新後の自操作履歴バッファ４３２に蓄積されている各操作データＣＤを含むフレームデータＦＤが相手装置に送信される。また、（ｃ）相手装置から受信したフレームデータＦＤ中の操作履歴データが相手操作履歴バッファ４３４に蓄積される。
【００６２】
更に、（ｄ）自操作履歴バッファ４３２及び相手操作履歴バッファ４３４から、所定のシーケンス番号と対応付けられている操作データＣＤが読み出され、この読み出された各操作データを基に、各キャラクタ（プレーヤキャラクタ１１及び相手キャラクタ１２）の制御やヒットチェック等のゲーム演算（即ち、ゲーム空間を再設定する空間構成演算）が行われ、１フレーム分のゲーム進行が行われる。このとき、自操作履歴バッファ４３２から読み出された操作データＣＤを基にプレーヤキャラクタ１１が制御され、相手操作履歴バッファ４３４から読み出された操作データＣＤを基に相手キャラクタ１２が制御される。
【００６３】
自操作履歴バッファ４３２及び相手操作履歴バッファ４３４から読み出される各操作データＣＤのシーケンス番号（以下、「読出シーケンス番号」という）は、次のように決定される。即ち、自操作履歴バッファ４３２から読み出される操作データＣＤのシーケンス番号（以下、「自読出シーケンス番号」という）は、次式で与えられる。
自読出シーケンス番号＝自同期シーケンス番号＋経過フレーム数−遅延フレーム数
また、相手操作履歴バッファ４３４から読み出される操作データＣＤのシーケンス番号（以下、「相手読出シーケンス番号」という）は、次式で与えられる。
相手読出シーケンス番号＝相手同期シーケンス番号＋経過フレーム数−遅延フレーム数
【００６４】
ここで、経過フレーム数とは、自装置における同期完了時からの経過フレーム数であり、同期完了時のフレームを「０」とした相対的なフレーム数である。即ち、経過フレーム数は、自同期シーケンス番号と現在のシーケンス番号との差分に等しい。
【００６５】
また、遅延フレーム数とは、当該フレームにおいてゲーム演算に使用する操作データが、当該フレームから数えて何フレーム前の操作データであるかを示す数である。本実施形態では、この遅延フレーム数は「１」であり、１フレーム前の操作データを基にゲーム演算が行われる。これは、ゲーム装置１０００間で操作データの送受信を行っているからである。つまり、スタンドアロンで動作するゲーム装置の場合、各フレームで取り込まれた操作データは当該フレームでのゲーム演算に用いられる。即ち、遅延フレーム数は「０」である。しかし、本実施形態のように、ゲーム装置１０００間で操作データを送受信する場合、この操作データの送受信に所定時間を要するため、各フレームで取り込んだ操作データを当該フレームで使用することが難しい。このため、本実施形態では最大１フレームの遅れを見込んで遅延フレーム数としている。
【００６６】
従って、１フレーム分のゲーム演算に使用される自装置での操作データＣＤと相手装置での操作データＣＤとは、それぞれに対応付けられているシーケンス番号（即ち、該操作データが取り込まれた時点でのシーケンス番号）が、同期完了時のシーケンス番号を「０」としたときの相対的な番号が等しいという一定の相対関係にある。
【００６７】
図８において、ゲーム装置Ａ，Ｂそれぞれでの同期シーケンス番号は「１３」，「２３」である。即ち、ゲーム装置Ａにおいて、自同期シーケンス番号は「１３」であり、相手同期シーケンス番号は「２３」である。また、ゲーム装置Ｂにおいて、自同期シーケンス番号は「２３」であり、相手同期シーケンス番号は「１３」である。
【００６８】
そして、ゲーム装置Ａにおいて、例えばフレームＦＬ［２１］では、経過フレーム数は「８（＝２１−１３）」である。従って、自読出シーケンス番号は「２０（＝１３＋８−１）」であり、自操作履歴バッファ４３２Ａからシーケンス番号「２０」の操作データＣＤａ［２０］が読み出される。また、相手読出シーケンス番号は「３０（＝２３＋８−１）」であり、相手操作履歴バッファ４３４Ａからシーケンス番号「３０」の操作データＣＤｂ［３０］が読み出される。そして、この読み出された操作データＣＤａ［２０］，Ｄｂ［３０］を基に、ゲーム演算が行われる。
【００６９】
また、ゲーム装置Ｂにおいて、経過フレーム数が同じく「８」であるシーケンス番号が「３１」のフレームＦＬ［３１］では、自読出シーケンス番号は「３０（＝２３＋８−１）」であり、自操作履歴バッファ４３２Ｂからシーケンス番号「３０」の操作データＣＤｂ［３０］が読み出される。また、相手読出シーケンス番号は「２０＝（１３＋８−１）」となり、相手操作履歴バッファ４３４Ｂからシーケンス番号「２０」の操作データＣＤａ［２０］が読み出される。そして、この読み出された操作データＣＤｂ［３０］，Ｄａ［２０］を基に、ゲーム演算が行われる。
【００７０】
ところで、ゲーム装置１０００間の通信状況等により、送信したフレームデータＦＤが相手装置で受信されない“データの不達”が生じる恐れがある。このため、本実施形態では、このデータの不達に対処するため、フレーム毎に、過去複数フレーム分の操作データＣＤを送信している。
【００７１】
図９は、データの不達が生じた場合の処理手順を説明するための図である。同図中、左側を一方のゲーム装置Ａとし、右側を他方のゲーム装置Ｂとして、各ゲーム装置１０００での処理手順を、シーケンス番号を基準とした時系列に従って示している。
【００７２】
同図によれば、ゲーム装置ＢからフレームＦＬ［３３］，ＦＬ［３４］において送信されたフレームデータＦＤ［３３］，ＦＤ［３４］がゲーム装置Ａで受信されていない。即ち、ゲーム装置Ｂからゲーム装置Ａへの不達が生じている。
【００７３】
この場合、ゲーム装置Ａにおいては、フレームＦＬ［２２］では、操作データＣＤａ［２１］，ＣＤｂ［３１］に基づいてゲーム演算が行われるとともに、ゲーム装置Ｂから送信されたフレームデータＦＤ［３２］が受信されている。また、次のフレームＦＬ［２３］では、操作データＤａ［２２］，Ｄｂ［３２］に基づいてゲーム演算が行われるが、ゲーム装置Ｂから送信されたフレームデータＦＤ［３３］が受信されていない。
【００７４】
そして、その次のフレームＦＬ［２４］では、本来ならば、操作データＣＤａ［２３］，ＣＤｂ［３３］に基づいてゲーム演算が行われるが、操作データＣＤｂ［３３］、即ちフレームデータＦＤ［３３］が受信されていないため、ゲーム演算が行われない。従って、その前フレームＦＬ［２３］と同一のゲーム画像が表示される（画面が更新されない）。但し、フレームデータＦＤ［２４］の送信は行われる。
【００７５】
また、その次のフレームＦＬ［２５］においても同様に、ゲーム進行が行われず、その前フレームＦＬ［２４］と同一のゲーム画像、即ちフレームＦＬ［２３］と同一のゲーム画像が表示される（画面が更新されない）。但し、フレームデータＦＤ［２５］の送信は行われる。そして、このフレームＦＬ［２５］において、フレームデータＦＤ［３５］が受信されると、その次のフレームＦＬ［２６］からゲーム演算が再開される。
【００７６】
このとき、ゲーム演算の再開後、最初のフレームＦＬ［２６］においては、ゲーム演算が行われなかったフレームＦＬ［２４］，ＦＬ［２５］で行われるべき２フレーム分のゲーム演算と、当該フレームＦＬ［２６］で行われるべき１フレーム分のゲーム演算との合計３フレーム分のゲーム演算が行われる。即ち、フレームＦＬ［２４］で行われるべき、操作データＣＤａ［２３］，ＣＤｂ［３３］に基づく１フレーム分のゲーム演算と、フレームＦＬ［２５］で行われるべき操作データＣＤａ［２４］，ＣＤｂ［３４］に基づく１フレーム分のゲーム演算と、当該フレームＦＬ［２６］で行われるべき操作データＣＤａ［２５］，ＣＤｂ［３５］に基づく１フレーム分のゲーム演算との合計３フレーム分のゲーム演算が行われる。そして、この３フレーム分のゲーム演算によって再設定（構成）されたゲーム空間のゲーム画像が生成され、ゲーム画面として表示される。
【００７７】
ここで、各フレームにおいて何フレーム分のゲーム演算を行うかは、その時点で相手装置から受信している最新のフレームデータＦＤのシーケンス番号（以下、「最新受信シーケンス番号」という）と、前回のゲーム演算で用いた相手装置の操作データＣＤのシーケンス番号（以下、「前回使用受信シーケンス番号」という）との差分によって決まり、この差分に相当するフレーム数分のゲーム演算が行われる。
【００７８】
本実施形態では、各フレームでのゲーム演算は、その前フレームでの操作データを基に行われる。このため、フレームデータＦＤの不達が無い場合、最新受信シーケンス番号と前回使用受信シーケンス番号との差分は「１」となる。従って、この差分が「１」の場合には、通常通り１フレーム分のゲーム演算を行えばよい。また、差分が「０」の場合には、未だゲーム演算に使用していない新たな相手装置の操作データＣＤが受信されていないので、ゲーム演算を行わない。また、差分が「２」以上の場合には、自装置でのゲーム演算の進行が相手装置でのゲーム演算の進行に対して遅れているので、この差分に相当するフレーム数分のゲーム演算を行えばよい。
【００７９】
尚、図９において、ゲーム装置Ａからはフレーム毎にフレームデータＦＤが送信され、ゲーム装置Ｂでは、ゲーム装置Ａから送信されるフレームデータＦＤが受信されている。即ち、ゲーム装置Ａからゲーム装置Ｂへの不達は生じていない。このため、ゲーム装置Ｂでは、通常通り、各フレームにおいて１フレーム分のゲーム演算が行われる。
【００８０】
図１０は、図９の場合にゲーム装置Ａの各フレームで行うゲーム演算のフレーム数の決定を説明するための図であり、シーケンス番号２１ａ毎に、最新受信シーケンス番号２１ｂと、前回使用受信シーケンス番号２１ｃと、差分２１ｄとを対応付けて示している。
【００８１】
図１０によれば、フレームＦＬ［２２］において、最新受信シーケンス番号は「３１」であり、前回使用受信シーケンス番号は「３０」である。従って、差分は「１」となり、該フレームＦＬ［２２］においては、１フレーム分のゲーム演算が行われる。
【００８２】
次のフレーム「２３」では、最新受信シーケンス番号は、その前フレームＦＬ［２２］で受信されたフレームデータＦＤ［３２］のシーケンス番号「３２」であり、前回使用受信シーケンス番号は「３１」である。従って、受信シーケンス番号差分は「１」となり、該フレームＦＬ［２３］においては、１フレーム分のゲーム演算が行われる。
【００８３】
次のフレーム「２４」では、その前フレームＦＬ［２３］でフレームデータＦＤが受信されていないため、最新受信シーケンス番号は、前フレームＦＬ［２３］での最新受信シーケンス番号「３２」がそのまま引き継がれる。また、前回使用受信シーケンス番号は「３２」である。従って、受信シーケンス番号差分は「０」となり、該フレームＦＬ［２４］においてゲーム演算は行われない。
【００８４】
その次のフレーム「２５」では、その前フレームＦＬ［２４］でフレームデータＦＤが受信されていないため、前フレームＦＬ［２４］での最新受信シーケンス番号「３２」がそのまま引き継がれる。また、前回使用受信シーケンス番号は、その前フレームＦＬ［２４］でゲーム演算が行われていないため、前フレームでの前回受信シーケンス番号「３２」がそのまま引き継がれる。従って、受信シーケンス番号差分は「０」となり、該フレームＦＬ［２５］においてゲーム演算は行われない。
【００８５】
その次のフレームＦＬ［２６］では、最新受信シーケンス番号は、その前フレームＦＬ［２５］で受信されたフレームデータＦＤ［３５］のシーケンス番号「３５」となる。また、前回使用受信シーケンス番号は、前フレームＦＬ［２５］でゲーム演算が行われていないため、前フレームＦＬ［２５］での前回使用受信シーケンス番号「３２」がそのまま引き継がれる。従って、受信シーケンス番号差分は「３」となり、該フレーム「２６」において、３フレーム分のゲーム演算が行われる。
【００８６】
そして、その次フレームＦＬ［２７］では、最新受信シーケンス番号は「３６」となり、前回使用受信シーケンス番号は「３５」となる。従って、該フレームＦＬ［２７］では、１フレーム分のゲーム演算が行われる。
【００８７】
このようにすることで、フレームデータＦＤの不達によりゲーム演算で使用する相手装置での操作データが受信されていない場合にはゲーム演算が行われず、フレームデータＦＤが受信された後、ゲーム演算が行われてゲーム進行が再開される。このとき、最初のゲーム演算を、最新受信シーケンス番号と前回使用受信シーケンス番号との差分に等しいフレーム数分行うことで、相手装置に対するゲーム進行の遅れを取り戻すことができる。
【００８８】
［機能構成］
図１１は、本実施形態におけるゲーム装置１０００の機能構成を示すブロック図である。同図によれば、ゲーム装置１０００は、操作入力部１００と、処理部２００と、画像表示部３３０と、音出力部３５０と、記憶部４００と、通信部５００とを備えて構成される。
【００８９】
操作入力部１００は、プレーヤによる操作指示を受け付け、操作に応じた操作信号を処理部２００に出力する。この機能は、例えばボタンスイッチやレバー、ダイヤル、マウス、キーボード、各種センサ等によって実現される。図２では、アナログスティック１０１６やボタン１０１８がこれに該当する。
【００９０】
処理部２００は、ゲーム装置１０００の全体制御やゲームの進行、画像生成等の各種演算処理を行う。この機能は、例えばＣＰＵ（ＣＩＳＣ型、ＲＩＳＣ型）、ＡＳＩＣ（ゲートアレイ等）等の演算装置やその制御プログラムにより実現される。図２では、制御基板１０２４に実装されているＣＰＵ等がこれに該当する。
【００９１】
また、処理部２００は、主にゲームの実行に係る演算処理を行うゲーム演算部２１０と、ゲーム演算部２１０の処理によって求められた各種のデータに基づき、仮想カメラ等の所与の視点から見た仮想三次元空間（ゲーム空間）の画像を生成する画像生成部２３０と、効果音やＢＧＭ等のゲーム音を生成する音生成部２５０と、を含んでいる。
【００９２】
ゲーム演算部２１０は、操作入力部１００から入力された操作信号や、記憶部４００から読み出したゲーム情報（プログラム及びデータ）等に基づいて種々のゲーム処理を実行する。ゲーム処理としては、例えばゲーム空間へのプレーヤキャラクタ１１や相手キャラクタ１２の配置処理、仮想カメラの配置処理、オブジェクトの交差判定処理（ヒットチェック）、対戦結果の算出等がある。また、ゲーム演算部２１０は、同期処理部２１２と、ゲーム進行部２１４とを含んでいる。
【００９３】
同期処理部２１２は、相手装置との同期を取る同期処理を行う。具体的には、フレーム毎に、同期コマンドをセットしたフレームデータＦＤを相手装置に送信するとともに、相手装置から受信したフレームデータＦＤ中に同期データがセットされているか否かにより、同期完了条件を満たすか否かを判定する。同期完了条件を満たすならば、相手装置との同期が取れた（同期完了）と判断し、現在のシーケンス番号を自装置の同期完了時のシーケンス番号である自同期シーケンス番号とするとともに、受信したフレームデータＦＤ中のシーケンス番号を相手装置の同期完了時のシーケンス番号である相手同期シーケンス番号とする。
【００９４】
同期処理部２１２により決定された各同期シーケンス番号は、同期シーケンス番号情報４３６に格納される。図１２に、同期シーケンス番号情報４３６のデータ構成の一例を示す。同図によれば、同期シーケンス番号情報４３６は、自同期シーケンス番号４３６ａと、相手同期シーケンス番号４３６ｂとを格納している。
【００９５】
ゲーム進行部２１４は、同期処理部２１２による相手装置との同期完了後、ゲームを進行させるゲーム進行処理を行う。具体的には、フレーム毎に、（ａ）操作入力部１００から入力される操作データＣＤを取り込み、取り込んだ操作データＣＤを現在のシーケンス番号と対応付けて自操作履歴バッファ４３２に蓄積する。そして、（ｂ）自操作履歴バッファ４３２に格納されている各操作データＣＤを格納したフレームデータＦＤを相手装置に送信する。また、（ｃ）相手装置から受信したフレームデータＦＤ中の操作データを相手操作履歴バッファ４３４に蓄積するとともに、（ｄ）受信シーケンス番号情報４３８の最新受信シーケンス番号を、受信したフレームデータＦＤのシーケンス番号に更新する。
【００９６】
受信シーケンス番号情報４３８とは、受信シーケンス番号の情報である。図１３に、受信シーケンス番号情報４３８のデータ構成の一例を示す。同図によれば、受信シーケンス番号情報４３８は、最新受信シーケンス番号４３８ａと、前回使用受信シーケンス番号４３８ｂとを格納している。最新受信シーケンス番号４３８ａは、フレーム毎に受信されたフレームデータＦＤのシーケンス番号に更新される。前回使用受信シーケンス番号４３８ｂは、後述のように、フレーム毎に、該フレームでのゲーム演算で最後に使用された相手装置の操作データＣＤのシーケンス番号を示す相手読出シーケンス番号に更新される。
【００９７】
更に、ゲーム進行部２１４は、フレーム毎に、（ｅ）自操作履歴バッファ４３２及び相手操作履歴バッファ４３４から読み出した操作データＣＤに基づくゲーム進行を行う。即ち、受信シーケンス番号情報４３８を参照し、最新受信シーケンス番号と前回使用受信シーケンス番号との差分を算出する。そして、この算出した差分に等しいフレーム数分、ゲーム演算（空間構成演算）を行う。
【００９８】
ここで、１フレーム分のゲーム演算として次の処理を行う。即ち、自同期シーケンス番号に経過フレーム数を加算した値から「１」減算して自読出シーケンス番号を算出し、自操作履歴バッファ４３２から、算出した自読出シーケンス番号に対応する操作データＣＤを読み出す。また、相手同期シーケンス番号に経過フレーム数を加算した値から「１」減算して相手読出シーケンス番号を算出し、相手操作履歴バッファ４３４から、算出した相手読出シーケンス番号に対応する操作データＣＤを読み出す。そして、読み出した各操作データＣＤに基づいて、プレーヤキャラクタ１１や相手キャラクタ１２の再配置、ヒットチェック等を行う。
【００９９】
そして、算出した差分に等しいフレーム数分のゲーム演算を行うと、画像生成部２３０に所与の視点に基づくゲーム空間の画像（ゲーム画像）を生成させ、生成した画像を画像表示部３３０に表示させてゲーム画面を更新させる。
【０１００】
ここで、算出された各読出シーケンス番号は、読出シーケンス番号情報４４２に格納される。図１４に、読出シーケンス番号情報４４２のデータ構成の一例を示す。同図によれば、読出シーケンス番号情報４４２は、自読出シーケンス番号４４２ａと、相手読出シーケンス番号４４２ｂとを格納している。この読出シーケンス番号情報４４２は、１フレーム分のゲーム演算が行われる毎に更新される。
【０１０１】
また、自読出シーケンス番号及び相手読出シーケンス番号の算出に要するデータの内、同期シーケンス番号は同期シーケンス番号情報４３６に格納されており、経過フレーム数はフレーム進行情報４４４に格納されている。
【０１０２】
図１５に、フレーム進行情報４４４のデータ構成の一例を示す。同図によれば、フレーム進行情報４４４は、現在のシーケンス番号４４４ａと、経過フレーム数４４４ｂとを格納している。シーケンス番号４４４ａは、フレームデータの送信毎、即ち１フレーム毎に「１」加算した値に更新される。経過フレーム数４４４ｂは、１フレーム分のゲーム演算が行われる毎に「１」加算した値に更新される。
【０１０３】
画像生成部２３０は、ゲーム演算部２１０による演算結果に基づき、幾何変換処理やシェーディング処理等を実行してゲーム画面を表示するためのゲーム画像（３ＤＣＧ画像）を生成し、生成した画像の画像信号を画像表示部３３０に出力する。図２では、制御基板１０２４に実装されている画像生成ＩＣがこれに相当する。
【０１０４】
画像表示部３３０は、画像生成部２３０からの画像信号に基づいて、例えば１／６０秒のフレーム時間毎に１フレームの画面を再描画しながらゲーム画面を表示する。この機能は、例えばＣＲＴ、ＬＣＤ、ＥＬＤ、ＰＤＰ、ＨＭＤ等のハードウェアによって実現される。図２では、ディスプレイ１０１２がこれに該当する。
【０１０５】
音生成部２５０は、ゲーム中に使用される効果音やＢＧＭ等のゲーム音を生成し、生成したゲーム音の音信号を音出力部３５０に出力する。図２では、制御基板１０２４に実装されている音生成ＩＣがこれに該当する。
【０１０６】
音出力部３５０は、音生成部２５０からの音信号に基づいて、ＢＧＭや効果音等のゲーム音声を出力する。この機能は、例えばスピーカ等によって実現される。図２では、スピーカ１０１４がこれに相当する。
【０１０７】
記憶部４００は、処理部２００にゲーム装置１０００を統合的に制御させるための諸機能を実現するためのシステムプログラムや、ゲームを実行させるために必要なプログラムやデータ等を記憶するとともに、処理部２００の作業領域として用いられ、処理部２００が各種プログラムに従って実行した演算結果や操作入力部１００から入力される入力データ等を一時的に記憶する。この機能は、例えば各種ＩＣメモリやハードディスク、ＣＤ−ＲＯＭ、ＤＶＤ、ＭＯ、ＲＡＭ、ＶＲＡＭ等によって実現される。図２では、制御基板１０２４に実装されているＲＯＭやＲＡＭ等がこれに該当する。
【０１０８】
また、記憶部４００は、プログラムとしてゲームプログラム４１０を記憶し、ゲームデータとして、ステージ設定情報４２２と、キャラクタ情報４２４と、対戦結果情報４２６と、同期シーケンス番号情報４３６と、受信シーケンス番号情報４３８と、読出シーケンス番号情報４４２と、フレーム進行情報４４４とを記憶しているとともに、自操作履歴バッファ４３２と、相手操作履歴バッファ４３４とを備えている。
【０１０９】
ステージ設定情報４２２は、ゲーム空間に対戦の舞台となるゲームステージを設定するための情報であり、背景オブジェクト等のモデリングデータやテクスチャデータ等を含んでいる。
【０１１０】
キャラクタ情報４２４は、対戦している各キャラクタ（プレーヤキャラクタ１１及び相手キャラクタ１２）に関する情報であり、モデリングデータやテクスチャデータ、能力パラメータ、モーションデータ、現在の位置及び姿勢、体力値等のデータ等を含んでいる。
【０１１１】
対戦結果情報４２６は、該ゲームプレイにおける対戦結果の情報であり、各ラウンドでの勝敗を格納している。
【０１１２】
通信部５００は、通信ケーブルＫに接続して外部装置（主に、相手のゲーム装置１０００）とのデータ通信を行う。この機能は、通信ケーブルＫのジャックや制御回路などによって実現される。尚、通信部５００が通信時に供するプロトコル等に係る情報は、例えば記憶部４００に記憶されており、適宜読み出して利用される。
【０１１３】
［処理の流れ］
図１６は、本実施形態における全体処理の流れを説明するためのフローチャートである。この処理は、例えばコイン投入部１０２２にゲームプレイ料のコインが投入されることで開始される１回のゲームプレイにかかる処理であり、ゲーム演算部２１０がゲームプログラム４１０に従った処理を実行することで実現される。
【０１１４】
同図によれば、ゲーム演算部２１０は、先ず、他のゲーム装置１０００のプレーヤと対戦する対戦プレイが選択されたか否かを判断し、対戦プレイでないならば（ステップＡ１：ＮＯ）、コンピュータ制御されるＣＯＭキャラクタと対戦する通常のＣＯＭ対戦処理を行う（ステップＡ１３）。
【０１１５】
一方、対戦プレイが選択されたならば（ステップＡ１：ＹＥＳ）、他のゲーム装置１０００に対戦を申し込む、或いは、他のゲーム装置１０００からの対戦申し込みを受け付けることで対戦相手の決定処理を行い、対戦相手を決定すると（ステップＡ３：ＹＥＳ）、所定のフレーム時間間隔で、ループＡの処理を繰り返し実行する。ループＡでは、相手装置との同期が取れたか否かを示す同期完了フラグが「１」に設定されているか否かを判定し、「１」に設定されていないならば（ステップＡ５：ＮＯ）、同期処理部２１２が同期処理を行う（ステップＡ７）。
【０１１６】
図１７は、同期処理の流れを説明するためのフローチャートである。同図によれば、同期処理部２１２は、先ず、同期コマンドをセットしたフレームデータＦＤを相手装置に送信する（ステップＢ１）。また、相手装置からフレームデータＦＤを受信したか否かを判定し、受信していないならば（ステップＢ３：ＮＯ）、ステップＢ１３に移行し、受信したならば（ステップＢ３：ＹＥＳ）、その受信したフレームデータＦＤ中に同期コマンドがセットされているか否かを判定する。
【０１１７】
同期コマンドがセットされていないならば（ステップＢ５：ＮＯ）、ステップＢ１３に移行する。同期コマンドがセットされているならば（ステップＢ５：ＹＥＳ）、同期完了条件が満足されたと判断し、その受信したフレームデータＦＤのシーケンス番号を相手同期シーケンス番号とするとともに（ステップＢ７）、現在のシーケンス番号を自同期シーケンス番号として、同期シーケンス番号情報４３６を更新する（ステップＢ９）。そして、同期完了フラグを、同期完了を示す「１」に設定する（ステップＢ１１）。
【０１１８】
その後、ステップＢ１３において、同期処理部２１２は、現在のシーケンス番号を「１」加算した値に更新する（ステップＢ１３）。以上の処理を行うと、同期処理は終了となる。同期処理が終了すると、１回分のループＡの処理は終了となる。
【０１１９】
図１６のステップＡ５において、同期完了フラグが「１」に設定されているならば（ステップＡ５：ＹＥＳ）、ゲーム進行部２１４がゲーム進行処理を行う（ステップＡ９）。
【０１２０】
図１８は、ゲーム進行処理の流れを説明するためのフローチャートである。同図によれば、ゲーム進行部２１４は、操作入力部１００から入力される操作データＣＤを取り込み、取り込んだ操作データＣＤを、現在のシーケンス番号と対応付けて自操作履歴バッファ４３２に蓄積する（ステップＣ１）。そして、更新後の自操作履歴バッファ４３２に蓄積されている各操作データＣＤを格納したフレームデータＦＤを相手装置に送信する（ステップＣ３）。
【０１２１】
また、ゲーム進行部２１４は、相手装置からフレームデータＦＤを受信したか否かを判断し、受信していないならば（ステップＣ５：ＮＯ）、ステップＣ９に移行する。フレームデータＦＤを受信したならば（ステップＣ５：ＹＥＳ）、その受信したフレームデータＦＤ中の操作データを相手操作履歴バッファ４３４に蓄積して更新する（ステップＣ７）。
【０１２２】
次いで、ゲーム進行部２１４は、受信シーケンス番号情報４３８を参照し、最新受信シーケンス番号と前回使用受信シーケンス番号との差分を算出する（ステップＣ９）。そして、その算出した差分に等しい回数だけゲーム演算処理を実行して、当該差分に等しいフレーム数分だけゲームを進行させる（ステップＣ１１）。尚このとき、算出した差分が「０」である場合には、ゲーム演算処理は行なわれず、ゲームは進行されない。
【０１２３】
図１９は、ゲーム演算処理の流れを説明するためのフローチャートである。同図によれば、ゲーム進行部２１４は、相手同期シーケンス番号に経過フレーム数を加算した値から遅延フレーム数である「１」を減算して、相手読出シーケンス番号を算出する（ステップＤ１）。そして、相手操作履歴バッファ４３４から、算出した相手読出シーケンス番号に対応する操作データＣＤを読み出す（ステップＤ３）。また、自同期シーケンス番号に経過フレーム数を加算した値から遅延フレーム数である「１」を減算して、自読出シーケンス番号を算出する（ステップＤ５）。そして、自操作履歴バッファ４３２から、算出した自読出シーケンス番号に対応する操作データを読み出す（ステップＤ７）。
【０１２４】
次いで、読み出した各操作データＣＤに基づき、プレーヤキャラクタ１１や相手キャラクタ１２の再配置、ヒットチェック等のゲーム演算を行い、ゲーム空間を再設定する（ステップＤ９）。その後、経過フレーム数を「１」加算した値に更新する（ステップＤ１１）。以上の処理を行うと、ゲーム演算処理は終了となる。
【０１２５】
算出した差分に等しい回数のゲーム演算処理を終了すると、ゲーム進行部２１４は、所与の視点に基づくゲーム空間のゲーム画像を画像生成部２３０に生成させ、生成した画像を画像表示部３３０に表示させてゲーム画面を更新させる（ステップＣ１３）。
【０１２６】
次いで、受信したフレームデータＦＤのシーケンス番号を最新受信シーケンス番号とするとともに（ステップＣ１５）、相手読出受信シーケンス番号を前回使用受信シーケンス番号として受信シーケンス番号情報４３８を更新する（ステップＣ１７）。また、現在のシーケンス番号を「１」加算した値に更新する（ステップＣ１９）。以上の処理を行うと、ゲーム進行処理は終了となる。
【０１２７】
図１６において、ゲーム進行処理が終了すると、ゲーム演算部２１０は、全ラウンドが終了したか否かを判断し、終了していないならば（ステップＡ１１：ＮＯ）、再度、ループＡの処理を繰り返す。全ラウンドが終了したならば（ステップＡ１１：ＹＥＳ）、ループＡを終了する。そして、ループＡが終了すると、ゲームプレイが終了となり、本処理は終了となる。
【０１２８】
［作用・効果］
以上、本実施形態によれば、ピアツーピア接続された各ゲーム装置１０００において、プレーヤ対戦の格闘アクションゲームを実行する場合、先ず、ゲーム装置１０００間の同期を取る同期処理が行なわれ、その後、各ゲーム装置１０００においてゲーム進行が開始される。
【０１２９】
同期処理では、フレーム毎に、同期コマンドをセットしたフレームデータＦＤが相手装置に送信される。そして、相手装置に同期コマンドを送信し、且つ、相手装置から同期コマンドが受信されたかといった同期完了条件が満たされるか否かにより、同期が取られたか否かが判定される。同期完了条件が満たされると、その時点で同期が確立したと判断され、自装置のシーケンス番号が自同期シーケンス番号とされるとともに、受信されたフレームデータＦＤのシーケンス番号が相手同期シーケンス番号とされる。
【０１３０】
次いで、ゲーム進行中では、この各同期シーケンス番号及び同期完了時からの経過フレーム数を基に算出された読出シーケンス番号に対応する操作データＣＤが、自操作履歴バッファ４３２及び相手操作履歴バッファ４３４から読み出され、この読み出された操作データＣＤを基にゲーム演算が行われる。このようにすることで、どちらかに処理負担が偏ることなく且つ少ない処理負担で、ピアツーピア接続されたゲーム装置１０００間の同期を実現することができる。
【０１３１】
［変形例］
尚、本発明を適用可能な実施形態は上述した実施形態に限定されることなく、本発明の趣旨を逸脱しない範囲で適宜変更可能なのは勿論である。
【０１３２】
（Ａ）ゲーム装置１０００の数
例えば、上述した実施形態では、ピアツーピア接続された２台のゲーム装置１０００から成るゲームシステムについて説明したが、３台以上のゲーム装置１０００から成るゲームシステムについても同様に適用可能である。この場合、相手装置が２台以上となる。従って、各ゲーム装置１０００において、同期処理では、相手装置それぞれに同期コマンドを送信し、且つ、全相手装置から同期コマンドを受信したことが同期完了条件となる。
そして、このときの自装置のシーケンス番号を自同期シーケンス番号とし、各相手装置から受信したフレームデータＦＤのシーケンス番号を、当該相手装置の相手同期シーケンス番号とする。また、ゲーム進行処理では、１フレーム分のゲーム演算を行う際、相手装置それぞれについて、該相手装置の相手同期シーケンス番号に基づいて相手読出シーケンス番号を算出し、算出した読出シーケンス番号に対応する操作データを読み出す。そして、この読み出した各相手装置での操作データと、自装置での操作データとを使用してゲーム演算を行う。
【０１３３】
（Ｂ）適用するゲーム
また、上述した実施形態では、格闘アクションゲームに適用した場合を説明したが、各ゲーム装置で同一のゲーム空間を共有され、リアルタイムで進行する他のゲームにも適用可能である。特に、ゲーム装置毎に異なる視点のゲーム画像となることが望ましいゲームへの適用が好適である。例えば、一人称視点のシューティングゲームや、カーレースやバイクレース等のレースゲームなどが挙げられる。
【図面の簡単な説明】
【０１３４】
【図１】本実施形態におけるゲームシステムの全体構成図。
【図２】ゲーム装置の概観例。
【図３】ゲーム装置におけるゲーム画面例。
【図４】ゲームシステムの通信構成図。
【図５】フレームデータの構成図。
【図６】同期処理の説明図。
【図７】データ通信手順の説明図。
【図８】ゲーム進行処理（正常時）の説明図。
【図９】ゲーム進行処理（データの不達時）の説明図。
【図１０】最新受信シーケンス番号と前回使用受信シーケンス番号との差分の決定説明図。
【図１１】ゲーム装置の機能構成図。
【図１２】同期シーケンス番号情報のデータ構成例。
【図１３】受信シーケンス番号情報のデータ構成例。
【図１４】読出シーケンス番号情報のデータ構成例。
【図１５】フレーム進行情報のデータ構成例。
【図１６】全体処理の流れ図。
【図１７】全体処理中に実行される同期処理の流れ図。
【図１８】全体処理中に実行されるゲーム進行処理の流れ図。
【図１９】ゲーム進行処理中に実行されるゲーム演算処理の流れ図。
【符号の説明】
【０１３５】
１０  ゲーム装置
１００  操作入力部
２００  処理部
２１０  ゲーム演算部
２１２  同期処理部
２１４  ゲーム進行部
２３０  画像生成部
２５０  音生成部
３３０  画像表示部
３５０  音出力部
４００  記憶部
４１０  ゲームプログラム
４２２  ステージ設定情報
４２４  キャラクタ情報
４２６  対戦結果情報
４３２  自操作履歴バッファ
４３４  相手操作履歴バッファ
４３６  同期シーケンス番号情報
４３８  受信シーケンス番号情報
４４２  読出シーケンス番号情報
４４４  フレーム進行情報
５００  通信部
【図１】
2006280473.tif 000003
【図２】
2006280473.tif 000004
【図３】
2006280473.tif 000005
【図４】
2006280473.tif 000006
【図５】
2006280473.tif 000007
【図６】
2006280473.tif 000008
【図７】
2006280473.tif 000009
【図８】
2006280473.tif 000010
【図９】
2006280473.tif 000011
【図１０】
2006280473.tif 000012
【図１１】
2006280473.tif 000013
【図１２】
2006280473.tif 000014
【図１３】
2006280473.tif 000015
【図１４】
2006280473.tif 000016
【図１５】
2006280473.tif 000017
【図１６】
2006280473.tif 000018
【図１７】
2006280473.tif 000019
【図１８】
2006280473.tif 000020
【図１９】
2006280473.tif 000021