プログラム、ゲーム装置、データ配信装置及びネットワークシステム
【課題】冗長データに基づいてパケットロストされたパケットデータを的確に復元させ、当該パケットデータに基づいてリアルタイム処理等の迅速な処理が要求されるゲーム処理を適切に実行させることまたは実行することが可能なデータ配信装置等を提供すること。
【解決手段】サーバ装置200は、操作入力データを配信する際に、操作入力データ群と生成した冗長データを含むパケットデータを生成し、当該生成したパケットデータの各ゲーム端末装置100への配信を制御する。特に、サーバ装置200は、生成される冗長データが設定されるパケットデータよりも過去に配信されたパケットデータに含まれる3以上の操作入力データ群(例えば、シーケンスIDが1個前、2個前及び5個前の3つ操作入力データ群)を特定し、特定した操作入力データ群について排他的論理和の演算を実行し、該当するパケットデータにおける冗長データを生成する。
【解決手段】サーバ装置200は、操作入力データを配信する際に、操作入力データ群と生成した冗長データを含むパケットデータを生成し、当該生成したパケットデータの各ゲーム端末装置100への配信を制御する。特に、サーバ装置200は、生成される冗長データが設定されるパケットデータよりも過去に配信されたパケットデータに含まれる3以上の操作入力データ群(例えば、シーケンスIDが1個前、2個前及び5個前の3つ操作入力データ群)を特定し、特定した操作入力データ群について排他的論理和の演算を実行し、該当するパケットデータにおける冗長データを生成する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、プログラム、ゲーム装置、データ配信装置及びネットワークシステムに関する。
【背景技術】
【0002】
近年、ネットワークを介して他のゲーム装置との間で通信対戦ゲームを行うゲーム装置が脚光を浴びている。また、このような通信対戦ゲームでは、ゲーム装置間において、または、サーバ装置を介して操作データ等のゲームデータの授受が相互に必要となる。
【0003】
例えば、一のゲーム装置は、相手プレーヤが入力した操作データを、他のゲーム装置からネットワークを介して受信し、または、自機に入力した操作データを、ネットワークを介して他のゲーム装置に送信するようになっている。
【0004】
特に、このようなスムーズな通信対戦ゲームを実現するためには、操作データ等のゲームデータを高速な転送速度で通信することが望まれており、例えば、TCP(Transmission Control Protocol)などの信頼性重視の通信プロトコルとは違って、UDP(User Datagram Protocol)などの高速な転送が可能な通信プロトコル(無手順方式)を用いてゲームデータの授受が行われることも多い。
【0005】
一方、UDPなどの無手順方式のプロトコルでは、所与の各データ単位のデータ、すなわち、各パケット(以下、「パケットデータ」ともいう。)の到着や到着順序が保証されず、パケットデータの欠落、すなわち、パケットロスト(以下、「パケットロス」ともいう。)が発生することも多い。したがって、最近では、パケットデータとともにエラー訂正用の訂正データ(すなわち、冗長データ)を送信し、パケットロストが発生した場合に、当該冗長データに基づいてパケットロストされたパケットデータの復元を行うものも登場している。
【0006】
例えば、このようなシステムは、送信装置において、送信するパケットデータについて累積的に排他的論理和を算出するとともに、当該算出した排他的論理和に基づいて訂正データ、すなわち、冗長データを生成し、パケットデータとともに当該冗長データをパケットとして受信装置に送信するとともに、受信装置において、パケットロストが発生した場合に、当該パケットロストが発生した次に受信した冗長データのパケットに基づいてパケットロストが発生したパケットデータを復元するようになっている(例えば、特許文献1)。
【先行技術文献】
【特許文献】
【0007】
【特許文献1】特許第4405875号公報
【発明の概要】
【発明が解決しようとする課題】
【0008】
しかしながら、特許文献1に記載のシステムにあっては、連続してパケットデータがロストした場合には、パケットロストされたデータを次に受信した冗長データによって復元することができず、当該パケットロストとなったパケットデータ自体の再送を要求する必要がある。
【0009】
したがって、当該システムにあっては、パケットロストが発生したパケットデータを復元するまでに長時間を必要とし、ゲーム処理などのリアルタイム処理が適切に実行されず、処理そのものに不具合を発生させることも多い。
【0010】
本発明は、上記課題を解決するためになされたものであり、その目的は、冗長データに基づいてパケットロストされたパケットデータを的確に復元させ、当該パケットデータに基づいてリアルタイム処理などの迅速な処理が要求されるゲーム処理を適切に実行させることまたは実行することが可能なデータ配信装置、ゲーム装置、ネットワークシステム及びプログラムを提供することにある。
【課題を解決するための手段】
【0011】
(1)上記課題を解決するため、本発明のプログラムは、
ネットワークを介して他の通信装置に、ゲーム処理を実行させるためのゲームデータをパケット毎に配信するデータ配信装置に搭載されるプログラムであって、
前記データ配信装置を、
パケット毎のゲームデータであるパケットデータにそれぞれ設定する冗長データを生成する生成手段、
前記ゲーム処理を実行するために用いられる実データと前記生成された冗長データを少なくとも含む前記パケットデータを生成し、当該生成したパケットデータの前記他の通信装置への配信を制御する配信制御手段、及び
前記パケットデータに含まれる前記実データを、前記他の通信装置に配信する際の配信順の情報を保持しつつ、記憶手段に順次記憶する記憶制御手段、
として機能させ、
前記生成手段として、
各パケットデータにおける冗長データを生成する際に、前記記憶手段に記憶された実データの中から、生成される前記冗長データが設定されるパケットデータよりも過去に配信されたパケットデータに含まれるm(m≧3)個の実データを特定し、
前記特定した実データについて排他的論理和の演算を実行し、該当するパケットデータにおける前記冗長データを生成するように機能させるとともに、
前記特定したm個の実データには、当該m個の実データにおける他の実データと前記配信順が不連続となる少なくとも1の実データが含まれる構成を有している。
【0012】
通常、各パケットデータに他のパケットデータまたはそれに含まれるデータに基づいて生成された冗長データが含まれている場合には、パケットロストされたデータを用いて生成された冗長データと、当該冗長データの生成に用いたパケットロストされたデータ以外のデータと、に基づいてパケットロストされたデータを復元することができる。
【0013】
本発明のプログラムは、上記構成により、冗長データの生成に用いるm(m≧3)個の実データを用いるとともに、かつ、冗長データの生成に用いる実データ(以下、「冗長データ生成用実データ」という。)において他の冗長データ用実データと配信順が不連続となる実データ(以下、「冗長データ生成用離隔実データ」という。)を用いることによって、冗長データを多くの構成要素から構成させつつ、かつ、当該構成要素の一部を他の構成要素から離隔させること、すなわち、冗長データを構成する実データを分散して受信装置に提供することができる。
【0014】
すなわち、本発明のプログラムは、連続してパケットロストが発生した場合であっても、ゲーム処理を実行するゲーム装置などの受信装置において分散されて提供されることによって確実に受信された実データを、パケットロストされたパケットデータ(以下、「パケットロストデータ」という。)に含まれる実データ(以下、「ロスト実データ」という。)の復元に用いることができるので、連続したパケットロストへの耐性を向上させることができるとともに、的確にロスト実データを復元させることができる。
【0015】
したがって、本発明のプログラムは、受信済みのパケットデータによってパケットロストされたロスト実データの復元を確実に行うことができるので、ロスト実データの再送要求及びそれに伴う再送処理などのロスト実データの再取得処理を不要またはその頻度を低減し、リアルタイム処理などの迅速な処理が要求されるゲーム処理を適切に実行させることができる。
【0016】
(2)また、本発明のプログラムは、前記特定したm個の実データには、前記配信順が連続している少なくともn(2≦n<m)個の実データが含まれる、構成を有している。
【0017】
この構成により、本発明のプログラムは、配信順が不連続となるデータ生成用離隔実データとともに、配信順が連続しているデータ生成用実データを用いることによって、受信装置において、連続したパケットロストへの耐性の向上させつつ、パケットロストされた実データにおける復元の容易性及び迅速性をバランスよく実現することができる。
【0018】
(3)また、本発明のプログラムは、
前記特定したm個の実データにおける前記配信順が不連続な実データの配信順α1と、前記特定したm個の実データにおける配信順が連続するn個の実データうち最新の配信順(αnew2)または最先の配信順(αold2)と、については、下記の(式1)または(式2)の何れかの関係を有する構成をしている。
α1 = αnew2+(n+1) ・・・(式1)
α1 = αold2−(n+1) ・・・(式2)
【0019】
この構成により、本発明のプログラムは、冗長データ生成用離隔実データとして、当該冗長データの生成に用いられた連続したパケットデータにおける最新の冗長データ生成用実データまたは最先の冗長データ生成用実データとn+1以上離れた冗長データ生成用実データを用いているので、n個連続してパケットロストが発生した場合であっても、当該冗長データ生成用離隔実データについてはパケットロストされずに確実に受信装置に受信させることができる。
【0020】
したがって、本発明のプログラムは、復元に用いる実データを的確に確保させて連続したパケットロストへの耐性を向上させることができる。
【0021】
(4)また、本発明のプログラムは、前記特定したm個の実データには、前記冗長データが設定されるパケットデータの直前に配信された実データが含まれる、構成を有している。
【0022】
この構成により、本発明のプログラムは、受信装置においてロスト実データを復元する際に当該復元に用いる実データを容易にかつ迅速に確保させることができるとともに、パケットロストが発生した際に当該パケットロストデータの次の配信順のパケットデータに含まれる冗長データを用いて実データの復元を行うことができるので、容易にかつ迅速に当該パケットロストされた実データを復元させることができる。
【0023】
(5)また、本発明のプログラムは、前記実データが、ゲーム処理を実行する前記他の通信装置から送信されたゲームデータであって当該他の通信装置で操作入力された操作入力データである、構成を有している。
【0024】
この構成により、本発明のプログラムは、対戦ゲームなどの複数のゲーム装置における操作入力に連動させて実行されるゲームに適用させることができる。
【0025】
(6)また、本発明のプログラムは、
前記データ配信装置を、
プレーヤの操作入力を操作入力データとして受け付ける操作入力手段、及び
前記受け付けた操作入力データに基づいてゲーム処理を実行するゲーム処理手段、
として更に機能させ、
前記実データが、前記受け付けた操作入力データである、構成を有している。
【0026】
この構成により、本発明のプログラムは、対戦ゲームなどの複数のゲーム装置における操作入力に連動させてゲームが実行されるゲーム装置に搭載することができる。
【0027】
(7)上記課題を解決するため、本発明のプログラムは、
ネットワークを介してデータ配信装置から配信されたパケット毎のゲームデータに基づいてゲーム処理を実行するゲーム装置に搭載されるプログラムであって、
パケット毎のゲームデータである各パケットデータには、前記ゲーム処理を実行するために用いられる実データと、前記データ配信装置から自パケットデータより過去に配信されたパケットデータに含まれるm(m≧3)個の実データについて排他的論理和の演算を実行して生成された冗長データと、が少なくとも含まれている場合であって、
前記冗長データが生成される際に特定されたm個の実データには、当該m個の実データおける他の実データと前記データ配信装置から配信される際の配信順が不連続となる少なくとも1の実データが含まれている場合に、
前記ゲーム装置を、
前記データ配信装置から順次配信された前記パケットデータの受信制御を行う受信制御手段、
前記受信された受信パケットデータに基づいて、前記データ配信装置から配信された際の配信順を認識しつつ、未受信の未受信パケットデータを検出する検出手段、
前記未受信パケットデータが検出された場合に、前記未受信パケットデータの配信順を基準に、m個の前記受信パケットデータにそれぞれ含まれる少なくとも1の冗長データと2以上の実データを特定し、当該特定した冗長データ及び実データについて排他的論理和の演算を実行し、前記未受信のパケットデータに含まれる実データを復元する復元手段、及び
前記受信したパケットデータまたは前記復元したパケットデータに基づいて前記ゲーム処理を実行するゲーム処理手段、
として機能させる構成を有している。
【0028】
通常、各パケットデータに他のパケットデータまたはそれに含まれるデータに基づいて生成された冗長データが含まれている場合には、パケットロストされたデータを用いて生成された冗長データと、当該冗長データの生成に用いたパケットロストされたデータ以外のデータと、に基づいてパケットロストされたデータを復元することができる。
【0029】
本発明のプログラムは、上記構成により、m(m≧3)個の実データによって構成され、かつ、他の冗長データ用実データと配信順が不連続となる冗長データ生成用離隔実データを用いた冗長データによってロスト実データを復元することができるので、多くの構成要素で構成されつつ、分散された構成要素から構成された冗長データを用いてロスト実データを復元することができる。
【0030】
すなわち、本発明のプログラムは、連続してパケットロストが発生した場合であっても、分散されて提供されることによって確実に受信された実データに基づいて、ロスト実データを復元することができるので、連続したパケットロストへの耐性を向上させることができるとともに、的確にロスト実データを復元させることができる。
【0031】
したがって、本発明のプログラムは、受信済みのパケットデータによってパケットロストされたロスト実データの復元を確実に行うことができるので、ロスト実データの再送要求及びそれに伴う再送処理などのロスト実データの再取得処理を不要またはその頻度を低減し、リアルタイム処理などの迅速な処理が要求されるゲーム処理を適切に実行することができる。
【0032】
(8)また、本発明のプログラムは、前記実データを復元する際に特定された前記冗長データが含まれる受信パケットデータが、前記未受信パケットデータの配信後の配信順を有する、構成を有している。
【0033】
この構成により、本発明のプログラムは、パケットロストが発生した後の配信順を有するパケットデータに含まれる冗長データを実データの復元に用いるので、原則的に復元に用いる冗長データを受信した場合に既に受信している実データの中から復元に用いる実データを特定すればよく、当該復元に用いる実データを容易にかつ迅速に確保することができる。
【0034】
(9)また、本発明のプログラムは、
前記冗長データが生成される際に特定されたm個の実データには、前記配信順が連続している少なくともn(2≦n<m)個の実データが含まれており、
前記実データを復元する際に特定された少なくとも1の実データが含まれる受信パケットデータの配信順P1と、前記特定された冗長データを含む受信パケットデータの配信順P2とについては、下記の(式3)の関係を有する構成をしている。
【0035】
P1=P2±(m+n) ・・・(式3)
【0036】
この構成により、本発明のプログラムは、連続したパケットロストへの耐性を向上させるために、パケットロストされずに確実に受信した実データをパケットロストされた実データの復元に用いることができる。
【0037】
(10)また、本発明のプログラムは、
前記冗長データが生成される際に特定されたm個の実データには、前記冗長データが設定されるパケットデータの直前に配信された実データが含まれており、
前記実データを復元する際に特定された冗長データが含まれる受信パケットデータが、前記未受信パケットデータの配信直後の配信順を有する、構成をしている。
【0038】
この構成により、本発明のプログラムは、実データを復元する際に用いる冗長データを容易にかつ迅速に確保することができるので、パケットロストされた実データの復元を迅速に実行することができる。
【0039】
(11)また、本発明のプログラムは、前記実データが、ゲーム処理を実行する他のゲーム装置から送信されたゲームデータであって当該他のゲーム装置で操作入力された操作入力データである、構成を有している。
【0040】
この構成により、本発明のプログラムは、対戦ゲームなどの複数のゲーム装置における操作入力に連動させてゲームが実行されるプログラムに提供することができる。
【0041】
(12)上記課題を解決するため、本発明のデータ配信装置は、
ネットワークを介して他の通信装置に、ゲーム処理を実行させるためのゲームデータをパケット毎に配信するデータ配信装置に搭載されるプログラムであって、
パケット毎のゲームデータであるパケットデータにそれぞれ設定する冗長データを生成する生成手段と、
前記ゲーム処理を実行するために用いられる実データと前記生成された冗長データを少なくとも含む前記パケットデータを生成し、当該生成したパケットデータの前記他の通信装置への配信を制御する配信制御手段と、
前記パケットデータに含まれる前記実データを、前記他の通信装置に配信する際の配信順の情報を保持しつつ、記憶手段に順次記憶する記憶制御手段と、
を備え、
前記生成手段が、
各パケットデータにおける冗長データを生成する際に、前記記憶手段に記憶された実データの中から、生成される前記冗長データが設定されるパケットデータよりも過去に配信されたパケットデータに含まれるm(m≧3)個の実データを特定し、
前記特定した実データについて排他的論理和の演算を実行し、該当するパケットデータにおける前記冗長データを生成するとともに、
前記特定したm個の実データには、当該m個の実データにおける他の実データと前記配信順が不連続となる少なくとも1の実データが含まれる構成を有している。
【0042】
この構成により、本発明のデータ配信装置は、上述の本発明のプログラムと同様に、受信済みのパケットデータによってパケットロストされたロスト実データの復元を確実に行うことができるので、ロスト実データの再送要求及びそれに伴う再送処理などのロスト実データの再取得処理を不要またはその頻度を低減し、リアルタイム処理などの迅速な処理が要求されるゲーム処理を適切に実行させることができる。
【0043】
(13)上記課題を解決するため、本発明のゲーム装置は、ネットワークを介してデータ配信装置から配信されたパケット毎のゲームデータに基づいてゲーム処理を実行するゲーム装置であって、
パケット毎のゲームデータである各パケットデータには、前記ゲーム処理を実行するために用いられる実データと、前記データ配信装置から自パケットデータより過去に配信されたパケットデータに含まれるm(m≧3)個の実データについて排他的論理和の演算を実行して生成された冗長データと、が少なくとも含まれているとともに、
前記冗長データが生成される際に特定されたm個の実データには、当該m個の実データおける他の実データと前記データ配信装置から配信される際の配信順が不連続となる少なくとも1の実データが含まれている場合に、
前記データ配信装置から順次配信された前記パケットデータの受信制御を行う受信制御手段と、
前記受信された受信パケットデータに基づいて、前記データ配信手段から配信された際の配信順を認識しつつ、未受信の未受信パケットデータを検出する検出手段と、
前記未受信パケットデータが検出された場合に、前記未受信パケットデータの配信順を基準に、m個の前記受信パケットデータにそれぞれ含まれる少なくとも1の冗長データと2以上の実データを特定し、当該特定した冗長データ及び実データについて排他的論理和の演算を実行し、前記未受信のパケットデータに含まれる実データを復元する復元手段と、
前記受信したパケットデータまたは前記復元したパケットデータに基づいて前記ゲーム処理を実行するゲーム処理手段と、
を備える構成を有している。
【0044】
この構成により、本発明のゲーム装置は、上述の本発明のプログラムと同様に、受信済みのパケットデータによってパケットロストされたロスト実データの復元を確実に行うことができるので、ロスト実データの再送要求及びそれに伴う再送処理などのロスト実データの再取得処理を不要またはその頻度を低減し、リアルタイム処理などの迅速な処理が要求されるゲーム処理を適切に実行することができる。
【0045】
(14)上記課題を解決するため、本発明のネットワークシステムは、
ゲームデータに基づいてゲーム処理を実行するゲーム装置と、
ネットワークを介して前記ゲーム装置に前記ゲームデータをパケット毎に配信するデータ配信装置と、
を備えた
前記データ配信装置が、
パケット毎のゲームデータであるパケットデータにそれぞれ設定する冗長データを生成する生成手段と、
前記ゲーム処理を実行するために用いられる実データと前記生成された冗長データを少なくとも含む前記パケットデータを生成し、当該生成したパケットデータの前記他の通信装置への配信を制御する配信制御手段と、
前記パケットデータに含まれる前記実データを、前記他の通信装置に配信する際の配信順の情報を保持しつつ、記憶手段に順次記憶する記憶制御手段と
を備え、
前記生成手段が、
各パケットデータにおける冗長データを生成する際に、前記記憶手段に記憶された実データの中から、生成される前記冗長データが設定されるパケットデータよりも過去に配信されたパケットデータに含まれるm(m≧3)個の実データを特定し、
前記特定した実データについて排他的論理和の演算を実行し、該当するパケットデータにおける前記冗長データを生成するとともに、
前記特定したm個の実データには、当該m個の実データにおける他の実データと前記配信順が不連続となる少なくとも1の実データが含まれること、
前記ゲーム装置が、
前記データ配信装置から順次配信された前記パケットデータの受信制御を行う受信制御手段と、
前記受信された受信パケットデータに基づいて、前記データ配信装置から配信された際の配信順を認識しつつ、未受信の未受信パケットデータを検出する検出手段と、
前記未受信パケットデータが検出された場合に、前記未受信パケットデータの配信順を基準に、m個の前記受信パケットデータにそれぞれ含まれる少なくとも1の冗長データと2以上の実データを特定し、当該特定した冗長データ及び実データについて排他的論理和の演算を実行し、前記未受信のパケットデータに含まれる実データを復元する復元手段と、
前記受信したパケットデータまたは前記復元したパケットデータに基づいて前記ゲーム処理を実行するゲーム処理手段と、
を有する構成をしている。
【0046】
この構成により、本発明のネットワークシステムは、ゲーム装置において、受信済みのパケットデータによってパケットロストされたロスト実データの復元を確実に行うことができるので、ロスト実データの再送要求及びそれに伴う再送処理などのロスト実データの再取得処理を不要またはその頻度を低減し、リアルタイム処理などの迅速な処理が要求されるゲームをゲーム装置において適切に実行することができる。
【図面の簡単な説明】
【0047】
【図1】一実施形態の対戦ゲームシステムの構成を示す構成図である。
【図2】一実施形態のゲーム端末装置の構成を示す構成図である。
【図3】一実施形態のサーバ装置の構成を示す構成図である。
【図4】各ゲーム端末装置からサーバ装置に送信されるパケットデータの構造を示す構造図の一例である。
【図5】各ゲーム端末装置からサーバ装置に送信されるパケットデータの構造を示す構造図の一例である。
【図6】一実施形態において生成される冗長データの一例であって、その構造を示す図である。
【図7】一実施形態のサーバ装置において生成されるパケットデータに含まれる冗長データの復元処理について説明するための図(その1)である。
【図8】一実施形態のサーバ装置において生成されるパケットデータに含まれる冗長データの復元処理について説明するための図(その2)である。
【図9】一実施形態のサーバ装置において生成されるパケットデータに含まれる冗長データの復元処理について説明するための図(その3)である。
【図10】一実施形態のサーバ装置において生成されるパケットデータに含まれる冗長データの復元処理について説明するための図(その4)である。
【図11】一実施形態のサーバ装置におけるパケットデータの生成処理の動作を示すフローチャートである。
【図12】一実施形態のゲーム端末装置におけるパケットデータの復元処理の動作を示すフローチャートである。
【発明を実施するための最良の形態】
【0048】
以下、本発明の実施形態について、図面を参照しながら説明する。
【0049】
なお、以下の実施形態は、ネットワークを介して構築される対戦ゲームシステムに含まれる複数のゲーム端末装置及びサーバ装置に対し、本発明に係るプログラム、データ配信装置、ゲーム装置及びネットワークシステムを適用した場合の実施形態である。
【0050】
また、以下に示す実施形態は、特許請求の範囲に記載された発明の内容を何ら限定するものではない。また、以下の実施形態に示す構成の全てが、特許請求の範囲に記載された発明の解決手段として必須であるとは限らない。
【0051】
1.対戦ゲームシステムの構成及びその概要
まず、図1を用いて本実施形態における対戦ゲームシステム10の構成について説明する。なお、図1は、本実施形態の対戦ゲームシステム10の構成を示す構成図である。
【0052】
対戦ゲームシステム10は、同一のゲーム空間において種々のゲームを実行する複数のゲーム端末装置100と、各ゲーム端末装置100から各ゲーム端末装置100において発生したアプリケーションデータであるゲームデータを収集しつつ、収集した各ゲームデータをそれぞれのゲーム端末装置100に提供するサーバ装置200と、を備え、各ゲーム端末装置100とサーバ装置200はネットワークNを介して接続されている。
【0053】
また、対戦ゲームシステム10は、同一のゲーム空間において種々のゲームを実行する全てのゲーム端末装置100を同期させつつ、当該各ゲーム端末装置100から、各ゲーム端末装置100において入力された操作入力のデータ(以下、「操作入力データ」という。)をサーバ装置200に送信させるとともに、サーバ装置200から各ゲーム端末装置100に、受信した操作入力データを配信することによって、種々のゲームが実行されるゲームシステムである。
【0054】
具体的には、各ゲーム端末装置100は、各プレーヤが単独でまたは他のプレーヤと協力して他のゲーム端末装置100のプレーヤによって操作される敵オブジェクトとの戦闘ゲームのゲーム処理を実行するように構成されている。
【0055】
また、サーバ装置200は、各ゲーム端末装置100から操作入力データを含むゲームデータを受信し、受信したゲームデータを各ゲーム端末装置100に配信するリレーサーバとして機能するようになっている。
【0056】
本実施形態の対戦ゲームシステム10においては、サーバ装置200または各ゲーム端末装置100は、予め定められた間隔毎にデータの送信または配信を行うようになっており、ネットワークを介して通信するかたまりであるパケット毎に、送信元IPアドレス、送信先IPアドレスを含むネットワークに必要なヘッダーと、送信すべきゲームデータを含むデータ(以下、「パケットデータ」という。)の授受を実行するようになっている。
【0057】
特に、本実施形態においては、基本的には、UDPプロトコルなどの無手順方式のデータ転送方式を用いてサーバ装置200とゲーム端末装置100間のデータの伝送が制御されるようになっている。
【0058】
一般的に、UDPプロトコルなどの無手順方式のデータ転送方式においては、データ送信の途中でパケットロストが発生してもロストされたデータの再送を実行せず、さらに、順番が入れ替わってパケットデータを伝送することを許容している。
【0059】
その一方、UDPプロトコルは、オーバヘッド(すなわち、アプリケーションに関わる実データ以外のデータ)が無いまたはほとんど無いので、オンラインゲームなどのリアルタイム処理を実行するゲーム処理には適しているとされている。
【0060】
そこで、本実施形態の対戦ゲームシステム10は、各ゲーム端末装置100において、サーバ装置200及び他のゲーム端末装置100(以下、「他機」ともいう。)のゲームデータに基づいてリアルタイム処理を実行するために、基本的にはUDPプロトコルなどの無手順方式に従いつつ、パケットロストに対する耐性を強化したパケットデータをゲームデータの授受に用いるようになっている。
【0061】
すなわち、本実施形態の対戦ゲームシステム10は、高速通信が可能でリアルタイム処理が可能なUDPプロトコルなどの無手順方式の通信規格を用いつつ、予め定めたタイミングでゲームデータの送信及び配信を行うことによって、パケットロストを早期に検出し、確実にかつ迅速に当該パケットロストされたデータを復元するようになっている。
【0062】
そして、対戦ゲームシステム10は、当該パケットロストされたデータの再送をせずに、または、当該再送の頻度を低減させることによって、パケットロスト発生時のゲーム処理の遅延または中断を防止するようになっている。
【0063】
具体的には、本実施形態においては、使用するUDPプロトコルに応じたアプリケーションの種類を特定するポート番号が指定されたパケットデータを用いてアプリケーションレベルの通信が実行される。
【0064】
また、本実施形態においては、サーバ装置200から配信される配信順を示す情報(以下、「シーケンスID」という。)がパケットデータに組み込まれ、かつ、各種のゲーム端末装置100またはサーバ装置200に搭載された各種のアプリケーション(搭載されるプログラム)によってパケットロストされたデータの復元を行うようになっている。そして、本実施形態においては、当該復元が長時間となる場合に限ってパケットロストされたデータの再送処理が実行されるようになっている。
【0065】
特に、各ゲーム端末装置100は、所定のタイミングでサーバ装置200に自機の操作入力データを送信するとともに、所定のタイミングでサーバ装置200から送信された自機の操作入力データを含む同一のゲーム空間を共有している他機の操作入力データ(すなわち、他のプレーヤの操作による操作入力データ)を受信する。
【0066】
そして、各ゲーム端末装置100は、自機の及び/または他機の操作入力データに基づいて、ゲームを進行させるための各種のゲーム処理を実行するようになっている。
【0067】
例えば、各ゲーム端末装置100は、所定のフレーム毎(1/30フレーム毎)における操作入力データの2フレーム分のデータ(すなわち、1/60フレーム毎の操作入力データ)を有するパケット毎のデータ(以下、「パケットデータ」という。)をサーバ装置200に送信するようになっている。
【0068】
また、各ゲーム端末装置100は、所定のフレーム毎(1/30フレーム毎)に、自機の操作入力データを含む同一のゲーム空間を共有している他のゲーム端末装置100における操作入力データ群(すなわち、同一のゲーム空間においてゲーム処理を実行している全てのゲーム端末装置100における操作入力データ群)の2フレーム分のデータと、誤り訂正用の冗長データ(以下、「パリティデータ」または「訂正用データ」ともいう。)と、を含むパケットデータを、サーバ装置200から受信する。
【0069】
そして、各ゲーム端末装置100は、受信したパケットデータに含まれる操作入力データ群に基づいて種々のゲーム処理を実行するようになっている。
【0070】
2.ゲーム端末装置
次に、図2を用いて本実施形態におけるゲーム端末装置100の構成について説明する。なお、図2は、本実施形態のゲーム端末装置100の構成を示す構成図である。また、本実施形態のゲーム端末装置100は、図2の構成に限定されず、その一部の構成要素を省略すること、他の構成要素を追加するなどの種々の変形実施が可能である。
【0071】
操作部160は、プレーヤが操作入力データを入力するためのものであり、その機能は、左右2つのレバー、各レバーに設けられたそれぞれ2つの計4つの操作ボタン、及び、2つのフットペダルによる実現される。なお、これらに限らずに、アナログスティック、各種センサ(角速度センサ、加速度センサ等)、方向指示キー、マイク、或いはタッチパネル型ディスプレイなどにより実現することも可能である。
【0072】
記憶部170は、処理部101及び通信のワーク領域となるもので、その機能はRAM(DRAM、VRAM)などにより実現できる。特に、本実施形態の記憶部170は、主に、ゲームプログラムが記録される主記憶部172、画像バッファ174、第1のバッファ176、第2のバッファ178、各種制御情報記憶部179を有している。
【0073】
主記憶部172は、主に、ゲームプログラムが記録される。また、第1のバッファ176は、自機のゲームデータが記憶される記憶領域であり、第2のバッファ178とはサーバ装置200から受信したパケットデータが記憶される記憶領域であって、例えば主記憶の一部に設けられてソフトウェア的によって読み書きの制御が行われる構成でもよい。さらに、各種制御情報記憶部179には、自機や他機のゲームに関する情報が必要に応じて記憶されている。
【0074】
特に、第2のバッファ178には、同一のゲーム空間を共有する各ゲーム端末装置100の操作入力データ(以下、「操作入力データ群」という。)及び冗長データが順次配信順の情報(以下、「シーケンスID」という。)を保持しつつ記憶される。
【0075】
また、第2のバッファ178には、後述するように復元された操作入力データ群についても、シーケンスIDを保持しつつ記憶される。
【0076】
なお、ゲームプログラムは、ゲーム処理を実行するための命令コードが記述されたソフトウェアである。また、ゲームデータは、ゲームプログラムの実行の際に必要なデータであり、上述の操作入力データの他に、キャラクタデータ、ゲームステージデータ、通信に参加しているメンバーの情報、または、キャラクタ等の位置データなどである。
【0077】
情報記憶媒体180(コンピュータにより読み取り可能な媒体)は、プログラムやデータなどを格納するものであり、その機能は、光ディスク(CD、DVD)、HDD(ハードディスクドライブ)、または、メモリ(ROM等)などにより実現できる。
【0078】
なお、処理部101は、情報記憶媒体180に格納されるプログラム(データ)に基づいて本実施形態の種々の処理を行う。すなわち、情報記憶媒体180には、本実施形態の各部としてコンピュータ(操作部、処理部、記憶部、出力部を備える装置)を機能させるためのプログラム(各部の処理をコンピュータに実行させるためのプログラム)が記憶される。
【0079】
表示部190は、本実施形態により生成された画像を出力するものであり、その機能は、LCD、有機ELディスプレイ、CRT、タッチパネル型ディスプレイ、または、HMD(ヘッドマウントディスプレイ)などにより実現できる。
【0080】
音出力部192は、本実施形態により生成された音を出力するものであり、その機能は、スピーカ、または、ヘッドフォンなどにより実現できる。
【0081】
補助記憶装置194(補助メモリ、2次メモリ)は、記憶部170の容量を補うために使用される記憶装置であり、SDメモリーカード、マルチメディアカードなどのメモリーカードなどにより実現できる。
【0082】
通信部196は、有線及び無線のネットワークを介して外部(他のゲーム端末装置100、サーバ装置200)との間で通信を行うものであり、その機能は、通信用ASICまたは通信用プロセッサなどのハードウェア、及び、通信用ファームウェアにより実現できる。
【0083】
なお、本実施形態の各部としてコンピュータを機能させるためのプログラム(データ)は、ホスト装置(サーバシステム)が有する情報記憶媒体からネットワーク及び通信部196を介して情報記憶媒体180(または、記憶部170若しくは補助記憶装置194)に配信されてもよい。このようなホスト装置による情報記憶媒体の使用も本発明の範囲内に含めることができる。
【0084】
処理部101(プロセッサ)は、操作部160からの操作入力データ、取得した他のゲーム端末装置100における操作入力データ及びプログラムなどに基づいて、ゲーム処理、画像生成処理、或いは音生成処理などを行う。
【0085】
処理部101は、記憶部170をワーク領域として各種処理を行う。この処理部101の機能は、各種プロセッサ(CPU、GPU等)、ASIC(ゲートアレイ等)などのハードウェア及びプログラムにより実現できる。
【0086】
処理部101は、ゲーム演算部(ゲーム処理手段)110、オブジェクト空間設定部111、仮想カメラ制御部112、移動・動作処理部113、ネットワーク設定部114、通信制御部120、画像生成部130、音生成部140を含む。なおこれらの一部を省略する構成としてもよい。
【0087】
ゲーム演算部110は、ゲーム開始条件が満たされた場合にゲームを開始する処理、ゲームを進行させる処理、キャラクタやマップなどのオブジェクトを配置する処理、オブジェクトを表示する処理、ゲーム結果を演算する処理、及び、ゲーム終了条件が満たされた場合にゲームを終了する処理などがある。なお、例えば、本実施形態のゲーム演算部110は、本発明のゲーム処理手段を構成する。
【0088】
本実施形態のゲーム演算部110は、戦闘ゲームを実行する際に、味方オブジェクトを含めた自機オブジェクトと、敵オブジェクトと、の体力値を初期値(例えば100)に設定する。また、ゲーム演算部110は、戦闘ゲームを開始してから戦闘ゲームが終了するまでのゲーム期間(例えば、90秒の間)に、フレーム毎に、各プレーヤの操作入力データに基づいてヒット判定処理を行うとともに、ヒット判定結果に基づいていて、各オブジェクトの体力値を減算させ、自機オブジェクトまたは敵オブジェクトの体力値が0になったか否かに基づいて戦闘ゲームの勝敗を決定する演算処理を行う。
【0089】
オブジェクト空間設定部111は、自機オブジェクト、味方オブジェクト、敵オブジェクト、移動体、建物、球場、車、樹木、柱、壁、マップ(地形)などの表示物を表す各種オブジェクト(ポリゴン、自由曲面又はサブディビジョンサーフェスなどのプリミティブで構成されるオブジェクト)をオブジェクト空間に配置設定する処理を行う。すなわち、ワールド座標系でのオブジェクトの位置や回転角度(向き、方向と同義)を決定し、その位置(X、Y、Z)にその回転角度(X、Y、Z軸回りでの回転角度)でオブジェクトを配置する。
【0090】
仮想カメラ制御部112は、オブジェクト空間内の所与(任意)の仮想カメラ(視点)から見える画像を生成するための仮想カメラの制御処理を行う。具体的には、仮想カメラの位置(X、Y、Z)又は回転角度(X、Y、Z軸回りでの回転角度)を制御する処理(視点位置、視線方向あるいは画角を制御する処理)を行う。また、画角を制御するようにしてもよい。
【0091】
例えば、仮想カメラによりオブジェクト(例えば、自機オブジェクト、敵または味方オブジェクト、ボール、車)を後方から撮影する場合には、オブジェクトの位置又は回転の変化に仮想カメラが追従するように、仮想カメラの位置又は回転角度(仮想カメラの向き)を制御する。この場合には、移動・動作処理部113で得られたオブジェクトの位置、回転角度または速度などの情報に基づいて、仮想カメラを制御できる。
【0092】
また、仮想カメラを、予め決められた回転角度で回転させること、または、予め決められた移動経路で移動させる制御を実行してもよい。この場合には、仮想カメラの位置(移動経路)または回転角度を特定するための仮想カメラデータに基づいて仮想カメラを制御する。
【0093】
なお、仮想カメラ(視点)が複数存在する場合には、それぞれの仮想カメラについて上記の制御処理が行われる。
【0094】
移動・動作処理部113は、モデル(自機オブジェクト、車、電車または飛行機等)の移動・動作演算(移動・動作シミュレーション)を行う。すなわち、操作部160によりプレーヤが入力した操作入力データ、サーバ装置200から送信された他のゲーム端末装置100の操作入力データ、プログラム(移動・動作アルゴリズム)、各種データ(モーションデータ)などに基づいて、モデルをオブジェクト空間内で移動させること、オブジェクトを動作(モーション、アニメーション)させることの各処理を行う。
【0095】
具体的には、オブジェクトの移動情報(位置、回転角度、速度、または、加速度)及び動作情報(オブジェクトを構成する各パーツの位置、または、回転角度)を、1フレーム(1/60秒)毎に順次求めるシミュレーション処理を行う。なお、フレームは、オブジェクトの移動・動作処理(シミュレーション処理)及び画像生成処理を行う時間の単位である。
【0096】
特に、本実施形態の移動・動作処理部113は、サーバ装置200から送信された、または、操作部160によって入力された操作入力データに基づいて、プレーヤの操作対象の自機オブジェクトを移動・動作させる処理を行う。
【0097】
また、移動・動作処理部113は、後述する通信制御部120によって送信されたパケットに含まれる他のゲーム端末装置100(他機)によって入力された操作入力データに基づいて、他機が使用する他のオブジェクト(敵または味方オブジェクト)を、自機を使用するプレーヤの操作対象となる自機オブジェクトと同一のオブジェクト空間(すなわち、ゲーム空間)において移動・動作させる処理を行うことができる。
【0098】
すなわち、本実施形態の移動・動作処理部113は、サーバ装置200から送信された各ゲーム端末装置100における操作入力データに基づいて、自機オブジェクトを動作させる演算と、他機オブジェクトを動作させる演算を行う。
【0099】
ネットワーク設定部114は、本実施形態の対戦ゲームシステム10で必要となるネットワーク情報を取得し、管理する処理等を行う。特に、本実施形態のネットワーク設定部114は、同一のオブジェクト空間を共有してゲームを行う各ゲーム端末装置100に個別に設定されるゲーム端末装置100の識別情報(オンラインゲームに参加できるゲーム端末装置100を識別するために個別に付与されたデータ)、及び、サーバ装置200の識別情報に対応付けられたパケットの送信先を指定する宛先情報を取得し、管理する処理を行う。
【0100】
通信制御部120は、サーバ装置200に送信するパケットデータを生成する処理、受信したパケットデータに含まれる操作入力データを第2のバッファ178に記憶する処理、パケットロストの検出及びその復元を実行する処理、その他のパケットの送受信に関する制御処理等を行う。
【0101】
また、通信制御部120は、各ゲーム端末装置100との接続が確立されてから接続が切断されるまで、パケットデータを互いに送受信する処理を行うことができる。なお、本実施形態の通信制御部120は、本発明の受信制御手段を構成する。
【0102】
通信制御部120には、各ゲーム端末装置100に送信するパケットデータを生成するパケット生成部121と、パケットデータにおけるパケットロストを検出するパケットロスト検出部122と、パケットロストが検出された場合にロストされたパケットデータに含まれる操作入力データ群の復元を行うデータ復元部123と、が含まれる。
【0103】
なお、例えば、本実施形態のパケットロスト検出部122は、本発明の検出手段を構成し、データ復元部123は、本発明の復元手段を構成する。
【0104】
パケット生成部121は、サーバ装置200との通信の確立、ゲームを開始する処理が実行されたとき、または、ゲームを終了する処理が実行されたときなどサーバ装置200との必要なデータの授受を行う際に、及び、ゲーム中においてサーバ装置200に操作入力データを送信する際に、各種のパケットデータを生成する処理を行う。
【0105】
また、パケット生成部121は、各パケットデータのヘッダーの送信先IPアドレスと送信先ポート番号には、サーバ装置200のIPアドレスと使用するポート番号を指定するとともに、ヘッダーの送信元のIPアドレスと送信元ポート番号に、自機のIPアドレスと使用するポート番号を指定し、データサイズ、チェックサムとともに、各種のゲームデータ(アプリケーションデータ)を有するパケットデータを生成する。
【0106】
特に、パケット生成部121は、操作入力データをサーバ装置200に送信する際には、サーバ装置200の制御の下、同一のゲーム空間を共有する各ゲーム端末装置100に付され、サーバ装置200において処理を行うために必要なID(以下、「セッションID」ともいう。)有し、入力された操作入力データを含むパケットデータを生成する。
【0107】
特に、本実施形態のパケット生成部121は、各操作入力データが個々に単独でプレーヤによって入力された操作入力であることが認識可能な操作入力データ(以下、「絶対値」または「絶対値情報」ともいう。)を含むパケットデータを生成する。
【0108】
例えば、パケット生成部121は、フレームレートが60fpsである場合には、1/60秒毎の操作入力データを2つ組みにして、1/30秒毎に、セッションIDを付与しつつ、当該組された2つの操作入力データをパケットデータのペイロードに設定する。
【0109】
パケットロスト検出部122は、サーバ装置200の制御の下、シーケンス処理の順序を示すシーケンスIDを認識しつつ、サーバ装置200から送信されたパケットデータのパケットロストを検出し、データ復元部123は、パケットロストが検出された場合に、受信して第2のバッファ178に記憶されているパケットデータ(すなわち、操作入力データ群及び冗長データ)に基づいてパケットロストされたパケットデータに含まれる操作入力データ群を復元する。
【0110】
なお、本実施形態では、操作入力データ以外には、サーバ装置200から配信された操作入力データの再送を要求するためのデータと、ゲーム中にプレーヤ同士で行われる交信(チャット)に必要な音声データその他のデータ(以下、「追加データ」という。)と、がパケットデータに含まれる場合がある。
【0111】
また、本実施形態においてゲーム端末装置100において生成する操作入力データを有するパケットデータ及びサーバ装置200から送信された操作入力データ群を有するパケットデータの詳細について後述する。
【0112】
画像生成部130は、処理部101で行われる種々の処理(ゲーム処理)の結果に基づいて描画処理を行い、これにより画像を生成し、表示部190に出力する。いわゆる3次元ゲーム画像を生成する場合には、まずオブジェクト(モデル)の各頂点の頂点データ(頂点の位置座標、テクスチャ座標、色データ、法線ベクトルまたはα値等)を含むオブジェクトデータ(モデルデータ)が入力され、入力されたオブジェクトデータ(モデルデータ)に含まれる頂点データに基づいて、頂点処理(頂点シェーダによるシェーディング)が行われる。
【0113】
頂点処理を行うに際して、必要に応じてポリゴンを再分割するための頂点生成処理(テッセレーション、曲面分割、ポリゴン分割)を行うようにしてもよい。頂点処理では、頂点処理プログラム(頂点シェーダプログラム、第1のシェーダプログラム)に従って、頂点の移動処理や、座標変換(ワールド座標変換、カメラ座標変換)、クリッピング処理、または、透視変換等のジオメトリ処理が行われ、その処理結果に基づいて、オブジェクトを構成する頂点群について与えられた頂点データを変更(更新、調整)する。そして、頂点処理後の頂点データに基づいてラスタライズ(走査変換)が行われ、ポリゴン(プリミティブ)の面とピクセルとが対応付けられる。
【0114】
そして、ラスタライズに続いて、画像を構成するピクセル(表示画面を構成するフラグメント)を描画するピクセル処理(ピクセルシェーダによるシェーディング、フラグメント処理)が行われる。ピクセル処理では、ピクセル処理プログラム(ピクセルシェーダプログラム、第2のシェーダプログラム)に従って、テクスチャの読出し(テクスチャマッピング)、色データの設定/変更、半透明合成、アンチエイリアス等の各種処理を行って、画像を構成するピクセルの最終的な描画色を決定し、透視変換されたオブジェクトの描画色を記憶部170(ピクセル単位で画像情報を記憶できるバッファ。VRAM、レンダリングターゲット)に出力(描画)する。
【0115】
ピクセル処理では、画像情報(色、法線、輝度、α値等)をピクセル単位で設定または変更するパーピクセル処理を行う。これにより、オブジェクト空間内において仮想カメラ(所与の視点)から見える画像が生成される。なお、仮想カメラ(視点)が複数存在する場合には、それぞれの仮想カメラから見える画像を分割画像として1画面に表示できるように画像を生成することができる。
【0116】
頂点処理やピクセル処理は、シェーディング言語によって記述されたシェーダプログラムによって、ポリゴン(プリミティブ)の描画処理をプログラム可能にするハードウェア、いわゆるプログラマブルシェーダ(頂点シェーダやピクセルシェーダ)により実現される。プログラマブルシェーダでは、頂点単位の処理やピクセル単位の処理がプログ ラム可能になることで描画処理内容の自由度が高く、従来のハードウェアによる固定的な描画処理に比べて表現力を大幅に向上させることができる。
【0117】
そして、画像生成部130は、オブジェクトを描画する際に、ジオメトリ処理、テクスチャマッピング、隠面消去処理、αブレンディング等を行う。
【0118】
ジオメトリ処理では、オブジェクトに対して、座標変換、クリッピング処理、透視投影変換、或いは光源計算等の処理が行われる。そして、ジオメトリ処理後(透視投影変換後)のオブジェクトデータ(オブジェクトの頂点の位置座標、テクスチャ座標、色データ(輝度データ)、法線ベクトル、或いはα値等)は、記憶部170に記憶される。
【0119】
テクスチャマッピングは、記憶部170に記憶されるテクスチャ(テクセル値)をオブジェクトにマッピングするための処理である。具体的には、オブジェクトの頂点に設定(付与)されるテクスチャ座標等を用いて記憶部170からテクスチャ(色(RGB)、α値などの表面プロパティ)を読み出す。そして、2次元の画像であるテクスチャをオブジェクトにマッピングする。この場合に、ピクセルとテクセルとを対応づける処理や、テクセルの補間としてバイリニア補間などを行う。
【0120】
隠面消去処理としては、描画ピクセルのZ値(奥行き情報)が入力されるZバッファ(奥行きバッファ)を用いたZバッファ法(奥行き比較法、Zテスト)による隠面消去処理を行うことができる。すなわちオブジェクトのプリミティブに対応する描画ピクセルを描画する際に、Zバッファに入力されるZ値を参照する。そして参照されたZバッファのZ値と、プリミティブの描画ピクセルでのZ値とを比較し、描画ピクセルでのZ値が、仮想カメラから見て手前側となるZ値(例えば小さなZ値)である場合には、その描画ピクセルの描画処理を行うとともにZバッファのZ値を新たなZ値に更新する。
【0121】
αブレンディング(α合成)は、α値(A値)に基づく半透明合成処理(通常αブレンディング、加算αブレンディング又は減算αブレンディング等)のことである。
【0122】
なお、α値は、各ピクセル(テクセル、ドット)に関連づけて記憶できる情報であり、例えば色情報以外のプラスアルファの情報である。α値は、マスク情報、半透明度(透明度、不透明度と等価)、バンプ情報などとして出力できる。
【0123】
音生成部140は、処理部101で行われる種々の処理の結果に基づいて音処理を行い、BGM、効果音、又は音声などのゲーム音を生成し、音出力部192に出力する。
【0124】
3.サーバ装置
次に、図3を用いて本実施形態におけるサーバ装置200の構成について説明する。なお、図3は、本実施形態のサーバ装置200の構成を示す構成図である。また、本実施形態のサーバ装置200は、図3の構成に限定されず、その一部の構成要素を省略すること、他の構成要素を追加するなどの種々の変形実施が可能である。
【0125】
サーバ用記憶部210は、管理・制御部201及び通信のワーク領域となるもので、その機能はRAM(DRAM)などにより実現できる。そしてゲームプログラム及び操作入力データを含む各種のゲームデータは、このサーバ用記憶部210に保持される。
【0126】
サーバ用通信部220は、有線及び無線のネットワークを介して外部(他のゲーム端末装置100)との間で通信を行うものであり、その機能は、通信用ASICまたは通信用プロセッサなどのハードウェアまたは通信用ファームウェアにより実現できる。
【0127】
管理・制御部201(プロセッサ)は、各サーバ装置200から送信された各操作入力データの配信管理を行うとともに、同一のオブジェクト空間において実行されているゲームを管理する。
【0128】
管理・制御部201は、サーバ用記憶部210をワーク領域として各種処理を行う。この管理・制御部201の機能は、各種プロセッサ(CPU、GPU等)、ASIC(ゲートアレイ等)などのハードウェア及び/またはプログラムにより実現できる。
【0129】
管理・制御部201は、ゲーム実行管理部202、ネットワーク管理部203、及び、通信管理制御部204を含む。なお、これらの一部を省略する構成としてもよい。
【0130】
ゲーム実行管理部202は、同一のゲーム空間を共有するためのゲーム端末装置100のマッチング、各ゲーム端末装置100とのデータの授受を行うために、同一のゲーム空間を共有するゲーム端末装置100毎に設定するID(すなわち、セッションID)の管理、各ゲーム端末装置100から送信されたまたは各ゲーム端末装置100に配信するデータの管理、マッチング及びセッションIDに基づいて実行されるゲームの管理(各種のゲーム処理におけるシーケンスを管理)など、ネットワークを介して同一のゲーム空間を共有する複数のゲーム端末装置100の管理と当該ゲームの実行に伴う各ゲーム端末装置100の管理を行う。
【0131】
特に、ゲーム実行管理部202は、各ゲーム端末装置100間とのデータ管理をも行うようになっており、受信した各ゲーム端末装置100から送信された絶対値としての操作入力データから、各ゲーム端末装置100における各受信した操作入力データについて、前回の操作入力データからの差分の情報(以下、「差分情報」ともいう。)を認識し、当該認識した差分情報を操作入力データとしてパケット生成管理部205に出力する。
【0132】
ネットワーク管理部203は、本実施形態の対戦ゲームシステム10で必要となるネットワーク情報を取得して各ゲーム端末装置100を管理する処理等を行う。特に、本実施形態のネットワーク管理部203は、同一のオブジェクト空間を共有してゲームを行う各ゲーム端末装置100に個別に設定されるゲーム端末装置100の識別情報(オンラインゲームに参加できるゲーム端末装置100を識別するために個別に付与されたデータ)に対応付けられたパケットの送信先を指定する宛先情報を取得し、管理する処理を行う。
【0133】
通信管理制御部204は、各ゲーム端末装置100に送信するパケットデータを生成する処理、受信したパケットデータに含まれる操作入力データをサーバ用記憶部210に記憶する処理、及び、その他のパケットの送受信に関する制御処理等を行う。
【0134】
また、通信管理制御部204は、各ゲーム端末装置100との接続が確立されてから接続が切断されるまで、パケットデータを互いに送受信する処理を行うことができる。
【0135】
この通信管理制御部204には、各ゲーム端末装置100に送信するパケットデータの生成及び送信管理を行うパケット生成管理部205を含む。なお、本実施形態のパケット生成管理部205は、本発明の生成手段、配信制御手段及び記憶制御手段を構成する。
【0136】
パケット生成管理部205は、同一のゲーム空間において複数のゲーム端末装置100を連動させるために、ゲーム実行管理部202によって管理されるゲームの進行に伴って発行されるシーケンスIDに基づいて、各ゲーム端末装置100に送信するためのパケットデータの生成を行う。
【0137】
具体的には、パケット生成管理部205は、各パケットデータのヘッダーの送信先IPアドレスと送信先ポート番号には、各ゲーム端末装置100のIPアドレスと使用するポート番号を指定するとともに、ヘッダーの送信元のIPアドレスと送信元ポート番号に、サーバ装置200のIPアドレスと使用するポート番号を指定し、データサイズ、チェックサムとともに、各種のゲームデータ(アプリケーションデータ)を有するパケットデータを生成する。
【0138】
特に、パケット生成管理部205は、各ゲーム端末装置100との通信の確立、ゲームを開始する処理が実行されたとき、または、ゲームを終了する処理が実行されたときなど、各ゲーム端末装置100との必要なデータの授受を行う際に、及び、ゲーム中において各ゲーム端末装置100から送信された操作入力データを受信するとともに、受信した各操作入力データを所定のタイミング毎に操作入力データ群を有するパケットデータとして各ゲーム端末装置100に配信する。
【0139】
具体的には、パケット生成管理部205は、各パケットデータに設定する冗長データを生成しつつ、所定のフレームレートに応じて、生成した冗長データと受信した各ゲーム端末装置100における操作入力データ群とを有するパケットデータを生成し、生成したパケットデータを各ゲーム端末装置100に配信するとともに、送信した各パケットデータの操作入力データ群をシーケンスIDとともにサーバ用記憶部210に記憶する。
【0140】
例えば、パケット生成管理部205は、フレームレートが60fpsである場合には、1/60秒毎の各ゲーム端末装置100の操作入力データ群を2つ組みにして、1/30秒毎に、配信される順番、すなわち、シーケンスIDを付与しつつ、同一のゲーム空間を共有する各ゲーム端末装置100における当該組された2つの操作入力データ群と冗長データをパケットデータのペイロードに設定する。
【0141】
なお、本実施形態では、操作入力データ群を有するパケットデータには、各ゲーム端末装置100から再送が要求された操作入力データを示す再送データと、各ゲーム端末装置100から送信された追加データと、がパケットデータに含まれる場合もある。
【0142】
また、本実施形態において用いる操作入力データ群を有するパケットデータ、冗長データの生成原理、パケットロストの検出処理、及び、パケットロストされたパケットデータ(具体的には操作入力データ群)の復元処理については後述する。
【0143】
4.操作入力データを有するパケットデータのデータ構造
4.1 各ゲーム端末装置からサーバ装置に送信されるパケットデータ
【0144】
次に、図4を用いて各ゲーム端末装置100からサーバ装置200に送信される操作入力データを有するパケットデータについて説明する。なお、図4は、各ゲーム端末装置100からサーバ装置200に送信される操作入力データを有するパケットデータの構造を示す構造図の一例である。
【0145】
このパケットデータは、各ゲーム端末装置100からサーバ装置200に送信されるデータであって、単一のゲーム端末装置100における操作入力データを有している。
【0146】
具体的には、このパケットデータには、図4に示すように、同一のゲーム空間を共有するゲーム装置のうちの自機に設定され、サーバ装置200において処理を行うために設定されたセッションIDと、再送要求の項目数を示す再送要求項目数を示す情報と、追加される追加データのサイズを示す追加データサイズの情報と、1フレーム目の操作入力データ及び2フレーム目の操作入力データの2つの操作入力データと、追加データの内容を示す追加データと、再送が必要なシーケンスIDが示される再送要求データと、が含まれる。
【0147】
なお、追加データと再送要求データは、オプションとしてのデータであり、パケット生成部121の制御の下、各データの追加が判断される。
【0148】
操作入力データとしては、図4に示すように、オンラインを示すフラグ情報(以下、「オンラインフラグ情報」という。)の他に、操作レバーや操作ペダルのアナログ入力値、及び、ボタンやトリガーなど各種スイッチのオン/オフ情報が含まれる。
【0149】
なお、本実施形態の各操作入力データは、固定長のフルサイズの絶対値で示されたデータであり、前フレームからの差分を示すデータではない。ただし、各操作入力データは、このような差分データであってもよい。
【0150】
また、このパケットデータには、冗長データが含まれていないが、サーバ装置200から配信されるパケットデータと同様に、他の操作入力データに基づいて生成される冗長データを含むように構成してもよい。
【0151】
4.2 サーバ装置200から各ゲーム端末装置100に配信されるパケットデータ
次に、図5を用いてサーバ装置200からに送信されるパケットデータについて説明する。なお、図5は、各ゲーム端末装置100からサーバ装置200に送信されるパケットデータの構造を示す構造図の一例である。
【0152】
このパケットデータは、サーバ装置200から各ゲーム端末装置100に送信されるデータであって、各ゲーム端末装置100の全てにおける所定のタイミングの操作入力データ、すなわち、操作入力データ群を有している。
【0153】
また、パケットデータに含まれる操作入力データ群は、データ量を削減するために、固定長のフルサイズの絶対値で示されたデータではなく、前フレームとの差分を示す差分データとして配信される。
【0154】
具体的には、パケットデータには、図4に示すように、ゲーム空間を共有する全てのゲーム端末装置100における操作入力データが含まれ、ゲームシーケンスに沿って提供される。
【0155】
また、パケットデータには、ゲームシーケンスのIDを示すシーケンスIDとともに、データヘッダと、第1フレーム及び第2フレームの更新情報を特定するためのそれぞれのフラグ情報(以下、「第1フレームフラグ情報」及び「第2フレームフラグ情報」という。)と、第1フレーム及び第2フレームの差分情報による操作入力データ(以下、「第1フレーム操作入力データ」及び「第2フレーム操作入力データ」という。)と、追加データと、後述するように生成された冗長データと、ゲーム端末装置100からの要求に対する再送データ(操作入力データ群)と、が含まれる。
【0156】
データヘッダには、各フレームにおける操作入力データの更新の有無を示す情報、追加データのサイズを示す情報、冗長データのサイズを示す。
【0157】
操作入力データ群には、上述のゲーム端末装置100から送信されるパケットデータと同様の各操作に関する情報が含まれるが、これらの情報は、前フレームとの差分情報として設定される。また、操作入力データ群には、データ自体の更新がなければ、該当するデータは含まれない。
【0158】
なお、追加データと再送データは、オプションとしてのデータであり、パケット生成管理部の制御の下、各データの追加が判断される。
【0159】
5.本実施形態の手法
5.1 冗長データの生成原理とパケットロストの復元原理
次に、本実施形態において用いられるパケットデータに含まれる冗長データの生成原理とパケットロストの復元原理について説明する。
【0160】
5.1.1 冗長データの生成原理における第1の特徴(基本的特徴)
まず、本実施形態における冗長データの生成原理における第1の特徴(基本的特徴)について説明する。
【0161】
本実施形態のサーバ装置200は、上述のように、各ゲーム端末装置100において、自機及び他機のアプリケーションデータに基づいてリアルタイム処理を実行させるために、UDPプロトコルなどの無手順方式に従いつつ、パケットロストに対する耐性を強化したパケットデータを当該アプリケーションデータの授受に用いる。
【0162】
具体的には、サーバ装置200は、アプリケーションデータ(実データ)としての操作入力データを配信する際に、各パケットデータにそれぞれ設定される冗長データを生成するとともに、上述のように、各ゲーム端末装置100の操作入力データ群と冗長データを含むパケットデータを生成し、当該生成したパケットデータの各ゲーム端末装置100への配信を制御する。そして、サーバ装置200は、配信する一のパケットデータに含まれる各ゲーム端末装置100の操作入力データ群を、シーケンスID毎に保持しつつ順次サーバ用記憶部210に記憶する。
【0163】
特に、サーバ装置200は、シーケンスID毎にサーバ用記憶部210に記憶された複数の操作入力データ群の中から、生成される冗長データが設定されるパケットデータよりも過去に配信されたパケットデータに含まれる3以上の操作入力データ群を特定し、特定した操作入力データ群について排他的論理和の演算を実行し、該当するパケットデータにおける冗長データを生成する。
【0164】
このとき、排他的論理和の演算に用いる3以上の操作入力データ群には、当該3以上の操作入力データ群における他の操作入力データ群とは、シーケンスIDが不連続となる少なくとも1の操作入力データ群が含まれる。
【0165】
通常、各パケットデータに他のパケットデータまたは当該他のパケットデータに含まれるアプリケーションデータに基づいて生成された冗長データが含まれている場合には、パケットロストされたデータを用いて生成された冗長データと、当該冗長データの生成に用いたパケットロストされたデータ以外のアプリケーションデータと、に基づいてパケットロストされたアプリケーションデータを復元することができる。
【0166】
例えば、異なる3つのパケットデータにそれぞれ含まれるアプリケーションデータについて排他的論理和の演算を行うことによって冗長データが生成されている場合であって、パケットロストされたパケットデータに含まれるアプリケーションデータ(以下、単に「パケットロストされたアプリケーションデータ」ともいう。)を復元する場合には、パケットロストされたアプリケーションデータを用いて生成された冗長データと、当該パケットロストされたパケットデータ以外の2つのパケットデータに含まれるアプリケーションデータと、について排他的論理和の演算を行うことによって当該パケットロストされたアプリケーションデータが復元されることになる。
【0167】
このとき、2つのアプリケーションデータがゲーム端末装置100などの受信装置において受信されれば、該当する冗長データを受信後に迅速にパケットロストされたアプリケーションデータを復元することができる。
【0168】
また、当該冗長データについてもパケットロストが発生した後に迅速に取得することができれば、パケットロストされたアプリケーションデータを復元するまでの時間を更に短縮することができる。
【0169】
したがって、パケットロストされたアプリケーションデータを確実に、かつ、迅速に復元するためには、当該パケットロストされたパケットデータ以外の2つのパケットデータに含まれるアプリケーションデータを確実に受信させておくこと、及び、受信装置において冗長データを迅速に取得することが重要となる。
【0170】
また、冗長データが、多くのアプリケーションデータに基づいて生成されていると、パケットロストされたアプリケーションデータを復元させるための計算方法(計算パターン)も多く存在することになり、連続してパケットロストが発生した場合であっても、アプリケーションデータを復元させることができる可能性が極めて高くなる。
【0171】
そこで、本実施形態においては、上述のように、冗長データの生成に用いる3以上のアプリケーションデータとしての複数の操作入力データ群を用いるとともに、かつ、冗長データの生成に用いる操作入力データ群(以下、「冗長データ生成用操作入力データ群」という。)において他の冗長データ用操作入力データとシーケンスID(すなわち、配信順)が不連続となる操作入力データ群(以下、「冗長データ生成用離隔操作入力データ群」という。)を用いている。
【0172】
すなわち、本実施形態においては、冗長データを多くの構成要素から構成させつつ、かつ、当該構成要素の一部を他の構成要素から離隔させること、すなわち、冗長データを構成するアプリケーションデータを分散して提供させることによって、連続してパケットロストが発生した場合であっても、受信装置において分散されて提供させ、確実に受信された操作入力データ群を復元に用いることができるようになっている。
【0173】
特に、本実施形態においては、パケットロストされたパケットデータに設定された冗長データの生成時に用いられた操作入力データ群は、パケットロストされた際には原則的に既にゲーム端末装置100において受信されているので、パケットロスト直後のパケットデータに設定された冗長データによって当該パケットロストされた操作入力データ群を復元することができるようになっている。
【0174】
したがって、本実施形態においては、受信済みのパケットデータによってパケットロストされた操作入力データ群の復元を確実に行うことができるので、パケットロストされた操作入力データ群の再送要求をサーバ装置200に実行することなく、かつ、それに伴ってパケットロストされた操作入力データ群の受信を待つ必要がないので、リアルタイム処理などの迅速な処理が要求されるゲーム処理を適切に実行させることができるようになっている。
【0175】
5.1.2 冗長データの生成原理における第2の特徴
次に、本実施形態における冗長データの生成原理における第2の特徴について説明する。
【0176】
本実施形態においては、排他的論理和の演算に用いるm個の操作入力データ群には、シーケンスIDが連続しているn(2≦n<m)個の操作入力データ群(すなわち、連続したシーケンスIDを有するパケットデータに含まれる操作入力データ群)が含まれている。
【0177】
通常、生成された冗長データにおいて、全ての冗長データ生成用操作入力データ群が他の冗長データ生成用操作入力データのシーケンスIDが離隔している場合には、2またはそれ以上のパケットロストが連続して発生した場合に、多くの冗長データによってそれぞれのパケットロストされた操作入力データ群を復元させなければならい。
【0178】
例えば、
(A)冗長データが設定されるパケットデータ(基準パケットデータ)の1つ前、3つ前及び5つ前のパケットデータに含まれる操作入力データ群の3つの操作入力データ群に基づいて冗長データを生成する場合(以下、「(A)条件」という。)と、
(B)冗長データが設定される基準パケットデータの1つ前、2つ前及び5つ前のパケットデータに含まれる操作入力データ群の3つの操作入力データ群に基づいて冗長データを生成する場合(以下、「(B)条件」という。)と、
を比較すると、ゲーム端末装置100などの受信装置によって基準パケットデータの3つ前から5つ前の3つ操作入力データ群が連続してパケットロストした場合には、(B)条件の場合に比べて、(A)条件の方が、パケットロストされた操作入力データ群を復元するためには、パケットロストがされてから復元するまで時間は、長時間となる。
【0179】
すなわち、(B)条件においては、基準パケットデータの冗長データによってのみ復元可能であるのに比べて、(A)条件においては、当該基準パケットデータだけでなく、他の基準パケットデータによって3つ前または5つ前の操作入力データ群を復元しつつ、当該基準パケットデータによって5つ前または3つ前の操作入力データ群を復元しなければならず、連続してパケットロストされた全ての操作入力データ群を復元するための時間は。長時間となる。
【0180】
なお、この場合であって後者(B)条件において、基準パケットデータの1つ前、4つ前及び5つ前のパケットデータに含まれる操作入力データ群の3つの操作入力データ群に基づいて冗長データを生成する場合と比べても、(A)条件の場合には、連続してパケットロストされた全ての操作入力データを復元するための時間は、長時間となる。
【0181】
そこで、本実施形態では、冗長データ生成用操作入力データに、シーケンスIDが連続している操作入力データを含ませることによって、連続したパケットロストへの耐性を向上させつつ、パケットロストされた実データにおける復元の容易性及び迅速性をバランスよく実現することができる。
【0182】
5.1.3 冗長データの生成原理における第3の特徴
次に、本実施形態における冗長データの生成原理における第3の特徴について説明する。
【0183】
本実施形態においては、m個の冗長データ生成用操作入力データ群において、冗長データ生成用離隔操作入力データ群のシーケンスID(α1)と、シーケンスIDが連続する他の冗長データ生成用操作入力データ群のうち最新のシーケンスID(αnew2)または最先のシーケンスID(αold2)と、については、下記の(式1)または(式2)の何れかの関係を有している。
【0184】
α1 = αnew2+(n+1) ・・・(式1)
【0185】
α1 = αold2−(n+1) ・・・(式2)
【0186】
すなわち、本実施形態においては、冗長データ生成用離隔操作入力データ群として、最新の冗長データ生成用操作入力データ群または最先の冗長データ生成用操作入力データ群とn+1以上離れた冗長データ生成用操作入力データ群を用いている。
【0187】
例えば、上述のように、冗長データが設定される基準パケットデータの1つ前、2つ前及び5つ前のパケットデータに含まれる3つの操作入力データ群に基づいて冗長データを生成する場合には、5個前のパケットデータに含まれる操作入力データ群が冗長データ生成用離隔操作入力データ群(α1)であり、2個前のパケットデータに含まれる操作入力データ群が、シーケンスIDが連続する他の冗長データ生成用操作入力データ群のうち最先のシーケンスID(αold2)である。
【0188】
すなわち、この場合においては、当該基準パケットデータの1個前及び2個前のパケットデータに含まれる操作入力データ群によって、連続する他の冗長データ生成用操作入力データ群が「n=2」となり、5個前のパケットデータに含まれる操作入力データ群と2個前のパケットデータに含まれる操作入力データ群とは、パケットデータとして「3」個離隔されている。
【0189】
また、ゲーム端末装置100などの受信装置においては、パケットロストされた操作入力データ群を復元する際に特定された少なくとも1の操作入力データ群が含まれるパケットデータの配信順P1と、当該復元をする際に特定された冗長データを含むパケットデータの配信順P2とについては、下記の(式3)の関係を有することになる。
【0190】
P1=P2±(m+n) ・・・(式3)
【0191】
例えば、冗長データが設定される基準パケットデータの1つ前、2つ前及び5つ前のパケットデータに含まれる3つの操作入力データ群に基づいて冗長データを生成する場合には、基準パケットデータに含まれる冗長データのシーケンスIDと当該冗長データを基準に冗長データ生成用離隔操作入力データ群に該当する操作入力データ群とは、(式3)に示されるように、シーケンスIDとして「5」離隔されている。
【0192】
したがって、後述するようにゲーム端末装置100などの受信装置によって連続して2つのパケットデータがパケットロストした場合にあっては、連続してパケットロストされた直後のパケットデータの冗長データと操作入力データ群、当該パケットデータの次に受信されたパケットデータにおける冗長データ、及び、パケットロストされたパケットデータの前に既に受信していた2つの操作入力データ群に基づいて、パケットロストされた操作入力データの復元を行うことができるようになっている(図8参照)。
【0193】
このような特徴を有することによって、n個連続してパケットロストが発生した場合であっても、当該冗長データ生成用離隔操作入力データについてはパケットロストされずに確実に受信装置に受信させることができるようになっており、復元に用いる実データを的確に確保させて連続したパケットロストへの耐性を向上させることができるようになっている。
【0194】
5.1.4 冗長データの生成原理における第4の特徴
次に、本実施形態における冗長データの生成原理における第4の特徴について説明する。
【0195】
冗長データ生成用操作入力データには、冗長データが設定されるパケットデータの直前に配信された操作入力データ群が含まれる。
【0196】
すなわち、ゲーム端末装置100などの受信装置において、復元する操作入力データ群を復元する際に特定された冗長データが含まれるパケットデータが、パケットロストされたパケットデータの配信後(具体的には、配信直後)のシーケンスIDを有している。
【0197】
このため、受信装置においてパケットロストが発生した場合に、当該パケットロストされた操作入力データ群を用いて生成された冗長データを迅速に取得することができるので、迅速にパケットロストされた操作入力データ群を復元することができるようになっている。
【0198】
そして、上述の各条件を具備する冗長データ生成用操作入力データ群としては、3(m=3)個の操作入力データ群を用いるとともに、2(n=2)個のシーケンスIDが連続した操作入力データ群を用いるようになっており、例えば、冗長データが含まれるパケットデータを基準に、1個前、2個前及び5個前の操作入力データ群を用いている。
【0199】
本実施形態においては、このような冗長データ生成用操作入力データ群を用いることによって、連続したパケットロストへの耐性の向上と、パケットロストされた実データにおける復元の容易性及び迅速性とのバランスが優れた冗長データを有するパケットデータをゲーム端末装置100などの受信装置に提供することができるようになっている。
【0200】
5.2 具体例
5.2.1 冗長データの具体例
次に、図6を用いて本実施形態において生成される冗長データの具体例について説明する。なお、図6は、本実施形態において生成される冗長データの一例であって、その構造を示す図である。
【0201】
パケット生成管理部205は、上述するように、各パケットデータを生成する際に、パケットデータに含まれる操作入力データ群を、シーケンスID(すなわち、配信順の情報)を保持しつつ、サーバ用記憶部210に順次記憶し、当該記憶された複数の操作入力データ群に基づいて所定の演算を実行して各冗長データを生成するようになっている。
【0202】
特に、パケット生成管理部205は、冗長データを設定する基準パケットデータの1個前、2個前及び5個前のパケットデータに含まれる操作入力データ群について排他論理和の演算を実行し、当該基準パケットデータに含ませるべき冗長データを生成する。
【0203】
なお、シーケンスID毎の各操作入力データ群は、前フレームからの差分値によって示される情報であるため、排他的論理和の演算を実行する際に、データ長が同一とならず、異なる場合もある。そこで、パケット生成管理部205は、冗長データを設定する基準パケットデータの1個前、2個前及び5個前のパケットデータに含まれる操作入力データ群について排他論理和の演算を実行する際に、データ長の短い操作入力データ群については、「0」を追加することによって、データ長を揃えつつ、当該排他的論理和を実行する。
【0204】
例えば、本実施形態のサーバ装置200におけるパケット生成管理部205は、図6に示すように、所定の期間においては、操作入力データA〜Lと冗長データPa〜Plとを含む第1パケットデータ500−1〜第12パケットデータ500−12を順次生成し、各ゲーム端末装置100に配信する。
【0205】
このような場合において、例えば、パケット生成管理部205は、第6パケットデータ500−6を生成する場合には、当該第6パケットデータ500−6を基準に5個前のパケットデータ500−1に含まれる操作入力データ群Aと、2個前のパケットデータ500−4に含まれる操作入力データ群Dと、について排他的論理和を演算しつつ、当該排他的論理和の演算結果と、1個前のパケットデータ500−5に含まれる操作入力データ群Eと、について排他的論理和を演算し、冗長データPfを生成する。
【0206】
5.2.2 冗長データに基づくパケットロストの復元例
次に、図7〜図10の各図を用いて本実施形態のサーバ装置200において生成されるパケットデータに含まれる冗長データの復元例について説明する。図7〜図10は、本実施形態のサーバ装置において生成されるパケットデータに含まれる冗長データの復元処理について説明するための図である。
【0207】
各ゲーム端末装置100は、図6に示すようなパケットデータを受信し、当該受信したパケットデータに基づいて、サーバ装置200から配信された際のシーケンスIDを認識しつつ、未受信のパケットデータ(すなわち、パケットロスト)を検出するパケットロスト検出部122と、未受信のパケットデータが検出された場合に、未受信パケットデータのシーケンスIDを基準に、m個の受信したパケットデータにそれぞれ含まれる少なくとも1の冗長データと2以上の操作入力データ群を特定し、当該特定した冗長データ及び操作入力データ群について排他的論理和の演算を実行し、未受信のパケットデータに含まれる操作入力データ群を復元するデータ復元部123と、を有している。
【0208】
また、各ゲーム端末装置100は、シーケンスIDを維持しつつ、受信したパケットデータが記憶される第2のバッファ178と、を有している、
【0209】
(単一のパケットデータがパケットロストした場合)
例えば、パケットロスト検出部122が、図6に示すように、生成されたパケットデータを受信する場合であって、第5パケットデータが未受信のパケットデータ(すなわち、パケットロスト)であると検出した場合には、データ復元部123は、図7に示すように、第5パケットデータの次のシーケンスIDを有する第6パケットデータの冗長データPfと、当該冗長データPfの生成時に用いられ、パケットロストされたパケットデータ以外のパケットデータ、すなわち、第1パケットデータ及び第4パケットデータに含まれる操作入力データ群A及びDを第2のバッファ178から特定する。
【0210】
そして、データ復元部123は、冗長データPfと操作入力データ群Aとの排他的論理和を演算しつつ、その結果と操作入力データ群Dとの排他的論理和を演算し、第5パケットデータに含まれる操作入力データ群Eを復元する。
【0211】
なお、この場合において、1/30秒ごとにパケットデータが配信されているとすると、データ復元による受信遅延は、1/30秒となる。
【0212】
(連続した2のパケットデータがパケットロストした場合)
例えば、パケットロスト検出部122が、図6に示すように、生成されたパケットデータを受信する場合であって、第5パケットデータ及び第6パケットデータのシーケンスIDが連続した2のパケットデータがパケットロストであると検出した場合には、データ復元部123は、図8に示すように、第6パケットデータの次の2つのシーケンスIDを有する第7パケットデータ及び第8の冗長データPg及びPhと、当該冗長データPg及びPhの生成時に用いられた、パケットロストされたパケットデータ以外のパケットデータ、すなわち、第2パケットデータ、第3パケットデータ及び第7パケットデータに含まれる操作入力データ群B、C及びGを第2のバッファから特定する。
【0213】
そして、データ復元部123は、第5パケットデータ及び第6パケットデータに含まれる操作入力データ群E及びFを復元する。
【0214】
具体的には、まず、データ復元部123は、冗長データPhと操作入力データ群Cとの排他的論理和を演算しつつ、その結果と操作入力データ群Gとの排他的論理和を演算し、第6パケットデータに含まれる操作入力データ群Fを復元する。
【0215】
そして、データ復元部123は、冗長データPgと操作入力データ群Bとの排他的論理和を演算しつつ、その結果と復元した操作入力データ群Gとの排他的論理和を演算し、第6パケットデータに含まれる操作入力データ群Fを復元する。
【0216】
なお、この場合において、1/30秒ごとにパケットデータが配信されているとすると、データ復元による受信遅延は、3/30秒となる。
【0217】
(連続した3のパケットデータがパケットロストした場合)
例えば、パケットロスト検出部122が、図6に示すように、生成されたパケットデータを受信する場合であって、第5パケットデータ〜第7パケットデータのシーケンスIDが連続する3つのパケットデータがパケットロストであると検出した場合には、データ復元部123は、図9に示すように、第7パケットデータの次の3つのシーケンスIDを有する第8パケットデータ〜第10パケットデータの冗長データPh、Pi及びPjと、当該冗長データPh、Pi及びPjの生成時に用いられた、パケットロストされたパケットデータ以外のパケットデータ、すなわち、第3パケットデータ及び第4パケットデータと第8パケットデータ及び第9パケットデータとに含まれる操作入力データ群C、D、H及びIを第2のバッファ178から特定する。
【0218】
そして、データ復元部123は、第5パケットデータ〜第7パケットデータに含まれる操作入力データ群E、F及びGを復元する。
【0219】
具体的には、まず、データ復元部123は、冗長データPiと操作入力データ群Dとの排他的論理和を演算しつつ、その結果と操作入力データ群Hとの排他的論理和を演算し、第7パケットデータに含まれる操作入力データ群Gを復元する。
【0220】
次に、データ復元部123は、冗長データPhと操作入力データ群Cとの排他的論理和を演算しつつ、その結果と復元された操作入力データ群Gとの排他的論理和を演算し、第6パケットデータに含まれる操作入力データ群Fを復元する。
【0221】
そして、データ復元部123は、冗長データPiと操作入力データ群Hとの排他的論理和を演算しつつ、その結果と操作入力データ群Iとの排他的論理和を演算し、第5パケットデータに含まれる操作入力データ群Eを復元する。
【0222】
なお、この場合において、1/30秒毎にパケットデータが配信されているとすると、データ復元による受信遅延は、5/30秒となる。
【0223】
(連続した4のパケットデータうち3のパケットデータがパケットロストした場合)
例えば、パケットロスト検出部122が、図6に示すように、生成されたパケットデータを受信する場合であって、第5パケットデータ、第6パケットデータ及び第8パケットデータがパケットロストであると検出した場合には、データ復元部123は、図9に示すように、第7パケットデータ、第9パケットデータ及び第10パケットデータの冗長データPg、Pi及びPjと、当該冗長データPg、Pi及びPjの生成時に用いられた、パケットロストされたパケットデータ以外のパケットデータ、すなわち、第2パケットデータ、第4パケットデータ、第7パケットデータ及び第9パケットデータに含まれる操作入力データ群B、D、G及びIを記憶部から特定する。
【0224】
そして、データ復元部123は、第5パケットデータ、第6パケットデータ及び第8パケットデータに含まれる操作入力データ群E、F及びHを復元する。
【0225】
具体的には、まず、データ復元部123は、冗長データPiと操作入力データ群Dとの排他的論理和を演算しつつ、その結果と操作入力データ群Gとの排他的論理和を演算し、第8パケットデータに含まれる操作入力データ群Hを復元する。
【0226】
次に、データ復元部123は、冗長データPjと復元された操作入力データ群Hとの排他的論理和を演算しつつ、その結果と操作入力データ群Iとの排他的論理和を演算し、第5パケットデータに含まれる操作入力データ群Eを復元する。
【0227】
そして、データ復元部123は、冗長データPgと操作入力データ群Bとの排他的論理和を演算しつつ、その結果と復元された操作入力データ群Eとの排他的論理和を演算し、第6パケットデータに含まれる操作入力データ群Fを復元する。
【0228】
なお、この場合において、1/30秒毎にパケットデータが配信されているとすると、データ復元による受信遅延は、5/30秒となる。
【0229】
5.3 パケットロストされたデータの再送処理
本実施形態においては、上述のように冗長データを有するパケットデータを用いて各ゲーム端末装置100に操作入力データ群を配信するようになっている。
【0230】
しかしながら、4つ以上連続してパケットロストが続いた場合には、これらのパケットロストされたデータを復元するためには、パケットロストしてから復元するまでの時間が長時間となる。
【0231】
例えば、1/30秒毎にパケットデータが配信されている場合であって、4つ連続してパケットロストが発生した場合には、パケットロストされたパケットデータに含まれる操作入力データ群の復元には7/30秒の時間が必要となり、5つの連続してパケットロストが発生した場合には、パケットロストされたパケットデータに含まれる操作入力データ群の復元には9/30秒時間が必要となる。
【0232】
また、連続してパケットロストされたパケットデータが多くなると、復元自体が行うことができない場合も生ずる。
【0233】
そこで、本実施形態においては、4つ以上のパケットロストが発生した場合には、各ゲーム端末装置100からサーバ装置200に対してパケットロストされたパケットデータに含まれる操作入力データ群の再送要求が実行され、当該再送要求に基づいて該当する操作入力データ群が該当するゲーム端末装置100に配信される。
【0234】
具体的には、各ゲーム端末装置100において、パケットロスト検出部122は、4つ以上連続してパケットロストを検出した場合には、既に受信したパケットデータに基づいて、パケットロストされたパケットデータのシーケンスIDを認識する。
【0235】
そして、パケット生成部121は、当該パケットロストしたシーケンスIDを有する操作入力データ群の再送要求のためのデータを、次にサーバ装置200に送信されるパケットデータにおけるペイロードに再送データとして設定する。
【0236】
一方、サーバ装置200においては、パケット生成管理部205は、当該再送要求が含まれたパケットデータを受信した場合には、該当するゲーム端末装置100に配信するパケットデータのペイロードに再送要求された操作入力データ群(すなわち、再送データ)を設定し、設定した再送データを有するパケットデータを該当するゲーム端末装置100に配信する。
【0237】
このような構成を有することによって、本実施形態の対戦ゲームシステム10は、連続してパケットロストされたパケットデータが多い場合であっても、当該パケットロストされた操作入力データ群を迅速に再取得させることができるので、パケットデータに基づいてリアルタイム処理などの迅速な処理が要求されるゲーム処理を適切に実行させることができる。
【0238】
5.4 ゲーム端末装置及びサーバ装置の処理
5.4.1 サーバ装置におけるパケットデータの生成処理
次に、図11を用いて本実施形態のサーバ装置200におけるパケットデータの生成処理について説明する。なお、図11は、本実施形態のサーバ装置200におけるパケットデータの生成処理の動作を示すフローチャートである。
【0239】
本動作においては、既に各ゲーム端末装置100との通信が実行され、他のゲーム端末装置100とともに同一のゲーム空間への参加が登録されているものとする。また、本動作は、予め定められたタイミング(例えば、1/30フレーム)毎にゲーム実行管理部202と連動して実行するようになっている。
【0240】
まず、パケット生成管理部205は、ゲーム実行管理部202からシーケンスIDを特定するとともに(ステップS101)、特定したシーケンスIDに基づいて冗長データを生成し(ステップS102)、各ゲーム端末装置100において同一のタイミングで配信する同一のシーケンスIDを有するパケットデータをそれぞれ生成する(ステップS103)。
【0241】
具体的には、パケット生成管理部205は、パケットデータにおける送信元及び送信先の情報など各種の情報を設定しつつ、既に受信された各ゲーム端末装置100の送信すべき各操作入力データを送信用の操作入力データに加工して、すなわち、絶対値で示される各操作入力データを差分値で示される操作入力データからなる操作入力データ群に変換してパケットデータのペイロードに設定する。
【0242】
また、パケット生成管理部205は、特定したシーケンスIDに基づいて既に送信された該当するシーケンスIDを有する各パケットデータから複数の操作入力データ群(例えば、当該特定したシーケンスIDを基準に1個前、2個前及び5個前のシーケンスIDを有するパケットデータ)を特定、すなわち、記憶されているサーバ用記憶部210に記憶された中から抽出する。
【0243】
そして、パケット生成管理部205は、当該特定された各パケットデータに含まれる各操作入力データ群について所定の排他的論理和を演算して冗長データを生成し、当該生成した冗長データをパケットデータのペイロードに設定する。
【0244】
なお、パケット生成管理部205は、1または複数のゲーム端末装置100から再送要求を受信している場合には、該当する操作入力データ群を該当するゲーム端末装置100向けのパケットデータのペイロードに設定する。
【0245】
次いで、パケット生成管理部205は、パケットデータに設定した操作入力データ群をシーケンスIDとともにサーバ用記憶部210に記憶する(ステップS104)。
【0246】
最後に、パケット生成管理部205は、生成したパケットデータをそれぞれ各ゲーム端末装置100に送信し(ステップS105)、本動作を終了させる。
【0247】
5.4.2 ゲーム端末装置におけるパケットデータの復元処理
次に、図12を用いて本実施形態のゲーム端末装置100におけるパケットデータの生成処理について説明する。なお、図12は、本実施形態のゲーム端末装置100におけるパケットデータの復元処理の動作を示すフローチャートである。
【0248】
本動作においては、既にサーバ装置200との通信が実行され、サーバ装置200と既に同期されているとともに、他のゲーム端末装置100とともに同一のゲーム空間への参加が登録されているものとする。また、本動作は、予め定められたタイミング(例えば、1/30フレーム)毎に、ゲーム演算部110と連動して実行する。
【0249】
また、本動作においては、ゲーム処理の実行中、数フレーム分のパケットデータが第2のバッファ178にバッファリングされており、ゲーム演算部110は、第2のバッファ178にバッファリングされたパケットデータに含まれる操作入力データ群に基づいて、所定のタイミング(1/60フレーム)毎にゲーム処理を実行しているものとする。
【0250】
なお、ゲーム演算部110は、サーバ装置200と確立された同期に基づいて。第2のバッファ178に記憶された未処理の操作入力データ群を、シーケンスIDに従って実行し、第2のバッファ178内に未処理の操作入力データ群が無くなった場合には、新たに記憶されるまでその処理を中断する。
【0251】
まず、パケットロスト検出部122は、操作入力データ群を有するパケットデータにおける受信の有無を判定する(ステップS301)。このとき、パケットロスト検出部122は、該当するシーケンスIDを有するパケットデータを受信したと判定した場合には、ステップS303の処理に移行し、当該パケットデータを受信していないと判定した場合には、ステップS302の処理に移行する。
【0252】
次いで、パケットロスト検出部122は、ステップS301の処理において、パケットデータを受信していないと判定した場合には、パケットロストの連続発生回数をカウントするカウンタ(以下、「パケットロストカウンタ」という。)の値に「1」を加算し(ステップS302)、本動作を終了させる。なお、パケットロストカウンタは、例えば、パケットロスト検出部122内に設けられている。
【0253】
次いで、パケットロスト検出部122は、ステップS301の処理において、パケットデータを受信したと判定した場合には、受信したパケットデータのシーケンスIDを認識しつつ、当該受信したパケットデータを当該シーケンスIDとともに第2のバッファ178に記憶する(ステップS303)。
【0254】
次いで、パケットロスト検出部122は、パケットロストカウンタのカウント数が「4」以上であるか否か判定する(ステップS304)。このとき、パケットロスト検出部122は、当該パケットロストカウンタのカウント数が「4」以上である判定した場合には、受信したパケットデータにおいて認識したシーケンスIDに基づいて、パケットロストされたシーケンスIDを特定しつつ、当該パケットロストされたパケットデータの再送要求(具体的には、当該パケットデータに含まれる操作入力データ群の再送要求)をサーバ装置200に送信し(ステップS305)、ステップS311の処理に移行する。また、パケットロスト検出部122は、パケットロストカウンタのカウント数が「4」以上でないと判定された場合には、そのままステップS311の処理に移行する。
【0255】
次いで、パケットロスト検出部122は、受信したパケットデータに再送データが含まれているか否かを判定する(ステップS311)。このとき、パケットロスト検出部122は、再送データが含まれていると判定した場合には、ステップS312の処理に移行し、再送データが含まれていないと判定した場合には、ステップS322の処理に移行する。
【0256】
次いで、パケットロスト検出部122は、受信したパケットデータには再送データが含まれていると判定した場合には、当該再送データ(すなわち、操作入力データ群)をシーケンスIDとともに第2のバッファ178に記憶する(ステップS312)。
【0257】
次いで、パケットロスト検出部122は、パケットロストカウンタをリセットし(ステップS313)、ステップS322の処理に移行する。
【0258】
次いで、パケットロスト検出部122は、パケットロストカウンタの値が「0」か否かを判定し(ステップS322)、パケットロストカウンタの値が「0」と判定した場合には、そのまま本動作を終了させる。
【0259】
他方、パケットロスト検出部122は、パケットロストカウンタの値が「0」でないと判定した場合には、受信したパケットデータに含まれる冗長パケットデータに基づいてパケットロストされたパケットデータに含まれる操作入力データ群の復元可能か否かを判定する(ステップS323)。
【0260】
このとき、パケットロスト検出部122は、パケットロストされたパケットデータに含まれる操作入力データ群の復元可能と判定した場合には、ステップS324の処理に移行し、当該操作入力データ群の復元不能と判定した場合には、本動作を終了させる。
【0261】
次いで、パケットロスト検出部122は、ステップS323の処理において、パケットロストされたパケットデータに含まれる操作入力データ群が復元可能であると判定した場合には、受信したパケットデータのシーケンスIDに基づいて、パケットロストされたパケットデータのシーケンスIDを認識しつつ、データ復元部123に受信したパケットデータに含まれる冗長パケットデータに基づいてパケットロストされたパケットデータに含まれる操作入力データ群を復元させる(ステップS324)。
【0262】
なお、データ復元部123は、パケットロストされた単一のパケットデータに含まれる操作入力データ群だけでなく、2以上のパケットロストが発生している場合には、2以上のパケットデータに含まれる操作入力データ群の復元も行う。
【0263】
次いで、パケットロスト検出部122は、復元した操作入力データ群をシーケンスIDとともにサーバ用記憶部210に記憶し(ステップS325)、本動作を終了させる。
【0264】
以上のように、本実施形態のサーバ装置200は、冗長データの生成に用いるm個の実データを用いるとともに、かつ、冗長データの生成に用いる操作入力データ群においてシーケンスIDが不連続となる冗長データ生成用離隔実データを用いることによって、冗長データを多くの構成要素から構成させつつ、かつ、当該構成要素の一部を他の構成要素から離隔させること、すなわち、冗長データを構成する実データを分散して提供することができるので、連続したパケットロストへの耐性を向上させることができるとともに、的確にロスト実データを復元させることができる。
【0265】
したがって、本実施形態のサーバ装置200は、受信済みのパケットデータによってパケットロストされたパケットデータに含まれる操作入力データ群の復元を確実に行うことができるので、ゲーム端末装置100からサーバ装置200への再送要求及びそれに伴う再送処理などの再取得処理を不要またはその頻度を低減し、リアルタイム処理などの迅速な処理が要求されるゲーム処理を適切に実行させることができる。
【0266】
また、本実施形態のサーバ装置200は、連続してパケットロストが発生した場合に、連続したパケットロストへの耐性を向上させつつ、パケットロストされた実データにおける復元の容易性及び迅速性をバランスよく実現することができる。
【0267】
なお、本実施形態においては、サーバ装置200から各ゲーム端末装置100に操作入力データ群を含むパケットデータを配信する場合に、冗長データを設定しているが、各ゲーム端末装置100からサーバ装置200に操作入力データを含むパケットデータを送信する場合に、冗長データを設定し、パケットロストが発生した場合に、当該冗長データに基づいて当該パケットロストされたデータの復元を行うようにしてもよい。
【0268】
また、本実施形態においては、サーバ装置200において、パケットロストが4以上連続して発生した場合には、再送要求に基づいてパケットロストされたデータを再配信しているが、再送要求を実行する際の連続した発生したパケットロストの数は適宜定めることができるようになっている。
【0269】
また、本実施形態のサーバ装置200は、ゲーム装置100とは異なる専用の装置で実現されているが、サーバ装置200がゲーム装置100の全ての機能を包含して構成され、他のゲーム装置100の親機として上記の実施形態を実現してもよい。
【0270】
また、本実施形態の対戦ゲームシステム10において、ゲーム装置100及びサーバ装置200を用いたクライアントサーバ方式に代えて、複数のゲーム装置100を用いたブルートゥース等の無線通信技術を用いたピアトゥーピア方式によって上記の実施形態を実現してもよい。この場合には、各ゲーム装置100がサーバ装置200の全ての機能を包含して構成される。
【0271】
また、本実施形態においては、サーバ装置100及びゲーム装置200間においてパケットデータによって操作入力データ及び音声データの配信を行うようになっているが、これらのデータに限られず、ゲームキャラクタを形成するためのデータ及びオブジェクト空間内におけるキャラクタの位置データなどキャラクタに関するデータ、効果音の発生情報などのゲームの内容を制御するデータ、並びに、ゲームの得点またはゲームプレーヤに関する情報を含むゲーム中に各ゲーム機に配信されるゲームデータが、パケットデータとして配信されてもよい。
【0272】
この場合には、ゲーム装置100及びサーバ装置200は、上記の冗長データを有するパケットデータによって各種のゲームデータを配信し、当該ゲームデータを受信したゲーム装置100及びサーバ装置200は、上記の手法を用いてパケットデータからゲームデータを復元する。
【符号の説明】
【0273】
10 … 対戦ゲームシステム
100 … ゲーム端末装置
101 … 処理部
110 … ゲーム演算部
111 … オブジェクト空間設定部
112 … 仮想カメラ制御部
113 … 動作処理部
114 … ネットワーク設定部
120 … 通信制御部
121 … パケット生成部
122 … パケットロスト検出部
123 … データ復元部
130 … 画像生成部
140 … 音生成部
160 … 操作部
170 … 記憶部
172 … 主記憶部
174 … 画像バッファ
176 … 第1のバッファ
178 … 第2のバッファ
179 … 各種制御情報記憶部
180 … 情報記憶媒体
190 … 表示部
192 … 音出力部
194 … 補助記憶装置
196 … 通信部
200 … サーバ装置
201 … 管理・制御部
202 … ゲーム実行管理部
203 … ネットワーク管理部
204 … 通信管理制御部
205 … パケット生成管理部
210 … サーバ用記憶部
220 … サーバ用通信部
【技術分野】
【0001】
本発明は、プログラム、ゲーム装置、データ配信装置及びネットワークシステムに関する。
【背景技術】
【0002】
近年、ネットワークを介して他のゲーム装置との間で通信対戦ゲームを行うゲーム装置が脚光を浴びている。また、このような通信対戦ゲームでは、ゲーム装置間において、または、サーバ装置を介して操作データ等のゲームデータの授受が相互に必要となる。
【0003】
例えば、一のゲーム装置は、相手プレーヤが入力した操作データを、他のゲーム装置からネットワークを介して受信し、または、自機に入力した操作データを、ネットワークを介して他のゲーム装置に送信するようになっている。
【0004】
特に、このようなスムーズな通信対戦ゲームを実現するためには、操作データ等のゲームデータを高速な転送速度で通信することが望まれており、例えば、TCP(Transmission Control Protocol)などの信頼性重視の通信プロトコルとは違って、UDP(User Datagram Protocol)などの高速な転送が可能な通信プロトコル(無手順方式)を用いてゲームデータの授受が行われることも多い。
【0005】
一方、UDPなどの無手順方式のプロトコルでは、所与の各データ単位のデータ、すなわち、各パケット(以下、「パケットデータ」ともいう。)の到着や到着順序が保証されず、パケットデータの欠落、すなわち、パケットロスト(以下、「パケットロス」ともいう。)が発生することも多い。したがって、最近では、パケットデータとともにエラー訂正用の訂正データ(すなわち、冗長データ)を送信し、パケットロストが発生した場合に、当該冗長データに基づいてパケットロストされたパケットデータの復元を行うものも登場している。
【0006】
例えば、このようなシステムは、送信装置において、送信するパケットデータについて累積的に排他的論理和を算出するとともに、当該算出した排他的論理和に基づいて訂正データ、すなわち、冗長データを生成し、パケットデータとともに当該冗長データをパケットとして受信装置に送信するとともに、受信装置において、パケットロストが発生した場合に、当該パケットロストが発生した次に受信した冗長データのパケットに基づいてパケットロストが発生したパケットデータを復元するようになっている(例えば、特許文献1)。
【先行技術文献】
【特許文献】
【0007】
【特許文献1】特許第4405875号公報
【発明の概要】
【発明が解決しようとする課題】
【0008】
しかしながら、特許文献1に記載のシステムにあっては、連続してパケットデータがロストした場合には、パケットロストされたデータを次に受信した冗長データによって復元することができず、当該パケットロストとなったパケットデータ自体の再送を要求する必要がある。
【0009】
したがって、当該システムにあっては、パケットロストが発生したパケットデータを復元するまでに長時間を必要とし、ゲーム処理などのリアルタイム処理が適切に実行されず、処理そのものに不具合を発生させることも多い。
【0010】
本発明は、上記課題を解決するためになされたものであり、その目的は、冗長データに基づいてパケットロストされたパケットデータを的確に復元させ、当該パケットデータに基づいてリアルタイム処理などの迅速な処理が要求されるゲーム処理を適切に実行させることまたは実行することが可能なデータ配信装置、ゲーム装置、ネットワークシステム及びプログラムを提供することにある。
【課題を解決するための手段】
【0011】
(1)上記課題を解決するため、本発明のプログラムは、
ネットワークを介して他の通信装置に、ゲーム処理を実行させるためのゲームデータをパケット毎に配信するデータ配信装置に搭載されるプログラムであって、
前記データ配信装置を、
パケット毎のゲームデータであるパケットデータにそれぞれ設定する冗長データを生成する生成手段、
前記ゲーム処理を実行するために用いられる実データと前記生成された冗長データを少なくとも含む前記パケットデータを生成し、当該生成したパケットデータの前記他の通信装置への配信を制御する配信制御手段、及び
前記パケットデータに含まれる前記実データを、前記他の通信装置に配信する際の配信順の情報を保持しつつ、記憶手段に順次記憶する記憶制御手段、
として機能させ、
前記生成手段として、
各パケットデータにおける冗長データを生成する際に、前記記憶手段に記憶された実データの中から、生成される前記冗長データが設定されるパケットデータよりも過去に配信されたパケットデータに含まれるm(m≧3)個の実データを特定し、
前記特定した実データについて排他的論理和の演算を実行し、該当するパケットデータにおける前記冗長データを生成するように機能させるとともに、
前記特定したm個の実データには、当該m個の実データにおける他の実データと前記配信順が不連続となる少なくとも1の実データが含まれる構成を有している。
【0012】
通常、各パケットデータに他のパケットデータまたはそれに含まれるデータに基づいて生成された冗長データが含まれている場合には、パケットロストされたデータを用いて生成された冗長データと、当該冗長データの生成に用いたパケットロストされたデータ以外のデータと、に基づいてパケットロストされたデータを復元することができる。
【0013】
本発明のプログラムは、上記構成により、冗長データの生成に用いるm(m≧3)個の実データを用いるとともに、かつ、冗長データの生成に用いる実データ(以下、「冗長データ生成用実データ」という。)において他の冗長データ用実データと配信順が不連続となる実データ(以下、「冗長データ生成用離隔実データ」という。)を用いることによって、冗長データを多くの構成要素から構成させつつ、かつ、当該構成要素の一部を他の構成要素から離隔させること、すなわち、冗長データを構成する実データを分散して受信装置に提供することができる。
【0014】
すなわち、本発明のプログラムは、連続してパケットロストが発生した場合であっても、ゲーム処理を実行するゲーム装置などの受信装置において分散されて提供されることによって確実に受信された実データを、パケットロストされたパケットデータ(以下、「パケットロストデータ」という。)に含まれる実データ(以下、「ロスト実データ」という。)の復元に用いることができるので、連続したパケットロストへの耐性を向上させることができるとともに、的確にロスト実データを復元させることができる。
【0015】
したがって、本発明のプログラムは、受信済みのパケットデータによってパケットロストされたロスト実データの復元を確実に行うことができるので、ロスト実データの再送要求及びそれに伴う再送処理などのロスト実データの再取得処理を不要またはその頻度を低減し、リアルタイム処理などの迅速な処理が要求されるゲーム処理を適切に実行させることができる。
【0016】
(2)また、本発明のプログラムは、前記特定したm個の実データには、前記配信順が連続している少なくともn(2≦n<m)個の実データが含まれる、構成を有している。
【0017】
この構成により、本発明のプログラムは、配信順が不連続となるデータ生成用離隔実データとともに、配信順が連続しているデータ生成用実データを用いることによって、受信装置において、連続したパケットロストへの耐性の向上させつつ、パケットロストされた実データにおける復元の容易性及び迅速性をバランスよく実現することができる。
【0018】
(3)また、本発明のプログラムは、
前記特定したm個の実データにおける前記配信順が不連続な実データの配信順α1と、前記特定したm個の実データにおける配信順が連続するn個の実データうち最新の配信順(αnew2)または最先の配信順(αold2)と、については、下記の(式1)または(式2)の何れかの関係を有する構成をしている。
α1 = αnew2+(n+1) ・・・(式1)
α1 = αold2−(n+1) ・・・(式2)
【0019】
この構成により、本発明のプログラムは、冗長データ生成用離隔実データとして、当該冗長データの生成に用いられた連続したパケットデータにおける最新の冗長データ生成用実データまたは最先の冗長データ生成用実データとn+1以上離れた冗長データ生成用実データを用いているので、n個連続してパケットロストが発生した場合であっても、当該冗長データ生成用離隔実データについてはパケットロストされずに確実に受信装置に受信させることができる。
【0020】
したがって、本発明のプログラムは、復元に用いる実データを的確に確保させて連続したパケットロストへの耐性を向上させることができる。
【0021】
(4)また、本発明のプログラムは、前記特定したm個の実データには、前記冗長データが設定されるパケットデータの直前に配信された実データが含まれる、構成を有している。
【0022】
この構成により、本発明のプログラムは、受信装置においてロスト実データを復元する際に当該復元に用いる実データを容易にかつ迅速に確保させることができるとともに、パケットロストが発生した際に当該パケットロストデータの次の配信順のパケットデータに含まれる冗長データを用いて実データの復元を行うことができるので、容易にかつ迅速に当該パケットロストされた実データを復元させることができる。
【0023】
(5)また、本発明のプログラムは、前記実データが、ゲーム処理を実行する前記他の通信装置から送信されたゲームデータであって当該他の通信装置で操作入力された操作入力データである、構成を有している。
【0024】
この構成により、本発明のプログラムは、対戦ゲームなどの複数のゲーム装置における操作入力に連動させて実行されるゲームに適用させることができる。
【0025】
(6)また、本発明のプログラムは、
前記データ配信装置を、
プレーヤの操作入力を操作入力データとして受け付ける操作入力手段、及び
前記受け付けた操作入力データに基づいてゲーム処理を実行するゲーム処理手段、
として更に機能させ、
前記実データが、前記受け付けた操作入力データである、構成を有している。
【0026】
この構成により、本発明のプログラムは、対戦ゲームなどの複数のゲーム装置における操作入力に連動させてゲームが実行されるゲーム装置に搭載することができる。
【0027】
(7)上記課題を解決するため、本発明のプログラムは、
ネットワークを介してデータ配信装置から配信されたパケット毎のゲームデータに基づいてゲーム処理を実行するゲーム装置に搭載されるプログラムであって、
パケット毎のゲームデータである各パケットデータには、前記ゲーム処理を実行するために用いられる実データと、前記データ配信装置から自パケットデータより過去に配信されたパケットデータに含まれるm(m≧3)個の実データについて排他的論理和の演算を実行して生成された冗長データと、が少なくとも含まれている場合であって、
前記冗長データが生成される際に特定されたm個の実データには、当該m個の実データおける他の実データと前記データ配信装置から配信される際の配信順が不連続となる少なくとも1の実データが含まれている場合に、
前記ゲーム装置を、
前記データ配信装置から順次配信された前記パケットデータの受信制御を行う受信制御手段、
前記受信された受信パケットデータに基づいて、前記データ配信装置から配信された際の配信順を認識しつつ、未受信の未受信パケットデータを検出する検出手段、
前記未受信パケットデータが検出された場合に、前記未受信パケットデータの配信順を基準に、m個の前記受信パケットデータにそれぞれ含まれる少なくとも1の冗長データと2以上の実データを特定し、当該特定した冗長データ及び実データについて排他的論理和の演算を実行し、前記未受信のパケットデータに含まれる実データを復元する復元手段、及び
前記受信したパケットデータまたは前記復元したパケットデータに基づいて前記ゲーム処理を実行するゲーム処理手段、
として機能させる構成を有している。
【0028】
通常、各パケットデータに他のパケットデータまたはそれに含まれるデータに基づいて生成された冗長データが含まれている場合には、パケットロストされたデータを用いて生成された冗長データと、当該冗長データの生成に用いたパケットロストされたデータ以外のデータと、に基づいてパケットロストされたデータを復元することができる。
【0029】
本発明のプログラムは、上記構成により、m(m≧3)個の実データによって構成され、かつ、他の冗長データ用実データと配信順が不連続となる冗長データ生成用離隔実データを用いた冗長データによってロスト実データを復元することができるので、多くの構成要素で構成されつつ、分散された構成要素から構成された冗長データを用いてロスト実データを復元することができる。
【0030】
すなわち、本発明のプログラムは、連続してパケットロストが発生した場合であっても、分散されて提供されることによって確実に受信された実データに基づいて、ロスト実データを復元することができるので、連続したパケットロストへの耐性を向上させることができるとともに、的確にロスト実データを復元させることができる。
【0031】
したがって、本発明のプログラムは、受信済みのパケットデータによってパケットロストされたロスト実データの復元を確実に行うことができるので、ロスト実データの再送要求及びそれに伴う再送処理などのロスト実データの再取得処理を不要またはその頻度を低減し、リアルタイム処理などの迅速な処理が要求されるゲーム処理を適切に実行することができる。
【0032】
(8)また、本発明のプログラムは、前記実データを復元する際に特定された前記冗長データが含まれる受信パケットデータが、前記未受信パケットデータの配信後の配信順を有する、構成を有している。
【0033】
この構成により、本発明のプログラムは、パケットロストが発生した後の配信順を有するパケットデータに含まれる冗長データを実データの復元に用いるので、原則的に復元に用いる冗長データを受信した場合に既に受信している実データの中から復元に用いる実データを特定すればよく、当該復元に用いる実データを容易にかつ迅速に確保することができる。
【0034】
(9)また、本発明のプログラムは、
前記冗長データが生成される際に特定されたm個の実データには、前記配信順が連続している少なくともn(2≦n<m)個の実データが含まれており、
前記実データを復元する際に特定された少なくとも1の実データが含まれる受信パケットデータの配信順P1と、前記特定された冗長データを含む受信パケットデータの配信順P2とについては、下記の(式3)の関係を有する構成をしている。
【0035】
P1=P2±(m+n) ・・・(式3)
【0036】
この構成により、本発明のプログラムは、連続したパケットロストへの耐性を向上させるために、パケットロストされずに確実に受信した実データをパケットロストされた実データの復元に用いることができる。
【0037】
(10)また、本発明のプログラムは、
前記冗長データが生成される際に特定されたm個の実データには、前記冗長データが設定されるパケットデータの直前に配信された実データが含まれており、
前記実データを復元する際に特定された冗長データが含まれる受信パケットデータが、前記未受信パケットデータの配信直後の配信順を有する、構成をしている。
【0038】
この構成により、本発明のプログラムは、実データを復元する際に用いる冗長データを容易にかつ迅速に確保することができるので、パケットロストされた実データの復元を迅速に実行することができる。
【0039】
(11)また、本発明のプログラムは、前記実データが、ゲーム処理を実行する他のゲーム装置から送信されたゲームデータであって当該他のゲーム装置で操作入力された操作入力データである、構成を有している。
【0040】
この構成により、本発明のプログラムは、対戦ゲームなどの複数のゲーム装置における操作入力に連動させてゲームが実行されるプログラムに提供することができる。
【0041】
(12)上記課題を解決するため、本発明のデータ配信装置は、
ネットワークを介して他の通信装置に、ゲーム処理を実行させるためのゲームデータをパケット毎に配信するデータ配信装置に搭載されるプログラムであって、
パケット毎のゲームデータであるパケットデータにそれぞれ設定する冗長データを生成する生成手段と、
前記ゲーム処理を実行するために用いられる実データと前記生成された冗長データを少なくとも含む前記パケットデータを生成し、当該生成したパケットデータの前記他の通信装置への配信を制御する配信制御手段と、
前記パケットデータに含まれる前記実データを、前記他の通信装置に配信する際の配信順の情報を保持しつつ、記憶手段に順次記憶する記憶制御手段と、
を備え、
前記生成手段が、
各パケットデータにおける冗長データを生成する際に、前記記憶手段に記憶された実データの中から、生成される前記冗長データが設定されるパケットデータよりも過去に配信されたパケットデータに含まれるm(m≧3)個の実データを特定し、
前記特定した実データについて排他的論理和の演算を実行し、該当するパケットデータにおける前記冗長データを生成するとともに、
前記特定したm個の実データには、当該m個の実データにおける他の実データと前記配信順が不連続となる少なくとも1の実データが含まれる構成を有している。
【0042】
この構成により、本発明のデータ配信装置は、上述の本発明のプログラムと同様に、受信済みのパケットデータによってパケットロストされたロスト実データの復元を確実に行うことができるので、ロスト実データの再送要求及びそれに伴う再送処理などのロスト実データの再取得処理を不要またはその頻度を低減し、リアルタイム処理などの迅速な処理が要求されるゲーム処理を適切に実行させることができる。
【0043】
(13)上記課題を解決するため、本発明のゲーム装置は、ネットワークを介してデータ配信装置から配信されたパケット毎のゲームデータに基づいてゲーム処理を実行するゲーム装置であって、
パケット毎のゲームデータである各パケットデータには、前記ゲーム処理を実行するために用いられる実データと、前記データ配信装置から自パケットデータより過去に配信されたパケットデータに含まれるm(m≧3)個の実データについて排他的論理和の演算を実行して生成された冗長データと、が少なくとも含まれているとともに、
前記冗長データが生成される際に特定されたm個の実データには、当該m個の実データおける他の実データと前記データ配信装置から配信される際の配信順が不連続となる少なくとも1の実データが含まれている場合に、
前記データ配信装置から順次配信された前記パケットデータの受信制御を行う受信制御手段と、
前記受信された受信パケットデータに基づいて、前記データ配信手段から配信された際の配信順を認識しつつ、未受信の未受信パケットデータを検出する検出手段と、
前記未受信パケットデータが検出された場合に、前記未受信パケットデータの配信順を基準に、m個の前記受信パケットデータにそれぞれ含まれる少なくとも1の冗長データと2以上の実データを特定し、当該特定した冗長データ及び実データについて排他的論理和の演算を実行し、前記未受信のパケットデータに含まれる実データを復元する復元手段と、
前記受信したパケットデータまたは前記復元したパケットデータに基づいて前記ゲーム処理を実行するゲーム処理手段と、
を備える構成を有している。
【0044】
この構成により、本発明のゲーム装置は、上述の本発明のプログラムと同様に、受信済みのパケットデータによってパケットロストされたロスト実データの復元を確実に行うことができるので、ロスト実データの再送要求及びそれに伴う再送処理などのロスト実データの再取得処理を不要またはその頻度を低減し、リアルタイム処理などの迅速な処理が要求されるゲーム処理を適切に実行することができる。
【0045】
(14)上記課題を解決するため、本発明のネットワークシステムは、
ゲームデータに基づいてゲーム処理を実行するゲーム装置と、
ネットワークを介して前記ゲーム装置に前記ゲームデータをパケット毎に配信するデータ配信装置と、
を備えた
前記データ配信装置が、
パケット毎のゲームデータであるパケットデータにそれぞれ設定する冗長データを生成する生成手段と、
前記ゲーム処理を実行するために用いられる実データと前記生成された冗長データを少なくとも含む前記パケットデータを生成し、当該生成したパケットデータの前記他の通信装置への配信を制御する配信制御手段と、
前記パケットデータに含まれる前記実データを、前記他の通信装置に配信する際の配信順の情報を保持しつつ、記憶手段に順次記憶する記憶制御手段と
を備え、
前記生成手段が、
各パケットデータにおける冗長データを生成する際に、前記記憶手段に記憶された実データの中から、生成される前記冗長データが設定されるパケットデータよりも過去に配信されたパケットデータに含まれるm(m≧3)個の実データを特定し、
前記特定した実データについて排他的論理和の演算を実行し、該当するパケットデータにおける前記冗長データを生成するとともに、
前記特定したm個の実データには、当該m個の実データにおける他の実データと前記配信順が不連続となる少なくとも1の実データが含まれること、
前記ゲーム装置が、
前記データ配信装置から順次配信された前記パケットデータの受信制御を行う受信制御手段と、
前記受信された受信パケットデータに基づいて、前記データ配信装置から配信された際の配信順を認識しつつ、未受信の未受信パケットデータを検出する検出手段と、
前記未受信パケットデータが検出された場合に、前記未受信パケットデータの配信順を基準に、m個の前記受信パケットデータにそれぞれ含まれる少なくとも1の冗長データと2以上の実データを特定し、当該特定した冗長データ及び実データについて排他的論理和の演算を実行し、前記未受信のパケットデータに含まれる実データを復元する復元手段と、
前記受信したパケットデータまたは前記復元したパケットデータに基づいて前記ゲーム処理を実行するゲーム処理手段と、
を有する構成をしている。
【0046】
この構成により、本発明のネットワークシステムは、ゲーム装置において、受信済みのパケットデータによってパケットロストされたロスト実データの復元を確実に行うことができるので、ロスト実データの再送要求及びそれに伴う再送処理などのロスト実データの再取得処理を不要またはその頻度を低減し、リアルタイム処理などの迅速な処理が要求されるゲームをゲーム装置において適切に実行することができる。
【図面の簡単な説明】
【0047】
【図1】一実施形態の対戦ゲームシステムの構成を示す構成図である。
【図2】一実施形態のゲーム端末装置の構成を示す構成図である。
【図3】一実施形態のサーバ装置の構成を示す構成図である。
【図4】各ゲーム端末装置からサーバ装置に送信されるパケットデータの構造を示す構造図の一例である。
【図5】各ゲーム端末装置からサーバ装置に送信されるパケットデータの構造を示す構造図の一例である。
【図6】一実施形態において生成される冗長データの一例であって、その構造を示す図である。
【図7】一実施形態のサーバ装置において生成されるパケットデータに含まれる冗長データの復元処理について説明するための図(その1)である。
【図8】一実施形態のサーバ装置において生成されるパケットデータに含まれる冗長データの復元処理について説明するための図(その2)である。
【図9】一実施形態のサーバ装置において生成されるパケットデータに含まれる冗長データの復元処理について説明するための図(その3)である。
【図10】一実施形態のサーバ装置において生成されるパケットデータに含まれる冗長データの復元処理について説明するための図(その4)である。
【図11】一実施形態のサーバ装置におけるパケットデータの生成処理の動作を示すフローチャートである。
【図12】一実施形態のゲーム端末装置におけるパケットデータの復元処理の動作を示すフローチャートである。
【発明を実施するための最良の形態】
【0048】
以下、本発明の実施形態について、図面を参照しながら説明する。
【0049】
なお、以下の実施形態は、ネットワークを介して構築される対戦ゲームシステムに含まれる複数のゲーム端末装置及びサーバ装置に対し、本発明に係るプログラム、データ配信装置、ゲーム装置及びネットワークシステムを適用した場合の実施形態である。
【0050】
また、以下に示す実施形態は、特許請求の範囲に記載された発明の内容を何ら限定するものではない。また、以下の実施形態に示す構成の全てが、特許請求の範囲に記載された発明の解決手段として必須であるとは限らない。
【0051】
1.対戦ゲームシステムの構成及びその概要
まず、図1を用いて本実施形態における対戦ゲームシステム10の構成について説明する。なお、図1は、本実施形態の対戦ゲームシステム10の構成を示す構成図である。
【0052】
対戦ゲームシステム10は、同一のゲーム空間において種々のゲームを実行する複数のゲーム端末装置100と、各ゲーム端末装置100から各ゲーム端末装置100において発生したアプリケーションデータであるゲームデータを収集しつつ、収集した各ゲームデータをそれぞれのゲーム端末装置100に提供するサーバ装置200と、を備え、各ゲーム端末装置100とサーバ装置200はネットワークNを介して接続されている。
【0053】
また、対戦ゲームシステム10は、同一のゲーム空間において種々のゲームを実行する全てのゲーム端末装置100を同期させつつ、当該各ゲーム端末装置100から、各ゲーム端末装置100において入力された操作入力のデータ(以下、「操作入力データ」という。)をサーバ装置200に送信させるとともに、サーバ装置200から各ゲーム端末装置100に、受信した操作入力データを配信することによって、種々のゲームが実行されるゲームシステムである。
【0054】
具体的には、各ゲーム端末装置100は、各プレーヤが単独でまたは他のプレーヤと協力して他のゲーム端末装置100のプレーヤによって操作される敵オブジェクトとの戦闘ゲームのゲーム処理を実行するように構成されている。
【0055】
また、サーバ装置200は、各ゲーム端末装置100から操作入力データを含むゲームデータを受信し、受信したゲームデータを各ゲーム端末装置100に配信するリレーサーバとして機能するようになっている。
【0056】
本実施形態の対戦ゲームシステム10においては、サーバ装置200または各ゲーム端末装置100は、予め定められた間隔毎にデータの送信または配信を行うようになっており、ネットワークを介して通信するかたまりであるパケット毎に、送信元IPアドレス、送信先IPアドレスを含むネットワークに必要なヘッダーと、送信すべきゲームデータを含むデータ(以下、「パケットデータ」という。)の授受を実行するようになっている。
【0057】
特に、本実施形態においては、基本的には、UDPプロトコルなどの無手順方式のデータ転送方式を用いてサーバ装置200とゲーム端末装置100間のデータの伝送が制御されるようになっている。
【0058】
一般的に、UDPプロトコルなどの無手順方式のデータ転送方式においては、データ送信の途中でパケットロストが発生してもロストされたデータの再送を実行せず、さらに、順番が入れ替わってパケットデータを伝送することを許容している。
【0059】
その一方、UDPプロトコルは、オーバヘッド(すなわち、アプリケーションに関わる実データ以外のデータ)が無いまたはほとんど無いので、オンラインゲームなどのリアルタイム処理を実行するゲーム処理には適しているとされている。
【0060】
そこで、本実施形態の対戦ゲームシステム10は、各ゲーム端末装置100において、サーバ装置200及び他のゲーム端末装置100(以下、「他機」ともいう。)のゲームデータに基づいてリアルタイム処理を実行するために、基本的にはUDPプロトコルなどの無手順方式に従いつつ、パケットロストに対する耐性を強化したパケットデータをゲームデータの授受に用いるようになっている。
【0061】
すなわち、本実施形態の対戦ゲームシステム10は、高速通信が可能でリアルタイム処理が可能なUDPプロトコルなどの無手順方式の通信規格を用いつつ、予め定めたタイミングでゲームデータの送信及び配信を行うことによって、パケットロストを早期に検出し、確実にかつ迅速に当該パケットロストされたデータを復元するようになっている。
【0062】
そして、対戦ゲームシステム10は、当該パケットロストされたデータの再送をせずに、または、当該再送の頻度を低減させることによって、パケットロスト発生時のゲーム処理の遅延または中断を防止するようになっている。
【0063】
具体的には、本実施形態においては、使用するUDPプロトコルに応じたアプリケーションの種類を特定するポート番号が指定されたパケットデータを用いてアプリケーションレベルの通信が実行される。
【0064】
また、本実施形態においては、サーバ装置200から配信される配信順を示す情報(以下、「シーケンスID」という。)がパケットデータに組み込まれ、かつ、各種のゲーム端末装置100またはサーバ装置200に搭載された各種のアプリケーション(搭載されるプログラム)によってパケットロストされたデータの復元を行うようになっている。そして、本実施形態においては、当該復元が長時間となる場合に限ってパケットロストされたデータの再送処理が実行されるようになっている。
【0065】
特に、各ゲーム端末装置100は、所定のタイミングでサーバ装置200に自機の操作入力データを送信するとともに、所定のタイミングでサーバ装置200から送信された自機の操作入力データを含む同一のゲーム空間を共有している他機の操作入力データ(すなわち、他のプレーヤの操作による操作入力データ)を受信する。
【0066】
そして、各ゲーム端末装置100は、自機の及び/または他機の操作入力データに基づいて、ゲームを進行させるための各種のゲーム処理を実行するようになっている。
【0067】
例えば、各ゲーム端末装置100は、所定のフレーム毎(1/30フレーム毎)における操作入力データの2フレーム分のデータ(すなわち、1/60フレーム毎の操作入力データ)を有するパケット毎のデータ(以下、「パケットデータ」という。)をサーバ装置200に送信するようになっている。
【0068】
また、各ゲーム端末装置100は、所定のフレーム毎(1/30フレーム毎)に、自機の操作入力データを含む同一のゲーム空間を共有している他のゲーム端末装置100における操作入力データ群(すなわち、同一のゲーム空間においてゲーム処理を実行している全てのゲーム端末装置100における操作入力データ群)の2フレーム分のデータと、誤り訂正用の冗長データ(以下、「パリティデータ」または「訂正用データ」ともいう。)と、を含むパケットデータを、サーバ装置200から受信する。
【0069】
そして、各ゲーム端末装置100は、受信したパケットデータに含まれる操作入力データ群に基づいて種々のゲーム処理を実行するようになっている。
【0070】
2.ゲーム端末装置
次に、図2を用いて本実施形態におけるゲーム端末装置100の構成について説明する。なお、図2は、本実施形態のゲーム端末装置100の構成を示す構成図である。また、本実施形態のゲーム端末装置100は、図2の構成に限定されず、その一部の構成要素を省略すること、他の構成要素を追加するなどの種々の変形実施が可能である。
【0071】
操作部160は、プレーヤが操作入力データを入力するためのものであり、その機能は、左右2つのレバー、各レバーに設けられたそれぞれ2つの計4つの操作ボタン、及び、2つのフットペダルによる実現される。なお、これらに限らずに、アナログスティック、各種センサ(角速度センサ、加速度センサ等)、方向指示キー、マイク、或いはタッチパネル型ディスプレイなどにより実現することも可能である。
【0072】
記憶部170は、処理部101及び通信のワーク領域となるもので、その機能はRAM(DRAM、VRAM)などにより実現できる。特に、本実施形態の記憶部170は、主に、ゲームプログラムが記録される主記憶部172、画像バッファ174、第1のバッファ176、第2のバッファ178、各種制御情報記憶部179を有している。
【0073】
主記憶部172は、主に、ゲームプログラムが記録される。また、第1のバッファ176は、自機のゲームデータが記憶される記憶領域であり、第2のバッファ178とはサーバ装置200から受信したパケットデータが記憶される記憶領域であって、例えば主記憶の一部に設けられてソフトウェア的によって読み書きの制御が行われる構成でもよい。さらに、各種制御情報記憶部179には、自機や他機のゲームに関する情報が必要に応じて記憶されている。
【0074】
特に、第2のバッファ178には、同一のゲーム空間を共有する各ゲーム端末装置100の操作入力データ(以下、「操作入力データ群」という。)及び冗長データが順次配信順の情報(以下、「シーケンスID」という。)を保持しつつ記憶される。
【0075】
また、第2のバッファ178には、後述するように復元された操作入力データ群についても、シーケンスIDを保持しつつ記憶される。
【0076】
なお、ゲームプログラムは、ゲーム処理を実行するための命令コードが記述されたソフトウェアである。また、ゲームデータは、ゲームプログラムの実行の際に必要なデータであり、上述の操作入力データの他に、キャラクタデータ、ゲームステージデータ、通信に参加しているメンバーの情報、または、キャラクタ等の位置データなどである。
【0077】
情報記憶媒体180(コンピュータにより読み取り可能な媒体)は、プログラムやデータなどを格納するものであり、その機能は、光ディスク(CD、DVD)、HDD(ハードディスクドライブ)、または、メモリ(ROM等)などにより実現できる。
【0078】
なお、処理部101は、情報記憶媒体180に格納されるプログラム(データ)に基づいて本実施形態の種々の処理を行う。すなわち、情報記憶媒体180には、本実施形態の各部としてコンピュータ(操作部、処理部、記憶部、出力部を備える装置)を機能させるためのプログラム(各部の処理をコンピュータに実行させるためのプログラム)が記憶される。
【0079】
表示部190は、本実施形態により生成された画像を出力するものであり、その機能は、LCD、有機ELディスプレイ、CRT、タッチパネル型ディスプレイ、または、HMD(ヘッドマウントディスプレイ)などにより実現できる。
【0080】
音出力部192は、本実施形態により生成された音を出力するものであり、その機能は、スピーカ、または、ヘッドフォンなどにより実現できる。
【0081】
補助記憶装置194(補助メモリ、2次メモリ)は、記憶部170の容量を補うために使用される記憶装置であり、SDメモリーカード、マルチメディアカードなどのメモリーカードなどにより実現できる。
【0082】
通信部196は、有線及び無線のネットワークを介して外部(他のゲーム端末装置100、サーバ装置200)との間で通信を行うものであり、その機能は、通信用ASICまたは通信用プロセッサなどのハードウェア、及び、通信用ファームウェアにより実現できる。
【0083】
なお、本実施形態の各部としてコンピュータを機能させるためのプログラム(データ)は、ホスト装置(サーバシステム)が有する情報記憶媒体からネットワーク及び通信部196を介して情報記憶媒体180(または、記憶部170若しくは補助記憶装置194)に配信されてもよい。このようなホスト装置による情報記憶媒体の使用も本発明の範囲内に含めることができる。
【0084】
処理部101(プロセッサ)は、操作部160からの操作入力データ、取得した他のゲーム端末装置100における操作入力データ及びプログラムなどに基づいて、ゲーム処理、画像生成処理、或いは音生成処理などを行う。
【0085】
処理部101は、記憶部170をワーク領域として各種処理を行う。この処理部101の機能は、各種プロセッサ(CPU、GPU等)、ASIC(ゲートアレイ等)などのハードウェア及びプログラムにより実現できる。
【0086】
処理部101は、ゲーム演算部(ゲーム処理手段)110、オブジェクト空間設定部111、仮想カメラ制御部112、移動・動作処理部113、ネットワーク設定部114、通信制御部120、画像生成部130、音生成部140を含む。なおこれらの一部を省略する構成としてもよい。
【0087】
ゲーム演算部110は、ゲーム開始条件が満たされた場合にゲームを開始する処理、ゲームを進行させる処理、キャラクタやマップなどのオブジェクトを配置する処理、オブジェクトを表示する処理、ゲーム結果を演算する処理、及び、ゲーム終了条件が満たされた場合にゲームを終了する処理などがある。なお、例えば、本実施形態のゲーム演算部110は、本発明のゲーム処理手段を構成する。
【0088】
本実施形態のゲーム演算部110は、戦闘ゲームを実行する際に、味方オブジェクトを含めた自機オブジェクトと、敵オブジェクトと、の体力値を初期値(例えば100)に設定する。また、ゲーム演算部110は、戦闘ゲームを開始してから戦闘ゲームが終了するまでのゲーム期間(例えば、90秒の間)に、フレーム毎に、各プレーヤの操作入力データに基づいてヒット判定処理を行うとともに、ヒット判定結果に基づいていて、各オブジェクトの体力値を減算させ、自機オブジェクトまたは敵オブジェクトの体力値が0になったか否かに基づいて戦闘ゲームの勝敗を決定する演算処理を行う。
【0089】
オブジェクト空間設定部111は、自機オブジェクト、味方オブジェクト、敵オブジェクト、移動体、建物、球場、車、樹木、柱、壁、マップ(地形)などの表示物を表す各種オブジェクト(ポリゴン、自由曲面又はサブディビジョンサーフェスなどのプリミティブで構成されるオブジェクト)をオブジェクト空間に配置設定する処理を行う。すなわち、ワールド座標系でのオブジェクトの位置や回転角度(向き、方向と同義)を決定し、その位置(X、Y、Z)にその回転角度(X、Y、Z軸回りでの回転角度)でオブジェクトを配置する。
【0090】
仮想カメラ制御部112は、オブジェクト空間内の所与(任意)の仮想カメラ(視点)から見える画像を生成するための仮想カメラの制御処理を行う。具体的には、仮想カメラの位置(X、Y、Z)又は回転角度(X、Y、Z軸回りでの回転角度)を制御する処理(視点位置、視線方向あるいは画角を制御する処理)を行う。また、画角を制御するようにしてもよい。
【0091】
例えば、仮想カメラによりオブジェクト(例えば、自機オブジェクト、敵または味方オブジェクト、ボール、車)を後方から撮影する場合には、オブジェクトの位置又は回転の変化に仮想カメラが追従するように、仮想カメラの位置又は回転角度(仮想カメラの向き)を制御する。この場合には、移動・動作処理部113で得られたオブジェクトの位置、回転角度または速度などの情報に基づいて、仮想カメラを制御できる。
【0092】
また、仮想カメラを、予め決められた回転角度で回転させること、または、予め決められた移動経路で移動させる制御を実行してもよい。この場合には、仮想カメラの位置(移動経路)または回転角度を特定するための仮想カメラデータに基づいて仮想カメラを制御する。
【0093】
なお、仮想カメラ(視点)が複数存在する場合には、それぞれの仮想カメラについて上記の制御処理が行われる。
【0094】
移動・動作処理部113は、モデル(自機オブジェクト、車、電車または飛行機等)の移動・動作演算(移動・動作シミュレーション)を行う。すなわち、操作部160によりプレーヤが入力した操作入力データ、サーバ装置200から送信された他のゲーム端末装置100の操作入力データ、プログラム(移動・動作アルゴリズム)、各種データ(モーションデータ)などに基づいて、モデルをオブジェクト空間内で移動させること、オブジェクトを動作(モーション、アニメーション)させることの各処理を行う。
【0095】
具体的には、オブジェクトの移動情報(位置、回転角度、速度、または、加速度)及び動作情報(オブジェクトを構成する各パーツの位置、または、回転角度)を、1フレーム(1/60秒)毎に順次求めるシミュレーション処理を行う。なお、フレームは、オブジェクトの移動・動作処理(シミュレーション処理)及び画像生成処理を行う時間の単位である。
【0096】
特に、本実施形態の移動・動作処理部113は、サーバ装置200から送信された、または、操作部160によって入力された操作入力データに基づいて、プレーヤの操作対象の自機オブジェクトを移動・動作させる処理を行う。
【0097】
また、移動・動作処理部113は、後述する通信制御部120によって送信されたパケットに含まれる他のゲーム端末装置100(他機)によって入力された操作入力データに基づいて、他機が使用する他のオブジェクト(敵または味方オブジェクト)を、自機を使用するプレーヤの操作対象となる自機オブジェクトと同一のオブジェクト空間(すなわち、ゲーム空間)において移動・動作させる処理を行うことができる。
【0098】
すなわち、本実施形態の移動・動作処理部113は、サーバ装置200から送信された各ゲーム端末装置100における操作入力データに基づいて、自機オブジェクトを動作させる演算と、他機オブジェクトを動作させる演算を行う。
【0099】
ネットワーク設定部114は、本実施形態の対戦ゲームシステム10で必要となるネットワーク情報を取得し、管理する処理等を行う。特に、本実施形態のネットワーク設定部114は、同一のオブジェクト空間を共有してゲームを行う各ゲーム端末装置100に個別に設定されるゲーム端末装置100の識別情報(オンラインゲームに参加できるゲーム端末装置100を識別するために個別に付与されたデータ)、及び、サーバ装置200の識別情報に対応付けられたパケットの送信先を指定する宛先情報を取得し、管理する処理を行う。
【0100】
通信制御部120は、サーバ装置200に送信するパケットデータを生成する処理、受信したパケットデータに含まれる操作入力データを第2のバッファ178に記憶する処理、パケットロストの検出及びその復元を実行する処理、その他のパケットの送受信に関する制御処理等を行う。
【0101】
また、通信制御部120は、各ゲーム端末装置100との接続が確立されてから接続が切断されるまで、パケットデータを互いに送受信する処理を行うことができる。なお、本実施形態の通信制御部120は、本発明の受信制御手段を構成する。
【0102】
通信制御部120には、各ゲーム端末装置100に送信するパケットデータを生成するパケット生成部121と、パケットデータにおけるパケットロストを検出するパケットロスト検出部122と、パケットロストが検出された場合にロストされたパケットデータに含まれる操作入力データ群の復元を行うデータ復元部123と、が含まれる。
【0103】
なお、例えば、本実施形態のパケットロスト検出部122は、本発明の検出手段を構成し、データ復元部123は、本発明の復元手段を構成する。
【0104】
パケット生成部121は、サーバ装置200との通信の確立、ゲームを開始する処理が実行されたとき、または、ゲームを終了する処理が実行されたときなどサーバ装置200との必要なデータの授受を行う際に、及び、ゲーム中においてサーバ装置200に操作入力データを送信する際に、各種のパケットデータを生成する処理を行う。
【0105】
また、パケット生成部121は、各パケットデータのヘッダーの送信先IPアドレスと送信先ポート番号には、サーバ装置200のIPアドレスと使用するポート番号を指定するとともに、ヘッダーの送信元のIPアドレスと送信元ポート番号に、自機のIPアドレスと使用するポート番号を指定し、データサイズ、チェックサムとともに、各種のゲームデータ(アプリケーションデータ)を有するパケットデータを生成する。
【0106】
特に、パケット生成部121は、操作入力データをサーバ装置200に送信する際には、サーバ装置200の制御の下、同一のゲーム空間を共有する各ゲーム端末装置100に付され、サーバ装置200において処理を行うために必要なID(以下、「セッションID」ともいう。)有し、入力された操作入力データを含むパケットデータを生成する。
【0107】
特に、本実施形態のパケット生成部121は、各操作入力データが個々に単独でプレーヤによって入力された操作入力であることが認識可能な操作入力データ(以下、「絶対値」または「絶対値情報」ともいう。)を含むパケットデータを生成する。
【0108】
例えば、パケット生成部121は、フレームレートが60fpsである場合には、1/60秒毎の操作入力データを2つ組みにして、1/30秒毎に、セッションIDを付与しつつ、当該組された2つの操作入力データをパケットデータのペイロードに設定する。
【0109】
パケットロスト検出部122は、サーバ装置200の制御の下、シーケンス処理の順序を示すシーケンスIDを認識しつつ、サーバ装置200から送信されたパケットデータのパケットロストを検出し、データ復元部123は、パケットロストが検出された場合に、受信して第2のバッファ178に記憶されているパケットデータ(すなわち、操作入力データ群及び冗長データ)に基づいてパケットロストされたパケットデータに含まれる操作入力データ群を復元する。
【0110】
なお、本実施形態では、操作入力データ以外には、サーバ装置200から配信された操作入力データの再送を要求するためのデータと、ゲーム中にプレーヤ同士で行われる交信(チャット)に必要な音声データその他のデータ(以下、「追加データ」という。)と、がパケットデータに含まれる場合がある。
【0111】
また、本実施形態においてゲーム端末装置100において生成する操作入力データを有するパケットデータ及びサーバ装置200から送信された操作入力データ群を有するパケットデータの詳細について後述する。
【0112】
画像生成部130は、処理部101で行われる種々の処理(ゲーム処理)の結果に基づいて描画処理を行い、これにより画像を生成し、表示部190に出力する。いわゆる3次元ゲーム画像を生成する場合には、まずオブジェクト(モデル)の各頂点の頂点データ(頂点の位置座標、テクスチャ座標、色データ、法線ベクトルまたはα値等)を含むオブジェクトデータ(モデルデータ)が入力され、入力されたオブジェクトデータ(モデルデータ)に含まれる頂点データに基づいて、頂点処理(頂点シェーダによるシェーディング)が行われる。
【0113】
頂点処理を行うに際して、必要に応じてポリゴンを再分割するための頂点生成処理(テッセレーション、曲面分割、ポリゴン分割)を行うようにしてもよい。頂点処理では、頂点処理プログラム(頂点シェーダプログラム、第1のシェーダプログラム)に従って、頂点の移動処理や、座標変換(ワールド座標変換、カメラ座標変換)、クリッピング処理、または、透視変換等のジオメトリ処理が行われ、その処理結果に基づいて、オブジェクトを構成する頂点群について与えられた頂点データを変更(更新、調整)する。そして、頂点処理後の頂点データに基づいてラスタライズ(走査変換)が行われ、ポリゴン(プリミティブ)の面とピクセルとが対応付けられる。
【0114】
そして、ラスタライズに続いて、画像を構成するピクセル(表示画面を構成するフラグメント)を描画するピクセル処理(ピクセルシェーダによるシェーディング、フラグメント処理)が行われる。ピクセル処理では、ピクセル処理プログラム(ピクセルシェーダプログラム、第2のシェーダプログラム)に従って、テクスチャの読出し(テクスチャマッピング)、色データの設定/変更、半透明合成、アンチエイリアス等の各種処理を行って、画像を構成するピクセルの最終的な描画色を決定し、透視変換されたオブジェクトの描画色を記憶部170(ピクセル単位で画像情報を記憶できるバッファ。VRAM、レンダリングターゲット)に出力(描画)する。
【0115】
ピクセル処理では、画像情報(色、法線、輝度、α値等)をピクセル単位で設定または変更するパーピクセル処理を行う。これにより、オブジェクト空間内において仮想カメラ(所与の視点)から見える画像が生成される。なお、仮想カメラ(視点)が複数存在する場合には、それぞれの仮想カメラから見える画像を分割画像として1画面に表示できるように画像を生成することができる。
【0116】
頂点処理やピクセル処理は、シェーディング言語によって記述されたシェーダプログラムによって、ポリゴン(プリミティブ)の描画処理をプログラム可能にするハードウェア、いわゆるプログラマブルシェーダ(頂点シェーダやピクセルシェーダ)により実現される。プログラマブルシェーダでは、頂点単位の処理やピクセル単位の処理がプログ ラム可能になることで描画処理内容の自由度が高く、従来のハードウェアによる固定的な描画処理に比べて表現力を大幅に向上させることができる。
【0117】
そして、画像生成部130は、オブジェクトを描画する際に、ジオメトリ処理、テクスチャマッピング、隠面消去処理、αブレンディング等を行う。
【0118】
ジオメトリ処理では、オブジェクトに対して、座標変換、クリッピング処理、透視投影変換、或いは光源計算等の処理が行われる。そして、ジオメトリ処理後(透視投影変換後)のオブジェクトデータ(オブジェクトの頂点の位置座標、テクスチャ座標、色データ(輝度データ)、法線ベクトル、或いはα値等)は、記憶部170に記憶される。
【0119】
テクスチャマッピングは、記憶部170に記憶されるテクスチャ(テクセル値)をオブジェクトにマッピングするための処理である。具体的には、オブジェクトの頂点に設定(付与)されるテクスチャ座標等を用いて記憶部170からテクスチャ(色(RGB)、α値などの表面プロパティ)を読み出す。そして、2次元の画像であるテクスチャをオブジェクトにマッピングする。この場合に、ピクセルとテクセルとを対応づける処理や、テクセルの補間としてバイリニア補間などを行う。
【0120】
隠面消去処理としては、描画ピクセルのZ値(奥行き情報)が入力されるZバッファ(奥行きバッファ)を用いたZバッファ法(奥行き比較法、Zテスト)による隠面消去処理を行うことができる。すなわちオブジェクトのプリミティブに対応する描画ピクセルを描画する際に、Zバッファに入力されるZ値を参照する。そして参照されたZバッファのZ値と、プリミティブの描画ピクセルでのZ値とを比較し、描画ピクセルでのZ値が、仮想カメラから見て手前側となるZ値(例えば小さなZ値)である場合には、その描画ピクセルの描画処理を行うとともにZバッファのZ値を新たなZ値に更新する。
【0121】
αブレンディング(α合成)は、α値(A値)に基づく半透明合成処理(通常αブレンディング、加算αブレンディング又は減算αブレンディング等)のことである。
【0122】
なお、α値は、各ピクセル(テクセル、ドット)に関連づけて記憶できる情報であり、例えば色情報以外のプラスアルファの情報である。α値は、マスク情報、半透明度(透明度、不透明度と等価)、バンプ情報などとして出力できる。
【0123】
音生成部140は、処理部101で行われる種々の処理の結果に基づいて音処理を行い、BGM、効果音、又は音声などのゲーム音を生成し、音出力部192に出力する。
【0124】
3.サーバ装置
次に、図3を用いて本実施形態におけるサーバ装置200の構成について説明する。なお、図3は、本実施形態のサーバ装置200の構成を示す構成図である。また、本実施形態のサーバ装置200は、図3の構成に限定されず、その一部の構成要素を省略すること、他の構成要素を追加するなどの種々の変形実施が可能である。
【0125】
サーバ用記憶部210は、管理・制御部201及び通信のワーク領域となるもので、その機能はRAM(DRAM)などにより実現できる。そしてゲームプログラム及び操作入力データを含む各種のゲームデータは、このサーバ用記憶部210に保持される。
【0126】
サーバ用通信部220は、有線及び無線のネットワークを介して外部(他のゲーム端末装置100)との間で通信を行うものであり、その機能は、通信用ASICまたは通信用プロセッサなどのハードウェアまたは通信用ファームウェアにより実現できる。
【0127】
管理・制御部201(プロセッサ)は、各サーバ装置200から送信された各操作入力データの配信管理を行うとともに、同一のオブジェクト空間において実行されているゲームを管理する。
【0128】
管理・制御部201は、サーバ用記憶部210をワーク領域として各種処理を行う。この管理・制御部201の機能は、各種プロセッサ(CPU、GPU等)、ASIC(ゲートアレイ等)などのハードウェア及び/またはプログラムにより実現できる。
【0129】
管理・制御部201は、ゲーム実行管理部202、ネットワーク管理部203、及び、通信管理制御部204を含む。なお、これらの一部を省略する構成としてもよい。
【0130】
ゲーム実行管理部202は、同一のゲーム空間を共有するためのゲーム端末装置100のマッチング、各ゲーム端末装置100とのデータの授受を行うために、同一のゲーム空間を共有するゲーム端末装置100毎に設定するID(すなわち、セッションID)の管理、各ゲーム端末装置100から送信されたまたは各ゲーム端末装置100に配信するデータの管理、マッチング及びセッションIDに基づいて実行されるゲームの管理(各種のゲーム処理におけるシーケンスを管理)など、ネットワークを介して同一のゲーム空間を共有する複数のゲーム端末装置100の管理と当該ゲームの実行に伴う各ゲーム端末装置100の管理を行う。
【0131】
特に、ゲーム実行管理部202は、各ゲーム端末装置100間とのデータ管理をも行うようになっており、受信した各ゲーム端末装置100から送信された絶対値としての操作入力データから、各ゲーム端末装置100における各受信した操作入力データについて、前回の操作入力データからの差分の情報(以下、「差分情報」ともいう。)を認識し、当該認識した差分情報を操作入力データとしてパケット生成管理部205に出力する。
【0132】
ネットワーク管理部203は、本実施形態の対戦ゲームシステム10で必要となるネットワーク情報を取得して各ゲーム端末装置100を管理する処理等を行う。特に、本実施形態のネットワーク管理部203は、同一のオブジェクト空間を共有してゲームを行う各ゲーム端末装置100に個別に設定されるゲーム端末装置100の識別情報(オンラインゲームに参加できるゲーム端末装置100を識別するために個別に付与されたデータ)に対応付けられたパケットの送信先を指定する宛先情報を取得し、管理する処理を行う。
【0133】
通信管理制御部204は、各ゲーム端末装置100に送信するパケットデータを生成する処理、受信したパケットデータに含まれる操作入力データをサーバ用記憶部210に記憶する処理、及び、その他のパケットの送受信に関する制御処理等を行う。
【0134】
また、通信管理制御部204は、各ゲーム端末装置100との接続が確立されてから接続が切断されるまで、パケットデータを互いに送受信する処理を行うことができる。
【0135】
この通信管理制御部204には、各ゲーム端末装置100に送信するパケットデータの生成及び送信管理を行うパケット生成管理部205を含む。なお、本実施形態のパケット生成管理部205は、本発明の生成手段、配信制御手段及び記憶制御手段を構成する。
【0136】
パケット生成管理部205は、同一のゲーム空間において複数のゲーム端末装置100を連動させるために、ゲーム実行管理部202によって管理されるゲームの進行に伴って発行されるシーケンスIDに基づいて、各ゲーム端末装置100に送信するためのパケットデータの生成を行う。
【0137】
具体的には、パケット生成管理部205は、各パケットデータのヘッダーの送信先IPアドレスと送信先ポート番号には、各ゲーム端末装置100のIPアドレスと使用するポート番号を指定するとともに、ヘッダーの送信元のIPアドレスと送信元ポート番号に、サーバ装置200のIPアドレスと使用するポート番号を指定し、データサイズ、チェックサムとともに、各種のゲームデータ(アプリケーションデータ)を有するパケットデータを生成する。
【0138】
特に、パケット生成管理部205は、各ゲーム端末装置100との通信の確立、ゲームを開始する処理が実行されたとき、または、ゲームを終了する処理が実行されたときなど、各ゲーム端末装置100との必要なデータの授受を行う際に、及び、ゲーム中において各ゲーム端末装置100から送信された操作入力データを受信するとともに、受信した各操作入力データを所定のタイミング毎に操作入力データ群を有するパケットデータとして各ゲーム端末装置100に配信する。
【0139】
具体的には、パケット生成管理部205は、各パケットデータに設定する冗長データを生成しつつ、所定のフレームレートに応じて、生成した冗長データと受信した各ゲーム端末装置100における操作入力データ群とを有するパケットデータを生成し、生成したパケットデータを各ゲーム端末装置100に配信するとともに、送信した各パケットデータの操作入力データ群をシーケンスIDとともにサーバ用記憶部210に記憶する。
【0140】
例えば、パケット生成管理部205は、フレームレートが60fpsである場合には、1/60秒毎の各ゲーム端末装置100の操作入力データ群を2つ組みにして、1/30秒毎に、配信される順番、すなわち、シーケンスIDを付与しつつ、同一のゲーム空間を共有する各ゲーム端末装置100における当該組された2つの操作入力データ群と冗長データをパケットデータのペイロードに設定する。
【0141】
なお、本実施形態では、操作入力データ群を有するパケットデータには、各ゲーム端末装置100から再送が要求された操作入力データを示す再送データと、各ゲーム端末装置100から送信された追加データと、がパケットデータに含まれる場合もある。
【0142】
また、本実施形態において用いる操作入力データ群を有するパケットデータ、冗長データの生成原理、パケットロストの検出処理、及び、パケットロストされたパケットデータ(具体的には操作入力データ群)の復元処理については後述する。
【0143】
4.操作入力データを有するパケットデータのデータ構造
4.1 各ゲーム端末装置からサーバ装置に送信されるパケットデータ
【0144】
次に、図4を用いて各ゲーム端末装置100からサーバ装置200に送信される操作入力データを有するパケットデータについて説明する。なお、図4は、各ゲーム端末装置100からサーバ装置200に送信される操作入力データを有するパケットデータの構造を示す構造図の一例である。
【0145】
このパケットデータは、各ゲーム端末装置100からサーバ装置200に送信されるデータであって、単一のゲーム端末装置100における操作入力データを有している。
【0146】
具体的には、このパケットデータには、図4に示すように、同一のゲーム空間を共有するゲーム装置のうちの自機に設定され、サーバ装置200において処理を行うために設定されたセッションIDと、再送要求の項目数を示す再送要求項目数を示す情報と、追加される追加データのサイズを示す追加データサイズの情報と、1フレーム目の操作入力データ及び2フレーム目の操作入力データの2つの操作入力データと、追加データの内容を示す追加データと、再送が必要なシーケンスIDが示される再送要求データと、が含まれる。
【0147】
なお、追加データと再送要求データは、オプションとしてのデータであり、パケット生成部121の制御の下、各データの追加が判断される。
【0148】
操作入力データとしては、図4に示すように、オンラインを示すフラグ情報(以下、「オンラインフラグ情報」という。)の他に、操作レバーや操作ペダルのアナログ入力値、及び、ボタンやトリガーなど各種スイッチのオン/オフ情報が含まれる。
【0149】
なお、本実施形態の各操作入力データは、固定長のフルサイズの絶対値で示されたデータであり、前フレームからの差分を示すデータではない。ただし、各操作入力データは、このような差分データであってもよい。
【0150】
また、このパケットデータには、冗長データが含まれていないが、サーバ装置200から配信されるパケットデータと同様に、他の操作入力データに基づいて生成される冗長データを含むように構成してもよい。
【0151】
4.2 サーバ装置200から各ゲーム端末装置100に配信されるパケットデータ
次に、図5を用いてサーバ装置200からに送信されるパケットデータについて説明する。なお、図5は、各ゲーム端末装置100からサーバ装置200に送信されるパケットデータの構造を示す構造図の一例である。
【0152】
このパケットデータは、サーバ装置200から各ゲーム端末装置100に送信されるデータであって、各ゲーム端末装置100の全てにおける所定のタイミングの操作入力データ、すなわち、操作入力データ群を有している。
【0153】
また、パケットデータに含まれる操作入力データ群は、データ量を削減するために、固定長のフルサイズの絶対値で示されたデータではなく、前フレームとの差分を示す差分データとして配信される。
【0154】
具体的には、パケットデータには、図4に示すように、ゲーム空間を共有する全てのゲーム端末装置100における操作入力データが含まれ、ゲームシーケンスに沿って提供される。
【0155】
また、パケットデータには、ゲームシーケンスのIDを示すシーケンスIDとともに、データヘッダと、第1フレーム及び第2フレームの更新情報を特定するためのそれぞれのフラグ情報(以下、「第1フレームフラグ情報」及び「第2フレームフラグ情報」という。)と、第1フレーム及び第2フレームの差分情報による操作入力データ(以下、「第1フレーム操作入力データ」及び「第2フレーム操作入力データ」という。)と、追加データと、後述するように生成された冗長データと、ゲーム端末装置100からの要求に対する再送データ(操作入力データ群)と、が含まれる。
【0156】
データヘッダには、各フレームにおける操作入力データの更新の有無を示す情報、追加データのサイズを示す情報、冗長データのサイズを示す。
【0157】
操作入力データ群には、上述のゲーム端末装置100から送信されるパケットデータと同様の各操作に関する情報が含まれるが、これらの情報は、前フレームとの差分情報として設定される。また、操作入力データ群には、データ自体の更新がなければ、該当するデータは含まれない。
【0158】
なお、追加データと再送データは、オプションとしてのデータであり、パケット生成管理部の制御の下、各データの追加が判断される。
【0159】
5.本実施形態の手法
5.1 冗長データの生成原理とパケットロストの復元原理
次に、本実施形態において用いられるパケットデータに含まれる冗長データの生成原理とパケットロストの復元原理について説明する。
【0160】
5.1.1 冗長データの生成原理における第1の特徴(基本的特徴)
まず、本実施形態における冗長データの生成原理における第1の特徴(基本的特徴)について説明する。
【0161】
本実施形態のサーバ装置200は、上述のように、各ゲーム端末装置100において、自機及び他機のアプリケーションデータに基づいてリアルタイム処理を実行させるために、UDPプロトコルなどの無手順方式に従いつつ、パケットロストに対する耐性を強化したパケットデータを当該アプリケーションデータの授受に用いる。
【0162】
具体的には、サーバ装置200は、アプリケーションデータ(実データ)としての操作入力データを配信する際に、各パケットデータにそれぞれ設定される冗長データを生成するとともに、上述のように、各ゲーム端末装置100の操作入力データ群と冗長データを含むパケットデータを生成し、当該生成したパケットデータの各ゲーム端末装置100への配信を制御する。そして、サーバ装置200は、配信する一のパケットデータに含まれる各ゲーム端末装置100の操作入力データ群を、シーケンスID毎に保持しつつ順次サーバ用記憶部210に記憶する。
【0163】
特に、サーバ装置200は、シーケンスID毎にサーバ用記憶部210に記憶された複数の操作入力データ群の中から、生成される冗長データが設定されるパケットデータよりも過去に配信されたパケットデータに含まれる3以上の操作入力データ群を特定し、特定した操作入力データ群について排他的論理和の演算を実行し、該当するパケットデータにおける冗長データを生成する。
【0164】
このとき、排他的論理和の演算に用いる3以上の操作入力データ群には、当該3以上の操作入力データ群における他の操作入力データ群とは、シーケンスIDが不連続となる少なくとも1の操作入力データ群が含まれる。
【0165】
通常、各パケットデータに他のパケットデータまたは当該他のパケットデータに含まれるアプリケーションデータに基づいて生成された冗長データが含まれている場合には、パケットロストされたデータを用いて生成された冗長データと、当該冗長データの生成に用いたパケットロストされたデータ以外のアプリケーションデータと、に基づいてパケットロストされたアプリケーションデータを復元することができる。
【0166】
例えば、異なる3つのパケットデータにそれぞれ含まれるアプリケーションデータについて排他的論理和の演算を行うことによって冗長データが生成されている場合であって、パケットロストされたパケットデータに含まれるアプリケーションデータ(以下、単に「パケットロストされたアプリケーションデータ」ともいう。)を復元する場合には、パケットロストされたアプリケーションデータを用いて生成された冗長データと、当該パケットロストされたパケットデータ以外の2つのパケットデータに含まれるアプリケーションデータと、について排他的論理和の演算を行うことによって当該パケットロストされたアプリケーションデータが復元されることになる。
【0167】
このとき、2つのアプリケーションデータがゲーム端末装置100などの受信装置において受信されれば、該当する冗長データを受信後に迅速にパケットロストされたアプリケーションデータを復元することができる。
【0168】
また、当該冗長データについてもパケットロストが発生した後に迅速に取得することができれば、パケットロストされたアプリケーションデータを復元するまでの時間を更に短縮することができる。
【0169】
したがって、パケットロストされたアプリケーションデータを確実に、かつ、迅速に復元するためには、当該パケットロストされたパケットデータ以外の2つのパケットデータに含まれるアプリケーションデータを確実に受信させておくこと、及び、受信装置において冗長データを迅速に取得することが重要となる。
【0170】
また、冗長データが、多くのアプリケーションデータに基づいて生成されていると、パケットロストされたアプリケーションデータを復元させるための計算方法(計算パターン)も多く存在することになり、連続してパケットロストが発生した場合であっても、アプリケーションデータを復元させることができる可能性が極めて高くなる。
【0171】
そこで、本実施形態においては、上述のように、冗長データの生成に用いる3以上のアプリケーションデータとしての複数の操作入力データ群を用いるとともに、かつ、冗長データの生成に用いる操作入力データ群(以下、「冗長データ生成用操作入力データ群」という。)において他の冗長データ用操作入力データとシーケンスID(すなわち、配信順)が不連続となる操作入力データ群(以下、「冗長データ生成用離隔操作入力データ群」という。)を用いている。
【0172】
すなわち、本実施形態においては、冗長データを多くの構成要素から構成させつつ、かつ、当該構成要素の一部を他の構成要素から離隔させること、すなわち、冗長データを構成するアプリケーションデータを分散して提供させることによって、連続してパケットロストが発生した場合であっても、受信装置において分散されて提供させ、確実に受信された操作入力データ群を復元に用いることができるようになっている。
【0173】
特に、本実施形態においては、パケットロストされたパケットデータに設定された冗長データの生成時に用いられた操作入力データ群は、パケットロストされた際には原則的に既にゲーム端末装置100において受信されているので、パケットロスト直後のパケットデータに設定された冗長データによって当該パケットロストされた操作入力データ群を復元することができるようになっている。
【0174】
したがって、本実施形態においては、受信済みのパケットデータによってパケットロストされた操作入力データ群の復元を確実に行うことができるので、パケットロストされた操作入力データ群の再送要求をサーバ装置200に実行することなく、かつ、それに伴ってパケットロストされた操作入力データ群の受信を待つ必要がないので、リアルタイム処理などの迅速な処理が要求されるゲーム処理を適切に実行させることができるようになっている。
【0175】
5.1.2 冗長データの生成原理における第2の特徴
次に、本実施形態における冗長データの生成原理における第2の特徴について説明する。
【0176】
本実施形態においては、排他的論理和の演算に用いるm個の操作入力データ群には、シーケンスIDが連続しているn(2≦n<m)個の操作入力データ群(すなわち、連続したシーケンスIDを有するパケットデータに含まれる操作入力データ群)が含まれている。
【0177】
通常、生成された冗長データにおいて、全ての冗長データ生成用操作入力データ群が他の冗長データ生成用操作入力データのシーケンスIDが離隔している場合には、2またはそれ以上のパケットロストが連続して発生した場合に、多くの冗長データによってそれぞれのパケットロストされた操作入力データ群を復元させなければならい。
【0178】
例えば、
(A)冗長データが設定されるパケットデータ(基準パケットデータ)の1つ前、3つ前及び5つ前のパケットデータに含まれる操作入力データ群の3つの操作入力データ群に基づいて冗長データを生成する場合(以下、「(A)条件」という。)と、
(B)冗長データが設定される基準パケットデータの1つ前、2つ前及び5つ前のパケットデータに含まれる操作入力データ群の3つの操作入力データ群に基づいて冗長データを生成する場合(以下、「(B)条件」という。)と、
を比較すると、ゲーム端末装置100などの受信装置によって基準パケットデータの3つ前から5つ前の3つ操作入力データ群が連続してパケットロストした場合には、(B)条件の場合に比べて、(A)条件の方が、パケットロストされた操作入力データ群を復元するためには、パケットロストがされてから復元するまで時間は、長時間となる。
【0179】
すなわち、(B)条件においては、基準パケットデータの冗長データによってのみ復元可能であるのに比べて、(A)条件においては、当該基準パケットデータだけでなく、他の基準パケットデータによって3つ前または5つ前の操作入力データ群を復元しつつ、当該基準パケットデータによって5つ前または3つ前の操作入力データ群を復元しなければならず、連続してパケットロストされた全ての操作入力データ群を復元するための時間は。長時間となる。
【0180】
なお、この場合であって後者(B)条件において、基準パケットデータの1つ前、4つ前及び5つ前のパケットデータに含まれる操作入力データ群の3つの操作入力データ群に基づいて冗長データを生成する場合と比べても、(A)条件の場合には、連続してパケットロストされた全ての操作入力データを復元するための時間は、長時間となる。
【0181】
そこで、本実施形態では、冗長データ生成用操作入力データに、シーケンスIDが連続している操作入力データを含ませることによって、連続したパケットロストへの耐性を向上させつつ、パケットロストされた実データにおける復元の容易性及び迅速性をバランスよく実現することができる。
【0182】
5.1.3 冗長データの生成原理における第3の特徴
次に、本実施形態における冗長データの生成原理における第3の特徴について説明する。
【0183】
本実施形態においては、m個の冗長データ生成用操作入力データ群において、冗長データ生成用離隔操作入力データ群のシーケンスID(α1)と、シーケンスIDが連続する他の冗長データ生成用操作入力データ群のうち最新のシーケンスID(αnew2)または最先のシーケンスID(αold2)と、については、下記の(式1)または(式2)の何れかの関係を有している。
【0184】
α1 = αnew2+(n+1) ・・・(式1)
【0185】
α1 = αold2−(n+1) ・・・(式2)
【0186】
すなわち、本実施形態においては、冗長データ生成用離隔操作入力データ群として、最新の冗長データ生成用操作入力データ群または最先の冗長データ生成用操作入力データ群とn+1以上離れた冗長データ生成用操作入力データ群を用いている。
【0187】
例えば、上述のように、冗長データが設定される基準パケットデータの1つ前、2つ前及び5つ前のパケットデータに含まれる3つの操作入力データ群に基づいて冗長データを生成する場合には、5個前のパケットデータに含まれる操作入力データ群が冗長データ生成用離隔操作入力データ群(α1)であり、2個前のパケットデータに含まれる操作入力データ群が、シーケンスIDが連続する他の冗長データ生成用操作入力データ群のうち最先のシーケンスID(αold2)である。
【0188】
すなわち、この場合においては、当該基準パケットデータの1個前及び2個前のパケットデータに含まれる操作入力データ群によって、連続する他の冗長データ生成用操作入力データ群が「n=2」となり、5個前のパケットデータに含まれる操作入力データ群と2個前のパケットデータに含まれる操作入力データ群とは、パケットデータとして「3」個離隔されている。
【0189】
また、ゲーム端末装置100などの受信装置においては、パケットロストされた操作入力データ群を復元する際に特定された少なくとも1の操作入力データ群が含まれるパケットデータの配信順P1と、当該復元をする際に特定された冗長データを含むパケットデータの配信順P2とについては、下記の(式3)の関係を有することになる。
【0190】
P1=P2±(m+n) ・・・(式3)
【0191】
例えば、冗長データが設定される基準パケットデータの1つ前、2つ前及び5つ前のパケットデータに含まれる3つの操作入力データ群に基づいて冗長データを生成する場合には、基準パケットデータに含まれる冗長データのシーケンスIDと当該冗長データを基準に冗長データ生成用離隔操作入力データ群に該当する操作入力データ群とは、(式3)に示されるように、シーケンスIDとして「5」離隔されている。
【0192】
したがって、後述するようにゲーム端末装置100などの受信装置によって連続して2つのパケットデータがパケットロストした場合にあっては、連続してパケットロストされた直後のパケットデータの冗長データと操作入力データ群、当該パケットデータの次に受信されたパケットデータにおける冗長データ、及び、パケットロストされたパケットデータの前に既に受信していた2つの操作入力データ群に基づいて、パケットロストされた操作入力データの復元を行うことができるようになっている(図8参照)。
【0193】
このような特徴を有することによって、n個連続してパケットロストが発生した場合であっても、当該冗長データ生成用離隔操作入力データについてはパケットロストされずに確実に受信装置に受信させることができるようになっており、復元に用いる実データを的確に確保させて連続したパケットロストへの耐性を向上させることができるようになっている。
【0194】
5.1.4 冗長データの生成原理における第4の特徴
次に、本実施形態における冗長データの生成原理における第4の特徴について説明する。
【0195】
冗長データ生成用操作入力データには、冗長データが設定されるパケットデータの直前に配信された操作入力データ群が含まれる。
【0196】
すなわち、ゲーム端末装置100などの受信装置において、復元する操作入力データ群を復元する際に特定された冗長データが含まれるパケットデータが、パケットロストされたパケットデータの配信後(具体的には、配信直後)のシーケンスIDを有している。
【0197】
このため、受信装置においてパケットロストが発生した場合に、当該パケットロストされた操作入力データ群を用いて生成された冗長データを迅速に取得することができるので、迅速にパケットロストされた操作入力データ群を復元することができるようになっている。
【0198】
そして、上述の各条件を具備する冗長データ生成用操作入力データ群としては、3(m=3)個の操作入力データ群を用いるとともに、2(n=2)個のシーケンスIDが連続した操作入力データ群を用いるようになっており、例えば、冗長データが含まれるパケットデータを基準に、1個前、2個前及び5個前の操作入力データ群を用いている。
【0199】
本実施形態においては、このような冗長データ生成用操作入力データ群を用いることによって、連続したパケットロストへの耐性の向上と、パケットロストされた実データにおける復元の容易性及び迅速性とのバランスが優れた冗長データを有するパケットデータをゲーム端末装置100などの受信装置に提供することができるようになっている。
【0200】
5.2 具体例
5.2.1 冗長データの具体例
次に、図6を用いて本実施形態において生成される冗長データの具体例について説明する。なお、図6は、本実施形態において生成される冗長データの一例であって、その構造を示す図である。
【0201】
パケット生成管理部205は、上述するように、各パケットデータを生成する際に、パケットデータに含まれる操作入力データ群を、シーケンスID(すなわち、配信順の情報)を保持しつつ、サーバ用記憶部210に順次記憶し、当該記憶された複数の操作入力データ群に基づいて所定の演算を実行して各冗長データを生成するようになっている。
【0202】
特に、パケット生成管理部205は、冗長データを設定する基準パケットデータの1個前、2個前及び5個前のパケットデータに含まれる操作入力データ群について排他論理和の演算を実行し、当該基準パケットデータに含ませるべき冗長データを生成する。
【0203】
なお、シーケンスID毎の各操作入力データ群は、前フレームからの差分値によって示される情報であるため、排他的論理和の演算を実行する際に、データ長が同一とならず、異なる場合もある。そこで、パケット生成管理部205は、冗長データを設定する基準パケットデータの1個前、2個前及び5個前のパケットデータに含まれる操作入力データ群について排他論理和の演算を実行する際に、データ長の短い操作入力データ群については、「0」を追加することによって、データ長を揃えつつ、当該排他的論理和を実行する。
【0204】
例えば、本実施形態のサーバ装置200におけるパケット生成管理部205は、図6に示すように、所定の期間においては、操作入力データA〜Lと冗長データPa〜Plとを含む第1パケットデータ500−1〜第12パケットデータ500−12を順次生成し、各ゲーム端末装置100に配信する。
【0205】
このような場合において、例えば、パケット生成管理部205は、第6パケットデータ500−6を生成する場合には、当該第6パケットデータ500−6を基準に5個前のパケットデータ500−1に含まれる操作入力データ群Aと、2個前のパケットデータ500−4に含まれる操作入力データ群Dと、について排他的論理和を演算しつつ、当該排他的論理和の演算結果と、1個前のパケットデータ500−5に含まれる操作入力データ群Eと、について排他的論理和を演算し、冗長データPfを生成する。
【0206】
5.2.2 冗長データに基づくパケットロストの復元例
次に、図7〜図10の各図を用いて本実施形態のサーバ装置200において生成されるパケットデータに含まれる冗長データの復元例について説明する。図7〜図10は、本実施形態のサーバ装置において生成されるパケットデータに含まれる冗長データの復元処理について説明するための図である。
【0207】
各ゲーム端末装置100は、図6に示すようなパケットデータを受信し、当該受信したパケットデータに基づいて、サーバ装置200から配信された際のシーケンスIDを認識しつつ、未受信のパケットデータ(すなわち、パケットロスト)を検出するパケットロスト検出部122と、未受信のパケットデータが検出された場合に、未受信パケットデータのシーケンスIDを基準に、m個の受信したパケットデータにそれぞれ含まれる少なくとも1の冗長データと2以上の操作入力データ群を特定し、当該特定した冗長データ及び操作入力データ群について排他的論理和の演算を実行し、未受信のパケットデータに含まれる操作入力データ群を復元するデータ復元部123と、を有している。
【0208】
また、各ゲーム端末装置100は、シーケンスIDを維持しつつ、受信したパケットデータが記憶される第2のバッファ178と、を有している、
【0209】
(単一のパケットデータがパケットロストした場合)
例えば、パケットロスト検出部122が、図6に示すように、生成されたパケットデータを受信する場合であって、第5パケットデータが未受信のパケットデータ(すなわち、パケットロスト)であると検出した場合には、データ復元部123は、図7に示すように、第5パケットデータの次のシーケンスIDを有する第6パケットデータの冗長データPfと、当該冗長データPfの生成時に用いられ、パケットロストされたパケットデータ以外のパケットデータ、すなわち、第1パケットデータ及び第4パケットデータに含まれる操作入力データ群A及びDを第2のバッファ178から特定する。
【0210】
そして、データ復元部123は、冗長データPfと操作入力データ群Aとの排他的論理和を演算しつつ、その結果と操作入力データ群Dとの排他的論理和を演算し、第5パケットデータに含まれる操作入力データ群Eを復元する。
【0211】
なお、この場合において、1/30秒ごとにパケットデータが配信されているとすると、データ復元による受信遅延は、1/30秒となる。
【0212】
(連続した2のパケットデータがパケットロストした場合)
例えば、パケットロスト検出部122が、図6に示すように、生成されたパケットデータを受信する場合であって、第5パケットデータ及び第6パケットデータのシーケンスIDが連続した2のパケットデータがパケットロストであると検出した場合には、データ復元部123は、図8に示すように、第6パケットデータの次の2つのシーケンスIDを有する第7パケットデータ及び第8の冗長データPg及びPhと、当該冗長データPg及びPhの生成時に用いられた、パケットロストされたパケットデータ以外のパケットデータ、すなわち、第2パケットデータ、第3パケットデータ及び第7パケットデータに含まれる操作入力データ群B、C及びGを第2のバッファから特定する。
【0213】
そして、データ復元部123は、第5パケットデータ及び第6パケットデータに含まれる操作入力データ群E及びFを復元する。
【0214】
具体的には、まず、データ復元部123は、冗長データPhと操作入力データ群Cとの排他的論理和を演算しつつ、その結果と操作入力データ群Gとの排他的論理和を演算し、第6パケットデータに含まれる操作入力データ群Fを復元する。
【0215】
そして、データ復元部123は、冗長データPgと操作入力データ群Bとの排他的論理和を演算しつつ、その結果と復元した操作入力データ群Gとの排他的論理和を演算し、第6パケットデータに含まれる操作入力データ群Fを復元する。
【0216】
なお、この場合において、1/30秒ごとにパケットデータが配信されているとすると、データ復元による受信遅延は、3/30秒となる。
【0217】
(連続した3のパケットデータがパケットロストした場合)
例えば、パケットロスト検出部122が、図6に示すように、生成されたパケットデータを受信する場合であって、第5パケットデータ〜第7パケットデータのシーケンスIDが連続する3つのパケットデータがパケットロストであると検出した場合には、データ復元部123は、図9に示すように、第7パケットデータの次の3つのシーケンスIDを有する第8パケットデータ〜第10パケットデータの冗長データPh、Pi及びPjと、当該冗長データPh、Pi及びPjの生成時に用いられた、パケットロストされたパケットデータ以外のパケットデータ、すなわち、第3パケットデータ及び第4パケットデータと第8パケットデータ及び第9パケットデータとに含まれる操作入力データ群C、D、H及びIを第2のバッファ178から特定する。
【0218】
そして、データ復元部123は、第5パケットデータ〜第7パケットデータに含まれる操作入力データ群E、F及びGを復元する。
【0219】
具体的には、まず、データ復元部123は、冗長データPiと操作入力データ群Dとの排他的論理和を演算しつつ、その結果と操作入力データ群Hとの排他的論理和を演算し、第7パケットデータに含まれる操作入力データ群Gを復元する。
【0220】
次に、データ復元部123は、冗長データPhと操作入力データ群Cとの排他的論理和を演算しつつ、その結果と復元された操作入力データ群Gとの排他的論理和を演算し、第6パケットデータに含まれる操作入力データ群Fを復元する。
【0221】
そして、データ復元部123は、冗長データPiと操作入力データ群Hとの排他的論理和を演算しつつ、その結果と操作入力データ群Iとの排他的論理和を演算し、第5パケットデータに含まれる操作入力データ群Eを復元する。
【0222】
なお、この場合において、1/30秒毎にパケットデータが配信されているとすると、データ復元による受信遅延は、5/30秒となる。
【0223】
(連続した4のパケットデータうち3のパケットデータがパケットロストした場合)
例えば、パケットロスト検出部122が、図6に示すように、生成されたパケットデータを受信する場合であって、第5パケットデータ、第6パケットデータ及び第8パケットデータがパケットロストであると検出した場合には、データ復元部123は、図9に示すように、第7パケットデータ、第9パケットデータ及び第10パケットデータの冗長データPg、Pi及びPjと、当該冗長データPg、Pi及びPjの生成時に用いられた、パケットロストされたパケットデータ以外のパケットデータ、すなわち、第2パケットデータ、第4パケットデータ、第7パケットデータ及び第9パケットデータに含まれる操作入力データ群B、D、G及びIを記憶部から特定する。
【0224】
そして、データ復元部123は、第5パケットデータ、第6パケットデータ及び第8パケットデータに含まれる操作入力データ群E、F及びHを復元する。
【0225】
具体的には、まず、データ復元部123は、冗長データPiと操作入力データ群Dとの排他的論理和を演算しつつ、その結果と操作入力データ群Gとの排他的論理和を演算し、第8パケットデータに含まれる操作入力データ群Hを復元する。
【0226】
次に、データ復元部123は、冗長データPjと復元された操作入力データ群Hとの排他的論理和を演算しつつ、その結果と操作入力データ群Iとの排他的論理和を演算し、第5パケットデータに含まれる操作入力データ群Eを復元する。
【0227】
そして、データ復元部123は、冗長データPgと操作入力データ群Bとの排他的論理和を演算しつつ、その結果と復元された操作入力データ群Eとの排他的論理和を演算し、第6パケットデータに含まれる操作入力データ群Fを復元する。
【0228】
なお、この場合において、1/30秒毎にパケットデータが配信されているとすると、データ復元による受信遅延は、5/30秒となる。
【0229】
5.3 パケットロストされたデータの再送処理
本実施形態においては、上述のように冗長データを有するパケットデータを用いて各ゲーム端末装置100に操作入力データ群を配信するようになっている。
【0230】
しかしながら、4つ以上連続してパケットロストが続いた場合には、これらのパケットロストされたデータを復元するためには、パケットロストしてから復元するまでの時間が長時間となる。
【0231】
例えば、1/30秒毎にパケットデータが配信されている場合であって、4つ連続してパケットロストが発生した場合には、パケットロストされたパケットデータに含まれる操作入力データ群の復元には7/30秒の時間が必要となり、5つの連続してパケットロストが発生した場合には、パケットロストされたパケットデータに含まれる操作入力データ群の復元には9/30秒時間が必要となる。
【0232】
また、連続してパケットロストされたパケットデータが多くなると、復元自体が行うことができない場合も生ずる。
【0233】
そこで、本実施形態においては、4つ以上のパケットロストが発生した場合には、各ゲーム端末装置100からサーバ装置200に対してパケットロストされたパケットデータに含まれる操作入力データ群の再送要求が実行され、当該再送要求に基づいて該当する操作入力データ群が該当するゲーム端末装置100に配信される。
【0234】
具体的には、各ゲーム端末装置100において、パケットロスト検出部122は、4つ以上連続してパケットロストを検出した場合には、既に受信したパケットデータに基づいて、パケットロストされたパケットデータのシーケンスIDを認識する。
【0235】
そして、パケット生成部121は、当該パケットロストしたシーケンスIDを有する操作入力データ群の再送要求のためのデータを、次にサーバ装置200に送信されるパケットデータにおけるペイロードに再送データとして設定する。
【0236】
一方、サーバ装置200においては、パケット生成管理部205は、当該再送要求が含まれたパケットデータを受信した場合には、該当するゲーム端末装置100に配信するパケットデータのペイロードに再送要求された操作入力データ群(すなわち、再送データ)を設定し、設定した再送データを有するパケットデータを該当するゲーム端末装置100に配信する。
【0237】
このような構成を有することによって、本実施形態の対戦ゲームシステム10は、連続してパケットロストされたパケットデータが多い場合であっても、当該パケットロストされた操作入力データ群を迅速に再取得させることができるので、パケットデータに基づいてリアルタイム処理などの迅速な処理が要求されるゲーム処理を適切に実行させることができる。
【0238】
5.4 ゲーム端末装置及びサーバ装置の処理
5.4.1 サーバ装置におけるパケットデータの生成処理
次に、図11を用いて本実施形態のサーバ装置200におけるパケットデータの生成処理について説明する。なお、図11は、本実施形態のサーバ装置200におけるパケットデータの生成処理の動作を示すフローチャートである。
【0239】
本動作においては、既に各ゲーム端末装置100との通信が実行され、他のゲーム端末装置100とともに同一のゲーム空間への参加が登録されているものとする。また、本動作は、予め定められたタイミング(例えば、1/30フレーム)毎にゲーム実行管理部202と連動して実行するようになっている。
【0240】
まず、パケット生成管理部205は、ゲーム実行管理部202からシーケンスIDを特定するとともに(ステップS101)、特定したシーケンスIDに基づいて冗長データを生成し(ステップS102)、各ゲーム端末装置100において同一のタイミングで配信する同一のシーケンスIDを有するパケットデータをそれぞれ生成する(ステップS103)。
【0241】
具体的には、パケット生成管理部205は、パケットデータにおける送信元及び送信先の情報など各種の情報を設定しつつ、既に受信された各ゲーム端末装置100の送信すべき各操作入力データを送信用の操作入力データに加工して、すなわち、絶対値で示される各操作入力データを差分値で示される操作入力データからなる操作入力データ群に変換してパケットデータのペイロードに設定する。
【0242】
また、パケット生成管理部205は、特定したシーケンスIDに基づいて既に送信された該当するシーケンスIDを有する各パケットデータから複数の操作入力データ群(例えば、当該特定したシーケンスIDを基準に1個前、2個前及び5個前のシーケンスIDを有するパケットデータ)を特定、すなわち、記憶されているサーバ用記憶部210に記憶された中から抽出する。
【0243】
そして、パケット生成管理部205は、当該特定された各パケットデータに含まれる各操作入力データ群について所定の排他的論理和を演算して冗長データを生成し、当該生成した冗長データをパケットデータのペイロードに設定する。
【0244】
なお、パケット生成管理部205は、1または複数のゲーム端末装置100から再送要求を受信している場合には、該当する操作入力データ群を該当するゲーム端末装置100向けのパケットデータのペイロードに設定する。
【0245】
次いで、パケット生成管理部205は、パケットデータに設定した操作入力データ群をシーケンスIDとともにサーバ用記憶部210に記憶する(ステップS104)。
【0246】
最後に、パケット生成管理部205は、生成したパケットデータをそれぞれ各ゲーム端末装置100に送信し(ステップS105)、本動作を終了させる。
【0247】
5.4.2 ゲーム端末装置におけるパケットデータの復元処理
次に、図12を用いて本実施形態のゲーム端末装置100におけるパケットデータの生成処理について説明する。なお、図12は、本実施形態のゲーム端末装置100におけるパケットデータの復元処理の動作を示すフローチャートである。
【0248】
本動作においては、既にサーバ装置200との通信が実行され、サーバ装置200と既に同期されているとともに、他のゲーム端末装置100とともに同一のゲーム空間への参加が登録されているものとする。また、本動作は、予め定められたタイミング(例えば、1/30フレーム)毎に、ゲーム演算部110と連動して実行する。
【0249】
また、本動作においては、ゲーム処理の実行中、数フレーム分のパケットデータが第2のバッファ178にバッファリングされており、ゲーム演算部110は、第2のバッファ178にバッファリングされたパケットデータに含まれる操作入力データ群に基づいて、所定のタイミング(1/60フレーム)毎にゲーム処理を実行しているものとする。
【0250】
なお、ゲーム演算部110は、サーバ装置200と確立された同期に基づいて。第2のバッファ178に記憶された未処理の操作入力データ群を、シーケンスIDに従って実行し、第2のバッファ178内に未処理の操作入力データ群が無くなった場合には、新たに記憶されるまでその処理を中断する。
【0251】
まず、パケットロスト検出部122は、操作入力データ群を有するパケットデータにおける受信の有無を判定する(ステップS301)。このとき、パケットロスト検出部122は、該当するシーケンスIDを有するパケットデータを受信したと判定した場合には、ステップS303の処理に移行し、当該パケットデータを受信していないと判定した場合には、ステップS302の処理に移行する。
【0252】
次いで、パケットロスト検出部122は、ステップS301の処理において、パケットデータを受信していないと判定した場合には、パケットロストの連続発生回数をカウントするカウンタ(以下、「パケットロストカウンタ」という。)の値に「1」を加算し(ステップS302)、本動作を終了させる。なお、パケットロストカウンタは、例えば、パケットロスト検出部122内に設けられている。
【0253】
次いで、パケットロスト検出部122は、ステップS301の処理において、パケットデータを受信したと判定した場合には、受信したパケットデータのシーケンスIDを認識しつつ、当該受信したパケットデータを当該シーケンスIDとともに第2のバッファ178に記憶する(ステップS303)。
【0254】
次いで、パケットロスト検出部122は、パケットロストカウンタのカウント数が「4」以上であるか否か判定する(ステップS304)。このとき、パケットロスト検出部122は、当該パケットロストカウンタのカウント数が「4」以上である判定した場合には、受信したパケットデータにおいて認識したシーケンスIDに基づいて、パケットロストされたシーケンスIDを特定しつつ、当該パケットロストされたパケットデータの再送要求(具体的には、当該パケットデータに含まれる操作入力データ群の再送要求)をサーバ装置200に送信し(ステップS305)、ステップS311の処理に移行する。また、パケットロスト検出部122は、パケットロストカウンタのカウント数が「4」以上でないと判定された場合には、そのままステップS311の処理に移行する。
【0255】
次いで、パケットロスト検出部122は、受信したパケットデータに再送データが含まれているか否かを判定する(ステップS311)。このとき、パケットロスト検出部122は、再送データが含まれていると判定した場合には、ステップS312の処理に移行し、再送データが含まれていないと判定した場合には、ステップS322の処理に移行する。
【0256】
次いで、パケットロスト検出部122は、受信したパケットデータには再送データが含まれていると判定した場合には、当該再送データ(すなわち、操作入力データ群)をシーケンスIDとともに第2のバッファ178に記憶する(ステップS312)。
【0257】
次いで、パケットロスト検出部122は、パケットロストカウンタをリセットし(ステップS313)、ステップS322の処理に移行する。
【0258】
次いで、パケットロスト検出部122は、パケットロストカウンタの値が「0」か否かを判定し(ステップS322)、パケットロストカウンタの値が「0」と判定した場合には、そのまま本動作を終了させる。
【0259】
他方、パケットロスト検出部122は、パケットロストカウンタの値が「0」でないと判定した場合には、受信したパケットデータに含まれる冗長パケットデータに基づいてパケットロストされたパケットデータに含まれる操作入力データ群の復元可能か否かを判定する(ステップS323)。
【0260】
このとき、パケットロスト検出部122は、パケットロストされたパケットデータに含まれる操作入力データ群の復元可能と判定した場合には、ステップS324の処理に移行し、当該操作入力データ群の復元不能と判定した場合には、本動作を終了させる。
【0261】
次いで、パケットロスト検出部122は、ステップS323の処理において、パケットロストされたパケットデータに含まれる操作入力データ群が復元可能であると判定した場合には、受信したパケットデータのシーケンスIDに基づいて、パケットロストされたパケットデータのシーケンスIDを認識しつつ、データ復元部123に受信したパケットデータに含まれる冗長パケットデータに基づいてパケットロストされたパケットデータに含まれる操作入力データ群を復元させる(ステップS324)。
【0262】
なお、データ復元部123は、パケットロストされた単一のパケットデータに含まれる操作入力データ群だけでなく、2以上のパケットロストが発生している場合には、2以上のパケットデータに含まれる操作入力データ群の復元も行う。
【0263】
次いで、パケットロスト検出部122は、復元した操作入力データ群をシーケンスIDとともにサーバ用記憶部210に記憶し(ステップS325)、本動作を終了させる。
【0264】
以上のように、本実施形態のサーバ装置200は、冗長データの生成に用いるm個の実データを用いるとともに、かつ、冗長データの生成に用いる操作入力データ群においてシーケンスIDが不連続となる冗長データ生成用離隔実データを用いることによって、冗長データを多くの構成要素から構成させつつ、かつ、当該構成要素の一部を他の構成要素から離隔させること、すなわち、冗長データを構成する実データを分散して提供することができるので、連続したパケットロストへの耐性を向上させることができるとともに、的確にロスト実データを復元させることができる。
【0265】
したがって、本実施形態のサーバ装置200は、受信済みのパケットデータによってパケットロストされたパケットデータに含まれる操作入力データ群の復元を確実に行うことができるので、ゲーム端末装置100からサーバ装置200への再送要求及びそれに伴う再送処理などの再取得処理を不要またはその頻度を低減し、リアルタイム処理などの迅速な処理が要求されるゲーム処理を適切に実行させることができる。
【0266】
また、本実施形態のサーバ装置200は、連続してパケットロストが発生した場合に、連続したパケットロストへの耐性を向上させつつ、パケットロストされた実データにおける復元の容易性及び迅速性をバランスよく実現することができる。
【0267】
なお、本実施形態においては、サーバ装置200から各ゲーム端末装置100に操作入力データ群を含むパケットデータを配信する場合に、冗長データを設定しているが、各ゲーム端末装置100からサーバ装置200に操作入力データを含むパケットデータを送信する場合に、冗長データを設定し、パケットロストが発生した場合に、当該冗長データに基づいて当該パケットロストされたデータの復元を行うようにしてもよい。
【0268】
また、本実施形態においては、サーバ装置200において、パケットロストが4以上連続して発生した場合には、再送要求に基づいてパケットロストされたデータを再配信しているが、再送要求を実行する際の連続した発生したパケットロストの数は適宜定めることができるようになっている。
【0269】
また、本実施形態のサーバ装置200は、ゲーム装置100とは異なる専用の装置で実現されているが、サーバ装置200がゲーム装置100の全ての機能を包含して構成され、他のゲーム装置100の親機として上記の実施形態を実現してもよい。
【0270】
また、本実施形態の対戦ゲームシステム10において、ゲーム装置100及びサーバ装置200を用いたクライアントサーバ方式に代えて、複数のゲーム装置100を用いたブルートゥース等の無線通信技術を用いたピアトゥーピア方式によって上記の実施形態を実現してもよい。この場合には、各ゲーム装置100がサーバ装置200の全ての機能を包含して構成される。
【0271】
また、本実施形態においては、サーバ装置100及びゲーム装置200間においてパケットデータによって操作入力データ及び音声データの配信を行うようになっているが、これらのデータに限られず、ゲームキャラクタを形成するためのデータ及びオブジェクト空間内におけるキャラクタの位置データなどキャラクタに関するデータ、効果音の発生情報などのゲームの内容を制御するデータ、並びに、ゲームの得点またはゲームプレーヤに関する情報を含むゲーム中に各ゲーム機に配信されるゲームデータが、パケットデータとして配信されてもよい。
【0272】
この場合には、ゲーム装置100及びサーバ装置200は、上記の冗長データを有するパケットデータによって各種のゲームデータを配信し、当該ゲームデータを受信したゲーム装置100及びサーバ装置200は、上記の手法を用いてパケットデータからゲームデータを復元する。
【符号の説明】
【0273】
10 … 対戦ゲームシステム
100 … ゲーム端末装置
101 … 処理部
110 … ゲーム演算部
111 … オブジェクト空間設定部
112 … 仮想カメラ制御部
113 … 動作処理部
114 … ネットワーク設定部
120 … 通信制御部
121 … パケット生成部
122 … パケットロスト検出部
123 … データ復元部
130 … 画像生成部
140 … 音生成部
160 … 操作部
170 … 記憶部
172 … 主記憶部
174 … 画像バッファ
176 … 第1のバッファ
178 … 第2のバッファ
179 … 各種制御情報記憶部
180 … 情報記憶媒体
190 … 表示部
192 … 音出力部
194 … 補助記憶装置
196 … 通信部
200 … サーバ装置
201 … 管理・制御部
202 … ゲーム実行管理部
203 … ネットワーク管理部
204 … 通信管理制御部
205 … パケット生成管理部
210 … サーバ用記憶部
220 … サーバ用通信部
【特許請求の範囲】
【請求項1】
ネットワークを介して他の通信装置に、ゲーム処理を実行させるためのゲームデータをパケット毎に配信するデータ配信装置に搭載されるプログラムであって、
前記データ配信装置を、
パケット毎のゲームデータであるパケットデータにそれぞれ設定する冗長データを生成する生成手段、
前記ゲーム処理を実行するために用いられる実データと前記生成された冗長データを少なくとも含む前記パケットデータを生成し、当該生成したパケットデータの前記他の通信装置への配信を制御する配信制御手段、及び
前記パケットデータに含まれる前記実データを、前記他の通信装置に配信する際の配信順の情報を保持しつつ、記憶手段に順次記憶する記憶制御手段、
として機能させ、
前記生成手段として、
各パケットデータにおける冗長データを生成する際に、前記記憶手段に記憶された実データの中から、生成される前記冗長データが設定されるパケットデータよりも過去に配信されたパケットデータに含まれるm(m≧3)個の実データを特定し、
前記特定した実データについて排他的論理和の演算を実行し、該当するパケットデータにおける前記冗長データを生成するように機能させるとともに、
前記特定したm個の実データには、当該m個の実データにおける他の実データと前記配信順が不連続となる少なくとも1の実データが含まれることを特徴とするプログラム。
【請求項2】
請求項1に記載のプログラムにおいて、
前記特定したm個の実データには、前記配信順が連続している少なくともn(2≦n<m)個の実データが含まれる、プログラム。
【請求項3】
請求項2に記載のプログラムにおいて、
前記特定したm個の実データにおける前記配信順が不連続な実データの配信順α1と、前記特定したm個の実データにおける配信順が連続するn個の実データうち最新の配信順(αnew2)または最先の配信順(αold2)と、については、下記の(式1)または(式2)の何れかの関係を有する、プログラム。
α1 = αnew2+(n+1) ・・・(式1)
α1 = αold2−(n+1) ・・・(式2)
【請求項4】
請求項2または3に記載のプログラムにおいて、
前記特定したm個の実データには、前記冗長データが設定されるパケットデータの直前に配信された実データが含まれる、プログラム。
【請求項5】
請求項1ないし4の何れかに記載のプログラムにおいて、
前記実データが、ゲーム処理を実行する前記他の通信装置から送信されたゲームデータであって当該他の通信装置で操作入力された操作入力データである、プログラム。
【請求項6】
請求項1ないし5の何れかに記載のプログラムにおいて、
前記データ配信装置を、
プレーヤの操作入力を操作入力データとして受け付ける操作入力手段、及び
前記受け付けた操作入力データに基づいてゲーム処理を実行するゲーム処理手段、
として更に機能させ、
前記実データが、前記受け付けた操作入力データである、プログラム。
【請求項7】
ネットワークを介してデータ配信装置から配信されたパケット毎のゲームデータに基づいてゲーム処理を実行するゲーム装置に搭載されるプログラムであって、
パケット毎のゲームデータである各パケットデータには、前記ゲーム処理を実行するために用いられる実データと、前記データ配信装置から自パケットデータより過去に配信されたパケットデータに含まれるm(m≧3)個の実データについて排他的論理和の演算を実行して生成された冗長データと、が少なくとも含まれている場合であって、
前記冗長データが生成される際に特定されたm個の実データには、当該m個の実データおける他の実データと前記データ配信装置から配信される際の配信順が不連続となる少なくとも1の実データが含まれている場合に、
前記ゲーム装置を、
前記データ配信装置から順次配信された前記パケットデータの受信制御を行う受信制御手段、
前記受信された受信パケットデータに基づいて、前記データ配信装置から配信された際の配信順を認識しつつ、未受信の未受信パケットデータを検出する検出手段、
前記未受信パケットデータが検出された場合に、前記未受信パケットデータの配信順を基準に、m個の前記受信パケットデータにそれぞれ含まれる少なくとも1の冗長データと2以上の実データを特定し、当該特定した冗長データ及び実データについて排他的論理和の演算を実行し、前記未受信のパケットデータに含まれる実データを復元する復元手段、及び
前記受信したパケットデータまたは前記復元したパケットデータに基づいて前記ゲーム処理を実行するゲーム処理手段、
として機能させることを特徴とするプログラム。
【請求項8】
請求項7に記載のプログラムにおいて、
前記実データを復元する際に特定された前記冗長データが含まれる受信パケットデータが、前記未受信パケットデータの配信後の配信順を有する、プログラム。
【請求項9】
請求項8に記載のプログラムにおいて、
前記冗長データが生成される際に特定されたm個の実データには、前記配信順が連続している少なくともn(2≦n<m)個の実データが含まれており、
前記実データを復元する際に特定された少なくとも1の実データが含まれる受信パケットデータの配信順P1と、前記特定された冗長データを含む受信パケットデータの配信順P2とについては、下記の(式3)の関係を有するプログラム。
P1=P2±(m+n) ・・・(式3)
【請求項10】
請求項7ないし9の何れかに記載のプログラムにおいて、
前記冗長データが生成される際に特定されたm個の実データには、前記冗長データが設定されるパケットデータの直前に配信された実データが含まれており、
前記実データを復元する際に特定された冗長データが含まれる受信パケットデータが、前記未受信パケットデータの配信直後の配信順を有する、プログラム。
【請求項11】
請求項7ないし10の何れかに記載のプログラムにおいて、
前記実データが、ゲーム処理を実行する他のゲーム装置から送信されたゲームデータであって当該他のゲーム装置で操作入力された操作入力データである、プログラム。
【請求項12】
ネットワークを介して他の通信装置に、ゲーム処理を実行させるためのゲームデータをパケット毎に配信するデータ配信装置に搭載されるプログラムであって、
パケット毎のゲームデータであるパケットデータにそれぞれ設定する冗長データを生成する生成手段と、
前記ゲーム処理を実行するために用いられる実データと前記生成された冗長データを少なくとも含む前記パケットデータを生成し、当該生成したパケットデータの前記他の通信装置への配信を制御する配信制御手段と、
前記パケットデータに含まれる前記実データを、前記他の通信装置に配信する際の配信順の情報を保持しつつ、記憶手段に順次記憶する記憶制御手段と、
を備え、
前記生成手段が、
各パケットデータにおける冗長データを生成する際に、前記記憶手段に記憶された実データの中から、生成される前記冗長データが設定されるパケットデータよりも過去に配信されたパケットデータに含まれるm(m≧3)個の実データを特定し、
前記特定した実データについて排他的論理和の演算を実行し、該当するパケットデータにおける前記冗長データを生成するとともに、
前記特定したm個の実データには、当該m個の実データにおける他の実データと前記配信順が不連続となる少なくとも1の実データが含まれることを特徴とするデータ配信装置。
【請求項13】
ネットワークを介してデータ配信装置から配信されたパケット毎のゲームデータに基づいてゲーム処理を実行するゲーム装置であって、
パケット毎のゲームデータである各パケットデータには、前記ゲーム処理を実行するために用いられる実データと、前記データ配信装置から自パケットデータより過去に配信されたパケットデータに含まれるm(m≧3)個の実データについて排他的論理和の演算を実行して生成された冗長データと、が少なくとも含まれているとともに、
前記冗長データが生成される際に特定されたm個の実データには、当該m個の実データおける他の実データと前記データ配信装置から配信される際の配信順が不連続となる少なくとも1の実データが含まれている場合に、
前記データ配信装置から順次配信された前記パケットデータの受信制御を行う受信制御手段と、
前記受信された受信パケットデータに基づいて、前記データ配信手段から配信された際の配信順を認識しつつ、未受信の未受信パケットデータを検出する検出手段と、
前記未受信パケットデータが検出された場合に、前記未受信パケットデータの配信順を基準に、m個の前記受信パケットデータにそれぞれ含まれる少なくとも1の冗長データと2以上の実データを特定し、当該特定した冗長データ及び実データについて排他的論理和の演算を実行し、前記未受信のパケットデータに含まれる実データを復元する復元手段と、
前記受信したパケットデータまたは前記復元したパケットデータに基づいて前記ゲーム処理を実行するゲーム処理手段と、
を備えることを特徴とするゲーム装置。
【請求項14】
ゲームデータに基づいてゲーム処理を実行するゲーム装置と、
ネットワークを介して前記ゲーム装置に前記ゲームデータをパケット毎に配信するデータ配信装置と、
を備え、
前記データ配信装置が、
パケット毎のゲームデータであるパケットデータにそれぞれ設定する冗長データを生成する生成手段と、
前記ゲーム処理を実行するために用いられる実データと前記生成された冗長データを少なくとも含む前記パケットデータを生成し、当該生成したパケットデータの前記他の通信装置への配信を制御する配信制御手段と、
前記パケットデータに含まれる前記実データを、前記他の通信装置に配信する際の配信順の情報を保持しつつ、記憶手段に順次記憶する記憶制御手段と
を備え、
前記生成手段が、
各パケットデータにおける冗長データを生成する際に、前記記憶手段に記憶された実データの中から、生成される前記冗長データが設定されるパケットデータよりも過去に配信されたパケットデータに含まれるm(m≧3)個の実データを特定し、
前記特定した実データについて排他的論理和の演算を実行し、該当するパケットデータにおける前記冗長データを生成するとともに、
前記特定したm個の実データには、当該m個の実データにおける他の実データと前記配信順が不連続となる少なくとも1の実データが含まれること、
前記ゲーム装置が、
前記データ配信装置から順次配信された前記パケットデータの受信制御を行う受信制御手段と、
前記受信された受信パケットデータに基づいて、前記データ配信装置から配信された際の配信順を認識しつつ、未受信の未受信パケットデータを検出する検出手段と、
前記未受信パケットデータが検出された場合に、前記未受信パケットデータの配信順を基準に、m個の前記受信パケットデータにそれぞれ含まれる少なくとも1の冗長データと2以上の実データを特定し、当該特定した冗長データ及び実データについて排他的論理和の演算を実行し、前記未受信のパケットデータに含まれる実データを復元する復元手段と、
前記受信したパケットデータまたは前記復元したパケットデータに基づいて前記ゲーム処理を実行するゲーム処理手段と、
を有することを特徴とするネットワークシステム。
【請求項1】
ネットワークを介して他の通信装置に、ゲーム処理を実行させるためのゲームデータをパケット毎に配信するデータ配信装置に搭載されるプログラムであって、
前記データ配信装置を、
パケット毎のゲームデータであるパケットデータにそれぞれ設定する冗長データを生成する生成手段、
前記ゲーム処理を実行するために用いられる実データと前記生成された冗長データを少なくとも含む前記パケットデータを生成し、当該生成したパケットデータの前記他の通信装置への配信を制御する配信制御手段、及び
前記パケットデータに含まれる前記実データを、前記他の通信装置に配信する際の配信順の情報を保持しつつ、記憶手段に順次記憶する記憶制御手段、
として機能させ、
前記生成手段として、
各パケットデータにおける冗長データを生成する際に、前記記憶手段に記憶された実データの中から、生成される前記冗長データが設定されるパケットデータよりも過去に配信されたパケットデータに含まれるm(m≧3)個の実データを特定し、
前記特定した実データについて排他的論理和の演算を実行し、該当するパケットデータにおける前記冗長データを生成するように機能させるとともに、
前記特定したm個の実データには、当該m個の実データにおける他の実データと前記配信順が不連続となる少なくとも1の実データが含まれることを特徴とするプログラム。
【請求項2】
請求項1に記載のプログラムにおいて、
前記特定したm個の実データには、前記配信順が連続している少なくともn(2≦n<m)個の実データが含まれる、プログラム。
【請求項3】
請求項2に記載のプログラムにおいて、
前記特定したm個の実データにおける前記配信順が不連続な実データの配信順α1と、前記特定したm個の実データにおける配信順が連続するn個の実データうち最新の配信順(αnew2)または最先の配信順(αold2)と、については、下記の(式1)または(式2)の何れかの関係を有する、プログラム。
α1 = αnew2+(n+1) ・・・(式1)
α1 = αold2−(n+1) ・・・(式2)
【請求項4】
請求項2または3に記載のプログラムにおいて、
前記特定したm個の実データには、前記冗長データが設定されるパケットデータの直前に配信された実データが含まれる、プログラム。
【請求項5】
請求項1ないし4の何れかに記載のプログラムにおいて、
前記実データが、ゲーム処理を実行する前記他の通信装置から送信されたゲームデータであって当該他の通信装置で操作入力された操作入力データである、プログラム。
【請求項6】
請求項1ないし5の何れかに記載のプログラムにおいて、
前記データ配信装置を、
プレーヤの操作入力を操作入力データとして受け付ける操作入力手段、及び
前記受け付けた操作入力データに基づいてゲーム処理を実行するゲーム処理手段、
として更に機能させ、
前記実データが、前記受け付けた操作入力データである、プログラム。
【請求項7】
ネットワークを介してデータ配信装置から配信されたパケット毎のゲームデータに基づいてゲーム処理を実行するゲーム装置に搭載されるプログラムであって、
パケット毎のゲームデータである各パケットデータには、前記ゲーム処理を実行するために用いられる実データと、前記データ配信装置から自パケットデータより過去に配信されたパケットデータに含まれるm(m≧3)個の実データについて排他的論理和の演算を実行して生成された冗長データと、が少なくとも含まれている場合であって、
前記冗長データが生成される際に特定されたm個の実データには、当該m個の実データおける他の実データと前記データ配信装置から配信される際の配信順が不連続となる少なくとも1の実データが含まれている場合に、
前記ゲーム装置を、
前記データ配信装置から順次配信された前記パケットデータの受信制御を行う受信制御手段、
前記受信された受信パケットデータに基づいて、前記データ配信装置から配信された際の配信順を認識しつつ、未受信の未受信パケットデータを検出する検出手段、
前記未受信パケットデータが検出された場合に、前記未受信パケットデータの配信順を基準に、m個の前記受信パケットデータにそれぞれ含まれる少なくとも1の冗長データと2以上の実データを特定し、当該特定した冗長データ及び実データについて排他的論理和の演算を実行し、前記未受信のパケットデータに含まれる実データを復元する復元手段、及び
前記受信したパケットデータまたは前記復元したパケットデータに基づいて前記ゲーム処理を実行するゲーム処理手段、
として機能させることを特徴とするプログラム。
【請求項8】
請求項7に記載のプログラムにおいて、
前記実データを復元する際に特定された前記冗長データが含まれる受信パケットデータが、前記未受信パケットデータの配信後の配信順を有する、プログラム。
【請求項9】
請求項8に記載のプログラムにおいて、
前記冗長データが生成される際に特定されたm個の実データには、前記配信順が連続している少なくともn(2≦n<m)個の実データが含まれており、
前記実データを復元する際に特定された少なくとも1の実データが含まれる受信パケットデータの配信順P1と、前記特定された冗長データを含む受信パケットデータの配信順P2とについては、下記の(式3)の関係を有するプログラム。
P1=P2±(m+n) ・・・(式3)
【請求項10】
請求項7ないし9の何れかに記載のプログラムにおいて、
前記冗長データが生成される際に特定されたm個の実データには、前記冗長データが設定されるパケットデータの直前に配信された実データが含まれており、
前記実データを復元する際に特定された冗長データが含まれる受信パケットデータが、前記未受信パケットデータの配信直後の配信順を有する、プログラム。
【請求項11】
請求項7ないし10の何れかに記載のプログラムにおいて、
前記実データが、ゲーム処理を実行する他のゲーム装置から送信されたゲームデータであって当該他のゲーム装置で操作入力された操作入力データである、プログラム。
【請求項12】
ネットワークを介して他の通信装置に、ゲーム処理を実行させるためのゲームデータをパケット毎に配信するデータ配信装置に搭載されるプログラムであって、
パケット毎のゲームデータであるパケットデータにそれぞれ設定する冗長データを生成する生成手段と、
前記ゲーム処理を実行するために用いられる実データと前記生成された冗長データを少なくとも含む前記パケットデータを生成し、当該生成したパケットデータの前記他の通信装置への配信を制御する配信制御手段と、
前記パケットデータに含まれる前記実データを、前記他の通信装置に配信する際の配信順の情報を保持しつつ、記憶手段に順次記憶する記憶制御手段と、
を備え、
前記生成手段が、
各パケットデータにおける冗長データを生成する際に、前記記憶手段に記憶された実データの中から、生成される前記冗長データが設定されるパケットデータよりも過去に配信されたパケットデータに含まれるm(m≧3)個の実データを特定し、
前記特定した実データについて排他的論理和の演算を実行し、該当するパケットデータにおける前記冗長データを生成するとともに、
前記特定したm個の実データには、当該m個の実データにおける他の実データと前記配信順が不連続となる少なくとも1の実データが含まれることを特徴とするデータ配信装置。
【請求項13】
ネットワークを介してデータ配信装置から配信されたパケット毎のゲームデータに基づいてゲーム処理を実行するゲーム装置であって、
パケット毎のゲームデータである各パケットデータには、前記ゲーム処理を実行するために用いられる実データと、前記データ配信装置から自パケットデータより過去に配信されたパケットデータに含まれるm(m≧3)個の実データについて排他的論理和の演算を実行して生成された冗長データと、が少なくとも含まれているとともに、
前記冗長データが生成される際に特定されたm個の実データには、当該m個の実データおける他の実データと前記データ配信装置から配信される際の配信順が不連続となる少なくとも1の実データが含まれている場合に、
前記データ配信装置から順次配信された前記パケットデータの受信制御を行う受信制御手段と、
前記受信された受信パケットデータに基づいて、前記データ配信手段から配信された際の配信順を認識しつつ、未受信の未受信パケットデータを検出する検出手段と、
前記未受信パケットデータが検出された場合に、前記未受信パケットデータの配信順を基準に、m個の前記受信パケットデータにそれぞれ含まれる少なくとも1の冗長データと2以上の実データを特定し、当該特定した冗長データ及び実データについて排他的論理和の演算を実行し、前記未受信のパケットデータに含まれる実データを復元する復元手段と、
前記受信したパケットデータまたは前記復元したパケットデータに基づいて前記ゲーム処理を実行するゲーム処理手段と、
を備えることを特徴とするゲーム装置。
【請求項14】
ゲームデータに基づいてゲーム処理を実行するゲーム装置と、
ネットワークを介して前記ゲーム装置に前記ゲームデータをパケット毎に配信するデータ配信装置と、
を備え、
前記データ配信装置が、
パケット毎のゲームデータであるパケットデータにそれぞれ設定する冗長データを生成する生成手段と、
前記ゲーム処理を実行するために用いられる実データと前記生成された冗長データを少なくとも含む前記パケットデータを生成し、当該生成したパケットデータの前記他の通信装置への配信を制御する配信制御手段と、
前記パケットデータに含まれる前記実データを、前記他の通信装置に配信する際の配信順の情報を保持しつつ、記憶手段に順次記憶する記憶制御手段と
を備え、
前記生成手段が、
各パケットデータにおける冗長データを生成する際に、前記記憶手段に記憶された実データの中から、生成される前記冗長データが設定されるパケットデータよりも過去に配信されたパケットデータに含まれるm(m≧3)個の実データを特定し、
前記特定した実データについて排他的論理和の演算を実行し、該当するパケットデータにおける前記冗長データを生成するとともに、
前記特定したm個の実データには、当該m個の実データにおける他の実データと前記配信順が不連続となる少なくとも1の実データが含まれること、
前記ゲーム装置が、
前記データ配信装置から順次配信された前記パケットデータの受信制御を行う受信制御手段と、
前記受信された受信パケットデータに基づいて、前記データ配信装置から配信された際の配信順を認識しつつ、未受信の未受信パケットデータを検出する検出手段と、
前記未受信パケットデータが検出された場合に、前記未受信パケットデータの配信順を基準に、m個の前記受信パケットデータにそれぞれ含まれる少なくとも1の冗長データと2以上の実データを特定し、当該特定した冗長データ及び実データについて排他的論理和の演算を実行し、前記未受信のパケットデータに含まれる実データを復元する復元手段と、
前記受信したパケットデータまたは前記復元したパケットデータに基づいて前記ゲーム処理を実行するゲーム処理手段と、
を有することを特徴とするネットワークシステム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【公開番号】特開2013−27548(P2013−27548A)
【公開日】平成25年2月7日(2013.2.7)
【国際特許分類】
【出願番号】特願2011−165521(P2011−165521)
【出願日】平成23年7月28日(2011.7.28)
【出願人】(000134855)株式会社バンダイナムコゲームス (1,157)
【Fターム(参考)】
【公開日】平成25年2月7日(2013.2.7)
【国際特許分類】
【出願日】平成23年7月28日(2011.7.28)
【出願人】(000134855)株式会社バンダイナムコゲームス (1,157)
【Fターム(参考)】
[ Back to top ]