説明

通信ゲームシステム及び通信ゲームプログラム

【課題】複数の携帯型ゲーム機が親機と子機群となって無線通信で操作入力データを送受信しながらゲームを行う通信ゲームシステムにおいて、通信状態の悪化があった場合にも忠実なゲームの進行が図れるようにする。
【解決手段】親機10は、各子機1X(X=1〜3)側の子機パケットP1〜P3が1つでも受信できない場合には、ゲームの進行を停止して現状の表示状態を維持すると共に、直前に送出した親機パケットP0[自機と各子機1X(X=1〜3)の前回の入力操作データがセット]を繰り返して送信する(S9→S10〜S12→S9)。一方、各子機1X(X=1〜3)側では、親機パケットP0が受信できない場合には、ゲームの進行を停止して、現状の表示状態を維持する(S24→S25,S26→S24)。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、複数の携帯型ゲーム機の内の1台が親機に、他が子機になって無線通信を行い、各ゲーム機が共通の情報を表示させながらゲームを進行させる通信ゲームシステム及び通信ゲームプログラムに係り、特に親機と子機間で通信障害が生じた場合におけるゲーム進行の制御方式に関する。
【背景技術】
【0002】
最近の携帯型ゲーム機には無線通信機能を備えているものも多く、そのようなゲーム機では他の同機種のゲーム機との無線通信より操作入力情報を共有しながらゲームを進行させることが可能であり、対戦ゲームやシューティングゲーム等多種に亘るゲームにおいて通信ゲームネットワークを構成して楽しまれている。
【0003】
そして、ゲーム機相互間の通信方式としては、複数のゲーム機の内の1台が親機となり、他のゲーム機が子機となって、親機が自機の操作入力データと各子機の操作入力データを集約して各子機へ送信することにより情報を共有する方式が採用される。
また、そのようなネットワーク構成では、下記特許文献1にあるように、親機と各子機が同期をとり、それぞれに割り当てられたタイムスロットにおいてパケット(親機パケットと各子機パケット)を送受信してデータのやりとりが行われる。
【0004】
ところで、光信号による無線通信方式の場合には、ゲーム機相互間で発光部と受光部がほぼ対向した関係になければ通信不能になり、電波による無線通信方式の場合には、通信環境の変化等によりデータ伝送が正常に行えなくなることがある。
また、操作入力状況やゲームの進行状況によっては、親機や各子機でのデータ処理が極端に遅くなって自機パケットをタイムスロット内に送信できないほど遅延してしまうような場合も少なくない。
【0005】
そのような場合に、通信状態の悪化時間やデータ処理の遅延が短期間であれば、タイムスロットにしてせいぜい数回程度の操作入力データが失われたに過ぎないため、従来では、そのようなデータの抜け落ちを無視し、ゲームの時間的進行だけを優先させる方式が採用されている。即ち、通信の回復により新たな操作入力データが得られた時点で、何事も無かったかの如くゲームをそのまま継続させるような処理の仕方を行っている。
【0006】
更に、従来技術として通信状態を画面の一部にインジケータ表示させる方法があるが、その方法によると、ゲームプレイに集中できず、またゲーム内容の表示領域を狭くする等の問題があるため、下記特許文献2においては、他のゲーム機との通信状態が悪くなったときに、他のゲーム機の制御対象となっているキャラクタの表示状態を変化させるような処理(非表示状態にする処理や薄い表示状態にする処理)の仕方も提案されている。
【0007】
【特許文献1】特開2006−130338号公報(第11−13頁、図10−図14)
【特許文献2】特開2004−275412号公報
【発明の開示】
【発明が解決しようとする課題】
【0008】
上記のように、操作入力データの抜け落ちを無視し、ゲームの時間的進行だけを優先させる処理を行う場合、シューティングゲーム等のように緻密で精度の高い操作入力とそれに対応した表示映像への忠実な反映が求められるゲームにおいては、操作入力がゲームに反映されないと、その操作者にとってはその度に整合性が無いことによる不可思議さや不満が残り、ゲームに対する興味が失せてしまうことになる。即ち、その種のゲームでは状況に応じた個々の操作入力がゲームの結果に大きく影響することが多く、本来有効となるべき操作入力が無効扱いとなることは大きな欠陥とも言える。
また、通信ネットワークを構成している各ゲーム機でデータ処理の遅延が様々に生じていると、各ゲーム機での映像表示と音声出力の同時性が著しく損なわれることがあり、各操作者においてはゲームを共同で行っていることの楽しさが半減する。
【0009】
尚、特許文献2のように、キャラクタを非表示状態や薄い表示状態にすることは、通信状態を確認する上ではよいが、データの抜け落ちは無視していると思われることから、ゲームの内容に関しては前記と同様の問題がある。
更に言うなら、操作者にとってより重要なことは、通信状態の確認ではなく、ゲームの内容が忠実に実行されることである。
【0010】
そこで、本願の発明は、1台の親機と複数の子機とが無線通信ネットワークを構成し、各ゲーム機が共通の情報を表示させながらゲームを進行させる通信ゲームシステムにおいて、通信状態の悪化した場合や各ゲーム機でデータ処理の遅延が生じた場合に、ゲームの進行を一旦停止させるが、操作入力データを無視することなく忠実なゲームの進行が図れ、親機と各子機において常に同一時間軸でゲームを進行させることを目的とする。
【課題を解決するための手段】
【0011】
本願の発明は、無線通信機能を備えた複数の携帯型ゲーム機の内の1台が親機に、他のゲーム機が子機となって無線通信を行い、前記親機は所定周期で自機の操作入力データと前記各子機から受信した各子機パケットの操作入力データとを親機パケットにセットして前記各子機へ送信し、前記各子機は親機パケットの受信後の時間帯に割り当てられている自己のタイムスロット内に自機の操作入力データを子機パケットにセットして前記親機へ送信し、前記親機と前記各子機は親機パケットの各操作入力データを用いてゲームプログラムを実行することにより、各々が共通の情報を表示させながらゲームを進行させる通信ゲームシステムにおいて、前記親機は、親機パケットの送信周期で、前回と今回の自機と前記各子機の操作入力データを2つの記憶領域に対して交互に書き換えながら記憶する親機側記憶手段と、前記各子機からの子機パケットが各々のタイムスロット内に全て受信できたか否かを確認する親機側確認手段とを備え、一方、前記各子機は、親機パケットの受信周期で、前回の前記親機パケットの各操作入力データと今回の自機の操作入力データをそれぞれ書き換えながら記憶する子機側記憶手段と、親機パケットが所定タイミングで受信できたか否かを確認する子機側確認手段とを備えており、前記親機では、前記親機確認手段が全ての子機パケットの受信を確認できなかった場合には、未受信の子機パケットの受信待機状態を保ってゲームの進行を停止すると共に、前回の各操作入力データをセットした親機パケットを前記所定周期で連続的に送信し、前記各子機側では、前記子機側確認手段が親機パケットの受信を確認できなかった場合には、親機パケットの受信待機状態を保ってゲームの進行を停止することを特徴とした通信ゲームシステムに係る。
【0012】
この発明によれば、親機が、自機の操作入力データと共に、各子機から受信した子機パケットの操作入力データを親機パケットに集約して各子機に送信し、親機と子機が操作入力データを共有しながらゲームを進行させるが、親機と子機にはそれぞれ記憶手段により操作入力データについてのバッファ機能を持たせてある。
そして、親機において子機パケットが1つでも受信できなかった場合には、親機は、ゲームの進行を一旦停止させて、未受信の子機パケットの受信待機状態となり、直前に送信している親機パケット(前回の親機と各子機の操作入力データを含んでいる)を繰り返し送信する。また、各子機において親機パケットが受信できなかった場合にも、各子機は親機パケットの受信待機状態を保ってゲームの進行を停止する。
従って、親機と各子機間での一時的に通信状態の悪化や各ゲーム機におけるデータ処理の遅延があって、親機パケットや子機パケットの送受信ができなかった場合には、その直前の状態を維持してゲームが一旦停止せしめられ、通信状態の回復を待って停止した状態から直ちにゲームが再開される。
その場合、通信状態の悪化等があっても親機と各子機は常に同一時間軸でゲームを再開・進行させることができると共に、親機と各子機のいずれにおいても、操作入力が勝手に無視されたままゲームが進行することはない。
【0013】
前記発明において、前記親機は、未受信の子機パケットの受信待機状態で、前記親機側記憶手段が記憶している前回の各操作入力データを用いた表示状態を維持し、前記各子機は、親機パケットの受信待機状態で、前記子機側記憶手段が記憶している前回の各操作入力データを用いた表示状態を維持することが望ましい。
このように直前までの表示状態を維持することにより、操作者はゲームが一旦停止せしめられたことを直ちに察知できるために、無駄な操作入力を行わなくなると共に、その表示内容からゲームがどの進行状態で停止せしめられたかを確認でき、ゲームが再開された際に次の操作に対する待機状態をとり易くなる。
【0014】
また、前記発明において、前記親機では、未受信の子機パケットの受信待機状態が親機パケットの送信に係る前記所定周期よりも十分に長い時間として設定された親機側限度時間を超えた場合に、親機パケットにゲーム終了コードをセットして送信させ、前記各子機では、親機パケットの受信待機状態が親機パケットの送信に係る前記所定周期よりも十分に長い時間として設定された子機側限度時間を超えた場合に、子機パケットにゲーム終了コードをセットして送信させることが望ましい。
即ち、経験的に通信の回復が見込めない、又は何れかのゲーム機の操作者がゲームを止めてしまったと思えるような長い時間に亘って子機パケットや親機パケットが受信できないような場合には、少なくともその時点で通信可能状態にある他のゲーム機に対してゲーム終了コードを送信して終了させる。
【0015】
尚、前記発明の機能を実現するためのプログラムは前記親機や前記各子機が予め搭載している必要はなく、通信ゲームプログラムの中に組み込まれていてもよい。その場合には以下のような通信ゲームプログラムとなる。
(a) 無線通信機能を備えた複数の携帯型ゲーム機の内の1台が親機に、他のゲーム機が子機となって無線通信を行い、前記親機は所定周期で自機の操作入力データと前記各子機から受信した各子機パケットの操作入力データとを親機パケットにセットして前記各子機へ送信し、前記各子機は親機パケットの受信後の時間帯に割り当てられている自己のタイムスロット内に自機の操作入力データを子機パケットにセットして前記親機へ送信し、前記親機と前記各子機は親機パケットの各操作入力データを用いてゲームプログラムを実行することにより、各々が共通の情報を表示させながらゲームを進行させる通信ゲームシステムに適用される通信ゲームプログラムであって、前記親機に格納されているプログラムは、親機パケットの送信周期で、前回と今回の自機と前記各子機の操作入力データを2つの記憶領域に対して交互に書き換えながら親機側記憶手段に記憶させる第1の手順と、前記各子機からの子機パケットが各々のタイムスロット内に全て受信できたか否かを確認する第2の手順と、前記第2の手順で全ての子機パケットの受信を確認できなかった場合には、未受信の子機パケットの受信待機状態を保ってゲームの進行を停止すると共に、前回の各操作入力データをセットした親機パケットを前記所定周期で連続的に送信させる第3の手順とを前記親機が内蔵するコンピュータに実行させるプログラムであり、前記各子機に格納されているプログラムは、親機パケットの受信周期で、前回の前記親機パケットの各操作入力データと今回の自機の操作入力データをそれぞれ書き換えながら子機側記憶手段に記憶させる第4の手順と、親機パケットが所定タイミングで受信できたか否かを確認する第5の手順と、前記第5の手順で親機パケットの受信を確認できなかった場合には、親機パケットの受信待機状態を保ってゲームの進行を停止する第6の手順とを前記各子機が内蔵するコンピュータに実行させるプログラムであることを特徴とする通信ゲームプログラム。
(b) 前記(a)の通信プログラムであって、前記親機に格納されているプログラムによる前記第3の手順においては、未受信の子機パケットの受信待機状態で前記親機側記憶手段が記憶している前回の各操作入力データを用いた表示状態を維持させるようにし、前記各子機に格納されているプログラムによる前記第6の手順においては、親機パケットの受信待機状態で前記子機側記憶手段が記憶している前回の各操作入力データを用いた表示状態を維持させるようにした通信ゲームプログラム。
(c) 前記(a)又は(b)の通信ゲームプログラムであって、前記親機に格納されているプログラムは、未受信の子機パケットの受信待機状態が親機パケットの送信に係る前記所定周期よりも十分に長い時間として設定された親機側限度時間を超えた場合に、親機パケットにゲーム終了コードをセットして送信する手順も前記親機が内蔵するコンピュータに実行させ、前記各子機に格納されているプログラムは、親機パケットの受信待機状態が親機パケットの送信に係る前記所定周期よりも十分に長い時間として設定された子機側限度時間を超えた場合に、子機パケットにゲーム終了コードをセットして送信する手順も前記各子機が内蔵するコンピュータに実行させるものである通信ゲームプログラム。
【発明の効果】
【0016】
本願の通信ゲームシステム及び通信ゲームプログラムの発明は、以上の構成を有していることにより、次のような効果を奏する。
1台の親機と複数の子機とがパケットによる無線通信ネットワークを構成し、親機が自機と各子機の操作情報を集約・配信して各ゲーム機に共通の情報を持たせながらゲームを進行させる通信ゲームシステムにおいて、パケットの受信が不可能な通信状態の悪化や各ゲーム機でのデータ処理の遅延があった場合にも、操作入力データを無視することなく忠実なゲームの進行が図れるようにする。特に、シューティングゲーム等のように緻密で精度の高い操作入力とそれに対応した表示映像への忠実な反映が求められるゲームに対して適用することにより、操作者に整合性のなさによる不可思議さや不満を生じさせない操作環境を実現する。
【発明を実施するための最良の形態】
【0017】
以下、本発明の通信ゲームシステムの実施形態を図面に基づいて詳細に説明する。
先ず、図1は、無線通信機能を備えた携帯型ゲーム機のシステム回路図である。このゲーム機1は無線通信機能を備え、他の同種のゲーム機と通信を行いながら共同してゲームを攻略したり対戦ゲームを行ったりすることが可能なタイプの機種である。
また、同図に示すように、ゲーム機1にはカートリッジ2がコネクタを介して外部接続されるようになっており、そのカートリッジ2にはゲームプログラムが格納されている。
【0018】
同図のゲーム機1において、30はプロセッサであり、このプロセッサ30はCPUコア31とそれに関連するブートROM32、LCDコントローラ33、WRAM(ワーキングRAM)34、VRAM(ビデオRAM)35、その他の周辺回路36を含んでいる。ここで、周辺回路36には音声回路やDMA(Direct Memory Access)回路や入出力インターフェイス回路と共にタイマ37が含まれている。
【0019】
プロセッサ30には、他のゲームと通信するためのアンテナ41とRF-IC42とベースバンドIC43とからなる無線通信部、LCDコントローラ33が処理した映像信号を表示出力させる2つのLCD(a)44,LCD(b)45、周辺回路36の音声回路が処理した信号をスピーカ46から音声出力させるオーディオアンプ47、十字キー等の各種キーと各種ボタンとからなる操作部48、及び前記カートリッジ2の接続用コネクタ49が接続されている。
【0020】
そして、図2に示すように、このゲーム機1が他の同種のゲーム機と無線通信を行いながらゲームを行う場合においては、初期セッションでの設定により親機10にも子機1X(X=1,2,3)にもなり得るが、親機10になる場合には、プロセッサ30が無線通信部(41,42,43)から得られる各子機1X(X=1,2,3)の操作信号と自らの操作部48からの操作入力データに基づいてカートリッジ2のROM51のゲームプログラムを実行し、LCD(a)44,LCD(b)45にゲーム映像を表示させると共に、スピーカ46から音声を出力させる。
尚、カートリッジ2における52はバックアップRAMであり、ゲームの途中データやゲームの結果データをセーブする。
【0021】
一方、ゲーム機1が子機1X(X=1,2,3)になる場合には、各子機1X(X=1,2,3)がそれぞれカートリッジ2を接続してゲームを行う通常モードと、親機10にだけカートリッジ2が装着されていて、各子機1X(X=1,2,3)は親機10から子機用プログラムのダウンロードを受けて動作するワンカートリッジモード(OCモード)とがある。
しかし、いずれの場合もゲームの進行は親機10によって制御され、各子機1X(X=1,2,3)の操作入力データは無線通信により一旦親機10に集約せしめられた後、親機10が自機の操作信号と各子機1X(X=1,2,3)の操作信号とをブロードキャストデータパケットとして全ての子機1X(X=1,2,3)に送信することでゲームの進行が図られる。
そして、各子機1X(X=1,2,3)は、通常モードでは自機のカートリッジ2のROM51のゲームプログラムを、OCモードではダウンロードを受けた子機用プログラムを実行することにより、LCD(a)44,LCD(b)45にゲーム映像を表示させると共に、スピーカ46から音声を出力させる。
尚、以下では親機10と子機1X(X=1,2,3)の回路要素を区別するため、子機1X(X=1,2,3)の回路要素についてはそれぞれの符号にダッシュ符号を付加して説明することとする。
【0022】
また、親機10と子機1X(X=1,2,3)はそれぞれ図5に示すようなデータパケットを送出して相互に通信を行う。
同図に示すように、親機パケットP0は、同期データを記録したフィールドsyncと、親機10自体の識別コードであるPIDと、ユーザ名フィールドUserNameと、ゲーム名フィールドGameNameと、OCモードへの対応の可否を示すフラグOCと、エントリー(参加)可能な子機1X(X=1,2,3)のスロットの番号が記録されるEスロットフィールドESlotと、4つのスロットで構成されて各子機1X(X=1,2,3)の識別コード(CID)が記録されるUスロットフィールドUSlot、ゲーム処理において必要となるゲームデータが記録されるペイロードフィールドPayloadとからなる。
一方、子機パケットPX(X=1,2,3・・・)は、子機1X(X=1,2,3)自体の識別コードであるPIDと、子機1X(X=1,2,3)から親機10に送信されるゲームデータを記録するためのペイロードフィールドとからなる。
【0023】
次に、ゲーム実行中の親機10と子機1X(X=1,2,3)の動作をそれぞれ図3と図4のフローチャートを参照しながら説明する。
図3は親機10の動作手順を示す。先ず、子機1X(X=1,2,3)側との通信リンク確立とゲーム開始処理がなされると、プロセッサ30は自機の操作部48からの入力データを確認し、その入力データD0(1)をWRAM34の所定アドレスにセーブさせる(S1〜S3)。
ここに、通信リンクの確立手順は、親機10がエントリー受付状態に設定された状態で各子機1X(X=1,2,3)から子機パケットPX(X=1,2,3・・・)によるエントリー要求があり、各子機1X(X=1,2,3)がエントリー可能な所定条件を満たしていれば、親機10が親機パケットP0によりエントリー許可を返信することにより実行される。
また、ゲーム開始処理は、ゲームによって異なるが、ステージやレベルの選択、エントリー要求した子機が多過ぎた場合の抽選等が含まれ、それら手順が行われた後にゲーム開始信号を各子機1X(X=1,2,3)へ送信することにより実行される。
【0024】
このような手順を経てゲームは開始されるが、以降では、既にゲームがある程度進行した状態について説明することとする。
今、ある時点で確認された自機(親機)10での入力データをD0(n)とすると、プロセッサ30はそのデータD0(n)を直ちにWRAM34の所定アドレスにセーブさせる(S2,S3)。そして、プロセッサ30は、既にWRAM34にセーブされている自機の前回の入力データD0(n-1)と既に各子機1X(X=1,2,3)から受信してWRAM34にセーブさせてある前回の入力データD1(n-1),D2(n-1),D3(n-1)とを親機パケットP0のPayloadにセットし、その親機パケットP0を無線通信部(41,42,43)へ読み出して無線送信する(S4)。
このブロードキャストで送信される親機パケットP0は親機10と子機1X(X=1,2,3)の双方が正常な送受信状態・データ処理状態にあれば常に所定周期で送信され、その送信タイミングが親機10と子機1X(X=1,2,3)の間での同期基準となっている。
尚、親機10ではWRAM34における操作入力データのセーブのためのアドレスが図6に示すような模式的構成で管理されており、2つの領域(a)と(b)に対して前回と今回の親機10と子機1X(X=1,2,3)の操作入力データが交互に上書きしながら書き込まれることによりデータバッファ機能が実現させてある。
【0025】
そして、プロセッサ30は親機パケットP0の送信時点でタイマ37のカウントを開始させ、そのタイマ37が所定時間Tsを計時した時点で、WRAM34にセーブされている各操作入力データD0(n-1)とD1(n-1),D2(n-1),D3(n-1)を用いてゲームプログラムに基づく処理を実行する(S6,S7)。この所定時間Tsは、親機パケットP0を受信した各子機1X(X=1,2,3)が親機10と同一のタイミングで各操作入力データD0(n-1),D1(n-1),D2(n-1),D3(n-1)を用いたゲームプログラムに基づく処理を行えるようにするための調整時間に相当する。
その結果、親機10と各子機1X(X=1,2,3)において、ゲームプログラムの前記実行に対応した更新描画と音声出力の処理がほぼ同一のタイミングで行われることになる(S8)。
【0026】
一方、プロセッサ30は、タイマ37のカウント開始後、前記処理の実行と並行して無線通信部(41,42,43)でそれぞれ子機パケットP1,P2,P3が受信されるか否かを監視している(S9)。即ち、前記親機パケットP0の送信から前記時間Tsを経過した後の一定時間帯を区分し、それぞれの区分時間が各子機1X(X=1,2,3)に対して個別に割り付けたタイムスロットとされており、後述するように親機パケットP0を受信した各子機1X(X=1,2,3)は割り付けられたタイムスロット内に自機の操作入力データを親機10へ送信するようになっている。
【0027】
そして、各スロットタイムで各子機パケットP1,P2,P3が受信されると、プロセッサ30はその各パケットP1,P2,P3のPayloadにセットされている各子機1X(X=1,2,3)の今回の操作入力データD1(n),D2(n),D3(n)をWRAM34の所定アドレスに上書きしてセーブさせる(S9→S13)。
従って、WRAM34には今回の確認(S2,S3)に係る親機の操作入力データD0(n)と子機1X(X=1,2,3)の操作入力データD1(n),D2(n),D3(n)が書き込まれたことになり、プロセッサ30はタイマ37のカウントを停止させた後、再び自機の操作入力データD0(n+1)の確認を行い、そのデータD0(n+1)をWRAM34の領域(a)側のデータD0(n-1)に上書きしてセーブすると共に、領域(b)側に揃っている操作入力データD0(n+1),D1(n+1),D2(n+1),D3(n+1)を親機パケットP0のPayloadにセットしてブロードキャスト送信を行う(S13→S14,S15→S2,S3,S4)。
【0028】
ところで、[背景技術]の欄で説明したように、親機10と各子機1X(X=1,2,3)との間の通信が常に良好な状態で行えるとは限らず、また、操作入力状況やゲームの進行状況によっては、ある子機での処理が非常に遅くなって子機パケットをタイムスロット内に送信できないほど遅延してしまうような場合もある。
【0029】
そのような場合に、この実施形態では、全ての子機パケットP1,P2,P3が受信されない限りゲームの進行を停止させるようにしており、各タイムスロット内で1つでも子機パケットP1,P2,P3が受信できない場合には、前記の親機パケットP0の送信時点から所定時間Te1までは未受信の子機パケットの受信待機状態とし、その時間帯は前回の各操作入力データD0(n-1),D1(n-1),D2(n-1),D3(n-1)に基づいた描画・音声出力の処理での表示状態を維持させると共に、前記ステップS4と同様のブロードキャスト送信動作を繰り返し実行させる(S9→S10,S11,S12→S9)。
即ち、従来のように、ゲームの時間的進行を優先して、未受信の子機パケットがあってもそれを無視してゲームを進行させるようなことは行わずに、通信状態の回復が見込めない、又は子機1X(X=1,2,3)のいずれかの操作者がゲームを止めたとみなし得るような時間Te1(例えば、10〜15秒)が経過するまでは、1回前に確認された操作入力データまでのゲーム進行状態で停止させた状態で未受信の子機パケットを待つ。
【0030】
従って、親機10においては、子機パケットP1,P2,P3が各タイムスロット内に受信できていれば通常どおりゲームを進行させることができ、たとえいずれかの子機パケットP1,P2,P3の受信がタイムスロットから遅延したとしても、それが親機パケットP0の送信時点から時間Te1以内であれば、一旦ゲームの進行は停止するが、その停止していた状態から再びゲームが進行せしめられる(S2〜S15→S2)。
尚、前記時間Te1を経過するとゲームの再開が望めない状況にあるとみなし、プロセッサ30は親機パケットP0のPayloadにゲーム終了コードをセットして送信した後、タイマ37のカウントを停止させる(S12→S16,S17)。
また、ゲーム開始時において操作入力データD0(1)をWRAM34に最初にセーブさせた段階では、親機10についても子機1X(X=1,2,3)についても前回の操作入力データは存在しておらず、その場合にはそれぞれをNullデータとして扱う。
【0031】
ところで、図3のフローチャートでは親機パケットP0の送信(S4)の前に自機の操作入力データを確認してWRAM34にセーブさせるようになっているが(S2,S3)、それらの手順は必ずしもその時点で行う必要はなく、図3aに示すように、各子機パケットP1,P2,P3を受信してWRAM34にセーブした後に行わせてもよい(*S2,*S3)。
【0032】
次に、図4は各子機1X(X=1,2,3)の動作手順を表している。先ず、エントリー要求等のセッションによって親機10とのリンクが確立し、所定のゲーム開始処理手順が完了すると、プロセッサ30'は自機の操作部48'からの入力データを確認する(S21,S22)。
そして、プロセッサ30'はその入力データDX(1)をWRAM34'の所定アドレスにセーブさせるが(S23)、子機1X(X=1,2,3)の場合についても、前記の親機10の場合と同様に、既にゲームがある程度進行した状態について説明する。
前記のように、プロセッサ30'は自機の今回の確認に係る操作入力データDX(n)をWRAM34'にセーブさせると共に、無線通信部(41',42',43')で親機パケットP0が受信されるか否かを監視している(S22,S23,S24)。
【0033】
ところで、上記のように親機10は親機パケットP0を所定周期で送信しており、その送信タイミングが親機10と各子機1X(X=1,2,3)の間での同期基準になっている。
従って、子機1X(X=1,2,3)側において親機パケットP0が所定タイミングで受信できないということは、親機10と各子機1Xとの位置関係や外部要因等により通信不良状態に陥っているか、又は親機10でのデータ処理が膨大になっており所定時間内に処理できない状態になっていることが考えられる。
【0034】
これに対して、この実施形態の子機1X(X=1,2,3)では親機パケットP0を受信するとプロセッサ30'がタイマ37'をリセットしてカウントを開始させるようになっており、たとえ親機パケットP0がその送信周期よりも長い時間受信できなくても、タイマ37'のカウントが前回の親機パケットP0の受信時から所定時間Te2を経過するまでであれば、親機パケットP0の受信待機状態とし、ゲームの進行を停止して前回の各操作入力データD0(n-2),D1(n-2),D2(n-2),D3(n-2)に基づいた描画・音声出力の処理での表示状態を維持させる(S24→S25,S26→S24)。
【0035】
そして、この場合の所定時間Te2は少なくとも親機10による親機パケットP0の送信周期より長い時間として任意に設定できるが、この実施形態では、後述するように所定時間Te2以内に親機パケットP0が受信できなかった場合にはゲーム終了コードをセットした子機パケットPXを親機10側へ送信することになっており(S26,S34)、時間Te2が親機パケットP0の送信周期の2倍より短いと1回でも親機パケットP0が受信できなかった場合には直ちにゲームが終了してしまうことから、親機パケットP0の送信周期の600倍程度に設定しておくのが望ましい。
より具体的には、親機パケットP0の送信周期が1/60秒(ゲーム機のフレーム周期に相当)であるとすれば、時間Te2は10sec程度となる。
【0036】
一方、親機パケットP0が受信されると、前記のとおりプロセッサ30'はタイマ37'をリセットしてカウントを開始させると共に、親機パケットP0のPayloadにセットされている親機10の操作入力データD0(n-1)と自機を含む各子機1X(X=1,2,3)の操作入力データD1(n-1),D2(n-1),D3(n-1)をWRAM34'の所定アドレスにセーブさせ、それらのデータD0(n-1), D1(n-1),D2(n-1),D3(n-1)を用いてゲームプログラムに基づく処理を実行する(S24→S27,S28,S29)。
その結果、ゲームプログラムの前記実行に対応した更新描画と音声出力の処理が親機10とほぼ同一のタイミングで行われることになる(S30)。
尚、各子機1X(X=1,2,3)のWRAM34'における操作入力データのセーブのためのアドレスは図7に示すような模式的構成で管理されており、親機パケットP0のPayloadのデータと自機の操作入力データとを上書きしながら書き込むようになっている。
【0037】
また、親機パケットP0の受信後、リセットしてカウントが開始せしめられたタイマ37'のカウントデータを参照しながら各子機1X(X=1,2,3)毎に割り当てられているタイムスロットにおいて自らの子機パケットPXを親機10へ送信するが、その子機パケットPXのPayloadにはその時点でWRAM34'にセーブされている自らの操作入力データDX(n)である(S31,S32)。
【0038】
以降、プロセッサ30'では、再び自機の操作入力データDX(n+1)を確認して、それをWRAM34'に上書きセーブさせる動作へ戻り、親機パケットP0がタイマ37'のカウント開始時から所定時間Te2以内に受信できていればステップS22からステップS33までを繰り返し実行する。
尚、親機パケットP0が前記所定時間Te2以内に受信できなかった場合には、前記のとおりプロセッサ30'が子機パケットPXのPayloadにゲーム終了コードをセットして送信させた後、タイマ37'のカウントを停止させる(S26→S34,S35)。
【0039】
以上のように、この実施形態の通信ゲームシステムによると、親機10と各子機1X(X=1,2,3)との間の通信が不良になった場合には、ゲームの進行を停止させて、親機10と各子機1X(X=1,2,3)がそれぞれの時点における自機の描画表示状態を維持させたまま、通信が復旧する可能性のある時間帯は待機するようになっており、且つ通信が復旧すると、前記ゲームの進行停止以前の状態からゲームの連続性を失うことなく自動的に再開させることができる。
【0040】
これを前記実施形態でみると、図3に示した親機10側での動作手順の中で子機パケットP1,P2,P3の一つでも受信できないような通信不良状態になった場合には、親機10側では操作入力データD0(n-1),D1(n-1),D2(n-1),D30(n-1)を用いてゲームプログラムに基づく処理を実行した際の描画表示画面でゲームの進行が停止するが(S9→S10,S11,S12→S9)、一方、子機1X(X=1,2,3)側についてみると、親機10側との通信が不良状態にある子機では、今回の親機パケットP0が受信できないために1回前の親機パケットP0にセットされていた操作入力データD0(n-2),D1(n-2),D2(n-2),D30(n-2)を用いてゲームプログラムに基づく処理を実行した際の描画表示画面でゲームの進行が停止した状態となり(S24→S25,S26→S24)、親機10側との通信が可能な他の子機では今回の親機パケットP0にセットされていた操作入力データD0(n-1),D1(n-1),D2(n-1),D30(n-1)を用いてゲームプログラムに基づく処理を実行した際の描画表示画面でゲームの進行が停止した状態となる(S25→SS28,S29,S30)。
【0041】
尚、親機10では、子機パケットP1,P2,P3の一つでも受信できない状態で、且つタイマ37のカウントが所定時間Te1を超えていなければ、操作入力データD0(n-1),D1(n-1),D2(n-1),D30(n-1)を子機1X(X=1,2,3)側へ何回も送信することになり(S11)、一方、親機10との通信が可能な状態にある子機ではその都度表示フレームの更新描画と音声出力の処理が実行されることになるが(S24→S27〜S30)、同一データD0(n-1),D1(n-1),D2(n-1),D30(n-1)による更新描画等の処理であるため、ゲームの進行は停止したままである。
【0042】
ところで、図4のフローチャートでは親機パケットP0の受信(S24)の前に自機の操作入力データを確認してWRAM34'にセーブさせるようになっているが(S22,S23)、それらの手順は必ずしもその時点で行う必要はなく、図4aに示すように、親機パケットP0を受信してタイマ37'のリセットとカウント開始を行った後に行わせてもよい(*S22,*S23)
【産業上の利用可能性】
【0043】
本発明は、複数の携帯型ゲーム機の内、1機が親機となり、他機が子機となって無線通信により操作入力データを送受信しながらゲームを行う場合の通信ゲームシステムに適用できる。
【図面の簡単な説明】
【0044】
【図1】実施形態に係る携帯型ゲーム機(無線通信機能搭載)のシステム回路図である。
【図2】複数の携帯型ゲーム機の内の1台が親機となり、他機が子機となって無線通信を行いながらゲームを行っている状態を示す図である。
【図3】親機の動作手順を示すフローチャートである。
【図3a】親機の動作手順(図3と自機の操作入力データのセーブ手順の順序が異なる場合)を示すフローチャートである。
【図4】子機の動作手順を示すフローチャートである。
【図4a】子機の動作手順(図4と自機の操作入力データのセーブ手順の順序が異なる場合)を示すフローチャートである。
【図5】親機パケットと子機パケットの各構成図である。
【図6】親機のプロセッサが管理するWRAMのアドレスを模式的に表した図である。
【図7】子機のプロセッサが管理するWRAMのアドレスを模式的に表した図である。
【符号の説明】
【0045】
1…ゲーム機、2…カートリッジ、10…親機、11,12,13…子機、30…プロセッサ、31…CPUコア、32…ブートROM、33…LCDコントローラ、34…WRAM、35…VRAM、36…周辺回路、37…タイマ、41…アンテナ、42…RF-IC、43…ベースバンドIC、44,45…LCD、46…スピーカ、47…オーディオアンプ、48…アンプ、49…コネクタ、51…ROM、52…バックアップRAM。

【特許請求の範囲】
【請求項1】
無線通信機能を備えた複数の携帯型ゲーム機の内の1台が親機に、他のゲーム機が子機となって無線通信を行い、前記親機は所定周期で自機の操作入力データと前記各子機から受信した各子機パケットの操作入力データとを親機パケットにセットして前記各子機へ送信し、前記各子機は親機パケットの受信後の時間帯に割り当てられている自己のタイムスロット内に自機の操作入力データを子機パケットにセットして前記親機へ送信し、前記親機と前記各子機は親機パケットの各操作入力データを用いてゲームプログラムを実行することにより、各々が共通の情報を表示させながらゲームを進行させる通信ゲームシステムにおいて、
前記親機は、親機パケットの送信周期で、前回と今回の自機と前記各子機の操作入力データを2つの記憶領域に対して交互に書き換えながら記憶する親機側記憶手段と、前記各子機からの子機パケットが各々のタイムスロット内に全て受信できたか否かを確認する親機側確認手段とを備え、
一方、前記各子機は、親機パケットの受信周期で、前回の前記親機パケットの各操作入力データと今回の自機の操作入力データをそれぞれ書き換えながら記憶する子機側記憶手段と、親機パケットが所定タイミングで受信できたか否かを確認する子機側確認手段とを備えており、
前記親機では、前記親機確認手段が全ての子機パケットの受信を確認できなかった場合には、未受信の子機パケットの受信待機状態を保ってゲームの進行を停止すると共に、前回の各操作入力データをセットした親機パケットを前記所定周期で連続的に送信し、
前記各子機側では、前記子機側確認手段が親機パケットの受信を確認できなかった場合には、親機パケットの受信待機状態を保ってゲームの進行を停止することを特徴とした通信ゲームシステム。
【請求項2】
前記親機は、未受信の子機パケットの受信待機状態において、前記親機側記憶手段が記憶している前回の各操作入力データを用いた表示状態を維持し、前記各子機は、親機パケットの受信待機状態において、前記子機側記憶手段が記憶している前回の各操作入力データを用いた表示状態を維持することとした請求項1に記載の通信ゲームシステム。
【請求項3】
前記親機は、未受信の子機パケットの受信待機状態が親機パケットの送信に係る前記所定周期よりも十分に長い時間として設定された親機側限度時間を超えた場合に、親機パケットにゲーム終了コードをセットして送信し、前記各子機は、親機パケットの受信待機状態が親機パケットの送信に係る前記所定周期よりも十分に長い時間として設定された子機側限度時間を超えた場合に、子機パケットにゲーム終了コードをセットして送信することとした請求項1又は請求項2に記載の通信ゲームシステム。
【請求項4】
無線通信機能を備えた複数の携帯型ゲーム機の内の1台が親機に、他のゲーム機が子機となって無線通信を行い、前記親機は所定周期で自機の操作入力データと前記各子機から受信した各子機パケットの操作入力データとを親機パケットにセットして前記各子機へ送信し、前記各子機は親機パケットの受信後の時間帯に割り当てられている自己のタイムスロット内に自機の操作入力データを子機パケットにセットして前記親機へ送信し、前記親機と前記各子機は親機パケットの各操作入力データを用いてゲームプログラムを実行することにより、各々が共通の情報を表示させながらゲームを進行させる通信ゲームシステムに適用される通信ゲームプログラムであって、
前記親機に格納されているプログラムは、親機パケットの送信周期で、前回と今回の自機と前記各子機の操作入力データを2つの記憶領域に対して交互に書き換えながら親機側記憶手段に記憶させる第1の手順と、前記各子機からの子機パケットが各々のタイムスロット内に全て受信できたか否かを確認する第2の手順と、前記第2の手順で全ての子機パケットの受信を確認できなかった場合には、未受信の子機パケットの受信待機状態を保ってゲームの進行を停止すると共に、前回の各操作入力データをセットした親機パケットを前記所定周期で連続的に送信させる第3の手順とを前記親機が内蔵するコンピュータに実行させるプログラムであり、
前記各子機に格納されているプログラムは、親機パケットの受信周期で、前回の前記親機パケットの各操作入力データと今回の自機の操作入力データをそれぞれ書き換えながら子機側記憶手段に記憶させる第4の手順と、親機パケットが所定タイミングで受信できたか否かを確認する第5の手順と、前記第5の手順で親機パケットの受信を確認できなかった場合には、親機パケットの受信待機状態を保ってゲームの進行を停止する第6の手順とを前記各子機が内蔵するコンピュータに実行させるプログラムである
ことを特徴とする通信ゲームプログラム。
【請求項5】
前記親機に格納されているプログラムによる前記第3の手順においては、未受信の子機パケットの受信待機状態で前記親機側記憶手段が記憶している前回の各操作入力データを用いた表示状態を維持させるようにし、前記各子機に格納されているプログラムによる前記第6の手順においては、親機パケットの受信待機状態で前記子機側記憶手段が記憶している前回の各操作入力データを用いた表示状態を維持させるようにした請求項4に記載の通信ゲームプログラム。
【請求項6】
前記親機に格納されているプログラムは、未受信の子機パケットの受信待機状態が親機パケットの送信に係る前記所定周期よりも十分に長い時間として設定された親機側限度時間を超えた場合に、親機パケットにゲーム終了コードをセットして送信する手順も前記親機が内蔵するコンピュータに実行させ、前記各子機に格納されているプログラムは、親機パケットの受信待機状態が親機パケットの送信に係る前記所定周期よりも十分に長い時間として設定された子機側限度時間を超えた場合に、子機パケットにゲーム終了コードをセットして送信する手順も前記各子機が内蔵するコンピュータに実行させるものである請求項4又は請求項5に記載の通信ゲームプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図3a】
image rotate

【図4】
image rotate

【図4a】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate