(57)【要約】【課題】冗長データに基づいてパケットロストされたパケットデータを的確に復元させ、当該パケットデータに基づいてリアルタイム処理等の迅速な処理が要求されるゲーム処理を適切に実行させることまたは実行することが可能なデータ配信装置等を提供すること。【解決手段】サーバ装置２００は、操作入力データを配信する際に、操作入力データ群と生成した冗長データを含むパケットデータを生成し、当該生成したパケットデータの各ゲーム端末装置１００への配信を制御する。特に、サーバ装置２００は、生成される冗長データが設定されるパケットデータよりも過去に配信されたパケットデータに含まれる３以上の操作入力データ群（例えば、シーケンスＩＤが１個前、２個前及び５個前の３つ操作入力データ群）を特定し、特定した操作入力データ群について排他的論理和の演算を実行し、該当するパケットデータにおける冗長データを生成する。【選択図】図３
2013027548.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークを介して他の通信装置に、ゲーム処理を実行させるためのゲームデータをパケット毎に配信するデータ配信装置に搭載されるプログラムであって、
前記データ配信装置を、
パケット毎のゲームデータであるパケットデータにそれぞれ設定する冗長データを生成する生成手段、
前記ゲーム処理を実行するために用いられる実データと前記生成された冗長データを少なくとも含む前記パケットデータを生成し、当該生成したパケットデータの前記他の通信装置への配信を制御する配信制御手段、及び
前記パケットデータに含まれる前記実データを、前記他の通信装置に配信する際の配信順の情報を保持しつつ、記憶手段に順次記憶する記憶制御手段、
として機能させ、
前記生成手段として、
各パケットデータにおける冗長データを生成する際に、前記記憶手段に記憶された実データの中から、生成される前記冗長データが設定されるパケットデータよりも過去に配信されたパケットデータに含まれるｍ（ｍ≧３）個の実データを特定し、
前記特定した実データについて排他的論理和の演算を実行し、該当するパケットデータにおける前記冗長データを生成するように機能させるとともに、
前記特定したｍ個の実データには、当該ｍ個の実データにおける他の実データと前記配信順が不連続となる少なくとも１の実データが含まれることを特徴とするプログラム。
【請求項２】
請求項１に記載のプログラムにおいて、
前記特定したｍ個の実データには、前記配信順が連続している少なくともｎ（２≦ｎ＜ｍ）個の実データが含まれる、プログラム。
【請求項３】
請求項２に記載のプログラムにおいて、
前記特定したｍ個の実データにおける前記配信順が不連続な実データの配信順α１と、前記特定したｍ個の実データにおける配信順が連続するｎ個の実データうち最新の配信順（αｎｅｗ２）または最先の配信順（αｏｌｄ２）と、については、下記の（式１）または（式２）の何れかの関係を有する、プログラム。
α１  ＝  αｎｅｗ２＋（ｎ＋１）      ・・・（式１）
α１  ＝  αｏｌｄ２−（ｎ＋１）      ・・・（式２）
【請求項４】
請求項２または３に記載のプログラムにおいて、
前記特定したｍ個の実データには、前記冗長データが設定されるパケットデータの直前に配信された実データが含まれる、プログラム。
【請求項５】
請求項１ないし４の何れかに記載のプログラムにおいて、
前記実データが、ゲーム処理を実行する前記他の通信装置から送信されたゲームデータであって当該他の通信装置で操作入力された操作入力データである、プログラム。
【請求項６】
請求項１ないし５の何れかに記載のプログラムにおいて、
前記データ配信装置を、
プレーヤの操作入力を操作入力データとして受け付ける操作入力手段、及び
前記受け付けた操作入力データに基づいてゲーム処理を実行するゲーム処理手段、
として更に機能させ、
前記実データが、前記受け付けた操作入力データである、プログラム。
【請求項７】
ネットワークを介してデータ配信装置から配信されたパケット毎のゲームデータに基づいてゲーム処理を実行するゲーム装置に搭載されるプログラムであって、
パケット毎のゲームデータである各パケットデータには、前記ゲーム処理を実行するために用いられる実データと、前記データ配信装置から自パケットデータより過去に配信されたパケットデータに含まれるｍ（ｍ≧３）個の実データについて排他的論理和の演算を実行して生成された冗長データと、が少なくとも含まれている場合であって、
前記冗長データが生成される際に特定されたｍ個の実データには、当該ｍ個の実データおける他の実データと前記データ配信装置から配信される際の配信順が不連続となる少なくとも１の実データが含まれている場合に、
前記ゲーム装置を、
前記データ配信装置から順次配信された前記パケットデータの受信制御を行う受信制御手段、
前記受信された受信パケットデータに基づいて、前記データ配信装置から配信された際の配信順を認識しつつ、未受信の未受信パケットデータを検出する検出手段、
前記未受信パケットデータが検出された場合に、前記未受信パケットデータの配信順を基準に、ｍ個の前記受信パケットデータにそれぞれ含まれる少なくとも１の冗長データと２以上の実データを特定し、当該特定した冗長データ及び実データについて排他的論理和の演算を実行し、前記未受信のパケットデータに含まれる実データを復元する復元手段、及び
前記受信したパケットデータまたは前記復元したパケットデータに基づいて前記ゲーム処理を実行するゲーム処理手段、
として機能させることを特徴とするプログラム。
【請求項８】
請求項７に記載のプログラムにおいて、
前記実データを復元する際に特定された前記冗長データが含まれる受信パケットデータが、前記未受信パケットデータの配信後の配信順を有する、プログラム。
【請求項９】
請求項８に記載のプログラムにおいて、
前記冗長データが生成される際に特定されたｍ個の実データには、前記配信順が連続している少なくともｎ（２≦ｎ＜ｍ）個の実データが含まれており、
前記実データを復元する際に特定された少なくとも１の実データが含まれる受信パケットデータの配信順Ｐ１と、前記特定された冗長データを含む受信パケットデータの配信順Ｐ２とについては、下記の（式３）の関係を有するプログラム。
Ｐ１＝Ｐ２±（ｍ＋ｎ）        ・・・（式３）
【請求項１０】
請求項７ないし９の何れかに記載のプログラムにおいて、
前記冗長データが生成される際に特定されたｍ個の実データには、前記冗長データが設定されるパケットデータの直前に配信された実データが含まれており、
前記実データを復元する際に特定された冗長データが含まれる受信パケットデータが、前記未受信パケットデータの配信直後の配信順を有する、プログラム。
【請求項１１】
請求項７ないし１０の何れかに記載のプログラムにおいて、
前記実データが、ゲーム処理を実行する他のゲーム装置から送信されたゲームデータであって当該他のゲーム装置で操作入力された操作入力データである、プログラム。
【請求項１２】
ネットワークを介して他の通信装置に、ゲーム処理を実行させるためのゲームデータをパケット毎に配信するデータ配信装置に搭載されるプログラムであって、
パケット毎のゲームデータであるパケットデータにそれぞれ設定する冗長データを生成する生成手段と、
前記ゲーム処理を実行するために用いられる実データと前記生成された冗長データを少なくとも含む前記パケットデータを生成し、当該生成したパケットデータの前記他の通信装置への配信を制御する配信制御手段と、
前記パケットデータに含まれる前記実データを、前記他の通信装置に配信する際の配信順の情報を保持しつつ、記憶手段に順次記憶する記憶制御手段と、
を備え、
前記生成手段が、
各パケットデータにおける冗長データを生成する際に、前記記憶手段に記憶された実データの中から、生成される前記冗長データが設定されるパケットデータよりも過去に配信されたパケットデータに含まれるｍ（ｍ≧３）個の実データを特定し、
前記特定した実データについて排他的論理和の演算を実行し、該当するパケットデータにおける前記冗長データを生成するとともに、
前記特定したｍ個の実データには、当該ｍ個の実データにおける他の実データと前記配信順が不連続となる少なくとも１の実データが含まれることを特徴とするデータ配信装置。
【請求項１３】
ネットワークを介してデータ配信装置から配信されたパケット毎のゲームデータに基づいてゲーム処理を実行するゲーム装置であって、
パケット毎のゲームデータである各パケットデータには、前記ゲーム処理を実行するために用いられる実データと、前記データ配信装置から自パケットデータより過去に配信されたパケットデータに含まれるｍ（ｍ≧３）個の実データについて排他的論理和の演算を実行して生成された冗長データと、が少なくとも含まれているとともに、
前記冗長データが生成される際に特定されたｍ個の実データには、当該ｍ個の実データおける他の実データと前記データ配信装置から配信される際の配信順が不連続となる少なくとも１の実データが含まれている場合に、
前記データ配信装置から順次配信された前記パケットデータの受信制御を行う受信制御手段と、
前記受信された受信パケットデータに基づいて、前記データ配信手段から配信された際の配信順を認識しつつ、未受信の未受信パケットデータを検出する検出手段と、
前記未受信パケットデータが検出された場合に、前記未受信パケットデータの配信順を基準に、ｍ個の前記受信パケットデータにそれぞれ含まれる少なくとも１の冗長データと２以上の実データを特定し、当該特定した冗長データ及び実データについて排他的論理和の演算を実行し、前記未受信のパケットデータに含まれる実データを復元する復元手段と、
前記受信したパケットデータまたは前記復元したパケットデータに基づいて前記ゲーム処理を実行するゲーム処理手段と、
を備えることを特徴とするゲーム装置。
【請求項１４】
ゲームデータに基づいてゲーム処理を実行するゲーム装置と、
ネットワークを介して前記ゲーム装置に前記ゲームデータをパケット毎に配信するデータ配信装置と、
を備え、
前記データ配信装置が、
パケット毎のゲームデータであるパケットデータにそれぞれ設定する冗長データを生成する生成手段と、
前記ゲーム処理を実行するために用いられる実データと前記生成された冗長データを少なくとも含む前記パケットデータを生成し、当該生成したパケットデータの前記他の通信装置への配信を制御する配信制御手段と、
前記パケットデータに含まれる前記実データを、前記他の通信装置に配信する際の配信順の情報を保持しつつ、記憶手段に順次記憶する記憶制御手段と
を備え、
前記生成手段が、
各パケットデータにおける冗長データを生成する際に、前記記憶手段に記憶された実データの中から、生成される前記冗長データが設定されるパケットデータよりも過去に配信されたパケットデータに含まれるｍ（ｍ≧３）個の実データを特定し、
前記特定した実データについて排他的論理和の演算を実行し、該当するパケットデータにおける前記冗長データを生成するとともに、
前記特定したｍ個の実データには、当該ｍ個の実データにおける他の実データと前記配信順が不連続となる少なくとも１の実データが含まれること、
前記ゲーム装置が、
前記データ配信装置から順次配信された前記パケットデータの受信制御を行う受信制御手段と、
前記受信された受信パケットデータに基づいて、前記データ配信装置から配信された際の配信順を認識しつつ、未受信の未受信パケットデータを検出する検出手段と、
前記未受信パケットデータが検出された場合に、前記未受信パケットデータの配信順を基準に、ｍ個の前記受信パケットデータにそれぞれ含まれる少なくとも１の冗長データと２以上の実データを特定し、当該特定した冗長データ及び実データについて排他的論理和の演算を実行し、前記未受信のパケットデータに含まれる実データを復元する復元手段と、
前記受信したパケットデータまたは前記復元したパケットデータに基づいて前記ゲーム処理を実行するゲーム処理手段と、
を有することを特徴とするネットワークシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラム、ゲーム装置、データ配信装置及びネットワークシステムに関する。
【背景技術】
【０００２】
近年、ネットワークを介して他のゲーム装置との間で通信対戦ゲームを行うゲーム装置が脚光を浴びている。また、このような通信対戦ゲームでは、ゲーム装置間において、または、サーバ装置を介して操作データ等のゲームデータの授受が相互に必要となる。
【０００３】
例えば、一のゲーム装置は、相手プレーヤが入力した操作データを、他のゲーム装置からネットワークを介して受信し、または、自機に入力した操作データを、ネットワークを介して他のゲーム装置に送信するようになっている。
【０００４】
特に、このようなスムーズな通信対戦ゲームを実現するためには、操作データ等のゲームデータを高速な転送速度で通信することが望まれており、例えば、ＴＣＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）などの信頼性重視の通信プロトコルとは違って、ＵＤＰ（Ｕｓｅｒ  Ｄａｔａｇｒａｍ  Ｐｒｏｔｏｃｏｌ）などの高速な転送が可能な通信プロトコル（無手順方式）を用いてゲームデータの授受が行われることも多い。
【０００５】
一方、ＵＤＰなどの無手順方式のプロトコルでは、所与の各データ単位のデータ、すなわち、各パケット（以下、「パケットデータ」ともいう。）の到着や到着順序が保証されず、パケットデータの欠落、すなわち、パケットロスト（以下、「パケットロス」ともいう。）が発生することも多い。したがって、最近では、パケットデータとともにエラー訂正用の訂正データ（すなわち、冗長データ）を送信し、パケットロストが発生した場合に、当該冗長データに基づいてパケットロストされたパケットデータの復元を行うものも登場している。
【０００６】
例えば、このようなシステムは、送信装置において、送信するパケットデータについて累積的に排他的論理和を算出するとともに、当該算出した排他的論理和に基づいて訂正データ、すなわち、冗長データを生成し、パケットデータとともに当該冗長データをパケットとして受信装置に送信するとともに、受信装置において、パケットロストが発生した場合に、当該パケットロストが発生した次に受信した冗長データのパケットに基づいてパケットロストが発生したパケットデータを復元するようになっている（例えば、特許文献１）。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特許第４４０５８７５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、特許文献１に記載のシステムにあっては、連続してパケットデータがロストした場合には、パケットロストされたデータを次に受信した冗長データによって復元することができず、当該パケットロストとなったパケットデータ自体の再送を要求する必要がある。
【０００９】
したがって、当該システムにあっては、パケットロストが発生したパケットデータを復元するまでに長時間を必要とし、ゲーム処理などのリアルタイム処理が適切に実行されず、処理そのものに不具合を発生させることも多い。
【００１０】
本発明は、上記課題を解決するためになされたものであり、その目的は、冗長データに基づいてパケットロストされたパケットデータを的確に復元させ、当該パケットデータに基づいてリアルタイム処理などの迅速な処理が要求されるゲーム処理を適切に実行させることまたは実行することが可能なデータ配信装置、ゲーム装置、ネットワークシステム及びプログラムを提供することにある。
【課題を解決するための手段】
【００１１】
（１）上記課題を解決するため、本発明のプログラムは、
ネットワークを介して他の通信装置に、ゲーム処理を実行させるためのゲームデータをパケット毎に配信するデータ配信装置に搭載されるプログラムであって、
前記データ配信装置を、
パケット毎のゲームデータであるパケットデータにそれぞれ設定する冗長データを生成する生成手段、
前記ゲーム処理を実行するために用いられる実データと前記生成された冗長データを少なくとも含む前記パケットデータを生成し、当該生成したパケットデータの前記他の通信装置への配信を制御する配信制御手段、及び
前記パケットデータに含まれる前記実データを、前記他の通信装置に配信する際の配信順の情報を保持しつつ、記憶手段に順次記憶する記憶制御手段、
として機能させ、
前記生成手段として、
各パケットデータにおける冗長データを生成する際に、前記記憶手段に記憶された実データの中から、生成される前記冗長データが設定されるパケットデータよりも過去に配信されたパケットデータに含まれるｍ（ｍ≧３）個の実データを特定し、
前記特定した実データについて排他的論理和の演算を実行し、該当するパケットデータにおける前記冗長データを生成するように機能させるとともに、
前記特定したｍ個の実データには、当該ｍ個の実データにおける他の実データと前記配信順が不連続となる少なくとも１の実データが含まれる構成を有している。
【００１２】
通常、各パケットデータに他のパケットデータまたはそれに含まれるデータに基づいて生成された冗長データが含まれている場合には、パケットロストされたデータを用いて生成された冗長データと、当該冗長データの生成に用いたパケットロストされたデータ以外のデータと、に基づいてパケットロストされたデータを復元することができる。
【００１３】
本発明のプログラムは、上記構成により、冗長データの生成に用いるｍ（ｍ≧３）個の実データを用いるとともに、かつ、冗長データの生成に用いる実データ（以下、「冗長データ生成用実データ」という。）において他の冗長データ用実データと配信順が不連続となる実データ（以下、「冗長データ生成用離隔実データ」という。）を用いることによって、冗長データを多くの構成要素から構成させつつ、かつ、当該構成要素の一部を他の構成要素から離隔させること、すなわち、冗長データを構成する実データを分散して受信装置に提供することができる。
【００１４】
すなわち、本発明のプログラムは、連続してパケットロストが発生した場合であっても、ゲーム処理を実行するゲーム装置などの受信装置において分散されて提供されることによって確実に受信された実データを、パケットロストされたパケットデータ（以下、「パケットロストデータ」という。）に含まれる実データ（以下、「ロスト実データ」という。）の復元に用いることができるので、連続したパケットロストへの耐性を向上させることができるとともに、的確にロスト実データを復元させることができる。
【００１５】
したがって、本発明のプログラムは、受信済みのパケットデータによってパケットロストされたロスト実データの復元を確実に行うことができるので、ロスト実データの再送要求及びそれに伴う再送処理などのロスト実データの再取得処理を不要またはその頻度を低減し、リアルタイム処理などの迅速な処理が要求されるゲーム処理を適切に実行させることができる。
【００１６】
（２）また、本発明のプログラムは、前記特定したｍ個の実データには、前記配信順が連続している少なくともｎ（２≦ｎ＜ｍ）個の実データが含まれる、構成を有している。
【００１７】
この構成により、本発明のプログラムは、配信順が不連続となるデータ生成用離隔実データとともに、配信順が連続しているデータ生成用実データを用いることによって、受信装置において、連続したパケットロストへの耐性の向上させつつ、パケットロストされた実データにおける復元の容易性及び迅速性をバランスよく実現することができる。
【００１８】
（３）また、本発明のプログラムは、
前記特定したｍ個の実データにおける前記配信順が不連続な実データの配信順α１と、前記特定したｍ個の実データにおける配信順が連続するｎ個の実データうち最新の配信順（αｎｅｗ２）または最先の配信順（αｏｌｄ２）と、については、下記の（式１）または（式２）の何れかの関係を有する構成をしている。
α１  ＝  αｎｅｗ２＋（ｎ＋１）      ・・・（式１）
α１  ＝  αｏｌｄ２−（ｎ＋１）      ・・・（式２）
【００１９】
この構成により、本発明のプログラムは、冗長データ生成用離隔実データとして、当該冗長データの生成に用いられた連続したパケットデータにおける最新の冗長データ生成用実データまたは最先の冗長データ生成用実データとｎ＋１以上離れた冗長データ生成用実データを用いているので、ｎ個連続してパケットロストが発生した場合であっても、当該冗長データ生成用離隔実データについてはパケットロストされずに確実に受信装置に受信させることができる。
【００２０】
したがって、本発明のプログラムは、復元に用いる実データを的確に確保させて連続したパケットロストへの耐性を向上させることができる。
【００２１】
（４）また、本発明のプログラムは、前記特定したｍ個の実データには、前記冗長データが設定されるパケットデータの直前に配信された実データが含まれる、構成を有している。
【００２２】
この構成により、本発明のプログラムは、受信装置においてロスト実データを復元する際に当該復元に用いる実データを容易にかつ迅速に確保させることができるとともに、パケットロストが発生した際に当該パケットロストデータの次の配信順のパケットデータに含まれる冗長データを用いて実データの復元を行うことができるので、容易にかつ迅速に当該パケットロストされた実データを復元させることができる。
【００２３】
（５）また、本発明のプログラムは、前記実データが、ゲーム処理を実行する前記他の通信装置から送信されたゲームデータであって当該他の通信装置で操作入力された操作入力データである、構成を有している。
【００２４】
この構成により、本発明のプログラムは、対戦ゲームなどの複数のゲーム装置における操作入力に連動させて実行されるゲームに適用させることができる。
【００２５】
（６）また、本発明のプログラムは、
前記データ配信装置を、
プレーヤの操作入力を操作入力データとして受け付ける操作入力手段、及び
前記受け付けた操作入力データに基づいてゲーム処理を実行するゲーム処理手段、
として更に機能させ、
前記実データが、前記受け付けた操作入力データである、構成を有している。
【００２６】
この構成により、本発明のプログラムは、対戦ゲームなどの複数のゲーム装置における操作入力に連動させてゲームが実行されるゲーム装置に搭載することができる。
【００２７】
（７）上記課題を解決するため、本発明のプログラムは、
ネットワークを介してデータ配信装置から配信されたパケット毎のゲームデータに基づいてゲーム処理を実行するゲーム装置に搭載されるプログラムであって、
パケット毎のゲームデータである各パケットデータには、前記ゲーム処理を実行するために用いられる実データと、前記データ配信装置から自パケットデータより過去に配信されたパケットデータに含まれるｍ（ｍ≧３）個の実データについて排他的論理和の演算を実行して生成された冗長データと、が少なくとも含まれている場合であって、
前記冗長データが生成される際に特定されたｍ個の実データには、当該ｍ個の実データおける他の実データと前記データ配信装置から配信される際の配信順が不連続となる少なくとも１の実データが含まれている場合に、
前記ゲーム装置を、
前記データ配信装置から順次配信された前記パケットデータの受信制御を行う受信制御手段、
前記受信された受信パケットデータに基づいて、前記データ配信装置から配信された際の配信順を認識しつつ、未受信の未受信パケットデータを検出する検出手段、
前記未受信パケットデータが検出された場合に、前記未受信パケットデータの配信順を基準に、ｍ個の前記受信パケットデータにそれぞれ含まれる少なくとも１の冗長データと２以上の実データを特定し、当該特定した冗長データ及び実データについて排他的論理和の演算を実行し、前記未受信のパケットデータに含まれる実データを復元する復元手段、及び
前記受信したパケットデータまたは前記復元したパケットデータに基づいて前記ゲーム処理を実行するゲーム処理手段、
として機能させる構成を有している。
【００２８】
通常、各パケットデータに他のパケットデータまたはそれに含まれるデータに基づいて生成された冗長データが含まれている場合には、パケットロストされたデータを用いて生成された冗長データと、当該冗長データの生成に用いたパケットロストされたデータ以外のデータと、に基づいてパケットロストされたデータを復元することができる。
【００２９】
本発明のプログラムは、上記構成により、ｍ（ｍ≧３）個の実データによって構成され、かつ、他の冗長データ用実データと配信順が不連続となる冗長データ生成用離隔実データを用いた冗長データによってロスト実データを復元することができるので、多くの構成要素で構成されつつ、分散された構成要素から構成された冗長データを用いてロスト実データを復元することができる。
【００３０】
すなわち、本発明のプログラムは、連続してパケットロストが発生した場合であっても、分散されて提供されることによって確実に受信された実データに基づいて、ロスト実データを復元することができるので、連続したパケットロストへの耐性を向上させることができるとともに、的確にロスト実データを復元させることができる。
【００３１】
したがって、本発明のプログラムは、受信済みのパケットデータによってパケットロストされたロスト実データの復元を確実に行うことができるので、ロスト実データの再送要求及びそれに伴う再送処理などのロスト実データの再取得処理を不要またはその頻度を低減し、リアルタイム処理などの迅速な処理が要求されるゲーム処理を適切に実行することができる。
【００３２】
（８）また、本発明のプログラムは、前記実データを復元する際に特定された前記冗長データが含まれる受信パケットデータが、前記未受信パケットデータの配信後の配信順を有する、構成を有している。
【００３３】
この構成により、本発明のプログラムは、パケットロストが発生した後の配信順を有するパケットデータに含まれる冗長データを実データの復元に用いるので、原則的に復元に用いる冗長データを受信した場合に既に受信している実データの中から復元に用いる実データを特定すればよく、当該復元に用いる実データを容易にかつ迅速に確保することができる。
【００３４】
（９）また、本発明のプログラムは、
前記冗長データが生成される際に特定されたｍ個の実データには、前記配信順が連続している少なくともｎ（２≦ｎ＜ｍ）個の実データが含まれており、
前記実データを復元する際に特定された少なくとも１の実データが含まれる受信パケットデータの配信順Ｐ１と、前記特定された冗長データを含む受信パケットデータの配信順Ｐ２とについては、下記の（式３）の関係を有する構成をしている。
【００３５】
Ｐ１＝Ｐ２±（ｍ＋ｎ）        ・・・（式３）
【００３６】
この構成により、本発明のプログラムは、連続したパケットロストへの耐性を向上させるために、パケットロストされずに確実に受信した実データをパケットロストされた実データの復元に用いることができる。
【００３７】
（１０）また、本発明のプログラムは、
前記冗長データが生成される際に特定されたｍ個の実データには、前記冗長データが設定されるパケットデータの直前に配信された実データが含まれており、
前記実データを復元する際に特定された冗長データが含まれる受信パケットデータが、前記未受信パケットデータの配信直後の配信順を有する、構成をしている。
【００３８】
この構成により、本発明のプログラムは、実データを復元する際に用いる冗長データを容易にかつ迅速に確保することができるので、パケットロストされた実データの復元を迅速に実行することができる。
【００３９】
（１１）また、本発明のプログラムは、前記実データが、ゲーム処理を実行する他のゲーム装置から送信されたゲームデータであって当該他のゲーム装置で操作入力された操作入力データである、構成を有している。
【００４０】
この構成により、本発明のプログラムは、対戦ゲームなどの複数のゲーム装置における操作入力に連動させてゲームが実行されるプログラムに提供することができる。
【００４１】
（１２）上記課題を解決するため、本発明のデータ配信装置は、
ネットワークを介して他の通信装置に、ゲーム処理を実行させるためのゲームデータをパケット毎に配信するデータ配信装置に搭載されるプログラムであって、
パケット毎のゲームデータであるパケットデータにそれぞれ設定する冗長データを生成する生成手段と、
前記ゲーム処理を実行するために用いられる実データと前記生成された冗長データを少なくとも含む前記パケットデータを生成し、当該生成したパケットデータの前記他の通信装置への配信を制御する配信制御手段と、
前記パケットデータに含まれる前記実データを、前記他の通信装置に配信する際の配信順の情報を保持しつつ、記憶手段に順次記憶する記憶制御手段と、
を備え、
前記生成手段が、
各パケットデータにおける冗長データを生成する際に、前記記憶手段に記憶された実データの中から、生成される前記冗長データが設定されるパケットデータよりも過去に配信されたパケットデータに含まれるｍ（ｍ≧３）個の実データを特定し、
前記特定した実データについて排他的論理和の演算を実行し、該当するパケットデータにおける前記冗長データを生成するとともに、
前記特定したｍ個の実データには、当該ｍ個の実データにおける他の実データと前記配信順が不連続となる少なくとも１の実データが含まれる構成を有している。
【００４２】
この構成により、本発明のデータ配信装置は、上述の本発明のプログラムと同様に、受信済みのパケットデータによってパケットロストされたロスト実データの復元を確実に行うことができるので、ロスト実データの再送要求及びそれに伴う再送処理などのロスト実データの再取得処理を不要またはその頻度を低減し、リアルタイム処理などの迅速な処理が要求されるゲーム処理を適切に実行させることができる。
【００４３】
（１３）上記課題を解決するため、本発明のゲーム装置は、ネットワークを介してデータ配信装置から配信されたパケット毎のゲームデータに基づいてゲーム処理を実行するゲーム装置であって、
パケット毎のゲームデータである各パケットデータには、前記ゲーム処理を実行するために用いられる実データと、前記データ配信装置から自パケットデータより過去に配信されたパケットデータに含まれるｍ（ｍ≧３）個の実データについて排他的論理和の演算を実行して生成された冗長データと、が少なくとも含まれているとともに、
前記冗長データが生成される際に特定されたｍ個の実データには、当該ｍ個の実データおける他の実データと前記データ配信装置から配信される際の配信順が不連続となる少なくとも１の実データが含まれている場合に、
前記データ配信装置から順次配信された前記パケットデータの受信制御を行う受信制御手段と、
前記受信された受信パケットデータに基づいて、前記データ配信手段から配信された際の配信順を認識しつつ、未受信の未受信パケットデータを検出する検出手段と、
前記未受信パケットデータが検出された場合に、前記未受信パケットデータの配信順を基準に、ｍ個の前記受信パケットデータにそれぞれ含まれる少なくとも１の冗長データと２以上の実データを特定し、当該特定した冗長データ及び実データについて排他的論理和の演算を実行し、前記未受信のパケットデータに含まれる実データを復元する復元手段と、
前記受信したパケットデータまたは前記復元したパケットデータに基づいて前記ゲーム処理を実行するゲーム処理手段と、
を備える構成を有している。
【００４４】
この構成により、本発明のゲーム装置は、上述の本発明のプログラムと同様に、受信済みのパケットデータによってパケットロストされたロスト実データの復元を確実に行うことができるので、ロスト実データの再送要求及びそれに伴う再送処理などのロスト実データの再取得処理を不要またはその頻度を低減し、リアルタイム処理などの迅速な処理が要求されるゲーム処理を適切に実行することができる。
【００４５】
（１４）上記課題を解決するため、本発明のネットワークシステムは、
ゲームデータに基づいてゲーム処理を実行するゲーム装置と、
ネットワークを介して前記ゲーム装置に前記ゲームデータをパケット毎に配信するデータ配信装置と、
を備えた
前記データ配信装置が、
パケット毎のゲームデータであるパケットデータにそれぞれ設定する冗長データを生成する生成手段と、
前記ゲーム処理を実行するために用いられる実データと前記生成された冗長データを少なくとも含む前記パケットデータを生成し、当該生成したパケットデータの前記他の通信装置への配信を制御する配信制御手段と、
前記パケットデータに含まれる前記実データを、前記他の通信装置に配信する際の配信順の情報を保持しつつ、記憶手段に順次記憶する記憶制御手段と
を備え、
前記生成手段が、
各パケットデータにおける冗長データを生成する際に、前記記憶手段に記憶された実データの中から、生成される前記冗長データが設定されるパケットデータよりも過去に配信されたパケットデータに含まれるｍ（ｍ≧３）個の実データを特定し、
前記特定した実データについて排他的論理和の演算を実行し、該当するパケットデータにおける前記冗長データを生成するとともに、
前記特定したｍ個の実データには、当該ｍ個の実データにおける他の実データと前記配信順が不連続となる少なくとも１の実データが含まれること、
前記ゲーム装置が、
前記データ配信装置から順次配信された前記パケットデータの受信制御を行う受信制御手段と、
前記受信された受信パケットデータに基づいて、前記データ配信装置から配信された際の配信順を認識しつつ、未受信の未受信パケットデータを検出する検出手段と、
前記未受信パケットデータが検出された場合に、前記未受信パケットデータの配信順を基準に、ｍ個の前記受信パケットデータにそれぞれ含まれる少なくとも１の冗長データと２以上の実データを特定し、当該特定した冗長データ及び実データについて排他的論理和の演算を実行し、前記未受信のパケットデータに含まれる実データを復元する復元手段と、
前記受信したパケットデータまたは前記復元したパケットデータに基づいて前記ゲーム処理を実行するゲーム処理手段と、
を有する構成をしている。
【００４６】
この構成により、本発明のネットワークシステムは、ゲーム装置において、受信済みのパケットデータによってパケットロストされたロスト実データの復元を確実に行うことができるので、ロスト実データの再送要求及びそれに伴う再送処理などのロスト実データの再取得処理を不要またはその頻度を低減し、リアルタイム処理などの迅速な処理が要求されるゲームをゲーム装置において適切に実行することができる。
【図面の簡単な説明】
【００４７】
【図１】一実施形態の対戦ゲームシステムの構成を示す構成図である。
【図２】一実施形態のゲーム端末装置の構成を示す構成図である。
【図３】一実施形態のサーバ装置の構成を示す構成図である。
【図４】各ゲーム端末装置からサーバ装置に送信されるパケットデータの構造を示す構造図の一例である。
【図５】各ゲーム端末装置からサーバ装置に送信されるパケットデータの構造を示す構造図の一例である。
【図６】一実施形態において生成される冗長データの一例であって、その構造を示す図である。
【図７】一実施形態のサーバ装置において生成されるパケットデータに含まれる冗長データの復元処理について説明するための図（その１）である。
【図８】一実施形態のサーバ装置において生成されるパケットデータに含まれる冗長データの復元処理について説明するための図（その２）である。
【図９】一実施形態のサーバ装置において生成されるパケットデータに含まれる冗長データの復元処理について説明するための図（その３）である。
【図１０】一実施形態のサーバ装置において生成されるパケットデータに含まれる冗長データの復元処理について説明するための図（その４）である。
【図１１】一実施形態のサーバ装置におけるパケットデータの生成処理の動作を示すフローチャートである。
【図１２】一実施形態のゲーム端末装置におけるパケットデータの復元処理の動作を示すフローチャートである。
【発明を実施するための最良の形態】
【００４８】
以下、本発明の実施形態について、図面を参照しながら説明する。
【００４９】
なお、以下の実施形態は、ネットワークを介して構築される対戦ゲームシステムに含まれる複数のゲーム端末装置及びサーバ装置に対し、本発明に係るプログラム、データ配信装置、ゲーム装置及びネットワークシステムを適用した場合の実施形態である。
【００５０】
また、以下に示す実施形態は、特許請求の範囲に記載された発明の内容を何ら限定するものではない。また、以下の実施形態に示す構成の全てが、特許請求の範囲に記載された発明の解決手段として必須であるとは限らない。
【００５１】
１．対戦ゲームシステムの構成及びその概要
まず、図１を用いて本実施形態における対戦ゲームシステム１０の構成について説明する。なお、図１は、本実施形態の対戦ゲームシステム１０の構成を示す構成図である。
【００５２】
対戦ゲームシステム１０は、同一のゲーム空間において種々のゲームを実行する複数のゲーム端末装置１００と、各ゲーム端末装置１００から各ゲーム端末装置１００において発生したアプリケーションデータであるゲームデータを収集しつつ、収集した各ゲームデータをそれぞれのゲーム端末装置１００に提供するサーバ装置２００と、を備え、各ゲーム端末装置１００とサーバ装置２００はネットワークＮを介して接続されている。
【００５３】
また、対戦ゲームシステム１０は、同一のゲーム空間において種々のゲームを実行する全てのゲーム端末装置１００を同期させつつ、当該各ゲーム端末装置１００から、各ゲーム端末装置１００において入力された操作入力のデータ（以下、「操作入力データ」という。）をサーバ装置２００に送信させるとともに、サーバ装置２００から各ゲーム端末装置１００に、受信した操作入力データを配信することによって、種々のゲームが実行されるゲームシステムである。
【００５４】
具体的には、各ゲーム端末装置１００は、各プレーヤが単独でまたは他のプレーヤと協力して他のゲーム端末装置１００のプレーヤによって操作される敵オブジェクトとの戦闘ゲームのゲーム処理を実行するように構成されている。
【００５５】
また、サーバ装置２００は、各ゲーム端末装置１００から操作入力データを含むゲームデータを受信し、受信したゲームデータを各ゲーム端末装置１００に配信するリレーサーバとして機能するようになっている。
【００５６】
本実施形態の対戦ゲームシステム１０においては、サーバ装置２００または各ゲーム端末装置１００は、予め定められた間隔毎にデータの送信または配信を行うようになっており、ネットワークを介して通信するかたまりであるパケット毎に、送信元ＩＰアドレス、送信先ＩＰアドレスを含むネットワークに必要なヘッダーと、送信すべきゲームデータを含むデータ（以下、「パケットデータ」という。）の授受を実行するようになっている。
【００５７】
特に、本実施形態においては、基本的には、ＵＤＰプロトコルなどの無手順方式のデータ転送方式を用いてサーバ装置２００とゲーム端末装置１００間のデータの伝送が制御されるようになっている。
【００５８】
一般的に、ＵＤＰプロトコルなどの無手順方式のデータ転送方式においては、データ送信の途中でパケットロストが発生してもロストされたデータの再送を実行せず、さらに、順番が入れ替わってパケットデータを伝送することを許容している。
【００５９】
その一方、ＵＤＰプロトコルは、オーバヘッド（すなわち、アプリケーションに関わる実データ以外のデータ）が無いまたはほとんど無いので、オンラインゲームなどのリアルタイム処理を実行するゲーム処理には適しているとされている。
【００６０】
そこで、本実施形態の対戦ゲームシステム１０は、各ゲーム端末装置１００において、サーバ装置２００及び他のゲーム端末装置１００（以下、「他機」ともいう。）のゲームデータに基づいてリアルタイム処理を実行するために、基本的にはＵＤＰプロトコルなどの無手順方式に従いつつ、パケットロストに対する耐性を強化したパケットデータをゲームデータの授受に用いるようになっている。
【００６１】
すなわち、本実施形態の対戦ゲームシステム１０は、高速通信が可能でリアルタイム処理が可能なＵＤＰプロトコルなどの無手順方式の通信規格を用いつつ、予め定めたタイミングでゲームデータの送信及び配信を行うことによって、パケットロストを早期に検出し、確実にかつ迅速に当該パケットロストされたデータを復元するようになっている。
【００６２】
そして、対戦ゲームシステム１０は、当該パケットロストされたデータの再送をせずに、または、当該再送の頻度を低減させることによって、パケットロスト発生時のゲーム処理の遅延または中断を防止するようになっている。
【００６３】
具体的には、本実施形態においては、使用するＵＤＰプロトコルに応じたアプリケーションの種類を特定するポート番号が指定されたパケットデータを用いてアプリケーションレベルの通信が実行される。
【００６４】
また、本実施形態においては、サーバ装置２００から配信される配信順を示す情報（以下、「シーケンスＩＤ」という。）がパケットデータに組み込まれ、かつ、各種のゲーム端末装置１００またはサーバ装置２００に搭載された各種のアプリケーション（搭載されるプログラム）によってパケットロストされたデータの復元を行うようになっている。そして、本実施形態においては、当該復元が長時間となる場合に限ってパケットロストされたデータの再送処理が実行されるようになっている。
【００６５】
特に、各ゲーム端末装置１００は、所定のタイミングでサーバ装置２００に自機の操作入力データを送信するとともに、所定のタイミングでサーバ装置２００から送信された自機の操作入力データを含む同一のゲーム空間を共有している他機の操作入力データ（すなわち、他のプレーヤの操作による操作入力データ）を受信する。
【００６６】
そして、各ゲーム端末装置１００は、自機の及び／または他機の操作入力データに基づいて、ゲームを進行させるための各種のゲーム処理を実行するようになっている。
【００６７】
例えば、各ゲーム端末装置１００は、所定のフレーム毎（１／３０フレーム毎）における操作入力データの２フレーム分のデータ（すなわち、１／６０フレーム毎の操作入力データ）を有するパケット毎のデータ（以下、「パケットデータ」という。）をサーバ装置２００に送信するようになっている。
【００６８】
また、各ゲーム端末装置１００は、所定のフレーム毎（１／３０フレーム毎）に、自機の操作入力データを含む同一のゲーム空間を共有している他のゲーム端末装置１００における操作入力データ群（すなわち、同一のゲーム空間においてゲーム処理を実行している全てのゲーム端末装置１００における操作入力データ群）の２フレーム分のデータと、誤り訂正用の冗長データ（以下、「パリティデータ」または「訂正用データ」ともいう。）と、を含むパケットデータを、サーバ装置２００から受信する。
【００６９】
そして、各ゲーム端末装置１００は、受信したパケットデータに含まれる操作入力データ群に基づいて種々のゲーム処理を実行するようになっている。
【００７０】
２．ゲーム端末装置
次に、図２を用いて本実施形態におけるゲーム端末装置１００の構成について説明する。なお、図２は、本実施形態のゲーム端末装置１００の構成を示す構成図である。また、本実施形態のゲーム端末装置１００は、図２の構成に限定されず、その一部の構成要素を省略すること、他の構成要素を追加するなどの種々の変形実施が可能である。
【００７１】
操作部１６０は、プレーヤが操作入力データを入力するためのものであり、その機能は、左右２つのレバー、各レバーに設けられたそれぞれ２つの計４つの操作ボタン、及び、２つのフットペダルによる実現される。なお、これらに限らずに、アナログスティック、各種センサ（角速度センサ、加速度センサ等）、方向指示キー、マイク、或いはタッチパネル型ディスプレイなどにより実現することも可能である。
【００７２】
記憶部１７０は、処理部１０１及び通信のワーク領域となるもので、その機能はＲＡＭ（ＤＲＡＭ、ＶＲＡＭ）などにより実現できる。特に、本実施形態の記憶部１７０は、主に、ゲームプログラムが記録される主記憶部１７２、画像バッファ１７４、第１のバッファ１７６、第２のバッファ１７８、各種制御情報記憶部１７９を有している。
【００７３】
主記憶部１７２は、主に、ゲームプログラムが記録される。また、第１のバッファ１７６は、自機のゲームデータが記憶される記憶領域であり、第２のバッファ１７８とはサーバ装置２００から受信したパケットデータが記憶される記憶領域であって、例えば主記憶の一部に設けられてソフトウェア的によって読み書きの制御が行われる構成でもよい。さらに、各種制御情報記憶部１７９には、自機や他機のゲームに関する情報が必要に応じて記憶されている。
【００７４】
特に、第２のバッファ１７８には、同一のゲーム空間を共有する各ゲーム端末装置１００の操作入力データ（以下、「操作入力データ群」という。）及び冗長データが順次配信順の情報（以下、「シーケンスＩＤ」という。）を保持しつつ記憶される。
【００７５】
また、第２のバッファ１７８には、後述するように復元された操作入力データ群についても、シーケンスＩＤを保持しつつ記憶される。
【００７６】
なお、ゲームプログラムは、ゲーム処理を実行するための命令コードが記述されたソフトウェアである。また、ゲームデータは、ゲームプログラムの実行の際に必要なデータであり、上述の操作入力データの他に、キャラクタデータ、ゲームステージデータ、通信に参加しているメンバーの情報、または、キャラクタ等の位置データなどである。
【００７７】
情報記憶媒体１８０（コンピュータにより読み取り可能な媒体）は、プログラムやデータなどを格納するものであり、その機能は、光ディスク（ＣＤ、ＤＶＤ）、ＨＤＤ（ハードディスクドライブ）、または、メモリ（ＲＯＭ等）などにより実現できる。
【００７８】
なお、処理部１０１は、情報記憶媒体１８０に格納されるプログラム（データ）に基づいて本実施形態の種々の処理を行う。すなわち、情報記憶媒体１８０には、本実施形態の各部としてコンピュータ（操作部、処理部、記憶部、出力部を備える装置）を機能させるためのプログラム（各部の処理をコンピュータに実行させるためのプログラム）が記憶される。
【００７９】
表示部１９０は、本実施形態により生成された画像を出力するものであり、その機能は、ＬＣＤ、有機ＥＬディスプレイ、ＣＲＴ、タッチパネル型ディスプレイ、または、ＨＭＤ（ヘッドマウントディスプレイ）などにより実現できる。
【００８０】
音出力部１９２は、本実施形態により生成された音を出力するものであり、その機能は、スピーカ、または、ヘッドフォンなどにより実現できる。
【００８１】
補助記憶装置１９４（補助メモリ、２次メモリ）は、記憶部１７０の容量を補うために使用される記憶装置であり、ＳＤメモリーカード、マルチメディアカードなどのメモリーカードなどにより実現できる。
【００８２】
通信部１９６は、有線及び無線のネットワークを介して外部（他のゲーム端末装置１００、サーバ装置２００）との間で通信を行うものであり、その機能は、通信用ＡＳＩＣまたは通信用プロセッサなどのハードウェア、及び、通信用ファームウェアにより実現できる。
【００８３】
なお、本実施形態の各部としてコンピュータを機能させるためのプログラム（データ）は、ホスト装置（サーバシステム）が有する情報記憶媒体からネットワーク及び通信部１９６を介して情報記憶媒体１８０（または、記憶部１７０若しくは補助記憶装置１９４）に配信されてもよい。このようなホスト装置による情報記憶媒体の使用も本発明の範囲内に含めることができる。
【００８４】
処理部１０１（プロセッサ）は、操作部１６０からの操作入力データ、取得した他のゲーム端末装置１００における操作入力データ及びプログラムなどに基づいて、ゲーム処理、画像生成処理、或いは音生成処理などを行う。
【００８５】
処理部１０１は、記憶部１７０をワーク領域として各種処理を行う。この処理部１０１の機能は、各種プロセッサ（ＣＰＵ、ＧＰＵ等）、ＡＳＩＣ（ゲートアレイ等）などのハードウェア及びプログラムにより実現できる。
【００８６】
処理部１０１は、ゲーム演算部（ゲーム処理手段）１１０、オブジェクト空間設定部１１１、仮想カメラ制御部１１２、移動・動作処理部１１３、ネットワーク設定部１１４、通信制御部１２０、画像生成部１３０、音生成部１４０を含む。なおこれらの一部を省略する構成としてもよい。
【００８７】
ゲーム演算部１１０は、ゲーム開始条件が満たされた場合にゲームを開始する処理、ゲームを進行させる処理、キャラクタやマップなどのオブジェクトを配置する処理、オブジェクトを表示する処理、ゲーム結果を演算する処理、及び、ゲーム終了条件が満たされた場合にゲームを終了する処理などがある。なお、例えば、本実施形態のゲーム演算部１１０は、本発明のゲーム処理手段を構成する。
【００８８】
本実施形態のゲーム演算部１１０は、戦闘ゲームを実行する際に、味方オブジェクトを含めた自機オブジェクトと、敵オブジェクトと、の体力値を初期値（例えば１００）に設定する。また、ゲーム演算部１１０は、戦闘ゲームを開始してから戦闘ゲームが終了するまでのゲーム期間（例えば、９０秒の間）に、フレーム毎に、各プレーヤの操作入力データに基づいてヒット判定処理を行うとともに、ヒット判定結果に基づいていて、各オブジェクトの体力値を減算させ、自機オブジェクトまたは敵オブジェクトの体力値が０になったか否かに基づいて戦闘ゲームの勝敗を決定する演算処理を行う。
【００８９】
オブジェクト空間設定部１１１は、自機オブジェクト、味方オブジェクト、敵オブジェクト、移動体、建物、球場、車、樹木、柱、壁、マップ（地形）などの表示物を表す各種オブジェクト（ポリゴン、自由曲面又はサブディビジョンサーフェスなどのプリミティブで構成されるオブジェクト）をオブジェクト空間に配置設定する処理を行う。すなわち、ワールド座標系でのオブジェクトの位置や回転角度（向き、方向と同義）を決定し、その位置（Ｘ、Ｙ、Ｚ）にその回転角度（Ｘ、Ｙ、Ｚ軸回りでの回転角度）でオブジェクトを配置する。
【００９０】
仮想カメラ制御部１１２は、オブジェクト空間内の所与（任意）の仮想カメラ（視点）から見える画像を生成するための仮想カメラの制御処理を行う。具体的には、仮想カメラの位置（Ｘ、Ｙ、Ｚ）又は回転角度（Ｘ、Ｙ、Ｚ軸回りでの回転角度）を制御する処理（視点位置、視線方向あるいは画角を制御する処理）を行う。また、画角を制御するようにしてもよい。
【００９１】
例えば、仮想カメラによりオブジェクト（例えば、自機オブジェクト、敵または味方オブジェクト、ボール、車）を後方から撮影する場合には、オブジェクトの位置又は回転の変化に仮想カメラが追従するように、仮想カメラの位置又は回転角度（仮想カメラの向き）を制御する。この場合には、移動・動作処理部１１３で得られたオブジェクトの位置、回転角度または速度などの情報に基づいて、仮想カメラを制御できる。
【００９２】
また、仮想カメラを、予め決められた回転角度で回転させること、または、予め決められた移動経路で移動させる制御を実行してもよい。この場合には、仮想カメラの位置（移動経路）または回転角度を特定するための仮想カメラデータに基づいて仮想カメラを制御する。
【００９３】
なお、仮想カメラ（視点）が複数存在する場合には、それぞれの仮想カメラについて上記の制御処理が行われる。
【００９４】
移動・動作処理部１１３は、モデル（自機オブジェクト、車、電車または飛行機等）の移動・動作演算（移動・動作シミュレーション）を行う。すなわち、操作部１６０によりプレーヤが入力した操作入力データ、サーバ装置２００から送信された他のゲーム端末装置１００の操作入力データ、プログラム（移動・動作アルゴリズム）、各種データ（モーションデータ）などに基づいて、モデルをオブジェクト空間内で移動させること、オブジェクトを動作（モーション、アニメーション）させることの各処理を行う。
【００９５】
具体的には、オブジェクトの移動情報（位置、回転角度、速度、または、加速度）及び動作情報（オブジェクトを構成する各パーツの位置、または、回転角度）を、１フレーム（１／６０秒）毎に順次求めるシミュレーション処理を行う。なお、フレームは、オブジェクトの移動・動作処理（シミュレーション処理）及び画像生成処理を行う時間の単位である。
【００９６】
特に、本実施形態の移動・動作処理部１１３は、サーバ装置２００から送信された、または、操作部１６０によって入力された操作入力データに基づいて、プレーヤの操作対象の自機オブジェクトを移動・動作させる処理を行う。
【００９７】
また、移動・動作処理部１１３は、後述する通信制御部１２０によって送信されたパケットに含まれる他のゲーム端末装置１００（他機）によって入力された操作入力データに基づいて、他機が使用する他のオブジェクト（敵または味方オブジェクト）を、自機を使用するプレーヤの操作対象となる自機オブジェクトと同一のオブジェクト空間（すなわち、ゲーム空間）において移動・動作させる処理を行うことができる。
【００９８】
すなわち、本実施形態の移動・動作処理部１１３は、サーバ装置２００から送信された各ゲーム端末装置１００における操作入力データに基づいて、自機オブジェクトを動作させる演算と、他機オブジェクトを動作させる演算を行う。
【００９９】
ネットワーク設定部１１４は、本実施形態の対戦ゲームシステム１０で必要となるネットワーク情報を取得し、管理する処理等を行う。特に、本実施形態のネットワーク設定部１１４は、同一のオブジェクト空間を共有してゲームを行う各ゲーム端末装置１００に個別に設定されるゲーム端末装置１００の識別情報（オンラインゲームに参加できるゲーム端末装置１００を識別するために個別に付与されたデータ）、及び、サーバ装置２００の識別情報に対応付けられたパケットの送信先を指定する宛先情報を取得し、管理する処理を行う。
【０１００】
通信制御部１２０は、サーバ装置２００に送信するパケットデータを生成する処理、受信したパケットデータに含まれる操作入力データを第２のバッファ１７８に記憶する処理、パケットロストの検出及びその復元を実行する処理、その他のパケットの送受信に関する制御処理等を行う。
【０１０１】
また、通信制御部１２０は、各ゲーム端末装置１００との接続が確立されてから接続が切断されるまで、パケットデータを互いに送受信する処理を行うことができる。なお、本実施形態の通信制御部１２０は、本発明の受信制御手段を構成する。
【０１０２】
通信制御部１２０には、各ゲーム端末装置１００に送信するパケットデータを生成するパケット生成部１２１と、パケットデータにおけるパケットロストを検出するパケットロスト検出部１２２と、パケットロストが検出された場合にロストされたパケットデータに含まれる操作入力データ群の復元を行うデータ復元部１２３と、が含まれる。
【０１０３】
なお、例えば、本実施形態のパケットロスト検出部１２２は、本発明の検出手段を構成し、データ復元部１２３は、本発明の復元手段を構成する。
【０１０４】
パケット生成部１２１は、サーバ装置２００との通信の確立、ゲームを開始する処理が実行されたとき、または、ゲームを終了する処理が実行されたときなどサーバ装置２００との必要なデータの授受を行う際に、及び、ゲーム中においてサーバ装置２００に操作入力データを送信する際に、各種のパケットデータを生成する処理を行う。
【０１０５】
また、パケット生成部１２１は、各パケットデータのヘッダーの送信先ＩＰアドレスと送信先ポート番号には、サーバ装置２００のＩＰアドレスと使用するポート番号を指定するとともに、ヘッダーの送信元のＩＰアドレスと送信元ポート番号に、自機のＩＰアドレスと使用するポート番号を指定し、データサイズ、チェックサムとともに、各種のゲームデータ（アプリケーションデータ）を有するパケットデータを生成する。
【０１０６】
特に、パケット生成部１２１は、操作入力データをサーバ装置２００に送信する際には、サーバ装置２００の制御の下、同一のゲーム空間を共有する各ゲーム端末装置１００に付され、サーバ装置２００において処理を行うために必要なＩＤ（以下、「セッションＩＤ」ともいう。）有し、入力された操作入力データを含むパケットデータを生成する。
【０１０７】
特に、本実施形態のパケット生成部１２１は、各操作入力データが個々に単独でプレーヤによって入力された操作入力であることが認識可能な操作入力データ（以下、「絶対値」または「絶対値情報」ともいう。）を含むパケットデータを生成する。
【０１０８】
例えば、パケット生成部１２１は、フレームレートが６０ｆｐｓである場合には、１／６０秒毎の操作入力データを２つ組みにして、１／３０秒毎に、セッションＩＤを付与しつつ、当該組された２つの操作入力データをパケットデータのペイロードに設定する。
【０１０９】
パケットロスト検出部１２２は、サーバ装置２００の制御の下、シーケンス処理の順序を示すシーケンスＩＤを認識しつつ、サーバ装置２００から送信されたパケットデータのパケットロストを検出し、データ復元部１２３は、パケットロストが検出された場合に、受信して第２のバッファ１７８に記憶されているパケットデータ（すなわち、操作入力データ群及び冗長データ）に基づいてパケットロストされたパケットデータに含まれる操作入力データ群を復元する。
【０１１０】
なお、本実施形態では、操作入力データ以外には、サーバ装置２００から配信された操作入力データの再送を要求するためのデータと、ゲーム中にプレーヤ同士で行われる交信（チャット）に必要な音声データその他のデータ（以下、「追加データ」という。）と、がパケットデータに含まれる場合がある。
【０１１１】
また、本実施形態においてゲーム端末装置１００において生成する操作入力データを有するパケットデータ及びサーバ装置２００から送信された操作入力データ群を有するパケットデータの詳細について後述する。
【０１１２】
画像生成部１３０は、処理部１０１で行われる種々の処理（ゲーム処理）の結果に基づいて描画処理を行い、これにより画像を生成し、表示部１９０に出力する。いわゆる３次元ゲーム画像を生成する場合には、まずオブジェクト（モデル）の各頂点の頂点データ（頂点の位置座標、テクスチャ座標、色データ、法線ベクトルまたはα値等）を含むオブジェクトデータ（モデルデータ）が入力され、入力されたオブジェクトデータ（モデルデータ）に含まれる頂点データに基づいて、頂点処理（頂点シェーダによるシェーディング）が行われる。
【０１１３】
頂点処理を行うに際して、必要に応じてポリゴンを再分割するための頂点生成処理（テッセレーション、曲面分割、ポリゴン分割）を行うようにしてもよい。頂点処理では、頂点処理プログラム（頂点シェーダプログラム、第１のシェーダプログラム）に従って、頂点の移動処理や、座標変換（ワールド座標変換、カメラ座標変換）、クリッピング処理、または、透視変換等のジオメトリ処理が行われ、その処理結果に基づいて、オブジェクトを構成する頂点群について与えられた頂点データを変更（更新、調整）する。そして、頂点処理後の頂点データに基づいてラスタライズ（走査変換）が行われ、ポリゴン（プリミティブ）の面とピクセルとが対応付けられる。
【０１１４】
そして、ラスタライズに続いて、画像を構成するピクセル（表示画面を構成するフラグメント）を描画するピクセル処理（ピクセルシェーダによるシェーディング、フラグメント処理）が行われる。ピクセル処理では、ピクセル処理プログラム（ピクセルシェーダプログラム、第２のシェーダプログラム）に従って、テクスチャの読出し（テクスチャマッピング）、色データの設定／変更、半透明合成、アンチエイリアス等の各種処理を行って、画像を構成するピクセルの最終的な描画色を決定し、透視変換されたオブジェクトの描画色を記憶部１７０（ピクセル単位で画像情報を記憶できるバッファ。ＶＲＡＭ、レンダリングターゲット）に出力（描画）する。
【０１１５】
ピクセル処理では、画像情報（色、法線、輝度、α値等）をピクセル単位で設定または変更するパーピクセル処理を行う。これにより、オブジェクト空間内において仮想カメラ（所与の視点）から見える画像が生成される。なお、仮想カメラ（視点）が複数存在する場合には、それぞれの仮想カメラから見える画像を分割画像として１画面に表示できるように画像を生成することができる。
【０１１６】
頂点処理やピクセル処理は、シェーディング言語によって記述されたシェーダプログラムによって、ポリゴン（プリミティブ）の描画処理をプログラム可能にするハードウェア、いわゆるプログラマブルシェーダ（頂点シェーダやピクセルシェーダ）により実現される。プログラマブルシェーダでは、頂点単位の処理やピクセル単位の処理がプログ ラム可能になることで描画処理内容の自由度が高く、従来のハードウェアによる固定的な描画処理に比べて表現力を大幅に向上させることができる。
【０１１７】
そして、画像生成部１３０は、オブジェクトを描画する際に、ジオメトリ処理、テクスチャマッピング、隠面消去処理、αブレンディング等を行う。
【０１１８】
ジオメトリ処理では、オブジェクトに対して、座標変換、クリッピング処理、透視投影変換、或いは光源計算等の処理が行われる。そして、ジオメトリ処理後（透視投影変換後）のオブジェクトデータ（オブジェクトの頂点の位置座標、テクスチャ座標、色データ（輝度データ）、法線ベクトル、或いはα値等）は、記憶部１７０に記憶される。
【０１１９】
テクスチャマッピングは、記憶部１７０に記憶されるテクスチャ（テクセル値）をオブジェクトにマッピングするための処理である。具体的には、オブジェクトの頂点に設定（付与）されるテクスチャ座標等を用いて記憶部１７０からテクスチャ（色（ＲＧＢ）、α値などの表面プロパティ）を読み出す。そして、２次元の画像であるテクスチャをオブジェクトにマッピングする。この場合に、ピクセルとテクセルとを対応づける処理や、テクセルの補間としてバイリニア補間などを行う。
【０１２０】
隠面消去処理としては、描画ピクセルのＺ値（奥行き情報）が入力されるＺバッファ（奥行きバッファ）を用いたＺバッファ法（奥行き比較法、Ｚテスト）による隠面消去処理を行うことができる。すなわちオブジェクトのプリミティブに対応する描画ピクセルを描画する際に、Ｚバッファに入力されるＺ値を参照する。そして参照されたＺバッファのＺ値と、プリミティブの描画ピクセルでのＺ値とを比較し、描画ピクセルでのＺ値が、仮想カメラから見て手前側となるＺ値（例えば小さなＺ値）である場合には、その描画ピクセルの描画処理を行うとともにＺバッファのＺ値を新たなＺ値に更新する。
【０１２１】
αブレンディング（α合成）は、α値（Ａ値）に基づく半透明合成処理（通常αブレンディング、加算αブレンディング又は減算αブレンディング等）のことである。
【０１２２】
なお、α値は、各ピクセル（テクセル、ドット）に関連づけて記憶できる情報であり、例えば色情報以外のプラスアルファの情報である。α値は、マスク情報、半透明度（透明度、不透明度と等価）、バンプ情報などとして出力できる。
【０１２３】
音生成部１４０は、処理部１０１で行われる種々の処理の結果に基づいて音処理を行い、ＢＧＭ、効果音、又は音声などのゲーム音を生成し、音出力部１９２に出力する。
【０１２４】
３．サーバ装置
次に、図３を用いて本実施形態におけるサーバ装置２００の構成について説明する。なお、図３は、本実施形態のサーバ装置２００の構成を示す構成図である。また、本実施形態のサーバ装置２００は、図３の構成に限定されず、その一部の構成要素を省略すること、他の構成要素を追加するなどの種々の変形実施が可能である。
【０１２５】
サーバ用記憶部２１０は、管理・制御部２０１及び通信のワーク領域となるもので、その機能はＲＡＭ（ＤＲＡＭ）などにより実現できる。そしてゲームプログラム及び操作入力データを含む各種のゲームデータは、このサーバ用記憶部２１０に保持される。
【０１２６】
サーバ用通信部２２０は、有線及び無線のネットワークを介して外部（他のゲーム端末装置１００）との間で通信を行うものであり、その機能は、通信用ＡＳＩＣまたは通信用プロセッサなどのハードウェアまたは通信用ファームウェアにより実現できる。
【０１２７】
管理・制御部２０１（プロセッサ）は、各サーバ装置２００から送信された各操作入力データの配信管理を行うとともに、同一のオブジェクト空間において実行されているゲームを管理する。
【０１２８】
管理・制御部２０１は、サーバ用記憶部２１０をワーク領域として各種処理を行う。この管理・制御部２０１の機能は、各種プロセッサ（ＣＰＵ、ＧＰＵ等）、ＡＳＩＣ（ゲートアレイ等）などのハードウェア及び／またはプログラムにより実現できる。
【０１２９】
管理・制御部２０１は、ゲーム実行管理部２０２、ネットワーク管理部２０３、及び、通信管理制御部２０４を含む。なお、これらの一部を省略する構成としてもよい。
【０１３０】
ゲーム実行管理部２０２は、同一のゲーム空間を共有するためのゲーム端末装置１００のマッチング、各ゲーム端末装置１００とのデータの授受を行うために、同一のゲーム空間を共有するゲーム端末装置１００毎に設定するＩＤ（すなわち、セッションＩＤ）の管理、各ゲーム端末装置１００から送信されたまたは各ゲーム端末装置１００に配信するデータの管理、マッチング及びセッションＩＤに基づいて実行されるゲームの管理（各種のゲーム処理におけるシーケンスを管理）など、ネットワークを介して同一のゲーム空間を共有する複数のゲーム端末装置１００の管理と当該ゲームの実行に伴う各ゲーム端末装置１００の管理を行う。
【０１３１】
特に、ゲーム実行管理部２０２は、各ゲーム端末装置１００間とのデータ管理をも行うようになっており、受信した各ゲーム端末装置１００から送信された絶対値としての操作入力データから、各ゲーム端末装置１００における各受信した操作入力データについて、前回の操作入力データからの差分の情報（以下、「差分情報」ともいう。）を認識し、当該認識した差分情報を操作入力データとしてパケット生成管理部２０５に出力する。
【０１３２】
ネットワーク管理部２０３は、本実施形態の対戦ゲームシステム１０で必要となるネットワーク情報を取得して各ゲーム端末装置１００を管理する処理等を行う。特に、本実施形態のネットワーク管理部２０３は、同一のオブジェクト空間を共有してゲームを行う各ゲーム端末装置１００に個別に設定されるゲーム端末装置１００の識別情報（オンラインゲームに参加できるゲーム端末装置１００を識別するために個別に付与されたデータ）に対応付けられたパケットの送信先を指定する宛先情報を取得し、管理する処理を行う。
【０１３３】
通信管理制御部２０４は、各ゲーム端末装置１００に送信するパケットデータを生成する処理、受信したパケットデータに含まれる操作入力データをサーバ用記憶部２１０に記憶する処理、及び、その他のパケットの送受信に関する制御処理等を行う。
【０１３４】
また、通信管理制御部２０４は、各ゲーム端末装置１００との接続が確立されてから接続が切断されるまで、パケットデータを互いに送受信する処理を行うことができる。
【０１３５】
この通信管理制御部２０４には、各ゲーム端末装置１００に送信するパケットデータの生成及び送信管理を行うパケット生成管理部２０５を含む。なお、本実施形態のパケット生成管理部２０５は、本発明の生成手段、配信制御手段及び記憶制御手段を構成する。
【０１３６】
パケット生成管理部２０５は、同一のゲーム空間において複数のゲーム端末装置１００を連動させるために、ゲーム実行管理部２０２によって管理されるゲームの進行に伴って発行されるシーケンスＩＤに基づいて、各ゲーム端末装置１００に送信するためのパケットデータの生成を行う。
【０１３７】
具体的には、パケット生成管理部２０５は、各パケットデータのヘッダーの送信先ＩＰアドレスと送信先ポート番号には、各ゲーム端末装置１００のＩＰアドレスと使用するポート番号を指定するとともに、ヘッダーの送信元のＩＰアドレスと送信元ポート番号に、サーバ装置２００のＩＰアドレスと使用するポート番号を指定し、データサイズ、チェックサムとともに、各種のゲームデータ（アプリケーションデータ）を有するパケットデータを生成する。
【０１３８】
特に、パケット生成管理部２０５は、各ゲーム端末装置１００との通信の確立、ゲームを開始する処理が実行されたとき、または、ゲームを終了する処理が実行されたときなど、各ゲーム端末装置１００との必要なデータの授受を行う際に、及び、ゲーム中において各ゲーム端末装置１００から送信された操作入力データを受信するとともに、受信した各操作入力データを所定のタイミング毎に操作入力データ群を有するパケットデータとして各ゲーム端末装置１００に配信する。
【０１３９】
具体的には、パケット生成管理部２０５は、各パケットデータに設定する冗長データを生成しつつ、所定のフレームレートに応じて、生成した冗長データと受信した各ゲーム端末装置１００における操作入力データ群とを有するパケットデータを生成し、生成したパケットデータを各ゲーム端末装置１００に配信するとともに、送信した各パケットデータの操作入力データ群をシーケンスＩＤとともにサーバ用記憶部２１０に記憶する。
【０１４０】
例えば、パケット生成管理部２０５は、フレームレートが６０ｆｐｓである場合には、１／６０秒毎の各ゲーム端末装置１００の操作入力データ群を２つ組みにして、１／３０秒毎に、配信される順番、すなわち、シーケンスＩＤを付与しつつ、同一のゲーム空間を共有する各ゲーム端末装置１００における当該組された２つの操作入力データ群と冗長データをパケットデータのペイロードに設定する。
【０１４１】
なお、本実施形態では、操作入力データ群を有するパケットデータには、各ゲーム端末装置１００から再送が要求された操作入力データを示す再送データと、各ゲーム端末装置１００から送信された追加データと、がパケットデータに含まれる場合もある。
【０１４２】
また、本実施形態において用いる操作入力データ群を有するパケットデータ、冗長データの生成原理、パケットロストの検出処理、及び、パケットロストされたパケットデータ（具体的には操作入力データ群）の復元処理については後述する。
【０１４３】
４．操作入力データを有するパケットデータのデータ構造
４．１  各ゲーム端末装置からサーバ装置に送信されるパケットデータ
【０１４４】
次に、図４を用いて各ゲーム端末装置１００からサーバ装置２００に送信される操作入力データを有するパケットデータについて説明する。なお、図４は、各ゲーム端末装置１００からサーバ装置２００に送信される操作入力データを有するパケットデータの構造を示す構造図の一例である。
【０１４５】
このパケットデータは、各ゲーム端末装置１００からサーバ装置２００に送信されるデータであって、単一のゲーム端末装置１００における操作入力データを有している。
【０１４６】
具体的には、このパケットデータには、図４に示すように、同一のゲーム空間を共有するゲーム装置のうちの自機に設定され、サーバ装置２００において処理を行うために設定されたセッションＩＤと、再送要求の項目数を示す再送要求項目数を示す情報と、追加される追加データのサイズを示す追加データサイズの情報と、１フレーム目の操作入力データ及び２フレーム目の操作入力データの２つの操作入力データと、追加データの内容を示す追加データと、再送が必要なシーケンスＩＤが示される再送要求データと、が含まれる。
【０１４７】
なお、追加データと再送要求データは、オプションとしてのデータであり、パケット生成部１２１の制御の下、各データの追加が判断される。
【０１４８】
操作入力データとしては、図４に示すように、オンラインを示すフラグ情報（以下、「オンラインフラグ情報」という。）の他に、操作レバーや操作ペダルのアナログ入力値、及び、ボタンやトリガーなど各種スイッチのオン／オフ情報が含まれる。
【０１４９】
なお、本実施形態の各操作入力データは、固定長のフルサイズの絶対値で示されたデータであり、前フレームからの差分を示すデータではない。ただし、各操作入力データは、このような差分データであってもよい。
【０１５０】
また、このパケットデータには、冗長データが含まれていないが、サーバ装置２００から配信されるパケットデータと同様に、他の操作入力データに基づいて生成される冗長データを含むように構成してもよい。
【０１５１】
４．２  サーバ装置２００から各ゲーム端末装置１００に配信されるパケットデータ
次に、図５を用いてサーバ装置２００からに送信されるパケットデータについて説明する。なお、図５は、各ゲーム端末装置１００からサーバ装置２００に送信されるパケットデータの構造を示す構造図の一例である。
【０１５２】
このパケットデータは、サーバ装置２００から各ゲーム端末装置１００に送信されるデータであって、各ゲーム端末装置１００の全てにおける所定のタイミングの操作入力データ、すなわち、操作入力データ群を有している。
【０１５３】
また、パケットデータに含まれる操作入力データ群は、データ量を削減するために、固定長のフルサイズの絶対値で示されたデータではなく、前フレームとの差分を示す差分データとして配信される。
【０１５４】
具体的には、パケットデータには、図４に示すように、ゲーム空間を共有する全てのゲーム端末装置１００における操作入力データが含まれ、ゲームシーケンスに沿って提供される。
【０１５５】
また、パケットデータには、ゲームシーケンスのＩＤを示すシーケンスＩＤとともに、データヘッダと、第１フレーム及び第２フレームの更新情報を特定するためのそれぞれのフラグ情報（以下、「第１フレームフラグ情報」及び「第２フレームフラグ情報」という。）と、第１フレーム及び第２フレームの差分情報による操作入力データ（以下、「第１フレーム操作入力データ」及び「第２フレーム操作入力データ」という。）と、追加データと、後述するように生成された冗長データと、ゲーム端末装置１００からの要求に対する再送データ（操作入力データ群）と、が含まれる。
【０１５６】
データヘッダには、各フレームにおける操作入力データの更新の有無を示す情報、追加データのサイズを示す情報、冗長データのサイズを示す。
【０１５７】
操作入力データ群には、上述のゲーム端末装置１００から送信されるパケットデータと同様の各操作に関する情報が含まれるが、これらの情報は、前フレームとの差分情報として設定される。また、操作入力データ群には、データ自体の更新がなければ、該当するデータは含まれない。
【０１５８】
なお、追加データと再送データは、オプションとしてのデータであり、パケット生成管理部の制御の下、各データの追加が判断される。
【０１５９】
５．本実施形態の手法
５．１  冗長データの生成原理とパケットロストの復元原理
次に、本実施形態において用いられるパケットデータに含まれる冗長データの生成原理とパケットロストの復元原理について説明する。
【０１６０】
５．１．１  冗長データの生成原理における第１の特徴（基本的特徴）
まず、本実施形態における冗長データの生成原理における第１の特徴（基本的特徴）について説明する。
【０１６１】
本実施形態のサーバ装置２００は、上述のように、各ゲーム端末装置１００において、自機及び他機のアプリケーションデータに基づいてリアルタイム処理を実行させるために、ＵＤＰプロトコルなどの無手順方式に従いつつ、パケットロストに対する耐性を強化したパケットデータを当該アプリケーションデータの授受に用いる。
【０１６２】
具体的には、サーバ装置２００は、アプリケーションデータ（実データ）としての操作入力データを配信する際に、各パケットデータにそれぞれ設定される冗長データを生成するとともに、上述のように、各ゲーム端末装置１００の操作入力データ群と冗長データを含むパケットデータを生成し、当該生成したパケットデータの各ゲーム端末装置１００への配信を制御する。そして、サーバ装置２００は、配信する一のパケットデータに含まれる各ゲーム端末装置１００の操作入力データ群を、シーケンスＩＤ毎に保持しつつ順次サーバ用記憶部２１０に記憶する。
【０１６３】
特に、サーバ装置２００は、シーケンスＩＤ毎にサーバ用記憶部２１０に記憶された複数の操作入力データ群の中から、生成される冗長データが設定されるパケットデータよりも過去に配信されたパケットデータに含まれる３以上の操作入力データ群を特定し、特定した操作入力データ群について排他的論理和の演算を実行し、該当するパケットデータにおける冗長データを生成する。
【０１６４】
このとき、排他的論理和の演算に用いる３以上の操作入力データ群には、当該３以上の操作入力データ群における他の操作入力データ群とは、シーケンスＩＤが不連続となる少なくとも１の操作入力データ群が含まれる。
【０１６５】
通常、各パケットデータに他のパケットデータまたは当該他のパケットデータに含まれるアプリケーションデータに基づいて生成された冗長データが含まれている場合には、パケットロストされたデータを用いて生成された冗長データと、当該冗長データの生成に用いたパケットロストされたデータ以外のアプリケーションデータと、に基づいてパケットロストされたアプリケーションデータを復元することができる。
【０１６６】
例えば、異なる３つのパケットデータにそれぞれ含まれるアプリケーションデータについて排他的論理和の演算を行うことによって冗長データが生成されている場合であって、パケットロストされたパケットデータに含まれるアプリケーションデータ（以下、単に「パケットロストされたアプリケーションデータ」ともいう。）を復元する場合には、パケットロストされたアプリケーションデータを用いて生成された冗長データと、当該パケットロストされたパケットデータ以外の２つのパケットデータに含まれるアプリケーションデータと、について排他的論理和の演算を行うことによって当該パケットロストされたアプリケーションデータが復元されることになる。
【０１６７】
このとき、２つのアプリケーションデータがゲーム端末装置１００などの受信装置において受信されれば、該当する冗長データを受信後に迅速にパケットロストされたアプリケーションデータを復元することができる。
【０１６８】
また、当該冗長データについてもパケットロストが発生した後に迅速に取得することができれば、パケットロストされたアプリケーションデータを復元するまでの時間を更に短縮することができる。
【０１６９】
したがって、パケットロストされたアプリケーションデータを確実に、かつ、迅速に復元するためには、当該パケットロストされたパケットデータ以外の２つのパケットデータに含まれるアプリケーションデータを確実に受信させておくこと、及び、受信装置において冗長データを迅速に取得することが重要となる。
【０１７０】
また、冗長データが、多くのアプリケーションデータに基づいて生成されていると、パケットロストされたアプリケーションデータを復元させるための計算方法（計算パターン）も多く存在することになり、連続してパケットロストが発生した場合であっても、アプリケーションデータを復元させることができる可能性が極めて高くなる。
【０１７１】
そこで、本実施形態においては、上述のように、冗長データの生成に用いる３以上のアプリケーションデータとしての複数の操作入力データ群を用いるとともに、かつ、冗長データの生成に用いる操作入力データ群（以下、「冗長データ生成用操作入力データ群」という。）において他の冗長データ用操作入力データとシーケンスＩＤ（すなわち、配信順）が不連続となる操作入力データ群（以下、「冗長データ生成用離隔操作入力データ群」という。）を用いている。
【０１７２】
すなわち、本実施形態においては、冗長データを多くの構成要素から構成させつつ、かつ、当該構成要素の一部を他の構成要素から離隔させること、すなわち、冗長データを構成するアプリケーションデータを分散して提供させることによって、連続してパケットロストが発生した場合であっても、受信装置において分散されて提供させ、確実に受信された操作入力データ群を復元に用いることができるようになっている。
【０１７３】
特に、本実施形態においては、パケットロストされたパケットデータに設定された冗長データの生成時に用いられた操作入力データ群は、パケットロストされた際には原則的に既にゲーム端末装置１００において受信されているので、パケットロスト直後のパケットデータに設定された冗長データによって当該パケットロストされた操作入力データ群を復元することができるようになっている。
【０１７４】
したがって、本実施形態においては、受信済みのパケットデータによってパケットロストされた操作入力データ群の復元を確実に行うことができるので、パケットロストされた操作入力データ群の再送要求をサーバ装置２００に実行することなく、かつ、それに伴ってパケットロストされた操作入力データ群の受信を待つ必要がないので、リアルタイム処理などの迅速な処理が要求されるゲーム処理を適切に実行させることができるようになっている。
【０１７５】
５．１．２  冗長データの生成原理における第２の特徴
次に、本実施形態における冗長データの生成原理における第２の特徴について説明する。
【０１７６】
本実施形態においては、排他的論理和の演算に用いるｍ個の操作入力データ群には、シーケンスＩＤが連続しているｎ（２≦ｎ＜ｍ）個の操作入力データ群（すなわち、連続したシーケンスＩＤを有するパケットデータに含まれる操作入力データ群）が含まれている。
【０１７７】
通常、生成された冗長データにおいて、全ての冗長データ生成用操作入力データ群が他の冗長データ生成用操作入力データのシーケンスＩＤが離隔している場合には、２またはそれ以上のパケットロストが連続して発生した場合に、多くの冗長データによってそれぞれのパケットロストされた操作入力データ群を復元させなければならい。
【０１７８】
例えば、
（Ａ）冗長データが設定されるパケットデータ（基準パケットデータ）の１つ前、３つ前及び５つ前のパケットデータに含まれる操作入力データ群の３つの操作入力データ群に基づいて冗長データを生成する場合（以下、「（Ａ）条件」という。）と、
（Ｂ）冗長データが設定される基準パケットデータの１つ前、２つ前及び５つ前のパケットデータに含まれる操作入力データ群の３つの操作入力データ群に基づいて冗長データを生成する場合（以下、「（Ｂ）条件」という。）と、
を比較すると、ゲーム端末装置１００などの受信装置によって基準パケットデータの３つ前から５つ前の３つ操作入力データ群が連続してパケットロストした場合には、（Ｂ）条件の場合に比べて、（Ａ）条件の方が、パケットロストされた操作入力データ群を復元するためには、パケットロストがされてから復元するまで時間は、長時間となる。
【０１７９】
すなわち、（Ｂ）条件においては、基準パケットデータの冗長データによってのみ復元可能であるのに比べて、（Ａ）条件においては、当該基準パケットデータだけでなく、他の基準パケットデータによって３つ前または５つ前の操作入力データ群を復元しつつ、当該基準パケットデータによって５つ前または３つ前の操作入力データ群を復元しなければならず、連続してパケットロストされた全ての操作入力データ群を復元するための時間は。長時間となる。
【０１８０】
なお、この場合であって後者（Ｂ）条件において、基準パケットデータの１つ前、４つ前及び５つ前のパケットデータに含まれる操作入力データ群の３つの操作入力データ群に基づいて冗長データを生成する場合と比べても、（Ａ）条件の場合には、連続してパケットロストされた全ての操作入力データを復元するための時間は、長時間となる。
【０１８１】
そこで、本実施形態では、冗長データ生成用操作入力データに、シーケンスＩＤが連続している操作入力データを含ませることによって、連続したパケットロストへの耐性を向上させつつ、パケットロストされた実データにおける復元の容易性及び迅速性をバランスよく実現することができる。
【０１８２】
５．１．３  冗長データの生成原理における第３の特徴
次に、本実施形態における冗長データの生成原理における第３の特徴について説明する。
【０１８３】
本実施形態においては、ｍ個の冗長データ生成用操作入力データ群において、冗長データ生成用離隔操作入力データ群のシーケンスＩＤ（α１）と、シーケンスＩＤが連続する他の冗長データ生成用操作入力データ群のうち最新のシーケンスＩＤ（αｎｅｗ２）または最先のシーケンスＩＤ（αｏｌｄ２）と、については、下記の（式１）または（式２）の何れかの関係を有している。
【０１８４】
α１  ＝  αｎｅｗ２＋（ｎ＋１）      ・・・（式１）
【０１８５】
α１  ＝  αｏｌｄ２−（ｎ＋１）      ・・・（式２）
【０１８６】
すなわち、本実施形態においては、冗長データ生成用離隔操作入力データ群として、最新の冗長データ生成用操作入力データ群または最先の冗長データ生成用操作入力データ群とｎ＋１以上離れた冗長データ生成用操作入力データ群を用いている。
【０１８７】
例えば、上述のように、冗長データが設定される基準パケットデータの１つ前、２つ前及び５つ前のパケットデータに含まれる３つの操作入力データ群に基づいて冗長データを生成する場合には、５個前のパケットデータに含まれる操作入力データ群が冗長データ生成用離隔操作入力データ群（α１）であり、２個前のパケットデータに含まれる操作入力データ群が、シーケンスＩＤが連続する他の冗長データ生成用操作入力データ群のうち最先のシーケンスＩＤ（αｏｌｄ２）である。
【０１８８】
すなわち、この場合においては、当該基準パケットデータの１個前及び２個前のパケットデータに含まれる操作入力データ群によって、連続する他の冗長データ生成用操作入力データ群が「ｎ＝２」となり、５個前のパケットデータに含まれる操作入力データ群と２個前のパケットデータに含まれる操作入力データ群とは、パケットデータとして「３」個離隔されている。
【０１８９】
また、ゲーム端末装置１００などの受信装置においては、パケットロストされた操作入力データ群を復元する際に特定された少なくとも１の操作入力データ群が含まれるパケットデータの配信順Ｐ１と、当該復元をする際に特定された冗長データを含むパケットデータの配信順Ｐ２とについては、下記の（式３）の関係を有することになる。
【０１９０】
Ｐ１＝Ｐ２±（ｍ＋ｎ）        ・・・（式３）
【０１９１】
例えば、冗長データが設定される基準パケットデータの１つ前、２つ前及び５つ前のパケットデータに含まれる３つの操作入力データ群に基づいて冗長データを生成する場合には、基準パケットデータに含まれる冗長データのシーケンスＩＤと当該冗長データを基準に冗長データ生成用離隔操作入力データ群に該当する操作入力データ群とは、（式３）に示されるように、シーケンスＩＤとして「５」離隔されている。
【０１９２】
したがって、後述するようにゲーム端末装置１００などの受信装置によって連続して２つのパケットデータがパケットロストした場合にあっては、連続してパケットロストされた直後のパケットデータの冗長データと操作入力データ群、当該パケットデータの次に受信されたパケットデータにおける冗長データ、及び、パケットロストされたパケットデータの前に既に受信していた２つの操作入力データ群に基づいて、パケットロストされた操作入力データの復元を行うことができるようになっている（図８参照）。
【０１９３】
このような特徴を有することによって、ｎ個連続してパケットロストが発生した場合であっても、当該冗長データ生成用離隔操作入力データについてはパケットロストされずに確実に受信装置に受信させることができるようになっており、復元に用いる実データを的確に確保させて連続したパケットロストへの耐性を向上させることができるようになっている。
【０１９４】
５．１．４  冗長データの生成原理における第４の特徴
次に、本実施形態における冗長データの生成原理における第４の特徴について説明する。
【０１９５】
冗長データ生成用操作入力データには、冗長データが設定されるパケットデータの直前に配信された操作入力データ群が含まれる。
【０１９６】
すなわち、ゲーム端末装置１００などの受信装置において、復元する操作入力データ群を復元する際に特定された冗長データが含まれるパケットデータが、パケットロストされたパケットデータの配信後（具体的には、配信直後）のシーケンスＩＤを有している。
【０１９７】
このため、受信装置においてパケットロストが発生した場合に、当該パケットロストされた操作入力データ群を用いて生成された冗長データを迅速に取得することができるので、迅速にパケットロストされた操作入力データ群を復元することができるようになっている。
【０１９８】
そして、上述の各条件を具備する冗長データ生成用操作入力データ群としては、３（ｍ＝３）個の操作入力データ群を用いるとともに、２（ｎ＝２）個のシーケンスＩＤが連続した操作入力データ群を用いるようになっており、例えば、冗長データが含まれるパケットデータを基準に、１個前、２個前及び５個前の操作入力データ群を用いている。
【０１９９】
本実施形態においては、このような冗長データ生成用操作入力データ群を用いることによって、連続したパケットロストへの耐性の向上と、パケットロストされた実データにおける復元の容易性及び迅速性とのバランスが優れた冗長データを有するパケットデータをゲーム端末装置１００などの受信装置に提供することができるようになっている。
【０２００】
５．２  具体例
５．２．１  冗長データの具体例
次に、図６を用いて本実施形態において生成される冗長データの具体例について説明する。なお、図６は、本実施形態において生成される冗長データの一例であって、その構造を示す図である。
【０２０１】
パケット生成管理部２０５は、上述するように、各パケットデータを生成する際に、パケットデータに含まれる操作入力データ群を、シーケンスＩＤ（すなわち、配信順の情報）を保持しつつ、サーバ用記憶部２１０に順次記憶し、当該記憶された複数の操作入力データ群に基づいて所定の演算を実行して各冗長データを生成するようになっている。
【０２０２】
特に、パケット生成管理部２０５は、冗長データを設定する基準パケットデータの１個前、２個前及び５個前のパケットデータに含まれる操作入力データ群について排他論理和の演算を実行し、当該基準パケットデータに含ませるべき冗長データを生成する。
【０２０３】
なお、シーケンスＩＤ毎の各操作入力データ群は、前フレームからの差分値によって示される情報であるため、排他的論理和の演算を実行する際に、データ長が同一とならず、異なる場合もある。そこで、パケット生成管理部２０５は、冗長データを設定する基準パケットデータの１個前、２個前及び５個前のパケットデータに含まれる操作入力データ群について排他論理和の演算を実行する際に、データ長の短い操作入力データ群については、「０」を追加することによって、データ長を揃えつつ、当該排他的論理和を実行する。
【０２０４】
例えば、本実施形態のサーバ装置２００におけるパケット生成管理部２０５は、図６に示すように、所定の期間においては、操作入力データＡ〜Ｌと冗長データＰａ〜Ｐｌとを含む第１パケットデータ５００−１〜第１２パケットデータ５００−１２を順次生成し、各ゲーム端末装置１００に配信する。
【０２０５】
このような場合において、例えば、パケット生成管理部２０５は、第６パケットデータ５００−６を生成する場合には、当該第６パケットデータ５００−６を基準に５個前のパケットデータ５００−１に含まれる操作入力データ群Ａと、２個前のパケットデータ５００−４に含まれる操作入力データ群Ｄと、について排他的論理和を演算しつつ、当該排他的論理和の演算結果と、１個前のパケットデータ５００−５に含まれる操作入力データ群Ｅと、について排他的論理和を演算し、冗長データＰｆを生成する。
【０２０６】
５．２．２  冗長データに基づくパケットロストの復元例
次に、図７〜図１０の各図を用いて本実施形態のサーバ装置２００において生成されるパケットデータに含まれる冗長データの復元例について説明する。図７〜図１０は、本実施形態のサーバ装置において生成されるパケットデータに含まれる冗長データの復元処理について説明するための図である。
【０２０７】
各ゲーム端末装置１００は、図６に示すようなパケットデータを受信し、当該受信したパケットデータに基づいて、サーバ装置２００から配信された際のシーケンスＩＤを認識しつつ、未受信のパケットデータ（すなわち、パケットロスト）を検出するパケットロスト検出部１２２と、未受信のパケットデータが検出された場合に、未受信パケットデータのシーケンスＩＤを基準に、ｍ個の受信したパケットデータにそれぞれ含まれる少なくとも１の冗長データと２以上の操作入力データ群を特定し、当該特定した冗長データ及び操作入力データ群について排他的論理和の演算を実行し、未受信のパケットデータに含まれる操作入力データ群を復元するデータ復元部１２３と、を有している。
【０２０８】
また、各ゲーム端末装置１００は、シーケンスＩＤを維持しつつ、受信したパケットデータが記憶される第２のバッファ１７８と、を有している、
【０２０９】
（単一のパケットデータがパケットロストした場合）
例えば、パケットロスト検出部１２２が、図６に示すように、生成されたパケットデータを受信する場合であって、第５パケットデータが未受信のパケットデータ（すなわち、パケットロスト）であると検出した場合には、データ復元部１２３は、図７に示すように、第５パケットデータの次のシーケンスＩＤを有する第６パケットデータの冗長データＰｆと、当該冗長データＰｆの生成時に用いられ、パケットロストされたパケットデータ以外のパケットデータ、すなわち、第１パケットデータ及び第４パケットデータに含まれる操作入力データ群Ａ及びＤを第２のバッファ１７８から特定する。
【０２１０】
そして、データ復元部１２３は、冗長データＰｆと操作入力データ群Ａとの排他的論理和を演算しつつ、その結果と操作入力データ群Ｄとの排他的論理和を演算し、第５パケットデータに含まれる操作入力データ群Ｅを復元する。
【０２１１】
なお、この場合において、１／３０秒ごとにパケットデータが配信されているとすると、データ復元による受信遅延は、１／３０秒となる。
【０２１２】
（連続した２のパケットデータがパケットロストした場合）
例えば、パケットロスト検出部１２２が、図６に示すように、生成されたパケットデータを受信する場合であって、第５パケットデータ及び第６パケットデータのシーケンスＩＤが連続した２のパケットデータがパケットロストであると検出した場合には、データ復元部１２３は、図８に示すように、第６パケットデータの次の２つのシーケンスＩＤを有する第７パケットデータ及び第８の冗長データＰｇ及びＰｈと、当該冗長データＰｇ及びＰｈの生成時に用いられた、パケットロストされたパケットデータ以外のパケットデータ、すなわち、第２パケットデータ、第３パケットデータ及び第７パケットデータに含まれる操作入力データ群Ｂ、Ｃ及びＧを第２のバッファから特定する。
【０２１３】
そして、データ復元部１２３は、第５パケットデータ及び第６パケットデータに含まれる操作入力データ群Ｅ及びＦを復元する。
【０２１４】
具体的には、まず、データ復元部１２３は、冗長データＰｈと操作入力データ群Ｃとの排他的論理和を演算しつつ、その結果と操作入力データ群Ｇとの排他的論理和を演算し、第６パケットデータに含まれる操作入力データ群Ｆを復元する。
【０２１５】
そして、データ復元部１２３は、冗長データＰｇと操作入力データ群Ｂとの排他的論理和を演算しつつ、その結果と復元した操作入力データ群Ｇとの排他的論理和を演算し、第６パケットデータに含まれる操作入力データ群Ｆを復元する。
【０２１６】
なお、この場合において、１／３０秒ごとにパケットデータが配信されているとすると、データ復元による受信遅延は、３／３０秒となる。
【０２１７】
（連続した３のパケットデータがパケットロストした場合）
例えば、パケットロスト検出部１２２が、図６に示すように、生成されたパケットデータを受信する場合であって、第５パケットデータ〜第７パケットデータのシーケンスＩＤが連続する３つのパケットデータがパケットロストであると検出した場合には、データ復元部１２３は、図９に示すように、第７パケットデータの次の３つのシーケンスＩＤを有する第８パケットデータ〜第１０パケットデータの冗長データＰｈ、Ｐｉ及びＰｊと、当該冗長データＰｈ、Ｐｉ及びＰｊの生成時に用いられた、パケットロストされたパケットデータ以外のパケットデータ、すなわち、第３パケットデータ及び第４パケットデータと第８パケットデータ及び第９パケットデータとに含まれる操作入力データ群Ｃ、Ｄ、Ｈ及びＩを第２のバッファ１７８から特定する。
【０２１８】
そして、データ復元部１２３は、第５パケットデータ〜第７パケットデータに含まれる操作入力データ群Ｅ、Ｆ及びＧを復元する。
【０２１９】
具体的には、まず、データ復元部１２３は、冗長データＰｉと操作入力データ群Ｄとの排他的論理和を演算しつつ、その結果と操作入力データ群Ｈとの排他的論理和を演算し、第７パケットデータに含まれる操作入力データ群Ｇを復元する。
【０２２０】
次に、データ復元部１２３は、冗長データＰｈと操作入力データ群Ｃとの排他的論理和を演算しつつ、その結果と復元された操作入力データ群Ｇとの排他的論理和を演算し、第６パケットデータに含まれる操作入力データ群Ｆを復元する。
【０２２１】
そして、データ復元部１２３は、冗長データＰｉと操作入力データ群Ｈとの排他的論理和を演算しつつ、その結果と操作入力データ群Ｉとの排他的論理和を演算し、第５パケットデータに含まれる操作入力データ群Ｅを復元する。
【０２２２】
なお、この場合において、１／３０秒毎にパケットデータが配信されているとすると、データ復元による受信遅延は、５／３０秒となる。
【０２２３】
（連続した４のパケットデータうち３のパケットデータがパケットロストした場合）
例えば、パケットロスト検出部１２２が、図６に示すように、生成されたパケットデータを受信する場合であって、第５パケットデータ、第６パケットデータ及び第８パケットデータがパケットロストであると検出した場合には、データ復元部１２３は、図９に示すように、第７パケットデータ、第９パケットデータ及び第１０パケットデータの冗長データＰｇ、Ｐｉ及びＰｊと、当該冗長データＰｇ、Ｐｉ及びＰｊの生成時に用いられた、パケットロストされたパケットデータ以外のパケットデータ、すなわち、第２パケットデータ、第４パケットデータ、第７パケットデータ及び第９パケットデータに含まれる操作入力データ群Ｂ、Ｄ、Ｇ及びＩを記憶部から特定する。
【０２２４】
そして、データ復元部１２３は、第５パケットデータ、第６パケットデータ及び第８パケットデータに含まれる操作入力データ群Ｅ、Ｆ及びＨを復元する。
【０２２５】
具体的には、まず、データ復元部１２３は、冗長データＰｉと操作入力データ群Ｄとの排他的論理和を演算しつつ、その結果と操作入力データ群Ｇとの排他的論理和を演算し、第８パケットデータに含まれる操作入力データ群Ｈを復元する。
【０２２６】
次に、データ復元部１２３は、冗長データＰｊと復元された操作入力データ群Ｈとの排他的論理和を演算しつつ、その結果と操作入力データ群Ｉとの排他的論理和を演算し、第５パケットデータに含まれる操作入力データ群Ｅを復元する。
【０２２７】
そして、データ復元部１２３は、冗長データＰｇと操作入力データ群Ｂとの排他的論理和を演算しつつ、その結果と復元された操作入力データ群Ｅとの排他的論理和を演算し、第６パケットデータに含まれる操作入力データ群Ｆを復元する。
【０２２８】
なお、この場合において、１／３０秒毎にパケットデータが配信されているとすると、データ復元による受信遅延は、５／３０秒となる。
【０２２９】
５．３  パケットロストされたデータの再送処理
本実施形態においては、上述のように冗長データを有するパケットデータを用いて各ゲーム端末装置１００に操作入力データ群を配信するようになっている。
【０２３０】
しかしながら、４つ以上連続してパケットロストが続いた場合には、これらのパケットロストされたデータを復元するためには、パケットロストしてから復元するまでの時間が長時間となる。
【０２３１】
例えば、１／３０秒毎にパケットデータが配信されている場合であって、４つ連続してパケットロストが発生した場合には、パケットロストされたパケットデータに含まれる操作入力データ群の復元には７／３０秒の時間が必要となり、５つの連続してパケットロストが発生した場合には、パケットロストされたパケットデータに含まれる操作入力データ群の復元には９／３０秒時間が必要となる。
【０２３２】
また、連続してパケットロストされたパケットデータが多くなると、復元自体が行うことができない場合も生ずる。
【０２３３】
そこで、本実施形態においては、４つ以上のパケットロストが発生した場合には、各ゲーム端末装置１００からサーバ装置２００に対してパケットロストされたパケットデータに含まれる操作入力データ群の再送要求が実行され、当該再送要求に基づいて該当する操作入力データ群が該当するゲーム端末装置１００に配信される。
【０２３４】
具体的には、各ゲーム端末装置１００において、パケットロスト検出部１２２は、４つ以上連続してパケットロストを検出した場合には、既に受信したパケットデータに基づいて、パケットロストされたパケットデータのシーケンスＩＤを認識する。
【０２３５】
そして、パケット生成部１２１は、当該パケットロストしたシーケンスＩＤを有する操作入力データ群の再送要求のためのデータを、次にサーバ装置２００に送信されるパケットデータにおけるペイロードに再送データとして設定する。
【０２３６】
一方、サーバ装置２００においては、パケット生成管理部２０５は、当該再送要求が含まれたパケットデータを受信した場合には、該当するゲーム端末装置１００に配信するパケットデータのペイロードに再送要求された操作入力データ群（すなわち、再送データ）を設定し、設定した再送データを有するパケットデータを該当するゲーム端末装置１００に配信する。
【０２３７】
このような構成を有することによって、本実施形態の対戦ゲームシステム１０は、連続してパケットロストされたパケットデータが多い場合であっても、当該パケットロストされた操作入力データ群を迅速に再取得させることができるので、パケットデータに基づいてリアルタイム処理などの迅速な処理が要求されるゲーム処理を適切に実行させることができる。
【０２３８】
５．４  ゲーム端末装置及びサーバ装置の処理
５．４．１  サーバ装置におけるパケットデータの生成処理
次に、図１１を用いて本実施形態のサーバ装置２００におけるパケットデータの生成処理について説明する。なお、図１１は、本実施形態のサーバ装置２００におけるパケットデータの生成処理の動作を示すフローチャートである。
【０２３９】
本動作においては、既に各ゲーム端末装置１００との通信が実行され、他のゲーム端末装置１００とともに同一のゲーム空間への参加が登録されているものとする。また、本動作は、予め定められたタイミング（例えば、１／３０フレーム）毎にゲーム実行管理部２０２と連動して実行するようになっている。
【０２４０】
まず、パケット生成管理部２０５は、ゲーム実行管理部２０２からシーケンスＩＤを特定するとともに（ステップＳ１０１）、特定したシーケンスＩＤに基づいて冗長データを生成し（ステップＳ１０２）、各ゲーム端末装置１００において同一のタイミングで配信する同一のシーケンスＩＤを有するパケットデータをそれぞれ生成する（ステップＳ１０３）。
【０２４１】
具体的には、パケット生成管理部２０５は、パケットデータにおける送信元及び送信先の情報など各種の情報を設定しつつ、既に受信された各ゲーム端末装置１００の送信すべき各操作入力データを送信用の操作入力データに加工して、すなわち、絶対値で示される各操作入力データを差分値で示される操作入力データからなる操作入力データ群に変換してパケットデータのペイロードに設定する。
【０２４２】
また、パケット生成管理部２０５は、特定したシーケンスＩＤに基づいて既に送信された該当するシーケンスＩＤを有する各パケットデータから複数の操作入力データ群（例えば、当該特定したシーケンスＩＤを基準に１個前、２個前及び５個前のシーケンスＩＤを有するパケットデータ）を特定、すなわち、記憶されているサーバ用記憶部２１０に記憶された中から抽出する。
【０２４３】
そして、パケット生成管理部２０５は、当該特定された各パケットデータに含まれる各操作入力データ群について所定の排他的論理和を演算して冗長データを生成し、当該生成した冗長データをパケットデータのペイロードに設定する。
【０２４４】
なお、パケット生成管理部２０５は、１または複数のゲーム端末装置１００から再送要求を受信している場合には、該当する操作入力データ群を該当するゲーム端末装置１００向けのパケットデータのペイロードに設定する。
【０２４５】
次いで、パケット生成管理部２０５は、パケットデータに設定した操作入力データ群をシーケンスＩＤとともにサーバ用記憶部２１０に記憶する（ステップＳ１０４）。
【０２４６】
最後に、パケット生成管理部２０５は、生成したパケットデータをそれぞれ各ゲーム端末装置１００に送信し（ステップＳ１０５）、本動作を終了させる。
【０２４７】
５．４．２  ゲーム端末装置におけるパケットデータの復元処理
次に、図１２を用いて本実施形態のゲーム端末装置１００におけるパケットデータの生成処理について説明する。なお、図１２は、本実施形態のゲーム端末装置１００におけるパケットデータの復元処理の動作を示すフローチャートである。
【０２４８】
本動作においては、既にサーバ装置２００との通信が実行され、サーバ装置２００と既に同期されているとともに、他のゲーム端末装置１００とともに同一のゲーム空間への参加が登録されているものとする。また、本動作は、予め定められたタイミング（例えば、１／３０フレーム）毎に、ゲーム演算部１１０と連動して実行する。
【０２４９】
また、本動作においては、ゲーム処理の実行中、数フレーム分のパケットデータが第２のバッファ１７８にバッファリングされており、ゲーム演算部１１０は、第２のバッファ１７８にバッファリングされたパケットデータに含まれる操作入力データ群に基づいて、所定のタイミング（１／６０フレーム）毎にゲーム処理を実行しているものとする。
【０２５０】
なお、ゲーム演算部１１０は、サーバ装置２００と確立された同期に基づいて。第２のバッファ１７８に記憶された未処理の操作入力データ群を、シーケンスＩＤに従って実行し、第２のバッファ１７８内に未処理の操作入力データ群が無くなった場合には、新たに記憶されるまでその処理を中断する。
【０２５１】
まず、パケットロスト検出部１２２は、操作入力データ群を有するパケットデータにおける受信の有無を判定する（ステップＳ３０１）。このとき、パケットロスト検出部１２２は、該当するシーケンスＩＤを有するパケットデータを受信したと判定した場合には、ステップＳ３０３の処理に移行し、当該パケットデータを受信していないと判定した場合には、ステップＳ３０２の処理に移行する。
【０２５２】
次いで、パケットロスト検出部１２２は、ステップＳ３０１の処理において、パケットデータを受信していないと判定した場合には、パケットロストの連続発生回数をカウントするカウンタ（以下、「パケットロストカウンタ」という。）の値に「１」を加算し（ステップＳ３０２）、本動作を終了させる。なお、パケットロストカウンタは、例えば、パケットロスト検出部１２２内に設けられている。
【０２５３】
次いで、パケットロスト検出部１２２は、ステップＳ３０１の処理において、パケットデータを受信したと判定した場合には、受信したパケットデータのシーケンスＩＤを認識しつつ、当該受信したパケットデータを当該シーケンスＩＤとともに第２のバッファ１７８に記憶する（ステップＳ３０３）。
【０２５４】
次いで、パケットロスト検出部１２２は、パケットロストカウンタのカウント数が「４」以上であるか否か判定する（ステップＳ３０４）。このとき、パケットロスト検出部１２２は、当該パケットロストカウンタのカウント数が「４」以上である判定した場合には、受信したパケットデータにおいて認識したシーケンスＩＤに基づいて、パケットロストされたシーケンスＩＤを特定しつつ、当該パケットロストされたパケットデータの再送要求（具体的には、当該パケットデータに含まれる操作入力データ群の再送要求）をサーバ装置２００に送信し（ステップＳ３０５）、ステップＳ３１１の処理に移行する。また、パケットロスト検出部１２２は、パケットロストカウンタのカウント数が「４」以上でないと判定された場合には、そのままステップＳ３１１の処理に移行する。
【０２５５】
次いで、パケットロスト検出部１２２は、受信したパケットデータに再送データが含まれているか否かを判定する（ステップＳ３１１）。このとき、パケットロスト検出部１２２は、再送データが含まれていると判定した場合には、ステップＳ３１２の処理に移行し、再送データが含まれていないと判定した場合には、ステップＳ３２２の処理に移行する。
【０２５６】
次いで、パケットロスト検出部１２２は、受信したパケットデータには再送データが含まれていると判定した場合には、当該再送データ（すなわち、操作入力データ群）をシーケンスＩＤとともに第２のバッファ１７８に記憶する（ステップＳ３１２）。
【０２５７】
次いで、パケットロスト検出部１２２は、パケットロストカウンタをリセットし（ステップＳ３１３）、ステップＳ３２２の処理に移行する。
【０２５８】
次いで、パケットロスト検出部１２２は、パケットロストカウンタの値が「０」か否かを判定し（ステップＳ３２２）、パケットロストカウンタの値が「０」と判定した場合には、そのまま本動作を終了させる。
【０２５９】
他方、パケットロスト検出部１２２は、パケットロストカウンタの値が「０」でないと判定した場合には、受信したパケットデータに含まれる冗長パケットデータに基づいてパケットロストされたパケットデータに含まれる操作入力データ群の復元可能か否かを判定する（ステップＳ３２３）。
【０２６０】
このとき、パケットロスト検出部１２２は、パケットロストされたパケットデータに含まれる操作入力データ群の復元可能と判定した場合には、ステップＳ３２４の処理に移行し、当該操作入力データ群の復元不能と判定した場合には、本動作を終了させる。
【０２６１】
次いで、パケットロスト検出部１２２は、ステップＳ３２３の処理において、パケットロストされたパケットデータに含まれる操作入力データ群が復元可能であると判定した場合には、受信したパケットデータのシーケンスＩＤに基づいて、パケットロストされたパケットデータのシーケンスＩＤを認識しつつ、データ復元部１２３に受信したパケットデータに含まれる冗長パケットデータに基づいてパケットロストされたパケットデータに含まれる操作入力データ群を復元させる（ステップＳ３２４）。
【０２６２】
なお、データ復元部１２３は、パケットロストされた単一のパケットデータに含まれる操作入力データ群だけでなく、２以上のパケットロストが発生している場合には、２以上のパケットデータに含まれる操作入力データ群の復元も行う。
【０２６３】
次いで、パケットロスト検出部１２２は、復元した操作入力データ群をシーケンスＩＤとともにサーバ用記憶部２１０に記憶し（ステップＳ３２５）、本動作を終了させる。
【０２６４】
以上のように、本実施形態のサーバ装置２００は、冗長データの生成に用いるｍ個の実データを用いるとともに、かつ、冗長データの生成に用いる操作入力データ群においてシーケンスＩＤが不連続となる冗長データ生成用離隔実データを用いることによって、冗長データを多くの構成要素から構成させつつ、かつ、当該構成要素の一部を他の構成要素から離隔させること、すなわち、冗長データを構成する実データを分散して提供することができるので、連続したパケットロストへの耐性を向上させることができるとともに、的確にロスト実データを復元させることができる。
【０２６５】
したがって、本実施形態のサーバ装置２００は、受信済みのパケットデータによってパケットロストされたパケットデータに含まれる操作入力データ群の復元を確実に行うことができるので、ゲーム端末装置１００からサーバ装置２００への再送要求及びそれに伴う再送処理などの再取得処理を不要またはその頻度を低減し、リアルタイム処理などの迅速な処理が要求されるゲーム処理を適切に実行させることができる。
【０２６６】
また、本実施形態のサーバ装置２００は、連続してパケットロストが発生した場合に、連続したパケットロストへの耐性を向上させつつ、パケットロストされた実データにおける復元の容易性及び迅速性をバランスよく実現することができる。
【０２６７】
なお、本実施形態においては、サーバ装置２００から各ゲーム端末装置１００に操作入力データ群を含むパケットデータを配信する場合に、冗長データを設定しているが、各ゲーム端末装置１００からサーバ装置２００に操作入力データを含むパケットデータを送信する場合に、冗長データを設定し、パケットロストが発生した場合に、当該冗長データに基づいて当該パケットロストされたデータの復元を行うようにしてもよい。
【０２６８】
また、本実施形態においては、サーバ装置２００において、パケットロストが４以上連続して発生した場合には、再送要求に基づいてパケットロストされたデータを再配信しているが、再送要求を実行する際の連続した発生したパケットロストの数は適宜定めることができるようになっている。
【０２６９】
また、本実施形態のサーバ装置２００は、ゲーム装置１００とは異なる専用の装置で実現されているが、サーバ装置２００がゲーム装置１００の全ての機能を包含して構成され、他のゲーム装置１００の親機として上記の実施形態を実現してもよい。
【０２７０】
また、本実施形態の対戦ゲームシステム１０において、ゲーム装置１００及びサーバ装置２００を用いたクライアントサーバ方式に代えて、複数のゲーム装置１００を用いたブルートゥース等の無線通信技術を用いたピアトゥーピア方式によって上記の実施形態を実現してもよい。この場合には、各ゲーム装置１００がサーバ装置２００の全ての機能を包含して構成される。
【０２７１】
また、本実施形態においては、サーバ装置１００及びゲーム装置２００間においてパケットデータによって操作入力データ及び音声データの配信を行うようになっているが、これらのデータに限られず、ゲームキャラクタを形成するためのデータ及びオブジェクト空間内におけるキャラクタの位置データなどキャラクタに関するデータ、効果音の発生情報などのゲームの内容を制御するデータ、並びに、ゲームの得点またはゲームプレーヤに関する情報を含むゲーム中に各ゲーム機に配信されるゲームデータが、パケットデータとして配信されてもよい。
【０２７２】
この場合には、ゲーム装置１００及びサーバ装置２００は、上記の冗長データを有するパケットデータによって各種のゲームデータを配信し、当該ゲームデータを受信したゲーム装置１００及びサーバ装置２００は、上記の手法を用いてパケットデータからゲームデータを復元する。
【符号の説明】
【０２７３】
１０  …  対戦ゲームシステム
１００  …  ゲーム端末装置
１０１  …  処理部
１１０  …  ゲーム演算部
１１１  …  オブジェクト空間設定部
１１２  …  仮想カメラ制御部
１１３  …  動作処理部
１１４  …  ネットワーク設定部
１２０  …  通信制御部
１２１  …  パケット生成部
１２２  …  パケットロスト検出部
１２３  …  データ復元部
１３０  …  画像生成部
１４０  …  音生成部
１６０  …  操作部
１７０  …  記憶部
１７２  …  主記憶部
１７４  …  画像バッファ
１７６  …  第１のバッファ
１７８  …  第２のバッファ
１７９  …  各種制御情報記憶部
１８０  …  情報記憶媒体
１９０  …  表示部
１９２  …  音出力部
１９４  …  補助記憶装置
１９６  …  通信部
２００  …  サーバ装置
２０１  …  管理・制御部
２０２  …  ゲーム実行管理部
２０３  …  ネットワーク管理部
２０４  …  通信管理制御部
２０５  …  パケット生成管理部
２１０  …  サーバ用記憶部
２２０  …  サーバ用通信部
【図１】
2013027548.tif 000003
【図２】
2013027548.tif 000004
【図３】
2013027548.tif 000005
【図４】
2013027548.tif 000006
【図５】
2013027548.tif 000007
【図６】
2013027548.tif 000008
【図７】
2013027548.tif 000009
【図８】
2013027548.tif 000010
【図９】
2013027548.tif 000011
【図１０】
2013027548.tif 000012
【図１１】
2013027548.tif 000013
【図１２】
2013027548.tif 000014