(57)【特許請求の範囲】
【請求項１】
操作入力データを送信する少なくとも１つの無線ゲームコントローラと所定の通信周期で無線通信を行うゲーム装置であって、
接続している無線ゲームコントローラ数を監視する監視部と、
設定されている通信周期と、接続している無線ゲームコントローラ数とに応じて、通信周期内で、接続している無線ゲームコントローラ以外の新たな無線ゲームコントローラとの接続を確立するための時間を確保しつつ、通信周期内の残りの時間内で、接続している無線ゲームコントローラのそれぞれが操作入力データを送信できる最大送信回数または最大送信時間を等しく設定する通信制御部と、
無線ゲームコントローラに対してデータ転送要求を送信し、無線ゲームコントローラから送信される操作入力データを受信する無線通信モジュールとを備え、
前記無線通信モジュールは、前記通信制御部で設定した最大送信回数または最大送信時間の範囲内で無線ゲームコントローラから送信された操作入力データの受信に成功すると、同じ通信周期内で、その無線ゲームコントローラに対して操作入力データの転送要求の送信を停止することを特徴とするゲーム装置。
【請求項２】
前記通信制御部は、通信周期内で、接続している無線ゲームコントローラが操作入力データを送信できる時間帯以外の時間を確保しつつ、無線ゲームコントローラによる操作入力データの最大送信回数または最大送信時間を設定することを特徴とする請求項１に記載のゲーム装置。
【請求項３】
前記通信制御部は、通信周期内で、接続している無線ゲームコントローラとは異なる通信方式による通信を行う端末と通信する時間を確保しつつ、無線ゲームコントローラによる操作入力データの最大送信回数または最大送信時間を設定することを特徴とする請求項１または２に記載のゲーム装置。
【請求項４】
前記通信制御部は、接続している無線ゲームコントローラ数に増減があった場合には、最大送信回数または最大送信時間を再設定することを特徴とする請求項１から３のいずれかに記載のゲーム装置。
【請求項５】
ゲーム装置と少なくとも１つの無線ゲームコントローラとが所定の通信周期で無線通信を行うゲームシステムであって、
無線ゲームコントローラは、ゲーム装置からのデータ転送要求に応じて操作入力データを送信する機能を有し、
ゲーム装置は、
接続している無線ゲームコントローラ数を監視する監視部と、
設定されている通信周期と、接続している無線ゲームコントローラ数とに応じて、通信周期内で、接続している無線ゲームコントローラ以外の新たな無線ゲームコントローラとの接続を確立するための時間を確保しつつ、通信周期内の残りの時間内で、接続している無線ゲームコントローラのそれぞれが操作入力データを送信できる最大送信回数または最大送信時間を等しく設定する通信制御部と、
無線ゲームコントローラに対してデータ転送要求を送信し、無線ゲームコントローラから送信される操作入力データを受信する無線通信モジュールとを有し、
前記無線通信モジュールは、前記通信制御部で設定した最大送信回数または最大送信時間の範囲内で無線ゲームコントローラから送信された操作入力データの受信に成功すると、同じ通信周期内で、その無線ゲームコントローラに対して操作入力データの転送要求の送信を停止する
ことを特徴とするゲームシステム。
【請求項６】
前記通信制御部は、通信周期内で、接続している無線ゲームコントローラが操作入力データを送信できる時間帯以外の時間を確保しつつ、無線ゲームコントローラによる操作入力データの最大送信回数または最大送信時間を設定することを特徴とする請求項５に記載のゲームシステム。
【請求項７】
ゲーム装置と無線通信を行う無線ゲームコントローラであって、無線通信モジュールと処理モジュールとを備え、
前記無線通信モジュールは、
送信するデータを保持する送信バッファと、
前記ゲーム装置により通信周期と、通信周期内のデータの最大送信回数または最大送信時間を設定され、前記ゲーム装置からデータ転送要求を受信すると、設定された最大送信回数または最大送信時間の範囲内で、前記送信バッファに保持されたデータを送信する無線通信部と、を有し、
前記処理モジュールは、
ユーザがゲーム操作を行う操作入力部と、
前記操作入力部から入力された操作入力データを保持する入力バッファと、
前記無線通信部による操作入力データの送信間隔よりも高速なサンプリング速度で前記操作入力部の操作入力を監視して、ユーザからゲーム操作が行われた場合に、操作入力データを前記入力バッファに上書きする制御部と、を有し、
前記無線通信部は、前記ゲーム装置からデータ転送要求を受信すると前記制御部に対して操作入力データの出力要求を供給し、
前記制御部は、出力要求を受けると、前記入力バッファに保持する操作入力データを送信バッファに供給して、
前記無線通信部が、前記入力バッファから前記送信バッファに供給された操作入力データを前記ゲーム装置に送信する無線ゲームコントローラであって、
前記無線通信部が、同じ通信周期内に前記ゲーム装置からデータの再送要求を受信した場合に、前記無線通信部は、前記制御部に対して出力要求を再供給し、再供給された出力要求に応じて前記入力バッファから前記送信バッファに供給される操作入力データを前記ゲーム装置に再送することを特徴とする無線ゲームコントローラ。
【請求項８】
操作入力データを送信する少なくとも１つの無線ゲームコントローラと所定の通信周期で無線通信を行わせるコンピュータに、
接続している無線ゲームコントローラ数を監視する機能と、
設定されている通信周期と、接続している無線ゲームコントローラ数とに応じて、通信周期内で、接続している無線ゲームコントローラ以外の新たな無線ゲームコントローラとの接続を確立するための時間を確保しつつ、通信周期内の残りの時間内で、それぞれの無線ゲームコントローラが操作入力データを送信できる最大送信回数または最大送信時間を等しく設定する機能と、
無線ゲームコントローラに対してデータ転送要求を送信する機能と、
無線ゲームコントローラから送信される操作入力データを受信する機能と、を実現させるためのプログラムであって、
さらに前記コンピュータに、設定した最大送信回数または最大送信時間の範囲内で無線ゲームコントローラから送信された操作入力データの受信に成功すると、同じ通信周期内で、その無線ゲームコントローラに対して操作入力データの転送要求の送信を停止する機能を実現させるためのプログラム。
【請求項９】
最大送信回数または最大送信時間を設定する機能は、通信周期内で、接続している無線ゲームコントローラが操作入力データを送信できる時間帯以外の時間を確保しつつ、無線ゲームコントローラによる操作入力データの最大送信回数または最大送信時間を設定する機能を含むことを特徴とする請求項８に記載のプログラム。
【請求項１０】
データを送信する少なくとも１つの子局と所定の通信周期で無線通信を行う通信装置であって、
接続している子局数を監視する監視部と、
設定されている通信周期と、接続している子局数とに応じて、通信周期内で、接続している子局以外の新たな子局との接続を確立するための時間を確保しつつ、通信周期内の残りの時間内で、接続している子局のそれぞれがデータを送信できる最大送信回数または最大送信時間を等しく設定する通信制御部と、
子局に対してデータ転送要求を送信し、子局から送信されるデータを受信する無線通信モジュールとを備え、
前記無線通信モジュールは、前記通信制御部で設定した最大送信回数または最大送信時間の範囲内で子局から送信されたデータの受信に成功すると、同じ通信周期内で、その子局に対してデータの転送要求の送信を停止することを特徴とする通信装置。
【請求項１１】
前記通信制御部は、通信周期内で、接続している子局がデータを送信できる時間帯以外の時間を確保しつつ、子局によるデータの最大送信回数または最大送信時間を設定することを特徴とする請求項１０に記載の通信装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信技術に関し、とくに親局と子局との間で無線通信を実現する技術に関する。
【背景技術】
【０００２】
ゲーム装置とゲームコントローラはケーブルにより接続されるのが一般的であったが、近年、ゲーム装置とゲームコントローラとを無線接続するゲームシステムが提案されるようになった。無線ゲームコントローラを採用することで、ユーザは自由な姿勢でゲームを楽しむことができる。
【特許文献１】特許３５８１１１８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
ゲームシステムでは、ゲームコントローラからの操作入力データをゲームの画面出力に反映させるために、操作入力データは、所定の通信周期でゲームコントローラからゲーム装置に送信される必要がある。特に、操作入力データをフレーム画像に逐次反映させるためには、操作入力データが、ゲーム画像のフレーム周期よりも短い周期でゲームコントローラから送信される必要がある。また、ゲームに参加する複数のゲームコントローラが存在する場合、全てのゲームコントローラからの操作入力データが所定の通信周期でゲーム装置に送信される必要もある。
【０００４】
無線通信は、有線通信と比較すると周辺環境の影響を受けやすく、相対的にデータ送信を失敗する可能性が高いため、無線ゲームコントローラを採用する場合には、データ送信の確実性をできるだけ高めることが好ましい。さらに、無線ゲームコントローラはバッテリ駆動であるため、電力消費を抑えることも必要である。
【０００５】
そこで本発明の目的は、親局と子局との間で効率的に無線通信を実現する技術を提供することにある。
【課題を解決するための手段】
【０００６】
上記課題を解決するために、本発明のある態様の通信装置は、複数の子局と所定の通信周期で無線通信を行う通信装置であって、接続している子局数に応じて、それぞれの子局によるデータの最大送信回数または通信可能時間を設定する。
【０００７】
本発明の別の態様は、ゲーム装置と所定の通信周期で無線通信を行う無線ゲームコントローラである。この無線ゲームコントローラは、同じ通信周期内で再送処理を行う際、最新データを保持するバッファから操作入力データを再度読み出して送信する。
【０００８】
なお、以上の構成要素の任意の組合せ、本発明の表現を方法、装置、システム、記録媒体、コンピュータプログラムなどの間で変換したものもまた、本発明の態様として有効である。
【発明の効果】
【０００９】
本発明によれば、親局と子局との間で効率的に無線通信を実現できる。
【発明を実施するための最良の形態】
【００１０】
図１は、本発明の実施例にかかるゲームシステム１の全体構成を示す。本実施例のゲームシステム１は、ゲーム装置１０、出力装置１２および無線ゲームコントローラ２０ａ、２０ｂ、２０ｃ（以下、総称する場合は、「無線ゲームコントローラ２０」と呼ぶ）を備える。なお図１には３台の無線ゲームコントローラ２０を示しているが、無線ゲームコントローラ２０の台数を、３台に限定する意図ではない。
【００１１】
無線ゲームコントローラ２０は、ユーザが操作入力を行うための操作入力装置であり、またゲーム装置１０は、無線ゲームコントローラ２０における操作入力をもとにゲームアプリケーションを処理して、ゲームアプリケーションの処理結果を示す画像信号および音声信号を生成する処理装置である。なお、本実施例に示す技術は、ゲームアプリケーションに限らず、他の種類のアプリケーションを実行する処理装置を備えたエンタテインメントシステムにおいても実現できる。以下では、エンタテインメントシステムを代表して、ゲームアプリケーションを実行するゲームシステム１について説明する。
【００１２】
出力装置１２は、画像表示装置１４および音声出力装置１６を有する。画像表示装置１４は画像信号を出力するディスプレイであって、ゲーム装置１０からケーブル１８を介して画像信号を受けとり、ゲーム画面を表示する。音声出力装置１６は音声を出力するスピーカであって、ゲーム装置１０からケーブル１８を介して音声信号を受けとり、ゲーム音声を出力する。
【００１３】
図１に示すゲームシステム１では、ゲーム装置１０と出力装置１２とがケーブル１８により有線接続されているが、無線により接続されてもよい。たとえばゲーム装置１０と出力装置１２との間には、ワイヤレスＬＡＮなどで構築したホームネットワークが構築されてもよい。ゲーム装置１０と出力装置１２とが無線接続される場合には、ケーブル１８で有線接続する場合と比べてゲーム装置１０と出力装置１２を比較的自由に設置できるため、ユーザがロケーションフリーでゲームを楽しむことができる。
【００１４】
無線ゲームコントローラ２０は、ユーザによる操作入力をゲーム装置１０に無線伝送する無線通信端末である。無線ゲームコントローラ２０とゲーム装置１０は、Bluetooth（ブルートゥース）（登録商標）プロトコルを用いて無線通信を行う。ゲーム装置１０は、複数の無線ゲームコントローラ２０との無線通信を可能とし、すなわちゲームシステム１において、ゲーム装置１０と無線ゲームコントローラ２０の１対Ｎ接続を実現できる。ゲーム装置１０は親局すなわちマスタとして機能し、無線ゲームコントローラ２０は子局すなわちスレーブとして機能する。
【００１５】
無線ゲームコントローラ２０は、バッテリにより駆動され、ゲームを進行させる操作入力を行うための複数のボタンやキーを有して構成される。ユーザが無線ゲームコントローラ２０のボタンやキーを操作すると、その操作入力データが無線によりゲーム装置１０に送信される。ゲーム装置１０は、無線ゲームコントローラ２０からゲームアプリケーションに関する操作入力データを受信し、操作入力データに応じてゲーム進行を制御して、ゲーム画像信号およびゲーム音声信号を生成する。生成されたゲーム画像信号およびゲーム音声信号は、それぞれ画像表示装置１４および音声出力装置１６により出力される。
【００１６】
図２は、Bluetoothの状態遷移図を示す。図示のように、Bluetooth端末の状態は、待ち受けフェーズ、同期確立フェーズ、通信接続フェーズ、低消費電力モードに分けることができる。
【００１７】
スレーブの電源投入直後や通信リンクを切断した場合、スレーブは「待ち受け」状態に入る。「待ち受け」状態では、データの送受信は行われない。
【００１８】
同期確立フェーズにおいては、マスタが、周辺のスレーブに対して接続照会すなわち「問い合わせ」を行う状態と、マスタがスレーブを認識して「呼び出し」を行う状態とがある。「問い合わせ」状態では、マスタが、近くにいる端末機器に対してＩＱ（問い合わせ）パケットをブロードキャストする。ＩＱパケットを受信したスレーブは、Bluetoothアドレスとクロック情報を含むＦＨＳ（Frequency Hop Synchronization）パケットをマスタに返信する。この時点における送受信では、周波数ホッピングパターンに関する同意がマスタとスレーブとの間で確立していないので、問い合わせ専用に定義された固定ホッピングパターンが用いられる。
【００１９】
「呼び出し」状態では、マスタがスレーブからＦＨＳパケットを受け取り、どのようなスレーブが存在するかを把握した後、特定のスレーブに対してＩＤパケットを送信する。特定のスレーブからＩＤパケットに対する応答が返ると、マスタはＦＨＳパケットをスレーブに送信し、クロックとスレーブ識別子をスレーブに知らせる。スレーブ識別子は、スレーブに割り振られる３ビットのアドレス（１〜７）であり、AM_ADDR（アクティブメンバーアドレス）と呼ばれる。これにより、マスタとスレーブは、同一のホッピングパターンを共有できるようになる。
【００２０】
「呼び出し」を行うと、スレーブとマスタとの間にピコネットが形成され、「接続」状態に入る。ピコネットとは、Bluetooth端末同士を近づけたときに、端末の間で一時的に形成されるネットワークを意味し、最大で８台のBluetooth端末が１つのピコネットに参加することができる。ピコネットの同期を維持するために、スレーブは、自身のクロックを、マスタのクロックとの差分だけオフセットする。１つのピコネットにおいて、マスタは親局として機能し、最大７台のスレーブと接続することが可能である。「接続」状態になると、通信リンク設定のための制御パケットが送受信され、「アクティブモード」でのデータ転送が可能となる。アクティブモードの場合、スレーブは基本的にマスタからの伝送をつねに監視している。アクティブ状態では、つねにパケットを送受信する態勢を維持しなければならないため、電力消費は最大となる。データ転送が完了して通信リンクが切断されると、スレーブは待ち受け状態に戻る。
【００２１】
接続を確立した状態には、「アクティブモード」だけでなく、「パークモード」、「ホールドモード」および「スニフモード」のモードがある。スレーブは、「アクティブモード」から「パークモード」、「ホールドモード」および「スニフモード」の３種類の低消費電力モードに移行することが可能である。またマスタは、「アクティブモード」から「ホールドモード」に移行することが可能である。
【００２２】
「パークモード」のスレーブは、ピコネットへの同期、つまりホッピングパターンとマスタクロックへの同期を維持している。ただし、マスタとパケットを交換することはできない。この状態にあるスレーブは、一定時間間隔（ビーコン周期）でマスタからのデータを受信しており、必要があればすぐにピコネットへ参加できる。パークモードでは、マスタから割り振られたスレーブ識別子（AM_ADDR）、つまり接続中のスレーブに与えられる３ビットのアドレス（１〜７）をいったんマスタに返却する。したがって、スレーブがピコネットへの再参加を希望しても、スレーブ識別子に空きがなければ、すぐに加わることができない。逆に、マスタは、パークモードに入るスレーブに、８ビットのパークスレーブ識別子を与える。マスタは、最大２５５台のパーク中の端末機器を管理することができ、必要なスレーブだけを随時ピコネットに参加させることが可能である。
【００２３】
「ホールドモード」のスレーブおよびマスタは、ピコネットに同期したまま、設定された一定時間（ホールド時間）中は送受信を行わず、ホールド時間後に通信を再開する。
【００２４】
「スニフモード」のスレーブは、ピコネットへの同期は維持している。スニフモードに入るためには、マスタとスレーブは、スニフ周期（SI : Sniff Interval）とスニフオフセットを交渉により決定する。パケットの送受信は、スニフ周期中に複数のタイムスロットで構成されるスニフスロットのみにおいて可能となり、スレーブは、そのほかの時間、電力消費を抑えることができる。スニフオフセットは、スニフスロットの最初のタイムスロットのタイミングを定める。
【００２５】
スニフスロットは、スニフアテンプト（SA : Sniff Attempt）パラメータにより設定される。スニフアテンプトパラメータＮＳＡは、スレーブがマスタから自分宛のパケット送信を受け付けるためのタイムスロット数を決定するパラメータである。スレーブは、スニフアテンプトパラメータＮＳＡにより特定されるスニフスロットの間、マスタからのパケットを監視する。たとえば、ＮＳＡ＝３であれば、スニフ周期のなかの所定の６タイムスロットの間、スレーブが、自分宛のパケットを監視して、返信することができる。自分宛のパケットであるか否かは、パケット中のAM_ADDRをもとに判定される。
【００２６】
無線ゲームコントローラ２０はバッテリ駆動であるため、電力消費は可能な限り抑えることが好ましい。そのため、無線ゲームコントローラ２０はスニフモードにより動作することが好ましい。複数の無線ゲームコントローラ２０が存在する場合、それぞれのスニフ周期が共通に設定され、また、複数の無線ゲームコントローラ２０とゲーム装置１０の間の通信が時間的に重ならないように、それぞれのスニフオフセットが設定される。これにより時分割多重方式による通信を実現できる。
【００２７】
本実施例のゲームシステム１においては、ゲーム装置１０がページスキャンを実行している間に、無線ゲームコントローラ２０が呼び出し処理を実行する。これにより無線ゲームコントローラ２０は、ゲーム装置１０を呼び出して、アクティブモードで接続する。このとき、無線ゲームコントローラ２０がマスタであり、ゲーム装置１０がスレーブである。その後、マスタとスレーブの役割をスイッチし、ゲーム装置１０がマスタとなり、無線ゲームコントローラ２０がスレーブとなる。この状態で、無線ゲームコントローラ２０がゲーム装置１０に対してスニフモードでの接続を要求すると、ゲーム装置１０が、無線ゲームコントローラ２０に必要なパラメータを通知して、スニフモードで接続する。
【００２８】
ゲーム装置１０は、スニフ周期と、ピコネットを形成して接続しているゲームコントローラ数とに応じて、それぞれの無線ゲームコントローラ２０が操作入力データを送信できる最大送信回数を設定する。この最大送信回数は、スニフアテンプトパラメータＮＳＡにより決定され、たとえば、ＮＳＡ＝３であれば、無線ゲームコントローラ２０によるデータ送信が最大で３回許容される。本実施例において「最大送信回数」とは、１通信周期内で付与される送信機会の最大回数を意味する。
【００２９】
スニフスロットにおいて、無線ゲームコントローラ２０からゲーム装置１０へのデータ送信が１回成功すると、ゲーム装置１０は、同一のスニフスロット中に無線ゲームコントローラ２０に対してデータ転送要求を送信せず、したがって無線ゲームコントローラ２０は、残りのスニフスロット期間のデータ送信を行わない。たとえば６タイムスロットのスニフスロットが設定されている場合（ＮＳＡ＝３）、良好な無線環境であれば、最初の２タイムスロットでデータ送信に成功し、残りの４タイムスロットでは、データ送信を行わないことになる。一方、最初の２タイムスロットでデータ送信に失敗すれば、残りの４タイムスロットを、データ再送処理に利用できる。なお、本実施例における「データ再送処理」とは、最初の２タイムスロットでデータ送信に失敗したスニフスロットにおいて、後続するタイムスロットでデータを送信することを意味し、そのときに送信するデータが、送信に失敗したデータと同一である必要はない。また、最初の２タイムスロットでデータ送信に失敗する場合には、無線ゲームコントローラ２０が送信したデータに異常があり、また無線ゲームコントローラ２０が送信したデータをゲーム装置１０が受信できなかった場合だけでなく、無線ゲームコントローラ２０がデータそのものを送信できなかった場合も含む。なお、ゲーム装置１０は、通信周期内で、接続している無線ゲームコントローラ２０以外の新たな無線ゲームコントローラ２０との接続を確立するための時間を確保しながら、接続している無線ゲームコントローラ２０の最大送信回数を決定する。
【００３０】
ピコネットオペレーションの間、６２５μ秒ごとに新しい周波数が選択される周波数ホッピング処理が実行されており、１つのタイムスロットは６２５μ秒の長さをもつ。ゲームシステム１では、ゲームアプリケーションの処理結果を、６０フレーム／秒（＝１６．７ｍ秒）の画像表示装置１４の出力に反映する。そのためゲーム装置１０は、無線ゲームコントローラ２０からの操作入力データを、１６．７ｍ秒よりも短い周期で受信することが好ましい。これにより、画像表示装置１４は、ユーザの操作入力データをリアルタイムに画像表示装置１４および音声出力装置１６の出力に反映することができる。
【００３１】
以上の理由から、ゲーム装置１０は、スニフ周期を１１．２５ｍ秒に設定する。このスニフ周期は、１８タイムスロット分の時間（６２５μ秒×１８）に相当する。ゲームシステム１に複数の無線ゲームコントローラ２０が存在する場合、スニフ周期は共通に設定され、したがって、すべての無線ゲームコントローラ２０が、１１．２５ｍ秒のスニフ周期でゲーム装置１０と無線通信を行う。なおスニフ周期は、１６．７ｍ秒以下であれば、１１．２５ｍ秒以外の時間であってよい。
【００３２】
図３は、本実施例におけるタイムスロットの割当てを示す。図３（ａ）は、タイムスロットを模式化して示し、スニフ周期ＳＩが１１．２５ｍ秒に設定されている。本来、スニフ周期は、ゲーム装置１０と各無線ゲームコントローラ２０との間で個別に設定され、それぞれの無線ゲームコントローラ２０による無線通信を制御するために利用される。
【００３３】
一方、本実施例においては、ゲーム装置１０が、接続中の全ての無線ゲームコントローラ２０に対してスニフ周期とスニフアテンプトパラメータＮＳＡとを共通に設定する。ゲーム装置１０は、それぞれの無線ゲームコントローラ２０に割り当てるスニフスロットが時間軸上で重ならないように、それぞれのスニフオフセットを設定する。このように、ゲーム装置１０が、接続中の無線ゲームコントローラ２０との通信可能期間を統一的に管理して、適切にスケジューリングすることで、タイムスロットの効率的な利用を実現している。以下では、図３（ａ）に示すように、タイムスロット０でスニフ周期が開始し、タイムスロット１７で終了するものとして説明する。
【００３４】
図３（ｂ）〜図３（ｅ）は、無線ゲームコントローラ２０に割り当てられたスニフスロットを示す。スニフスロットのスロット数は、スニフアテンプトパラメータＮＳＡにより定められ、スニフスロットの開始時期は、スニフオフセットにより定められる。
【００３５】
図３（ｂ）〜図３（ｅ）に示す数字は、無線ゲームコントローラ２０に設定されたスレーブ識別子を表現し、数字が付されたタイムスロットは、そのスレーブ識別子をもつ無線ゲームコントローラ２０のスニフスロットを示す。Bluetooth通信では、ゲーム装置１０から特定の無線ゲームコントローラ２０に対してデータ転送要求を送り、無線ゲームコントローラ２０が、それに応答してデータ転送を行う。このように、２つのタイムスロットで１回のデータ転送を行うことができるため、図３（ｂ）〜図３（ｅ）では、２タイムスロットを１回の通信時間として示している。
【００３６】
また、Bluetooth通信において、呼び出し処理には、大体６タイムスロット（３．７５ｍ秒）が必要であることが分かっている。そのためゲーム装置１０は、スニフ周期において、少なくとも６タイムスロットをページスキャン用に確保し、残りの１２タイムスロットを、スニフスロットに割り当てる。上記したように、ゲーム装置１０と新たな無線ゲームコントローラ２０とが接続する際には、ゲーム装置１０がスレーブとしてページスキャンを実行し、無線ゲームコントローラ２０がマスタとして呼び出し処理を実行する。
【００３７】
図３（ｂ）は、ゲームシステム１に１台の無線ゲームコントローラ２０が存在するときのタイムスロットの割当てを示す。無線ゲームコントローラ２０の台数が１台のとき、スニフアテンプトパラメータＮＳＡは４であり、したがってスニフスロットは８タイムスロットに設定される。この無線ゲームコントローラ２０は、最初の２タイムスロットで、操作入力データの転送を行う。理想的には、タイムスロット０でゲーム装置１０が無線ゲームコントローラ２０に対してデータ転送要求を送信し、タイムスロット１で無線ゲームコントローラ２０がゲーム装置１０に対して操作入力データを送信する。ゲーム装置１０は、この操作入力データを受信することで通信を完了する。このように、理想的には２つのタイムスロットで通信が完了するが、データ転送に失敗した場合、以後、最大３回の再送処理が行われる。
【００３８】
たとえば、タイムスロット０で、無線ゲームコントローラ２０がゲーム装置１０からのデータ転送要求を受け取れなかったとき、無線ゲームコントローラ２０は、タイムスロット１で、データ転送を行えない。ゲーム装置１０は、タイムスロット１でデータ受信できないため、タイムスロット２で、再送処理により、再度データ転送要求を送信する。無線ゲームコントローラ２０はデータ転送要求を受け取ると、タイムスロット３でデータ転送を行い、ゲーム装置１０が、転送されたデータを受信する。この場合は、タイムスロット３で通信が完了し、以後、無線ゲームコントローラ２０は、タイムスロット７までゲーム装置１０からの信号を監視し、タイムスロット８で信号の監視を停止して、省電力状態に入る。なお、ゲーム装置１０が、データ受信できなければ、再送処理がタイムスロット７まで繰り返される。タイムスロット７でデータ受信ができなくても、無線ゲームコントローラ２０は、信号の監視を停止して、タイムスロット８で省電力状態に入る。
【００３９】
タイムスロット１で無線ゲームコントローラ２０より転送されたデータにエラーが存在する場合、またはゲーム装置１０が転送データを受信できなかった場合には、ゲーム装置１０は、タイムスロット２で無線ゲームコントローラ２０に対してＮＡＣＫ信号を返信する。このＮＡＣＫ信号は、データが正常に受け取れなかったことを示し、データの再転送を要求する。以後、最長でタイムスロット７まで再送処理が繰り返される。ゲーム装置１０は、無線ゲームコントローラ２０による再送処理により操作入力データの受信に成功すると、その通信周期内で、その無線ゲームコントローラ２０に対して操作入力データの転送要求の送信を停止する。
【００４０】
このように、無線ゲームコントローラ２０の台数が１台のとき、スニフアテンプトパラメータＮＳＡを４に設定することで、最大送信回数が４回に設定されるとともに、ページスキャンを実行するための６タイムスロット（３．７５ｍ秒）も確保できる。図３（ｂ）の例では、１０タイムスロット（６．２５ｍ秒）が確保されている。
【００４１】
図３（ｃ）は、ゲームシステム１に２台の無線ゲームコントローラ２０が存在するときのタイムスロットの割当てを示す。無線ゲームコントローラ２０の台数が２台のとき、スニフアテンプトパラメータＮＳＡは３であり、したがってスニフスロットは６タイムスロットに設定される。
【００４２】
スレーブ識別子１の無線ゲームコントローラ２０のスニフスロットは、タイムスロット０〜５に割り当てられ、スレーブ識別子２の無線ゲームコントローラ２０のスニフスロットは、タイムスロット６〜１１に割り当てられる。無線ゲームコントローラ２０の台数が２台のとき、スニフアテンプトパラメータＮＳＡを３に設定することで、最大送信回数が３回に設定されるとともに、ページスキャンを実行するための６タイムスロット（３．７５ｍ秒）も確保できる。
【００４３】
図３（ｄ）は、ゲームシステム１に３台の無線ゲームコントローラ２０が存在するときのタイムスロットの割当てを示す。無線ゲームコントローラ２０の台数が３台のとき、スニフアテンプトパラメータＮＳＡは２であり、したがってスニフスロットは４タイムスロットに設定される。
【００４４】
スレーブ識別子１の無線ゲームコントローラ２０のスニフスロットは、タイムスロット０〜３に割り当てられ、スレーブ識別子２の無線ゲームコントローラ２０のスニフスロットは、タイムスロット４〜７に割り当てられ、スレーブ識別子３の無線ゲームコントローラ２０のスニフスロットは、タイムスロット８〜１１に割り当てられる。無線ゲームコントローラ２０の台数が３台のとき、スニフアテンプトパラメータＮＳＡを２に設定することで、最大送信回数が２回に設定されるとともに、ページスキャンを実行するための６タイムスロット（３．７５ｍ秒）も確保できる。
【００４５】
なお、ゲームシステム１に４台以上の無線ゲームコントローラ２０が存在するとき、１１．２５ｍ秒のスニフ周期では、最大送信回数を１回に設定し、再送処理を許容しない。たとえば、４台の場合に最大送信回数を２回に設定すると、通信時間として１６タイムスロット（＝４タイムスロット×４台）が必要である。このとき、ページスキャンに割り当てるタイムスロット数は２となり、ページスキャンを実行できない。なお、この場合であっても、新たな無線ゲームコントローラ２０が接続する可能性がないゲームアプリケーションであれば、１回の再送を許容してもよい。
【００４６】
５台以上の場合に最大送信回数を２回に設定すると、通信時間自体がスニフ周期に収まらない。そのため、無線ゲームコントローラ２０の台数が４台以上のときは、スニフアテンプトパラメータＮＳＡを１に設定し、したがってスニフスロットは２タイムスロットに設定される。
【００４７】
図３（ｅ）は、ゲームシステム１に６台の無線ゲームコントローラ２０が存在するときのタイムスロットの割当てを示す。スレーブ識別子１の無線ゲームコントローラ２０のスニフスロットは、タイムスロット０〜１に割り当てられ、スレーブ識別子２の無線ゲームコントローラ２０のスニフスロットは、タイムスロット２〜３に割り当てられ、スレーブ識別子３の無線ゲームコントローラ２０のスニフスロットは、タイムスロット４〜５に割り当てられ、スレーブ識別子４の無線ゲームコントローラ２０のスニフスロットは、タイムスロット６〜７に割り当てられ、スレーブ識別子５の無線ゲームコントローラ２０のスニフスロットは、タイムスロット８〜９に割り当てられ、スレーブ識別子６の無線ゲームコントローラ２０のスニフスロットは、タイムスロット１０〜１１に割り当てられる。無線ゲームコントローラ２０の台数が６台のとき、スニフアテンプトパラメータＮＳＡを１に設定することで、最大送信回数が１回に設定されるとともに、ページスキャンを実行するための６タイムスロット（３．７５ｍ秒）も確保できる。
【００４８】
なお、ゲーム装置１０に最大で接続できる無線ゲームコントローラ２０の台数は７台であるため、７台が接続したときには、ページスキャンを実行するためのタイムスロットを用意しなくてもよい。
【００４９】
図４は、ゲーム装置１０の構成を示す。ゲーム装置１０は、無線通信モジュール４０、監視部４２、通信制御部４４、アプリケーション処理部４６および出力部４８を備える。本実施例におけるゲーム装置１０の処理機能は、ＣＰＵ、メモリ、メモリにロードされたプログラムなどによって実現され、ここではそれらの連携によって実現される構成を描いている。プログラムは、ゲーム装置１０に内蔵されていてもよく、また記録媒体に格納された形態で外部から供給されるものであってもよい。したがってこれらの機能ブロックがハードウェアのみ、ソフトウェアのみ、またはそれらの組合せによっていろいろな形で実現できることは、当業者に理解されるところである。図示の例では、ゲーム装置１０のＣＰＵが、監視部４２、通信制御部４４、アプリケーション処理部４６の機能を実現する。
【００５０】
無線通信モジュール４０は、Bluetoothプロトコルにより、無線ゲームコントローラ２０の無線通信モジュールとの間で無線通信を確立する。無線通信モジュール４０は、ピコネットに接続する無線ゲームコントローラ２０を管理しており、監視部４２は、接続している無線ゲームコントローラ２０の数を監視する。たとえば、監視部４２は、無線通信モジュール４０に対して所定の監視周期でピコネットの接続台数を問い合わせてもよい。また無線通信モジュール４０は、ピコネットの接続台数に変化があると、監視部４２に最新の接続台数を通知してもよい。監視部４２は、ピコネットの接続台数を通信制御部４４に送る。
【００５１】
通信制御部４４は、設定されている通信周期（スニフ周期）と、接続している無線ゲームコントローラ２０の台数とに応じて、それぞれの無線ゲームコントローラ２０との間で、操作入力データの最大送信回数を設定する。スニフ周期は、ゲームシステム１において予め設定されており、無線通信モジュール４０から通信制御部４４に通知される。スニフ周期が１１．２５ｍ秒の場合、接続台数が１台のときには、最大送信回数を４回、２台のときには最大送信回数を３回、３台のときには最大送信回数を２回とし、４台以上のときには最大送信回数を１回に設定する。具体的に、最大送信回数は、スニフアテンプトパラメータにより設定する。ページスキャン用の時間を確保することで、新たな無線ゲームコントローラ２０がピコネットに接続する機会を保証し、ゲームアプリケーションに、新たなユーザが途中参加できるようになる。
【００５２】
本実施例においてスニフ周期は固定であり、通信制御部４４は、接続台数とスニフアテンプトパラメータとを対応付けたテーブルを保持している。
【００５３】
図５は、接続台数とスニフアテンプトパラメータとの対応テーブルを示す。接続台数が１台のときのスニフアテンプトパラメータは４、接続台数が２台のときのスニフアテンプトパラメータは３、接続台数が３台のときのスニフアテンプトパラメータは２、接続台数が４台以上のときのスニフアテンプトパラメータは１に設定される。
【００５４】
通信制御部４４は、監視部４２を通じて、ピコネットに接続している無線ゲームコントローラ２０のスレーブ識別子（AM_ADDR）を取得する。通信制御部４４は、このスレーブ識別子に応じて、各無線ゲームコントローラ２０のスニフオフセットを設定する。図３（ｃ）のタイムスロットを用いて説明する。
【００５５】
たとえば、接続台数が２台のとき、通信制御部４４は、スレーブ識別子１の無線ゲームコントローラ２０ａのスニフオフセットを０にセットする。また、スレーブ識別子２の無線ゲームコントローラ２０ｂのスニフオフセットを、スニフアテンプトパラメータにしたがって６にセットする。これにより、スレーブ識別子１の無線ゲームコントローラ２０ａのスニフスロットをタイムスロット０から５、スレーブ識別子２の無線ゲームコントローラ２０ｂのスニフスロットをタイムスロット６から１１に設定できる。各無線ゲームコントローラ２０のスニフオフセットおよびスニフスロットは、無線通信モジュール４０に伝達される。
【００５６】
無線通信モジュール４０は、このスニフオフセットおよびスニフスロット、スニフ周期を無線ゲームコントローラ２０に通知する。これにより、各無線ゲームコントローラ２０は、ゲーム装置１０からのパケットを監視するスニフスロットを把握でき、スニフスロット以外の時間を省電力状態とすることができる。
【００５７】
無線通信モジュール４０は、無線ゲームコントローラ２０に対してデータ転送要求を送信し、そのデータ転送要求に応じて無線ゲームコントローラ２０から送信される操作入力データを受信する。無線通信モジュール４０は、ある無線ゲームコントローラ２０のスニフスロットにおいて、無線ゲームコントローラ２０から送信された操作入力データの受信に成功すると、同じスニフスロット内では、その無線ゲームコントローラ２０に対して操作入力データの転送要求の送信を停止する。これにより、無線ゲームコントローラ２０は同じスニフスロット内でデータを再送しないですむため、電力消費を抑えることができる。一方、無線ゲームコントローラ２０からの操作入力データの受信に失敗すると、同じスニフスロット内で、その無線ゲームコントローラ２０に対して操作入力データの転送要求を送信する。これにより、無線ゲームコントローラ２０は、操作入力データの再送処理を行うことができる。
【００５８】
図６は、無線ゲームコントローラ２０の構成を示す。無線ゲームコントローラ２０は、無線通信モジュール６０および処理モジュール７０を備える。無線通信モジュール６０は、無線通信部６２、送信バッファ６４を有し、処理モジュール７０は、操作入力部７２、制御部７４、入力バッファ７６を有する。無線通信部６２は、出力要求部６５、信号解析部６６、送受信部６７を有する。
【００５９】
処理モジュール７０において、操作入力部７２は、無線ゲームコントローラ筐体に設けられた方向キー、アナログスティックや、操作ボタンなどにより構成される。ユーザは、操作入力部７２を操作することで、ゲームアプリケーションに対する操作入力を行う。入力バッファ７６は、操作入力部７２から入力された操作入力データを保持する。制御部７４は、操作入力部７２の入力情報を所定のサンプリング速度で監視しており、ユーザからゲーム操作が行われた場合に、入力バッファ７６に最新の操作入力データを上書きする。
【００６０】
無線通信モジュール６０において、送信バッファ６４は、送信するデータを保持する。送受信部６７は、ゲーム装置１０によりスニフ周期とスニフアテンプトパラメータＮＳＡとを設定される。これによりスニフ周期内のデータの最大送信回数が定められ、送受信部６７は、この最大送信回数に基づいて再送処理を実行することが可能となる。送受信部６７は、ゲーム装置１０からデータ転送要求を受信すると、設定された最大送信回数の範囲内で、送信バッファ６４に保持されたデータを送信する。
【００６１】
具体的に、送受信部６７で受信したパケット信号は信号解析部６６に供給され、信号解析部６６は、パケット中のAM_ADDRを参照して、受信パケット信号が自分宛の信号であるか否かを判別する。自分宛の信号である場合、信号解析部６６は、その信号がデータ転送要求であるか否かを判断し、データ転送要求である場合には、出力要求部６５に操作入力データの出力要求の生成を指示する。出力要求部６５は、その生成指示を受けると、操作入力データの出力要求を生成して、制御部７４に供給する。
【００６２】
制御部７４は、出力要求を受けると、入力バッファ７６に記憶されている最新の操作入力データを送信バッファ６４に送る。送信バッファ６４では、入力バッファ７６から供給された最新の操作入力データが上書きされて記憶される。送受信部６７は、次のタイムスロットで、送信バッファ６４に記憶された操作入力データを読み出して、送信する。
【００６３】
送受信部６７が、ゲーム装置１０への操作入力データの送信に失敗して、同じスニフ周期内にゲーム装置１０からデータの再送要求を受信すると、上記した手順により出力要求部６５が、制御部７４に対して出力要求を再供給する。制御部７４は、再供給された出力要求に応じて入力バッファ７６から送信バッファ６４に操作入力データを供給する。送受信部６７は、このようにして同一スニフ周期内で送信バッファ６４に再供給された操作入力データをゲーム装置１０に再送する。
【００６４】
制御部７４は、送受信部６７による操作入力データのゲーム装置１０への送信間隔よりも高速なサンプリング速度で操作入力部７２の操作入力を監視し、操作入力があれば、入力バッファ７６に上書きしていく。これにより、入力バッファ７６において、失敗したデータ転送における操作入力データが、再送時には新たな操作入力データに変更されている可能性もある。このように、送信バッファ６４に既に保持されている操作入力データを再送するのではなく、入力バッファ７６に保持されている最新の操作入力データを再送することで、ユーザの操作入力をリアルタイムにゲームアプリケーションの処理に反映できる。
【００６５】
無線ゲームコントローラ２０から送信された操作入力データは、無線通信モジュール４０にて受信されるとアプリケーション処理部４６に供給される。アプリケーション処理部４６は、ユーザによる操作入力データをもとにゲームデータを処理し、ゲームのＡＶデータを生成する。ゲームのＡＶデータは、出力部４８より出力装置１２に供給される。これにより、画像表示装置１４および音声出力装置１６から、ユーザのゲーム操作入力を反映した映像および音声が出力されることになる。
【００６６】
図７は、ゲーム装置１０と無線ゲームコントローラ２０の間の接続シーケンスを示す。無線ゲームコントローラ２０ａがマスタとして、ページスキャンを実行しているゲーム装置１０に対してＩＤパケットで呼び出し処理を行う（Ｓ１０）。ゲーム装置１０は、ＩＤパケットを受け取ると、呼び出しを受信したことを通知するＩＤパケットを返信する（Ｓ１２）。無線ゲームコントローラ２０ａは、ゲーム装置１０に、通信の基本情報を含んだＦＨＳパケットを送信する（Ｓ１４）。ゲーム装置１０は、ＦＨＳパケットを受信したことを通知するＩＤパケットを返信し（Ｓ１６）、両者がアクティブモードで接続する（Ｓ１８）。
【００６７】
次に、ゲーム装置１０は、無線ゲームコントローラ２０ａに、マスタとスレーブの役割を切り替えるスイッチ信号を送信する（Ｓ２０）。これにより、ゲーム装置１０がマスタとなり、無線ゲームコントローラ２０ａがスレーブとなる。このときゲーム装置１０は、無線ゲームコントローラ２０ａに、自身がマスタとなるピコネットにおけるスレーブ識別子（AM_ADDR）を設定する。無線ゲームコントローラ２０ａは、ゲーム装置１０に対してスニフモードへの移行要求を送信し（Ｓ２２）、ゲーム装置１０は、無線ゲームコントローラ２０ａに対して、スニフ周期、スニフオフセット、スニフアテンプトパラメータなどを含むパラメータセットを送信する（Ｓ２４）。これにより、両者がスニフモードで接続する（Ｓ２６）。接続台数が１台のとき、最大送信回数は４回に設定される。
【００６８】
このように、１台の無線ゲームコントローラ２０ａがゲーム装置１０とスニフモードで接続している状況において、他の無線ゲームコントローラ２０ｂが、このピコネットに参加するシーケンスを説明する。
【００６９】
無線ゲームコントローラ２０ｂがマスタとして、ページスキャンを実行しているゲーム装置１０に対してＩＤパケットで呼び出し処理を行う（Ｓ３０）。このときゲーム装置１０は、スニフ周期においてスニフスロットが設定されていないタイムスロットで、ページスキャンを実行している。ゲーム装置１０は、ＩＤパケットを受け取ると、呼び出しを受信したことを通知するＩＤパケットを返信する（Ｓ３２）。無線ゲームコントローラ２０ｂは、ゲーム装置１０に、通信の基本情報を含んだＦＨＳパケットを送信する（Ｓ３４）。ゲーム装置１０は、ＦＨＳパケットを受信したことを通知するＩＤパケットを返信し（Ｓ３６）、両者がアクティブモードで接続する（Ｓ３８）。
【００７０】
ゲーム装置１０は、無線ゲームコントローラ２０ｂに、マスタとスレーブの役割を切り替えるスイッチ信号を送信する（Ｓ４０）。これにより、ゲーム装置１０がマスタとなり、無線ゲームコントローラ２０ｂがスレーブとなって、ゲーム装置１０は、無線ゲームコントローラ２０ｂに、自身のピコネットにおけるスレーブ識別子（AM_ADDR）を設定する。したがって、このピコネットには、無線ゲームコントローラ２０ａと２０ｂとがスレーブとして接続していることになる。無線ゲームコントローラ２０ｂは、ゲーム装置１０に対してスニフモードへの移行要求を送信する（Ｓ４２）。ゲーム装置１０は、スニフモードで接続中の無線ゲームコントローラ２０ａに対してモード変更要求を送信する（Ｓ４４）。これにより、ゲーム装置１０と無線ゲームコントローラ２０ａの間の接続は、アクティブモードに戻される（Ｓ４６）。
【００７１】
ゲーム装置１０は、ピコネットに接続している無線ゲームコントローラ２０の台数に応じて、それぞれの無線ゲームコントローラ２０に対するスニフオフセットおよびスニフアテンプトパラメータを設定する。ゲーム装置１０は、無線ゲームコントローラ２０ａに対して、スニフ周期、スニフオフセット、スニフアテンプトパラメータなどを含むパラメータセットを送信し（Ｓ４８）、無線ゲームコントローラ２０ｂに対して、スニフ周期、スニフオフセット、スニフアテンプトパラメータなどを含むパラメータセットを送信する（Ｓ５０）。これにより、ゲーム装置１０と無線ゲームコントローラ２０ａとがスニフモードで再接続し（Ｓ５２）、ゲーム装置１０と無線ゲームコントローラ２０ｂとがスニフモードで接続する（Ｓ５４）。接続台数が２台のとき、最大送信回数は３回に設定される。このように、ゲーム装置１０は、接続している無線ゲームコントローラ２０の数に増減があった場合には、最大送信回数を再設定することができる。この処理は、通信制御部４４により実行される。
【００７２】
図７に示すシーケンス図では、ピコネットに無線ゲームコントローラ２０が参加する場合について示した。ピコネットから無線ゲームコントローラ２０が離脱する場合、無線ゲームコントローラ２０がゲーム装置１０に対してリンク切断要求を送信し、ゲーム装置１０は、その無線ゲームコントローラ２０との通信リンクを切断するとともに、スニフモードで接続中の他の無線ゲームコントローラ２０の接続モードをアクティブモードに設定する。このとき、ゲーム装置１０は、無線ゲームコントローラ２０ごとに、スニフオフセットおよびスニフアテンプトパラメータを再設定し、それぞれに通知して、スニフモードの接続を再開する。
【００７３】
なお、ピコネットにおける無線ゲームコントローラ２０の台数が増減しても、スニフアテンプトパラメータに変更がない場合には、既に形成されているスニフモードの接続を変更する必要はない。たとえば、既に６台の無線ゲームコントローラ２０がゲーム装置１０に接続しており、１台の新たな無線ゲームコントローラ２０が参加、または１台の無線ゲームコントローラ２０が離脱しても、スニフアテンプトパラメータに変更がないため、既存のスニフモードの通信を切断してアクティブモードに戻すことなく、増減する無線ゲームコントローラ２０の処理だけを行えばよい。
【００７４】
実施例では、通信方式としてBluetoothプロトコルを採用した。Bluetoothプロトコルは、タイムスロットで時間管理されて、正確にスケジューリングされた通信を実行できる。そのため、再送処理を制御するパラメータとして通信回数の最大値を利用しても、スニフ周期を維持することができる。
【００７５】
本実施例の通信制御技術は、他の通信方式にも利用できる。たとえば、IEEE802.11プロトコルによる無線通信方式において利用されてもよく、この場合は無線ゲームコントローラ２０がIEEE802.11端末として構成されてもよい。IEEE802.11プロトコルによる通信環境下では、ゲーム装置１０がコーディネータとして機能する。IEEE802.11プロトコルによる無線ＬＡＮのＭＡＣレイヤの技術には、ＣＳＭＡ／ＣＡ（Carrier Sense Multiple Access with Collision Avoidance:衝突回避機能付きキャリア感知多元接続）がアクセス制御方式として採用されており、IEEE802.11端末は、通信路が一定時間以上継続して空いていることを確認してからデータを送信する機能をもつ。この待ち時間は最小限の時間に各端末ごとのランダムな長さの待ち時間を加えたもので、直前の通信があってから一定時間後に複数の端末が一斉に送信して、信号同士の衝突が発生する事態を防止している。
【００７６】
IEEE802.11プロトコルによる無線通信では、ＴＣＰ／ＩＰにしたがって再送回数を設定することができる。しかしながら、設定した再送回数のみに基づいて再送制御を行うと、たとえばビーコン周期をまたがって再送制御を継続する事態も発生し、他の無線ゲームコントローラ２０の通信に影響を与える可能性があるため好ましくない。
【００７７】
そのため、IEEE802.11端末であるゲーム装置１０は、所定のビーコン周期で、少なくとも１台の無線ゲームコントローラ２０と無線通信を行い、ビーコン周期と、接続している無線ゲームコントローラ２０の数に応じて、それぞれの無線ゲームコントローラ２０との間で最大送信時間を設定する。この最大送信時間は、新たな無線ゲームコントローラ２０がゲーム装置１０に接続するための時間を確保しながら設定されることが好ましい。通信制御部４４は、接続している無線ゲームコントローラ２０の数に増減があった場合には、最大送信時間を再設定する。
【００７８】
複数の無線ゲームコントローラ２０が存在する場合、ビーコン周期内でそれぞれに割り当てられる最大送信時間は、それぞれ重ならないように設定される。無線ゲームコントローラ２０は、データ転送に失敗した場合には、設定された最大送信時間の範囲内で再送処理を行うが、設定された最大送信時間が経過すると、その時点で再送処理を終了する。このように、最大送信時間を利用したタイムアウト処理を行うことで、再送処理を効率的に行うことができる。
【００７９】
本実施例では、操作入力データの最大送信回数または最大送信時間を、通信周期および無線ゲームコントローラ２０の接続台数に応じて、全ての無線ゲームコントローラ２０に共通に設定した。しかしながら、最大送信回数または最大送信時間は、無線ゲームコントローラ２０に対して個別に設定されてもよい。
【００８０】
たとえば、２台の無線ゲームコントローラ２０ａ、２０ｂがゲーム装置１０と接続しており、無線ゲームコントローラ２０ａの通信環境が無線ゲームコントローラ２０ｂの通信環境と比較して著しく劣悪であるとき、無線ゲームコントローラ２０ａの最大送信回数を４回に設定して、無線ゲームコントローラ２０ｂの最大送信回数を２回に設定することも可能である。たとえば、監視部４２が、無線通信モジュール４０において計測される信号受信強度をもとに、それぞれの無線ゲームコントローラ２０のおかれた通信環境を把握してもよい。また、信号受信強度を利用しなくても、たとえば各無線ゲームコントローラ２０の転送データのエラーレートをもとに、通信環境を推定してもよい。このように、通信環境を監視または推定して、通信環境の悪い無線ゲームコントローラ２０についての最大送信回数を、他の無線ゲームコントローラ２０よりも多くすることで、ゲームシステム１全体としての通信効率を高めることが可能となる。なお、以上は、Bluetooth通信における最大送信回数の設定について示したが、IEEE802.11通信において最大送信時間を設定する場合も同様である。
【００８１】
以上、本発明を実施例をもとに説明した。この実施例は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。実施例では、１つの通信方式で通信が行われる場合について示したが、複数の通信方式による通信が、共通の通信周期のもとで実行されてもよい。たとえば、図３（ｂ）〜図３（ｅ）において、スニフスロットが設けられた時間帯以外の時間において、ゲーム装置１０がIEEE802.11端末と接続してもよい。ゲーム装置１０が複数の通信方式による通信を可能とすることで、汎用性の高いゲームシステム１を提供できる。
【００８２】
実施例では、スニフ周期やビーコン周期などの通信周期を不変なものとして、無線ゲームコントローラ２０の接続台数に応じて、操作入力データの最大送信回数や最大送信時間を設定する技術を説明した。以下では、通信周期を可変とすることで、データ転送の確実性を高める技術を説明する。
【００８３】
図８は、変形例におけるタイムスロットの割当てを示す。図８（ａ）は、タイムスロットを模式化して示し、図８（ｂ）は、ゲームシステム１に３台の無線ゲームコントローラ２０が存在するときのタイムスロットの割当てを示す。
【００８４】
この変形例において、通信制御部４４は、接続している無線ゲームコントローラ２０の数に応じて、通信周期を決定する。なお、この通信周期は、ゲーム画面のフレーム時間（１６．７ｍ秒）よりも常に短くなるように設定される。この変形例では、接続している無線ゲームコントローラ２０の再送処理は許容されない。そのため、通信周期において、無線ゲームコントローラ２０は、データ送信機会が１回だけ与えられ、したがって各無線ゲームコントローラ２０のスニフスロットは２タイムスロットである。
【００８５】
通信制御部４４は、接続している無線ゲームコントローラ２０との間の通信時間と、接続している無線ゲームコントローラ２０以外の新たな無線ゲームコントローラ２０との接続を確立するための時間とから、通信周期を決定する。新たな無線ゲームコントローラ２０との接続を確立するための時間は、６タイムスロットであり、また３台の無線ゲームコントローラ２０との間の通信時間は、６タイムスロットである。したがって、計１２タイムスロットのスニフ周期が設定される。
【００８６】
このようにスニフ周期を、通信に必要な最低限のタイムスロットと、ページスキャンに必要な最低限のタイムスロットで構成して非常に短く設定することで、仮にデータ転送が失敗しても、次のスニフ周期でデータ転送の機会がすぐに与えられるため、再送処理を行わなくとも、ゲームアプリケーションのリアルタイム性を維持できる。なお、接続している無線ゲームコントローラ２０の数に増減があった場合には、通信制御部４４は通信周期を再設定する。
【図面の簡単な説明】
【００８７】
【図１】本発明の実施例にかかるゲームシステムの全体構成を示す図である。
【図２】Bluetoothの状態遷移図を示す図である。
【図３】本実施例におけるタイムスロットの割当てを示す図である。
【図４】ゲーム装置の構成を示す図である。
【図５】接続台数とスニフアテンプトパラメータとの対応テーブルを示す図である。
【図６】無線ゲームコントローラの構成を示す図である。
【図７】ゲーム装置と無線ゲームコントローラのスニフモードにおける接続シーケンスを示す図である。
【図８】変形例におけるタイムスロットの割当てを示す図である。
【符号の説明】
【００８８】
１・・・ゲームシステム、１０・・・ゲーム装置、１２・・・出力装置、１４・・・画像表示装置、１６・・・音声出力装置、１８・・・ケーブル、２０・・・無線ゲームコントローラ、２０ａ・・・無線ゲームコントローラ、４０・・・無線通信モジュール、４２・・・監視部、４４・・・通信制御部、４６・・・アプリケーション処理部、４８・・・出力部、６０・・・無線通信モジュール、６２・・・無線通信部、６４・・・送信バッファ、７０・・・処理モジュール、７２・・・操作入力部、７４・・・制御部、７６・・・入力バッファ。
【図１】
0004463237.tif 000002
【図２】
0004463237.tif 000003
【図３】
0004463237.tif 000004
【図４】
0004463237.tif 000005
【図５】
0004463237.tif 000006
【図６】
0004463237.tif 000007
【図７】
0004463237.tif 000008
【図８】
0004463237.tif 000009