(57)【特許請求の範囲】
【請求項１】
複数のゲーム機それぞれが、フレーム毎にプレーヤの入力情報を検出した検出結果を含むゲームデータを、フレーム毎に付与される共通の識別情報に対応付けて、ネットワークを介して相互に送受信するゲーム機のためのプログラムであって、
自機のゲームデータを、他のゲーム機にネットワークを介して送信する処理と、他のゲーム機から送信された他のゲーム機のゲームデータを、ネットワークを介して受信する処理とを行う通信制御部と、
自機のゲームデータを第１のバッファに入力し、他のゲーム機のゲームデータを第２のバッファに入力する処理と、第１のバッファに入力されている最先のゲームデータに対応する識別情報と、第２のバッファに入力されている最先のゲームデータに対応する識別情報とが一致する場合に、最先のゲームデータを第１のバッファから出力すると共に、最先のゲームデータを第２のバッファから出力する処理とを行うバッファ制御部と、
第１のバッファから出力されたゲームデータと、第２のバッファから出力されたゲームデータとに基づいて、フレーム毎にゲーム演算を行うゲーム演算部として、コンピュータを機能させ、
前記バッファ制御部が、
第１のバッファに入力されているゲームデータの蓄積量と、第２のバッファに入力されているゲームデータの蓄積量とに応じて、第１のバッファに入力されているゲームデータを削除すると共に、第２のバッファに入力されているゲームデータを削除することを特徴とするプログラム。
【請求項２】
請求項１において、
前記通信制御部が、
削除対象のゲームデータに対応する識別情報を、他のゲーム機にネットワークを介して送信する処理と、他のゲーム機から送信された削除対象のゲームデータに対応する識別情報を、ネットワークを介して受信する処理とを行い、
前記バッファ制御部が、
他のゲーム機から送信された削除対象のゲームデータに対応する識別情報を、ネットワークを介して受信した場合には、第１のバッファに入力されている当該識別情報に対応するゲームデータを削除すると共に、第２のバッファに入力されている当該識別情報に対応するゲームデータを削除することを特徴とするプログラム。
【請求項３】
請求項１又は２において、
前記バッファ制御部が、
第１のバッファ及び第２のバッファに入力されているゲームデータの蓄積量が所定蓄積量を超えた場合に、第１のバッファに入力されているゲームデータを削除すると共に、第２のバッファに入力されているゲームデータを削除することを特徴とするプログラム。
【請求項４】
請求項１〜３のいずれかにおいて、
前記バッファ制御部が、
第１のバッファに及び第２のバッファに既に入力されているゲームデータの蓄積量よりも少ない量のゲームデータを削除することを特徴とするプログラム。
【請求項５】
請求項１〜４のいずれかにおいて、
所与の期間におけるプレーヤからの入力情報を無効にする入力情報制御部と、
プレーヤの入力情報を無効にする特定期間を検出する特定期間検出部として、コンピュータを更に機能させ、
前記バッファ制御部が、
前記特定期間に第１のバッファに入力されたゲームデータを削除すると共に、前記特定期間に第２のバッファに入力されたゲームデータを削除することを特徴とするプログラム。
【請求項６】
請求項１〜５のいずれかにおいて、
前記通信制御部が、
第１のバッファに入力されているゲームデータの蓄積量が、第２のバッファに入力されているゲームデータの蓄積量よりも所定差分量多い場合に、ゲームデータの送信を制限する処理を行い、
前記バッファ制御部が、
送信を制限した前記ゲームデータの第１のバッファへの入力を制限することを特徴とするプログラム。
【請求項７】
請求項６において、
前記通信制御部が、
第１のバッファ及び第２のバッファに入力されているゲームデータの蓄積量が所定蓄積量を超えるまで、ゲームデータの送信を制限する処理を行うことを特徴とするプログラム。
【請求項８】
請求項６又は７において、
所与の期間におけるプレーヤからの入力情報を無効にする入力情報制御部と、
プレーヤからの入力情報を無効にする特定期間を検出する特定期間検出部として、コンピュータを更に機能させ、
前記通信制御部が、
前記特定期間に、前記ゲームデータの送信を制限する処理を行い、
前記バッファ制御部が、
前記特定期間に、送信を制限した前記ゲームデータの第１のバッファへの入力を制限することを特徴とするプログラム。
【請求項９】
請求項５又は８において、
前記ゲーム演算部が、
第１のバッファから出力されたゲームデータと第２のバッファから出力されたゲームデータとに基づいて、自機を使用するプレーヤの操作対象の第１のプレーヤキャラクタと、他のゲーム機を使用するプレーヤの操作対象の第２のプレーヤキャラクタとを動作させるゲーム演算を行い、
前記入力情報制御部が、
前記第１のプレーヤキャラクタ及び前記第２のプレーヤキャラクタが共に動作している期間における各プレーヤからの入力情報を無効にすることを特徴とするプログラム。
【請求項１０】
請求項５又は８において、
前記ゲーム演算部が、
第１のバッファから出力されたゲームデータ及び第２のバッファから出力されたゲームデータの少なくとも一方に基づいて、特定のイベントを発動させるゲーム演算を行い、
前記入力情報制御部が、
前記特定のイベントを発動させる期間における各プレーヤからの入力情報を無効にすることを特徴とするプログラム。
【請求項１１】
コンピュータにより読取可能な情報記憶媒体であって、請求項１〜１０のいずれかに記載のプログラムを記憶することを特徴とする情報記憶媒体。
【請求項１２】
複数のゲーム機それぞれが、フレーム毎にプレーヤの入力情報を検出した検出結果を含むゲームデータを、フレーム毎に付与される共通の識別情報に対応付けて、ネットワークを介して相互に送受信するゲーム機であって、
自機のゲームデータを、他のゲーム機にネットワークを介して送信する処理と、他のゲーム機から送信された他のゲーム機のゲームデータを、ネットワークを介して受信する処理とを行う通信制御部と、
自機のゲームデータを第１のバッファに入力し、他のゲーム機のゲームデータを第２のバッファに入力する処理と、第１のバッファに入力されている最先のゲームデータに対応する識別情報と、第２のバッファに入力されている最先のゲームデータに対応する識別情報とが一致する場合に、最先のゲームデータを第１のバッファから出力すると共に、最先のゲームデータを第２のバッファから出力する処理とを行うバッファ制御部と、
第１のバッファから出力されたゲームデータと、第２のバッファから出力されたゲームデータとに基づいて、フレーム毎にゲーム演算を行うゲーム演算部とを含み、
前記バッファ制御部が、
第１のバッファに入力されているゲームデータの蓄積量と、第２のバッファに入力されているゲームデータの蓄積量とに応じて、第１のバッファに入力されているゲームデータを削除すると共に、第２のバッファに入力されているゲームデータを削除することを特徴とするゲーム機。
【請求項１３】
第１のゲーム機、第２のゲーム機それぞれが、フレーム毎にプレーヤの入力情報を検出した検出結果を含むゲームデータを、フレーム毎に付与される共通の識別情報に対応付けて、ネットワークを介して相互に送受信するゲームシステムであって、
前記ゲーム機が、
自機のゲームデータを、他のゲーム機にネットワークを介して送信する処理と、他のゲーム機から送信された他のゲーム機のゲームデータを、ネットワークを介して受信する処理とを行う通信制御部と、
自機のゲームデータを第１のバッファに入力し、他のゲーム機のゲームデータを第２のバッファに入力する処理と、第１のバッファに入力されている最先のゲームデータに対応する識別情報と、第２のバッファに入力されている最先のゲームデータに対応する識別情報とが一致する場合に、最先のゲームデータを第１のバッファから出力すると共に、最先のゲームデータを第２のバッファから出力する処理とを行うバッファ制御部と、
第１のバッファから出力されたゲームデータと、第２のバッファから出力されたゲームデータとに基づいて、フレーム毎にゲーム演算を行うゲーム演算部とを含み、
前記第１のゲーム機の前記バッファ制御部が、
第１のバッファに入力されているゲームデータの蓄積量と、第２のバッファに入力されているゲームデータの蓄積量とに応じて、第１のバッファに入力されているゲームデータを削除すると共に、第２のバッファに入力されているゲームデータを削除し、
前記第１のゲーム機の前記通信制御部が、
削除対象のゲームデータに対応する識別情報を、第２のゲーム機にネットワークを介して送信する処理を行い、
前記第２のゲーム機の前記通信制御部が、
第１のゲーム機から送信された削除対象のゲームデータに対応する識別情報を、ネットワークを介して受信する処理を行い、
前記第２のゲーム機の前記バッファ制御部が、
第１のゲーム機から送信された削除対象のゲームデータに対応する識別情報を、ネットワークを介して受信した場合には、第１のバッファに入力されている当該識別情報に対応するゲームデータを削除すると共に、第２のバッファに入力されている当該識別情報に対応するゲームデータを削除することを特徴とするゲームシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラム、情報記憶媒体、ゲーム機及びゲームシステムに関する。
【背景技術】
【０００２】
従来から、ネットワークを介して複数のプレーヤが参加してゲームを行うオンラインゲームが知られている。このようなオンラインゲームでは、ゲーム機が、ネットワークを介して他のゲーム機とデータを送受信し、同期をとってゲームを進行させる。例えば、特許文献１、特許文献２、特許文献３に記載されているように、各ゲーム機間において同期をとってゲームを進行させる技術が開示されている。
【０００３】
しかし、通信負荷の問題、ゲーム機の処理負荷の問題等によって、データの遅延が生じることがあり、プレーヤの操作入力がゲームへ反映されるまで長期間を要することになる問題が発生する。特に、格闘ゲームのようにプレーヤの操作入力のタイミングが重視されるゲームでは、プレーヤの操作入力のレスポンスの悪さが、プレーヤに不快感を与えることになる。
【０００４】
この問題を解決するために、特許文献４においては、他のゲーム機から受信するデータの通信遅延時間に基づいて、他のプレーヤが操作する他キャラクタの移動を予測して、プレーヤキャラクタと他プレーヤキャラクタとの整合性を図り、レスポンスの早いゲームを実現する手法が開示されている。しかし、格闘ゲームのように操作タイミングの技が重視されるゲームにおいては、他キャラクタの移動を予測する手法は不向きである。例えば、格闘ゲームの場合は、タイミングに応じた各プレーヤからの入力情報が揃った段階で順次ゲーム演算を行い、各キャラクタを動作させている。したがって、各キャラクタの動作を予測する手法は採用し難い。
【特許文献１】特開２００１−１７７３５号公報
【特許文献２】特開２００２−１８６７８５号公報
【特許文献３】特開２００５−６９１３号公報
【特許文献４】特開２００６−３２５０２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
本発明は、以上のような課題に鑑みてなされたものであり、その目的とするところは、プレーヤの操作が直ぐに反映されるネットワークゲームを実現することができるプログラム、情報記憶媒体、ゲーム機及びゲームシステムを提供することにある。
【課題を解決するための手段】
【０００６】
（１）本発明は、
複数のゲーム機それぞれが、フレーム毎にプレーヤの入力情報を検出した検出結果を含むゲームデータを、フレーム毎に付与される共通の識別情報に対応付けて、ネットワークを介して相互に送受信するゲーム機であって、
自機のゲームデータを、他のゲーム機にネットワークを介して送信する処理と、他のゲーム機から送信された他のゲーム機のゲームデータを、ネットワークを介して受信する処理とを行う通信制御部と、
自機のゲームデータを第１のバッファに入力し、他のゲーム機のゲームデータを第２のバッファに入力する処理と、第１のバッファに入力されている最先のゲームデータに対応する識別情報と、第２のバッファに入力されている最先のゲームデータに対応する識別情報とが一致する場合に、最先のゲームデータを第１のバッファから出力すると共に、最先のゲームデータを第２のバッファから出力する処理とを行うバッファ制御部と、
第１のバッファから出力されたゲームデータと、第２のバッファから出力されたゲームデータとに基づいて、ゲーム演算を行うゲーム演算部とを含み、
前記バッファ制御部が、
第１のバッファに入力されているゲームデータの蓄積量と、第２のバッファに入力されているゲームデータの蓄積量とに応じて、第１のバッファに入力されているゲームデータを削除すると共に、第２のバッファに入力されているゲームデータを削除することを特徴とするゲーム機に関する。
【０００７】
また本発明は、上記各部としてコンピュータを機能させるプログラム及びそのようなプログラムを記憶するコンピュータに読み取り可能な情報記憶媒体に関するものである。
【０００８】
本発明によれば、第１、第２バッファにゲームデータが入力されてから出力されるまでの時間が、プレーヤの操作がゲームに反映するまでの時間に相当するので、第１、第２のバッファへ入力されているゲームデータの蓄積量に応じて、第１、第２のバッファに入力されているゲームデータへの入力を制限することによって、プレーヤの操作をゲームに反映させるまでの時間を短縮することができ、ネットワークに接続された複数のゲーム機がネットワークゲーム行う場合であっても、操作のレスポンスが早いゲームを実現することができる。
【０００９】
（２）また、本発明のゲーム機、プログラム及び情報記憶媒体では、
前記通信制御部が、
削除対象のゲームデータに対応する識別情報を、他のゲーム機にネットワークを介して送信する処理と、他のゲーム機から送信された削除対象のゲームデータに対応する識別情報を、ネットワークを介して受信する処理とを行い、
前記バッファ制御部が、
他のゲーム機から送信された削除対象のゲームデータに対応する識別情報を、ネットワークを介して受信した場合には、第１のバッファに入力されている当該識別情報に対応するゲームデータを削除すると共に、第２のバッファに入力されている当該識別情報に対応するゲームデータを削除するようにしてもよい。
【００１０】
本発明によれば、自機と他のゲーム機とにおいて、第１のバッファ、第２のバッファへの、同一の識別情報に対応するゲームデータを削除することができる。したがって、例えば、自機において第１のバッファにおいて削除したゲームデータは、他のゲーム機における第２のバッファにおいても削除されるので、自機と他のゲーム機とにおいて削除対象のゲームデータの同期を図ることができる。
【００１１】
（３）また、本発明のゲーム機、プログラム及び情報記憶媒体では、
前記バッファ制御部が、
第１のバッファ及び第２のバッファに入力されているゲームデータの蓄積量が所定蓄積量を超えた場合に、第１のバッファに入力されているゲームデータを削除すると共に、第２のバッファに入力されているゲームデータを削除するようにしてもよい。
【００１２】
本発明によれば、第１、第２のバッファに入力されているゲームデータの蓄積量が、所定蓄積量を超えた場合に、プレーヤの操作のレスポンスが悪いものと判断して、第１、第２のバッファに入力されているゲームデータを削除することができる。したがって、適切な時期に、第１、第２のバッファへのゲームデータを削除することができる。
【００１３】
（４）また、本発明のゲーム機、プログラム及び情報記憶媒体では、
前記バッファ制御部が、
第１のバッファに及び第２のバッファに既に入力されているゲームデータの蓄積量よりも少ない量のゲームデータを削除するようにしてもよい。
【００１４】
本発明によれば、第１、第２のバッファへの適正な量のゲームデータを削除することができる。つまり、本発明によれば、ゲームデータを削除したとしても、第１、第２のバッファには、ゲームデータが入力されている状態を維持することができるので、出力されるゲームデータがないためにゲーム演算が滞るという事態を回避することができる。
【００１５】
（５）また、本発明のゲーム機、プログラム及び情報記憶媒体では、
所与の期間におけるプレーヤからの入力情報を無効にする入力情報制御部と、
プレーヤの入力情報を無効にする特定期間を検出する特定期間検出部として、コンピュータを更に機能させ、
前記バッファ制御部が、
前記特定期間に第１のバッファに入力されたゲームデータを削除すると共に、前記特定期間に第２のバッファに入力されたゲームデータを削除するようにしてもよい。
【００１６】
本発明によれば、特定期間に第１、第２へのゲームデータを削除することができるので、プレーヤに違和感なく、操作のレスポンスの早いゲームを実現することができる。
【００１７】
（６）また、本発明のゲーム機、プログラム及び情報記憶媒体では、
前記通信制御部が、
第１のバッファに入力されているゲームデータの蓄積量が、第２のバッファに入力されているゲームデータの蓄積量よりも所定差分量多い場合に、ゲームデータの送信を制限する処理を行い、
前記バッファ制御部が、
送信を制限した前記ゲームデータの第１のバッファへの入力を制限するようにしてもよい。
【００１８】
本発明によれば、第１のバッファに入力されているゲームデータの蓄積量と、第２のバッファに入力されているゲームデータの蓄積量の差分量を調整することができるので、プレーヤからの操作のレスポンスを改善することができる。
【００１９】
例えば、第１のバッファに入力されているゲームデータの蓄積量が極端に多く、第２のバッファに入力されているゲームデータの蓄積量が極端に少ない場合には、自機を操作するプレーヤからの操作入力のレスポンスが悪くなる。しかし、本発明によれば第１のバッファに入力されているゲームデータの蓄積量を減らすことができる。その結果、プレーヤからの操作のレスポンスを改善することができる。
【００２０】
（７）また、本発明のゲーム機、プログラム及び情報記憶媒体では、
前記通信制御部が、
第１のバッファ及び第２のバッファに入力されているゲームデータの蓄積量が所定蓄積量を超えるまで、ゲームデータの送信を制限する処理を行うようにしてもよい。
【００２１】
本発明によれば、第１のバッファに入力されているゲームデータの蓄積量が極端に多く、第２のバッファとに入力されているゲームデータの蓄積量が極端に少ない場合であっても、第１のバッファ及び第２のバッファに入力されているゲームデータの蓄積量が所定蓄積量を超えるまで、ゲームデータの送信を制限するので、結果的に、第１、第２のバッファへのゲームデータの入力制限を施すことができ、プレーヤからの操作のレスポンスを改善することができる。
【００２２】
（８）また、本発明のゲーム機、プログラム及び情報記憶媒体では、
所与の期間におけるプレーヤからの入力情報を無効にする入力情報制御部と、
プレーヤからの入力情報を無効にする特定期間を検出する特定期間検出部として、コンピュータを更に機能させ、
前記通信制御部が、
前記特定期間に、前記ゲームデータの送信を制限する処理を行い、
前記バッファ制御部が、
前記特定期間に、送信を制限した前記ゲームデータの第１のバッファへの入力を制限するようにしてもよい。
【００２３】
本発明によれば、プレーヤからの入力情報を無効にする特定期間に、ゲームデータの送信を制限すると共に、第１のバッファへの入力を制限するので、プレーヤに違和感を与えないようにプレーヤからの操作のレスポンスを改善することができる。
【００２４】
（９）また、本発明のゲーム機、プログラム及び情報記憶媒体では、
前記ゲーム演算部が、
第１のバッファから出力されたゲームデータと第２のバッファから出力されたゲームデータとに基づいて、自機を使用するプレーヤの操作対象の第１のプレーヤキャラクタと、他のゲーム機を使用するプレーヤの操作対象の第２のプレーヤキャラクタとを動作させるゲーム演算を行い、
前記入力情報制御部が、
前記第１のプレーヤキャラクタ及び前記第２のプレーヤキャラクタが共に動作している期間における各プレーヤからの入力情報を無効にするようにしてもよい。
【００２５】
本発明によれば、第１のプレーヤキャラクタ及び前記第２のプレーヤキャラクタが共に動作している期間に、ゲームデータの削除等を行うので、プレーヤに違和感を与えないで、操作のレスポンスを改善することができる。
【００２６】
（１０）また、本発明のゲーム機、プログラム及び情報記憶媒体では、
前記ゲーム演算部が、
第１のバッファから出力されたゲームデータ及び第２のバッファから出力されたゲームデータの少なくとも一方に基づいて、特定のイベントを発動させるゲーム演算を行い、
前記入力情報制御部が、
前記特定のイベントを発動させる期間における各プレーヤからの入力情報を無効にするようにしてもよい。
【００２７】
本発明によれば、特定のイベントを発動させる期間に、ゲームデータの削除等を行うので、プレーヤに違和感を与えないで、操作のレスポンスを改善することができる。
【００２８】
（１１）また、本発明は、
第１のゲーム機、第２のゲーム機それぞれが、フレーム毎にプレーヤの入力情報を検出した検出結果を含むゲームデータを、フレーム毎に付与される共通の識別情報に対応付けて、ネットワークを介して相互に送受信するゲームシステムであって、
前記ゲーム機が、
自機のゲームデータを、他のゲーム機にネットワークを介して送信する処理と、他のゲーム機から送信された他のゲーム機のゲームデータを、ネットワークを介して受信する処理とを行う通信制御部と、
自機のゲームデータを第１のバッファに入力し、他のゲーム機のゲームデータを第２のバッファに入力する処理と、第１のバッファに入力されている最先のゲームデータに対応する識別情報と、第２のバッファに入力されている最先のゲームデータに対応する識別情報とが一致する場合に、最先のゲームデータを第１のバッファから出力すると共に、最先のゲームデータを第２のバッファから出力する処理とを行うバッファ制御部と、
第１のバッファから出力されたゲームデータと、第２のバッファから出力されたゲームデータとに基づいて、ゲーム演算を行うゲーム演算部とを含み、
前記第１のゲーム機の前記バッファ制御部が、
第１のバッファに入力されているゲームデータの蓄積量と、第２のバッファに入力されているゲームデータの蓄積量とに応じて、第１のバッファに入力されているゲームデータを削除すると共に、第２のバッファに入力されているゲームデータを削除し、
前記第１のゲーム機の前記通信制御部が、
削除対象のゲームデータに対応する識別情報を、第２のゲーム機にネットワークを介して送信する処理を行い、
前記第２のゲーム機の前記通信制御部が、
第１のゲーム機から送信された削除対象のゲームデータに対応する識別情報を、ネットワークを介して受信する処理を行い、
前記第２のゲーム機の前記バッファ制御部が、
第１のゲーム機から送信された削除対象のゲームデータに対応する識別情報を、ネットワークを介して受信した場合には、第１のバッファに入力されている当該識別情報に対応するゲームデータを削除すると共に、第２のバッファに入力されている当該識別情報に対応するゲームデータを削除することを特徴とするゲームシステムに関する。
【００２９】
本発明によれば、第１、第２バッファにゲームデータが入力されてから出力されるまでの時間が、プレーヤの操作がゲームに反映するまでの時間に相当するので、第１、第２のバッファへ入力されているゲームデータの蓄積量に応じて、第１、第２のバッファに入力されているゲームデータへの入力を制限することによって、プレーヤの操作をゲームに反映させるまでの時間を短縮することができ、ネットワークに接続された複数のゲーム機がゲーム行う場合であっても、操作のレスポンスが早いゲームを実現することができる。
【００３０】
また、本発明によれば、第１のゲーム機が、削除対象の識別情報を特定し、第１、第２のゲーム機が互いに削除対象の識別情報を共有することができるので、第１、第２のゲーム機双方において、共通のゲームデータを削除することができ、双方のゲーム機において、操作のレスポンスが早いゲームを実現することができる。
【発明を実施するための最良の形態】
【００３１】
１．構成
図１に本実施形態のゲーム機の機能ブロック図を示す。なお本実施形態のゲーム機は図１の構成要素（各部）の一部を省略した構成としてもよい。
【００３２】
操作部１６０は、プレーヤがプレーヤキャラクタ（プレーヤが操作するプレーヤキャラクタ、移動体、プレーヤオブジェクト、ゲームキャラクタを含む）の操作情報を入力するためのものであり、その機能は、レバー、ボタン、ステアリング、マイク、タッチパネル型ディスプレイ、或いは筺体などにより実現できる。
【００３３】
記憶部１７０は、処理部１００や通信部１９６などのワーク領域となるもので、その機能はＲＡＭ（ＶＲＡＭ）などにより実現できる。特に、本実施形態の記憶部１７０は、主記憶部１７２、描画バッファ１７４、第１のバッファ１７６、第２のバッファ１７８を有している。
【００３４】
なお、本実施形態の第１のバッファ１７６及び、第２のバッファ１７８には、ゲームデータを入力する。第１のバッファ１７６は、自機において操作情報を検出した検出結果を含むゲームデータが入力される。また、第２のバッファ１７８は、受信した他のゲーム機のゲームデータが入力される。
【００３５】
情報記憶媒体１８０（コンピュータにより読み取り可能な媒体）は、プログラムやデータなどを入力するものであり、その機能は、光ディスク（ＣＤ、ＤＶＤ）、光磁気ディスク（ＭＯ）、磁気ディスク、ハードディスク、磁気テープ、或いはメモリ（ＲＯＭ）、メモリカードなどにより実現できる。処理部１００は、情報記憶媒体１８０に入力されるプログラム（データ）に基づいて本実施形態の種々の処理を行う。即ち情報記憶媒体１８０には、本実施形態の各部としてコンピュータを機能させるためのプログラム（各部の処理をコンピュータに実行させるためのプログラム）が記憶される。
【００３６】
表示部１９０は、本実施形態により生成された画像を出力するものであり、その機能は、ＣＲＴ、ＬＣＤ、タッチパネル型ディスプレイ、或いはＨＭＤ（ヘッドマウントディスプレイ）などにより実現できる。音出力部１９２は、本実施形態により生成された音を出力するものであり、その機能は、スピーカ、或いはヘッドフォンなどにより実現できる。
【００３７】
通信部１９６は外部（例えば、他のゲーム機、サーバや他のゲームシステム）との間で通信を行うための各種制御を行うものであり、その機能は、各種プロセッサ又は通信用ＡＳＩＣなどのハードウェアや、プログラムなどにより実現できる。
【００３８】
なお、ゲーム機が、本実施形態の各部としてコンピュータを機能させるためのプログラム（データ）を、ネットワークを介してサーバからダウンロードし、情報記憶媒体１８０に記憶するようにしてもよい。このようなサーバに入力されているプログラムの出力も本発明の範囲内に含めることができる。
【００３９】
処理部１００（プロセッサ）は、操作部１６０からの操作情報（操作データ）やプログラムなどに基づいて、ゲーム演算処理、画像生成処理、或いは音生成処理などの処理を行う。ここでゲーム処理としては、ゲーム開始条件が満たされた場合にゲームを開始する処理、ゲームを進行させる処理、キャラクタやマップなどのオブジェクトを配置する処理、オブジェクトを表示する処理、ゲーム結果を演算する処理、或いはゲーム終了条件が満たされた場合にゲームを終了する処理などがある。この処理部１００は記憶部１７０内の主記憶部１７２をワーク領域として各種処理を行う。処理部１００の機能は各種プロセッサ（ＣＰＵ、ＤＳＰ等）、ＡＳＩＣ（ゲートアレイ等）などのハードウェアや、プログラムにより実現できる。
【００４０】
処理部１００は、ゲーム演算部１１０、ネットワーク設定部１１４、通信制御部１１５、バッファ制御部１１６、特定期間検出部１１７、入力情報制御部１１８、描画部１２０、音生成部１３０を含む。なおこれらの一部を省略する構成としてもよい。
【００４１】
本実施形態のゲーム演算部１１０は、第１のバッファから出力されたゲームデータと、第２のバッファから出力されたゲームデータとに基づいて、フレーム毎にゲーム演算を行う。
【００４２】
また、本実施形態のゲーム演算部１１０は、第１のバッファから出力されたゲームデータと第２のバッファから出力されたゲームデータとに基づいて、自機を使用するプレーヤの操作対象の第１のプレーヤキャラクタと、他のゲーム機を使用するプレーヤの操作対象の第２のプレーヤキャラクタとを動作させるゲーム演算を行うようにしてもよい。
【００４３】
また、本実施形態のゲーム演算部１１０が、第１のバッファから出力されたゲームデータ及び第２のバッファから出力されたゲームデータの少なくとも一方に基づいて、特定のイベントを発動させるゲーム演算を行うことができる。
【００４４】
また、本実施形態のゲーム演算部１１０は、バッファから出力された複数のゲームデータに基づいて、フレーム毎にゲーム演算を行ってもよい。例えば、所定のゲームデータのパターンに一定した場合には、プレーヤキャラクタに対して特殊な動作（例えば、投げ技）を行うような動作・演算を行うようにしてもよい。
【００４５】
また、本実施形態のゲーム演算部１１０は、オブジェクト空間設定部１１１、仮想カメラ制御部１１２、移動・動作処理部１１３とを含む。なおこれらの一部を省略する構成としてもよい。
【００４６】
オブジェクト空間設定部１１１は、プレーヤキャラクタ、移動体、建物、球場、車、樹木、柱、壁、マップ（地形）などの表示物を表す各種オブジェクト（ポリゴン、自由曲面又はサブディビジョンサーフェスなどのプリミティブで構成されるオブジェクト）をオブジェクト空間に配置設定する処理を行う。即ちワールド座標系でのオブジェクトの位置や回転角度（向き、方向と同義）を決定し、その位置（Ｘ、Ｙ、Ｚ）にその回転角度（Ｘ、Ｙ、Ｚ軸回りでの回転角度）でオブジェクトを配置する。
【００４７】
仮想カメラ制御部１１２は、オブジェクト空間内の所与（任意）の仮想カメラ（視点）から見える画像を生成するための仮想カメラの制御処理を行う。具体的には、仮想カメラの位置（Ｘ、Ｙ、Ｚ）又は回転角度（Ｘ、Ｙ、Ｚ軸回りでの回転角度）を制御する処理（視点位置、視線方向あるいは画角を制御する処理）を行う。また、画角を制御するようにしてもよい。
【００４８】
例えば仮想カメラによりオブジェクト（例えば、プレーヤキャラクタ、ボール、車）を後方から撮影する場合には、オブジェクトの位置又は回転の変化に仮想カメラが追従するように、仮想カメラの位置又は回転角度（仮想カメラの向き）を制御する。この場合には、移動・動作処理部で得られたオブジェクトの位置、回転角度又は速度などの情報に基づいて、仮想カメラを制御できる。或いは、仮想カメラを、予め決められた回転角度で回転させたり、予め決められた移動経路で移動させる制御を行ってもよい。この場合には、仮想カメラの位置（移動経路）又は回転角度を特定するための仮想カメラデータに基づいて仮想カメラを制御する。なお、仮想カメラ（視点）が複数存在する場合には、それぞれの仮想カメラについて上記の制御処理が行われる。
【００４９】
移動・動作処理部１１３は、モデル（キャラクタ、車、電車又は飛行機等）の移動・動作演算（移動・動作シミュレーション）を行う。すなわち操作部１６０によりプレーヤが入力した操作データや、プログラム（移動・動作アルゴリズム）や、各種データ（モーションデータ）などに基づいて、モデルをオブジェクト空間内で移動させたり、オブジェクトを動作（モーション、アニメーション）させたりする処理を行う。具体的には、オブジェクトの移動情報（位置、回転角度、速度、或いは加速度）や動作情報（オブジェクトを構成する各パーツの位置、或いは回転角度）を、１フレーム（１／６０秒）毎に順次求めるシミュレーション処理を行う。なおフレームは、オブジェクトの移動・動作処理（シミュレーション処理）や画像生成処理を行う時間の単位である。
【００５０】
特に、本実施形態の移動・動作処理部１１３は、プレーヤからの操作情報に基づいて、プレーヤの操作対象のプレーヤキャラクタを移動・動作させる処理を行うことができる。また、前述した通信制御部１１５において、取得したパケットに含まれる他のゲーム機のゲームデータに基づいて、他のゲーム機を使用する第２のプレーヤの操作対象の第２のプレーヤキャラクタを、自機を使用するプレーヤの操作対象となる第１のプレーヤキャラクタと同一のオブジェクト空間において移動・動作させる処理を行うことができる。
【００５１】
要するに、本実施形態の移動・動作処理部１１３は、第１のバッファから出力されたゲームデータに基づいて、自機を使用するプレーヤの操作対象の第１のプレーヤキャラクタを動作させる演算と、第２のバッファから出力されたゲームデータに基づいて、他のゲーム機を使用するプレーヤの操作対象の第２のプレーヤキャラクタを動作させる演算を行うことができる。
【００５２】
また、本実施形態の移動・動作処理部１１３は、入力情報制御部１１３ａを含む。
【００５３】
本実施形態の入力情報制御部１１３ａは、所与の期間におけるプレーヤからの入力情報を無効にする。例えば、入力情報制御部１１３ａは、第１のプレーヤキャラクタと、第２のプレーヤキャラクタとが共に動作している期間における各プレーヤからの入力情報を無効にする。
【００５４】
また、本実施形態の入力情報制御部１１３ａは、プレーヤキャラクタ毎に入力情報フラグを設定し、フレーム毎に入力情報フラグの値を更新して入力情報の有効／無効を制御する。より具体的に説明すると、プレーヤキャラクタが動作していない期間中の入力情報フラグの値を真（１）に設定し、プレーヤキャラクタが動作している期間中の入力情報フラグの値を偽（０）に設定する。そして、プレーヤキャラクタ毎の入力情報フラグの値が偽である期間を、第１のプレーヤキャラクタと、第２のプレーヤキャラクタとが共に動作している期間として、各プレーヤからの入力情報を無効にする。
【００５５】
例えば、本実施形態の入力情報制御部１１３ａは、入力情報フラグの初期値を真に設定する。そして、第１のプレーヤからの「右パンチ」の入力情報（ゲームデータ）に基づいて、第１のプレーヤキャラクタに「右パンチ」の動作をさせると判断すると、第１のプレーヤキャラクタに対応する入力情報フラグを偽に設定する。そして、「右パンチ」の動作期間（１０フレーム分の期間）終了後に入力情報フラグを真に設定する。また、第１のプレーヤキャラクタと第２のプレーヤキャラクタとがヒットし、第２のプレーヤキャラクタが「右パンチ攻撃を受ける動作」を行うと判断すると、第２のプレーヤキャラクタに対応する入力情報フラグを偽に設定する。そして、「右パンチ攻撃を受ける動作」をさせる期間（例えば、１０フレーム分の期間）終了後において、第２のプレーヤキャラクタに対応する入力情報フラグを真に設定する。
【００５６】
なお、本実施形態の入力情報制御部１１３ａは、予めプレーヤからの入力情報の内容に応じたプレーヤキャラクタを動作させる期間を決定してもよい。例えば、「右パンチ」の動作期間を１０フレーム、「右パンチ攻撃を受ける動作」の動作期間を１０フレームの期間と決定する。また、プレーヤからの「投げ技」の入力情報に基づいて、「投げる」動作を行う場合には、「投げる」動作期間を６０フレーム、「投げられる」動作期間を６０フレームとして決定する。
【００５７】
また、入力情報制御部１１３ａは、特定のイベントを発動させる期間における各プレーヤからの入力情報を無効にするようにしてもよい。例えば、格闘ゲームの場合には、プレーヤからの特定の操作情報（例えば、「必殺技」を行う操作情報）に基づいて、予め用意された特定のプログラムの実行によって特定のイベントを行う期間が３００フレーム必要であると判断される場合には、３００フレームの期間におけるプレーヤからの入力を無効にする。例えば、特定のプログラムの実行が開始された場合に、第１、第２のプレーヤキャラクタに対応する入力情報フラグを偽に設定し、特定プログラムの実行が終了された場合には、第１、第２のプレーヤキャラクタに対応する入力情報フラグを真に設定する。
【００５８】
なお、本実施形態の入力情報制御部１１３ａは、第１、第２のプレーヤキャラクタのいずれか一方が動作していない期間を真に設定し、第１、第２のプレーヤキャラクタが共に動作している期間を偽に設定してもよい。
【００５９】
ネットワーク設定部１１４は、ゲームシステムで必要となるネットワーク情報を取得し、管理する処理等を行う。特に、本実施形態のネットワーク設定部は、各ゲーム機に個別に付与されるゲーム機識別情報（オンラインゲームに参加できるゲーム機を識別するために個別に付与されたデータ）と、ゲーム機識別情報に対応付けられたパケットの送信先を指定する宛先情報とを取得し、管理する処理を行う。
【００６０】
また、宛先情報とは、ゲームシステムを構成する各ゲーム機のＩＰアドレス、ポート番号とすることができる。ＩＰアドレスは、インターネット上もしくはＷＡＮで特定のゲーム機を特定するためのグローバルＩＰアドレスとしてもよいし、ＬＡＮで特定のゲーム機を特定するためのプライベートＩＰアドレスとしてもよい。
【００６１】
通信制御部１１５は、他のゲーム機（第２のゲーム機）に送信するパケットを生成する処理、パケット送信先のゲーム機のＩＰアドレスやポート番号を指定する処理、受信したパケットに含まれるデータを記憶部１７０に保存する処理、受信したパケットを解析する処理、その他のパケットの送受信に関する制御処理等を行う。
【００６２】
パケットとは、ネットワークを介して通信する固まりであり、送信元ＩＰアドレス、送信先ＩＰアドレスを含むネットワークに必要なヘッダーと、送信元において書き込まれたデータがペイロードとからなるデータのことをいう。
【００６３】
また、アプリケーションレベルの通信を実現するためには、使用するＴＣＰやＵＤＰプロトコルに応じたアプリケーションの種類を特定するポート番号を指定してパケットを生成する。例えば、ＴＣＰプロトコルは、データの送受信の信頼性が高く、例えば、確認応答や再送を利用している。また、ＴＣＰプロトコルは、紛失したデータの再送処理を行うことができ、さらにデータの送信順序を確保して送信先のゲーム機にパケットを送信することができる。一方、ＵＤＰプロトコルでは、送信の途中でデータを紛失しても再送されず、順番が入れ替わって伝送されることがある。しかし、ＵＤＰプロトコルは、ＴＣＰプロトコルに比べてオーバヘッドがないので、リアルタイムにデータを送信するオンラインゲームでは適している場合がある。ＵＤＰプロトコルを利用する場合には、バッファに入力するゲームデータが識別番号順（昇順）に入力するようにし、入力対象の識別番号のゲームデータが届いていない場合には、他のゲーム機に要求するようにしてもよい。本実施形態では、いずれのプロトコルにも対応することができる。なお、ＵＤＰプロトコルを利用する場合には、バッファへのゲームデータの入力順序を識別情報（識別番号）の昇順に入力するように制御するようにしてもよい。
【００６４】
本実施形態の通信制御部１１５は、画像を描画するフレームレートに応じてパケットを生成し、接続先の第２のゲーム機に生成したパケットを送信する処理を行う。具体的に説明すると、例えば、フレームレートが６０ｆｐｓである場合には、１／６０秒毎に、パケットのヘッダーの送信先ＩＰアドレスと送信先ポート番号に、第２のゲーム機のＩＰアドレスと使用するポート番号指定し、ヘッダーの送信元のＩＰアドレスと送信元ポート番号に、第１のゲーム機のＩＰアドレスと使用するポート番号を指定して、ゲームデータを含むデータをパケットのペイロードに入力し、生成したパケットを第２のゲーム機に送信する処理を行う。なお、送信したゲームデータは、後述するバッファ制御部１１６において、所与の条件下、第１のバッファ１７６に入力される。
【００６５】
ここで、ゲームデータとは、フレーム毎にゲーム機を操作するプレーヤからの入力情報（操作情報も含む）を検出した検出結果を含むデータである。例えば、ゲームデータは、操作情報の有無や、操作情報が有る場合には操作情報の内容を示したデータとすることができる。例えば、ゲームエータを数値で示す場合には、操作情報が無い場合はゲームデータを「０」とし、操作情報があってその内容が「右方向」ボタンの入力である場合にはゲームデータを「１」、操作情報があってその内容が「左方向」ボタンの入力である場合にはゲームデータを「２」とすることができる。
【００６６】
また、ここで、識別情報とは、フレーム毎に付与される複数のゲーム機（第１、第２のゲーム機）において共通のデータである。本実施形態では、第１のゲーム機と第２のゲーム機との接続が確立されたときを基準に、経過時間を応じてフレーム毎に付与される情報とすることができる。例えば、ゲーム機において、フレームレートに応じて取得したゲームデータに対応付けるシーケンシャルな識別番号（０から始まる正の整数）とすることができる。
【００６７】
また、本実施形態では、複数のゲーム機それぞれにおいて（第１のゲーム機と第２のゲーム機それぞれにおいて）、共通の識別情報を使用している。
【００６８】
例えば、フレームレートが６０ｆｐｓである場合を考えると、１／６０毎に取得したゲームデータに、識別情報を対応付ける。例えば、第１のゲーム機と第２のゲーム機それぞれにおいて、接続が確立された時点に取得したゲームデータには、識別番号「０」を対応付けし、接続確立時から１／６０秒後に取得したゲームデータには、識別番号「１」を対応付けし、接続確立時から２／６０秒後に取得したゲームデータには、識別番号「２」を対応付けする。
【００６９】
また、本実施形態の通信制御部１１５は、第２のゲーム機から送信されたパケットを受信する処理を行う。そして、受信したパケットを解析し、パケットのペイロードに含まれるゲームデータを含むデータを取得する。そして、受信したゲームデータは、後述するバッファ制御部１１６において、第２のバッファ１７８に入力される。
【００７０】
また本実施形態の通信制御部１１５は、複数のゲーム機間においての接続（第１のゲーム機と第２のゲーム機との接続）が確立されてから接続が切断されるまで、ゲームデータを互いに送受信する処理を行うことができる。
【００７１】
また、本実施形態の通信制御部１１５は、自機が通信グループの親機として機能する場合には、削除対象の識別情報を、通信グループの子機にネットワークを介して送信することができる。一方、自機が通信グループの子機として機能する場合には、親機から送信された削除対象の識別情報を、ネットワークを介して受信する処理とを行うことができる。
【００７２】
なお、本実施形態のゲームに参加する通信グループに所属する複数のゲーム機のうち、１つのゲーム機を親機として特定することができる。親機は、ゲーム空間を生成したゲーム機としてもよいし、勝者と挑戦者との対戦ゲームである場合には、勝者側のゲーム機としてもよい。
【００７３】
また、本実施形態の通信制御部１１５は、第１のバッファに入力されているゲームデータの蓄積量が、第２のバッファに入力されているゲームデータの蓄積量よりも所定差分量多い場合に、ゲームデータの送信を制限するようにしてもよい。なお、第１のバッファに入力されているゲームデータの蓄積量及び第２のバッファに入力されているゲームデータの蓄積量それぞれが所定蓄積量を超えるまで、ゲームデータの送信を制限するようにしてもよい。なお、後述する特定期間に、ゲームデータの送信を制限する処理を行うようにしてもよい。
【００７４】
ここで、ゲームデータの送信を制限するとは、自機が他のゲーム機にゲームデータを送信する処理を一時的、永続的に停止することを含む。また、ゲームデータの送信を制限するとは、自機において、「ゲームデータ」を含めないパケット（ゲームデータ以外のデータを含むパケット）を生成し、生成したパケットを他のゲーム機に送信する場合も含む。
【００７５】
また、本実施形態の通信制御部１１５は、第１のバッファに入力されているゲームデータの蓄積量が、第２のバッファに入力されているゲームデータの蓄積量よりも多く、第１のバッファに入力されているゲームデータの蓄積量と、第２のバッファに入力されているゲームデータの蓄積量との差分量が所定差分量以上ある場合には、第１のバッファに入力されているゲームデータの蓄積量と第２のバッファに入力されているゲームデータの蓄積量との差分量が適正差分量に達するまで、ゲームデータの送信を制限する処理を行うようにしてもよい。
【００７６】
本実施形態のバッファ制御部１１６は、第１のバッファ１７６、第２のバッファ１７８のゲームデータの入出力する処理を行う。
【００７７】
また、本実施形態のバッファ制御部１１６は、自機のゲームデータを第１のバッファに入力し、他のゲーム機のゲームデータを第２のバッファに入力する処理とを行う。
【００７８】
また、本実施形態のバッファ制御部１１６は、第１のバッファに入力されている最先のゲームデータに対応する識別情報と、第２のバッファに入力されている最先のゲームデータに対応する識別情報とが一致する場合に、最先のゲームデータを第１のバッファから出力すると共に、最先のゲームデータを第２のバッファから出力する処理とを行う。つまり、本実施形態のバッファ制御部１１６は、第１のバッファ１７６、第２のバッファ１７８に入力（格納）されているゲームデータは、同期処理を行うために、第１のバッファ１７６に入力されているゲームデータの識別情報と、第２のバッファ１７８に入力されているゲームデータの識別情報とが一致していることを条件に、識別番号の昇順（小さい順）に出力される。
【００７９】
特に、ゲーム機が通信グループの親機である場合には、本実施形態のバッファ制御部１１６は、第１のバッファ１７６に入力されているゲームデータの蓄積量と、第２のバッファ１７８に入力されているゲームデータの蓄積量とが、所定蓄積量を超えたか否かを判断し、所定蓄積量を超えていると判断される場合には、第１のバッファ１７６及び第２のバッファ１７８に入力されているゲームデータを削除する処理を行う。
【００８０】
ここで、第１、第２のバッファに入力されているゲームデータを削除するとは、第１、第２のバッファに記憶されているゲームデータを出力せずに、削除（消去、クリア）することをいう。
【００８１】
具体的に説明すると、第１のバッファに入力されているゲームデータの蓄積量、第２のバッファに入力されているゲームデータの蓄積量それぞれが所定蓄積量を超えた場合に、第１のバッファに入力されているゲームデータを削除すると共に、第２のバッファに入力されているゲームデータを削除する。なお、かかる場合には、上述した通信制御部１１５において、削除対象のゲームデータに対応する識別情報を、パケットのペイロードに含めて、第２のゲーム機（子機）送信する処理を行う。
【００８２】
また、ゲームデータの蓄積量とは、バッファへの入力、出力を行うゲームデータを１つの単位とした場合に、バッファに入力されている（格納されている）ゲームデータの量をいう。
【００８３】
また、本実施形態のバッファ制御部１１６は、第１のバッファ及び第２のバッファに入力されているゲームデータの蓄積量が所定蓄積量を超えた場合に、第１のバッファに入力されているゲームデータを削除すると共に、第２のバッファに入力されているゲームデータを削除することができる。また、第１のバッファに及び第２のバッファに既に入力されているゲームデータの蓄積量よりも少ない量のゲームデータを削除するようにしてもよい。
【００８４】
また本実施形態のバッファ制御部１１６は、特定期間検出部１１７において検出された、プレーヤからの入力情報を無効にする特定期間中に、第１、第２のバッファに入力されたゲームデータを削除してもよい。
【００８５】
つまり、本実施形態のバッファ制御部１１６は、後述する特定期間検出部１１７から、特定期間の開始フレームの通知を受け取ると、第１、第２のバッファへの入力を制限する処理を開始することができる。
【００８６】
また、バッファ制御部１１６は、上述した通信制御部１１０において、送信を制限したゲームデータについて、第１のバッファへの入力を制限するようにしてもよい。かかる場合には、上述したように特定期間に、第１のバッファへのゲームデータの入力を制限するようにしてもよい。
【００８７】
ここで、第１のバッファへのゲームデータを入力する処理とは、ゲームデータを第１のバッファの記憶領域に記憶（登録）することをいう。そして、第１のバッファへのゲームデータの入力を制限する処理とは、ゲームデータを第１のバッファに記憶（登録）させない処理をいう。また、第１のバッファへのゲームデータの入力を制限する処理とは、ゲームデータを第１のバッファに記憶させずに、削除する処理も含み、ゲームデータを第１のバッファに記憶させずに、他の記憶領域に記憶させることも含む。
【００８８】
特定期間検出部１１７は、プレーヤからの入力情報を無効にする特定期間を検出する。
ここで、プレーヤからの入力情報を無効にするとは、プレーヤからの入力情報に基づいてゲーム演算を行わないことをいう。要するに、プレーヤからの入力情報を無効にするとは、プレーヤからの入力情報がゲーム演算に用いられないことをいう。
【００８９】
本実施形態の特定期間検出部１１７は、入力情報制御部１１３ａにおいて、プレーヤキャラクタ毎に設定された入力情報フラグに基づいて、特定期間を検出する。例えば、入力情報制御部１１３ａにおいて、プレーヤキャラクタ毎に用意された入力情報フラグを参照する。
【００９０】
本実施形態の特定期間検出部１１７は、フレーム毎に、各プレーヤキャラクタに対応する入力情報フラグを参照する。そして、特定期間検出部１１７は、第１、第２のプレーヤキャラクタの入力情報フラグの少なくとも一方が真である状況から、第１、第２のプレーヤキャラクタの入力情報フラグが共に偽になったフレームを、特定期間の開始フレームとして、バッファ制御部１１６に通知する。
【００９１】
そして、特定期間検出部１１７は、第１、第２のプレーヤキャラクタの入力情報フラグの少なくとも一方が真に変化した後、再度、第１、第２のプレーヤキャラクタの入力情報フラグが共に偽になったフレームを、特定期間の開始フレームとして、バッファ制御部１１６に通知する。
【００９２】
なお、特定期間検出部１１７は、入力情報制御部１１３ａにおいて、入力情報フラグを、第１、第２のプレーヤキャラクタのいずれか一方が動作していない期間を真に設定し、第１、第２のプレーヤキャラクタが共に動作している期間を偽に設定してる場合には、入力情報フラグが偽から真になったフレームを、特定期間の開始フレームとして、バッファ制御部１１６に通知する。そして、入力情報フラグが真から偽になった後に、再度、入力情報フラグが偽になったフレームを、特定期間の開始フレームとして、バッファ制御部１１６に通知する。
【００９３】
描画部１２０は、処理部１００で行われる種々の処理（ゲーム処理）の結果に基づいて描画処理を行い、これにより画像を生成し、表示部１９０に出力する。いわゆる３次元ゲーム画像を生成する場合には、まずオブジェクト（モデル）の各頂点の頂点データ（頂点の位置座標、テクスチャ座標、色データ、法線ベクトル或いはα値等）を含むオブジェクトデータ（モデルデータ）が入力され、入力されたオブジェクトデータ（モデルデータ）に含まれる頂点データに基づいて、頂点処理（頂点シェーダによるシェーディング）が行われる。なお頂点処理を行うに際して、必要に応じてポリゴンを再分割するための頂点生成処理（テッセレーション、曲面分割、ポリゴン分割）を行うようにしてもよい。頂点処理では、頂点処理プログラム（頂点シェーダプログラム、第１のシェーダプログラム）に従って、頂点の移動処理や、座標変換（ワールド座標変換、カメラ座標変換）、クリッピング処理、あるいは透視変換等のジオメトリ処理が行われ、その処理結果に基づいて、オブジェクトを構成する頂点群について与えられた頂点データを変更（更新、調整）する。そして、頂点処理後の頂点データに基づいてラスタライズ（走査変換）が行われ、ポリゴン（プリミティブ）の面とピクセルとが対応づけられる。そしてラスタライズに続いて、画像を構成するピクセル（表示画面を構成するフラグメント）を描画するピクセル処理（ピクセルシェーダによるシェーディング、フラグメント処理）が行われる。ピクセル処理では、ピクセル処理プログラム（ピクセルシェーダプログラム、第２のシェーダプログラム）に従って、テクスチャの読出し（テクスチャマッピング）、色データの設定／変更、半透明合成、アンチエイリアス等の各種処理を行って、画像を構成するピクセルの最終的な描画色を決定し、透視変換されたオブジェクトの描画色を描画バッファ１７４（ピクセル単位で画像情報を記憶できるバッファ。ＶＲＡＭ、レンダリングターゲット）に出力（描画）する。すなわち、ピクセル処理では、画像情報（色、法線、輝度、α値等）をピクセル単位で設定あるいは変更するパーピクセル処理を行う。これにより、オブジェクト空間内において仮想カメラ（所与の視点）から見える画像が生成される。なお、仮想カメラ（視点）が複数存在する場合には、それぞれの仮想カメラから見える画像を分割画像として１画面に表示できるように画像を生成することができる。
【００９４】
なお頂点処理やピクセル処理は、シェーディング言語によって記述されたシェーダプログラムによって、ポリゴン（プリミティブ）の描画処理をプログラム可能にするハードウェア、いわゆるプログラマブルシェーダ（頂点シェーダやピクセルシェーダ）により実現される。プログラマブルシェーダでは、頂点単位の処理やピクセル単位の処理がプログラム可能になることで描画処理内容の自由度が高く、従来のハードウェアによる固定的な描画処理に比べて表現力を大幅に向上させることができる。
【００９５】
そして描画部１２０は、オブジェクトを描画する際に、ジオメトリ処理、テクスチャマッピング、隠面消去処理、αブレンディング等を行う。
【００９６】
ジオメトリ処理では、オブジェクトに対して、座標変換、クリッピング処理、透視投影変換、或いは光源計算等の処理が行われる。そして、ジオメトリ処理後（透視投影変換後）のオブジェクトデータ（オブジェクトの頂点の位置座標、テクスチャ座標、色データ（輝度データ）、法線ベクトル、或いはα値等）は、オブジェクトデータ記憶部１７６に保存される。
【００９７】
テクスチャマッピングは、記憶部１７０のテクスチャ記憶部に記憶されるテクスチャ（テクセル値）をオブジェクトにマッピングするための処理である。具体的には、オブジェクトの頂点に設定（付与）されるテクスチャ座標等を用いて記憶部１７０のテクスチャ記憶部からテクスチャ（色（ＲＧＢ）、α値などの表面プロパティ）を読み出す。そして、２次元の画像であるテクスチャをオブジェクトにマッピングする。この場合に、ピクセルとテクセルとを対応づける処理や、テクセルの補間としてバイリニア補間などを行う。
【００９８】
隠面消去処理としては、描画ピクセルのＺ値（奥行き情報）が入力されるＺバッファ（奥行きバッファ）を用いたＺバッファ法（奥行き比較法、Ｚテスト）による隠面消去処理を行うことができる。すなわちオブジェクトのプリミティブに対応する描画ピクセルを描画する際に、Ｚバッファに入力されるＺ値を参照する。そして参照されたＺバッファのＺ値と、プリミティブの描画ピクセルでのＺ値とを比較し、描画ピクセルでのＺ値が、仮想カメラから見て手前側となるＺ値（例えば小さなＺ値）である場合には、その描画ピクセルの描画処理を行うとともにＺバッファのＺ値を新たなＺ値に更新する。
【００９９】
αブレンディング（α合成）は、α値（Ａ値）に基づく半透明合成処理（通常αブレンディング、加算αブレンディング又は減算αブレンディング等）のことである。
【０１００】
なお、α値は、各ピクセル（テクセル、ドット）に関連づけて記憶できる情報であり、例えば色情報以外のプラスアルファの情報である。α値は、マスク情報、半透明度（透明度、不透明度と等価）、バンプ情報などとして出力できる。
【０１０１】
音生成部１３０は、処理部１００で行われる種々の処理の結果に基づいて音処理を行い、ＢＧＭ、効果音、又は音声などのゲーム音を生成し、音出力部１９２に出力する。
【０１０２】
２．本実施形態の手法
図２は、本実施形態のゲームシステムの一例を示す。本実施形態のゲームシステムでは、オンラインゲームに参加する各ゲーム機が、インターネットを介して相互に直接通信して、データを共有することができるピア・ツー・ピア方式のゲームシステムを採用する。また、本実施形態は、オンラインゲームに参加するプレーヤの操作対象のプレーヤキャラクタが同一のゲーム空間（オブジェクト空間）に存在してゲームが進行されるゲームシステムである。
【０１０３】
つまり、本実施形態では、第１のゲーム機、第２のゲーム機の相互間において、ゲーム機を操作するプレーヤからの操作情報（入力情報の一例）の検出結果であるゲームデータを送受信する処理を行い、ゲーム演算を行う。
【０１０４】
例えば、第１のゲーム機は、第１のゲーム機のゲームデータに基づいて、第１のプレーヤキャラクタ（第１のゲーム機を使用するプレーヤ１の操作対象のプレーヤキャラクタ）の移動・動作演算等のゲーム演算を行い、第１のゲーム機のゲームデータを、ネットワークを介して第２のゲーム機へ送信する処理を行う。そして、第１のゲーム機は、ネットワークを介して受信した第２のゲーム機のゲームデータに基づいて、第２のプレーヤキャラクタ（第２のゲーム機を出力する第２のプレーヤの操作対象のプレーヤキャラクタ）の移動・動作演算等のゲーム演算を行う。第２のゲーム機においても、第１のゲーム機と同様にゲーム演算処理を行う。
【０１０５】
２．１  同期処理
本実施形態は、同期処理を図るために、第１のゲーム機、第２のゲーム機それぞれが、ゲームデータを、フレーム毎に付与される共通の識別番号に対応付けて、互いに送受信することによって、ゲームを進行させる。
【０１０６】
すなわち、本実施形態は、第１のゲーム機、第２のゲーム機それぞれが、共通の識別番号を、自機において取得したゲームデータに対応付けて（付与して）、ゲームデータを送受信する。そして、自機のゲームデータの識別番号と、他のゲーム機のゲームデータの識別番号が一致することを条件に、自機のゲームデータと、他のゲーム機のゲームデータとに基づいてゲーム演算を行う。
【０１０７】
より具体的に説明すると、まず、各ゲーム機において、画像を描画するフレームレートと同じ周期で、ゲームデータを取得する。そして取得したゲームデータに識別番号を付与する。すなわち、描画フレームレートが６０ｆｐｓのフレームレートである場合には、第１のゲーム機と第２のゲーム機との接続が確立した時点を基準に、１／６０毎に取得したゲームデータに、「０」、「１」、「２」、「３」、「４」・・・と、シーケンシャルに正の整数からなる識別番号を対応付けていく。なお、同じタイミングで取得したゲームデータを用いて正確に同期処理を行うために、第１、第２のゲーム機共に、同じ描画フレームレート（例えば、６０ｆｐｓ）に設定することが望ましい。以下の説明では、第１のゲーム機、第２のゲーム機共に、描画のフレームレートを６０ｆｐｓに設定した際の説明である。
【０１０８】
そして、自機の第１のバッファに、識別番号を対応付けたゲームデータを入力する処理を行うと共に、識別番号を対応付けたゲームデータを、他のゲーム機に送信する処理を行う。
【０１０９】
なお、「接続が確立した時点」とは、第１のゲーム機においては、第２のゲーム機に対する接続要求に対する確認応答を得たときであって、第２のゲーム機においても、第１のゲーム機に対する接続要求に対する確認応答を得たときである。なお、絶対時間軸に対して第１のゲームにおける「接続が確立した時点」と、ゲーム機２における「接続が確立した時点」とにおいて僅かな誤差があってもよい。
【０１１０】
次に、他のゲーム機から送信されたゲームデータを受信した際の処理について説明すると、自機は、受信した識別番号に対応付けられた他のゲーム機のゲームデータを、第２のバッファに入力する処理を行う。つまり、第１のゲーム機は、第２のゲーム機から送信された識別番号に対応付けられたゲームデータを、第２のバッファに入力する処理を行い、第２のゲーム機は、第１のゲーム機から送信された識別番号に対応付けられたゲームデータを第２のバッファに入力する処理を行う。
【０１１１】
また、本実施形態は、識別番号が一致していることを条件に、第１のバッファに入力されている最先のゲームデータと、第２のバッファに入力されている最先のゲームデータとを出力する処理を行う。
【０１１２】
そして、第１のバッファから出力したゲームデータに基づいて第１のプレーヤキャラクタの移動・動作演算等のゲーム演算を行い、第２のバッファから出力したゲームデータに基づいて第２のプレーヤキャラクタの移動・動作演算等のゲーム演算を行う。
【０１１３】
図３を用いて、第１のゲーム機の第１のバッファ、第２のバッファのゲームデータの入出力処理を例にとり具体的に説明する。
【０１１４】
まず、第１のゲーム機は、自機のゲームデータ「左キック」に、識別番号「１０４」を対応づけて第１のバッファに入力する処理を行う。そして、第２のゲーム機から受信した、識別番号「１０３」に対応づけられたゲームデータ「後退」を、第２のバッファに入力する処理を行う。そして、第１のバッファに入力されている最先の識別番号は「１０１」であり、第２のバッファに入力されている最先の識別番号「１０１」であり、互いに一致する番号であるので、第１のバッファから、識別番号「１０１」に対応するゲームデータ「右キック」を出力すると共に、第２のバッファにから、識別番号「１０１」に対応するゲームデータ「操作なし」を出力する処理を行う。
【０１１５】
そして、本実施形態では、出力されたゲームデータ「右キック」に基づいて、第１のプレーヤキャラクタを移動・動作させる演算を行い、ゲームデータ「操作なし」に基づいて、第２のプレーヤキャラクタを移動・動作させる演算を行う。また、本実施形態では、複数の出力されたゲームデータに基づいてプレーヤキャラクタに対して特殊な動作（例えば、投げ技等）させる演算を行うことができる。
【０１１６】
このように、本実施形態では、第１、第２のバッファはＦＩＦＯ（Ｆｉｒｓｔ  Ｉｎ，Ｆｉｒｓｔ  Ｏｕｔ）（先入れ先出し）によって行われる。要するに、第１、第２のバッファに、最初に入力したゲームデータから出力する。
【０１１７】
このように、本実施形態では、ネットワークを介して接続された複数のゲーム機がオンラインゲームを行う場合であっても、第１のゲーム機を操作するプレーヤ、第２のゲーム機を操作するプレーヤが、同じタイミングで操作した操作情報に基づいて、それぞれのプレーヤが操作する対象のプレーヤキャラクタを移動・動作させることができ、ゲームの進行に支障なく同期を図ってゲームを進行させることができる。
【０１１８】
２．２  第１、第２のバッファへに入力されているゲームデータを削除する手法
上述したように、本実施形態は、同期処理を行うために、第１のバッファ、第２のバッファの最も小さい識別番号が一致したゲームデータを順次出力する。しかし、通信負荷やゲーム機の処理負荷が増大することによって、ゲームデータの第１、第２バッファへの入出力が滞り、ゲームデータが次々と蓄積されてしまう場合が発生する。ゲームデータが蓄積されてしまうと、プレーヤが操作した操作情報が、ゲームに反映されるまでの時間が長くなってしまう。つまり、プレーヤがコントローラを用いて操作情報を入力したとしても、その操作に対するゲームへのレスポンスが悪くなってしまう。その結果、プレーヤに不快感を与えてしまうことになる。
【０１１９】
例えば、図４に示すように、第１のバッファには、識別番号１０１〜１０６に対応付けられたゲームデータが入力されており、第２のバッファには、識別番号１０１〜１０５に対応付けられたゲームデータが入力されている。かかる場合には、プレーヤが「右パンチ」の操作を行った場合には、ゲームデータ「右パンチ」が、第１のバッファに入力されてから出力されて、ゲームに反映されるまでには、識別番号１０１〜１０６に対応するゲームデータの処理時間を少なくとも要することになる。
【０１２０】
このような問題を解消するために、本実施形態では、第１のバッファに入力されている蓄積量と、第２のバッファに入力されている蓄積量とが、共に所定蓄積量を超えた場合に、第１のバッファ、第２のバッファに入力されているゲームデータを削除する手法を採用している。このようにすれば、プレーヤからの操作をゲームに直ぐに反映させることができるからである。
【０１２１】
例えば、本実施形態は、所定蓄積量を「４」に設定し、第１のバッファ、第２のバッファに入力されている蓄積量が所定蓄積量「４」を超えている場合に、第１、第２のバッファに入力されているゲームデータを削除する。所定蓄積量を「４」と設定した理由は、プレーヤの感覚にもよるが、入力した操作がゲームに反映されるまでに、４フレーム分の時間（４／６０秒）を超えると不快に感じる恐れがあるからである。
【０１２２】
そして、本実施形態では、第１のバッファに入力されている蓄積量と、第２のバッファに入力されている蓄積量とが、共に所定蓄積量を超えた場合に、第１、第２のバッファの両方において入力されているゲームデータを削除する対象の識別番号を決定する。
【０１２３】
本実施形態は、ゲームデータを削除する対象の識別番号を決定する処理を、親機で行い、決定された識別番号を、親機が子機に送信している。例えば、第１のゲーム機を親機とし、第２のゲーム機を子機とした場合を具体的に説明する。
【０１２４】
なお、親機が、ゲームデータの削除対象の識別番号を決定することにしたのは、子機においてもゲームデータの削除対象の識別番号を決定する処理を行うと、親機と子機とにおいて互いに異なる識別番号を決定する可能性があり、削除対象のゲームデータが異なることになると、ゲーム進行に支障が生じる恐れがあるからである。例えば、親機が、１１０〜１１３を削除対象の識別番号として決定し、子機が１１１〜１１４を削除対象の識別番号として決定した場合には、親機は、子機から送信されることのない１１４に対応するゲームデータの受信待ち状態が続いてしまい、ゲームの進行が停止してしまい、同様に、子機においては、親機から送信されることのない１１０に対応するゲームデータの受信待ち状態が続き、ゲームの進行が停止してしまうからである。
【０１２５】
まず、第１のゲーム機は、描画のフレームレート（６０ｆｐｓ）に応じて、第１、第２バッファの蓄積量を参照する。そして、第１のバッファに入力されている蓄積量と、第２のバッファに入力されている蓄積量とが、共に所定蓄積量を超えたか否かを判断し、超えている場合には、ゲームデータを削除する必要があると判断される。
【０１２６】
本実施形態では、第１のバッファに入力されている蓄積量と、第２のバッファに入力されている蓄積量とが、共に所定蓄積量を超えたか否かを判断は、描画のフレームレートに応じて、バッファの入出力処理を行う直前に行う。なお、バッファの入出力の直後に判断してもよい。
【０１２７】
例えば、図４の例では、第１のゲーム機において、識別番号「１０７」に対応付けられたゲームデータを入力する直前の状態であり、識別番号「１０１」を出力する直前の状態の第１、第２のバッファの状態を示す。この状態において、本実施形態では、第１のゲーム機の第１のバッファの蓄積量は「６」であり、第２のバッファの蓄積量は「５」である。したがって、第１のバッファに入力されている蓄積量と、第２のバッファに入力されている蓄積量とが、所定蓄積量「４」を超えているので、ゲームデータを削除する必要があると判断する。
【０１２８】
そして、ゲームデータを削除する必要があると判断される場合には、具体的に削除対象のゲームデータの識別番号を決定する。
【０１２９】
本実施形態では、第１、第２のバッファに既に入力されているゲームデータを削除する。したがって、本実施形態では、例えば、図４に示すように、既に、第１、第２のバッファに入力されている「１０１」〜「１０６」の識別番号に対応するゲームデータを削除する。
【０１３０】
なお、本実施形態では、子機に、削除対象のゲームデータを通知する時間を考慮すると、第１、第２のバッファに入力されているゲームデータのうち、識別番号の降順（番号の大きい順に）に、削除対象のゲームデータを決定することが望ましい。
【０１３１】
また、第１、第２のバッファの双方のゲームデータを削除する理由は、一方のバッファのみについてゲームデータを削除しようとすると、他方のバッファはゲームデータが順次入力されることになり、識別番号の一致が図れずにゲームデータの出力が滞ることになる。したがって、本実施形態では、ゲームの進行を図るために、第１、第２の双方のバッファについて同一の識別番号のゲームデータを削除する。
【０１３２】
さらに、本実施形態では、第１のバッファ、第２のバッファに既に入力されているゲームデータの蓄積量よりも少ない量のゲームデータを削除する。例えば、第１、第２のバッファは、蓄積量が所定蓄積量「４」を超えていると判断されているので、第１、第２のバッファの蓄積量よりも確実に少ない量のゲームデータ量「４」のゲームデータを削除する。理由は、既に入力されているバッファの蓄積量以上の量のゲームデータの入力を制限すると、逆に、バッファ入力の処理待ち状態が続いてしまい、結果的にゲームが進行しなくなるからである。
【０１３３】
次に、第１、第２バッファ双方に入力されている識別番号「１０２」、「１０３」、「１０４」、「１０５」を、削除対象の識別番号として決定し、図５を用いて、第１のゲーム機における第１のバッファ、及び第２のバッファにおけるゲームデータの状況について１／６０毎に時間軸に沿って説明する。
【０１３４】
まず、Ｔ１時点において、第１、第２のバッファ双方において、削除対象の識別番号「１０２」、「１０３」、「１０４」、「１０５」が削除される。そして、第１のバッファにおいて、「１０７」に対応するゲームデータが入力され、「１０１」に対応するゲームデータが出力される。また、第２のバッファにおいて、「１０６」に対応するゲームデータが入力され、「１０７」に対応するゲームデータが出力される。
【０１３５】
このように、本実施形態では、第１、第２のバッファのゲームデータの削除を行うことによって、第１、第２のバッファの蓄積量を少なくすることができる。その結果、第１、第２のバッファに入力されたゲームデータをゲームに反映させるまでの時間を短縮させることができ、操作のレスポンスを改善することができる。つまり、プレーヤはオンラインゲームにおいても、レスポンスが遅いことによるストレスを感じることなく快適にゲームを行うことができる。
【０１３６】
なお、親機である第１のゲーム機は、図６に示すように、ゲームデータの削除対象の識別番号を子機である第２のゲーム機に送信するようにする。例えば、第１のゲーム機にフレームレートに応じて周期的に送信するパケットのペイロードに、削除対象の識別番号「１０２」、「１０３」、「１０４」、「１０５」、を含むようにパケットを生成し、生成したパケットを、第２のゲーム機に送信する。
【０１３７】
また、子機である第２のゲーム機は、第１のゲーム機から削除対象の識別番号を受信した場合には、削除対象の識別番号に対応する（第２のゲーム機の）ゲームデータを第１のバッファから削除し、削除対象の識別番号に対応する（第１のゲーム機の）ゲームデータを第２のバッファから削除する処理を行う。
【０１３８】
なお、本実施形態は、第１、第２のゲーム機間において、削除対象の識別番号を互いに確認してから、削除対象の識別番号に対応するゲームデータを削除するようにしてもよい。
【０１３９】
例えば、第１のゲーム機が、第２のゲーム機に対して、削除対象の識別番号「１０２」、「１０３」、「１０４」、「１０５」を送信する。そして、第２のゲーム機が、識別番号「１０２」、「１０３」、「１０４」、「１０５」に対応するゲームデータが、第１、第２のバッファから削除できると判断した場合には、第１のゲーム機に、削除を認可する応答パケットを送信する。そして、第１のゲーム機において、削除を認可する応答パケットを受信した場合に、第１のゲーム機において、識別番号「１０２」、「１０３」、「１０４」、「１０５」に対応するゲームデータを削除する処理を行い、第２のゲーム機において、識別番号「１０２」、「１０３」、「１０４」、「１０５」に対応するゲームデータを削除する処理を行うようにしてもよい。
【０１４０】
また、本実施形態は、特定期間を検出し、特定期間中に入力されたゲームデータに対応する識別番号を、削除対象の識別番号として決定し、第１、第２のバッファに入力されているゲームデータを削除してもよい。このようにすれば、プレーヤに違和感なくゲームデータを削除することができるからである。
【０１４１】
ここで、特定期間とは、プレーヤからの操作入力を無効にする期間のことをいう。つまり、特定期間とは、入力されたプレーヤからの操作が、ゲームに反映されない期間のことをいう。
【０１４２】
特定期間の検出は、第１、第２のプレーヤキャラクタに設定される入力情報フラグを参照することによって検出することができる。入力情報フラグの値は、プレーヤキャラクタが動作している期間を真に設定し、動作していない期間を偽としてフレーム単位で更新される。
【０１４３】
例えば、入力情報フラグの初期値を真に設定する。そして、第１のプレーヤからの「右パンチ」の入力情報（ゲームデータ）に基づいて、第１のプレーヤキャラクタに「右パンチ」の動作をさせると判断すると、第１のプレーヤキャラクタに対応する入力情報フラグを偽に設定する。そして、「右パンチ」の動作期間（１０フレーム分の期間）終了後に入力情報フラグを真に設定する。また、第１のプレーヤキャラクタと第２のプレーヤキャラクタとがヒットし、第２のプレーヤキャラクタが「右パンチ攻撃を受ける動作」を行うと判断すると、第２のプレーヤキャラクタに対応する入力情報フラグを偽に設定する。そして、「右パンチ攻撃を受ける動作」をさせる期間（例えば、１０フレーム分の期間）終了後において、第２のプレーヤキャラクタに対応する入力情報フラグを真に設定する。
【０１４４】
そして、第１、第２のプレーヤキャラクタに設定された入力情報フラグに基づいて、特定期間を検出する。例えば、フレーム毎に、各プレーヤキャラクタに対応する入力情報フラグを参照し、第１、第２のプレーヤキャラクタの入力情報フラグの少なくとも一方が真である状況から、第１、第２のプレーヤキャラクタの入力情報フラグが共に偽になったフレームを、特定期間の開始フレームとして決定する。そして、第１、第２のプレーヤキャラクタの入力情報フラグの少なくとも一方が真に変化した後、再度、第１、第２のプレーヤキャラクタの入力情報フラグが共に偽になったフレームを、特定期間の開始フレームとして決定する。
【０１４５】
本実施形態では、予め、プレーヤキャラクタの動作内容（例えば、「右パンチ」、「投げ技」）に対応づけて、動作させるフレーム数を決定している。したがって、特定期間の開始フレームが決定されると動作内容に応じて、特定期間のフレーム数を把握することができ、特定期間中に入力されたゲームデータに対応する識別番号を、削除対象の識別番号として決定し、第１、第２のバッファから削除する処理を行う。
【０１４６】
例えば、第１のバッファから出力されたゲームデータに基づいて、１０フレームかけて「右パンチ」の動作を行う場合における第１のバッファの状態を、図７（Ａ）を用いて詳細に説明する。
【０１４７】
例えば、１０フレームかけて「右パンチ」の動作を行う期間のうちの８フレーム分の期間（Ｔ１〜Ｔ８時点）において第１のバッファから出力される識別番号１０１〜１０８それぞれに対応するゲームデータは、ゲーム演算に用いられずに、「右パンチ」の動作がゲームに反映される。要するに、識別番号１０１ゲームデータが「右キック」である場合には、「右キック」の内容はゲームに反映されず、無視される。また、Ｔ１〜Ｔ８時点において第１のバッファに入力される識別番号１０７〜１１４に対応するゲームデータは、第１のバッファから出力された場合に、ゲーム演算に用いられない。
【０１４８】
このように、図７（Ａ）の第１のバッファは、無駄なゲームデータが入出力されている。そこで、本実施形態は、第１のプレーヤキャラクタに対して「右パンチ」の動作を行う動作期間、第１のプレーヤキャラクタが第２のプレーヤキャラクタにヒットし、第２のプレーヤキャラクタに対して「右パンチの攻撃を受ける」動作が行われる動作期間の双方のプレーヤからの操作入力を無効にする特定期間を検出して、特定期間に入力されたゲームデータを削除する手法を採用している。
【０１４９】
図７（Ｂ）を用いて、特定期間（Ｔ１〜Ｔ８時点）にゲームデータを削除する手法について、第１のバッファの状態について、詳細に説明する。
【０１５０】
本実施形態では、特定期間中に入力されたゲームデータのうち、第１、第２のバッファの蓄積量よりも少ない量４（４フレーム分）のゲームデータを削除する。そして、入力されたゲームデータのうち識別番号１０７〜１１０それぞれに対応するゲームデータを削除する。
【０１５１】
このようにすれば、識別番号１０７〜１１０それぞれに対応するゲームデータの無駄な入出力を回避しつつ、プレーヤに違和感を与えることなくゲームデータの蓄積量を抑えることができる。つまり、操作のレスポンスを改善することができる。なお、第２のバッファにおいても、識別番号１０７〜１１０それぞれに対応するゲームデータを削除する。
【０１５２】
要するに、本実施形態では、図８に示すように、第１のバッファから出力されたゲームデータに基づいて、第１のプレーヤキャラクタに対して「右パンチ」の動作を行わせる期間と、第１のプレーヤキャラクタと第２のプレーヤキャラクタ「右パンチ」のヒットがあると判断された場合に、第２のプレーヤキャラクタに対して「右パンチの攻撃を受ける」動作を行わせる期間とが重複する期間が特定期間として検出され、第１、第２のバッファの蓄積量よりも少ない量の特定期間中に入力されたゲームデータについて削除を行っている。
【０１５３】
なお、本実施形態では、第１のバッファ、第２のバッファから出力されたゲームデータに基づく演算結果によって、特定のイベントを発動させる場合には、特定イベントの発動させる期間を、特定期間として検出してもよい。例えば、格闘ゲームの場合には、プレーヤからの特定の操作情報（例えば、「必殺技」を行う操作情報）に基づいて、予め用意された特定のプログラムの実行等によって特定のイベントを行う場合には、特定のプログラムの実行が開始してから終了するまでの期間を特定期間として検出してもよい。例えば、予め用意された動画像を表示させる等の特定のプログラムの実行が開始された場合に、第１、第２のプレーヤキャラクタに対応する入力情報フラグを偽に設定し、特定プログラムの実行が終了された場合には、第１、第２のプレーヤキャラクタに対応する入力情報フラグを真に設定する。そして、第１、第２のプレーヤキャラクタの入力情報フラグの少なくとも一方が真である状況から、第１、第２のプレーヤキャラクタの入力情報フラグが共に偽になったフレームを、特定期間の開始フレームとして決定し、特定期間中のゲームデータに対応する識別番号を、削除対象の識別番号として決定し、第１、第２のバッファに
入力されたゲームデータを削除する。
【０１５４】
また、格闘ゲームの場合には、第１のプレーヤキャラクタと第２のプレーヤキャラクタとの対戦が開始するまでの時期を、特定期間として検出してもよい。例えば、プレーヤキャラクタの登場シーンから、対戦開始シーン（ゲーム直前）までの期間を特定期間としてもよい。対戦を行う前なので、プレーヤからの操作情報が反映されなくても問題はないからである。
【０１５５】
例えば、プレーヤキャラクタの登場シーンの最初の画像を生成するフレームにおいて、第１、第２のプレーヤキャラクタに対応する入力情報フラグを偽に設定し、対戦開始の画像を生成するフレームにおいて、第１、第２のプレーヤキャラクタに対応する入力情報フラグを真に設定する。そして、第１、第２のプレーヤキャラクタの入力情報フラグの少なくとも一方が真である状況から、第１、第２のプレーヤキャラクタの入力情報フラグが共に偽になったフレームを、特定期間の開始フレームとして決定し、特定期間中のゲームデータに対応する識別番号を、削除対象の識別番号として決定し、第１、第２のバッファに入力されたゲームデータを削除する。
【０１５６】
２．３  ゲームデータの送信を停止すると共に、第１のバッファへの入力を制限する手法
上述したように、本実施形態は、第１のバッファに入力されている蓄積量、第２のバッファに入力されている蓄積量が、共に所定量を超えた場合には、第１のバッファ、第２のバッファに入力されているゲームデータを削除する手法を採用している。
【０１５７】
しかし、本実施形態は、各ゲーム機は、処理負荷が高まること、通信負荷が高くなることが原因となり、遅延が生じてしまう場合がある。その結果、第１のバッファよりも第２のバッファのゲームデータ入力が遅延してしまい、第１のバッファと第２のバッファとにおいて、ゲームデータの蓄積量の差が発生してしまうことがある。
【０１５８】
そして、第１、第２のバッファのいずれかの蓄積量が所定蓄積量以下である限り、ゲームデータを削除することができない。そのため、操作のレスポンスが改善されない場合が生じてしまう。例えば、自機のゲームデータを入力する第１のバッファの蓄積量が１２ある場合に、他のゲーム機のゲームデータを入力する第２のバッファの蓄積量が２である場合には、自機を使用しているプレーヤの操作を直ぐに反映させることができない。つまり、第２のバッファの蓄積量が所定蓄積量を超えていないので、第１、第２のバッファへに入力されているゲームデータを削除することはできない。
【０１５９】
仮に、第２のバッファの蓄積量が所定蓄積量を超えていないのに、ゲームデータを削除しようとすると、第２のバッファへのゲームデータの入力待ち状態が続き、ゲームを進行させることができない問題が発生してしまう。
【０１６０】
そこで、本実施形態では、上述した問題を解消するために、第１のバッファのゲームデータの蓄積量が、第２のバッファのゲームデータの蓄積量よりも多く、第１、第２の蓄積量の差分量が所定差分量以上である場合には、第１、第２のバッファの双方の蓄積量が所定蓄積量を超えるまで、自機のゲームデータを第２のゲーム機へ送信することを制限すると共に、第１のバッファへの入力を制限する手法を採用している。例えば、本実施形態では、所定差分量を「１０」として設定している。所定差分量を「１０」と設定したのは、一般的に、差分量が１０以上あると、ゲームの進行に支障が生じる可能性が高いからである。
【０１６１】
図９を用いて具体的に説明すると、自機である第１のゲーム機において、第１のバッファのゲームデータの蓄積量が「１２」であり、第２のバッファのゲームデータの蓄積量が「２」である場合には、第１のバッファのゲームデータの蓄積量が、第２のバッファのゲームデータの蓄積量よりも所定差分量「１０」以上多いと判断されるので、自機のゲームデータは、識別番号を対応付けないで第２のゲーム機へ送信することを制限すると共に、第１のバッファへの入力を制限する。なお、識別番号を対応付けない理由は、第１のバッファが、第２のバッファよりも所定差分量多い場合には、第１のゲーム機と、第２のゲーム機間において、同一識別番号をゲームデータに割り当てるタイミングにズレが生じている可能性が高いからである。つまり、自機の方が他のゲーム機よりも、識別番号を早くゲームデータに対応付けしている可能性が高いので、自機のゲームデータに識別番号を対応付けずに、ゲームデータの入力を制限することによって、ゲーム機間において、識別番号を対応付けするタイミングを合わせることができる。
【０１６２】
一方、第１のゲーム機は、他のゲーム機である第２のゲーム機から受信した識別番号「１０３」に対応付けられた第２のゲーム機のゲームデータを、第２のバッファに入力する処理を行う。このように、第１のバッファのゲームデータへの入力を制限している期間に、第２のゲーム機から受信したゲームデータを第２のバッファへ入力することによって、双方のバッファのゲームデータの蓄積量の差分を減らすようにしている。
【０１６３】
次に、図１０を用いて、第１、第２のバッファの双方の蓄積量が所定蓄積量「４」を超えるまでの、第１のバッファ、第２のバッファの状態を、描画フレームレートに応じた時間軸に基づき変化する様子を具体的に説明する。
【０１６４】
まず、Ｔ１時点において、第１のバッファのゲームデータの蓄積量が「１２」であり、第２のバッファのゲームデータの蓄積量が「２」であり、共に所定蓄積量「４」を超えていないので、自機のゲームデータに識別番号「１１３」を対応付けずに、第１のバッファへのゲームデータの入力を制限する。一方、他のゲーム機から識別番号「１０３」に対応するゲームデータを受信したので、第２のバッファにゲームデータを入力する。
【０１６５】
そして、Ｔ２時点において、第１のバッファのゲームデータの蓄積量が「１１」であり、第２のバッファのゲームデータの蓄積量が「２」であり、共に所定蓄積量「４」を超えていないので、自機のゲームデータに識別番号「１１３」を対応付けずに、第１のバッファへのゲームデータの入力を制限する。一方、他のゲーム機から識別番号「１０４」に対応するゲームデータを受信したので、第２のバッファにゲームデータを入力する。
【０１６６】
そして、Ｔ３時点において、第１のバッファのゲームデータの蓄積量が「１０」であり、第２のバッファのゲームデータの蓄積量が「２」であり、共に所定蓄積量「４」を超えていないので、自機のゲームデータに識別番号「１１３」を対応付けずに、第１のバッファへのゲームデータの入力を制限する。一方、他のゲーム機から識別番号「１０５」、「１０６」、「１０７」に対応するゲームデータを受信したので、第２のバッファにゲームデータを入力する。
【０１６７】
そして、Ｔ４時点において、第１のバッファのゲームデータの蓄積量が「９」であり、第２のバッファのゲームデータの蓄積量が「４」であり、共に所定蓄積量「４」を超えていないので、自機のゲームデータに識別番号「１１３」を対応付けずに、第１のバッファへのゲームデータの入力を制限する。一方、他のゲーム機から識別番号「１０８」、「１０９」に対応するゲームデータを受信したので、第２のバッファにゲームデータを入力する。
【０１６８】
そして、Ｔ５時点において、第１のバッファのゲームデータの蓄積量が「８」であり、第２のバッファのゲームデータの蓄積量が「５」であり、共に所定蓄積量「４」を超えているので、自機のゲームデータに識別番号「１１３」を対応付けて、第１のバッファへのゲームデータの入力を制限する。一方、他のゲーム機から識別番号「１１０」、「１１１」に対応するゲームデータを受信したので、第２のバッファにゲームデータを入力する。
【０１６９】
このように、本実施形態では、第１、第２のバッファの蓄積量が、共に所定蓄積量を超えた場合には、上述したように、第１、第２のバッファに入力されているゲームデータを削除することができる。例えば、Ｔ５の時点において、第１、第２のバッファの蓄積量が、共に所定蓄積量を超えているので、識別番号「１１３〜１１７」に対応するゲームデータが、第１、第２のバッファに入力された場合には、識別番号「１１３〜１１７」に対応するゲームデータを削除するようにしてもよい。その結果、プレーヤからの操作入力を早期に改善することができる。
【０１７０】
また、本実施形態では、上記で説明した「特定期間」に、自機のゲームデータを第２のゲーム機へ送信することを制限すると共に、第１のバッファへの入力を制限するようにしてもよい。つまり、本実施形態は、第１のバッファのゲームデータの蓄積量が、第２のバッファのゲームデータの蓄積量よりも多く、第１、第２のバッファのゲームデータの蓄積量の差分量が所定差分量以上であると判断された場合には、特定期間中に、第１、第２のバッファの双方の蓄積量が所定蓄積量を超えるまで、自機のゲームデータを第２のゲーム機へ送信することを制限すると共に、第１のバッファへの入力を制限するようにしてもよい。プレーヤからの操作がゲームに反映されない期間に、ゲームデータの入力を制限するようにすれば、プレーヤに違和感を与えないように、自機のゲームデータを第２のゲーム機へ送信することを制限すると共に、第１のバッファへの入力を制限することができるからである。
【０１７１】
また、本実施形態では、第１のバッファのゲームデータの蓄積量が、第２のバッファのゲームデータの蓄積量よりも多く、第１、第２のバッファのゲームデータの蓄積量の差分量が所定差分量以上である場合には、第１のバッファに入力されているゲームデータの蓄積量と、第２のバッファに入力されているゲームデータの蓄積量との差分量が適正差分量に達するまで、ゲームデータに識別情報を対応付けずにゲームデータの送信を停止すると共に、第１のバッファへの入力を制限してもよい。
【０１７２】
上述したように、第１、第２のバッファ間においてゲームデータの蓄積量との差が生じることは、第１のゲーム機と、第２のゲーム機間において、同一識別番号をゲームデータに割り当てるタイミングにズレが生じている可能性が高く、第１、第２のバッファのゲームデータの蓄積量の調整を図る必要があるからである。例えば、第１のバッファのゲームデータの蓄積量が「１２」であり、第２のバッファのゲームデータの蓄積量が「２」である場合には、プレーヤの操作がゲームに反映されるまで、第１のバッファのゲームデータの蓄積量「１２」分の時間（例えば１２／６０秒）を要することになり、操作のレスポンスが悪いからである。
【０１７３】
次に、適正差分量を「４」として設定した場合における例を図１１を用いて説明する。図１１は、第１、第２のバッファの双方の蓄積量が適正差分量「４」に達するまでの、第１のバッファ、第２のバッファの状態を、描画フレームレートに応じた時間軸に基づき変化する様子を示している。
【０１７４】
まず、Ｔ１時点において、第１のバッファのゲームデータの蓄積量が「１２」であり、第２のバッファのゲームデータの蓄積量が「２」であり、差分量が「１０」であり、適正差分量「４」に達していないので、自機のゲームデータに識別番号「１１３」を対応付けずに、第１のバッファへのゲームデータの入力を制限する。一方、他のゲーム機から識別番号「１０３」に対応するゲームデータを受信したので、第２のバッファにゲームデータを入力する。
【０１７５】
また、Ｔ２〜Ｔ６時点においても、同様に、第１のバッファのゲームデータの蓄積量と、第２のバッファのゲームデータの蓄積量との差分量が、適正差分量「４」に達しないので、自機のゲームデータに識別番号「１１３」を対応付けずに、第１のバッファへのゲームデータの入力を制限し、他のゲーム機から受信したゲームデータを第２のバッファに入力する。
【０１７６】
そして、Ｔ７時点において、第１のバッファのゲームデータの蓄積量と、第２のバッファのゲームデータの蓄積量との差分量が、適正差分量「４」に達することになり、自機のゲームデータに識別番号「１１３」を対応付けて第１のバッファへのゲームデータの入力し、他のゲーム機から受信したゲームデータを第２のバッファに入力する。
【０１７７】
以上のように、第１のバッファのゲームデータの蓄積量と、第２のバッファのゲームデータの蓄積量との差分量が、適正差分量に達するまで、ゲームデータに識別情報を対応付けずにゲームデータの送信を停止すると共に、第１のバッファへの入力を制限することによって、第１のバッファの蓄積量を減らすことができ、その結果、プレーヤからの操作のレスポンスを改善することができる。
【０１７８】
なお、本実施形態は、特定期間中に、ゲームデータに識別情報を対応付けずにゲームデータの送信を停止すると共に、第１のバッファへの入力を制限するようにしてもよい。このようにすれば、プレーヤに察知されずに、ゲームデータの入力制限を行うことができる。つまり、第１のバッファのゲームデータの蓄積量が、第２のバッファのゲームデータの蓄積量よりも所定差分量以上であると判断された場合には、特定期間中に、第１のバッファのゲームデータの蓄積量と、第２のバッファのゲームデータの蓄積量との差分量が、適正差分量に達するまで、ゲームデータに識別情報を対応付けずにゲームデータの送信を停止すると共に、第１のバッファへの入力を制限するようにしてもよい。
【０１７９】
上述したゲームデータの送信を停止すると共に、第１のバッファへの入力を制限する手法は、本実施形態では、親機、子機にかかわらず、全てのゲーム機において適用する。このようにすれば、一つのゲーム機に処理負荷を集中させることがなく、処理負荷を分散させて効率よくゲームを進行させることができる。
【０１８０】
３．本実施形態の処理の流れ
（１）図１２は、第１のバッファ及び第２のバッファに入力されているゲームデータを削除する手法のタイミングチャートの一例を示す。
【０１８１】
まず、親機である第１のゲーム機において、第１、第２のバッファの蓄積量が所定蓄積量を超えていると判断される。そして、特定期間であると判断すると、特定期間中に入力された削除対象の識別番号を決定する。例えば、識別番号１０７〜１１０を削除対象の識別番号として決定する。そして、第１のゲーム機は、決定した削除対象の識別番号（１０７〜１１０）を第２のゲーム機に送信する処理を行う。
【０１８２】
そして、第１のゲーム機、第２のゲーム機それぞれは、第１のバッファに入力されている１０７〜１１０に対応するゲームデータを削除すると共に、第２のバッファに入力されている１０７〜１１０に対応するゲームデータを削除する処理を行う。
【０１８３】
（２）図１３は、第１のゲーム機において、ゲームデータの送信を停止すると共に、第１のバッファへの入力を制限する手法のタイミングチャートを示す。
【０１８４】
まず、第１のゲーム機において、第１のバッファのゲームデータの蓄積量が、第２のバッファの蓄積量よりも所定差分量多いと判断する。そして、特定期間を検出し、第１のゲーム機は、自機のゲームデータについて第２のゲーム機に対するゲームデータの送信を停止すると共に、第１のバッファへのゲームデータの入力を制限する処理を行う。
【図面の簡単な説明】
【０１８５】
【図１】本実施形態のゲーム機の機能ブロック図。
【図２】本実施形態のネットワーク図。
【図３】同期処理の説明図。
【図４】第１、第２のバッファのゲームデータの蓄積量の説明図。
【図５】ゲームデータの削除の説明図。
【図６】削除対象の識別番号を送信する説明図。
【図７】図７（Ａ）（Ｂ）は、バッファへのゲームデータの削除を行う説明図。
【図８】特定期間の説明図。
【図９】ゲームデータの差分量を説明する説明図。
【図１０】第１、第２のバッファへのゲームデータの入力制限を行う説明図。
【図１１】第１、第２のバッファへのゲームデータの入力制限を行う説明図。
【図１２】第１、第２のバッファに入力されているゲームデータを削除を行うタイミングチャート。
【図１３】第１のバッファへのゲームデータの入力制限を行い、送信停止を行うタイミングチャート。
【符号の説明】
【０１８６】
１００  処理部、１１０  ゲーム演算部、１１１、オブジェクト空間設定部、
１１２  仮想カメラ制御部、１１３  移動・動作処理部、１１３ａ  入力情報制御部、
１１４  ネットワーク部、１１５  通信制御部、
１１６  バッファ制御部、１１７  特定期間検出部、
１２０  描画部、１３０  音生成部、
１６０  操作部、１７０  記憶部、１７２  主記憶部、１７４  描画バッファ、
１７６  第１のバッファ、１７８  第２のバッファ、
１８０  情報記憶媒体、１９０  表示部、１９２  音出力部、１９６  通信部
【図１】
0005111951.tif 000002
【図２】
0005111951.tif 000003
【図３】
0005111951.tif 000004
【図４】
0005111951.tif 000005
【図５】
0005111951.tif 000006
【図６】
0005111951.tif 000007
【図７】
0005111951.tif 000008
【図８】
0005111951.tif 000009
【図９】
0005111951.tif 000010
【図１０】
0005111951.tif 000011
【図１１】
0005111951.tif 000012
【図１２】
0005111951.tif 000013
【図１３】
0005111951.tif 000014