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