(57)【要約】【課題】ゲーム演算処理の簡素化や効率化を実現できるプログラム、情報記憶媒体、ゲーム装置等の提供。【解決手段】ゲーム装置は、パケット処理部とパケットバッファとゲーム演算部と画像生成部を含む。他のゲーム装置との間で転送されるパケットは、パケットにより転送されるデータの種別を特定するパケットＩＤと、他のゲーム装置でのパケットの生成順序を特定する生成順序情報を含む。パケット処理部は、パケットバッファに、生成順序情報で特定される生成順序がＩ番目である第Ｉのパケットと、第ＩのパケットとパケットＩＤが同一であり生成順序がＫ番目である第Ｋのパケットとが存在し、生成順序がＪ番目である第Ｊのパケットが存在しない場合には、第Ｋのパケットについてはゲーム演算部への転送を許可せず、第Ｉのパケットについてゲーム演算部への転送を許可する。【選択図】図１０
2011045505.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークを介して他のゲーム装置との間で転送されるパケットの処理を行うパケット処理部と、
前記他のゲーム装置から受信したパケットが格納されるパケットバッファと、
パケットにより転送されるデータに基づいて、ゲーム演算処理を行うゲーム演算部と、
前記ゲーム演算処理の結果に基づいて画像を生成する画像生成部として、
コンピュータを機能させ、
前記他のゲーム装置との間で転送されるパケットは、パケットにより転送されるデータの種別を特定するパケットＩＤと、前記他のゲーム装置でのパケットの生成順序を特定する生成順序情報を含み、
前記パケット処理部は、
前記パケットバッファに、前記生成順序情報で特定される生成順序がＩ番目である第Ｉのパケットと、前記第ＩのパケットとパケットＩＤが同一であり生成順序がＫ番目である第Ｋのパケットとが存在し、生成順序がＪ番目（Ｉ＜Ｊ＜Ｋ）である第Ｊのパケットが存在しない場合には、前記第Ｋのパケットについては前記ゲーム演算部への転送を許可せず、前記第Ｉのパケットについて前記ゲーム演算部への転送を許可することを特徴とするプログラム。
【請求項２】
請求項１において、
前記パケット処理部は、
前記他のゲーム装置から受信したパケットの前記生成順序情報にしたがったパケットの並び替え処理を行い、並び替え処理後のパケットを前記パケットバッファに書き込み、
前記ゲーム演算部からパケットＩＤを指定したパケットの転送要求が来た場合に、要求されたパケットＩＤのパケットを前記ゲーム演算部に転送することを特徴とするプログラム。
【請求項３】
請求項２において、
前記パケット処理部は、
前記ゲーム演算部から要求されたパケットＩＤが、前記第Ｉのパケット及び前記第ＫのパケットのパケットＩＤである場合に、前記第Ｋのパケットについては前記ゲーム演算部に転送せずに、前記第Ｉのパケットを前記ゲーム演算部に転送することを特徴とするプログラム。
【請求項４】
請求項１乃至３のいずれかにおいて、
前記パケット処理部は、
前記第Ｊのパケットについての再送要求を前記他のゲーム装置に対して行うことを特徴とするプログラム。
【請求項５】
請求項１乃至４のいずれかにおいて、
前記第Ｉのパケット、前記第Ｋのパケットは、前記他のゲーム装置の操作データを転送する操作データ用パケットであることを特徴とするプログラム。
【請求項６】
請求項５において、
前記パケット処理部は、
複数フレーム分の操作データが設定された操作データ用パケットを、各フレームにおいて受信することを特徴とするプログラム。
【請求項７】
請求項６において、
前記パケット処理部は、
離散したフレーム毎に、複数フレーム分の操作データが設定された操作データ用パケットを受信することを特徴とするプログラム。
【請求項８】
請求項１乃至７のいずれかにおいて、
前記ネットワークを介した通信経路とは別の経路で、前記パケットバッファに対してパケットをロードして書き込むロード処理部として、
コンピュータを更に機能させることを特徴とするプログラム。
【請求項９】
請求項８において、
前記ゲーム演算部は、
前記ロード処理部により前記パケットバッファに書き込まれたパケットのデータに基づいて、ゲームに登場するキャラクタの制御処理を行うことを特徴とするプログラム。
【請求項１０】
請求項９において、
前記ロード処理部は、
キャラクタの操作データが設定された操作データ用パケット及びキャラクタの位置データが設定された位置データ用パケットの少なくとも一方を前記パケットバッファにロードして書き込み、
前記ゲーム演算部は、
前記パケットバッファに書き込まれた操作データ用パケット及び位置データ用パケットの少なくとも一方のパケットのデータに基づいて、キャラクタの制御処理を行うことを特徴とするプログラム。
【請求項１１】
請求項９又は１０において、
ネットワークの管理処理を行うネットワーク管理部として、
コンピュータを更に機能させ、
前記ロード処理部は、
前記他のゲーム装置との間のネットワークの切断が前記ネットワーク管理部により検出された場合に、前記他のゲーム装置に対応するキャラクタを制御するためのパケットを前記パケットバッファにロードして書き込み、
前記ゲーム演算部は、
前記パケットバッファに書き込まれたパケットのデータに基づいて、前記他のゲーム装置に対応するキャラクタの制御処理を行うことを特徴とするプログラム。
【請求項１２】
請求項1乃至１１のいずれかにおいて、
前記パケット処理部は、
前記パケットＩＤが、複数の分割パケットにより1単位のデータが転送される分割パケットのパケットＩＤである場合には、複数の分割パケットのデータから1単位のデータを再構成し、再構成された1単位のデータを前記ゲーム演算部に転送することを特徴とするプログラム。
【請求項１３】
請求項1２において、
前記パケット処理部は、
複数の分割パケットにより転送されるデータがキャラクタデータであり、前記ゲーム演算部からキャラクタデータ用パケットのパケットＩＤを指定した読み出し要求が来た場合には、複数の分割パケットのキャラクタデータにより再構成された１単位のキャラクタデータを、前記ゲーム演算部に転送することを特徴とするプログラム。
【請求項１４】
請求項1乃至１３のいずれかにおいて、
前記ゲーム演算部は、
前記ゲーム演算処理として、複数のゲームシーケンス区間の各ゲームシーケンス区間において各ゲームシーケンス処理を行い、
前記他のゲーム装置との間で転送されるパケットは、パケットにより転送されるデータが使用されるゲームシーケンス区間を特定する区間ＩＤを含み、
前記パケット処理部は、
受信したパケットの前記区間ＩＤにより特定されるゲームシーケンス区間と、現在のゲームシーケンス区間との照合処理を行い、
前記ゲーム演算部は、
前記区間ＩＤにより特定されるゲームシーケンス区間と現在のゲームシーケンス区間とが一致したパケットのデータに基づいて、前記ゲーム演算処理を行うことを特徴とするプログラム。
【請求項１５】
ネットワークを介して他のゲーム装置との間で転送されるパケットの処理を行うパケット処理部と、
前記他のゲーム装置から受信したパケットが格納されるパケットバッファと、
前記ネットワークを介した通信経路とは別の経路で、前記パケットバッファに対してパケットをロードして書き込むロード処理部と、
パケットにより転送されるデータに基づいて、ゲーム演算処理を行うゲーム演算部と、
前記ゲーム演算処理の結果に基づいて画像を生成する画像生成部として、
コンピュータを機能させ、
前記ゲーム演算部は、
前記ロード処理部により前記パケットバッファに書き込まれたパケットのデータに基づいて、ゲームに登場するキャラクタの制御処理を行うことを特徴とするプログラム。
【請求項１６】
コンピュータ読み取り可能な情報記憶媒体であって、請求項１乃至１５のいずれかに記載のプログラムを記憶したことを特徴とする情報記憶媒体。
【請求項１７】
ネットワークを介して他のゲーム装置との間で転送されるパケットの処理を行うパケット処理部と、
前記他のゲーム装置から受信したパケットが格納されるパケットバッファと、
パケットにより転送されるデータに基づいて、ゲーム演算処理を行うゲーム演算部と、
前記ゲーム演算処理の結果に基づいて画像を生成する画像生成部とを含み、
前記他のゲーム装置との間で転送されるパケットは、パケットにより転送されるデータの種別を特定するパケットＩＤと、前記他のゲーム装置でのパケットの生成順序を特定する生成順序情報を含み、
前記パケット処理部は、
前記パケットバッファに、前記生成順序情報で特定される生成順序がＩ番目である第Ｉのパケットと、前記第ＩのパケットとパケットＩＤが同一であり生成順序がＫ番目である第Ｋのパケットとが存在し、生成順序がＪ番目（Ｉ＜Ｊ＜Ｋ）である第Ｊのパケットが存在しない場合には、前記第Ｋのパケットについては前記ゲーム演算部への転送を許可せず、前記第Ｉのパケットについて前記ゲーム演算部への転送を許可することを特徴とするゲーム装置。
【請求項１８】
ネットワークを介して他のゲーム装置との間で転送されるパケットの処理を行うパケット処理部と、
前記他のゲーム装置から受信したパケットが格納されるパケットバッファと、
前記ネットワークを介した通信経路とは別の経路で、前記パケットバッファに対してパケットをロードして書き込むロード処理部と、
パケットにより転送されるデータに基づいて、ゲーム演算処理を行うゲーム演算部と、
前記ゲーム演算処理の結果に基づいて画像を生成する画像生成部とを含み、
前記ゲーム演算部は、
前記ロード処理部により前記パケットバッファに書き込まれたパケットのデータに基づいて、ゲームに登場するキャラクタの制御処理を行うことを特徴とするゲーム装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラム、情報記憶媒体及ゲーム装置等に関する。
【背景技術】
【０００２】
近年、ネットワークを介して通信接続される他のゲーム装置との間で通信対戦ゲームを行うゲーム装置が脚光を浴びている。この通信対戦ゲームの従来技術としては例えば特許文献１に開示される技術がある。
【０００３】
このような通信対戦ゲームでは、操作データ等のゲームデータをゲーム装置間でやり取りする必要がある。例えば相手プレーヤが入力した操作データ（キーデータ）を、他のゲーム装置からネットワークを介して受信したり、自身のゲーム装置でプレーヤが入力した操作データを、ネットワークを介して他のゲーム装置に送信する。これにより、プレーヤと相手プレーヤの間での通信対戦ゲームが可能になる。
【０００４】
この場合にスムーズな通信対戦ゲームを実現するためには、操作データ等のゲームデータを高速な転送速度で通信することが望まれる。そして高速な転送速度を実現する通信プロトコルとしてはＵＤＰ（User Datagram Protocol）などが知られている。
【０００５】
しかしながら、ＵＤＰなどの高速通信プロトコルでは、ＴＣＰ（Transmission Control Protocol）などの信頼性重視の通信プロトコルとは違って、パケットの到着や到着順序が保証されない。従って、ゲームプログラムの処理が繁雑化するなどの問題が生じる。
【０００６】
一方、ＴＣＰでは、パケットの到着や到着順序は保証されるものの、ＵＤＰに比べてパケットの転送速度が低下する。従って、例えばキャラクタの操作データ等をパケットにより転送した場合に、キャラクタの動きにタイムラグが生じるなどの不自然なゲーム画面が生成されてしまうおそれがある。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００４−２３０１９１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
本発明の幾つかの態様によれば、ゲーム演算処理の簡素化や効率化を実現できるプログラム、情報記憶媒体、ゲーム装置等を提供できる。
【課題を解決するための手段】
【０００９】
本発明の一態様は、ネットワークを介して他のゲーム装置との間で転送されるパケットの処理を行うパケット処理部と、前記他のゲーム装置から受信したパケットが格納されるパケットバッファと、パケットにより転送されるデータに基づいて、ゲーム演算処理を行うゲーム演算部と、前記ゲーム演算処理の結果に基づいて画像を生成する画像生成部とを含み、前記他のゲーム装置との間で転送されるパケットは、パケットにより転送されるデータの種別を特定するパケットＩＤと、前記他のゲーム装置でのパケットの生成順序を特定する生成順序情報を含み、前記パケット処理部は、前記パケットバッファに、前記生成順序情報で特定される生成順序がＩ番目である第Ｉのパケットと、前記第ＩのパケットとパケットＩＤが同一であり生成順序がＫ番目である第Ｋのパケットとが存在し、生成順序がＪ番目（Ｉ＜Ｊ＜Ｋ）である第Ｊのパケットが存在しない場合には、前記第Ｋのパケットについては前記ゲーム演算部への転送を許可せず、前記第Ｉのパケットについて前記ゲーム演算部への転送を許可するゲーム装置に関係する。また本発明は、上記各部としてコンピュータを機能させるプログラム、又は該プログラムを記憶したコンピュータ読み取り可能な情報記憶媒体に関係する。
【００１０】
本発明の一態様によれば、ネットワークを介して転送されるパケットは、データ種別を特定するパケットＩＤや、パケットの生成順序を特定する生成順序情報を含む。また本発明の一態様では、他のゲーム装置から受信したパケットを一時的に格納するためのパケットバッファが設けられる。そして、このパケットバッファに、生成順序がＩ番目、Ｋ番目である第Ｉのパケット、第Ｋのパケットが存在し、生成順序がＪ番目である第Ｊのパケットが存在しなかったとする。この場合に、第Ｊのパケットよりも生成順序が新しい第Ｋのパケットがゲーム演算部に転送されると、パケットの生成順序とは異なる順序でゲーム演算部にパケットが転送されてしまい、ゲーム演算処理が繁雑化するおそれがある。この点、本発明の一態様によれば、第Ｋのパケットについてはゲーム演算部への転送が許可されない。これによりゲーム演算処理の簡素化や効率化等を実現できる。
【００１１】
また本発明の一態様では、前記パケット処理部は、前記他のゲーム装置から受信したパケットの前記生成順序情報にしたがったパケットの並び替え処理を行い、並び替え処理後のパケットを前記パケットバッファに書き込み、前記ゲーム演算部からパケットＩＤを指定したパケットの転送要求が来た場合に、要求されたパケットＩＤのパケットを前記ゲーム演算部に転送してもよい。
【００１２】
このようにすれば、例えばネットワークにおいてパケットの到着順序が保証されない場合にも、パケットの生成順序にしたがった並び替え処理を行って、パケットをパケットバッファに書き込めるようになる。そしてゲーム演算部からのパケットＩＤを指定した転送要求に対して、要求されたパケットＩＤのパケットをゲーム演算部に転送できるようになるため、ゲーム演算処理の簡素化や効率化等を実現できる。
【００１３】
また本発明の一態様では、前記パケット処理部は、前記ゲーム演算部から要求されたパケットＩＤが、前記第Ｉのパケット及び前記第ＫのパケットのパケットＩＤである場合に、前記第Ｋのパケットについては前記ゲーム演算部に転送せずに、前記第Ｉのパケットを前記ゲーム演算部に転送してもよい。
【００１４】
このようにすれば、ゲーム演算部から第Ｉ、第ＫのパケットのパケットＩＤを指定した転送要求が来た場合に、第Ｋのパケットについてはゲーム演算部に転送されないようになる。従って、パケットの生成順序とは異なる順序でゲーム演算部にパケットが転送されてしまう事態等を防止できる。
【００１５】
また本発明の一態様では、前記パケット処理部は、前記第Ｊのパケットについての再送要求を前記他のゲーム装置に対して行ってもよい。
【００１６】
このようにすれば、パケットバッファに存在しなかった第Ｊのパケットの送信を、再送要求により他のゲーム装置に促すことができる。そして第Ｊのパケットを他のゲーム装置から受信すると、転送が許可されなかった第Ｋのパケットについてもゲーム演算部に転送できるようになる。
【００１７】
また本発明の一態様では、前記第Ｉのパケット、前記第Ｋのパケットは、前記他のゲーム装置の操作データを転送する操作データ用パケットであってもよい。
【００１８】
このようにすれば、第Ｉのパケット、第Ｋのパケットにより転送される操作データを、生成順序にしたがった適正な順序でゲーム演算部に転送できるようになるため、操作データに基づくゲーム演算処理の簡素化や効率化等を実現できる。
【００１９】
また本発明の一態様では、前記パケット処理部は、複数フレーム分の操作データが設定された操作データ用パケットを、各フレームにおいて受信してもよい。
【００２０】
このようにすれば、１つの操作データ用パケットを用いて、複数フレーム分の操作データを他のゲーム装置から受信できるようになるため、操作データの効率的な転送等が可能になる。
【００２１】
また本発明の一態様では、前記パケット処理部は、離散したフレーム毎に、複数フレーム分の操作データが設定された操作データ用パケットを受信してもよい。
【００２２】
このようにすれば、操作データ用パケットを、全てのフレームではなく離散したフレーム毎に受信すれば済むようになるため、他のゲーム装置との間で転送されるパケットの転送数を低減できる。
【００２３】
また本発明の一態様では、前記ネットワークを介した通信経路とは別の経路で、前記パケットバッファに対してパケットをロードして書き込むロード処理部を含んでもよい。
【００２４】
このようにすれば、通信経路を介してパケットバッファに書き込まれたパケットに対する処理と同様の処理を、通信経路とは別の経路でパケットバッファにロードされたパケットに対して行うことが可能になり、多様な処理の実現が可能になる。
【００２５】
また本発明の一態様では、前記ゲーム演算部は、前記ロード処理部により前記パケットバッファに書き込まれたパケットのデータに基づいて、ゲームに登場するキャラクタの制御処理を行ってもよい。
【００２６】
このようにすれば、通信経路とは別の経路でパケットバッファにロードされたパケットに基づいて、例えばキャラクタの動作再現処理等の様々なキャラクタ制御処理を実現できるようになる。  
【００２７】
また本発明の一態様では、前記ロード処理部は、キャラクタの操作データが設定された操作データ用パケット及びキャラクタの位置データが設定された位置データ用パケットの少なくとも一方を前記パケットバッファにロードして書き込み、前記ゲーム演算部は、前記パケットバッファに書き込まれた操作データ用パケット及び位置データ用パケットの少なくとも一方のパケットのデータに基づいて、キャラクタの制御処理を行ってもよい。
【００２８】
このようにすれば、通信経路とは別の経路でパケットバッファにロードされたパケットに設定された操作データや位置データに基づいて、例えばキャラクタの動作再現処理等の様々なキャラクタ制御処理を実現できるようになる。
【００２９】
また本発明の一態様では、ネットワークの管理処理を行うネットワーク管理部を含み、前記ロード処理部は、前記他のゲーム装置との間のネットワークの切断が前記ネットワーク管理部により検出された場合に、前記他のゲーム装置に対応するキャラクタを制御するためのパケットを前記パケットバッファにロードして書き込み、前記ゲーム演算部は、前記パケットバッファに書き込まれたパケットのデータに基づいて、前記他のゲーム装置に対応するキャラクタの制御処理を行ってもよい。
【００３０】
このようにすれば、ネットワークが切断されて他のゲーム装置からパケットを受信できなくなった場合にも、ロード処理部によりパケットバッファにロードされたパケットのデータに基づいて、他のゲーム装置に対応するキャラクタの制御処理を続行できるようになる。
【００３１】
また本発明の一態様では、前記パケット処理部は、前記パケットＩＤが、複数の分割パケットにより1単位のデータが転送される分割パケットのパケットＩＤである場合には、複数の分割パケットのデータから1単位のデータを再構成し、再構成された1単位のデータを前記ゲーム演算部に転送してもよい。
【００３２】
このようにすれば、１単位のデータのデータ量が大きい場合にも、１単位のデータを複数のパケットに分けて転送することが可能になる。
【００３３】
また本発明の一態様では、前記パケット処理部は、複数の分割パケットにより転送されるデータがキャラクタデータであり、前記ゲーム演算部からキャラクタデータ用パケットのパケットＩＤを指定した読み出し要求が来た場合には、複数の分割パケットのキャラクタデータにより再構成された１単位のキャラクタデータを、前記ゲーム演算部に転送してもよい。
【００３４】
このようにすれば、キャラクタデータが例えばカスタマイズ情報等を含み、キャラクタデータのデータ量が大きい場合にも、１単位のキャラクタデータを複数の分割パケットに分けて転送することが可能になる。
【００３５】
また本発明の一態様では、前記ゲーム演算部は、前記ゲーム演算処理として、複数のゲームシーケンス区間の各ゲームシーケンス区間において各ゲームシーケンス処理を行い、前記他のゲーム装置との間で転送されるパケットは、パケットにより転送されるデータが使用されるゲームシーケンス区間を特定する区間ＩＤを含み、前記パケット処理部は、受信したパケットの前記区間ＩＤにより特定されるゲームシーケンス区間と、現在のゲームシーケンス区間との照合処理を行い、前記ゲーム演算部は、前記区間ＩＤにより特定されるゲームシーケンス区間と現在のゲームシーケンス区間とが一致したパケットのデータに基づいて、前記ゲーム演算処理を行ってもよい。
【００３６】
本発明の一態様によれば、ネットワークを介して転送されるパケットはパケットＩＤと区間ＩＤを含み、他のゲーム装置から受信したパケットの区間ＩＤと、現在のゲームシーケンス区間の区間ＩＤとの照合処理が行われる。そして、これらの区間ＩＤが一致すると、区間ＩＤが一致したパケットのデータに基づいてゲーム演算処理が行われる。例えば各ゲームシーケンス区間において各ゲームシーケンス処理が行われる。このようにすれば、区間ＩＤが一致したことを条件に、そのパケットのデータに基づくゲーム演算処理が行われるようになるため、ゲーム演算処理の繁雑化や使用記憶容量の無駄な消費等の防止が可能になる。
【００３７】
また本発明の他の態様は、ネットワークを介して他のゲーム装置との間で転送されるパケットの処理を行うパケット処理部と、前記他のゲーム装置から受信したパケットが格納されるパケットバッファと、前記ネットワークを介した通信経路とは別の経路で、前記パケットバッファに対してパケットをロードして書き込むロード処理部と、パケットにより転送されるデータに基づいて、ゲーム演算処理を行うゲーム演算部と、前記ゲーム演算処理の結果に基づいて画像を生成する画像生成部とを含み、前記ゲーム演算部は、前記ロード処理部により前記パケットバッファに書き込まれたパケットのデータに基づいて、ゲームに登場するキャラクタの制御処理を行うゲーム装置に関係する。また本発明は、上記各部としてコンピュータを機能させるプログラム、又は該プログラムを記憶したコンピュータ読み取り可能な情報記憶媒体に関係する。
【００３８】
本発明の他の態様によれば、通信経路を介してパケットバッファに書き込まれたパケットに対する処理と同様の処理を、通信経路とは別の経路でパケットバッファにロードされたパケットに対して行うことが可能になり、多様な処理の実現が可能になる。
【図面の簡単な説明】
【００３９】
【図１】図１（Ａ）、図１（Ｂ）はゲーム装置のネットワーク構成の例。
【図２】図２（Ａ）、図２（Ｂ）は携帯型ゲーム装置への適用例。
【図３】本実施形態のゲーム装置の構成例。
【図４】図４（Ａ）〜図４（Ｃ）はゲームシーケンス処理の説明図。
【図５】図５（Ａ）、図５（Ｂ）はゲームシーケンス処理の説明図。
【図６】各ゲームシーケンス区間で行われるパケット転送の説明図。
【図７】図７（Ａ）、図７（Ｂ）はＴＣＰやＵＤＰによるパケット転送の説明図。
【図８】図８（Ａ）、図８（Ｂ）はＵＤＰによりパケット転送を行った場合の問題点についての説明図。
【図９】本実施形態で使用されるパケットのフォーマット例。
【図１０】本実施形態のパケット処理の説明図。
【図１１】図１１（Ａ）〜図１１（Ｃ）は本実施形態のパケットの書き込み及び転送手法の説明図。
【図１２】図１２（Ａ）、図１２（Ｂ）は複数フレーム分の操作データが設定された操作データ用パケットの転送手法の説明図。
【図１３】図１３（Ａ）、図１３（Ｂ）は通信経路とは別経路でパケットをロードする手法の説明図。
【図１４】図１４（Ａ）、図１４（Ｂ）も通信経路とは別経路でパケットをロードする手法の説明図。
【図１５】ネットワークの切断検出時のキャラクタ制御処理の説明図。
【図１６】分割パケットのフォーマット例。
【図１７】分割パケットを用いる手法の説明図。
【図１８】区間ＩＤを用いた本実施形態のパケット処理の説明図。
【図１９】図１９（Ａ）、図１９（Ｂ）も区間ＩＤを用いた本実施形態のパケット処理の説明図。
【図２０】図２０（Ａ）、図２０（Ｂ）も区間ＩＤを用いた本実施形態のパケット処理の説明図。
【図２１】本実施形態の区間同期処理の説明図。
【図２２】本実施形態の区間同期処理の詳細例の説明図。
【図２３】本実施形態の詳細な処理例のフローチャート。
【図２４】本実施形態の詳細な処理例のフローチャート。
【図２５】本実施形態の詳細な処理例のフローチャート。
【図２６】本実施形態の詳細な処理例のフローチャート。
【図２７】本実施形態の詳細な処理例のフローチャート。
【発明を実施するための形態】
【００４０】
以下、本実施形態について説明する。なお、以下に説明する本実施形態は、特許請求の範囲に記載された本発明の内容を不当に限定するものではない。また本実施形態で説明される構成の全てが、本発明の必須構成要件であるとは限らない。
【００４１】
１．ネットワーク構成
図１（Ａ）、図１（Ｂ）に本実施形態のゲーム装置を用いて通信ゲームを行う場合のネットワーク構成例を示す。図１（Ｂ）はツリー型の例であり、図１（Ｂ）はフルメッシュ型（メッシュ型）の例である。
【００４２】
図１（Ａ）のツリー型では、ホストとなるゲーム装置ＧＭ１に対して、クライアントとなるゲーム装置ＧＭ２、ＧＭ３・・・ＧＭｎがネットワーク９０を介して通信接続されている。ここでネットワーク９０（配信網、通信回線）は、例えばインターネットや無線ＬＡＮ等を利用した通信路であり、直接接続のための専用線（専用ケーブル）やイーサネット（登録商標）等によるＬＡＮの他、電話通信網やケーブル網や無線ＬＡＮ等の通信網を含むことができる。また通信方法については有線／無線を問わない。
【００４３】
図１（Ｂ）のフルメッシュ型では、ＧＭ１、ＧＭ２、ＧＭ３、ＧＭ４の各ゲーム装置は、他の全てのゲーム装置と無線ＬＡＮ等のネットワークを介して通信接続されている。
【００４４】
なお本実施形態のゲーム装置のネットワーク構成は図１（Ａ）、図１（Ｂ）には限定されず、例えばリング型、バス型、ハイブリッド型などの種々のタイプを採用できる。
【００４５】
図２（Ａ）に携帯型ゲーム装置への適用例を示す。この携帯型ゲーム装置は、方向キー１２、アナログスティック１４、操作ボタン１６〜１９、Ｌ、Ｒボタン２０、２１、セレクトボタン２２、スタートボタン２３などの操作部を有する。またディスプレイ３０（広義には表示部）や図示しないスピーカ（広義には音出力部）を有する。
【００４６】
図２（Ａ）の携帯型ゲーム装置は無線ＬＡＮ（広義には無線ネットワーク）を介した無線通信が可能になっている。携帯型ゲーム装置の無線ＬＡＮには、アドホックモードやインフラストラクチャモードがある。アドホックモードは、携帯型ゲーム装置間で通信するモードであり、各携帯型ゲーム装置が相手と同じチャネルを自動検索して、通信対戦等が行われる。インフラストラクチャモードは、携帯型ゲーム装置をインターネットに接続するためのモードである。
【００４７】
図２（Ｂ）では、携帯型ゲーム装置ＧＭ１〜ＧＭ３は無線ＬＡＮ（無線ネットワーク）を介して通信接続され、携帯型ゲーム装置ＧＭ１〜ＧＭ３のプレーヤ１〜３は通信対戦ゲーム等を楽しむことができる。
【００４８】
２．ゲーム装置の構成
図３に本実施形態のゲーム装置（画像生成システム、ゲームシステム）の構成例を示す。なお本実施形態のゲーム装置は図３の構成に限定されず、その一部の構成要素を省略したり、他の構成要素を追加するなどの種々の変形実施が可能である。
【００４９】
操作部１６０は、プレーヤが操作データを入力するためのものであり、その機能は、方向指示キー、操作ボタン、アナログスティック、レバー、各種センサ（角速度センサ、加速度センサ等）、マイク、或いはタッチパネル型ディスプレイなどにより実現できる。
【００５０】
記憶部１７０は、処理部１００のワーク領域となるもので、その機能はＲＡＭ（ＤＲＡＭ、ＶＲＡＭ）などにより実現できる。そしてゲームプログラムや、ゲームデータは、この記憶部１７０に保持される。
【００５１】
なおゲームプログラムは、ゲーム処理を実行するための命令コードが記述されたソフトウェアである。またゲームデータは、ゲームプログラムの実行の際に必要なデータであり、例えば操作データ、キャラクタデータ、ゲームステージデータ、通信に参加しているメンバーの情報、或いはキャラクタ等の位置データなどである。
【００５２】
情報記憶媒体１８０（コンピュータにより読み取り可能な媒体）は、プログラムやデータなどを格納するものであり、その機能は、光ディスク（ＣＤ、ＤＶＤ）、ＨＤＤ（ハードディスクドライブ）、或いはメモリ（ＲＯＭ等）などにより実現できる。処理部１００は、情報記憶媒体１８０に格納されるプログラム（データ）に基づいて本実施形態の種々の処理を行う。即ち情報記憶媒体１８０には、本実施形態の各部としてコンピュータ（操作部、処理部、記憶部、出力部を備える装置）を機能させるためのプログラム（各部の処理をコンピュータに実行させるためのプログラム）が記憶される。
【００５３】
表示部１９０は、本実施形態により生成された画像を出力するものであり、その機能は、ＬＣＤ、有機ＥＬディスプレイ、ＣＲＴ、タッチパネル型ディスプレイ、或いはＨＭＤ（ヘッドマウントディスプレイ）などにより実現できる。音出力部１９２は、本実施形態により生成された音を出力するものであり、その機能は、スピーカ、或いはヘッドフォンなどにより実現できる。
【００５４】
補助記憶装置１９４（補助メモリ、２次メモリ）は、記憶部１７０の容量を補うために使用される記憶装置であり、ＳＤメモリーカード、マルチメディアカードなどのメモリーカードなどにより実現できる。
【００５５】
通信部１９６は、有線や無線のネットワークを介して外部（他のゲーム装置、サーバ）との間で通信を行うものであり、その機能は、通信用ＡＳＩＣ又は通信用プロセッサなどのハードウェアや、通信用ファームウェアにより実現できる。
【００５６】
なお本実施形態の各部としてコンピュータを機能させるためのプログラム（データ）は、サーバ（ホスト装置）が有する情報記憶媒体からネットワーク及び通信部１９６を介して情報記憶媒体１８０（あるいは記憶部１７０、補助記憶装置１９４）に配信してもよい。このようなサーバ（ホスト装置）による情報記憶媒体の使用も本発明の範囲内に含めることができる。
【００５７】
処理部１００（プロセッサ）は、操作部１６０からの操作データやプログラムなどに基づいて、ゲーム処理、画像生成処理、或いは音生成処理などを行う。処理部１００は記憶部１７０をワーク領域として各種処理を行う。この処理部１００の機能は、各種プロセッサ（ＣＰＵ、ＧＰＵ等）、ＡＳＩＣ（ゲートアレイ等）などのハードウェアや、プログラムにより実現できる。
【００５８】
処理部１００は、パケット処理部１０２、ゲーム演算部１０４、ロード処理部１０８、ネットワーク管理部１１０、画像生成部１２０、音生成部１３０を含む。なおこれらの一部の構成要素を省略したり、他の構成要素を追加するなどの種々の変形実施が可能である。
【００５９】
パケット処理部１０２はパケットに関する種々の処理を行う。例えばネットワーク９０を介して他のゲーム装置との間で転送されるパケットの処理を行う。具体的には、通信部１９６を介してパケットを受信する処理を行って、パケットバッファ１７１に書き込んだり、パケットを生成して通信部１９６を介して送信する処理などを行う。
【００６０】
ゲーム演算部１０４はゲーム演算処理を行う。例えばパケットにより転送されるデータに基づいてゲーム演算処理を行う。ゲーム演算処理としては、ゲーム開始条件が満たされた場合にゲームを開始する処理、ゲームを進行させる処理、ゲーム結果を演算する処理、或いはゲーム終了条件が満たされた場合にゲームを終了する処理などがある。
【００６１】
ゲーム演算部１０４は、ゲームシーケンス処理部１０５、オブジェクト空間設定部１０６、キャラクタ制御部１０７を含む。
【００６２】
ゲームシーケンス処理部１０５は、ゲームを構成する複数のゲームシーケンスの各ゲームシーケンスの処理を実行したり、ゲームシーケンスを進行させる処理などを行う。
【００６３】
オブジェクト空間設定部１０６は、キャラクタ（モデルオブジェクト）、マップ（地形）、建物、コース（道路）、樹木、壁などの表示物を表す各種オブジェクト（ポリゴン、自由曲面又はサブディビジョンサーフェイスなどのプリミティブ面で構成されるオブジェクト）をオブジェクト空間に配置設定する処理を行う。即ちワールド座標系でのオブジェクトの位置や回転角度（向き、方向と同義）を決定し、その位置（Ｘ、Ｙ、Ｚ）にその回転角度（Ｘ、Ｙ、Ｚ軸回りでの回転角度）でオブジェクトを配置する。
【００６４】
キャラクタ制御部１０７は、キャラクタの制御処理を行う。ここでキャラクタはゲームに登場する人、ロボット、動物、車、戦闘機等の移動体である。具体的にはキャラクタ制御部１０７は、キャラクタを移動させるための演算を行う。或いはキャラクタを動作させるための演算を行う。即ち操作部１６０からの操作データや、プログラム（移動・動作アルゴリズム）や、各種データ（モーションデータ）などに基づいて、キャラクタをオブジェクト空間内で移動させたり、キャラクタを動作（モーション、アニメーション）させる処理を行う。具体的には、キャラクタの移動情報（位置、回転角度、速度、或いは加速度）や動作情報（パーツオブジェクトの位置、或いは回転角度）を、１フレーム（１／６０秒）毎に順次求めるシミュレーション処理を行う。なおフレームは、移動・動作処理（シミュレーション処理）や画像生成処理を行う時間の単位である。
【００６５】
例えばキャラクタ制御部１０７は、モーション記憶部１７８に記憶されるモーションに基づいて、キャラクタのモーションを再生する処理を行う。即ち、キャラクタ（スケルトン）を構成する各パーツオブジェクト（スケルトンを構成する骨）の位置又は回転角度（方向）等を含むモーションのデータを、モーション記憶部１７８から読み出す。そして、キャラクタの各パーツオブジェクト（骨）を動かすことで（スケルトン形状を変形させることで）、キャラクタのモーションを再生する。
【００６６】
なお、キャラクタのモデルの特定情報、モーションの特定情報、属性情報、状態情報、アイテム情報、或いはカスタマイズ情報などのキャラクタデータは、キャラクタデータ記憶部１７６に記憶される。またキャラクタの形状等を表すモデルデータ（ポリゴンデータ等）はモデルデータ記憶部１７７に記憶される。またプレーヤがキャラクタを動作させるために操作部１６０を操作することで得られた操作データは、操作データバッファ１７２に記憶される。
【００６７】
ロード処理部１０８はパケットバッファへのパケットのロード処理を行う。例えばネットワーク９０（通信部１９６）を介した通信経路とは別の経路で、パケットバッファ１７１に対してパケットをロードして書き込む処理を行う。
【００６８】
ネットワーク管理部１１０はネットワークに関する管理処理を行う。例えばネットワークの接続処理を行ったり、ネットワークの切断の判断処理などを行う。
【００６９】
画像生成部１２０は、処理部１００で行われる種々の処理の結果に基づいて画像の生成処理を行う。例えばゲーム演算部１０４でのゲーム演算処理の結果に基づいて画像を生成し、表示部１９０に出力する。具体的には、座標変換（ワールド座標変換、カメラ座標変換）、クリッピング処理、透視変換、或いは光源処理等のジオメトリ処理が行われ、その処理結果に基づいて、描画データ（プリミティブ面の頂点の位置座標、テクスチャ座標、色データ、法線ベクトル或いはα値等）が作成される。そして、この描画データ（プリミティブ面データ）に基づいて、透視変換後（ジオメトリ処理後）のオブジェクト（１又は複数プリミティブ面）を、描画バッファ１７９（フレームバッファ、ワークバッファ等のピクセル単位で画像情報を記憶できるバッファ）に描画する。これにより、オブジェクト空間内において仮想カメラ（所与の視点）から見える画像が生成される。なお、描画処理は頂点シェーダ処理やピクセルシェーダ処理により実現することができる。
【００７０】
音生成部１３０は、処理部１００で行われる種々の処理の結果に基づいて音処理を行い、ＢＧＭ、効果音、又は音声などのゲーム音を生成し、音出力部１９２に出力する。
【００７１】
そして本実施形態ではパケット処理部１０２は、ネットワーク９０を介して転送されるパケットの処理を行い、ゲーム演算部１０４は、パケットのデータに基づいてゲーム演算処理を行う。ここでネットワーク９０を介して転送されるパケットは、パケットにより転送されるデータの種別（パケットの種別）を特定するパケットＩＤや、他のゲーム装置でのパケットの生成順序（送信順序）を特定する生成順序情報（送信順序情報）を含む。またパケットにより転送されるデータが使用されるゲームシーケンス区間を特定する区間ＩＤを含むことができる。即ちパケット処理部１０２は、パケットＩＤや生成順序情報や区間ＩＤなどがヘッダフィールドに設定され、データがデータフィールドに設定されたパケットを、他のゲーム装置から受信する処理を行う。なお自身が他のゲーム装置に対してパケットを送信する場合には、パケット処理部１０２は、パケットＩＤや生成順序情報や区間ＩＤがヘッダフィールドに設定され、データがデータフィールドに設定されたパケットを生成して送信する処理を行う。
【００７２】
そしてパケット処理部１０２は、受信したパケットをパケットバッファ１７１に書き込む処理や、パケットバッファ１７１に書き込まれたパケットを読み出してゲーム演算部１０４に転送する処理などを行う。そして生成順序が新しいパケットがパケットバッファ１７１に書き込まれても、そのパケットよりも生成順序が古いパケットがパケットバッファ１７１に書き込まれていない場合には、その生成順序が新しいパケットについてはゲーム演算部１０４に転送しないようにする。
【００７３】
具体的には、パケットバッファ１７１に、パケットに設定される生成順序情報で特定される生成順序がＩ番目である第Ｉのパケットと、第ＩのパケットとパケットＩＤが同一であり生成順序がＫ番目である第Ｋのパケットとが存在する一方で、生成順序がＪ番目（Ｉ＜Ｊ＜Ｋ。Ｉ、Ｊ、Ｋは自然数）である第Ｊのパケットが存在していないとする。この場合にはパケット処理部１０２は、第Ｋのパケットについてはゲーム演算部１０４への転送を許可せず、第Ｉのパケットについてゲーム演算部１０４への転送を許可する。例えばゲーム演算部１０４からパケットＩＤを指定した読み出し要求が来た場合に、第Ｉのパケットについてはパケットバッファ１７１から読み出す一方で、第Ｋのパケットについてはパケットバッファ１７１から読み出さないようにする。
【００７４】
またパケット処理部１０２は、他のゲーム装置から受信したパケットの生成順序情報にしたがったパケットの並び替え処理を行い、並び替え処理後のパケットをパケットバッファ１７１に書き込む。即ち生成順序情報にしたがった並びの順番で、パケットバッファ１７１にパケットを書き込む。そしてパケット処理部１０２は、ゲーム演算部１０４からパケットＩＤを指定したパケットの転送要求が来た場合に、要求されたパケットＩＤのパケットをゲーム演算部１０４に転送する。
【００７５】
具体的にはパケット処理部１０２は、ゲーム演算部１０４から要求されたパケットＩＤが、第Ｉのパケット及び第ＫのパケットのパケットＩＤである場合に、第Ｋのパケットについてはゲーム演算部１０４に転送せずに、第Ｉのパケットをゲーム演算部１０４に転送する。例えば第Ｋのパケットについてはパケットバッファ１７１から読み出さず、第Ｉのパケットをパケットバッファ１７１から読み出す。この場合にパケット処理部１０２は、パケットバッファ１７１に存在しない第Ｊのパケットについての再送要求を他のゲーム装置に対して行う。そして、再送要求によって他のゲーム装置から第Ｊのパケットを受信し、パケットバッファ１７１に書き込まれると、ゲーム演算部１０４からの転送要求に対して、第Ｋのパケットを読み出してゲーム演算部１０４に転送する。
【００７６】
なお、このようなパケット処理が行われる第Ｉのパケット、第Ｋのパケットは、例えば他のゲーム装置の操作データ（他のゲーム装置のプレーヤが入力した操作データ）を転送する操作データ用パケットである。即ち第Ｉ、第Ｋのパケットは、そのデータフィールドに操作データが設定されたパケットである。但し、第Ｉ、第Ｋのパケットは、操作データ用パケット以外のパケットであってもよい。即ち、キャラクタデータ、ボイスチャットデータ、位置データ等の操作データ以外のゲームデータを転送するパケットであってもよい。
【００７７】
またパケット処理部１０２は、複数フレーム分の操作データが設定された操作データ用パケットを、各フレームにおいて受信する。即ち他のゲーム装置のプレーヤが入力した複数フレーム分の操作データがデータフィールドに設定された操作データ用パケットを受信する。この場合に、離散したフレーム毎（複数フレーム毎）に、複数フレーム分の操作データが設定された操作データ用パケットを受信することが望ましい。例えば第１のフレームで操作データ用パケットを受信した場合に、第２のフレームでは受信せず、第３のフレームで操作データ用パケットを受信する。
【００７８】
なお他のゲーム装置にパケットを送信する場合には、パケット処理部１０２は、複数フレーム分の操作データが設定された操作データ用パケットを生成して、各フレームにおいて送信する。具体的には、離散したフレーム毎に、複数フレーム分の操作データが設定された操作データ用パケットを送信する
ロード処理部１０８は、ネットワーク９０を介した通信経路とは別の経路（ロード処理の経路）で、パケットバッファ１７１に対してパケットをロードして書き込む。そしてゲーム演算部１０４は、ロード処理部１０８によりパケットバッファ１７１に書き込まれたパケットのデータ（操作データ等のゲームデータ）に基づいて、ゲームに登場するキャラクタの制御処理（移動処理、モーション処理）等のゲーム演算処理を行う。即ち、通常は、通信部１９６を介して他のゲーム装置から受信したパケットがパケットバッファ１７１に書き込まれ、書き込まれたパケットのデータに基づいてキャラクタの制御処理等のゲーム演算処理が行われる。これに対してロードモードでは、ロード処理部１０８が、記憶部１７０、情報記憶媒体１８０又は補助記憶装置１９４から読み出したパケットを、パケットバッファ１７１にロードして書き込み、ゲーム演算部１０４は、ロードされたパケットのデータに基づいてキャラクタの制御処理等のゲーム演算処理を行う。
【００７９】
具体的にはロード処理部１０８は、キャラクタの操作データが設定された操作データ用パケット及びキャラクタの位置データが設定された位置データ用パケットの少なくとも一方をパケットバッファ１７１にロードして書き込む。そしてゲーム演算部１０４は、パケットバッファ１７１に書き込まれた操作データ用パケット及び位置データ用パケットの少なくとも一方のパケットのデータに基づいて、キャラクタ制御処理等を行う。
【００８０】
また例えば他のゲーム装置との間のネットワークの切断がネットワーク管理部１１０により検出されたとする。この場合に、ロード処理部１０８は、他のゲーム装置に対応するキャラクタを制御するためのパケットをパケットバッファにロードして書き込む。そしてゲーム演算部１０４は、パケットバッファに書き込まれたパケットのデータに基づいて、他のゲーム装置に対応するキャラクタの制御処理を行う。
【００８１】
ここで他のゲーム装置に対応するキャラクタは、例えば他のゲーム装置において相手プレーヤが操作していた相手キャラクタに対応するキャラクタである。例えば相手プレーヤが操作する相手キャラクタと通信対戦を行っている最中に、ネットワークが切断された場合には、その相手キャラクタに対応するキャラクタが、ロード処理部１０８によりロードされたパケットのデータに基づいて制御されて動作するようになる。
【００８２】
またパケット処理部１０２は、パケットＩＤが、複数の分割パケットにより1単位のデータが転送される分割パケットのパケットＩＤである場合には、複数の分割パケットのデータから1単位のデータを再構成する処理を行う。そして再構成された1単位のデータをゲーム演算部１０４に転送する。
【００８３】
例えば複数の分割パケットにより転送されるデータがキャラクタデータであり、ゲーム演算部１０４からキャラクタデータ用パケットのパケットＩＤを指定した読み出し要求が来たとする。この場合には、パケット処理部１０２は、複数の分割パケットのキャラクタデータにより再構成された１単位のキャラクタデータを、ゲーム演算部１０４に転送する。
【００８４】
また本実施形態では、ゲーム演算部１０４は、ゲーム演算処理として、複数のゲームシーケンス区間の各ゲームシーケンス区間において各ゲームシーケンス処理を行う。
【００８５】
ここで各ゲームシーケンス区間で行われるゲームシーケンス処理としては、ゲームに登場するキャラクタの選択処理、ゲームに必要なデータのロード処理、キャラクタの対戦処理、或いはゲームの結果表示処理などがある。これ以外にも、ゲームシーケンス処理としては、プレーヤが通信ゲームに参加するためのロビー処理、オープニング画面の表示処理、エンディング画面の表示処理、デモ画面の表示処理などの種々の処理を想定できる。
【００８６】
キャラクタの選択処理は、キャラクタ選択画面を表示したり、キャラクタ選択画面においてプレーヤのキャラクタ選択操作を受け付ける処理などである。データのロード処理は、キャラクタ同士の対戦が可能になるように、キャラクタデータやマップデータなどのゲームに必要なデータを記憶部１７０や情報記憶媒体１８０などからロードする処理などである。キャラクタの対戦処理は、操作データに基づいてプレーヤが操作するキャラクタと他のプレーヤ又はコンピュータが操作するキャラクタを対戦させる処理などである。ゲームの結果表示処理は、対戦ゲームの結果を演算して、プレーヤに提示する処理などである。
【００８７】
そしてパケット処理部１０２は、受信したパケットの区間ＩＤと、現在のゲームシーケンス区間（当該フレームで実行されているゲームシーケンス処理の区間）の区間ＩＤとの照合処理を行う。即ちこれらの区間ＩＤが一致しているか否かを判断する。そしてゲーム演算部１０４は、パケットの区間ＩＤと、現在のゲームシーケンス区間の区間ＩＤとが一致したパケットのデータに基づいて、ゲーム演算処理を行う。例えば区間ＩＤが一致しないパケットについては、そのパケットのデータに基づくゲーム演算処理は行わず、区間ＩＤが一致したことを条件に、そのパケットのデータに基づくゲーム演算処理を行う。
【００８８】
具体的にはパケットバッファ１７１には、他のゲーム装置から受信したパケットが格納される。例えば通信部１９６が他のゲーム装置からパケットを受信し、そのパケットが、通信部１９６の通信用バッファ１９７（ソケットバッファ）に書き込まれる。そしてパケット処理部１０２は、通信用バッファ１９７からパケットを読み出し、読み出されたパケットをパケットバッファ１７１に書き込む。
【００８９】
この時、本実施形態ではパケット処理部１０２は、パケットの区間ＩＤ（同期ＩＤ）と現在のゲームシーケンス区間の区間ＩＤとが一致したパケットを、パケットバッファ１７１に書き込む。即ち、通信用バッファ１９７から読み出されたパケットに設定された区間ＩＤを解析し、パケットの区間ＩＤと、現在のゲームシーケンス区間に対して区間同期処理により対応づけられた区間ＩＤとを比較する。そしてこれらの区間ＩＤが一致していた場合には、そのパケットをパケットバッファ１７１に書き込む。そしてゲーム演算部１０４は、パケットバッファ１７１に書き込まれたパケットのデータ（ゲームデータ）に基づいて、ゲーム演算処理を行う。即ち、パケットに設定されたデータとゲームプログラムにより、そのゲームシーケンス区間でのゲームシーケンス処理を実行する。
【００９０】
一方、パケット処理部１０２は、パケットの区間ＩＤと現在のゲームシーケンス区間の区間ＩＤとが一致しなかったパケットについては、パケットバッファ１７１に書き込まずに破棄する。即ち、通信用バッファ１９７から読み出されたパケットの区間ＩＤを解析し、パケットの区間ＩＤと、現在のゲームシーケンス区間の区間ＩＤとを比較する。そして、これらの区間ＩＤが一致していなかった場合にはそのパケットをパケットバッファ１７１に書き込まないようにする。これにより現在のゲームシーケンス区間と区間ＩＤが一致しないパケットについては、ゲーム演算部１０４に転送されないようになる。
【００９１】
またパケット処理部１０２は、ゲームシーケンス区間の区間同期処理を行う。例えば自身のゲーム装置のゲームシーケンス区間と他のゲーム装置のゲームシーケンス区間とを同期させる区間同期処理を行う。即ち、自身のゲーム装置と他のゲーム装置（相手側ゲーム装置）とが同じタイミングで同じゲームシーケンス処理を実行するように区間同期処理を行う。
【００９２】
そしてゲーム演算部１０４は、区間同期処理が完了した場合に、ゲームシーケンス区間を次のゲームシーケンス区間に移行させる。即ち第Ｎ−１のゲームシーケンス区間から次の第Ｎ（Ｎは２以上の整数）のゲームシーケンス区間にゲームシーケンス区間を移行させる。
【００９３】
例えばパケット処理部１０２は、第Ｎ−１のゲームシーケンス区間では、ゲームシーケンス区間が第Ｎ−１のゲームシーケンス区間であることを表す区間ＩＤを含むパケットを生成して、他のゲーム装置に送信する。同様に第Ｎのゲームシーケンス区間では、ゲームシーケンス区間が第Ｎのゲームシーケンス区間であることを表す区間ＩＤを含むパケットを生成して、他のゲーム装置に送信する。
【００９４】
そしてパケット処理部１０２は、第Ｎ−１のゲームシーケンス区間から第Ｎのゲームシーケンス区間に移行した場合には、区間ＩＤである区間番号をインクリメント又はデクリメントする更新処理を行う。例えば区間番号をゲームシーケンス区間が進む毎に単調増加又は単調減少させる。なお区間ＩＤの更新処理は、このような単調増加、単調減少には限定されない。
【００９５】
またパケット処理部１０２は、他のゲーム装置との間で同期パケット（同期要求パケット、同期応答パケット）の転送処理（受信処理、送信処理）を行うことで、区間同期処理を実行する。例えばパケット処理部１０２は、自身のゲーム装置において第Ｎ−１のゲームシーケンス区間が完了し、他のゲーム装置から区間同期処理を要求する同期パケット（同期要求パケット）を受信した場合に、第Ｎのゲームシーケンス区間への移行を通知する同期パケットを他のゲーム装置に送信する。具体的には、自身のゲーム装置において第Ｎ−１のゲームシーケンス区間が完了し、他のゲーム装置から同期パケットを受信すると、第Ｎのゲームシーケンス区間への移行が可能であると判断して、区間ＩＤをインクリメント又はデクリメントする更新処理を行う。そして更新処理後の区間ＩＤを含む同期パケットを他のゲーム装置に送信することで、区間同期処理を実行する。
【００９６】
またネットワーク管理部１１０は、所定期間内（所定時間内）に区間同期処理が完了しなかった場合に、ネットワークが切断されたと判断する。例えばゲームシーケンス区間が完了してから、所定期間内に他のゲーム装置から同期パケットを受信しなかった場合に、ネットワークが切断されたと判断する。そして例えば、その他のゲーム装置とのネットワークが切断されたことをプレーヤに知らせる画面を表示部１９０に表示する。
【００９７】
３．本実施形態の手法
３．１  ゲームシーケンス処理
本実施形態では、複数のゲームシーケンス区間の各ゲームシーケンス区間において、他のゲーム装置との間でパケットの送受信を行い、このパケットにより転送されるデータに基づいて各ゲームシーケンス区間でのゲームシーケンス処理を実行することができる。まず、このゲームシーケンス処理について図４（Ａ）〜図５（Ｂ）を用いて説明する。
【００９８】
ロビー処理のゲームシーケンス区間では、図４（Ａ）に示すようなロビー画面が表示される。そして、このロビー画面においてプレーヤが対戦相手プレーヤを選択すると、その対戦相手プレーヤと通信対戦が可能か否かが判断され、対戦可能である場合にはキャラクタ選択処理のゲームシーケンス区間に移行する。
【００９９】
キャラクタ選択処理のゲームシーケンス区間では、図４（Ｂ）に示すようなキャラクタ選択画面が表示される。そして、プレーヤと相手プレーヤは自身が所望するキャラクタを選択する。この場合に、キャラクタ選択のために相手プレーヤが操作部により入力した操作データのパケットが、相手プレーヤのゲーム装置からプレーヤのゲーム装置に送信される。同様にキャラクタ選択のためにプレーヤが入力した操作データのパケットは、プレーヤのゲーム装置から相手プレーヤのゲーム装置に送信される。そしてプレーヤ及び相手プレーヤのキャラクタ選択が完了すると、対戦ゲームの実行に必要な各種データ（キャラクタやゲームステージのデータ）をロードする処理のゲームシーケンス区間に移行する。
【０１００】
データのロード処理のゲームシーケンス区間では、図４（Ｃ）に示すような画面が表示され、記憶部１７０や情報記憶媒体１８０等からゲームデータをロードする処理が実行される。そしてゲームデータのロード処理が完了すると、キャラクタの対戦処理のゲームシーケンス区間に移行する。
【０１０１】
キャラクタの対戦処理のゲームシーケンス区間では、図５（Ａ）に示すようなキャラクタ対戦のゲーム画面が表示される。このゲーム画面では、プレーヤが操作するキャラクタと相手プレーヤが操作する相手キャラクタが表示され、これらのキャラクタ、相手キャラクタがプレーヤ、相手プレーヤの操作データに基づいて動作する制御が行われる。この場合に、相手キャラクタを動作させるために相手プレーヤが操作部により入力した操作データ（キーデータ）のパケットが、相手プレーヤのゲーム装置からプレーヤのゲーム装置に送信される。同様にキャラクタを動作させるためにプレーヤが入力した操作データのパケットが、プレーヤのゲーム装置から相手プレーヤのゲーム装置に送信される。
【０１０２】
なお格闘ゲームのように、キャラクタ選択画面で選択されたキャラクタと相手キャラクタの間で複数ラウンドの対戦（複数の試合）が行われる場合には、各ラウンド毎にゲームシーケンス区間を設定することができる。そして、１又は複数のラウンドが終わって、キャラクタ間の対戦が終了すると、ゲームの結果表示処理のゲームシーケンス区間に移行する。
【０１０３】
ゲームの結果表示処理のゲームシーケンス区間では、図５（Ｂ）に示すようなゲームの結果表示画面が表示される。具体的には、ゲーム成績の表示や、対戦終了の演出画像の表示等が行われる。そしてプレーヤがキャラクタの再選択による再対戦を選択すると、図４（Ｂ）のキャラクタ選択処理のゲームシーケンス区間に移行する。また通信対戦する相手プレーヤの再選択を行う場合には、図４（Ａ）のロビー処理のゲームシーケンス区間に移行する。
【０１０４】
図６に、キャラクタ選択、データロード、対戦、或いはゲーム結果表示等の各ゲームシーケンス処理のゲームシーケンス区間において、ゲーム装置ＧＭ１、ＧＭ２間で転送されるパケットの様子を模式的に示す。
【０１０５】
図６に示すように、各ゲームシーケンス区間では、そのゲームシーケンス処理に必要なデータがデータフィールドに設定されたパケットが、ゲーム装置ＧＭ１、ＧＭ２間で送受信される。そしてゲーム装置ＧＭ１、ＧＭ２においてゲームシーケンス区間が完了すると、次のゲームシーケンス区間に移行し、そのゲームシーケンス区間で必要なデータのパケットの送受信が行われる。
【０１０６】
３．２  パケットバッファ
ネットワークを介したデータ転送の通信プロトコルとして、ＴＣＰ（Transmission Control Protocol）、ＵＤＰ（User Datagram Protocol）等が知られている。これらのＴＣＰ、ＵＤＰは、ＩＰ層等のネットワーク層の上層のトランスポート層のプロトコルである。ＴＣＰは、データを正しく全部届けたい場合に有効であるのに対して、ＵＤＰは、途中でデータが無くなっても早く届けたい場合に有効である。
【０１０７】
具体的には、ＴＣＰは、実際の通信前にコネクションを確立するコネクション型のプロトコルであり、図７（Ａ）に示すように、転送されるパケット（データ）についての到着と到着順序が保証されている。即ち、送ったパケットは必ず相手に届き、且つ、順番通りに届くことが保証される。
【０１０８】
一方、ＵＤＰはコネクションレス型のプロトコルであり、図７（Ｂ）に示すように、転送されるパケットについての到着と到着順序が保証されていない。即ち、ＵＤＰ層においては再送は行われず、送ったパケットが相手に届くことは保証されず、且つ、送られた順序通りに届くことも保証されない。
【０１０９】
そしてＴＣＰでは、再送処理や転送量の調整処理のために、パケット転送に時間がかかってしまうという欠点がある。一方、ＵＤＰでは、パケットをひたすら転送するだけであるため、ＴＣＰに比べて即時性があり、データを高速に転送したい場合に向いている。
【０１１０】
このため、通信ゲームをスムーズに進行させるために即時性が要求されるデータ（例えば操作データ）のパケットについては、ＵＤＰ或いはＵＤＰ準拠のプロトコル（以下、単にＵＤＰと呼ぶ）で転送することが望ましい。例えばＴＣＰにより操作データの送受信を行うと、転送に時間がかかってしまい、キャラクタや画面の動きにタイムラグが生じ、スムーズはゲームシーケンス処理を実現できなくなるおそれがある。
【０１１１】
一方、ＵＤＰでは、図７（Ｂ）のようにパケットの到着や到着順序が保証されないため、ゲームプログラムの処理が煩雑になったり、バッファの使用記憶容量が無駄に消費されてしまうなどの問題が生じる。
【０１１２】
例えばＴＣＰではパケットの到着順序が保証されているため、図８（Ａ）に示すようにゲーム演算部１０４は、通信部１９６が受信したパケットを、ＰＫ１、ＰＫ２、ＰＫ３というように、パケットが生成された順序でパケットを処理できる。
【０１１３】
しかしながらＵＤＰではパケットの到着順序が保証されないため、図８（Ｂ）に示すようにゲーム演算部１０４は、例えばＰＫ２、ＰＫ４、ＰＫ１というように、パケットの生成順序とは異なる順序でパケットを処理しなければならなくなる。このため、ゲーム演算処理が繁雑化したり非効率になってしまう。
【０１１４】
そこで本実施形態では、通信部１９６が受信したパケットを、ゲーム演算部１０４でのゲーム演算処理のために一時的に保存するパケットバッファ１７１を設けると共に、パケットの生成順序情報が設定されるフィールドをパケットに設け、この生成順序情報に基づいてパケットの書き込み処理等のパケット処理を行う手法を採用している。
【０１１５】
例えば図９に、ゲーム装置間で転送されるパケットのフォーマット例を示す。なお本実施形態のパケットのフォーマットは図９に限定されず、例えばパケットのフィールド設定やパケットに設定される情報については種々の変形実施が可能である。
【０１１６】
図９では、パケットには、パケットＩＤ、区間ＩＤ（狭義には区間番号）、生成順序情報、データサイズ、データが設定されている。なおこれらの一部を省略するフォーマットとしてもよい。
【０１１７】
パケットＩＤは、パケットにより転送されるデータの種別を特定するための識別情報（パケット種別を特定するための識別情報）である。例えばパケットにより転送されるデータとしては、操作データ（キー入力データ）、キャラクタデータ、ボイスチャットデータ、通信のメンバー情報、ゲームのルール情報、存在確認情報、同期要求又は同期応答の情報、或いはキャラクタの位置情報などの種々の情報を想定できる。パケットＩＤは、当該パケットにより転送されるデータが、これらのいずれの種別の情報であるかを識別する。
【０１１８】
区間ＩＤは、パケットにより転送されるデータが使用されるゲームシーケンス区間を特定するための識別情報（ゲームシーケンス区間を識別するための識別情報）である。例えば図６のようにゲームシーケンス区間が順次移行する場合に、区間ＩＤは、当該パケットがどのゲームシーケンス区間に属するパケットなのかを識別する。
【０１１９】
生成順序情報（送信順序情報）は、他のゲーム装置でのパケットの生成順序（送信順序）を特定するための情報である。即ちＵＤＰでは図７（Ｂ）に示すようにパケットの到着順序は保証されないが、この生成順序情報をパケットに含ませることで、送信側の生成順序でパケットを並び替えることが可能になり、ＵＤＰの不利点を補うことが可能になる。
【０１２０】
データサイズは、パケットにより転送されるデータのサイズを表す情報である。なお、パケットが可変長ではない場合等にはデータサイズは不要になる。
【０１２１】
次に図１０を用いて本実施形態の手法について詳細に説明する。本実施形態では図１０に示すように、通信部１９６が受信したパケットは、直接にはゲーム演算部１０４に転送されず、パケットバッファ１７１に書き込まれて一時保存される。
【０１２２】
そして図１０では、パケットバッファ１７１には、図９のパケットフォーマットの生成順序情報で特定される生成順序が１番目（広義にはＩ番目）であるパケットＰＫ１（広義には第Ｉのパケット）と、パケットＰＫ１とパケットＩＤが同一であり生成順序が４番目（広義にはＫ番目）であるパケットＰＫ４（広義には第Ｋのパケット）が存在している。これらのパケットＰＫ１、ＰＫ４は、パケットＩＤが示すデータ種別が操作データである操作データ用パケットである。即ちこれらのパケットＰＫ１、ＰＫ４により他のゲーム装置からの操作データが転送される。また図１０ではパケットバッファ１７１には、パケットフォーマットの生成順序情報で特定される生成順序が２番目であり、パケットＩＤが示すデータ種別がキャラクタデータであるパケットＰＫ２も存在する。
【０１２３】
そして図１０では、パケットバッファ１７１には、生成順序が４番目（広義にはＪ番目。Ｉ＜Ｊ＜Ｋ）であるパケットＰＫ３（広義には第Ｊのパケット）は存在しない。この場合に、パケット処理部１０２は、パケットＰＫ４（第Ｋのパケット）についてはゲーム演算部１０４への転送を許可せず、パケットＰＫ１（第Ｉのパケット）についてゲーム演算部１０４への転送を許可する。
【０１２４】
即ち、図１０では生成順序が３番目のパケットＰＫ３が存在しない。従って、パケットＰＫ１のみならずパケットＰＫ４についてもゲーム演算部１０４に転送してしまうと、仮に、その後に受信したパケットＰＫ３が操作データ用パケットであった場合には、ＰＫ１、ＰＫ４、ＰＫ３の順序でゲーム演算部１０４にパケットが転送されてしまう。このため、パケットの生成順序にしたがった適正な順序でゲーム演算部１０４にパケットを転送することができなくなる。
【０１２５】
この点、本実施形態では、図１０の状態ではパケットＰＫ１だけがゲーム演算部１０４に転送され、パケットＰＫ４についてはゲーム演算部１０４には転送されない。そして、例えば相手のゲーム装置に対してパケットＰＫ３の再送要求を行って、例えばパケットＰＫ３が操作データ用パケットではなかった場合には、パケットＰＫ４をゲーム演算部１０４に転送する。或いは、パケットＰＫ３が操作データ用パケットであった場合には、ＰＫ３、ＰＫ４の順序でパケットをゲーム演算部１０４に転送する。このようにすることで、例えばＵＤＰのように到着順序等が保証されていない通信プロトコルを採用した場合にも、生成順序にしたがった適正な順序でゲーム演算部１０４にパケットを渡すことが可能になる。
【０１２６】
次に図１１（Ａ）、図１１（Ｂ）を用いて本実施形態の更に詳細な処理例について説明する。
【０１２７】
図１１（Ａ）に示すようにパケット処理部１０２は、他のゲーム装置から通信部１９６を介して受信したパケットの生成順序情報にしたがったパケットの並び替え処理を行う。そして並び替え処理後のパケットをパケットバッファ１７１に書き込む。例えば受信したパケットがＰＫ２、ＰＫ４、ＰＫ１の順序であった場合に、これらのパケットの並び替え処理を行って、ＰＫ１、ＰＫ２、ＰＫ４の順序でパケットバッファ１７１にパケットを書き込む。具体的には、受信したパケットの生成順序情報を参照して、その生成順序情報に対応するパケットの格納場所を決定し、決定された格納場所に、受信したパケットを書き込む。なお決定された格納場所に既にパケットが書き込まれていた場合には、受信したパケットをパケットバッファ１７１に書き込まずに破棄する。
【０１２８】
ゲーム演算部１０４は、パケットバッファ１７１からパケットを読み出す場合には、パケットＩＤを指定したパケットの転送要求（読み出し要求）を行う。するとパケット処理部１０２は、要求されたパケットＩＤのパケットをパケットバッファ１７１から読み出してゲーム演算部１０４に転送する。
【０１２９】
例えば図１１（Ｂ）のようにゲーム演算部１０４が、データ種別が操作データであるパケットＩＤを指定して転送要求を行うと、操作データ用のパケットＰＫ１（第Ｉのパケット）がパケットバッファ１７１から読み出されてゲーム演算部１０４に転送される。同様にデータ種別がキャラクタデータとなるパケットＩＤを指定して転送要求を行うと、キャラクタデータ用パケットＰＫ２がパケットバッファ１７１から読み出されてゲーム演算部１０４に転送される。
【０１３０】
この場合に図１０で説明したように、ゲーム演算部１０４が、データ種別が操作データであるパケットＩＤを指定して転送要求を行ったとしても、パケットＰＫ４（第Ｋのパケット）についてはゲーム演算部１０４には転送されない。即ち、パケットＰＫ３については未だパケットバッファ１７１に書き込まれておらず、パケットＰＫ３が操作データ用のパケットである可能性があるからである。
【０１３１】
そしてこの場合には図１１（Ｃ）に示すように、パケット処理部１０２は、パケットＰＫ３（第Ｊのパケット）についての再送要求を通信部１９６を介して他のゲーム装置に対して行う。そして、この再送要求により他のゲーム装置がパケットＰＫ３を送信し、このパケットＰＫ３がパケットバッファ１７１に書き込まれると、ゲーム演算部１０４へのパケットＰＫ４の転送が許可される。
【０１３２】
以上のように本実施形態では、ゲーム演算部１０４へのパケット転送のために、受信したパケットを一時的に保存するパケットバッファ１７１を設けている。これによりゲーム演算部１０４は、自身に都合の良いタイミングで、自身が所望するパケットＩＤを指定して、パケットバッファ１７１からパケットを読み出してゲーム演算処理を実行できる。
【０１３３】
即ち、パケットバッファ１７１を設けないと、図８（Ａ）、図８（Ｂ）に示すように、ゲーム演算部１０４は、通信部１９６が受信したパケットを即時に処理しなければならなくなる。従って、例えば他の処理の実行中にパケットを受信すると、実行中の処理を中断して、受信したパケットについての処理を実行しなければならなくなり、ゲーム演算処理の繁雑化や処理の非効率化を招く。
【０１３４】
この点、本実施形態では、通信部１９６とゲーム演算部１０４の間にパケットバッファ１７１を設けているため、ゲーム演算部１０４は、自身の都合の良いタイミングで、自身が所望するパケットＩＤを指定して、パケットバッファ１７１からパケットを読み出すことが可能になる。従って、上述のような問題を解消でき、ゲーム演算処理の簡素化や効率化を実現できる。
【０１３５】
また、パケットバッファ１７１を設ければ、図１１（Ａ）に示すように、パケットの生成順序情報にしたがったパケットの並び替え処理が可能になる。従って、パケットの通信プロトコルが図７（Ｂ）に示すような到着保証がないＵＤＰである場合にも、ＴＣＰと同様の扱いで処理できるようになる。
【０１３６】
即ち、このようなパケットバッファ１７１を設けないと、パケットの並び替え処理ができないため、ＴＣＰの場合には図８（Ａ）のように生成順序にしたがった適正な順序でゲーム演算部１０４にパケットが転送されるのに対して、ＵＤＰの場合には、生成順序にしたがった適正な順序でゲーム演算部１０４にパケットが転送されなくなってしまう。従って、ゲーム演算部１０４は、パケットの通信プロトコルがＴＣＰである場合とＵＤＰである場合とで、処理内容を変更しなければならなくなる。
【０１３７】
これに対して本実施形態ではパケットバッファ１７１を設けることでパケットの並び替え処理が可能になるため、パケットの通信プロトコルがＴＣＰである場合のみならず、ＵＤＰである場合にも、ゲーム演算部１０４には生成順序にしたがった適正な順序でパケットが転送されるようになる。従って、ゲーム演算部１０４の処理に通信プロトコルの依存性がなくなり、通信プロトコルがＴＣＰであるかＵＤＰであるかを意識しなくても済むようになるため、ゲーム演算処理の簡素化や効率化を実現できる。これにより、パケットの通信プロトコルが異なる様々なプラットフォームのゲーム装置に対するプログラムの実装を容易化できる。
【０１３８】
例えば低速なＴＣＰにより、操作データ用のパケットを転送すると、転送に時間がかかってしまい、キャラクタ等の動きが揃わなくなり、不自然な画像が生成されるおそれがある。一方、高速なＵＤＰでは、到着や到着順序が保証されないという不利点がある。
【０１３９】
この点、本実施形態では、高速なＵＤＰを採用した場合にも、生成順序情報を用いたパケットの並び替え処理を行うことで、ゲーム演算部１０４は、あたかもＴＣＰを採用した場合と同様の処理でゲーム演算処理を実行できるようになる。従って、高速なＵＤＰを採用しながらも、その不利点を補うことが可能になる。
【０１４０】
そして、このような高速なＵＤＰを採用し、生成順序情報に基づいてパケットの並び替え処理を行った場合に、ＵＤＰにはパケットの到着保証がないため、例えば図１１（Ａ）に示すように、パケットバッファ１７１上にパケットの非存在領域が飛び飛びに生じてしまう。そして図１１（Ａ）のようにパケットＰＫ３がパケットバッファ１７１に未だ書き込まれておらず存在しないのに、パケットＰＫ３よりも生成順序が新しいパケットＰＫ４をゲーム演算部１０４に転送してしまうと、せっかく並び替えたはずのパケットの順序が崩れてしまう。
【０１４１】
この点、本実施形態では、図１１（Ｂ）に示すようにパケットＰＫ３がパケットバッファ１７１に存在しない場合には、ゲーム演算部１０４から転送要求があっても、パケットＰＫ４についてはゲーム演算部１０４に転送されない。従って、並び替えたはずのパケットの順序が崩れてしまうという上述の問題を解決できる。また、パケットバッファ１７１に非存在のパケットＰＫ３については、図１１（Ｃ）に示すように再送要求が行われ、この再送要求によりパケットＰＫ３がパケットバッファ１７１に書き込まれると、ゲーム演算部１０４へのパケットＰＫ４の転送が許可される。従って、処理を滞りなく進めることができ、処理の効率化を図れる。
【０１４２】
３．３  複数フレーム分の操作データの転送
図２（Ａ）の方向キー１２、アナログスティック１４、ボタン１６〜２３を操作することで得られる操作データは、自身のゲーム装置や他のゲーム装置において各フレーム毎に取得される。従って、各フレームで取得された操作データを、自身のゲーム装置と他のゲーム装置の間で各フレームにおいて送受信する必要がある。
【０１４３】
しかしながら、ゲーム装置間で送受信されるパケットの転送数が増えると、その分だけパケットの処理負荷が重くなり、ゲーム演算処理などの他の処理に悪影響を及ぼす。
【０１４４】
そこで本実施形態では、複数フレーム分の操作データが設定された操作データ用パケットを、各フレームにおいて送受信する手法を採用している。具体的には離散したフレーム毎に、複数フレーム分の操作データが設定された操作データ用パケットを送受信する。
【０１４５】
例えば図１２（Ａ）において、フレームＦ１では、図１２（Ｂ）に示すように複数フレーム分の操作データＤＦ１、ＤＦ２、ＤＦ３、ＤＦ４が設定された操作データ用パケットを他のゲーム装置が送信し、プレーヤ側のゲーム装置が受信する。同様にプレーヤ側のゲーム装置は複数フレーム分の操作データが設定された操作データ用パケットを送信し、他のゲーム装置が受信する。
【０１４６】
ここで複数フレーム分の操作データは、例えばその時点で送信可能なフレームの操作データの全てであり、例えば再送要求があったフレームの操作データなども含む。例えば図１２（Ａ）において、他のゲーム装置は、フレームＦ１及びその前のフレームにおいて操作入力により取得された操作データが設定された操作データ用パケットを送信する。
【０１４７】
そしてフレームＦ２では、他のゲーム装置は、操作データ用パケットを送信せずに、次のフレームＦ３において、複数フレーム分の操作データが設定された操作データ用パケットを送信する。同様にフレームＦ３では、操作データ用パケットを送信せずに、次のフレームＦ４において、複数フレーム分の操作データが設定された操作データ用パケットを送信する。
【０１４８】
このように図１２（Ａ）では、離散したフレームＦ１、Ｆ３において操作データ用パケットが送受信される。この場合に図１２（Ａ）では、２フレームおきに４フレーム分の操作データを送受信しており、重複して余分に操作データが送受信される。即ち、図７（Ｂ）で説明したようにＵＤＰでは、パケットの到着が保証されず、パケットが到着しなかった場合には、パケット処理部１０２はパケットの再送要求を行う。従って、このように重複して余分に操作データを送受信すれば、このような再送分のパケットについても適切に送受信することが可能になる。また、このように重複して余分にパケットを送受信したとしても、後述するように区間ＩＤを用いてパケットバッファ１７１に書き込まれるパケットを管理すれば、パケットバッファ１７１には余分なパケットが残存しないようになるため、大きな問題は生じない。
【０１４９】
なお図１２（Ａ）、図１２（Ｂ）では、２フレームおきに４フレーム分の操作データ用パケットを送受信しているが、本実施形態はこれに限定されない。例えば３フレームおきや４フレームおきに操作データ用パケットを送受信してもよい。また各操作データ用パケットに設定される操作データは、４フレーム分には限定されず、２フレーム分、３フレーム分、５フレーム分等であってもよい。
【０１５０】
３．４  パケットのロード処理
本実施形態では、通信経路とは別の経路で、パケット（バイナリーデータ）をパケットバッファ１７１にロードする手法を採用している。
【０１５１】
例えば通常の通信ゲームにおいては、図１３（Ａ）に示すように他のゲーム装置から受信したパケットは、通信部１９６を介した通信経路でパケットバッファ１７１に書き込まれる。そしてゲーム演算部１０４は、パケットバッファ１７１に書き込まれたパケットのデータ（操作データ等）に基づいて、キャラクタ制御処理等のゲーム演算処理を実行する。
【０１５２】
一方、図１３（Ｂ）では、図１３（Ａ）に示すような通信経路とは別の経路で、ロード処理部１０８がパケットバッファ１７１に対してパケットをロードして書き込む。具体的には、例えば記憶部１７０や情報記憶媒体１８０や補助記憶装置１９４からパケットを読み出してパケットバッファ１７１に書き込む。そしてゲーム演算部１０４は、ロード処理部１０８によりパケットバッファ１７１に書き込まれたパケットのデータ（操作データ等）に基づいて、キャラクタ制御処理等のゲーム演算処理を実行する。
【０１５３】
このようにすれば、ロード処理部１０８によりロードされたパケットのデータ（操作データ又は位置データ等）に基づいてキャラクタを動作させることが可能になり、キャラクタのゴーストリプレイ（広義にはキャラクタの動作再現処理）などを実現できる。
【０１５４】
例えば製品として販売される情報記憶媒体１８０に、ゴーストリプレイ用のパケット（バイナリーデータ）を格納しておく。そして、ゴーストリプレイ時には、この情報記憶媒体１８０から読み出されたパケットをパケットバッファ１７１にロードして書き込み、書き込まれたパケットの操作データ等に基づいて、ゴーストリプレイの対象となるキャラクタを動作させる。
【０１５５】
このようにすれば図１３（Ａ）のように他のゲーム装置から受信したパケットの操作データに基づきキャラクタの動作を制御する機構を有効活用して、ロード処理部１０８によりロードされた操作データに基づくキャラクタのゴーストリプレイを実現できる。即ち、ゲーム演算部１０４は、あたかも他のゲーム装置から受信した操作データに基づきキャラクタを制御しているかのように、ゴーストリプレイの対象となるキャラクタを制御できる。従って、ゴーストリプレイの処理を簡素化や効率化を図れる。
【０１５６】
なお、ゴーストリプレイ用パケットは、メモリーカード等の補助記憶装置１９４から読み出してパケットバッファ１７１にロードするようにしてもよい。このようにすれば、例えば友人がプレイしたキャラクタのゴーストリプレイ用パケットを、その友人が補助記憶装置１９４に保存し、保存されたゴーストリプレイ用パケットを補助記憶装置１９４から読み出してパケットバッファ１７１にロードすることが可能になる。これにより、友人のゲームプレイを反映させたゴーストリプレイのキャラクタをゲームに登場させることが可能になる。
【０１５７】
或いは、所定のアルゴリズムにしたがってリアルタイムに生成したゴーストリプレイ用パケットや、プレーヤの過去のプレイを記録することで得られるゴーストリプレイ用パケットを、記憶部１７０に記憶しておき、記憶されたゴーストリプレイ用パケットを記憶部１７０から読み出してパケットバッファ１７１にロードするようにしてもよい。このようにすれば、様々なアルゴリズムにしたがって動作を行うゴーストリプレイのキャラクタや、プレーヤの過去のプレイを反映した動作を行うゴーストリプレイのキャラクタを、ゲームに登場させることが可能になる。
【０１５８】
なお、パケットバッファ１７１にロードされるゴーストリプレイ用パケットは、キャラクタの操作データ（キーデータ）が設定された操作データ用パケットであってもよいし、キャラクタの位置データ（位置及び方向データ）が設定された位置データ用パケットであってもよい。この場合にはゲーム演算部１０４は、操作データ用パケットに設定された操作データに基づいてキャラクタの制御処理を行ったり、位置データ用パケットに設定された位置データに基づいてキャラクタの制御処理を行う。なお、操作データ用パケットの操作データ等に基づいて、キャラクタの動作の一部（一部のモーション）についてだけゴーストリプレイを行うようにしてもよい。
【０１５９】
また、例えば通信対戦中にネットワークの切断等があった場合に、ロード処理部１０８によりロードされたパケットのデータに基づいて、通信対戦の相手キャラクタを暫定的に制御するようにしてもよい。
【０１６０】
例えば図１４（Ａ）では、他のゲーム装置との間のネットワークの切断がネットワーク管理部１１０により検出されている。例えば後述するように、他のゲーム装置から所定期間内に同期パケットを受信しなかった場合に、ネットワークが切断されたと判断できる。或いは、相手の存在確認を行うための存在確認パケット（キープアライブパケット）を定期的にゲーム装置間で送受信し、この存在確認パケットが途絶えた場合にネットワークが切断されたと判断してもよい。
【０１６１】
そして、図１４（Ａ）のようにネットワークの切断が検出された場合に、図１４（Ｂ）に示すように、ロード処理部１０８は、キャラクタ制御用のパケットをパケットバッファ１７１にロードして書き込む。そしてゲーム演算部１０４は、パケットバッファ１７１に書き込まれたパケットのデータ（操作データ等）に基づいて、キャラクタの制御処理を行う。例えば他のゲーム装置のプレーヤが操作していたキャラクタに対応するキャラクタの制御処理を行う。
【０１６２】
例えば図１５では、フレームＦ１〜Ｆ４では、図１３（Ａ）のように他のゲーム装置から受信したパケットのデータに基づいてキャラクタの制御処理が行われている。そしてネットワークの切断が検出されて、他のゲーム装置との通信が途絶えると、フレームＦ５〜Ｆ９９では、図１４（Ｂ）に示すようにロード処理によりロードされたパケットのデータに基づいてキャラクタの制御処理が行われる。そして例えば他のゲーム装置との間のネットワークの接続が再開すると、フレームＦ１００以降では、他のゲーム装置から受信したパケットのデータに基づいてキャラクタの制御が行われる。
【０１６３】
例えばフレームＦ１〜Ｆ４において、プレーヤが操作するキャラクタＸと、相手プレーヤが操作する相手キャラクタＹが、通信対戦していたとする。この場合には、相手キャラクタＹは、通信部１９６を介して受信したパケットのデータ（操作データ）に基づいて制御される。この状態でネットワークが切断されて他のゲーム装置との通信が途絶えると、相手キャラクタＹは、ロード処理によりパケットバッファ１７１にロードされたパケットのデータ（操作データ）に基づいて制御されるようになる。そして，その後にネットワークの接続が再開すると、相手キャラクタＹは、通信部１９６を介して受信したパケットのデータに基づいて制御されるようになる。
【０１６４】
このようにすれば、ネットワークの切断により、他のゲーム装置のプレーヤの操作データを受信できなくなった場合にも、パケットバッファ１７１にロードされたパケットのデータに基づいて、相手キャラクタを臨時的に制御して動作させることが可能になる。従って、例えば短い期間のネットワーク切断が生じた場合にも、プレーヤのキャラクタと相手キャラクタの対戦を中止することなく、ロードされたパケットのデータに基づいて暫定的に相手キャラクタを動作させて、キャラクタ間の対戦を続行することが可能になる。
【０１６５】
３．５  分割パケット
格闘ゲームなどでは、キャラクタが装備する武器や防具等を、プレーヤが自由にカスタマイズできるものがある。そして、このようなカスタマイズが行われると、そのカスタマイズの内容を通信対戦の相手のゲーム装置に知らせる必要があり、カスタマイズ情報を含むキャラクタデータがネットワークを介して送受信される。
【０１６６】
ところが、このようなカスタマイズ情報等を含むキャラクタデータは、そのデータ量が多いため、１つのパケットのペイロードでは転送できない場合がある。
【０１６７】
そこで本実施形態では、図１６に示すようなフォーマットの分割パケットを用意している。この分割パケットは、複数の分割パケットにより1単位のデータを転送するパケットである。そして、パケットＩＤのフィールドには、当該パケットが分割パケットであることを示すＩＤに設定される。そしてデータフィールドに対して、例えば分割番号ＤＭや、分割数ＤＮや、キャラクタデータ用パケットであることを示すＩＤや、キャラクタデータなどが設定される。即ち、パケットが入れ子構造になっており、分割パケットの処理のために必要な情報（ＤＭ、ＤＮ等）が、キャラクタデータと共にデータフィールドに設定される。
【０１６８】
そしてパケット処理部１０２は、図１７に示すように、受信したパケットのパケットＩＤが、分割パケットのパケットＩＤである場合には、複数の分割パケットのキャラクタデータ（広義にはデータ）から1単位のキャラクタデータを再構成する。
【０１６９】
例えば図１７では、４つの分割パケットＰＫＤ１、ＰＫＤ２、ＰＫＤ３、ＰＫＤ４を用いて１単位のキャラクタデータが転送される。そして分割パケットＰＫＤ１、ＰＫＤ２、ＰＫＤ３、ＰＫＤ４の分割番号ＤＭは、各々、１、２、３、４に設定されており、分割数ＤＮは４に設定されている。そしてパケット処理部１０２は、分割パケットＰＫＤ１のキャラクタデータ（１／４）、ＰＫＤ２のキャラクタデータ（２／４）、ＰＫＤ３のキャラクタデータ（３／４）、ＰＫＤ４のキャラクタデータ（４／４）を結合して、１単位のキャラクタデータ（送信対象となるキャラクタデータ）を再構成する。そして再構成された1単位のキャラクタデータをゲーム演算部１０４に転送する。具体的には、ゲーム演算部１０４からキャラクタデータ用パケットのパケットＩＤを指定した読み出し要求が来た場合に、複数の分割パケットのキャラクタデータにより再構成された１単位のキャラクタデータを、ゲーム演算部１０４に転送する。
【０１７０】
このようにすれば、キャラクタデータがカスタマイズ情報等を含み、そのデータ量が大きい場合にも、１単位のキャラクタデータを複数の分割パケットに分けて転送することが可能になる。
【０１７１】
なお、複数の分割パケットにより転送されるデータはキャラクタデータには限定されず、データ量が大きな様々な種別のデータに対して適用できる。
【０１７２】
３．６  区間ＩＤを用いたパケット処理
以上のように本実施形態では、他のゲーム装置から受信したパケットを、パケットバッファ１７１に書き込む。この場合に、ＵＤＰでは到着保証がないため、例えば送信側がパケットを送信し、受信側が、そのパケットを無事に受信したことを知らせるアクノリッジ（応答）を送信側に返信したが、そのアクノリッジが送信側に届かない場合がある。そして、この場合には、送信側は再度パケットを送信することになり、受信側のパケットバッファ１７１には、本来必要ではない無駄なパケットが蓄積されてしまう。
【０１７３】
また、前述の図６のように各ゲームシーケンス区間で送受信されたパケットは、当該ゲームシーケンス区間ではゲーム演算処理のために必要であるが、次のゲームシーケンス区間では不要になる。従って、ゲームシーケンス区間が次のゲームシーケンス区間に移行したのに、前のゲームシーケンス区間で必要なパケットがパケットバッファ１７１に残存してしまうと、パケットバッファ１７１の使用記憶容量の無駄な消費になる。また、例えば図６のＡ１に示すように前回のキャラクタ選択の時に転送されたパケットが、Ａ２に示すように次のキャラクタ選択の時にパケットバッファ１７１に残存していると、キャラクタ選択画面上でのカーソルが、本来とは異なる動きをするなどの不自然な画面が表示されてしまうおそれもある。
【０１７４】
そこで本実施形態では、ゲーム装置間で転送されるパケットに、図９のパケットフォーマット例に示すように、ゲームシーケンス区間の区間ＩＤを含ませる。そして、この区間ＩＤを用いてパケット処理を行う。
【０１７５】
次に、区間ＩＤを用いたパケット処理の詳細について図１８を用いて説明する。図１８では、キャラクタ選択、データロード、対戦、ゲーム結果表示等の各ゲームシーケンス区間に対して、区間ＩＤが対応づけられる。この区間ＩＤの対応づけは、例えば後述するように区間同期処理により実現できる。
【０１７６】
そして図１８に示すように区間ＩＤ（区間番号）は、ゲームシーケンス区間が移行する毎にインクリメントされる。なお、ゲームシーケンス区間が移行する毎に区間ＩＤをデクリメントするようにしてもよい。またインクリメント値やデクリメント値は「１」には限定されず、「１」より大きくてもよい。また区間ＩＤは、少なくとも当該ゲームシーケンス区間と他のゲームシーケンス区間とを区別できる値であればよく、図１８のように単調増加又は単調減少する値には限定されない。
【０１７７】
そして本実施形態では図１９（Ａ）に示すように、受信したパケットＰＫＩに設定された区間ＩＤと、ゲーム装置において現在実行されているゲームシーケンス処理のゲームシーケンス区間の区間ＩＤとの照合処理（一致・不一致判定処理）を行う。図１９（Ａ）では、パケットＰＫＩの区間ＩＤ＝３であり、現在のゲームシーケンス区間の区間ＩＤ＝３であるため、両者の区間ＩＤは一致している。従って、この場合には、当該パケットＰＫＩはパケットバッファ１７１に書き込まれる。
【０１７８】
一方、図１９（Ｂ）では、パケットＰＫＪの区間ＩＤ＝１であり、現在のゲームシーケンス区間の区間ＩＤ＝３であるため、両者の区間ＩＤは一致していない。従って、この場合には当該パケットＰＫＪはパケットバッファ１７１に書き込まれず、破棄される（非使用になる）。
【０１７９】
このように区間ＩＤの照合処理を行いながらパケットをパケットバッファ１７１に書き込めば、各ゲームシーケンス区間においては当該ゲームシーケンス区間の区間ＩＤに対応するパケットだけがパケットバッファ１７１に存在するようになる。
【０１８０】
例えば図２０（Ａ）では、現在のゲームシーケンス区間の区間ＩＤ＝３であるため、パケットバッファ１７１には区間ＩＤ＝３であるパケットだけが存在するようになる。即ち区間ＩＤ＝３ではないパケットを通信部１９６が受信しても、このパケットはパケットバッファ１７１に書き込まれないようになる。従って、ゲーム演算部１０４は、区間ＩＤ＝３であるゲームシーケンス処理（例えば図１８のキャラクタの対戦処理）を、区間ＩＤ＝３であるパケットのデータを使用して実行できるようになる。
【０１８１】
同様に図２０（Ｂ）では、現在のゲームシーケンス区間の区間ＩＤ＝４であるため、パケットバッファ１７１には区間ＩＤ＝４であるパケットだけが存在する。従って、ゲーム演算部１０４は、区間ＩＤ＝４であるゲームシーケンス処理（例えば図１８のゲーム結果表示処理）を、区間ＩＤ＝４であるパケットのデータを使用して実行できるようになる。これにより、ゲーム演算部１０４の処理を簡素化・効率化できる。
【０１８２】
なお図２０（Ａ）から図２０（Ｂ）のように、区間ＩＤ＝３のゲームシーケンス区間から区間ＩＤ＝４のゲームシーケンス区間に移行する際には、パケットバッファ１７１のクリア処理を行い、使用されていない区間ＩＤ＝３のパケットをクリア（消去）することが望ましい。
【０１８３】
以上のように本実施形態では、パケットに区間ＩＤのフィールドを設け、この区間ＩＤを用いてゲームシーケンス区間の照合処理を行う手法を採用している。従って、新しいゲームシーケンス区間に移行したことで不要になったパケットがパケットバッファ１７１に残存してしまい、使用記憶容量が無駄に消費されてしまう事態を防止できる。
【０１８４】
また本実施形態によれば、前回のゲームシーケンス区間のパケットがパケットバッファ１７１に残存し、その残存したパケットが当該ゲームシーケンス区間のパケットであると誤認識され、誤ったゲーム演算処理が行われてしまう事態も防止できる。
【０１８５】
また本実施形態によれば、図２０（Ａ）、図２０（Ｂ）に示すように、現在のゲームシーケンス区間の区間ＩＤのパケットだけがパケットバッファ１７１に存在するようなパケット管理が可能になる。従って、パケット管理やゲーム演算部１０４のゲーム演算処理を簡素化・効率化でき、処理のオーバーヘッドを軽減できる。
【０１８６】
３．７  区間同期処理
本実施形態ではゲーム装置間でゲームシーケンス区間を同期させる区間同期処理を行っている。
【０１８７】
例えば図２１では、キャラクタ選択のゲームシーケンス区間の完了後に、ゲーム装置ＧＭ１とＧＭ２の間でゲームシーケンス区間を同期させる区間同期処理が行われる。即ち両者のゲーム装置ＧＭ１、ＧＭ２において同じ区間ＩＤのゲームシーケンス区間を実行させるための区間同期処理が行われる。
【０１８８】
そして図２１に示すように、キャラクタ選択のゲームシーケンス区間の後の区間同期処理が完了すると、キャラクタ選択のゲームシーケンス区間（広義には第Ｎ−１のゲームシーケンス区間）からデータロードのゲームシーケンス区間（広義には第Ｎのゲームシーケンス区間）に移行する。
【０１８９】
同様に、データロードのゲームシーケンス区間が完了すると、ゲームシーケンス区間の区間同期処理が行われる。そして区間同期処理が完了すると、データロードのゲームシーケンス区間（第Ｎのゲームシーケンス区間）からキャラクタ対戦のゲームシーケンス区間（第Ｎ＋１のゲームシーケンス区間）に移行する。
【０１９０】
そして、区間ＩＤ（区間番号）は、区間同期処理が行われてゲームシーケンス区間が移行する毎に、順次更新される。例えば図２１では、キャラクタ選択のゲームシーケンス区間後に区間同期処理が行われて、データロードのゲームシーケンス区間に移行すると、区間ＩＤが１から２にインクリメントされる。またデータロードのゲームシーケンス区間後に区間同期処理が行われて、キャラクタ対戦のゲームシーケンス区間に移行すると、区間ＩＤが２から３にインクリメントされる。即ち区間同期処理毎に区間ＩＤが１ずつインクリメントされる。なおインクリメント処理の代わりにデクリメント処理を行ってもよい。
【０１９１】
そして各ゲームシーケンス区間では、更新された区間ＩＤを含むパケットが、ゲーム装置ＧＭ１、ＧＭ２の間で送受信される。
【０１９２】
例えば図２１に示すように、キャラクタ選択のゲームシーケンス区間（第Ｎ−１のゲームシーケンス区間）では、キャラクタ選択のゲームシーケンス区間であることを表す区間ＩＤ＝１を含むパケットが生成されて、ゲーム装置ＧＭ１からＧＭ２に送信されたり、ゲーム装置ＧＭ２からＧＭ１に送信される。
【０１９３】
同様にデータロードのゲームシーケンス区間（第Ｎのゲームシーケンス区間）では、データロードのゲームシーケンス区間であることを表す区間ＩＤ＝２を含むパケットが生成されて、ゲーム装置ＧＭ１からＧＭ２に送信されたり、ゲーム装置ＧＭ２からＧＭ１に送信される。
【０１９４】
このようにすることで、ゲーム装置ＧＭ１、ＧＭ２の間で区間ＩＤを同期させて更新させることが可能になる。また各ゲーム装置ＧＭ１、ＧＭ２において、各ゲームシーケンス区間に対して各区間ＩＤを対応づけることが可能になる。即ち図２１に示すように、ゲーム装置ＧＭ１において、キャラクタ選択、データロード、対戦、ゲーム結果表示の各ゲームシーケンス区間に対して、各々、区間ＩＤ＝１、２、３、４を対応づけることが可能になる。同様に、ゲーム装置ＧＭ２においても、キャラクタ選択、データロード、対戦、ゲーム結果表示の各ゲームシーケンス区間に対して、各々、区間ＩＤ＝１、２、３、４を対応づけることが可能になる。これにより、図１９（Ａ）〜図２０（Ｂ）で説明したように、パケットに含まれる区間ＩＤと、現在のゲームシーケンス区間に対応づけられる区間ＩＤを照合してパケットバッファ１７１への書き込みを行うパケット処理の実現が可能になる。
【０１９５】
また本実施形態では、他のゲーム装置との間で同期パケットの転送処理を行うことで、区間同期処理を実現している。即ち、図９に示すパケットＩＤが同期パケットを示すＩＤに設定されたパケットを、ゲーム装置ＧＭ１、ＧＭ２の間で送受信することで、図２１の区間同期処理を実現する。例えばゲーム装置ＧＭ２がゲームシーケンス区間の同期を要求する同期パケットをゲーム装置ＧＭ１に送信し、ゲーム装置ＧＭ１がこの同期要求に応答する同期パケットをゲーム装置ＧＭ２に送信することで、区間同期処理が実現される。
【０１９６】
図２２に同期パケットを用いた区間同期処理の具体例を示す。図２２は、ゲーム装置ＧＭ１がホストであり、ゲーム装置ＧＭ２がクライアントである場合の処理例である。
【０１９７】
クライアントであるゲーム装置ＧＭ２（他のゲーム装置）は、当該ゲーム装置ＧＭ２において第Ｎ−１のゲームシーケンス区間が完了すると、区間同期処理を要求する同期パケット（同期要求パケット）を、ホストであるゲーム装置ＧＭ１に送信する。そして、同期パケットの送信後、ゲーム装置ＧＭ１からの同期パケットの受信待ちに移行する。そして所定時間内に同期パケットを受信しなかった場合には、ゲーム装置ＧＭ１、ＧＭ２間のネットワークが切断（通信接続が切断）されたと判断する。そしてネットワークが切断されたことをプレーヤに知らせる画面をゲーム装置ＧＭ２の表示部に表示する。
【０１９８】
ホストであるゲーム装置ＧＭ１（自身のゲーム装置）は、当該ゲーム装置において第Ｎ−１のゲームシーケンス区間が完了すると、ゲーム装置ＧＭ２からの同期パケットの受信待ちに移行する。そして所定時間内に同期パケットを受信しなかった場合には、ゲーム装置ＧＭ１、ＧＭ２間のネットワークが切断されたと判断する。そしてネットワークが切断されたことをプレーヤに知らせる画面をゲーム装置ＧＭ１の表示部に表示する。
【０１９９】
一方、ゲーム装置ＧＭ１は、ゲーム装置ＧＭ２から同期パケットを受信した場合には、次の第Ｎのゲームシーケンス区間への移行を通知する同期パケット（同期応答パケット）をゲーム装置ＧＭ２に送信して、次の第Ｎのゲームシーケンス区間に移行する。そしてゲーム装置ＧＭ２は、ゲーム装置ＧＭ１から同期パケットを受信すると、次の第Ｎのゲームシーケンス区間に移行する。
【０２００】
この場合にゲーム装置ＧＭ１からＧＭ２に送信される同期パケットには区間ＩＤが設定される。図２１を例にとれば、キャラクタ選択のゲームシーケンス区間であれば、区間ＩＤ＝１が設定された同期パケットが、ゲーム装置ＧＭ２に送信され、データロードのゲームシーケンス区間であれば、区間ＩＤ＝２が設定された同期パケットが、ゲーム装置ＧＭ２に送信される。
【０２０１】
なおゲーム装置ＧＭ２が、第Ｎ−１のゲームシーケンス区間の完了後に、第Ｎのゲームシーケンス区間に対応する同期ＩＤが設定された同期パケットを送信するようにしてもよい。そしてゲーム装置ＧＭ１は、第Ｎ−１のゲームシーケンス区間が完了している場合には、ゲーム装置ＧＭ１から受信した同期パケットを、そのままゲーム装置ＧＭ２に返送する。このようにして区間同期処理を実現することも可能である。
【０２０２】
また、以上では、ネットワークを介して接続される２台のゲーム装置間でパケットを送受信する場合を例にとり説明したが、本実施形態の手法は、図１（Ａ）、図１（Ｂ）、図２（Ｂ）に示すように３台以上のゲーム装置がネットワークを介して接続される場合にも同様に適用できる。
【０２０３】
例えば図２（Ｂ）の接続の場合に、ゲーム装置ＧＭ１は、ゲーム装置ＧＭ２の間で図１８〜図２２で説明した処理を行うと共に、ゲーム装置ＧＭ３、ＧＭ４の各々との間でも図１８〜図２２で説明した処理を行えばよい。例えばパケットバッファ１７１上に、ゲーム装置ＧＭ２用の受信パケット領域、ＧＭ３用の受信パケット領域、ＧＭ４用の受信パケット領域を確保して、パケット処理を実行する。この場合に区間ＩＤについては、ゲーム装置ＧＭ２、ＧＭ３、ＧＭ４の間で同じ同期ＩＤを用いてもよいし、それぞれ別個の異なる同期ＩＤを用いてもよい。
【０２０４】
またゲーム装置ＧＭ１がホストに割り当てられ、他のゲーム装置がクライアントに割り当てられている場合には、ホストであるゲーム装置ＧＭ１が主導となって、区間ＩＤの管理処理やゲームシーケンス区間の移行処理を実行すればよい。
【０２０５】
４．詳細な処理
次に本実施形態の詳細な処理例について図２３〜図２７のフローチャートを用いて説明する。
【０２０６】
図２３はパケット処理に関するフローチャートである。まず、フレーム更新（１／６０秒）のタイミングか否かを判断する（ステップＳ１）。そしてフレーム更新のタイミングである場合には、パケットを受信したか否かを判断する（ステップＳ２）。例えば図３の通信用バッファ（ソケットバッファ）１９７にパケットが受信されたか否かを判断する。
【０２０７】
パケットを受信した場合には、そのパケットに設定される区間ＩＤが、現在のゲームシーケンス区間の区間ＩＤに一致するか否かを判断する（ステップＳ３）。即ち、パケット受信時に実行されているゲームシーケンス処理のゲームシーケンス区間に対応づけられている区間ＩＤに、パケットの区間ＩＤが一致しているか否かを判断する。そして一致してない場合には、そのパケットを破棄する（ステップＳ４）。即ち、そのパケットをパケットバッファ１７１に書き込まないようにする。
【０２０８】
一方、区間ＩＤが一致している場合には、パケットに設定されたパケットの生成順序情報に基づいて、パケットバッファ１７１でのパケットの格納場所を決定する（ステップＳ５）。例えばパケットＰＫ１（生成順序＝１）、ＰＫ２（生成順序＝２）、ＰＫ４（生成順序＝４）が既にパケットバッファ１７１に格納されている状態で、パケットＰＫ３（生成順序＝３）を受信した場合には、パケットＰＫ２の格納場所とＰＫ４の格納場所の間の格納場所が、パケットＰＫ３の格納場所として決定される。
【０２０９】
次に、決定された格納場所に既にパケットが書き込まれているか否かを判断し（ステップＳ６）、書き込まれている場合には、パケットをパケットバッファ１７１に書き込まずに破棄する（ステップＳ７）。一方、書き込まれていない場合には、ステップＳ５で決定された格納場所にパケットを書き込むことでパケットの並び替え処理を実行する（ステップＳ８）。上述の例であれば、パケットＰＫ２の格納場所とＰＫ４の格納場所の間の格納場所に、パケットＰＫ３が既に書き込まれていた場合には、受信したパケットを破棄し、書き込まれていない場合には、受信したパケットをその格納場所に書き込む。
【０２１０】
図２４はゲーム演算部１０４へのパケットの転送処理のフローチャートである。まずゲーム演算部１０４からパケットＩＤを指定したパケットの転送要求が来たか否かを判断する（ステップＳ３１）。そして、転送要求が来た場合には、要求されたパケットＩＤのパケットをパケットバッファ１７１から検索する（ステップＳ３２）。例えば図１１（Ｂ）のように操作データの転送要求が来た場合には、操作データ用パケットをパケットバッファ１７１から検索する。
【０２１１】
次に、パケットバッファ１７１に非存在の生成順序のパケットよりも古い生成順序のパケットのうち、指定されたパケットＩＤのパケットをゲーム演算部１０４に転送する（ステップＳ３３）。例えば図１１（Ｂ）では、パケットバッファ１７１に非存在の生成順序のパケット（ＰＫ３）よりも古い生成順序のパケットは、ＰＫ１、ＰＫ２になる。従って、これらのパケットＰＫ１、ＰＫ２のうち、操作データ用のパケットＰＫ１がゲーム演算部１０４に転送される。この際に、パケットＰＫ４は、パケットバッファ１７１に非存在の生成順序のパケット（ＰＫ３）よりも新しい生成順序のパケットであるため、ゲーム演算部１０４には転送されない。
【０２１２】
最後に、パケットバッファ１７１に非存在の生成順序のパケットの再送要求を実行する（ステップＳ３４）。図１１（Ｂ）では、パケットバッファ１７１に非存在のパケットＰＫ３の再送要求が実行される。
【０２１３】
図２５は、ネットワーク切断時に通信経路とは別経路でパケットをロードする手法の処理のフローチャートである。
【０２１４】
他のゲーム装置からパケットを受信すると（ステップＳ４１）、受信したパケットをパケットバッファ１７１に書き込む（ステップＳ４２）。そして図１３（Ａ）に示すように、パケットバッファ１７１に書き込まれたパケットのデータに基づいて、キャラクタの制御処理を行う（ステップＳ４３）。
【０２１５】
次に、ネットワークの切断が検出されたか否かを判断し（ステップＳ４４）、図１４（Ａ）に示すように切断が検出された場合には、図１４（Ｂ）に示すように、ネットワーク切断時用に用意されたパケットをパケットバッファ１７１にロードする（ステップＳ４５）。そしてロードされたパケットのデータに基づいて、キャラクタの制御処理を行う（ステップＳ４６）。そしてネットワークの接続が再開したか否かを判断し（ステップＳ４７）、再開した場合にはステップＳ４１に戻る。
【０２１６】
図２６は、ホストのゲーム装置の区間同期処理のフローチャートである。まずゲームシーケンス区間が完了したか否かを判断する（ステップＳ１１）。そしてゲームシーケンス区間が完了したと判断された場合には、クライアントのゲーム装置から同期を要求する同期パケットを受信したか否かを判断する（ステップＳ１２）。そして、受信していない場合には、所定時間（所定期間）が経過したか否かを判断し（ステップＳ１３）、所定時間が経過した場合には、クライアントのゲーム装置との間のネットワークが切断されたと判定する（ステップＳ１４）。
【０２１７】
ステップＳ１２においてクライアントのゲーム装置から同期パケットを受信したと判断された場合には、区間ＩＤをインクリメントする（ステップＳ１５）。なおネットワークを介して複数のクライアントのゲーム装置が接続されている場合には、全てのゲーム装置から同期パケットを受信した場合に区間ＩＤをインクリメントすればよい。そしてインクリメント後の区間ＩＤが設定された同期パケットを生成し（ステップＳ１６）、生成された同期パケットをクライアントのゲーム装置に送信する（ステップＳ１７）。そして次のゲームシーケンス区間に移行する（ステップＳ１８）。
【０２１８】
図２７は、クライアントのゲーム装置の区間同期処理のフローチャートである。まずゲームシーケンス区間が完了したか否かを判断する（ステップＳ２１）。そしてゲームシーケンス区間が完了したと判断された場合には、同期を要求する同期パケットを生成し（ステップＳ２２）、生成した同期パケットをホストのゲーム装置に送信する（ステップＳ２３）。
【０２１９】
次に、ホストのゲーム装置から応答の同期パケットを受信したか否かを判断する（ステップＳ２４）。そして、受信しなかった場合には、所定時間が経過したか否かを判断し（ステップＳ２５）、所定時間が経過した場合には、ホストのゲーム装置との間のネットワークが接続されたと判断する（ステップＳ２６）。
【０２２０】
ステップＳ２４においてホストのゲーム装置から同期パケットを受信したと判断された場合には、受信した同期パケットの区間ＩＤに基づいて、クライアント側の区間ＩＤを更新し（ステップＳ２７）、次のゲームシーケンス区間に移行する（ステップＳ２８）。これによりホスト側とクライアント側とで区間ＩＤやゲームシーケンス区間を同期させることが可能になる。
【０２２１】
なお、上記のように本実施形態について詳細に説明したが、本発明の新規事項および効果から実体的に逸脱しない多くの変形が可能であることは当業者には容易に理解できるであろう。従って、このような変形例はすべて本発明の範囲に含まれるものとする。例えば、明細書又は図面において、少なくとも一度、より広義または同義な異なる用語と共に記載された用語は、明細書又は図面のいかなる箇所においても、その異なる用語に置き換えることができる。
【０２２２】
また、パケットの転送処理、パケットの書き込み処理、区間同期処理、ゲーム演算処理等も本実施形態で説明したものに限定されず、これらと均等な手法も本発明の範囲に含まれる。また本発明は種々のゲームに適用できる。また本発明は、業務用ゲームシステム、家庭用ゲームシステム、多数のプレイヤが参加する大型アトラクションシステム、シミュレータ、マルチメディア端末、ゲーム画像を生成するシステムボード、携帯電話等の種々のゲーム装置に適用できる。
【符号の説明】
【０２２３】
ＧＭ１〜ＧＭ４  ゲーム装置、
１２  方向キー、１４  アナログスティック、１６〜２３  ボタン、
９０  ネットワーク、１００  処理部、１０２  パケット処理部、
１０４  ゲーム演算部、１０５  ゲームシーケンス処理部、
１０６  オブジェクト空間設定部、１０７  キャラクタ制御部、
１０８  ロード処理部、１１０  ネットワーク管理部、１２０  画像生成部、
１３０  音生成部、１６０  操作部、１７０  記憶部、１７１  パケットバッファ、
１７２  操作データバッファ、１７６  キャラクタデータ記憶部、
１７７  モデルデータ記憶部、１７８  モーション記憶部、
１７９  描画バッファ、１８０  情報記憶媒体、１９０  表示部、１９２  音出力部、
１９４  補助記憶装置、１９６  通信部、１９７  通信用バッファ
【図１】
2011045505.tif 000003
【図２】
2011045505.tif 000004
【図３】
2011045505.tif 000005
【図４】
2011045505.tif 000006
【図５】
2011045505.tif 000007
【図６】
2011045505.tif 000008
【図７】
2011045505.tif 000009
【図８】
2011045505.tif 000010
【図９】
2011045505.tif 000011
【図１０】
2011045505.tif 000012
【図１１】
2011045505.tif 000013
【図１２】
2011045505.tif 000014
【図１３】
2011045505.tif 000015
【図１４】
2011045505.tif 000016
【図１５】
2011045505.tif 000017
【図１６】
2011045505.tif 000018
【図１７】
2011045505.tif 000019
【図１８】
2011045505.tif 000020
【図１９】
2011045505.tif 000021
【図２０】
2011045505.tif 000022
【図２１】
2011045505.tif 000023
【図２２】
2011045505.tif 000024
【図２３】
2011045505.tif 000025
【図２４】
2011045505.tif 000026
【図２５】
2011045505.tif 000027
【図２６】
2011045505.tif 000028
【図２７】
2011045505.tif 000029