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