図1は、本発明の実施例における通信システム1を示す。通信システム1は、ゲーム装置10、ゲーム装置10と無線接続する無線コントローラ25a、25b、25c(以下、「無線コントローラ25」と呼ぶ)、携帯型ゲーム機30a、30b(以下、「携帯型ゲーム機30」と呼ぶ)およびパーソナルコンピュータ32(以下、「PC32」と呼ぶ)から構成される。ゲーム装置10は、1つの筐体内に、通信機能を有する第1無線通信モジュール12および第2無線通信モジュール14と、ゲーム装置全体を統括的に管理する制御部16、ゲームアプリケーションを実行するアプリケーション処理部18、さらにゲームアプリケーションの処理結果を出力する出力部20を備える。ゲーム装置10は、第1無線通信モジュール12および第2無線通信モジュール14を備えることで、無線通信端末装置として機能する。第1無線通信モジュール12および第2無線通信モジュール14は、それぞれ別個の無線通信プロトコルによる通信を可能とする。
通信システム1において、無線コントローラ25は、ゲーム装置10に対するゲームコントローラであり、1人以上のユーザが、ゲーム装置10のディスプレイに表示されるゲーム画面を見ながら無線コントローラ25を操作し、ゲームを行うことができる。また、携帯型ゲーム機30は、ゲーム装置10を中継局として他の携帯型ゲーム機30と通信を行うことで、複数同時プレイを行うことのできる端末装置である。また携帯型ゲーム機30は、ゲーム装置10から動画データを受信して、ユーザに動画を提供する機能を有してもよい。さらに携帯型ゲーム機30は、ゲーム装置10に対するゲームコントローラとして使用されることも可能であり、ユーザは、ゲーム装置10のディスプレイに表示されるゲーム画面を見ながら、携帯型ゲーム機30を操作してゲームを行うこともできる。このように、ゲーム装置10は、複数の用途に対して機能できる。
本実施例において、第1無線通信モジュール12は、Bluetoothプロトコルによる無線通信を行い、複数の無線コントローラ25との無線接続を可能とする。Bluetoothでは、周波数ホッピング型スペクトラム拡散方式が採用されている。通信システム1において、第1無線通信モジュール12は、無線コントローラ25に対して親機すなわちマスタとして機能し、無線コントローラ25はスレーブとして機能する。第1無線通信モジュール12と無線コントローラ25の間にはピコネットが形成される。ピコネットとは、Bluetooth端末同士を近づけたときに、端末の間で一時的に形成されるネットワークであり、最大で8台のBluetooth端末が1つのピコネットに参加することができる。したがってマスタである第1無線通信モジュール12は、最大7台の無線コントローラ25と無線接続することが可能である。
第2無線通信モジュール14は、IEEE802.11プロトコルによる無線通信を行い、複数の携帯型ゲーム機30およびPC32との無線接続を可能とする。IEEE802.11プロトコルとして、例えばIEEE802.11bおよび/またはIEEE802.11gを採用する。IEEE802.11プロトコルによる通信環境下で、第2無線通信モジュール14はアクセスポイントとして機能する。IEEE802.11プロトコルによる無線LANのMACレイヤの技術には、CSMA/CA(Carrier Sense Multiple Access with Collision Avoidance:衝突回避機能付きキャリア感知多元接続)がアクセス制御方式として採用されており、IEEE802.11端末は、通信路が一定時間以上継続して空いていることを確認してからデータを送信する機能をもつ。この待ち時間は最小限の時間に各端末ごとのランダムな長さの待ち時間を加えたもので、直前の通信があってから一定時間後に複数の端末が一斉に送信して、信号同士の衝突が発生する事態を防止している。
制御部16は、第1無線通信モジュール12および第2無線通信モジュール14による通信機能を管理する。本実施例において制御部16は、第1無線通信モジュール12の通信と第2無線通信モジュールの通信との間の相互干渉を低減するように、第1無線通信モジュール12の通信開始時刻から、第2無線通信モジュール14の通信開始時刻までのオフセット時間を設定する。制御部16は、第1無線通信モジュール12が管理する無線コントローラ25の台数から、第1無線通信モジュール12の通信を許可する第1通信期間を設定する。オフセット時間を第1通信期間以上に設定することで、第1無線通信モジュール12の通信が完了する前に第2無線通信モジュール14の通信が開始する事態を回避できる。また制御部16は、第2無線通信モジュール14が管理する携帯型ゲーム機30の台数から、第2無線通信モジュール14の通信を許可する第2通信期間を設定してもよい。このとき制御部16は、第1通信期間と第2通信期間とが時間軸上でそれぞれ重ならないように、第1無線通信モジュール12および/または第2無線通信モジュール14の通信周期を設定してもよい。これにより、無線通信モジュール間での電波の相互干渉を低減し、もしくは無くすことができ、安定した通信を可能とするゲーム装置10を実現する。
第1無線通信モジュール12は、1つないしは複数の無線コントローラ25からゲームアプリケーションに関する操作入力を受信して、制御部16を介してアプリケーション処理部18に供給する。アプリケーション処理部18は、受信した操作入力をもとに、ゲームアプリケーションを実行する。出力部20は、ディスプレイやスピーカなどで構成され、アプリケーション処理部18による処理結果が出力される。
第2無線通信モジュール14は、1つないしは複数の携帯型ゲーム機30から、それぞれのステータス情報を受信する。第2無線通信モジュール14は、無線LANに参加している携帯型ゲーム機30からのステータス情報を、別の携帯型ゲーム機30に転送する。これにより、各携帯型ゲーム機30では、他の携帯型ゲーム機30におけるステータス情報が反映されたゲームアプリケーションが実行されることになり、複数のユーザが各々の携帯型ゲーム機30で同時にゲームを楽しむことができる。なお、携帯型ゲーム機30がゲームコントローラとして使用される場合、第2無線通信モジュール14は、第1無線通信モジュール12と同様に、携帯型ゲーム機30からの操作入力を制御部16を介してアプリケーション処理部18に供給する。さらに携帯型ゲーム機30が動画受信用の端末として使用される場合、第2無線通信モジュール14は、携帯型ゲーム機30に対して動画データを配信する。以下では、第2無線通信モジュール14と携帯型ゲーム機30との間で、ゲームアプリケーションのステータス情報が通信される場合を例にとる。
ゲーム装置10と無線コントローラ25および携帯型ゲーム機30の間では、ゲームアプリケーションの処理に関するデータが送受信されるため、程度の違いはあるものの、原則として情報伝送のリアルタイム性が要求される。そのため本実施例の通信システム1においては、第1無線通信モジュール12が通信する期間と無線コントローラ25が通信する期間とを時間軸上で可能な限り重ならないようにすることで、ゲームアプリケーションの処理に関する通信を安定させる。
一方、第2無線通信モジュール14とPC32の間の通信は、ゲームアプリケーションの実行に利用されるものではなく、厳密なリアルタイム性は要求されない。例えば、ゲーム装置10がルータを介してインターネットに接続されて、PC32が、電子メールを送受信するような使用状況が想定される。そのため、第2無線通信モジュール14とPC32の間の通信は、第1無線通信モジュール12と無線コントローラ25との間の通信、および第2無線通信モジュール14と携帯型ゲーム機30の間の通信が行われない時間帯に行うこととする。
図2は、制御部の機能ブロックを示す。制御部16は、第1無線通信モジュール12および第2無線通信モジュール14との間にインタフェース部50aを有し、アプリケーション処理部18との間にインタフェース部50bを有することで、他の構成とのデータの授受を行う。インタフェース部50aおよびインタフェース部50bは、ハードウエア的に共通化された構造をとってよい。
制御部16は、さらにデータ転送部52、通信負荷監視部54、レイテンシ判定部56、通信タイミング設定部58およびクロック部60を備えて構成される。制御部16は、ゲーム装置10を統括的に制御管理する機能を有しているが、図2では、特にゲーム装置10の通信を管理する機能ブロックを示している。
制御部16の通信管理機能は、ゲーム装置10において、CPU、メモリ、メモリにロードされたプログラムなどによって実現され、ここではそれらの連携によって実現される機能ブロックを描いている。プログラムは、ゲーム装置10に内蔵されていてもよく、また記録媒体に格納された形態で外部から供給されるものであってもよい。したがってこれらの機能ブロックがハードウエアのみ、ソフトウエアのみ、またはそれらの組合せによっていろいろな形で実現できることは、当業者に理解されるところである。
通信負荷監視部54は、第1無線通信モジュール12および第2無線通信モジュール14のそれぞれの通信負荷を監視する。通信負荷監視部54は、第1無線通信モジュール12に無線接続される無線コントローラ25の台数、および第2無線通信モジュール14に接続される携帯型ゲーム機30の台数を監視することで、それぞれの通信モジュールの通信負荷を把握してもよい。通信負荷監視部54は、定期的に第1無線通信モジュール12および第2無線通信モジュール14の通信負荷を監視してもよい。また、それぞれの接続台数に変化が生じたときに、その無線通信モジュールから新たな接続台数を受け取ることで通信負荷を監視してもよい。通信負荷監視部54は、それぞれの通信モジュールの通信負荷の監視結果を通信タイミング設定部58に送る。
通信タイミング設定部58は、第1無線通信モジュール12の通信負荷の監視結果を受けて、第1無線通信モジュール12の通信の開始時刻から、第2無線通信モジュール14の通信の開始時刻までのオフセット時間を設定する。このとき通信タイミング設定部58は、第1無線通信モジュール12の通信負荷から、第1無線通信モジュール12の通信を許可する第1通信期間を設定する。例えば第1無線通信モジュール12が3台の無線コントローラ25を管理している場合、それぞれの無線コントローラ25に対するポーリングと、それに対する応答を受信することで、計6個のタイムスロットが必要となる。この場合、通信タイミング設定部58は、第1無線通信モジュール12の通信に、少なくとも6タイムスロット分の時間が必要であることを判断し、第1通信期間を6タイムスロット分以上の時間、好ましくは6タイムスロット分の時間に設定する。後述するが、第1無線通信モジュール12と無線コントローラ25との間の通信はバースト的に実行され、第1通信期間の算出を容易にすることが好ましい。
通信タイミング設定部58は、第1通信期間を求めると、オフセット時間を第1通信期間以上に設定する。これにより、第2無線通信モジュール14は、第1無線通信モジュール12の通信開始時刻からオフセット時間経過後、すなわち第1無線通信モジュール12の第1通信期間の終了後に通信を開始するため、第1無線通信モジュール12の通信終了前に、第2無線通信モジュール14による通信が開始されることがない。そのため、第1無線通信モジュール12と第2無線通信モジュール14との間の通信の相互干渉を低減し、または無くすことができる。なお、通信タイミング設定部58は、第1無線通信モジュール12の通信に必要な第1通信期間に、第1無線通信モジュール12との間で新たな無線接続を確立する無線コントローラ25を探索するための時間を加えて、オフセット時間を設定してもよい。新規の無線コントローラ25を探索する時間は、第1無線通信モジュール12が周辺の通信端末装置に対して接続照会すなわち「問い合わせ」を行う時間と、無線コントローラ25を認識して「呼び出し」を行う時間を含む。
本実施例のゲーム装置10において、第1無線通信モジュール12および第2無線通信モジュール14は、共通の基準通信周期を有する。Bluetoothマスタである第1無線通信モジュール12において、基準通信周期は、スニフモードによる間欠動作時に、動作毎に無線コントローラ25を個別呼び出しするポーリングの最小間隔に設定される。また第2無線通信モジュール14において、基準通信周期は、IEEE802.11プロトコルにおける最小のビーコン間隔として設定される。本実施例のゲーム装置10では、アプリケーション処理部18による処理結果を出力部20より動画として出力するため、基準通信周期は、動画のフレームレートに基づいて、例えば11.25m秒に設定される。
通信タイミング設定部58は、第1無線通信モジュール12および第2無線通信モジュール14のそれぞれに通信周期を、基準通信周期の整数倍に設定する。第1無線通信モジュール12および第2無線通信モジュール14は、それぞれ通信状態と非通信状態とを交互に繰り返して、基準通信周期の整数倍の通信周期で外部端末と通信する。第1無線通信モジュール12および第2無線通信モジュール14のそれぞれの通信開始時刻は、それぞれの通信周期の開始時刻と同一であり、通信周期の始まりとともに外部機器との間の通信が開始される。本明細書において、第2無線通信モジュール14の通信周期とは、第2無線通信モジュール14と携帯型ゲーム機30との間における通信周期を意味する。既述したように、第2無線通信モジュール14とPC32の間の通信は、空いた時間を利用して行われる。なお、この空いた時間の中で、第2無線通信モジュール14とPC32の間の通信が行われないときに、第1無線通信モジュール12が、新たな無線接続を確立する無線コントローラ25を探索してもよい。
なお、それぞれの通信周期は基準通信周期の整数倍であればよく、同一である必要はない。基準通信周期の整数倍の期間をそれぞれの通信周期として設定することで、互いの通信周期の開始時刻の相対的な時間差を一定とすることができる。これにより、第1無線通信モジュール12および第2無線通信モジュール14の外部端末との接続台数に変化がない限りは、原則としてオフセット時間を固定とすることができ、通信タイミング設定部58はオフセット時間を一回求めるだけでよい。
また通信タイミング設定部58は、第2無線通信モジュール14の通信負荷の監視結果を受けて、第2無線通信モジュール14の通信を許可する第2通信期間を設定する。第2無線通信モジュール14はCSMA/CA方式により通信を行うため、通信開始から終了までの正確な時間を求めることは容易でない。そのため、通信タイミング設定部58は、第2無線通信モジュール14が管理する携帯型ゲーム機30の台数をもとに通信開始から終了までにかかる時間を予測し、その予測時間にある程度の時間的余裕を加えて第2通信期間を設定することが好ましい。
通信タイミング設定部58は、第1通信期間と第2通信期間とが重ならないように、それぞれを設定する。なお、第1通信期間は第1無線通信モジュール12の通信周期よりも短く、同様に第2通信期間は第2無線通信モジュール14の通信周期よりも短い。そのため、通信タイミング設定部58は、第1通信期間と第2通信期間の和が、基準通信周期のM倍(Mは1以上の整数)より大きく且つ(M+1)倍以下となるときには、第1無線通信モジュールの通信周期と第2無線通信モジュールの通信周期のそれぞれを、基準通信周期の(M+1)倍以上に設定する。これにより、第1通信期間と第2通信期間とが重ならない状態を作り出すことができる。
以上のように、通信タイミング設定部58は、第1無線通信モジュール12および第2無線通信モジュール14のそれぞれの通信周期を設定し、さらに第1無線通信モジュール12の通信の開始時刻から第2無線通信モジュール14の通信の開始時刻までのオフセット時間を設定する。通信タイミング設定部58は、第1無線通信モジュール12の通信周期およびオフセット時間を第1無線通信モジュール12に伝達し、また第2無線通信モジュール14の通信周期を第2無線通信モジュール14に伝達する。なお、オフセット時間は、第2無線通信モジュール14で直接利用されるため、通信タイミング設定部58は、第2無線通信モジュール14にオフセット時間を直接伝達してもよい。
上記した実施例では、通信タイミング設定部58が、第1無線通信モジュール12の通信負荷の監視結果をもとに、第1無線通信モジュール12の通信開始時刻から第2無線通信モジュール14の通信開始時刻までのオフセット時間を設定した。別の例では、通信タイミング設定部58が、第2無線通信モジュール14の通信負荷の監視結果をもとに、第2無線通信モジュール14の通信開始時刻から第1無線通信モジュール12の通信開始時刻までのオフセット時間を設定することも可能である。例えば、第2無線通信モジュール14の通信実行中に、第1無線通信モジュール12の通信が開始する場合、第2無線通信モジュール14の通信開始時刻を基準としたオフセット時間を設定してもよい。なお、この場合であっても、後述するように、第1無線通信モジュール12の通信開始時刻を基準としたオフセット時間を設定することで、正確な時間管理を容易にすることが可能となる。
図3は、本実施例のゲーム装置における通信状況を示すタイミングチャートである。図3(a)は、第1無線通信モジュール12と無線コントローラ25との通信状況を示し、図3(b)は、第2無線通信モジュール14と携帯型ゲーム機30との通信状況を示し、図3(c)は、第2無線通信モジュール14とPC32との通信状況を示す。図3に示すタイミングチャートでは、第1無線通信モジュール12および第2無線通信モジュール14の通信周期が、基準通信周期の1倍に設定されている。なお、第1無線通信モジュール12および第2無線通信モジュール14のそれぞれの通信開始時刻は、それぞれの通信周期の開始時刻と同一である。したがって、それぞれの通信周期の開始とともに、各通信モジュールにおける通信が開始されることになる。
時間t0で、第1無線通信モジュール12が3台の無線コントローラ25との間で通信を開始する。第1無線通信モジュール12と無線コントローラ25との間の通信はバースト的に実施され、短時間で終了することが好ましい。第1無線通信モジュール12は、3台の無線コントローラ25のそれぞれに対して順にポーリングを行い、その都度、無線コントローラ25からのデータを受信する。なお、第1無線通信モジュール12の台数はあくまでも例であり、第1無線通信モジュール12は、1台から7台までの無線コントローラ25を管理することができる。
第1無線通信モジュール12は、第2無線通信モジュール14に対して、時間t0で通信を開始することを通知するとともに、通信タイミング設定部58より伝達されたオフセット時間も通知する。これにより、第2無線通信モジュール14は、通信を開始する時刻、すなわちターゲットビーコン送信時刻(Target Beacon Transmission Time:TBTT)を知ることができる。この例では、オフセット時間が、(t1−t0)に設定されている。なお、(t3−t2)および(t5−t4)もオフセット時間に等しい。
第2無線通信モジュール14は、第1無線通信モジュール12の通信の開始時刻とオフセット時間の通知を受けると、時間t0から時間t1までのオフセット時間を待機し、時間t1からバックオフと呼ばれるランダムな待機時間だけさらに待機した後、ビーコン信号を送信する。なお、通信の開始時刻は、通知時刻からの相対的な時間として表現されてもよい。第2無線通信モジュール14の管理下にある携帯型ゲーム機30は、ビーコン信号を受信すると、それぞれのゲームのステータス情報を送信する。
第1無線通信モジュール12および第2無線通信モジュール14は、共通のクロックで動作してもよい。例えば、クロックは制御部16におけるクロック部60よりそれぞれの通信モジュールに供給されてもよく、第1無線通信モジュール12ないしは第2無線通信モジュール14の一方で使用するクロックを、他方に供給してもよい。第1無線通信モジュール12または第2無線通信モジュール14で高速クロックが採用されている場合には、それを利用することが好ましい。なお、第1無線通信モジュール12は無線コントローラ25との間で正確な時間管理の下でデータをバースト的に送受信できるため、第1無線通信モジュール12の通信の時間管理は比較的容易である。そのため、第1無線通信モジュール12で使用するクロックを、第2無線通信モジュール14に供給することで、第1無線通信モジュール12および第2無線通信モジュール14の間でクロックを共通化することが好ましい。また、第1無線通信モジュール12および第2無線通信モジュール14が一体として構成されている場合には、共通に設けられたクロック部からクロックが供給されてもよい。クロックを共通とすることで、両者の同期をとることが容易となる。
本実施例において、第1無線通信モジュール12および第2無線通信モジュール14の通信周期がそれぞれ基準通信周期の整数倍に設定されているため、第1無線通信モジュール12の通信開始時刻から第2無線通信モジュール14の通信開始時刻までのオフセット時間は固定とすることができる。そのため、第1無線通信モジュール12は、通信開始時にオフセット時間を一回だけ第2無線通信モジュール14に伝達すればよく、その後は、それぞれの通信モジュールが、共通クロックを使用して、それぞれに設定された通信周期をもとに、相互干渉することなく安定した通信を行うことができる。
なお、第1無線通信モジュール12および第2無線通信モジュール14は、それぞれ独自のクロックで動作してもよい。例えば、第1無線通信モジュール12および第2無線通信モジュール14が異なる製造メーカによって作製される場合、それぞれの通信モジュールは独自のクロックで動作するため、完全な同期をとることは困難となる。そのため、第1無線通信モジュール12は、定期的に第1無線通信モジュール12の通信の開始時刻を第2無線通信モジュール14に伝達し、同期合わせを行うようにしてもよい。それぞれが独自クロックを採用する場合であっても、実際のずれは極めて小さいため、定期的に第2無線通信モジュール14の動作タイミングを調整することで、第1無線通信モジュール12の第1通信期間と第2無線通信モジュール14の第2通信期間とが重ならない状態を維持できる。
既述したように、オフセット時間は、第1無線通信モジュール12における通信が全て完了する時間に応じて設定される。第1無線通信モジュール12はBluetoothプロトコルによる通信を実施するため、CSMA/CA方式を採用するIEEE802.11プロトコルと比較すると、通信をバースト的に実行しやすい。そのため、第1無線通信モジュール12の第1通信期間を正確に求めることができる。第1無線通信モジュール12の通信の開始時刻を基準としてオフセット時間を設定することで、第1無線通信モジュール12の通信の終了時刻と第2無線通信モジュール14の通信の開始時刻の間の空き時間を減らすことができる。図3に示す例では、第1無線通信モジュール12における通信完了後、第2無線通信モジュール14にてビーコンを送信する時刻まで、若干の時間的余裕をとっているが、第1無線通信モジュール12の通信開始から終了までの時間とオフセット時間とを等しく設定することで、第1無線通信モジュール12の通信完了直後に第2無線通信モジュール14の通信周期を開始して、第2無線通信モジュール14からビーコン信号を送信させることも可能である。一方で、通信タイミング設定部58は、第1無線通信モジュール12における通信が全て完了する時間に、第1無線通信モジュール12との間で新たな無線接続を確立する無線コントローラ25を探索するための時間を加えて、オフセット時間を設定してもよい。なお、この探索時間は、オフセット時間に常に含められてもよく、また探索する頻度を減らす場合には、探索時間が、オフセット時間に定期的に含められるようにしてもよい。
なお、第2無線通信モジュール14は、NAV(ネットワークアロケーションベクトル)を含むパケット(例えばRTS)を送信して、PC32の通信を制限してもよい。例えばNAVによる通信を制限する期間は、オフセット時間に等しく設定されてもよい。NAVは、第1無線通信モジュール12の通信周期の開始前に送信される。これにより、PC32による電波が第1無線通信モジュール12に対して相互干渉する可能性を低減することができる。なお、第2無線通信モジュール14は、第1無線通信モジュール12の通信周期を伝達されると、ゲーム装置10における通信スケジュールの全体像を知ることができる。このとき、第2無線通信モジュール14は、第1無線通信モジュール12と無線コントローラ25の第1通信期間および第2無線通信モジュール14と携帯型ゲーム機30の第2通信期間を把握できるため、その空いた時間を利用してPC32と通信を行うことができる。
例えばNAVにより、通信を制限する機器を特定できるのであれば、NAVによりPC32の通信を制限する期間を、第1通信期間と第2通信期間の和に設定してもよい。これにより、PC32が、第1無線通信モジュール12と無線コントローラ25との通信、および第2無線通信モジュール14と携帯型ゲーム機30との通信に干渉する事態を回避でき、通信システム1における通信をより安定化させることが可能となる。
なお、通信システム1では動的な無線ネットワークが構築されているため、例えば新たな無線コントローラ25がピコネットに参加したり、また既参加の無線コントローラ25がピコネットから脱退することもある。制御部16において、通信負荷監視部54は、無線コントローラ25の台数の増減を監視し、通信タイミング設定部58は、その監視結果に合わせて、オフセット時間および/または通信周期を再設定してもよい。なお、新たな携帯型ゲーム機30が無線LANに新たに参加する場合や、既参加の携帯型ゲーム機30が無線LANから脱退する場合も同様であり、通信タイミング設定部58は、通信負荷監視部54による通信負荷の監視結果に応じて、通信周期を再設定してもよい。
図2に戻って、データ転送部52は、インタフェース部50aにて受け付けた操作入力をインタフェース部50bからアプリケーション処理部18に伝達する。アプリケーション処理部18では、その操作入力に応じた処理が行われ、ゲームが進行される。
ゲームアプリケーションは、リアルタイム性の観点より分別すると、大きく2つのグループ、すなわちリアルタイム性の要求が高いゲームと低いゲームとに分けることができる。リアルタイム性の要求が高いゲームとは、例えば格闘ゲームやレーシングゲームなど、ゲームの進行が速く、ユーザの操作入力が即座にゲーム画面などの出力に反映される必要のあるゲームである。一方、リアルタイム性の要求が低いゲームとは、将棋や麻雀などの対戦ゲームや、RPG(ロールプレイングゲーム)など、ゲームの進行が比較的緩やかなゲームである。
ゲーム画面の更新は、所定のフレームレートないしはリフレッシュレートで行われる。現状、1フィールドの書き換え周期は約16.7m秒(1/60秒)であり、したがって、リアルタイムの要求が高い、すなわち低遅延が要求されるゲームアプリケーションでは、1フィールド(16.7m秒)に少なくとも1回は、無線コントローラ25からの操作入力がゲーム画面に反映されることが好ましい。
また、第2無線通信モジュール14をアクセスポイントとして利用する携帯型ゲーム機30についても事情は同じであり、1フィールドに少なくとも1回は、自分のステータス情報を他の携帯型ゲーム機30に知らせ、また他の携帯型ゲーム機30のステータス情報を知ることが好ましい。ステータス情報は、レーシングゲームであれば、コース上の位置や車の向き、速度などの絶対的な情報である。なお、ここで絶対的な情報とするのは、無線環境における通信の信頼性が高くないためであり、十分な信頼性が確保できるのであれば、過去と現在との差分情報を知ることができればよい。
通信システム1において、各携帯型ゲーム機30は、アプリケーションをそれぞれ独立して非同期に実行している。なお、低遅延が要求されないゲームアプリケーションにおいては、1フィールドごとのデータアップデートができない場合であっても再送処理を行えばよいため、アプリケーションの処理に大きな影響を与える虞は少ない。
以上の事情に鑑み、レイテンシ判定部56は、インタフェース部50bを介してアプリケーション処理部18において処理されるゲームの進行を監視し、通信に要求されるレイテンシの程度を判定する。以上は、無線コントローラ25において要求されるレイテンシについてであるが、携帯型ゲーム機30についても同様であり、レイテンシ判定部56は、インタフェース部50aを介して携帯型ゲーム機30におけるゲームの進行を監視し、携帯型ゲーム機30において要求されるレイテンシの程度を判定する。レイテンシ判定部56は、判定したレイテンシの程度を通信タイミング設定部58に伝達する。以下、無線コントローラ25において要求されるレイテンシの程度について検討する。
通信タイミング設定部58は、無線コントローラ25において低遅延が要求される場合、第1無線通信モジュール12の通信周期を短く設定する。既述したように、第1無線通信モジュール12の通信周期は、基準通信周期(11.25m秒)の整数倍に設定され、したがって、通信周期は、最短の基準通信周期(=11.25m秒×1)に設定される。一方、無線コントローラ25において低遅延が要求されない場合、すなわちゲーム進行に求められるリアルタイム性が低い場合、通信周期は、基準通信周期のP倍(Pは2以上の整数)に設定されてもよい。リアルタイム性の要求が低い場合には、第1無線通信モジュール12の通信周期を長く設定することで、無線コントローラ25の電力消費を抑えることができる。このとき、第2無線通信モジュール14に対して第2通信期間を長く設定することも可能である。第2無線通信モジュール14が、携帯型ゲーム機30に対してビデオデータを送信することも想定されるため、第1無線通信モジュール12を動作状態とする期間を短く設定することで、ゲーム装置10全体における通信効率を高めることが可能となる。
図4は、本実施例のゲーム装置における通信状況の変形例を示すタイミングチャートである。図4(a)は、第1無線通信モジュール12と無線コントローラ25との通信状況を示し、図4(b)は、第2無線通信モジュール14と携帯型ゲーム機30との通信状況を示す。図4では、第2無線通信モジュール14とPC32との通信状況の図示は省略する。
図4に示すタイミングチャートでは、第1無線通信モジュール12および第2無線通信モジュール14の通信周期が、基準通信周期の2倍に設定されている。これは、第1無線通信モジュール12において低遅延が要求されない場合のタイミングチャートであり、第2無線通信モジュール14と携帯型ゲーム機30との間で、大きなデータを送信する場合を想定している。図4に示すように、第1無線通信モジュール12の通信周期を長く設定する場合には、第2無線通信モジュール14の第2通信期間を長く設定することが可能となる。この第2通信期間中、第2無線通信モジュール14によるポーリングを用いた集中制御により、品質を保証するHCCA(Hybrid Coordination Function Controlled Channel Access)が実行されてもよい。
HCCAでは、第2無線通信モジュール14が、携帯型ゲーム機30の優先度を考慮したスケジューリングを行い、送信を許可するチャネル使用時間が記述されたポーリングフレームを送信する。送信を許可された携帯型ゲーム機30の送信中、他の携帯型ゲーム機30はアクセスを抑制され、QoSを保証することが可能となる。
以上は、無線コントローラ25の通信に低遅延が要求されない場合であるが、携帯型ゲーム機30の通信に低遅延が要求されない場合にも、第2無線通信モジュール14の通信周期を長く設定すればよい。例えば、無線コントローラ25の通信に低遅延が要求され、一方で携帯型ゲーム機30の通信に低遅延が要求されない場合、第1無線通信モジュール12の通信周期は基準通信周期に設定され、第2無線通信モジュール14の通信周期は基準通信周期の2倍以上に設定される。通信周期に対する通信期間の比を小さくすることで、無線コントローラ25および携帯型ゲーム機30の消費電力を抑制できる。
以上、本発明を実施例をもとに説明した。これらの実施例は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。図1において、第1無線通信モジュール12および第2無線通信モジュール14が、それぞれアンテナを有しているが、アンテナは共用されてもよい。第1無線通信モジュール12の通信期間と第2無線通信モジュール14の通信期間とが互いに重ならないように割り当てられるため、アンテナの共用化が可能である。
図1に示す通信システム1では、携帯型ゲーム機30が、IEEE802.11プロトコルを利用して第2無線通信モジュール14と通信するが、携帯型ゲーム機30がさらにBluetoothマスタとして機能して、他のBluetooth端末と通信してもよい。このとき、携帯型ゲーム機30は、ゲーム装置10と同様の通信機能を備えてもよく、Bluetooth端末との間では、第1無線通信モジュール12と無線コントローラ25との間に割り当てられる通信期間中に通信を行えばよい。
図5は、本発明の実施例における通信システムの変形例を示す。図1にも示したように、通信システム1においては、ゲーム装置10と、ゲーム装置10と接続する通信端末装置とが存在する。図5には、ゲーム装置10の通信機能を実現するための構成を示し、アプリケーション処理部18および出力部20については図示を省略している。
この変形例において、ゲーム装置10と接続する通信端末装置は、無線コントローラ25a、25b、無線コントローラ35、携帯型ゲーム機28、携帯型ゲーム機30a、30b、有線コントローラ38およびPC32を含む。なお、既述したように、無線コントローラ25a、25bは、Bluetoothプロトコルによる無線通信機能を有し、携帯型ゲーム機30a、30b、およびPC32は、IEEE802.11プロトコルによる無線通信機能を有している。また、図5に示す通信システム1において、携帯型ゲーム機28は、Bluetoothプロトコルによる無線通信機能を有し、無線コントローラ35は、IEEE802.11プロトコルによる無線通信機能を有してもよい。有線コントローラ38は、ケーブルによりゲーム装置10と有線接続して、情報の送受信を行う機能をもつ。
ゲーム装置10は、Bluetoothプロトコルによる無線通信を行う第1無線通信モジュール12と、IEEE802.11プロトコルによる無線通信を行う第2無線通信モジュール14とを有する。第1無線通信モジュール12は、無線コントローラ25および携帯型ゲーム機28との無線接続を可能とし、第2無線通信モジュール14は、携帯型ゲーム機30、PC32および無線コントローラ35との無線接続を可能とする。無線コントローラ35は、無線コントローラ25と同様に、ゲーム装置10に対する専用のゲームコントローラである。また、携帯型ゲーム機28は、携帯型ゲーム機30と同様に、ゲーム装置10を中継局として他の携帯型ゲーム機28、30と通信を行うことができる端末装置であり、ゲーム装置10に対するゲームコントローラとして使用されることもできる。なお、携帯型ゲーム機28および携帯型ゲーム機30は、ゲームアプリケーションプログラムを有し、他の携帯型ゲーム機と通信を行うことなく、ゲームアプリケーションの実行を行えるようにしてもよい。このとき、ユーザは単独(1人プレイ)でゲームアプリケーションを実行できる。このゲームアプリケーションプログラムは、記録媒体から内部メモリに読み出されるものであってもよく、また内蔵されたものであってもよい。さらに、ゲームアプリケーションプログラムは、ゲーム装置10からダウンロードされてもよい。ゲームアプリケーションプログラムは、携帯型ゲーム機28または携帯型ゲーム機30、ゲーム装置10の全てに予め保持されてもよいが、例えば、ゲーム装置10に保持されていない場合には、携帯型ゲーム機28または携帯型ゲーム機30からゲームアプリケーションプログラムをゲーム装置10にアップロードすることも可能である。
ゲーム装置10は、さらに、有線コントローラ38との間で情報の送受信を行う有線通信モジュール80を有する。有線コントローラ38は、専用のゲームコントローラであって、ケーブルを介して接続端子84に接続される。これは、ケーブルの一端に設けられたコネクタ部品を、雌型コネクタとして構成される接続端子84に差し込むことで実現される。
またゲーム装置10は、接続端子86を介して、外部のネットワーク90と情報の送受信を行う通信インタフェース82を備える。ネットワーク90は、LAN(Local Area Network)であってもよいし、またインターネットなどのWAN(Wide Area Network)であってもよい。なお、通信インタフェース82は、有線接続を行うモジュールであってもよく、外部に設置されたアクセスポイントとの間で無線接続を行うモジュールとして構成されてもよい。
実施例において説明した通信手法を利用することで、通信システム1は、様々な種類のゲームコントローラが混在する環境を実現できる。すなわち、通信システム1において利用可能なゲームコントローラは、無線タイプまたは有線タイプのいずれであってもよく、また専用のもの又は携帯型ゲーム機の一機能として構成されるものであってもよい。さらに、無線タイプである場合には、Bluetoothプロトコルを使用するコントローラであってもよく、またIEEE802.11プロトコルを使用するコントローラであってもよい。基本的に、有線コントローラ38と有線通信モジュール80との間の通信は電波環境に影響を及ぼさないが、異なる無線通信プロトコルを利用する複数のゲームコントローラが存在する場合であっても、第1無線通信モジュール12および第2無線通信モジュール14が共通の基準通信周期を有して、それぞれが基準通信周期の整数倍の通信周期で通信し、制御部16が、第1無線通信モジュール12の通信の開始時刻から、第2無線通信モジュール14の通信の開始時刻までのオフセット時間を適切に設定することで、無線通信環境における電波の相互干渉の可能性を低減できる。
通信システム1では、無線コントローラ25および無線コントローラ35が、ゲーム装置10に対して専用のゲームコントローラとして機能する。また、携帯型ゲーム機30および携帯型ゲーム機28は、基本的には単体で動作可能な情報端末装置として機能する。単体で動作する場合、携帯型ゲーム機30および携帯型ゲーム機28は、ゲーム装置10に対して信号の送受信を行わない。
制御部16は、無線コントローラ25または無線コントローラ35から信号を受け付けると、ゲーム装置10に対する操作入力であることを認識して、アプリケーション処理部18(図示せず)に供給する。また、制御部16は、携帯型ゲーム機30または携帯型ゲーム機28から信号を受け付けると、その入力信号が他の携帯型ゲーム機に対して転送するべきものであるのか、またはゲーム装置10に対する操作入力であるかを判定する。ユーザは、携帯型ゲーム機30または携帯型ゲーム機28を使用する際、1人プレイのモードであるのか、またはゲームコントローラとして使うモードであるのか、または他の携帯型ゲーム機との間で複数人プレイを行うモードであるかを指定する。通信機能を使用する場合、制御部16は、ユーザからのモード指定をもとに、携帯型ゲーム機がゲームコントローラとして使用されるモードか、または他の携帯型ゲーム機との間でゲームアプリケーションを実行するモードであるかを判定し、そのモードに応じて入力信号を処理する。すなわち、ゲームコントローラとして使用されるモードにあるときには、制御部16は入力信号をアプリケーション処理部18に供給し、一方で他の携帯型ゲーム機との間でゲームアプリケーションを実行するモードにあるときには、入力信号を他の携帯型ゲーム機に転送する。これにより、携帯型ゲーム機30または携帯型ゲーム機28を、ユーザからの指定に応じてゲームコントローラとして利用することが可能となり、専用の無線コントローラ25、35、有線コントローラ38とともに、複数種類のゲームコントローラが混在したゲームシステムを実現できる。
なお、本実施例では、基準通信周期を、動画の1フィールド期間(1/60秒)よりも短い11.25m秒に設定している。第1無線通信モジュール12は、この基準通信周期の整数倍の通信周期で、無線コントローラ25や携帯型ゲーム機28などのゲームコントローラからユーザの操作入力を受信する。制御部16は、第1無線通信モジュール12にて受け取った入力信号をバッファメモリ(図示せず)に順次記憶していく。制御部16は、動画のフレームレートの周期で、メモリに記憶された入力信号を、アプリケーション処理部18に読み出す。
通信周期が11.25m秒である場合、制御部16は、1フィールドの期間(1/60秒)の間に、同一のゲームコントローラから入力信号を2回受け取ることがある。このとき、制御部16は、受け取った最新の入力信号のみを、アプリケーション処理部18に読み出してもよい。この場合、制御部16のバッファメモリは、オーバライト型メモリとして構成され、第1無線通信モジュール12にて受け取った入力信号が順次上書きされる。これにより、バッファメモリには、最新の入力信号が記憶されることになる。
また、制御部16は、メモリに記憶された2つの入力信号の和をとって、アプリケーション処理部18に読み出してもよい。例えば、最初の入力信号がキャラクタを右に動かす指示信号であり、次の入力信号がキャラクタを右に動かす指示信号である場合、制御部16は、キャラクタを右に2回動かす指示信号をアプリケーション処理部18に供給する。また、例えば、最初の入力信号がキャラクタを右に動かす指示信号であり、次の入力信号がキャラクタを上に動かす指示信号である場合、制御部16は、キャラクタを右に1回、上に1回動かす指示信号をアプリケーション処理部18に供給する。本実施例の通信システム1では、通信周期とフレーム周期とが非同期であるが、制御部16が、上記のように入力信号を処理することで、ユーザからの操作入力をゲームアプリケーションに適切に反映することが可能となる。
以上、第1無線通信モジュール12にて受信した入力信号の処理に関して説明したが、第2無線通信モジュール14において受信した入力信号についても、制御部16は同様の処理を実行する。
また、ゲーム装置10から、ゲームコントローラに情報を送信することも可能である。一例として、ゲームの進行状況に応じて、ゲームコントローラを振動させる制御情報を送信することが考えられる。このとき、無線コントローラ25、35、携帯型ゲーム機30、28に対しては、振動させるための制御情報を、振動させたい期間、常に送信することが好ましい。一方、有線コントローラ38に対しては、振動を開始するときに、振動を開始させるための制御情報を送信し、振動を停止するときに、振動を停止させるための制御情報を送信すればよい。有線通信では、情報伝送の高い安定性が期待できるため、制御情報を送信する回数を減らすことにより、制御部16の負荷を軽減することが可能となる。
なお、通信システム1においては、様々なゲームコントローラの存在を可能とするが、上記した全てのゲームコントローラの存在を必須とするものではない。例えば、図1に示したように、通信システム1では、無線コントローラ25と携帯型ゲーム機30のみが無線ゲームコントローラとして使用されて、図5に示す携帯型ゲーム機28や無線コントローラ35は使用されなくてもよい。
なお、携帯型ゲーム機30は、第2無線通信モジュール14との間で無線接続を確立する際、IEEE802.11プロトコルの接続手順にしたがって無線通信により通信用のパラメータを取得してもよいが、USB(Universal Serial Bus)などのケーブルを介してゲーム装置10から通信用のパラメータを取得することも可能である。通信パラメータをUSBから取得させることで、他の通信システムの通信端末装置が誤って通信システム1の通信環境に参加してしまう事態を回避できる。携帯型ゲーム機28についても同様であり、Bluetoothの接続手順にしたがって無線通信により通信用パラメータを取得してもよいが、USBなどのケーブルを介してゲーム装置10から通信用のパラメータを取得してもよい。なお、無線コントローラ25および無線コントローラ35についても同様である。
このように携帯型ゲーム機30、28、無線コントローラ25、35は、USBなどのケーブルを介して無線通信用のパラメータを取得することができるが、USBをゲーム装置10の接続端子84に接続した状態でゲームコントローラとして利用することも可能である。この場合、携帯型ゲーム機30、28、無線コントローラ25、35は、実質的に有線コントローラ38と同等に取り扱うことができる。
1・・・通信システム、10・・・ゲーム装置、12・・・第1無線通信モジュール、14・・・第2無線通信モジュール、16・・・制御部、18・・・アプリケーション処理部、20・・・出力部、25・・・無線コントローラ、30・・・携帯型ゲーム機、32・・・PC、50・・・インタフェース部、52・・・データ転送部、54・・・通信負荷監視部、56・・・レイテンシ判定部、58・・・通信タイミング設定部、60・・・クロック部。