(57)【要約】【課題】複数の携帯型ゲーム機が親機と子機群となって無線通信で操作入力データを送受信しながらゲームを行う通信ゲームシステムにおいて、通信状態の悪化があった場合にも忠実なゲームの進行が図れるようにする。【解決手段】親機10は、各子機1X(X=1〜3)側の子機パケットP1〜P3が１つでも受信できない場合には、ゲームの進行を停止して現状の表示状態を維持すると共に、直前に送出した親機パケットP0［自機と各子機1X(X=1〜3)の前回の入力操作データがセット］を繰り返して送信する（S9→S10〜S12→S9）。一方、各子機1X(X=1〜3)側では、親機パケットP0が受信できない場合には、ゲームの進行を停止して、現状の表示状態を維持する（S24→S25,S26→S24）。【選択図】図３
2010000258.tif 000002
【特許請求の範囲】
【請求項１】
無線通信機能を備えた複数の携帯型ゲーム機の内の１台が親機に、他のゲーム機が子機となって無線通信を行い、前記親機は所定周期で自機の操作入力データと前記各子機から受信した各子機パケットの操作入力データとを親機パケットにセットして前記各子機へ送信し、前記各子機は親機パケットの受信後の時間帯に割り当てられている自己のタイムスロット内に自機の操作入力データを子機パケットにセットして前記親機へ送信し、前記親機と前記各子機は親機パケットの各操作入力データを用いてゲームプログラムを実行することにより、各々が共通の情報を表示させながらゲームを進行させる通信ゲームシステムにおいて、
前記親機は、親機パケットの送信周期で、前回と今回の自機と前記各子機の操作入力データを２つの記憶領域に対して交互に書き換えながら記憶する親機側記憶手段と、前記各子機からの子機パケットが各々のタイムスロット内に全て受信できたか否かを確認する親機側確認手段とを備え、
一方、前記各子機は、親機パケットの受信周期で、前回の前記親機パケットの各操作入力データと今回の自機の操作入力データをそれぞれ書き換えながら記憶する子機側記憶手段と、親機パケットが所定タイミングで受信できたか否かを確認する子機側確認手段とを備えており、
前記親機では、前記親機確認手段が全ての子機パケットの受信を確認できなかった場合には、未受信の子機パケットの受信待機状態を保ってゲームの進行を停止すると共に、前回の各操作入力データをセットした親機パケットを前記所定周期で連続的に送信し、
前記各子機側では、前記子機側確認手段が親機パケットの受信を確認できなかった場合には、親機パケットの受信待機状態を保ってゲームの進行を停止することを特徴とした通信ゲームシステム。
【請求項２】
前記親機は、未受信の子機パケットの受信待機状態において、前記親機側記憶手段が記憶している前回の各操作入力データを用いた表示状態を維持し、前記各子機は、親機パケットの受信待機状態において、前記子機側記憶手段が記憶している前回の各操作入力データを用いた表示状態を維持することとした請求項１に記載の通信ゲームシステム。
【請求項３】
前記親機は、未受信の子機パケットの受信待機状態が親機パケットの送信に係る前記所定周期よりも十分に長い時間として設定された親機側限度時間を超えた場合に、親機パケットにゲーム終了コードをセットして送信し、前記各子機は、親機パケットの受信待機状態が親機パケットの送信に係る前記所定周期よりも十分に長い時間として設定された子機側限度時間を超えた場合に、子機パケットにゲーム終了コードをセットして送信することとした請求項１又は請求項２に記載の通信ゲームシステム。
【請求項４】
無線通信機能を備えた複数の携帯型ゲーム機の内の１台が親機に、他のゲーム機が子機となって無線通信を行い、前記親機は所定周期で自機の操作入力データと前記各子機から受信した各子機パケットの操作入力データとを親機パケットにセットして前記各子機へ送信し、前記各子機は親機パケットの受信後の時間帯に割り当てられている自己のタイムスロット内に自機の操作入力データを子機パケットにセットして前記親機へ送信し、前記親機と前記各子機は親機パケットの各操作入力データを用いてゲームプログラムを実行することにより、各々が共通の情報を表示させながらゲームを進行させる通信ゲームシステムに適用される通信ゲームプログラムであって、
前記親機に格納されているプログラムは、親機パケットの送信周期で、前回と今回の自機と前記各子機の操作入力データを２つの記憶領域に対して交互に書き換えながら親機側記憶手段に記憶させる第１の手順と、前記各子機からの子機パケットが各々のタイムスロット内に全て受信できたか否かを確認する第２の手順と、前記第２の手順で全ての子機パケットの受信を確認できなかった場合には、未受信の子機パケットの受信待機状態を保ってゲームの進行を停止すると共に、前回の各操作入力データをセットした親機パケットを前記所定周期で連続的に送信させる第３の手順とを前記親機が内蔵するコンピュータに実行させるプログラムであり、
前記各子機に格納されているプログラムは、親機パケットの受信周期で、前回の前記親機パケットの各操作入力データと今回の自機の操作入力データをそれぞれ書き換えながら子機側記憶手段に記憶させる第４の手順と、親機パケットが所定タイミングで受信できたか否かを確認する第５の手順と、前記第５の手順で親機パケットの受信を確認できなかった場合には、親機パケットの受信待機状態を保ってゲームの進行を停止する第６の手順とを前記各子機が内蔵するコンピュータに実行させるプログラムである
ことを特徴とする通信ゲームプログラム。
【請求項５】
前記親機に格納されているプログラムによる前記第３の手順においては、未受信の子機パケットの受信待機状態で前記親機側記憶手段が記憶している前回の各操作入力データを用いた表示状態を維持させるようにし、前記各子機に格納されているプログラムによる前記第６の手順においては、親機パケットの受信待機状態で前記子機側記憶手段が記憶している前回の各操作入力データを用いた表示状態を維持させるようにした請求項４に記載の通信ゲームプログラム。
【請求項６】
前記親機に格納されているプログラムは、未受信の子機パケットの受信待機状態が親機パケットの送信に係る前記所定周期よりも十分に長い時間として設定された親機側限度時間を超えた場合に、親機パケットにゲーム終了コードをセットして送信する手順も前記親機が内蔵するコンピュータに実行させ、前記各子機に格納されているプログラムは、親機パケットの受信待機状態が親機パケットの送信に係る前記所定周期よりも十分に長い時間として設定された子機側限度時間を超えた場合に、子機パケットにゲーム終了コードをセットして送信する手順も前記各子機が内蔵するコンピュータに実行させるものである請求項４又は請求項５に記載の通信ゲームプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の携帯型ゲーム機の内の１台が親機に、他が子機になって無線通信を行い、各ゲーム機が共通の情報を表示させながらゲームを進行させる通信ゲームシステム及び通信ゲームプログラムに係り、特に親機と子機間で通信障害が生じた場合におけるゲーム進行の制御方式に関する。
【背景技術】
【０００２】
最近の携帯型ゲーム機には無線通信機能を備えているものも多く、そのようなゲーム機では他の同機種のゲーム機との無線通信より操作入力情報を共有しながらゲームを進行させることが可能であり、対戦ゲームやシューティングゲーム等多種に亘るゲームにおいて通信ゲームネットワークを構成して楽しまれている。
【０００３】
そして、ゲーム機相互間の通信方式としては、複数のゲーム機の内の１台が親機となり、他のゲーム機が子機となって、親機が自機の操作入力データと各子機の操作入力データを集約して各子機へ送信することにより情報を共有する方式が採用される。
また、そのようなネットワーク構成では、下記特許文献１にあるように、親機と各子機が同期をとり、それぞれに割り当てられたタイムスロットにおいてパケット（親機パケットと各子機パケット）を送受信してデータのやりとりが行われる。
【０００４】
ところで、光信号による無線通信方式の場合には、ゲーム機相互間で発光部と受光部がほぼ対向した関係になければ通信不能になり、電波による無線通信方式の場合には、通信環境の変化等によりデータ伝送が正常に行えなくなることがある。
また、操作入力状況やゲームの進行状況によっては、親機や各子機でのデータ処理が極端に遅くなって自機パケットをタイムスロット内に送信できないほど遅延してしまうような場合も少なくない。
【０００５】
そのような場合に、通信状態の悪化時間やデータ処理の遅延が短期間であれば、タイムスロットにしてせいぜい数回程度の操作入力データが失われたに過ぎないため、従来では、そのようなデータの抜け落ちを無視し、ゲームの時間的進行だけを優先させる方式が採用されている。即ち、通信の回復により新たな操作入力データが得られた時点で、何事も無かったかの如くゲームをそのまま継続させるような処理の仕方を行っている。
【０００６】
更に、従来技術として通信状態を画面の一部にインジケータ表示させる方法があるが、その方法によると、ゲームプレイに集中できず、またゲーム内容の表示領域を狭くする等の問題があるため、下記特許文献２においては、他のゲーム機との通信状態が悪くなったときに、他のゲーム機の制御対象となっているキャラクタの表示状態を変化させるような処理（非表示状態にする処理や薄い表示状態にする処理）の仕方も提案されている。
【０００７】
【特許文献１】特開２００６−１３０３３８号公報（第１１−１３頁、図１０−図１４）
【特許文献２】特開２００４−２７５４１２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
上記のように、操作入力データの抜け落ちを無視し、ゲームの時間的進行だけを優先させる処理を行う場合、シューティングゲーム等のように緻密で精度の高い操作入力とそれに対応した表示映像への忠実な反映が求められるゲームにおいては、操作入力がゲームに反映されないと、その操作者にとってはその度に整合性が無いことによる不可思議さや不満が残り、ゲームに対する興味が失せてしまうことになる。即ち、その種のゲームでは状況に応じた個々の操作入力がゲームの結果に大きく影響することが多く、本来有効となるべき操作入力が無効扱いとなることは大きな欠陥とも言える。
また、通信ネットワークを構成している各ゲーム機でデータ処理の遅延が様々に生じていると、各ゲーム機での映像表示と音声出力の同時性が著しく損なわれることがあり、各操作者においてはゲームを共同で行っていることの楽しさが半減する。
【０００９】
尚、特許文献２のように、キャラクタを非表示状態や薄い表示状態にすることは、通信状態を確認する上ではよいが、データの抜け落ちは無視していると思われることから、ゲームの内容に関しては前記と同様の問題がある。
更に言うなら、操作者にとってより重要なことは、通信状態の確認ではなく、ゲームの内容が忠実に実行されることである。
【００１０】
そこで、本願の発明は、１台の親機と複数の子機とが無線通信ネットワークを構成し、各ゲーム機が共通の情報を表示させながらゲームを進行させる通信ゲームシステムにおいて、通信状態の悪化した場合や各ゲーム機でデータ処理の遅延が生じた場合に、ゲームの進行を一旦停止させるが、操作入力データを無視することなく忠実なゲームの進行が図れ、親機と各子機において常に同一時間軸でゲームを進行させることを目的とする。
【課題を解決するための手段】
【００１１】
本願の発明は、無線通信機能を備えた複数の携帯型ゲーム機の内の１台が親機に、他のゲーム機が子機となって無線通信を行い、前記親機は所定周期で自機の操作入力データと前記各子機から受信した各子機パケットの操作入力データとを親機パケットにセットして前記各子機へ送信し、前記各子機は親機パケットの受信後の時間帯に割り当てられている自己のタイムスロット内に自機の操作入力データを子機パケットにセットして前記親機へ送信し、前記親機と前記各子機は親機パケットの各操作入力データを用いてゲームプログラムを実行することにより、各々が共通の情報を表示させながらゲームを進行させる通信ゲームシステムにおいて、前記親機は、親機パケットの送信周期で、前回と今回の自機と前記各子機の操作入力データを２つの記憶領域に対して交互に書き換えながら記憶する親機側記憶手段と、前記各子機からの子機パケットが各々のタイムスロット内に全て受信できたか否かを確認する親機側確認手段とを備え、一方、前記各子機は、親機パケットの受信周期で、前回の前記親機パケットの各操作入力データと今回の自機の操作入力データをそれぞれ書き換えながら記憶する子機側記憶手段と、親機パケットが所定タイミングで受信できたか否かを確認する子機側確認手段とを備えており、前記親機では、前記親機確認手段が全ての子機パケットの受信を確認できなかった場合には、未受信の子機パケットの受信待機状態を保ってゲームの進行を停止すると共に、前回の各操作入力データをセットした親機パケットを前記所定周期で連続的に送信し、前記各子機側では、前記子機側確認手段が親機パケットの受信を確認できなかった場合には、親機パケットの受信待機状態を保ってゲームの進行を停止することを特徴とした通信ゲームシステムに係る。
【００１２】
この発明によれば、親機が、自機の操作入力データと共に、各子機から受信した子機パケットの操作入力データを親機パケットに集約して各子機に送信し、親機と子機が操作入力データを共有しながらゲームを進行させるが、親機と子機にはそれぞれ記憶手段により操作入力データについてのバッファ機能を持たせてある。
そして、親機において子機パケットが１つでも受信できなかった場合には、親機は、ゲームの進行を一旦停止させて、未受信の子機パケットの受信待機状態となり、直前に送信している親機パケット（前回の親機と各子機の操作入力データを含んでいる）を繰り返し送信する。また、各子機において親機パケットが受信できなかった場合にも、各子機は親機パケットの受信待機状態を保ってゲームの進行を停止する。
従って、親機と各子機間での一時的に通信状態の悪化や各ゲーム機におけるデータ処理の遅延があって、親機パケットや子機パケットの送受信ができなかった場合には、その直前の状態を維持してゲームが一旦停止せしめられ、通信状態の回復を待って停止した状態から直ちにゲームが再開される。
その場合、通信状態の悪化等があっても親機と各子機は常に同一時間軸でゲームを再開・進行させることができると共に、親機と各子機のいずれにおいても、操作入力が勝手に無視されたままゲームが進行することはない。
【００１３】
前記発明において、前記親機は、未受信の子機パケットの受信待機状態で、前記親機側記憶手段が記憶している前回の各操作入力データを用いた表示状態を維持し、前記各子機は、親機パケットの受信待機状態で、前記子機側記憶手段が記憶している前回の各操作入力データを用いた表示状態を維持することが望ましい。
このように直前までの表示状態を維持することにより、操作者はゲームが一旦停止せしめられたことを直ちに察知できるために、無駄な操作入力を行わなくなると共に、その表示内容からゲームがどの進行状態で停止せしめられたかを確認でき、ゲームが再開された際に次の操作に対する待機状態をとり易くなる。
【００１４】
また、前記発明において、前記親機では、未受信の子機パケットの受信待機状態が親機パケットの送信に係る前記所定周期よりも十分に長い時間として設定された親機側限度時間を超えた場合に、親機パケットにゲーム終了コードをセットして送信させ、前記各子機では、親機パケットの受信待機状態が親機パケットの送信に係る前記所定周期よりも十分に長い時間として設定された子機側限度時間を超えた場合に、子機パケットにゲーム終了コードをセットして送信させることが望ましい。
即ち、経験的に通信の回復が見込めない、又は何れかのゲーム機の操作者がゲームを止めてしまったと思えるような長い時間に亘って子機パケットや親機パケットが受信できないような場合には、少なくともその時点で通信可能状態にある他のゲーム機に対してゲーム終了コードを送信して終了させる。
【００１５】
尚、前記発明の機能を実現するためのプログラムは前記親機や前記各子機が予め搭載している必要はなく、通信ゲームプログラムの中に組み込まれていてもよい。その場合には以下のような通信ゲームプログラムとなる。
(ａ)   無線通信機能を備えた複数の携帯型ゲーム機の内の１台が親機に、他のゲーム機が子機となって無線通信を行い、前記親機は所定周期で自機の操作入力データと前記各子機から受信した各子機パケットの操作入力データとを親機パケットにセットして前記各子機へ送信し、前記各子機は親機パケットの受信後の時間帯に割り当てられている自己のタイムスロット内に自機の操作入力データを子機パケットにセットして前記親機へ送信し、前記親機と前記各子機は親機パケットの各操作入力データを用いてゲームプログラムを実行することにより、各々が共通の情報を表示させながらゲームを進行させる通信ゲームシステムに適用される通信ゲームプログラムであって、前記親機に格納されているプログラムは、親機パケットの送信周期で、前回と今回の自機と前記各子機の操作入力データを２つの記憶領域に対して交互に書き換えながら親機側記憶手段に記憶させる第１の手順と、前記各子機からの子機パケットが各々のタイムスロット内に全て受信できたか否かを確認する第２の手順と、前記第２の手順で全ての子機パケットの受信を確認できなかった場合には、未受信の子機パケットの受信待機状態を保ってゲームの進行を停止すると共に、前回の各操作入力データをセットした親機パケットを前記所定周期で連続的に送信させる第３の手順とを前記親機が内蔵するコンピュータに実行させるプログラムであり、前記各子機に格納されているプログラムは、親機パケットの受信周期で、前回の前記親機パケットの各操作入力データと今回の自機の操作入力データをそれぞれ書き換えながら子機側記憶手段に記憶させる第４の手順と、親機パケットが所定タイミングで受信できたか否かを確認する第５の手順と、前記第５の手順で親機パケットの受信を確認できなかった場合には、親機パケットの受信待機状態を保ってゲームの進行を停止する第６の手順とを前記各子機が内蔵するコンピュータに実行させるプログラムであることを特徴とする通信ゲームプログラム。
(ｂ)  前記(ａ)の通信プログラムであって、前記親機に格納されているプログラムによる前記第３の手順においては、未受信の子機パケットの受信待機状態で前記親機側記憶手段が記憶している前回の各操作入力データを用いた表示状態を維持させるようにし、前記各子機に格納されているプログラムによる前記第６の手順においては、親機パケットの受信待機状態で前記子機側記憶手段が記憶している前回の各操作入力データを用いた表示状態を維持させるようにした通信ゲームプログラム。
(ｃ)  前記(ａ)又は(ｂ)の通信ゲームプログラムであって、前記親機に格納されているプログラムは、未受信の子機パケットの受信待機状態が親機パケットの送信に係る前記所定周期よりも十分に長い時間として設定された親機側限度時間を超えた場合に、親機パケットにゲーム終了コードをセットして送信する手順も前記親機が内蔵するコンピュータに実行させ、前記各子機に格納されているプログラムは、親機パケットの受信待機状態が親機パケットの送信に係る前記所定周期よりも十分に長い時間として設定された子機側限度時間を超えた場合に、子機パケットにゲーム終了コードをセットして送信する手順も前記各子機が内蔵するコンピュータに実行させるものである通信ゲームプログラム。
【発明の効果】
【００１６】
本願の通信ゲームシステム及び通信ゲームプログラムの発明は、以上の構成を有していることにより、次のような効果を奏する。
１台の親機と複数の子機とがパケットによる無線通信ネットワークを構成し、親機が自機と各子機の操作情報を集約・配信して各ゲーム機に共通の情報を持たせながらゲームを進行させる通信ゲームシステムにおいて、パケットの受信が不可能な通信状態の悪化や各ゲーム機でのデータ処理の遅延があった場合にも、操作入力データを無視することなく忠実なゲームの進行が図れるようにする。特に、シューティングゲーム等のように緻密で精度の高い操作入力とそれに対応した表示映像への忠実な反映が求められるゲームに対して適用することにより、操作者に整合性のなさによる不可思議さや不満を生じさせない操作環境を実現する。
【発明を実施するための最良の形態】
【００１７】
以下、本発明の通信ゲームシステムの実施形態を図面に基づいて詳細に説明する。
先ず、図１は、無線通信機能を備えた携帯型ゲーム機のシステム回路図である。このゲーム機1は無線通信機能を備え、他の同種のゲーム機と通信を行いながら共同してゲームを攻略したり対戦ゲームを行ったりすることが可能なタイプの機種である。
また、同図に示すように、ゲーム機1にはカートリッジ2がコネクタを介して外部接続されるようになっており、そのカートリッジ2にはゲームプログラムが格納されている。
【００１８】
同図のゲーム機1において、30はプロセッサであり、このプロセッサ30はＣＰＵコア31とそれに関連するブートＲＯＭ32、ＬＣＤコントローラ33、ＷＲＡＭ（ワーキングＲＡＭ）34、ＶＲＡＭ（ビデオＲＡＭ）35、その他の周辺回路36を含んでいる。ここで、周辺回路36には音声回路やＤＭＡ（Direct Memory Access）回路や入出力インターフェイス回路と共にタイマ37が含まれている。
【００１９】
プロセッサ30には、他のゲームと通信するためのアンテナ41とＲＦ-ＩＣ42とベースバンドＩＣ43とからなる無線通信部、ＬＣＤコントローラ33が処理した映像信号を表示出力させる２つのＬＣＤ(a)44,ＬＣＤ(b)45、周辺回路36の音声回路が処理した信号をスピーカ46から音声出力させるオーディオアンプ47、十字キー等の各種キーと各種ボタンとからなる操作部48、及び前記カートリッジ2の接続用コネクタ49が接続されている。
【００２０】
そして、図２に示すように、このゲーム機1が他の同種のゲーム機と無線通信を行いながらゲームを行う場合においては、初期セッションでの設定により親機10にも子機1X（X=1,2,3）にもなり得るが、親機10になる場合には、プロセッサ30が無線通信部（41,42,43）から得られる各子機1X（X=1,2,3）の操作信号と自らの操作部48からの操作入力データに基づいてカートリッジ2のＲＯＭ51のゲームプログラムを実行し、ＬＣＤ(a)44,ＬＣＤ(b)45にゲーム映像を表示させると共に、スピーカ46から音声を出力させる。
尚、カートリッジ2における52はバックアップＲＡＭであり、ゲームの途中データやゲームの結果データをセーブする。
【００２１】
一方、ゲーム機１が子機1X（X=1,2,3）になる場合には、各子機1X（X=1,2,3）がそれぞれカートリッジ2を接続してゲームを行う通常モードと、親機10にだけカートリッジ2が装着されていて、各子機1X（X=1,2,3）は親機10から子機用プログラムのダウンロードを受けて動作するワンカートリッジモード（ＯＣモード）とがある。
しかし、いずれの場合もゲームの進行は親機10によって制御され、各子機1X（X=1,2,3）の操作入力データは無線通信により一旦親機10に集約せしめられた後、親機10が自機の操作信号と各子機1X（X=1,2,3）の操作信号とをブロードキャストデータパケットとして全ての子機1X（X=1,2,3）に送信することでゲームの進行が図られる。
そして、各子機1X（X=1,2,3）は、通常モードでは自機のカートリッジ2のＲＯＭ51のゲームプログラムを、ＯＣモードではダウンロードを受けた子機用プログラムを実行することにより、ＬＣＤ(a)44,ＬＣＤ(b)45にゲーム映像を表示させると共に、スピーカ46から音声を出力させる。
尚、以下では親機10と子機1X（X=1,2,3）の回路要素を区別するため、子機1X（X=1,2,3）の回路要素についてはそれぞれの符号にダッシュ符号を付加して説明することとする。
【００２２】
また、親機10と子機1X（X=1,2,3）はそれぞれ図５に示すようなデータパケットを送出して相互に通信を行う。
同図に示すように、親機パケットP0は、同期データを記録したフィールドsyncと、親機10自体の識別コードであるPIDと、ユーザ名フィールドUserNameと、ゲーム名フィールドGameNameと、ＯＣモードへの対応の可否を示すフラグOCと、エントリー（参加）可能な子機1X（X=1,2,3）のスロットの番号が記録されるEスロットフィールドESlotと、４つのスロットで構成されて各子機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に送信されるゲームデータを記録するためのペイロードフィールドとからなる。
【００２３】
次に、ゲーム実行中の親機10と子機1X（X=1,2,3）の動作をそれぞれ図３と図４のフローチャートを参照しながら説明する。
図３は親機10の動作手順を示す。先ず、子機1X（X=1,2,3）側との通信リンク確立とゲーム開始処理がなされると、プロセッサ30は自機の操作部48からの入力データを確認し、その入力データD0(1)をＷＲＡＭ34の所定アドレスにセーブさせる（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）へ送信することにより実行される。
【００２４】
このような手順を経てゲームは開始されるが、以降では、既にゲームがある程度進行した状態について説明することとする。
今、ある時点で確認された自機（親機）10での入力データをD0(n)とすると、プロセッサ30はそのデータD0(n)を直ちにＷＲＡＭ34の所定アドレスにセーブさせる（S2,S3）。そして、プロセッサ30は、既にＷＲＡＭ34にセーブされている自機の前回の入力データD0(n-1)と既に各子機1X（X=1,2,3）から受信してＷＲＡＭ34にセーブさせてある前回の入力データ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ではＷＲＡＭ34における操作入力データのセーブのためのアドレスが図６に示すような模式的構成で管理されており、２つの領域(a)と(b)に対して前回と今回の親機10と子機1X（X=1,2,3）の操作入力データが交互に上書きしながら書き込まれることによりデータバッファ機能が実現させてある。
【００２５】
そして、プロセッサ30は親機パケットP0の送信時点でタイマ37のカウントを開始させ、そのタイマ37が所定時間Ｔsを計時した時点で、ＷＲＡＭ34にセーブされている各操作入力データD0(n-1)とD1(n-1),D2(n-1),D3(n-1)を用いてゲームプログラムに基づく処理を実行する（S6,S7）。この所定時間Ｔsは、親機パケット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）。
【００２６】
一方、プロセッサ30は、タイマ37のカウント開始後、前記処理の実行と並行して無線通信部（41,42,43）でそれぞれ子機パケットP1,P2,P3が受信されるか否かを監視している（S9）。即ち、前記親機パケットP0の送信から前記時間Ｔsを経過した後の一定時間帯を区分し、それぞれの区分時間が各子機1X（X=1,2,3）に対して個別に割り付けたタイムスロットとされており、後述するように親機パケットP0を受信した各子機1X（X=1,2,3）は割り付けられたタイムスロット内に自機の操作入力データを親機10へ送信するようになっている。
【００２７】
そして、各スロットタイムで各子機パケットP1,P2,P3が受信されると、プロセッサ30はその各パケットP1,P2,P3のPayloadにセットされている各子機1X（X=1,2,3）の今回の操作入力データD1(n),D2(n),D3(n)をＷＲＡＭ34の所定アドレスに上書きしてセーブさせる（S9→S13）。
従って、ＷＲＡＭ34には今回の確認（S2,S3）に係る親機の操作入力データD0(n)と子機1X（X=1,2,3）の操作入力データD1(n),D2(n),D3(n)が書き込まれたことになり、プロセッサ30はタイマ37のカウントを停止させた後、再び自機の操作入力データD0(n+1)の確認を行い、そのデータD0(n+1)をＷＲＡＭ34の領域(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）。
【００２８】
ところで、［背景技術］の欄で説明したように、親機10と各子機1X（X=1,2,3）との間の通信が常に良好な状態で行えるとは限らず、また、操作入力状況やゲームの進行状況によっては、ある子機での処理が非常に遅くなって子機パケットをタイムスロット内に送信できないほど遅延してしまうような場合もある。
【００２９】
そのような場合に、この実施形態では、全ての子機パケットP1,P2,P3が受信されない限りゲームの進行を停止させるようにしており、各タイムスロット内で１つでも子機パケットP1,P2,P3が受信できない場合には、前記の親機パケットP0の送信時点から所定時間Ｔe1までは未受信の子機パケットの受信待機状態とし、その時間帯は前回の各操作入力データD0(n-1),D1(n-1),D2(n-1),D3(n-1)に基づいた描画・音声出力の処理での表示状態を維持させると共に、前記ステップS4と同様のブロードキャスト送信動作を繰り返し実行させる（S9→S10,S11,S12→S9）。
即ち、従来のように、ゲームの時間的進行を優先して、未受信の子機パケットがあってもそれを無視してゲームを進行させるようなことは行わずに、通信状態の回復が見込めない、又は子機1X（X=1,2,3）のいずれかの操作者がゲームを止めたとみなし得るような時間Ｔe1（例えば、１０〜１５秒）が経過するまでは、１回前に確認された操作入力データまでのゲーム進行状態で停止させた状態で未受信の子機パケットを待つ。
【００３０】
従って、親機10においては、子機パケットP1,P2,P3が各タイムスロット内に受信できていれば通常どおりゲームを進行させることができ、たとえいずれかの子機パケットP1,P2,P3の受信がタイムスロットから遅延したとしても、それが親機パケットP0の送信時点から時間Ｔe1以内であれば、一旦ゲームの進行は停止するが、その停止していた状態から再びゲームが進行せしめられる（S2〜S15→S2）。
尚、前記時間Ｔe1を経過するとゲームの再開が望めない状況にあるとみなし、プロセッサ30は親機パケットP0のPayloadにゲーム終了コードをセットして送信した後、タイマ37のカウントを停止させる（S12→S16,S17）。
また、ゲーム開始時において操作入力データD0(1)をＷＲＡＭ34に最初にセーブさせた段階では、親機10についても子機1X（X=1,2,3）についても前回の操作入力データは存在しておらず、その場合にはそれぞれをNullデータとして扱う。
【００３１】
ところで、図３のフローチャートでは親機パケットP0の送信（S4）の前に自機の操作入力データを確認してＷＲＡＭ34にセーブさせるようになっているが（S2,S3）、それらの手順は必ずしもその時点で行う必要はなく、図３ａに示すように、各子機パケットP1,P2,P3を受信してＷＲＡＭ34にセーブした後に行わせてもよい（＊S2,＊S3）。
【００３２】
次に、図４は各子機1X（X=1,2,3）の動作手順を表している。先ず、エントリー要求等のセッションによって親機10とのリンクが確立し、所定のゲーム開始処理手順が完了すると、プロセッサ30'は自機の操作部48'からの入力データを確認する（S21,S22）。
そして、プロセッサ30'はその入力データDX(1)をＷＲＡＭ34'の所定アドレスにセーブさせるが（S23）、子機1X（X=1,2,3）の場合についても、前記の親機10の場合と同様に、既にゲームがある程度進行した状態について説明する。
前記のように、プロセッサ30'は自機の今回の確認に係る操作入力データDX(n)をＷＲＡＭ34'にセーブさせると共に、無線通信部（41',42',43'）で親機パケットP0が受信されるか否かを監視している（S22,S23,S24）。
【００３３】
ところで、上記のように親機10は親機パケットP0を所定周期で送信しており、その送信タイミングが親機10と各子機1X（X=1,2,3）の間での同期基準になっている。
従って、子機1X（X=1,2,3）側において親機パケットP0が所定タイミングで受信できないということは、親機10と各子機1Xとの位置関係や外部要因等により通信不良状態に陥っているか、又は親機10でのデータ処理が膨大になっており所定時間内に処理できない状態になっていることが考えられる。
【００３４】
これに対して、この実施形態の子機1X（X=1,2,3）では親機パケットP0を受信するとプロセッサ30'がタイマ37'をリセットしてカウントを開始させるようになっており、たとえ親機パケットP0がその送信周期よりも長い時間受信できなくても、タイマ37'のカウントが前回の親機パケットP0の受信時から所定時間Ｔe2を経過するまでであれば、親機パケットP0の受信待機状態とし、ゲームの進行を停止して前回の各操作入力データD0(n-2),D1(n-2),D2(n-2),D3(n-2)に基づいた描画・音声出力の処理での表示状態を維持させる（S24→S25,S26→S24）。
【００３５】
そして、この場合の所定時間Ｔe2は少なくとも親機10による親機パケットP0の送信周期より長い時間として任意に設定できるが、この実施形態では、後述するように所定時間Ｔe2以内に親機パケットP0が受信できなかった場合にはゲーム終了コードをセットした子機パケットPXを親機10側へ送信することになっており（S26,S34）、時間Ｔe2が親機パケットP0の送信周期の２倍より短いと１回でも親機パケットP0が受信できなかった場合には直ちにゲームが終了してしまうことから、親機パケットP0の送信周期の６００倍程度に設定しておくのが望ましい。
より具体的には、親機パケットP0の送信周期が１/６０秒（ゲーム機のフレーム周期に相当）であるとすれば、時間Ｔe2は１０sec程度となる。
【００３６】
一方、親機パケットP0が受信されると、前記のとおりプロセッサ30'はタイマ37'をリセットしてカウントを開始させると共に、親機パケットP0のPayloadにセットされている親機10の操作入力データD0(n-1)と自機を含む各子機1X（X=1,2,3）の操作入力データD1(n-1),D2(n-1),D3(n-1)をＷＲＡＭ34'の所定アドレスにセーブさせ、それらのデータD0(n-1), D1(n-1),D2(n-1),D3(n-1)を用いてゲームプログラムに基づく処理を実行する（S24→S27,S28,S29）。
その結果、ゲームプログラムの前記実行に対応した更新描画と音声出力の処理が親機10とほぼ同一のタイミングで行われることになる（S30）。
尚、各子機1X（X=1,2,3）のＷＲＡＭ34'における操作入力データのセーブのためのアドレスは図７に示すような模式的構成で管理されており、親機パケットP0のPayloadのデータと自機の操作入力データとを上書きしながら書き込むようになっている。
【００３７】
また、親機パケットP0の受信後、リセットしてカウントが開始せしめられたタイマ37'のカウントデータを参照しながら各子機1X（X=1,2,3）毎に割り当てられているタイムスロットにおいて自らの子機パケットPXを親機10へ送信するが、その子機パケットPXのPayloadにはその時点でＷＲＡＭ34'にセーブされている自らの操作入力データDX(n)である（S31,S32）。
【００３８】
以降、プロセッサ30'では、再び自機の操作入力データDX(n+1)を確認して、それをＷＲＡＭ34'に上書きセーブさせる動作へ戻り、親機パケットP0がタイマ37'のカウント開始時から所定時間Ｔe2以内に受信できていればステップS22からステップS33までを繰り返し実行する。
尚、親機パケットP0が前記所定時間Ｔe2以内に受信できなかった場合には、前記のとおりプロセッサ30'が子機パケットPXのPayloadにゲーム終了コードをセットして送信させた後、タイマ37'のカウントを停止させる（S26→S34,S35）。
【００３９】
以上のように、この実施形態の通信ゲームシステムによると、親機10と各子機1X（X=1,2,3）との間の通信が不良になった場合には、ゲームの進行を停止させて、親機10と各子機1X（X=1,2,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が受信できないために１回前の親機パケット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）。
【００４１】
尚、親機10では、子機パケットP1,P2,P3の一つでも受信できない状態で、且つタイマ37のカウントが所定時間Ｔe1を超えていなければ、操作入力データ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)による更新描画等の処理であるため、ゲームの進行は停止したままである。
【００４２】
ところで、図４のフローチャートでは親機パケットP0の受信（S24）の前に自機の操作入力データを確認してＷＲＡＭ34'にセーブさせるようになっているが（S22,S23）、それらの手順は必ずしもその時点で行う必要はなく、図４ａに示すように、親機パケットP0を受信してタイマ37'のリセットとカウント開始を行った後に行わせてもよい（＊S22,＊S23）
【産業上の利用可能性】
【００４３】
本発明は、複数の携帯型ゲーム機の内、１機が親機となり、他機が子機となって無線通信により操作入力データを送受信しながらゲームを行う場合の通信ゲームシステムに適用できる。
【図面の簡単な説明】
【００４４】
【図１】実施形態に係る携帯型ゲーム機（無線通信機能搭載）のシステム回路図である。
【図２】複数の携帯型ゲーム機の内の１台が親機となり、他機が子機となって無線通信を行いながらゲームを行っている状態を示す図である。
【図３】親機の動作手順を示すフローチャートである。
【図３ａ】親機の動作手順（図３と自機の操作入力データのセーブ手順の順序が異なる場合）を示すフローチャートである。
【図４】子機の動作手順を示すフローチャートである。
【図４ａ】子機の動作手順（図４と自機の操作入力データのセーブ手順の順序が異なる場合）を示すフローチャートである。
【図５】親機パケットと子機パケットの各構成図である。
【図６】親機のプロセッサが管理するＷＲＡＭのアドレスを模式的に表した図である。
【図７】子機のプロセッサが管理するＷＲＡＭのアドレスを模式的に表した図である。
【符号の説明】
【００４５】
1…ゲーム機、2…カートリッジ、10…親機、11,12,13…子機、30…プロセッサ、31…ＣＰＵコア、32…ブートＲＯＭ、33…ＬＣＤコントローラ、34…ＷＲＡＭ、35…ＶＲＡＭ、36…周辺回路、37…タイマ、41…アンテナ、42…ＲＦ-ＩＣ、43…ベースバンドＩＣ、44,45…ＬＣＤ、46…スピーカ、47…オーディオアンプ、48…アンプ、49…コネクタ、51…ＲＯＭ、52…バックアップＲＡＭ。
【図１】
2010000258.tif 000003
【図２】
2010000258.tif 000004
【図３】
2010000258.tif 000005
【図３ａ】
2010000258.tif 000006
【図４】
2010000258.tif 000007
【図４ａ】
2010000258.tif 000008
【図５】
2010000258.tif 000009
【図６】
2010000258.tif 000010
【図７】
2010000258.tif 000011