説明

プログラム、情報記憶媒体及びゲーム装置

【課題】ゲーム演算処理の繁雑化や使用記憶容量の無駄な消費を防止する。
【解決手段】ゲーム装置は、ネットワークを介して他のゲーム装置との間で転送されるパケットの処理を行い、パケットにより転送されるデータに基づいて、ゲーム演算処理を行うゲーム演算部とその結果に基づいて画像を生成する画像生成部を含む。ゲーム演算部は、ゲーム演算処理として、各ゲームシーケンス区間において処理を行う。他のゲーム装置との間で転送されるパケットはパケットにより転送されるデータの種別を特定するパケットIDと、パケットにより転送されるデータが使用されるゲームシーケンス区間を特定する区間IDを含む。パケット処理部は、受信したパケットの区間IDと現在のゲームシーケンス区間の区間IDとの照合処理を行う。ゲーム演算部はパケットの区間IDと現在のゲームシーケンス区間の区間IDとが一致したパケットのデータに基づいてゲーム演算処理を行う。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、プログラム、情報記憶媒体及ゲーム装置等に関する。
【背景技術】
【0002】
近年、ネットワークを介して通信接続される他のゲーム装置との間で通信対戦ゲームを行うゲーム装置が脚光を浴びている。この通信対戦ゲームの従来技術としては例えば特許文献1に開示される技術がある。
【0003】
このような通信対戦ゲームでは、操作データ等のゲームデータをゲーム装置間でやり取りする必要がある。例えば相手プレーヤが入力した操作データ(キーデータ)を、他のゲーム装置からネットワークを介して受信したり、自身のゲーム装置でプレーヤが入力した操作データを、ネットワークを介して他のゲーム装置に送信する。これにより、プレーヤと相手プレーヤの間での通信対戦ゲームが可能になる。
【0004】
この場合にスムーズな通信対戦ゲームを実現するためには、操作データ等のゲームデータを高速な転送速度で通信することが望まれる。そして高速な転送速度を実現する通信プロトコルとしてはUDP(User Datagram Protocol)などが知られている。
【0005】
しかしながら、UDPなどの高速通信プロトコルでは、TCP(Transmission Control Protocol)などの信頼性重視の通信プロトコルとは違って、パケットの到着や到着順序が保証されない。従って、ゲームプログラムの処理が煩雑になったり、バッファの使用記憶容量が無駄に消費されてしまうなどの問題が生じる。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開2004−230191号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
本発明の幾つかの態様によれば、ゲーム演算処理の繁雑化や使用記憶容量の無駄な消費を防止できるプログラム、情報記憶媒体、ゲーム装置等を提供できる。
【課題を解決するための手段】
【0008】
本発明の一態様は、ネットワークを介して他のゲーム装置との間で転送されるパケットの処理を行うパケット処理部と、パケットにより転送されるデータに基づいて、ゲーム演算処理を行うゲーム演算部と、前記ゲーム演算処理の結果に基づいて画像を生成する画像生成部とを含み、前記ゲーム演算部は、前記ゲーム演算処理として、複数のゲームシーケンス区間の各ゲームシーケンス区間において各ゲームシーケンス処理を行い、前記他のゲーム装置との間で転送されるパケットは、パケットにより転送されるデータが使用されるゲームシーケンス区間を特定する区間IDを含み、前記パケット処理部は、受信したパケットの区間IDと、現在のゲームシーケンス区間の区間IDとの照合処理を行い、前記ゲーム演算部は、パケットの区間IDと、現在のゲームシーケンス区間の区間IDとが一致したパケットのデータに基づいて、前記ゲーム演算処理を行うゲーム装置に関係する。また本発明は、上記各部としてコンピュータを機能させるプログラム、又は該プログラムを記憶したコンピュータ読み取り可能な情報記憶媒体に関係する。
【0009】
本発明の一態様によれば、ネットワークを介して転送されるパケットはパケットIDと区間IDを含み、他のゲーム装置から受信したパケットの区間IDと、現在のゲームシーケンス区間の区間IDとの照合処理が行われる。そして、これらの区間IDが一致すると、区間IDが一致したパケットのデータに基づいてゲーム演算処理が行われる。例えば各ゲームシーケンス区間において各ゲームシーケンス処理が行われる。このようにすれば、区間IDが一致したことを条件に、そのパケットのデータに基づくゲーム演算処理が行われるようになるため、ゲーム演算処理の繁雑化や使用記憶容量の無駄な消費等の防止が可能になる。
【0010】
また本発明の一態様では、前記他のゲーム装置から受信したパケットが格納されるパケットバッファを含み、前記パケット処理部は、パケットの区間IDと現在のゲームシーケンス区間の区間IDとが一致したパケットを、前記パケットバッファに書き込み、前記ゲーム演算部は、前記パケットバッファに書き込まれたパケットのデータに基づいて、前記ゲーム演算処理を行ってもよい。
【0011】
このようにすれば、区間IDが一致したパケットがパケットバッファに書き込まれ、書き込まれたパケットのデータに基づいてゲーム演算処理が行われるようになるため、ゲーム演算処理の簡素化・効率化やパケットバッファの使用記憶容量の節約等が可能になる。
【0012】
また本発明の一態様では、前記パケット処理部は、パケットの区間IDと現在のゲームシーケンス区間の区間IDとが一致しなかったパケットについては、前記パケットバッファに書き込まずに破棄してもよい。
【0013】
このようにすれば、区間IDが一致しないパケットについてはパケットバッファに書き込まれないようになるため、当該パケットがパケットバッファに残存することで使用記憶容量が無駄に消費されたり、ゲーム演算処理が繁雑化するなどの事態を防止できる。
【0014】
また本発明の一態様では、前記パケット処理部は、自身のゲーム装置のゲームシーケンス区間と前記他のゲーム装置のゲームシーケンス区間とを同期させる区間同期処理を行い、前記ゲーム演算部は、前記区間同期処理が完了した場合に、第N−1のゲームシーケンス区間から次の第Nのゲームシーケンス区間にゲームシーケンス区間を移行させてもよい。
【0015】
このようにすれば、ゲーム装置のゲームシーケンス区間と他のゲーム装置のゲームシーケンス区間を同期させることが可能になり、パケットの区間IDとゲームシーケンス区間の区間IDとの適正な照合処理を実現できるようになる。
【0016】
また本発明の一態様では、前記パケット処理部は、前記第Nのゲームシーケンス区間では、ゲームシーケンス区間が前記第Nのゲームシーケンス区間であることを表す区間IDを含むパケットを生成して、前記他のゲーム装置に送信してもよい。
【0017】
このようにすれば、第Nのゲームシーケンス区間では、第Nのゲームシーケンス区間であることを表す区間IDを含むパケットだけを他のゲーム装置に送信することが可能になるため、パケット処理やゲーム演算処理の簡素化・効率化を実現できる。
【0018】
また本発明の一態様では、前記パケット処理部は、前記第N−1のゲームシーケンス区間から前記第Nのゲームシーケンス区間に移行した場合には、区間IDをインクリメント又はデクリメントする更新処理を行ってもよい。
【0019】
このようにすれば、ゲームシーケンス区間と区間IDの対応づけをユニークなものにすることが可能になり、処理の簡素化・効率化を図れる。
【0020】
また本発明の一態様では、前記パケット処理部は、前記他のゲーム装置との間で同期パケットの転送処理を行うことで、前記区間同期処理を行ってもよい。
【0021】
このようにすれば、同期パケットの転送処理だけで区間同期処理を実現することが可能になる。
【0022】
また本発明の一態様では、前記パケット処理部は、自身のゲーム装置において前記第N−1のゲームシーケンス区間が完了し、前記他のゲーム装置から前記区間同期処理を要求する同期パケットを受信した場合に、前記第Nのゲームシーケンス区間への移行を通知する同期パケットを前記他のゲーム装置に送信してもよい。
【0023】
このようにすれば、自身のゲーム装置と他のゲーム装置との間で同期パケットを送受信するという簡素な処理で、区間同期処理を実現できる。
【0024】
また本発明の一態様では、ネットワークの管理処理を行うネットワーク管理部を含み、前記ネットワーク管理部は、所定期間内に前記区間同期処理が完了しなかった場合に、ネットワークが切断されたと判断してもよい。
【0025】
このようにすれば、区間同期処理毎に他のゲーム装置との間のネットワークの切断・非切断を判断しながら、ゲームシーケンス区間の移行処理を順次実行できるようになる。
【0026】
また本発明の一態様では、前記パケット処理部は、自身のゲーム装置がホストである場合には、区間IDの管理処理と、ゲームシーケンス区間の移行をクライアントである前記他のゲーム装置に通知する処理を行ってもよい。
【0027】
このようにすれば、ホストのゲーム装置が主導となった、区間IDの管理処理やゲームシーケンス区間の区間同期処理を実現できる。
【0028】
また本発明の一態様では、前記ゲーム演算部は、各ゲームシーケンス区間で行われる各ゲームシーケンス処理として、ゲームに登場するキャラクタの選択処理、ゲームに必要なデータのロード処理、キャラクタの対戦処理、及びゲームの結果表示処理の少なくとも1つを行ってもよい。
【0029】
なお、各ゲームシーケンス区間において行われるゲームシーケンス処理は、これらのキャラクタ選択処理、データロード処理、キャラクタ対戦処理、ゲーム結果表示処理には限定されない。
【図面の簡単な説明】
【0030】
【図1】図1(A)、図1(B)はゲーム装置のネットワーク構成の例。
【図2】図2(A)、図2(B)は携帯型ゲーム装置への適用例。
【図3】本実施形態のゲーム装置の構成例。
【図4】図4(A)〜図4(C)はゲームシーケンス処理の説明図。
【図5】図5(A)、図5(B)はゲームシーケンス処理の説明図。
【図6】各ゲームシーケンス区間で行われるパケット転送の説明図。
【図7】図7(A)、図7(B)はTCPやUDPによるパケット転送の説明図。
【図8】パケットバッファを用いたパケットの受信処理の説明図。
【図9】本実施形態で使用されるパケットのフォーマット例。
【図10】区間IDを用いた本実施形態のパケット処理の説明図。
【図11】図11(A)、図11(B)も区間IDを用いた本実施形態のパケット処理の説明図。
【図12】図12(A)、図12(B)も区間IDを用いた本実施形態のパケット処理の説明図。
【図13】本実施形態の区間同期処理の説明図。
【図14】本実施形態の区間同期処理の詳細例の説明図。
【図15】図15(A)〜図15(C)はゲーム装置がホストである場合の区間同期処理の説明図。
【図16】本実施形態の詳細な処理例のフローチャート。
【図17】本実施形態の詳細な処理例のフローチャート。
【図18】本実施形態の詳細な処理例のフローチャート。
【発明を実施するための形態】
【0031】
以下、本実施形態について説明する。なお、以下に説明する本実施形態は、特許請求の範囲に記載された本発明の内容を不当に限定するものではない。また本実施形態で説明される構成の全てが、本発明の必須構成要件であるとは限らない。
【0032】
1.ネットワーク構成
図1(A)、図1(B)に本実施形態のゲーム装置を用いて通信ゲームを行う場合のネットワーク構成例を示す。図1(B)はツリー型の例であり、図1(B)はフルメッシュ型(メッシュ型)の例である。
【0033】
図1(A)のツリー型では、ホストとなるゲーム装置GM1に対して、クライアントとなるゲーム装置GM2、GM3・・・GMnがネットワーク90を介して通信接続されている。ここでネットワーク90(配信網、通信回線)は、例えばインターネットや無線LAN等を利用した通信路であり、直接接続のための専用線(専用ケーブル)やイーサネット(登録商標)等によるLANの他、電話通信網やケーブル網や無線LAN等の通信網を含むことができる。また通信方法については有線/無線を問わない。
【0034】
図1(B)のフルメッシュ型では、GM1、GM2、GM3、GM4の各ゲーム装置は、他の全てのゲーム装置と無線LAN等のネットワークを介して通信接続されている。
【0035】
なお本実施形態のゲーム装置のネットワーク構成は図1(A)、図1(B)には限定されず、例えばリング型、バス型、ハイブリッド型などの種々のタイプを採用できる。
【0036】
図2(A)に携帯型ゲーム装置への適用例を示す。この携帯型ゲーム装置は、方向キー12、アナログスティック14、操作ボタン16〜19、L、Rボタン20、21、セレクトボタン22、スタートボタン23などの操作部を有する。またディスプレイ30(広義には表示部)や図示しないスピーカ(広義には音出力部)を有する。
【0037】
図2(A)の携帯型ゲーム装置は無線LAN(広義には無線ネットワーク)を介した無線通信が可能になっている。携帯型ゲーム装置の無線LANには、アドホックモードやインフラストラクチャモードがある。アドホックモードは、携帯型ゲーム装置間で通信するモードであり、各携帯型ゲーム装置が相手と同じチャネルを自動検索して、通信対戦等が行われる。インフラストラクチャモードは、携帯型ゲーム装置をインターネットに接続するためのモードである。
【0038】
図2(B)では、携帯型ゲーム装置GM1〜GM3は無線LAN(無線ネットワーク)を介して通信接続され、携帯型ゲーム装置GM1〜GM3のプレーヤ1〜3は通信対戦ゲーム等を楽しむことができる。
【0039】
2.ゲーム装置の構成
図3に本実施形態のゲーム装置(画像生成システム、ゲームシステム)の構成例を示す。なお本実施形態のゲーム装置は図3の構成に限定されず、その一部の構成要素を省略したり、他の構成要素を追加するなどの種々の変形実施が可能である。
【0040】
操作部160は、プレーヤが操作データを入力するためのものであり、その機能は、方向指示キー、操作ボタン、アナログスティック、レバー、各種センサ(角速度センサ、加速度センサ等)、マイク、或いはタッチパネル型ディスプレイなどにより実現できる。
【0041】
記憶部170は、処理部100のワーク領域となるもので、その機能はRAM(DRAM、VRAM)などにより実現できる。そしてゲームプログラムや、ゲームデータは、この記憶部170に保持される。
【0042】
なおゲームプログラムは、ゲーム処理を実行するための命令コードが記述されたソフトウェアである。またゲームデータは、ゲームプログラムの実行の際に必要なデータであり、例えば操作データ、キャラクタデータ、ゲームステージデータ、通信に参加しているメンバーの情報、或いはキャラクタ等の位置データなどである。
【0043】
情報記憶媒体180(コンピュータにより読み取り可能な媒体)は、プログラムやデータなどを格納するものであり、その機能は、光ディスク(CD、DVD)、HDD(ハードディスクドライブ)、或いはメモリ(ROM等)などにより実現できる。処理部100は、情報記憶媒体180に格納されるプログラム(データ)に基づいて本実施形態の種々の処理を行う。即ち情報記憶媒体180には、本実施形態の各部としてコンピュータ(操作部、処理部、記憶部、出力部を備える装置)を機能させるためのプログラム(各部の処理をコンピュータに実行させるためのプログラム)が記憶される。
【0044】
表示部190は、本実施形態により生成された画像を出力するものであり、その機能は、LCD、有機ELディスプレイ、CRT、タッチパネル型ディスプレイ、或いはHMD(ヘッドマウントディスプレイ)などにより実現できる。音出力部192は、本実施形態により生成された音を出力するものであり、その機能は、スピーカ、或いはヘッドフォンなどにより実現できる。
【0045】
補助記憶装置194(補助メモリ、2次メモリ)は、記憶部170の容量を補うために使用される記憶装置であり、SDメモリーカード、マルチメディアカードなどのメモリーカードなどにより実現できる。
【0046】
通信部196は、有線や無線のネットワークを介して外部(他のゲーム装置、サーバ)との間で通信を行うものであり、その機能は、通信用ASIC又は通信用プロセッサなどのハードウェアや、通信用ファームウェアにより実現できる。
【0047】
なお本実施形態の各部としてコンピュータを機能させるためのプログラム(データ)は、サーバ(ホスト装置)が有する情報記憶媒体からネットワーク及び通信部196を介して情報記憶媒体180(あるいは記憶部170、補助記憶装置194)に配信してもよい。このようなサーバ(ホスト装置)による情報記憶媒体の使用も本発明の範囲内に含めることができる。
【0048】
処理部100(プロセッサ)は、操作部160からの操作データやプログラムなどに基づいて、ゲーム処理、画像生成処理、或いは音生成処理などを行う。処理部100は記憶部170をワーク領域として各種処理を行う。この処理部100の機能は、各種プロセッサ(CPU、GPU等)、ASIC(ゲートアレイ等)などのハードウェアや、プログラムにより実現できる。
【0049】
処理部100は、パケット処理部102、ゲーム演算部104、ネットワーク管理部110、画像生成部120、音生成部130を含む。なおこれらの一部の構成要素を省略したり、他の構成要素を追加するなどの種々の変形実施が可能である。
【0050】
パケット処理部102はパケットに関する種々の処理を行う。例えばネットワーク90を介して他のゲーム装置との間で転送されるパケットの処理を行う。具体的には、通信部196を介してパケットを受信する処理を行って、パケットバッファ171に書き込んだり、パケットを生成して通信部196を介して送信する処理などを行う。
【0051】
ゲーム演算部104はゲーム演算処理を行う。例えばパケットにより転送されるデータに基づいてゲーム演算処理を行う。ゲーム演算処理としては、ゲーム開始条件が満たされた場合にゲームを開始する処理、ゲームを進行させる処理、ゲーム結果を演算する処理、或いはゲーム終了条件が満たされた場合にゲームを終了する処理などがある。
【0052】
ゲーム演算部104は、ゲームシーケンス処理部105、オブジェクト空間設定部106、キャラクタ制御部107を含む。
【0053】
ゲームシーケンス処理部105は、ゲームを構成する複数のゲームシーケンスの各ゲームシーケンスの処理を実行したり、ゲームシーケンスを進行させる処理などを行う。
【0054】
オブジェクト空間設定部106は、キャラクタ(モデルオブジェクト)、マップ(地形)、建物、コース(道路)、樹木、壁などの表示物を表す各種オブジェクト(ポリゴン、自由曲面又はサブディビジョンサーフェイスなどのプリミティブ面で構成されるオブジェクト)をオブジェクト空間に配置設定する処理を行う。即ちワールド座標系でのオブジェクトの位置や回転角度(向き、方向と同義)を決定し、その位置(X、Y、Z)にその回転角度(X、Y、Z軸回りでの回転角度)でオブジェクトを配置する。
【0055】
キャラクタ制御部107は、キャラクタの制御処理を行う。ここでキャラクタはゲームに登場する人、ロボット、動物、車、戦闘機等の移動体である。具体的にはキャラクタ制御部107は、キャラクタを移動させるための演算を行う。或いはキャラクタを動作させるための演算を行う。即ち操作部160からの操作データや、プログラム(移動・動作アルゴリズム)や、各種データ(モーションデータ)などに基づいて、キャラクタをオブジェクト空間内で移動させたり、キャラクタを動作(モーション、アニメーション)させる処理を行う。具体的には、キャラクタの移動情報(位置、回転角度、速度、或いは加速度)や動作情報(パーツオブジェクトの位置、或いは回転角度)を、1フレーム(1/60秒)毎に順次求めるシミュレーション処理を行う。なおフレームは、移動・動作処理(シミュレーション処理)や画像生成処理を行う時間の単位である。
【0056】
例えばキャラクタ制御部107は、モーション記憶部178に記憶されるモーションに基づいて、キャラクタのモーションを再生する処理を行う。即ち、キャラクタ(スケルトン)を構成する各パーツオブジェクト(スケルトンを構成する骨)の位置又は回転角度(方向)等を含むモーションのデータを、モーション記憶部178から読み出す。そして、キャラクタの各パーツオブジェクト(骨)を動かすことで(スケルトン形状を変形させることで)、キャラクタのモーションを再生する。
【0057】
なお、キャラクタのモデルの特定情報、モーションの特定情報、属性情報、状態情報、アイテム情報、或いはカスタマイズ情報などのキャラクタデータは、キャラクタデータ記憶部176に記憶される。またキャラクタの形状等を表すモデルデータ(ポリゴンデータ等)はモデルデータ記憶部177に記憶される。またプレーヤがキャラクタを動作させるために操作部160を操作することで得られた操作データは、操作データバッファ172に記憶される。
【0058】
ネットワーク管理部110はネットワークに関する管理処理を行う。例えばネットワークの接続処理を行ったり、ネットワークの切断の判断処理などを行う。
【0059】
画像生成部120は、処理部100で行われる種々の処理の結果に基づいて画像の生成処理を行う。例えばゲーム演算部104でのゲーム演算処理の結果に基づいて画像を生成し、表示部190に出力する。具体的には、座標変換(ワールド座標変換、カメラ座標変換)、クリッピング処理、透視変換、或いは光源処理等のジオメトリ処理が行われ、その処理結果に基づいて、描画データ(プリミティブ面の頂点の位置座標、テクスチャ座標、色データ、法線ベクトル或いはα値等)が作成される。そして、この描画データ(プリミティブ面データ)に基づいて、透視変換後(ジオメトリ処理後)のオブジェクト(1又は複数プリミティブ面)を、描画バッファ179(フレームバッファ、ワークバッファ等のピクセル単位で画像情報を記憶できるバッファ)に描画する。これにより、オブジェクト空間内において仮想カメラ(所与の視点)から見える画像が生成される。なお、描画処理は頂点シェーダ処理やピクセルシェーダ処理により実現することができる。
【0060】
音生成部130は、処理部100で行われる種々の処理の結果に基づいて音処理を行い、BGM、効果音、又は音声などのゲーム音を生成し、音出力部192に出力する。
【0061】
そして本実施形態では、ゲーム演算部104が、ゲーム演算処理として、複数のゲームシーケンス区間の各ゲームシーケンス区間において各ゲームシーケンス処理を行う。
【0062】
ここで各ゲームシーケンス区間で行われるゲームシーケンス処理としては、ゲームに登場するキャラクタの選択処理、ゲームに必要なデータのロード処理、キャラクタの対戦処理、或いはゲームの結果表示処理などがある。これ以外にも、ゲームシーケンス処理としては、プレーヤが通信ゲームに参加するためのロビー処理、オープニング画面の表示処理、エンディング画面の表示処理、デモ画面の表示処理などの種々の処理を想定できる。
【0063】
キャラクタの選択処理は、キャラクタ選択画面を表示したり、キャラクタ選択画面においてプレーヤのキャラクタ選択操作を受け付ける処理などである。データのロード処理は、キャラクタ同士の対戦が可能になるように、キャラクタデータやマップデータなどのゲームに必要なデータを記憶部170や情報記憶媒体180などからロードする処理などである。キャラクタの対戦処理は、操作データに基づいてプレーヤが操作するキャラクタと他のプレーヤ又はコンピュータが操作するキャラクタを対戦させる処理などである。ゲームの結果表示処理は、対戦ゲームの結果を演算して、プレーヤに提示する処理などである。
【0064】
パケット処理部102は、ネットワーク90を介して転送されるパケットの処理を行う。ここで転送されるパケットは、パケットにより転送されるデータの種別(パケットの種別)を特定するパケットIDや、パケットにより転送されるデータが使用されるゲームシーケンス区間を特定する区間IDを含むことができる。即ちパケット処理部102は、パケットIDや区間IDなどがヘッダフィールドに設定され、データがデータフィールドに設定されたパケットを、他のゲーム装置から受信する処理を行う。なお自身が他のゲーム装置に対してパケットを送信する場合には、パケット処理部102は、パケットIDや区間IDがヘッダフィールドに設定され、データがデータフィールドに設定されたパケットを生成して送信する処理を行う。
【0065】
そしてパケット処理部102は、受信したパケットの区間IDと、現在のゲームシーケンス区間(当該フレームで実行されているゲームシーケンス処理の区間)の区間IDとの照合処理を行う。即ちこれらの区間IDが一致しているか否かを判断する。そしてゲーム演算部104は、パケットの区間IDと、現在のゲームシーケンス区間の区間IDとが一致したパケットのデータに基づいて、ゲーム演算処理を行う。例えば区間IDが一致しないパケットについては、そのパケットのデータに基づくゲーム演算処理は行わず、区間IDが一致したことを条件に、そのパケットのデータに基づくゲーム演算処理を行う。
【0066】
具体的にはパケットバッファ171には、他のゲーム装置から受信したパケットが格納される。例えば通信部196が他のゲーム装置からパケットを受信し、そのパケットが、通信部196の通信用バッファ197(ソケットバッファ)に書き込まれる。そしてパケット処理部102は、通信用バッファ197からパケットを読み出し、読み出されたパケットをパケットバッファ171に書き込む。
【0067】
この時、本実施形態ではパケット処理部102は、パケットの区間ID(同期ID)と現在のゲームシーケンス区間の区間IDとが一致したパケットを、パケットバッファ171に書き込む。即ち、通信用バッファ197から読み出されたパケットに設定された区間IDを解析し、パケットの区間IDと、現在のゲームシーケンス区間に対して区間同期処理により対応づけられた区間IDとを比較する。そしてこれらの区間IDが一致していた場合には、そのパケットをパケットバッファ171に書き込む。そしてゲーム演算部104は、パケットバッファ171に書き込まれたパケットのデータ(ゲームデータ)に基づいて、ゲーム演算処理を行う。即ち、パケットに設定されたデータとゲームプログラムにより、そのゲームシーケンス区間でのゲームシーケンス処理を実行する。
【0068】
一方、パケット処理部102は、パケットの区間IDと現在のゲームシーケンス区間の区間IDとが一致しなかったパケットについては、パケットバッファ171に書き込まずに破棄する。即ち、通信用バッファ197から読み出されたパケットの区間IDを解析し、パケットの区間IDと、現在のゲームシーケンス区間の区間IDとを比較する。そして、これらの区間IDが一致していなかった場合にはそのパケットをパケットバッファ171に書き込まないようにする。これにより現在のゲームシーケンス区間と区間IDが一致しないパケットについては、ゲーム演算部104に転送されないようになる。
【0069】
またパケット処理部102は、ゲームシーケンス区間の区間同期処理を行う。例えば自身のゲーム装置のゲームシーケンス区間と他のゲーム装置のゲームシーケンス区間とを同期させる区間同期処理を行う。即ち、自身のゲーム装置と他のゲーム装置(相手側ゲーム装置)とが同じタイミングで同じゲームシーケンス処理を実行するように区間同期処理を行う。
【0070】
そしてゲーム演算部104は、区間同期処理が完了した場合に、ゲームシーケンス区間を次のゲームシーケンス区間に移行させる。即ち第N−1のゲームシーケンス区間から次の第N(Nは2以上の整数)のゲームシーケンス区間にゲームシーケンス区間を移行させる。
【0071】
例えばパケット処理部102は、第N−1のゲームシーケンス区間では、ゲームシーケンス区間が第N−1のゲームシーケンス区間であることを表す区間IDを含むパケットを生成して、他のゲーム装置に送信する。同様に第Nのゲームシーケンス区間では、ゲームシーケンス区間が第Nのゲームシーケンス区間であることを表す区間IDを含むパケットを生成して、他のゲーム装置に送信する。
【0072】
そしてパケット処理部102は、第N−1のゲームシーケンス区間から第Nのゲームシーケンス区間に移行した場合には、区間IDである区間番号をインクリメント又はデクリメントする更新処理を行う。例えば区間番号をゲームシーケンス区間が進む毎に単調増加又は単調減少させる。なお区間IDの更新処理は、このような単調増加、単調減少には限定されない。
【0073】
またパケット処理部102は、他のゲーム装置との間で同期パケット(同期要求パケット、同期応答パケット)の転送処理(受信処理、送信処理)を行うことで、区間同期処理を実行する。例えばパケット処理部102は、自身のゲーム装置において第N−1のゲームシーケンス区間が完了し、他のゲーム装置から区間同期処理を要求する同期パケット(同期要求パケット)を受信した場合に、第Nのゲームシーケンス区間への移行を通知する同期パケットを他のゲーム装置に送信する。具体的には、自身のゲーム装置において第N−1のゲームシーケンス区間が完了し、他のゲーム装置から同期パケットを受信すると、第Nのゲームシーケンス区間への移行が可能であると判断して、区間IDをインクリメント又はデクリメントする更新処理を行う。そして更新処理後の区間IDを含む同期パケットを他のゲーム装置に送信することで、区間同期処理を実行する。
【0074】
またネットワーク管理部110は、所定期間内(所定時間内)に区間同期処理が完了しなかった場合に、ネットワークが切断されたと判断する。例えばゲームシーケンス区間が完了してから、所定期間内に他のゲーム装置から同期パケットを受信しなかった場合に、ネットワークが切断されたと判断する。そして例えば、その他のゲーム装置とのネットワークが切断されたことをプレーヤに知らせる画面を表示部190に表示する。
【0075】
またパケット処理部102は、自身のゲーム装置がホストである場合には、区間IDの管理処理や、ゲームシーケンス区間の移行をクライアントである他のゲーム装置に通知する処理を行う。例えばホストである自身のゲーム装置が主導となって、他のゲーム装置から同期を要求する同期パケットを受信し、区間IDを更新する処理などを行う。また例えば自身のゲーム装置に接続される全てのゲーム装置でのゲームシーケンス区間が完了したか否かを、これらのゲーム装置から受信した同期パケットに基づいて確認する。そして全てのゲーム装置でのゲームシーケンス区間が完了したことを確認すると、次のゲームシーケンス区間に移行し、ゲームシーケンス区間の移行をクライアントである他のゲーム装置に通知する。これによりホストが主導となったゲームシーケンス区間の区間同期処理を実現できる。
【0076】
3.本実施形態の手法
3.1 ゲームシーケンス処理
本実施形態では、複数のゲームシーケンス区間の各ゲームシーケンス区間において、他のゲーム装置との間でパケットの送受信を行い、このパケットにより転送されるデータに基づいて各ゲームシーケンス区間でのゲームシーケンス処理を実行する。まず、このゲームシーケンス処理について図4(A)〜図5(B)を用いて説明する。
【0077】
ロビー処理のゲームシーケンス区間では、図4(A)に示すようなロビー画面が表示される。そして、このロビー画面においてプレーヤが対戦相手プレーヤを選択すると、その対戦相手プレーヤと通信対戦が可能か否かが判断され、対戦可能である場合にはキャラクタ選択処理のゲームシーケンス区間に移行する。
【0078】
キャラクタ選択処理のゲームシーケンス区間では、図4(B)に示すようなキャラクタ選択画面が表示される。そして、プレーヤと相手プレーヤは自身が所望するキャラクタを選択する。この場合に、キャラクタ選択のために相手プレーヤが操作部により入力した操作データのパケットが、相手プレーヤのゲーム装置からプレーヤのゲーム装置に送信される。同様にキャラクタ選択のためにプレーヤが入力した操作データのパケットは、プレーヤのゲーム装置から相手プレーヤのゲーム装置に送信される。そしてプレーヤ及び相手プレーヤのキャラクタ選択が完了すると、対戦ゲームの実行に必要な各種データ(キャラクタやゲームステージのデータ)をロードする処理のゲームシーケンス区間に移行する。
【0079】
データのロード処理のゲームシーケンス区間では、図4(C)に示すような画面が表示され、記憶部170や情報記憶媒体180等からゲームデータをロードする処理が実行される。そしてゲームデータのロード処理が完了すると、キャラクタの対戦処理のゲームシーケンス区間に移行する。
【0080】
キャラクタの対戦処理のゲームシーケンス区間では、図5(A)に示すようなキャラクタ対戦のゲーム画面が表示される。このゲーム画面では、プレーヤが操作するキャラクタと相手プレーヤが操作する相手キャラクタが表示され、これらのキャラクタ、相手キャラクタがプレーヤ、相手プレーヤの操作データに基づいて動作する制御が行われる。この場合に、相手キャラクタを動作させるために相手プレーヤが操作部により入力した操作データ(キーデータ)のパケットが、相手プレーヤのゲーム装置からプレーヤのゲーム装置に送信される。同様にキャラクタを動作させるためにプレーヤが入力した操作データのパケットが、プレーヤのゲーム装置から相手プレーヤのゲーム装置に送信される。
【0081】
なお格闘ゲームのように、キャラクタ選択画面で選択されたキャラクタと相手キャラクタの間で複数ラウンドの対戦(複数の試合)が行われる場合には、各ラウンド毎にゲームシーケンス区間を設定することができる。そして、1又は複数のラウンドが終わって、キャラクタ間の対戦が終了すると、ゲームの結果表示処理のゲームシーケンス区間に移行する。
【0082】
ゲームの結果表示処理のゲームシーケンス区間では、図5(B)に示すようなゲームの結果表示画面が表示される。具体的には、ゲーム成績の表示や、対戦終了の演出画像の表示等が行われる。そしてプレーヤがキャラクタの再選択による再対戦を選択すると、図4(B)のキャラクタ選択処理のゲームシーケンス区間に移行する。また通信対戦する相手プレーヤの再選択を行う場合には、図4(A)のロビー処理のゲームシーケンス区間に移行する。
【0083】
図6に、キャラクタ選択、データロード、対戦、或いはゲーム結果表示等の各ゲームシーケンス処理のゲームシーケンス区間において、ゲーム装置GM1、GM2間で転送されるパケットの様子を模式的に示す。
【0084】
図6に示すように、各ゲームシーケンス区間では、そのゲームシーケンス処理に必要なデータがデータフィールドに設定されたパケットが、ゲーム装置GM1、GM2間で送受信される。そしてゲーム装置GM1、GM2においてゲームシーケンス区間が完了すると、次のゲームシーケンス区間に移行し、そのゲームシーケンス区間で必要なデータのパケットの送受信が行われる。
【0085】
3.2 区間IDを用いたパケット処理
ネットワークを介したデータ転送の通信プロトコルとして、TCP(Transmission Control Protocol)、UDP(User Datagram Protocol)等が知られている。これらのTCP、UDPは、IP層等のネットワーク層の上層のトランスポート層のプロトコルである。TCPは、データを正しく全部届けたい場合に有効であるのに対して、UDPは、途中でデータが無くなっても早く届けたい場合に有効である。
【0086】
具体的には、TCPは、実際の通信前にコネクションを確立するコネクション型のプロトコルであり、図7(A)に示すように、転送されるパケット(データ)についての到着と到着順序が保証されている。即ち、送ったパケットは必ず相手に届き、且つ、順番通りに届くことが保証される。
【0087】
一方、UDPはコネクションレス型のプロトコルであり、図7(B)に示すように、転送されるパケットについての到着と到着順序が保証されていない。即ち、UDP層においては再送は行われず、送ったパケットが相手に届くことは保証されず、且つ、送られた順序通りに届くことも保証されない。
【0088】
そしてTCPでは、再送処理や転送量の調整処理のために、パケット転送に時間がかかってしまうという欠点がある。一方、UDPでは、パケットをひたすら転送するだけであるため、TCPに比べて即時性があり、データを高速に転送したい場合に向いている。
【0089】
このため、通信ゲームをスムーズに進行させるために即時性が要求されるデータ(例えば操作データ)のパケットについては、UDP或いはUDP準拠のプロトコル(以下、単にUDPと呼ぶ)で転送することが望ましい。例えばTCPにより操作データの送受信を行うと、転送に時間がかかってしまい、キャラクタや画面の動きにタイムラグが生じ、スムーズはゲームシーケンス処理を実現できなくなるおそれがある。
【0090】
一方、UDPでは、図7(B)のようにパケットの到着や到着順序が保証されないため、ゲームプログラムの処理が煩雑になったり、バッファの使用記憶容量が無駄に消費されてしまうなどの問題が生じる。
【0091】
例えば図8では、他のゲーム装置から受信したパケットはパケットバッファ171に書き込まれている。この場合に、UDPでは到着保証がない。このため、例えば送信側がパケットを送信し、受信側が、そのパケットを無事に受信したことを知らせるアクノリッジ(応答)を送信側に返信したが、そのアクノリッジが送信側に届かない場合がある。そして、この場合には、送信側は再度パケットを送信することになり、受信側のパケットバッファ171には、本来必要ではない無駄なパケットが蓄積されてしまう。
【0092】
例えば図8では、B1に示すパケットPK1は、既に受信側のゲーム装置は受信しており、ゲーム演算部104は、B1のパケットPK1に基づく処理を終了している。ところが、パケットPK1についてのアクノリッジが送信側に届かない場合には、B2に示すように送信側から受信したパケットPK1が再度パケットバッファ171に書き込まれてしまう。そして受信側のゲーム演算部104は、パケットPK1についてのゲーム演算処理を完了しているため、B2のパケットがパケットバッファ171に残存してしまい、パケットバッファ171の使用記憶容量が無駄に消費されてしまう。
【0093】
また図6のように各ゲームシーケンス区間で送受信されたパケットは、当該ゲームシーケンス区間ではゲーム演算処理のために必要であるが、次のゲームシーケンス区間では不要になる。従って、ゲームシーケンス区間が次のゲームシーケンス区間に移行したのに、前のゲームシーケンス区間で必要なパケットがパケットバッファ171に残存してしまうと、パケットバッファ171の使用記憶容量の無駄な消費になる。また、例えば図6のA1に示すように前回のキャラクタ選択の時に転送されたパケットが、A2に示すように次のキャラクタ選択の時にパケットバッファ171に残存していると、キャラクタ選択画面上でのカーソルが、本来とは異なる動きをするなどの不自然な画面が表示されてしまうおそれもある。
【0094】
そこで本実施形態では、ゲーム装置間で転送されるパケットに、ゲームシーケンス区間の区間IDを含ませ、この区間IDを用いてパケット処理を行う手法を採用している。
【0095】
例えば図9に、ゲーム装置間で転送されるパケットのフォーマット例を示す。なお本実施形態のパケットのフォーマットは図9に限定されず、例えばパケットのフィールド設定やパケットに設定される情報については種々の変形実施が可能である。
【0096】
図9では、パケットには、パケットID、区間ID(狭義には区間番号)、生成順序情報、データサイズ、データが設定されている。なおこれらの一部を省略するフォーマットとしてもよい。
【0097】
パケットIDは、パケットにより転送されるデータの種別を特定するための識別情報(パケット種別を特定するための識別情報)である。例えばパケットにより転送されるデータとしては、操作データ(キー入力データ)、キャラクタデータ、ボイスチャットデータ、通信のメンバー情報、ゲームのルール情報、存在確認情報、同期要求又は同期応答の情報、或いはキャラクタの位置情報などの種々の情報を想定できる。パケットIDは、当該パケットにより転送されるデータが、これらのいずれの種別の情報であるかを識別する。
【0098】
区間IDは、パケットにより転送されるデータが使用されるゲームシーケンス区間を特定するための識別情報(ゲームシーケンス区間を識別するための識別情報)である。例えば図6のようにゲームシーケンス区間が順次移行する場合に、区間IDは、当該パケットがどのゲームシーケンス区間に属するパケットなのかを識別する。
【0099】
生成順序情報(送信順序情報)は、他のゲーム装置でのパケットの生成順序(送信順序)を特定するための情報である。即ちUDPでは図7(B)に示すようにパケットの到着順序は保証されないが、この生成順序情報をパケットに含ませることで、送信側の生成順序でパケットを並び替えることが可能になり、UDPの不利点を補うことが可能になる。
【0100】
データサイズは、パケットにより転送されるデータのサイズを表す情報である。なお、パケットが可変長ではない場合等にはデータサイズは不要になる。
【0101】
次に図10を用いて本実施形態の手法について詳細に説明する。図10では、キャラクタ選択、データロード、対戦、ゲーム結果表示等の各ゲームシーケンス区間に対して、区間IDが対応づけられる。この区間IDの対応づけは、例えば後述するように区間同期処理により実現できる。
【0102】
そして図10に示すように区間ID(区間番号)は、ゲームシーケンス区間が移行する毎にインクリメントされる。なお、ゲームシーケンス区間が移行する毎に区間IDをデクリメントするようにしてもよい。またインクリメント値やデクリメント値は「1」には限定されず、「1」より大きくてもよい。また区間IDは、少なくとも当該ゲームシーケンス区間と他のゲームシーケンス区間とを区別できる値であればよく、図10のように単調増加又は単調減少する値には限定されない。
【0103】
そして本実施形態では図11(A)に示すように、受信したパケットPKIに設定された区間IDと、ゲーム装置において現在実行されているゲームシーケンス処理のゲームシーケンス区間の区間IDとの照合処理(一致・不一致判定処理)を行う。図11(A)では、パケットPKIの区間ID=3であり、現在のゲームシーケンス区間の区間ID=3であるため、両者の区間IDは一致している。従って、この場合には、当該パケットPKIはパケットバッファ171に書き込まれる。
【0104】
一方、図11(B)では、パケットPKJの区間ID=1であり、現在のゲームシーケンス区間の区間ID=3であるため、両者の区間IDは一致していない。従って、この場合には当該パケットPKJはパケットバッファ171に書き込まれず、破棄される(非使用になる)。
【0105】
このように区間IDの照合処理を行いながらパケットをパケットバッファ171に書き込めば、各ゲームシーケンス区間においては当該ゲームシーケンス区間の区間IDに対応するパケットだけがパケットバッファ171に存在するようになる。
【0106】
例えば図12(A)では、現在のゲームシーケンス区間の区間ID=3であるため、パケットバッファ171には区間ID=3であるパケットだけが存在するようになる。即ち区間ID=3ではないパケットを通信部196が受信しても、このパケットはパケットバッファ171に書き込まれないようになる。従って、ゲーム演算部104は、区間ID=3であるゲームシーケンス処理(例えば図10のキャラクタの対戦処理)を、区間ID=3であるパケットのデータを使用して実行できるようになる。
【0107】
同様に図12(B)では、現在のゲームシーケンス区間の区間ID=4であるため、パケットバッファ171には区間ID=4であるパケットだけが存在する。従って、ゲーム演算部104は、区間ID=4であるゲームシーケンス処理(例えば図10のゲーム結果表示処理)を、区間ID=4であるパケットのデータを使用して実行できるようになる。これにより、ゲーム演算部104の処理を簡素化・効率化できる。
【0108】
なお図12(A)から図12(B)のように、区間ID=3のゲームシーケンス区間から区間ID=4のゲームシーケンス区間に移行する際には、パケットバッファ171のクリア処理を行い、使用されていない区間ID=3のパケットをクリア(消去)することが望ましい。
【0109】
以上のように本実施形態では、パケットに区間IDのフィールドを設け、この区間IDを用いてゲームシーケンス区間の照合処理を行う手法を採用している。従って、新しいゲームシーケンス区間に移行したことで不要になったパケットがパケットバッファ171に残存してしまい、使用記憶容量が無駄に消費されてしまう事態を防止できる。
【0110】
また本実施形態によれば、前回のゲームシーケンス区間のパケットがパケットバッファ171に残存し、その残存したパケットが当該ゲームシーケンス区間のパケットであると誤認識され、誤ったゲーム演算処理が行われてしまう事態も防止できる。
【0111】
また本実施形態によれば、図12(A)、図12(B)に示すように、現在のゲームシーケンス区間の区間IDのパケットだけがパケットバッファ171に存在するようなパケット管理が可能になる。従って、パケット管理やゲーム演算部104のゲーム演算処理を簡素化・効率化でき、処理のオーバーヘッドを軽減できる。
【0112】
3.3 区間同期処理
本実施形態ではゲーム装置間でゲームシーケンス区間を同期させる区間同期処理を行っている。
【0113】
例えば図13では、キャラクタ選択のゲームシーケンス区間の完了後に、ゲーム装置GM1とGM2の間でゲームシーケンス区間を同期させる区間同期処理が行われる。即ち両者のゲーム装置GM1、GM2において同じ区間IDのゲームシーケンス区間を実行させるための区間同期処理が行われる。
【0114】
そして図13に示すように、キャラクタ選択のゲームシーケンス区間の後の区間同期処理が完了すると、キャラクタ選択のゲームシーケンス区間(広義には第N−1のゲームシーケンス区間)からデータロードのゲームシーケンス区間(広義には第Nのゲームシーケンス区間)に移行する。
【0115】
同様に、データロードのゲームシーケンス区間が完了すると、ゲームシーケンス区間の区間同期処理が行われる。そして区間同期処理が完了すると、データロードのゲームシーケンス区間(第Nのゲームシーケンス区間)からキャラクタ対戦のゲームシーケンス区間(第N+1のゲームシーケンス区間)に移行する。
【0116】
そして、区間ID(区間番号)は、区間同期処理が行われてゲームシーケンス区間が移行する毎に、順次更新される。例えば図13では、キャラクタ選択のゲームシーケンス区間後に区間同期処理が行われて、データロードのゲームシーケンス区間に移行すると、区間IDが1から2にインクリメントされる。またデータロードのゲームシーケンス区間後に区間同期処理が行われて、キャラクタ対戦のゲームシーケンス区間に移行すると、区間IDが2から3にインクリメントされる。即ち区間同期処理毎に区間IDが1ずつインクリメントされる。なおインクリメント処理の代わりにデクリメント処理を行ってもよい。
【0117】
そして各ゲームシーケンス区間では、更新された区間IDを含むパケットが、ゲーム装置GM1、GM2の間で送受信される。
【0118】
例えば図13に示すように、キャラクタ選択のゲームシーケンス区間(第N−1のゲームシーケンス区間)では、キャラクタ選択のゲームシーケンス区間であることを表す区間ID=1を含むパケットが生成されて、ゲーム装置GM1からGM2に送信されたり、ゲーム装置GM2からGM1に送信される。
【0119】
同様にデータロードのゲームシーケンス区間(第Nのゲームシーケンス区間)では、データロードのゲームシーケンス区間であることを表す区間ID=2を含むパケットが生成されて、ゲーム装置GM1からGM2に送信されたり、ゲーム装置GM2からGM1に送信される。
【0120】
このようにすることで、ゲーム装置GM1、GM2の間で区間IDを同期させて更新させることが可能になる。また各ゲーム装置GM1、GM2において、各ゲームシーケンス区間に対して各区間IDを対応づけることが可能になる。即ち図13に示すように、ゲーム装置GM1において、キャラクタ選択、データロード、対戦、ゲーム結果表示の各ゲームシーケンス区間に対して、各々、区間ID=1、2、3、4を対応づけることが可能になる。同様に、ゲーム装置GM2においても、キャラクタ選択、データロード、対戦、ゲーム結果表示の各ゲームシーケンス区間に対して、各々、区間ID=1、2、3、4を対応づけることが可能になる。これにより、図11(A)〜図12(B)で説明したように、パケットに含まれる区間IDと、現在のゲームシーケンス区間に対応づけられる区間IDを照合してパケットバッファ171への書き込みを行うパケット処理の実現が可能になる。
【0121】
また本実施形態では、他のゲーム装置との間で同期パケットの転送処理を行うことで、区間同期処理を実現している。即ち、図9に示すパケットIDが同期パケットを示すIDに設定されたパケットを、ゲーム装置GM1、GM2の間で送受信することで、図13の区間同期処理を実現する。例えばゲーム装置GM2がゲームシーケンス区間の同期を要求する同期パケットをゲーム装置GM1に送信し、ゲーム装置GM1がこの同期要求に応答する同期パケットをゲーム装置GM2に送信することで、区間同期処理が実現される。
【0122】
図14に同期パケットを用いた区間同期処理の具体例を示す。図14は、ゲーム装置GM1がホストであり、ゲーム装置GM2がクライアントである場合の処理例である。
【0123】
クライアントであるゲーム装置GM2(他のゲーム装置)は、当該ゲーム装置GM2において第N−1のゲームシーケンス区間が完了すると、区間同期処理を要求する同期パケット(同期要求パケット)を、ホストであるゲーム装置GM1に送信する。そして、同期パケットの送信後、ゲーム装置GM1からの同期パケットの受信待ちに移行する。そして所定時間内に同期パケットを受信しなかった場合には、ゲーム装置GM1、GM2間のネットワークが切断(通信接続が切断)されたと判断する。そしてネットワークが切断されたことをプレーヤに知らせる画面をゲーム装置GM2の表示部に表示する。
【0124】
ホストであるゲーム装置GM1(自身のゲーム装置)は、当該ゲーム装置において第N−1のゲームシーケンス区間が完了すると、ゲーム装置GM2からの同期パケットの受信待ちに移行する。そして所定時間内に同期パケットを受信しなかった場合には、ゲーム装置GM1、GM2間のネットワークが切断されたと判断する。そしてネットワークが切断されたことをプレーヤに知らせる画面をゲーム装置GM1の表示部に表示する。
【0125】
一方、ゲーム装置GM1は、ゲーム装置GM2から同期パケットを受信した場合には、次の第Nのゲームシーケンス区間への移行を通知する同期パケット(同期応答パケット)をゲーム装置GM2に送信して、次の第Nのゲームシーケンス区間に移行する。そしてゲーム装置GM2は、ゲーム装置GM1から同期パケットを受信すると、次の第Nのゲームシーケンス区間に移行する。
【0126】
この場合にゲーム装置GM1からGM2に送信される同期パケットには区間IDが設定される。図13を例にとれば、キャラクタ選択のゲームシーケンス区間であれば、区間ID=1が設定された同期パケットが、ゲーム装置GM2に送信され、データロードのゲームシーケンス区間であれば、区間ID=2が設定された同期パケットが、ゲーム装置GM2に送信される。
【0127】
なおゲーム装置GM2が、第N−1のゲームシーケンス区間の完了後に、第Nのゲームシーケンス区間に対応する同期IDが設定された同期パケットを送信するようにしてもよい。そしてゲーム装置GM1は、第N−1のゲームシーケンス区間が完了している場合には、ゲーム装置GM1から受信した同期パケットを、そのままゲーム装置GM2に返送する。このようにして区間同期処理を実現することも可能である。
【0128】
また、以上では、ネットワークを介して接続される2台のゲーム装置間でパケットを送受信する場合を例にとり説明したが、本実施形態の手法は、図1(A)、図1(B)、図2(B)に示すように3台以上のゲーム装置がネットワークを介して接続される場合にも同様に適用できる。
【0129】
例えば図2(B)の接続の場合に、ゲーム装置GM1は、ゲーム装置GM2の間で図10〜図14で説明した処理を行うと共に、ゲーム装置GM3、GM4の各々との間でも図10〜図14で説明した処理を行えばよい。例えばパケットバッファ171上に、ゲーム装置GM2用の受信パケット領域、GM3用の受信パケット領域、GM4用の受信パケット領域を確保して、パケット処理を実行する。この場合に区間IDについては、ゲーム装置GM2、GM3、GM4の間で同じ同期IDを用いてもよいし、それぞれ別個の異なる同期IDを用いてもよい。
【0130】
またゲーム装置GM1がホストに割り当てられ、他のゲーム装置がクライアントに割り当てられている場合には、ホストであるゲーム装置GM1が主導となって、区間IDの管理処理やゲームシーケンス区間の移行処理を実行すればよい。
【0131】
例えば図15(A)〜図15(C)に、ゲーム装置GM1がホストであり、他のゲーム装置GM2、GM3がクライアントである場合の処理例を示す。
【0132】
図15(A)に示すように、クライアントであるゲーム装置GM2、GM3は、第N−1のゲームシーケンス区間が完了すると、区間同期を要求する同期パケットをホストであるゲーム装置GM1に送信する。そしてゲーム装置GM1は、自身のゲーム装置において第N−1のゲームシーケンス区間が完了しており、且つ、他のゲーム装置GM2、GM3から同期パケットを受信することでGM2、GM3においても第N−1のゲームシーケンス区間が完了していると判断すると、区間IDの更新処理を行う。そして区間ID=1を含むパケットをゲーム装置GM2、GM3に送信して、第Nのゲームシーケンス区間への移行を、クライアントであるゲーム装置GM2、GM3に通知する。そして次の第Nのゲームシーケンス区間に移行する。
【0133】
次に図15(B)に示すように、ゲーム装置GM2、GM3は、第Nのゲームシーケンス区間が完了すると、同期パケットをゲーム装置GM1に送信する。そしてゲーム装置GM1は、自身のゲーム装置において第Nのゲームシーケンス区間が完了しており、且つ、ゲーム装置GM2、GM3から同期パケットを受信することでGM2、GM3においても第Nのゲームシーケンス区間が完了していると判断すると、区間IDを1から2に更新する。そして区間ID=2を含むパケットを送信して、第N+1のゲームシーケンス区間への移行を、クライアントであるゲーム装置GM2、GM3に通知し、次の第N+1のゲームシーケンス区間に移行する。
【0134】
以上のように図15(A)、図15(B)では、ホストであるゲーム装置GM1が区間IDを管理する。またゲーム装置GM1は、自身に接続される全てのゲーム装置GM2、GM3において前回のゲームシーケンス区間が完了したことを確認すると、次のゲームシーケンス区間への移行を、同期パケットを用いてゲーム装置GM2、GM3に通知して、次のゲームシーケンス区間に移行する。即ちホストが主導となって区間IDの更新処理やゲームシーケンス区間の移行処理を行う。このようにすることで、ネットワークを介して多数のゲーム装置が接続されている場合にも、ホストとなるゲーム装置の管理の下で、区間同期処理を安定して実現できるようになる。
【0135】
なお図15(C)では、ゲーム装置GM4がネットワークゲームに新規に参加している。この場合に図15(C)では、ホストであるゲーム装置GM1は、ゲーム装置GM4からの区間同期の要求に対して、その時点で使用されている最新の区間ID=3を含む同期パケットをゲーム装置GM4に送信している。このようにすることで、これ以降は、ゲーム装置GM1、GM2、GM3、GM4の間で、ゲーム装置GM1が主導となった区間同期処理を実現できるようになる。
【0136】
なお図15(A)〜図15(C)では、ゲーム装置GM1〜GM4の間で区間IDとして常に同じ区間IDを用いる場合について説明したが、区間IDをゲーム装置毎に異ならせてもよい。例えば図15(C)に示すようにゲーム装置GM4が新規に参加した場合に、ゲーム装置GM2、GM3との間で用いる区間IDとは異なる値の区間IDを含むパケットを、新規参加したゲーム装置GM4に送信するようにしてもよい。
【0137】
4.詳細な処理
次に本実施形態の詳細な処理例について図16〜図18のフローチャートを用いて説明する。
【0138】
図16はパケット処理に関するフローチャートである。まず、フレーム更新(1/60秒)のタイミングか否かを判断する(ステップS1)。そしてフレーム更新のタイミングである場合には、パケットを受信したか否かを判断する(ステップS2)。例えば図3の通信用バッファ(ソケットバッファ)197にパケットが受信されたか否かを判断する。
【0139】
パケットを受信した場合には、そのパケットに設定される区間IDが、現在のゲームシーケンス区間の区間IDに一致するか否かを判断する(ステップS3)。即ち、パケット受信時に実行されているゲームシーケンス処理のゲームシーケンス区間に対応づけられている区間IDに、パケットの区間IDが一致しているか否かを判断する。そして一致してない場合には、そのパケットを破棄する(ステップS4)。即ち、そのパケットをパケットバッファ171に書き込まないようにする。
【0140】
一方、区間IDが一致している場合には、パケットに設定されたパケットの生成順序情報に基づいて、パケットバッファ171でのパケットの格納場所を決定する(ステップS5)。例えばパケットPK1(生成順序=1)、PK2(生成順序=2)、PK4(生成順序=4)が既にパケットバッファ171に格納されている状態で、パケットPK3(生成順序=3)を受信した場合には、パケットPK2の格納場所とPK4の格納場所の間の格納場所が、パケットPK3の格納場所として決定される。
【0141】
次に、決定された格納場所に既にパケットが書き込まれているか否かを判断し(ステップS6)、書き込まれている場合には、パケットをパケットバッファ171に書き込まずに破棄する(ステップS7)。一方、書き込まれていない場合には、ステップS5で決定された格納場所にパケットを書き込む(ステップS8)。上述の例であれば、パケットPK2の格納場所とPK4の格納場所の間の格納場所に、パケットPK3が既に書き込まれていた場合には、受信したパケットを破棄し、書き込まれていない場合には、受信したパケットをその格納場所に書き込む。
【0142】
図17は、ホストのゲーム装置の区間同期処理のフローチャートである。まずゲームシーケンス区間が完了したか否かを判断する(ステップS11)。そしてゲームシーケンス区間が完了したと判断された場合には、クライアントのゲーム装置から同期を要求する同期パケットを受信したか否かを判断する(ステップS12)。そして、受信していない場合には、所定時間(所定期間)が経過したか否かを判断し(ステップS13)、所定時間が経過した場合には、クライアントのゲーム装置との間のネットワークが切断されたと判定する(ステップS14)。
【0143】
ステップS12においてクライアントのゲーム装置から同期パケットを受信したと判断された場合には、区間IDをインクリメントする(ステップS15)。なおネットワークを介して複数のクライアントのゲーム装置が接続されている場合には、全てのゲーム装置から同期パケットを受信した場合に区間IDをインクリメントすればよい。そしてインクリメント後の区間IDが設定された同期パケットを生成し(ステップS16)、生成された同期パケットをクライアントのゲーム装置に送信する(ステップS17)。そして次のゲームシーケンス区間に移行する(ステップS18)。
【0144】
図18は、クライアントのゲーム装置の区間同期処理のフローチャートである。まずゲームシーケンス区間が完了したか否かを判断する(ステップS21)。そしてゲームシーケンス区間が完了したと判断された場合には、同期を要求する同期パケットを生成し(ステップS22)、生成した同期パケットをホストのゲーム装置に送信する(ステップS23)。
【0145】
次に、ホストのゲーム装置から応答の同期パケットを受信したか否かを判断する(ステップS24)。そして、受信しなかった場合には、所定時間が経過したか否かを判断し(ステップS25)、所定時間が経過した場合には、ホストのゲーム装置との間のネットワークが接続されたと判断する(ステップS26)。
【0146】
ステップS24においてホストのゲーム装置から同期パケットを受信したと判断された場合には、受信した同期パケットの区間IDに基づいて、クライアント側の区間IDを更新し(ステップS27)、次のゲームシーケンス区間に移行する(ステップS28)。これによりホスト側とクライアント側とで区間IDやゲームシーケンス区間を同期させることが可能になる。
【0147】
なお、上記のように本実施形態について詳細に説明したが、本発明の新規事項および効果から実体的に逸脱しない多くの変形が可能であることは当業者には容易に理解できるであろう。従って、このような変形例はすべて本発明の範囲に含まれるものとする。例えば、明細書又は図面において、少なくとも一度、より広義または同義な異なる用語と共に記載された用語は、明細書又は図面のいかなる箇所においても、その異なる用語に置き換えることができる。
【0148】
また、パケット処理、区間同期処理、ゲーム演算処理等も本実施形態で説明したものに限定されず、これらと均等な手法も本発明の範囲に含まれる。また本発明は種々のゲームに適用できる。また本発明は、業務用ゲームシステム、家庭用ゲームシステム、多数のプレイヤが参加する大型アトラクションシステム、シミュレータ、マルチメディア端末、ゲーム画像を生成するシステムボード、携帯電話等の種々のゲーム装置に適用できる。
【符号の説明】
【0149】
GM1〜GM4 ゲーム装置、
12 方向キー、14 アナログスティック、16〜23 ボタン、
90 ネットワーク、100 処理部、102 パケット処理部、
104 ゲーム演算部、105 ゲームシーケンス処理部、
106 オブジェクト空間設定部、107 キャラクタ制御部、
110 ネットワーク管理部、120 画像生成部、130 音生成部、
160 操作部、170 記憶部、171 パケットバッファ、
172 操作データバッファ、176 キャラクタデータ記憶部、
177 モデルデータ記憶部、178 モーション記憶部、179 描画バッファ、
180 情報記憶媒体、190 表示部、192 音出力部、194 補助記憶装置、
196 通信部、197 通信用バッファ

【特許請求の範囲】
【請求項1】
ネットワークを介して他のゲーム装置との間で転送されるパケットの処理を行うパケット処理部と、
パケットにより転送されるデータに基づいて、ゲーム演算処理を行うゲーム演算部と、
前記ゲーム演算処理の結果に基づいて画像を生成する画像生成部として、
コンピュータを機能させ、
前記ゲーム演算部は、
前記ゲーム演算処理として、複数のゲームシーケンス区間の各ゲームシーケンス区間において各ゲームシーケンス処理を行い、
前記他のゲーム装置との間で転送されるパケットは、パケットにより転送されるデータが使用されるゲームシーケンス区間を特定する区間IDを含み、
前記パケット処理部は、
受信したパケットの区間IDと、現在のゲームシーケンス区間の区間IDとの照合処理を行い、
前記ゲーム演算部は、
パケットの区間IDと、現在のゲームシーケンス区間の区間IDとが一致したパケットのデータに基づいて、前記ゲーム演算処理を行うことを特徴とするプログラム。
【請求項2】
請求項1において、
前記他のゲーム装置から受信したパケットが格納されるパケットバッファとして、
コンピュータを更に機能させ、
前記パケット処理部は、
パケットの区間IDと現在のゲームシーケンス区間の区間IDとが一致したパケットを、前記パケットバッファに書き込み、
前記ゲーム演算部は、
前記パケットバッファに書き込まれたパケットのデータに基づいて、前記ゲーム演算処理を行うことを特徴とするプログラム。
【請求項3】
請求項2において、
前記パケット処理部は、
パケットの区間IDと現在のゲームシーケンス区間の区間IDとが一致しなかったパケットについては、前記パケットバッファに書き込まずに破棄することを特徴とするプログラム。
【請求項4】
請求項1乃至3のいずれかにおいて、
前記パケット処理部は、
自身のゲーム装置のゲームシーケンス区間と前記他のゲーム装置のゲームシーケンス区間とを同期させる区間同期処理を行い、
前記ゲーム演算部は、
前記区間同期処理が完了した場合に、第N−1のゲームシーケンス区間から次の第Nのゲームシーケンス区間にゲームシーケンス区間を移行させることを特徴とするプログラム。
【請求項5】
請求項4において、
前記パケット処理部は、
前記第Nのゲームシーケンス区間では、ゲームシーケンス区間が前記第Nのゲームシーケンス区間であることを表す区間IDを含むパケットを生成して、前記他のゲーム装置に送信することを特徴とするプログラム。
【請求項6】
請求項4又は5において、
前記パケット処理部は、
前記第N−1のゲームシーケンス区間から前記第Nのゲームシーケンス区間に移行した場合には、区間IDをインクリメント又はデクリメントする更新処理を行うことを特徴とするプログラム。
【請求項7】
請求項4乃至6のいずれかにおいて、
前記パケット処理部は、
前記他のゲーム装置との間で同期パケットの転送処理を行うことで、前記区間同期処理を行うことを特徴とするプログラム。
【請求項8】
請求項7において、
前記パケット処理部は、
自身のゲーム装置において前記第N−1のゲームシーケンス区間が完了し、前記他のゲーム装置から前記区間同期処理を要求する同期パケットを受信した場合に、前記第Nのゲームシーケンス区間への移行を通知する同期パケットを前記他のゲーム装置に送信することを特徴とするプログラム。
【請求項9】
請求項4乃至8のいずれかにおいて、
ネットワークの管理処理を行うネットワーク管理部として、
コンピュータを更に機能させ、
前記ネットワーク管理部は、
所定期間内に前記区間同期処理が完了しなかった場合に、ネットワークが切断されたと判断することを特徴とするプログラム。
【請求項10】
請求項1乃至9のいずれかにおいて、
前記パケット処理部は、
自身のゲーム装置がホストである場合には、区間IDの管理処理と、ゲームシーケンス区間の移行をクライアントである前記他のゲーム装置に通知する処理を行うことを特徴とするプログラム。
【請求項11】
請求項1乃至10のいずれかにおいて、
前記ゲーム演算部は、
各ゲームシーケンス区間で行われる各ゲームシーケンス処理として、ゲームに登場するキャラクタの選択処理、ゲームに必要なデータのロード処理、キャラクタの対戦処理、及びゲームの結果表示処理の少なくとも1つを行うことを特徴とするプログラム。
【請求項12】
コンピュータ読み取り可能な情報記憶媒体であって、請求項1乃至11のいずれかに記載のプログラムを記憶したことを特徴とする情報記憶媒体。
【請求項13】
ネットワークを介して他のゲーム装置との間で転送されるパケットの処理を行うパケット処理部と、
パケットにより転送されるデータに基づいて、ゲーム演算処理を行うゲーム演算部と、
前記ゲーム演算処理の結果に基づいて画像を生成する画像生成部とを含み、
前記ゲーム演算部は、
前記ゲーム演算処理として、複数のゲームシーケンス区間の各ゲームシーケンス区間において各ゲームシーケンス処理を行い、
前記他のゲーム装置との間で転送されるパケットは、パケットにより転送されるデータが使用されるゲームシーケンス区間を特定する区間IDを含み、
前記パケット処理部は、
受信したパケットの区間IDと、現在のゲームシーケンス区間の区間IDとの照合処理を行い、
前記ゲーム演算部は、
パケットの区間IDと、現在のゲームシーケンス区間の区間IDとが一致したパケットのデータに基づいて、前記ゲーム演算処理を行うことを特徴とするゲーム装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate


【公開番号】特開2011−45504(P2011−45504A)
【公開日】平成23年3月10日(2011.3.10)
【国際特許分類】
【出願番号】特願2009−196023(P2009−196023)
【出願日】平成21年8月26日(2009.8.26)
【出願人】(000134855)株式会社バンダイナムコゲームス (1,157)
【Fターム(参考)】