(57)【特許請求の範囲】
【請求項１】
撮像手段、表示手段及び通信手段を備えたコンピュータに、前記撮像手段により撮影されたライブビューに対して、当該ライブビュー内におけるマーカの位置を基準として形成される仮想３次元空間に配置されたオブジェクトを合成表示させるとともに、他コンピュータと通信させることでマルチプレイ型のゲームを実行させるためのプログラムであって、
前記ライブビューから前記マーカを認識できない認識不能状態であることを検出する認識不能状態検出手段、
前記認識不能状態が検出された場合に、他コンピュータへ認識不能信号を送信する認識不能信号送信制御手段、
前記ゲームの参加コンピュータそれぞれの前記認識不能状態の有無を用いて、自コンピュータがホスト機として機能すべきか否かを判断するホスト機能発現判断手段、
前記ホスト機能発現判断手段により機能すべきと判断された場合に、前記仮想３次元空間中の前記オブジェクトの制御とその制御データの配信とを実行するホスト機能実行制御手段、
として前記コンピュータを機能させるためのプログラム。
【請求項２】
撮像手段、表示手段及び通信手段を備えたコンピュータに、前記撮像手段により撮影されたライブビューに対して、当該ライブビュー内におけるマーカの位置を基準として形成される仮想３次元空間に配置されたオブジェクトを合成表示させるとともに、他コンピュータと通信させることでマルチプレイ型のゲームを実行させるためのプログラムであって、
前記ライブビューから前記マーカを認識できない認識不能状態であることを検出する認識不能状態検出手段、
自コンピュータがホスト機として機能しており、且つ、前記認識不能状態が検出された場合に、ホスト機の機能継承を要求する機能継承信号を他コンピュータへ送信する機能継承信号送信制御手段、
他コンピュータから前記機能継承信号を受信した場合に、自コンピュータがホスト機として機能すべきか否かを判断するホスト機能発現判断手段、
前記ホスト機能発現判断手段により機能すべきと判断された場合に、前記仮想３次元空間中の前記オブジェクトの制御とその制御データの配信とを実行するホスト機能実行制御手段、
として前記コンピュータを機能させるためのプログラム。
【請求項３】
前記ホスト機能実行制御手段により自コンピュータがホスト機として機能していない場合に、ホスト機として機能している他コンピュータから前記オブジェクトの制御データを受信して、前記オブジェクトを制御する非ホスト時オブジェクト制御手段として前記コンピュータを更に機能させるための請求項１又は２に記載のプログラム。
【請求項４】
前記ゲームの参加コンピュータ毎のホスト機となる順番を設定する順番設定手段として前記コンピュータを更に機能させ、
前記ホスト機能発現判断手段は、更に、前記順番設定手段により設定された順番を用いて、ホスト機として機能すべきか否かを判断する、
請求項１〜３の何れか一項に記載のプログラム。
【請求項５】
前記撮影手段による前記マーカの撮影画像を用いて、前記マーカに対する自コンピュータの距離を算出するマーカ距離算出手段、
前記マーカ距離算出手段により算出された距離を他コンピュータへ送信するマーカ距離送信手段、
として前記コンピュータを更に機能させ、
前記順番設定手段は、参加コンピュータそれぞれの前記マーカに対する距離を用いて、ホスト機となる順番を設定する、
請求項４に記載のプログラム。
【請求項６】
前記ホスト機能実行制御手段は、当該制御開始から所定期間、前記オブジェクトの移動速度及び／又は動作速度を低減させて前記オブジェクトを制御する制御開始時特殊制御手段を有する、
請求項１〜５の何れか一項に記載のプログラム。
【請求項７】
前記ホスト機能実行制御手段は、前記ライブビュー中の前記マーカの画像位置に基づいて、前記オブジェクトの移動方向を制御する移動方向制御手段を有する、
請求項１〜６の何れか一項に記載のプログラム。
【請求項８】
前記移動方向制御手段は、前記マーカの画像位置が前記ライブビューの周部の場合、中央部の場合に比べて高確度で前記オブジェクトを前記マーカの方向へ移動させる移動方向を選択するように移動方向を制御する、
請求項７に記載のプログラム。
【請求項９】
請求項１〜８の何れか一項に記載のプログラムを記憶したコンピュータ読取り可能な情報記憶媒体。
【請求項１０】
撮像手段、表示手段及び通信手段を備え、前記撮影手段により撮影されたライブビューに対して、当該ライブビュー内におけるマーカの位置を基準として形成される仮想３次元空間に配置されたオブジェクトを合成表示するとともに、他コンピュータと通信しながらマルチプレイ型のビデオゲームを実行するためのゲーム装置であって、
前記ライブビューから前記マーカを認識できない認識不能状態であることを検出する認識不能状態検出手段と、
前記認識不能状態が検出された場合に、他コンピュータへ認識不能信号を送信する認識不能信号送信制御手段と、
前記ゲームの参加コンピュータそれぞれの前記認識不能状態の有無を用いて、自コンピュータがホスト機として機能すべきか否かを判断するホスト機能発現判断手段と、
前記ホスト機能発現判断手段により機能すべきと判断された場合、前記仮想３次元空間中の前記オブジェクトの制御とその制御データの配信とを実行するホスト機能実行制御手段と、
を備えるゲーム装置。
【請求項１１】
撮像手段、表示手段及び通信手段を備え、前記撮像手段により撮影されたライブビューに対して、当該ライブビュー内におけるマーカの位置を基準として形成される仮想３次元空間に配置されたオブジェクトを合成表示するとともに、他コンピュータと通信しながらマルチプレイ型のゲームを実行するためのゲーム装置であって、
前記ライブビューから前記マーカを認識できない認識不能状態であることを検出する認識不能状態検出手段と、
自コンピュータがホスト機として機能しており、且つ、前記認識不能状態が検出された場合に、ホスト機の機能継承を要求する機能継承信号を他コンピュータへ送信する機能継承信号送信制御手段と、
他コンピュータから前記機能継承信号を受信した場合に、自コンピュータがホスト機として機能すべきか否かを判断するホスト機能発現判断手段と、
前記ホスト機能発現判断手段により機能すべきと判断された場合に、前記仮想３次元空間中の前記オブジェクトの制御とその制御データの配信とを実行するホスト機能実行制御手段と、
を備えるゲーム装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータに拡張現実技術を利用したゲームを実行させるためのプログラム等に関する。
【背景技術】
【０００２】
拡張現実（AR：Augmented Reality）技術の一つとして、ビデオカメラで撮影した画像を解析して現実空間とＣＧ空間との座標合わせを行い、ビデオ撮影した画像（いわゆるライブビュー）上にＣＧを合成表示することでＡＲ空間を表示する技術が知られるところである。
【０００３】
近年では、ビデオゲームにおいてもＡＲ技術を用いたものが登場するようになってきている。こうしたＡＲ技術を利用したゲームでは、ゲームキャラクタのオブジェクトを配置するＣＧ空間（コンピュータグラフィックス空間）を如何にカメラで撮影されている現実空間とマッチさせるかが鍵となる。これに関連する公知技術としては、固定位置のカメラで撮影した拡張現実マーカ（ＡＲマーカ）の画像を解析し、当該拡張現実マーカが配置されている現実の平面とマッチするように仮想マップを生成する技術が知られている（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１０−４９６９０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
さて、ゲームスタイルとしては、シングルプレイと同じぐらいマルチプレイも人気がある。マルチプレイスタイルのＡＲゲームを想定すると、プレーヤ毎にカメラを用意して（例えば、ＣＣＤカメラモジュールを搭載した携帯型ゲーム装置を持って）それぞれが異なる視点位置から見るようにしてＡＲゲームをプレイするケースが考えられる。そして、マルチプレイとしての醍醐味を考えるならば、ＡＲ空間に配置されるゲームキャラクタ等のＡＲ表示体の存在が共通であるケースが考えられる。具体的には、プレーヤ全員で共通の敵キャラクタを攻撃するシューティングゲームやＲＰＧ、プレーヤがそれぞれの視点から見て楽しめる仮想ペットの育成ゲームなどがこれに当たる。
【０００６】
こうした共通するキャラクタが登場するゲームでは、ゲームに参加するゲーム装置の何れかでこの共通するキャラクタの制御を行わせ、他のゲーム装置へ適宜制御結果を配信する形態が想定される。しかし、特定のゲーム装置に制御を任せた場合、当該ゲーム装置のカメラがＡＲマーカを認識できない状態になるとゲーム続行が困難となる。
【０００７】
本発明は、こうした事情を鑑みて考えられたものであり、拡張現実空間を利用したマルチプレイ型のゲームの品質向上を目的とする。より具体的には、ＡＲマーカの認識不能にともなうゲーム中断を低減することを目指すものである。
【課題を解決するための手段】
【０００８】
上述の課題を解決するための第１の形態は、撮像手段、表示手段及び通信手段を備えたコンピュータに、前記撮像手段により撮影されたライブビューに対して、当該ライブビュー内におけるマーカの位置を基準として形成される仮想３次元空間に配置されたオブジェクトを合成表示させるとともに、他コンピュータと通信させることでマルチプレイ型のゲームを実行させるためのプログラムであって、
前記ライブビューから前記マーカを認識できない認識不能状態であることを検出する認識不能状態検出手段（例えば、図１の制御基板１５５０、図１１の処理部２００、ゲーム演算部２０２、図１２の認識状態判定部２２２、図１９のステップＳ６０〜Ｓ６４）、
前記認識不能状態が検出された場合に、他コンピュータへ認識不能信号を送信する認識不能信号送信制御手段（例えば、図１の制御基板１５５０、図１１の処理部２００、ゲーム演算部２０２、図１２の認識不能信号送信制御部２２３、図２０のステップＳ１１２〜Ｓ１１６）、
前記ゲームの参加コンピュータそれぞれの前記認識不能状態の有無を用いて、自コンピュータがホスト機として機能すべきか否かを判断するホスト機能発現判断手段（例えば、図１の制御基板１５５０、図１１の処理部２００、ゲーム演算部２０２、図１２のホスト機能発現判断部２２４、図１４のマーカ認識状態５２５、図１７のステップＳ１１０、Ｓ１５０）、
前記ホスト機能発現判断手段により機能すべきと判断された場合に、前記仮想３次元空間中の前記オブジェクトの制御とその制御データの配信とを実行するホスト機能実行制御手段（例えば、図１の制御基板１５５０、図１１の処理部２００、ゲーム演算部２０２、図１２のホスト機能実行制御部２４９、図１７のステップＳ１５２）、
として前記コンピュータを機能させるためのプログラムである。
【０００９】
また、別形態として、撮像手段、表示手段及び通信手段を備え、前記撮影手段により撮影されたライブビューに対して、当該ライブビュー内におけるマーカの位置を基準として形成される仮想３次元空間に配置されたオブジェクトを合成表示するとともに、他コンピュータと通信しながらマルチプレイ型のビデオゲームを実行するためのゲーム装置であって、前記ライブビューから前記マーカを認識できない認識不能状態であることを検出する認識不能状態検出手段と、前記認識不能状態が検出された場合に、他コンピュータへ認識不能信号を送信する認識不能信号送信制御手段と、前記ゲームの参加コンピュータそれぞれの前記認識不能状態の有無を用いて、自コンピュータがホスト機として機能すべきか否かを判断するホスト機能発現判断手段と、前記ホスト機能発現判断手段により機能すべきと判断された場合、前記仮想３次元空間中の前記オブジェクトの制御とその制御データの配信とを実行するホスト機能実行制御手段と、を備えるゲーム装置を構成することができる。
【００１０】
第１の形態によれば、ゲームに参加するコンピュータは、マーカを認識できなくなると互いに認識不能信号を送信し合う。そして、それぞれが認識不能信号の有無を用いてホスト機として機能すべきか否かを判断し、機能すべきときにはホスト機として仮想３次元空間のオブジェクトの制御と制御データの配信を行う。
つまり、マーカを認識できるコンピュータが適宜ホスト機能を機能させることでマーカ認識不能状態によるゲーム中断のリスクを低減できる。
【００１１】
第２の形態は、撮像手段、表示手段及び通信手段を備えたコンピュータに、前記撮像手段により撮影されたライブビューに対して、当該ライブビュー内におけるマーカの位置を基準として形成される仮想３次元空間に配置されたオブジェクトを合成表示させるとともに、他コンピュータと通信させることでマルチプレイ型のゲームを実行させるためのプログラムであって、
前記ライブビューから前記マーカを認識できない認識不能状態であることを検出する認識不能状態検出手段、
自コンピュータがホスト機として機能しており、且つ、前記認識不能状態が検出された場合に、ホスト機の機能継承を要求する機能継承信号を他コンピュータへ送信する機能継承信号送信制御手段（例えば、図１の制御基板１５５０、図１１の処理部２００、ゲーム演算部２０２、図２５の機能継承信号送信制御部２２３Ｃ、図２６のステップＳ１１２Ｃ〜Ｓ１１６Ｃ）、
他コンピュータから前記機能継承信号を受信した場合に、自コンピュータがホスト機として機能すべきか否かを判断するホスト機能発現判断手段（例えば、図１の制御基板１５５０、図１１の処理部２００、ゲーム演算部２０２、図２５のホスト機能発現判断部２２４、図２６のステップＳ１１８Ｃ〜Ｓ１２０Ｃ）
前記ホスト機能発現判断手段により機能すべきと判断された場合に、前記仮想３次元空間中の前記オブジェクトの制御とその制御データの配信とを実行するホスト機能実行制御手段、として前記コンピュータを機能させるためのプログラムである。
【００１２】
また、別形態として、撮像手段、表示手段及び通信手段を備え、前記撮像手段により撮影されたライブビューに対して、当該ライブビュー内におけるマーカの位置を基準として形成される仮想３次元空間に配置されたオブジェクトを合成表示するとともに、他コンピュータと通信しながらマルチプレイ型のゲームを実行するためのゲーム装置であって、前記ライブビューから前記マーカを認識できない認識不能状態であることを検出する認識不能状態検出手段と、自コンピュータがホスト機として機能しており、且つ、前記認識不能状態が検出された場合に、ホスト機の機能継承を要求する機能継承信号を他コンピュータへ送信する機能継承信号送信制御手段と、他コンピュータから前記機能継承信号を受信した場合に、自コンピュータがホスト機として機能すべきか否かを判断するホスト機能発現判断手段と、前記ホスト機能発現判断手段により機能すべきと判断された場合に、前記仮想３次元空間中の前記オブジェクトの制御とその制御データの配信とを実行するホスト機能実行制御手段と、を備えるゲーム装置を構成することができる。
【００１３】
第２の形態によれば、ホスト機として機能していてマーカが認識できなくなった場合に機能継承を他コンピュータに要求する信号（機能継承信号）を発信することができる。その一方で、機能継承信号を受信した場合に、自コンピュータがホスト機として機能すべきか否かを判断可能であり、機能すべき場合にはホスト機能を継承する。マーカを認識できるコンピュータがホスト機能を継承することでマーカ認識不能状態によるゲーム中断のリスクを低減できる。
【００１４】
また、第１又は第２の形態においては、例えば、第３の形態として、前記ホスト機能実行制御手段により自コンピュータがホスト機として機能していない場合に、ホスト機として機能している他コンピュータから前記オブジェクトの制御データを受信して、前記オブジェクトを制御する非ホスト時オブジェクト制御手段として前記コンピュータを更に機能させるためのプログラムを構成してよいことは勿論である。
【００１５】
第４の形態は、前記ゲームの参加コンピュータ毎のホスト機となる順番を設定する順番設定手段（例えば、図１の制御基板１５５０、図１１の処理部２００、図１２のゲーム演算部２０２、発現優先順位設定部２０５、図１８のステップＳ１０）として前記コンピュータを更に機能させ、前記ホスト機能発現判断手段は、更に、前記順番設定手段により設定された順番を用いて、ホスト機として機能すべきか否かを判断する、第１〜第３の何れかの形態のプログラムである。
【００１６】
第４の形態によれば、第１〜第３の何れかの形態と同様の効果が得られるとともに、所定の順番に従ってホスト機として機能すべきか否かを判断できる。つまり、順番に従ってホスト機能を継承させることができる。
【００１７】
第５の形態は、前記撮影手段による前記マーカの撮影画像を用いて、前記マーカに対する自コンピュータの距離を算出するマーカ距離算出手段（例えば、図１の制御基板１５５０、図１１の処理部２００、図１２のゲーム演算部２０２、自機情報算出部２０６、図１９のステップＳ６８）、
前記マーカ距離算出手段により算出された距離を他コンピュータへ送信するマーカ距離送信手段（例えば、図１の制御基板１５５０、無線通信モジュール１５５３、図１１の処理部２００、通信部３７０、図１２の自機情報送信制御部２２０、図２２のステップＳ１７０）、として前記コンピュータを更に機能させ、
前記順番設定手段は、参加コンピュータそれぞれの前記マーカに対する距離を用いて、ホスト機となる順番を設定する（例えば、図２４のステップＳ２５０〜Ｓ２５２）、第４の形態のプログラムである。
【００１８】
第５の形態によれば、第４の形態と同様の効果が得られるとともに、例えば、参加コンピュータからマーカまでの距離が大きい順に順番を設定すると、マーカを含めて広い範囲を撮影できるコンピュータから順にホスト機になることとなる。よって、ホスト機能を発現するコンピュータが変化する頻度を少なくすることができる。
【００１９】
第６の形態は、前記ホスト機能実行制御手段が、当該制御開始から所定期間、前記オブジェクトの移動速度及び／又は動作速度を低減させて前記オブジェクトを制御する制御開始時特殊制御手段（例えば、図１２の制御開始時特殊制御部２３６、図２１のステップＳ２２４〜Ｓ２２６）を有する、第１〜第５の何れかの形態のプログラムである。
【００２０】
第６の形態によれば、第１〜第５の何れかの形態と同様の効果が得られるとともに、ホスト機能を担うコンピュータが変化する前後で、オブジェクトの位置が不自然に大きく変化するのを防ぐことができる。
【００２１】
第７の形態は、前記ホスト機能実行制御手段が、前記ライブビュー中の前記マーカの画像位置に基づいて、前記オブジェクトの移動方向を制御する移動方向制御手段（例えば、図１２の移動方向制御部２３７、図２１のステップＳ２２８）を有する、第１〜第６の何れかの形態のプログラムである。
【００２２】
第７の形態によれば、第１〜第６の形態の何れかと同様の効果が得られるとともに、ホスト機能を担うコンピュータにおけるライブビュー中におけるマーカの画像位置に基づいてオブジェクトを移動制御することができる。つまり、ホスト機能を担うコンピュータにとって都合の良い位置へオブジェクトを優先的に移動させるといったことが可能となる。
【００２３】
第８の形態は、前記移動方向制御手段が、前記マーカの画像位置が前記ライブビューの周部の場合、中央部の場合に比べて高確度で前記オブジェクトを前記マーカの方向へ移動させる移動方向を選択するように移動方向を制御する、第７の形態のプログラムである。
【００２４】
第８の形態によれば、第７の形態と同様の効果が得られるとともに、マーカがライブビューの画面周部で有るほどキャラクタをより高い確率でマーカに近づけるように制御できる。よって、プレーヤがオブジェクトを画面中央にとらえようとする行為（通常、人は注目するものを画面の中央にとらえようとする）が、マーカを撮影画面の中央にとらえようとする行為につながる。よって、マーカが常に認識されやすくなり、ひいては、ホスト機能を発現するコンピュータが変化する頻度を少なくすることができる。
【００２５】
第９の形態は、第１〜第８の何れかの形態のプログラムを記憶したコンピュータ読み取り可能な情報記憶媒体である。
【００２６】
ここで言う「情報記憶媒体」とは、例えば磁気ディスクや光学ディスク、ＩＣメモリなどを含む。第９の形態によれば、第１〜第８の形態の何れかのプログラムをコンピュータに読み取らせて実行させることによって、コンピュータに第１〜第８の形態の何れかと同様の効果を発揮させることができる。
【図面の簡単な説明】
【００２７】
【図１】第１実施形態においてゲームプレイために使用されるコンピュータに相当するゲーム装置の構成例を示す図。
【図２】第１実施形態におけるプレイスタイルを説明するための概念図。
【図３】ゲーム画面及びライブビューの一例を示す図。
【図４】敵キャラクタを配置制御するために設定される領域の概念図。
【図５】基本領域の概念図。
【図６】要素領域の設定方法を示す概念図。
【図７】要素領域の奥行の考え方を示す概念図。
【図８】ＡＲマーカに対するプレーヤ視点の相対位置と相対姿勢の利用形態について説明するための概念図。
【図９】ＡＲマーカをロストした場合における相対位置と相対姿勢の利用形態を説明する原理図。
【図１０】ホスト機能発現機の切り換えの仕組みを説明するための概念図。
【図１１】第１実施形態における機能構成例を示す機能ブロック図。
【図１２】第１実施形態におけるゲーム演算部の機能構例を示す機能ブロック図。
【図１３】ＡＲマーカ登録データのデータ構成例を示す図。
【図１４】ゲーム参加機登録データのデータ構成例を示す図。
【図１５】自機情報キューのデータ構成例を示す図。
【図１６】敵キャラクタ配置情報キューのデータ構成例を示す図。
【図１７】第１実施形態における主たる処理の流れを説明するためのフローチャート。
【図１８】ゲーム前準備処理流れを説明するためのフローチャート。
【図１９】自機情報算出処理流れを説明するためのフローチャート。
【図２０】ホスト機能発現機設定処理流れを説明するためのフローチャート。
【図２１】ホスト機能実行処理流れを説明するためのフローチャート。
【図２２】基本領域設定処理の流れを説明するためのフローチャート。
【図２３】要素領域設定処理流れを説明するためのフローチャート。
【図２４】ホスト機能実行処理流れを説明するためのフローチャート。
【図２５】第２実施形態におけるゲーム演算部の機能構成の一例を示す機能ブロック図。
【図２６】第２実施形態におけるホスト機能発現機設定処理の流れを説明するためのフローチャート。
【図２７】第２実施形態におけるホスト機能発現機設定処理の変形例の流れを説明するためのフローチャート。
【図２８】第２実施形態におけるホスト機能発現機設定処理の変形例の流れを説明するためのフローチャート。
【図２９】仮想カメラとプレーヤ視点とプレーヤキャラクタの相対位置関係のありようの変形例を示す概念図。
【発明を実施するための形態】
【００２８】
〔第１実施形態〕
本発明を適用した実施形態として、マーカ方式ＡＲを用いて実現される拡張現実空間内でマルチプレイ型シューティングゲームを実行する例を挙げて説明する。
【００２９】
図１は、本実施形態においてゲームプレイのために使用されるコンピュータであり、電子機器の一種であるゲーム装置１５００の構成例を示す図であって、（１）正面外観図、（２）背面外観図である。ゲーム装置１５００は、方向入力キー１５０２と、ホームキー１５０４と、タッチパネル１５０６と、スピーカ１５１０と、マイク１５１２と、ＧＰＳ（Global Positioning System）アンテナ１５１４と、ＣＣＤカメラモジュール１５１６と、制御基板１５５０と、コンピュータ読み出し可能な情報記憶媒体であるメモリカード１５４０からデータを読み書きできるメモリカード読取装置１５４２と、を備える。その他、図示されていない内蔵バッテリーや電源ボタン、音量調節ボタン等が設けられている。
【００３０】
ＣＣＤカメラモジュール１５１６は、オートフォーカス機構と、ＣＣＤイメージセンサと、イメージ信号生成チップとを搭載したモジュールであって、ゲーム装置１５００の背面方向を撮影できるように配置されている。尚、イメージセンサ素子はＣＣＤに限らず、ＣＭＯＳなどその他の方式の素子でも良い。
【００３１】
制御基板１５５０は、ＣＰＵ（Central Processing Unit））１５５１やＧＰＵ（Graphics Processing Unit）、ＤＳＰ（Digital Signal Processor）などの各種マイクロプロセッサ、ＡＳＩＣ（Application Specific Integrated Circuit）、ＶＲＡＭやＲＡＭ，ＲＯＭ等の各種ＩＣメモリ１５５２を適宜搭載する。
【００３２】
そして、制御基板１５５０には、携帯電話や無線ＬＡＮなどの無線基地局と無線接続するための無線通信モジュール１５５３と、ＧＰＳモジュール１５５４と、電子コンパス１５５５と、３軸ジャイロ１５５６と、３軸加速度センサ１５５７とが搭載されている。
その他、タッチパネル１５０６のドライバ回路、方向入力キー１５０２及びホームキー１５０４からの信号を受信する回路、スピーカ１５１０へ音声信号を出力する出力アンプ回路、マイク１５１２から入力された音声の信号を生成する入力信号生成回路、メモリカード読取装置１５４２への信号入出力回路といった所謂Ｉ／Ｆ回路（インターフェース回路）、が搭載されている。これら制御基板１５５０に搭載されている各要素は、それぞれバス回路などを介して電気的に接続され、データの読み書きや信号の送受信が可能に接続されている。
【００３３】
ＧＰＳモジュール１５５４は、ＧＰＳアンテナ１５１４とともにＧＰＳを利用した位置情報を取得する手段を構成する。ＧＰＳモジュール１５５４は、ＧＰＳアンテナ１５１４で受信したＧＰＳ衛星３からの信号に基づいて、所定時間毎（例えば、１秒毎）に、位置情報（例えば、緯度・経度）及びその他の情報（絶対時間）を、制御基板１５５０で演算処理可能なデータとして出力する。尚、測位に利用するシステムはＧＰＳに限らない。その他の衛星測位システムでも良いし、衛星を用いない測位システムを用いることもできる。後者の例としては、例えば、無線通信モジュール１５５３が無線接続できる無線基地局から当該基地局に予め設定されている位置情報を取得したり、３つの無線基地局からの信号到達時間差を利用した三角測量方式により位置情報を算出するとしても良い。
【００３４】
制御基板１５５０は、ゲーム実行に必要なゲームプログラムやデータをメモリカード１５４０から読み出してＩＣメモリ１５５２に一時記憶する。そして、ゲームプログラムを実行して演算処理を実行し、方向入力キー１５０２やホームキー１５０４、タッチパネル１５０６からの操作入力、３軸ジャイロ１５５６や３軸加速度センサ１５５７で検出される姿勢変化や加速度変化に応じてゲーム装置１５００の各部を制御してビデオゲームを実行する。尚、本実施形態では、ゲーム装置１５００は必要なプログラムや各種設定データをメモリカード１５４０から読み出す構成としているが、サーバ装置等から通信回線１を介してダウンロードする構成としても良い。
尚、ゲーム装置１５００はコンピュータであるから本明細書で言う「自機」は「自コンピュータ」と読み替えることができる。同様に「他機」は「他コンピュータ」と読み替えることができる。
【００３５】
［ゲームの概要］
次に、本実施形態におけるゲームの概要を説明する。
図２は、本実施形態におけるプレイスタイルを説明するための概念図であって、（１）現実空間における様子を示す斜視図、（２）ゲーム装置１５００のＣＣＤカメラモジュール１５１６と、ＡＲマーカ１０との関係を示す図、（３）ゲームに登場するオブジェクトを配置する仮想３次元空間における様子を示す斜視図である。
【００３６】
本実施形態におけるビデオゲームは、ＡＲマーカ１０を利用して実現されるＡＲ空間を舞台としたゲーム、いわゆるＡＲゲームに属するマルチプレイシューティングゲームに属する。図２（１）に示すように、プレーヤＰＬ１〜ＰＬ３は、それぞれゲーム装置１５００を手に持って、テーブル９等に置かれたＡＲマーカ１０をＣＣＤカメラモジュール１５１６で撮影しながらプレイする。図中のプレーヤＰＬ１のゲーム装置１５００が当初のホスト機であって、ゲームに参加するクライアント機の受付処理を行ったり、敵キャラクタ７などのＮＰＣの制御を受け持つ。プレーヤＰＬ２，ＰＬ３のゲーム装置１５００がゲスト機であり、ＮＰＣの制御データをホスト機から取得して利用する。尚、プレーヤの数は図に示すような３名に限らないのは勿論である。
【００３７】
本実施形態におけるＡＲマーカ１０は、少なくとも一面に基準方向が表されるとともに、当該マーカの種類を識別するためのデザインが施された規定形状のカードであり、複数種類存在する。
本実施形態のゲーム装置１５００では、ＣＣＤカメラモジュール１５１６は装置本体の背面方向を撮影するように、装置本体の背面側に固定されている。よって、本実施形態では、プレーヤの視点位置は、ゲーム装置１５００の位置であり、ＣＣＤカメラモジュール１５１６の視点位置と同じに扱うことができる。同様に、プレーヤの視点姿勢は、ゲーム装置１５００の姿勢であり、ＣＣＤカメラモジュール１５１６の姿勢と同じ扱いとなる。
【００３８】
図２（２）に示すように、ゲーム装置１５００は、ＣＣＤカメラモジュール１５１６で撮影した画像からＡＲマーカ１０を検出するとともにその種類を認識する。また、認識したＡＲマーカ１０までの３次元の相対位置（Ｘｃ，Ｙｃ，Ｚｃ）や相対姿勢（ωｐ，ωｙ，ωｒ）を計測する。例えば、ＡＲマーカ１０（カード）の実サイズが規定されているので、ＣＣＤカメラモジュール１５１６の撮影画像中のＡＲマーカ１０が占める画素サイズから現実空間における尺度を基準とした相対位置を求めることができる。
【００３９】
そして、計測した相対位置や相対姿勢に基づいて、ＡＲマーカ１０を配置した面（例えば、テーブル面）が仮想３次元空間内の基準面（例えば、ゲーム世界における地面、仮想マップなどとも呼ぶ）と一致するように、ゲーム空間を形成する。ゲーム空間は仮想３次元空間の座標系（Ｘｗ，Ｙｗ，Ｚｗ）で表され、ＡＲマーカ１０を基準とした実空間の座標系（Ｘｍ，Ｙｍ，Ｚｍ）に合致させる。
【００４０】
図２（３）に示すように、仮想３次元空間は所謂ＣＧ空間である。仮想３次元空間には、標的となる敵キャラクタ７や背景物などのオブジェクトが配置されてゲーム空間が形成される。そして、仮想３次元空間には、プレーヤＰＬ１〜ＰＬ３それぞれのプレーヤキャラクタＰＣ１〜ＰＣ３の他、敵キャラクタ７や、各キャラクタから発射される飛翔体６（図２では非図示；図３にて図示）などのオブジェクトも配置される。
【００４１】
各ゲーム装置１５００における仮想３次元空間は、ＡＲマーカ１０が基準とされるため、原則として共通の座標軸として定義される。仮想３次元空間には、各ゲーム装置１５００の仮想カメラＣＭ１〜ＣＭ３が設定される。各ゲーム装置１５００に対応するプレーヤキャラクタＰＣ１〜ＰＣ３は、対応するゲーム装置の仮想カメラＣＭ１〜ＣＭ３に対して、所定の相対位置（Ｘｐ，Ｙｐ，Ｚｐ）に配置される。具体的には、本実施形態では、三人称視点に相当するように、プレーヤキャラクタＰＣ１〜ＰＣ３は仮想カメラＣＭ１〜ＣＭ３の斜め下前方に配置される。尚、プレーヤキャラクタと仮想カメラとの相対位置関係は、予め決定されているとは言っても絶対的な固定値を意味するものでは無く、適当なズレや揺らぎを含むことができる。
【００４２】
図３は、本実施形態におけるゲーム画面及びライブビューの一例を示す図であって、（１）プレーヤＰＬ１が所持するゲーム装置１５００におけるゲーム画面の例、（２）ＣＣＤカメラモジュール１５１６により撮影されるライブビューの例である。
【００４３】
各ゲーム装置１５００では、それぞれが対応する仮想カメラＣＭ１〜ＣＭ３から見たＣＧ（コンピュータグラフィックス）画像を生成し、それをＣＣＤカメラモジュール１５１６で撮影したライブビューに合成表示する。
ちなみに、図３（１）の例では、プレーヤＰＬ１のプレーヤキャラクタＰＣ１と、ＡＲマーカ１０の周りにいる敵キャラクタ７と、テーブル９脇の他のプレーヤＰＬ２と、対応するプレーヤキャラクタＰＣ２とが画面に映っている。また、画面中央には、プレーヤＰＬ１がゲーム中に使用する射撃用の照準８が表示されている。このように現実空間の映像にゲームキャラクタ等のＣＧが合成されてプレーヤに認識される仮想世界が、ゲームの舞台となる「拡張現実空間」である。
【００４４】
本実施形態では、ＣＣＤカメラモジュール１５１６の撮影画角と仮想カメラＣＭ１〜ＣＭ３の画と角は異なる。
ＣＣＤカメラモジュール１５１６は、撮影範囲が広い事に意味があるので、撮影画角は広角に設定されている。例えば、３５ｍｍフィルム用レンズ換算で焦点距離１５ｍｍ〜２４ｍｍ、公称対角画角９０°前後などとする。一方、仮想カメラＣＭ１〜ＣＭ３の撮影画角は、ゲーム装置１５００のタッチパネル１５０６越しに現実空間を透かし見るようにしながらＡＲゲームをプレイすることを考えて、ＣＣＤカメラモジュール１５１６の画角の概ね５０％程度となるように狭く設定されている。プレイスタイルを考慮して、プレーヤが軽くひじを曲げた状態でゲーム装置１５００を前方にかざした時に、あたかもタッチパネル１５０６の表示部分から現実世界を透かし見ているように錯覚させる撮影画角とすると好適である。例えば、３５ｍｍフィルム用レンズ換算で４０ｍｍ〜５５ｍｍ、公称対角画角４５°前後などとする。
従って、図３（１）で示したゲーム画面の背景は、図３（２）で示すＣＣＤカメラモジュール１５１６で撮影したライブビューそのままではなく、仮想カメラＣＭ１〜ＣＭ３の撮影画角に合致するようにクロップ（画像の端をカットして使用）されて得られたものである。
【００４５】
［敵キャラクタの配置について］
さて、前述のように本実施形態のゲームはマーカ方式のＡＲゲームであるので、現実空間と仮想３次元空間の座標系を適切にマッチングさせるためには、ＡＲマーカ１０を常にＣＣＤカメラモジュール１５１６の撮影範囲に含まれるようにプレイするのが望ましい。
【００４６】
シューティングゲームとしての特性上、プレーヤは照準８を敵キャラクタ７に合わせるようにゲーム装置１５００の位置や姿勢を変化させながらプレイすることになる。よって、敵キャラクタ７がＡＲマーカ１０からあまり離れると、敵キャラクタ７を狙う行為自体がＡＲマーカ１０のロスト（撮影範囲に写らなくなる状態）を誘発することになる。しかし、プレーヤは照準８が敵キャラクタ７から外れないようにゲーム装置１５００の位置や姿勢を保とうとする。そのため、上手く敵キャラクタ７の位置をコントロールするならば、ＡＲマーカ１０が撮影範囲内に含まれるように（換言するとＡＲマーカ１０が撮影範囲外とならないように）仕向けることもできる。
【００４７】
そこで本実施形態では、図４に示すように、ゲームに参加するゲーム装置の位置や姿勢に応じてＡＲマーカ１０をロストし難いように敵キャラクタ７を配置できる配置領域１２（図中、網掛け表示された範囲）を設定し、敵キャラクタ７をこの配置領域１２内に留まるように配置制御する。この配置領域１２は、本実施形態では基本領域１３と、ゲーム参加機毎（つまりはプレーヤ視点毎）に求められる要素領域１４との重合領域として設定される。尚、図の例では、理解を容易にするためにゲーム装置１５００を二つのみ表示している。
【００４８】
図５は、基本領域１３の設定方法を示す概念図である。
基本領域１３は、ＡＲマーカ１０を中心とし、基本長さＬｂで規定される所定形状の範囲である。そして、基本長さＬｂは、ゲーム参加機のＡＲマーカ１０からの相対距離Ｌｃ（図２（２）参照）を変数とした関数ｆ（Ｌｃ）で記述される。
【００４９】
基本領域１３の形状は、ＡＲマーカ１０の種類によって予め設定されている。図５の例では、基本長さＬｂが半径の球形を例示しているが、例えば、立方体形状の範囲として、基本長さＬｂを立方体中心から８つの頂点までの距離としても良い。形状と基準長Ｌｂを形状のどこの寸法に割り当てるかは適宜変更できる。
【００５０】
関数ｆ（Ｌｃ）の変数となる相対距離Ｌｃは、ゲーム参加機それぞれのＡＲマーカ１０に対する個別の相対距離Ｌｃの内、最小の相対距離Ｌｃを採用する。但し、関数ｆ（Ｌｃ）の大きさに最小値が設定されている。この最小値は、敵キャラクタ７の行動範囲が小さくなり過ぎないように考慮して予め設定されている。尚、関数ｆ（Ｌｃ）の変数として採用される相対距離Ｌｃは、ゲーム参加機別の相対距離Ｌｃのうちの最小値に限らず、最大値や平均値、中央値などとしても良い。
【００５１】
図６は、要素領域１４の設定方法を示す概念図である。要素領域１４は、ゲーム装置１５００（つまりプレーヤ視点）を基準として、ＡＲマーカ１０がＣＣＤカメラモジュール１５１６の撮影範囲から外れない程度の姿勢変化を許容できる撮影範囲として定められる。
【００５２】
具体的には、今現在、ＣＣＤカメラモジュール１５１６によるライブビューに、図６（１）に示すようにＡＲマーカ１０が写っていると仮定する。尚、外側矩形枠が撮影枠でありライブビューの輪郭を示している。対する内側の矩形枠が、クロップされてゲーム画面の背景として使用される輪郭を示している。
【００５３】
「ＡＲマーカ１０がＣＣＤカメラモジュール１５１６の撮影範囲から外れない程度の姿勢変化を許容できる撮影範囲」を求めるために、本実施形態では先ずゲーム装置１５００の位置が固定されている前提で、どこまでＣＣＤカメラモジュール１５１６の撮影方向の変化を許容できるかを考える。
【００５４】
具体的には、図６（２）に示すように、現在の写っているＡＲマーカ１０のサイズをそのままに、ＡＲマーカ１０の右端と撮影枠の右端が所定条件を満たして近接し、且つＡＲマーカ１０の下端と撮影枠の下端とが近接する条件を満たす「第１姿勢」を求めるとともに、当該姿勢におけるＣＣＤカメラモジュール１５１６の光軸ＡＬ１を求める。そして、第１姿勢から対角方向に撮影方向を振ったと仮定し、ＡＲマーカ１０の左端が撮影枠の左端とが近接し、且つＡＲマーカ１０の上端と撮影枠の上端とが近接する「第２姿勢」を求めるとともに、当該姿勢におけるＣＣＤカメラモジュール１５１６の光軸ＡＬ２を求める。
【００５５】
次いで、図６（３）に示すように、ＡＲマーカ１０の左端と撮影枠の左端が所定条件を満たして近接し、且つＡＲマーカ１０の下端と撮影枠の下端とが近接する条件を満たす「第３姿勢」を求めるとともに、当該姿勢におけるＣＣＤカメラモジュール１５１６の光軸ＡＬ３を求める。そして、第３姿勢から対角方向に撮影方向を振ったと仮定し、ＡＲマーカ１０の右端が撮影枠の右端とが近接し、且つＡＲマーカ１０の上端と撮影枠の上端とが近接する「第４姿勢」を求めるとともに、当該姿勢におけるＣＣＤカメラモジュール１５１６の光軸ＡＬ４を求める。
【００５６】
そして、図６（４）に示すように、要素領域１４をＣＣＤカメラモジュール１５１６の視点位置から４本の光軸ＡＬ１〜ＡＬ４に囲まれた四角錐形領域とする。
【００５７】
この四角錐形領域の高さに相当する要素領域１４の奥行Ｄｂは、プレーヤ視点から見たＡＲマーカ１０の平面方向に対する俯角θｃに基づいて設定される（図７参照）。
【００５８】
図７は、要素領域１４の奥行の考え方を示す概念図である。
図７（１）に示すように、要素領域１４の奥行Ｄｂを、ＡＲマーカ１０を適正に認識できる視点からの最大距離と考える。図７（２）に示すように、ＡＲマーカ１０の認識性能はＣＣＤカメラモジュール１５１６がＡＲマーカ１０を真正面から撮影する状態（俯角θｃ＝π（９０°））が最も高くなり、奥行Ｄｂが最大となる（Ｄｂ１）。そして、ＡＲマーカ１０の平面（デザイン面）に対して俯角θｃが浅くなる（小さくなる）につれて認識性能は低下し（Ｄｂ２）、やがて認識性能が実用的でないレベルに達する（θmin）と考える事ができる。
【００５９】
俯角θｃと奥行Ｄｂとの関係は、ＣＣＤカメラモジュール１５１６の撮像素子や光学系の仕様に基づく解像力や、ＡＲマーカ１０の大きさなどにより決まる。また、本実施形態では、大きさの異なるＡＲマーカ１０を利用可能になっていて、マーカのサイズにより予めカテゴリ分けされている。どのカテゴリに属するかはＡＲマーカ１０のデザイン認識により識別できるようになっている。そこで、図７（３）に示すように、俯角θｃを変数として奥行Ｄｂを算出する関数ｇ（θｃ）を、ＡＲマーカ１０のカテゴリ毎に設定しておいて、認識されたＡＲマーカ１０のカテゴリに応じた関数ｇ（θｃ）を選択し、そのときの俯角θｃを用いて奥行Ｄｂを求める。
【００６０】
ＣＣＤカメラモジュール１５１６の撮影画角よりも仮想カメラＣＭ１〜ＭＣ３の撮影画角が狭いこと、そして照準８がゲーム画面中央に表示されることを考慮すると、要素領域１４で示される撮影範囲内であればプレーヤがゲーム装置１５００の位置や姿勢を多少変化させたとしても、照準８で敵キャラクタ７を狙っているのであれば、ＣＣＤカメラモジュール１５１６の撮影範囲内にＡＲマーカ１０が写るようにすることができる。
【００６１】
さて、図４に示すように、配置領域１２は、基本領域１３とゲーム装置毎（つまりはプレーヤ視点毎）に求めた各要素領域１４（１４ａ，１４ｂ）との４つの領域の重合部分として設定される。
【００６２】
前述のように、本実施形態ではＣＣＤカメラモジュール１５１６の撮影画角に対する仮想カメラＣＭ１〜ＣＭ３の撮影画角との関係、及び照準８がゲーム画面中央に表示されることを合わせると、配置領域１２の中に敵キャラクタ７が配置される限りにおいては、ＡＲマーカ１０が常に正しく認識され、ゲームキャラクタの表示位置が現実空間とずれるなどの不自然な表示は起こらない。
【００６３】
また、タッチパネル１５０６に表示されるゲーム画面上には、ＡＲマーカ１０の姿が映っていなくとも、ＣＣＤカメラモジュール１５１６としてはちゃんとＡＲマーカ１０を撮影し続けることができる。つまり、ゲーム画面内に常にＡＲマーカ１０が写っていない状態でもＡＲゲームは正常に継続され続け、例えば、敵キャラクタ７はＡＲマーカ１０を置いていたテーブル面に沿って歩行するように見える。
プレイ中にＡＲマーカ１０がゲーム画面内に写っていない状態でも、実空間との齟齬のない敵キャラクタ７が表示されることで、プレーヤにとってみればＡＲマーカ１０から離れた場所ではプレイできないのではないかという閉塞感が低減され、今自分が居るその広い空間全てを使ってゲームが行われてしているかのような開放的な感覚が得られることとなり、ＡＲゲームとしての興趣が高まる。
【００６４】
また、こうして設定された配置領域１２は、その時々に応じて変形する複数の要素領域１４の影響により基本領域１３とは異なる形状をなすことになるので、敵キャラクタ７の行動範囲が不規則となりゲームの興趣を高める効果が得られる。
【００６５】
加えて、配置領域１２の設定に基本領域１３を含めることで、全てのゲーム装置１５００でＡＲマーカ１０を認識できない状態となり要素領域１４が得られない事態となっても、敵キャラクタ７の配置位置を適切に保つことができる。
【００６６】
［ＡＲマーカのロストを想定した補助機能：その１］
これまで述べたようにして配置領域１２を設定したとしても、必ずしも常にＡＲマーカ１０を撮影し続けることができるとは限らない。例えば、プレイに興奮してゲーム装置１５００を敵キャラクタ７に向ける動作が過大となり、意図せずにＡＲマーカ１０がＣＣＤカメラモジュール１５１６の撮影範囲から外れることも想定される。そこで本実施形態では、ＡＲマーカ１０をロストした場合でもゲーム進行に不都合が起きないように二つの補助機能を設けている。
【００６７】
先ず、第１の補助機能について説明する。
図８は、第１の補助機能の前提となるＡＲマーカ１０に対するプレーヤ視点の相対位置と相対姿勢の利用形態について説明するための概念図である。
本実施形態におけるゲーム装置１５００は、所定サイクルで時刻ｔ１，ｔ２，…，ｔｍ（ｍは自然数：算出タイミングの識別数）におけるＡＲマーカ１０に対する自身（ＣＣＤカメラモジュール１５１６）の相対位置（Ｘｃｎ，Ｙｃｎ，Ｚｃｎ）及び相対姿勢（ωｐｎ，ωｙｎ，ωｒｎ）を算出する。そして、算出した相対位置及び相対姿勢をキュー（ｑｕｅｕｅ：待ち行列）に先入れ先出し方式で所定数だけ格納・管理する。キューに格納されている相対位置及び相対姿勢はそれぞれ加重平均され、加重平均された値が現在の位置であり現在の姿勢とみなされ、ＣＧ空間における仮想カメラＣＭの位置及び姿勢として用いられる。図８の例では、キューに４セットの相対位置及び相対姿勢が格納されているように例示しているが、格納数は適宜設定することができる。
【００６８】
加重平均における重み付けｗｎ（ｎは自然数：算出タイミングの識別数）は、算出順ｎと、ＡＲマーカ１０からプレーヤ視点までの相対距離Ｌを変数とする重み付け関数ｈ（ｎ，Ｌｃ）によって決定される。
【００６９】
重み付け関数ｈ（ｎ，Ｌｃ）は適宜設定可能であるが、本実施形態では、算出順ｎについては、最も新しい相対位置及び相対姿勢に付与される重み付けｗｎが最も大きく、それ以外が相対的に小さくなるように設定されている。また、相対距離Ｌｃについては、相対距離Ｌｃが大きくなるほど算出順ｎ違いによる重み付けｗｎの差が小さくなり、過去の相対位置及び相対姿勢にも重きがおかれるように設定されている。
【００７０】
ＡＲの表示制御に関わる仮想カメラＣＭの制御に、相対位置及び相対姿勢を均した値（現在位置、現在姿勢と呼ぶ）を用いることによって、ゲーム装置１５００をかざす手の揺れによる所謂手ブレによるジッター（ゲームキャラクタなどのＡＲ表示体の細かな不快な振動）や、ゲーム装置１５００を急激に移動させたり姿勢変化させた場合であって、プレーヤキャラクタ等が瞬間移動すると言った不自然表示を抑制することができる。
【００７１】
また、ゲーム装置１５００がＡＲマーカ１０を遠くから撮影しているほど手ブレ等の影響は大きくなるところであるが、重み付け関数ｈ（ｎ，Ｌｃ）の相対距離Ｌｃについての特性は、相対距離Ｌｃが大きいほど過去値に対する重み付けｗｎが相対的に大きくなるように設定されているので、その影響を軽減できる。加えて、重み付け関数ｈ（ｎ，Ｌｃ）の相対距離Ｌｃの特性によれば、ＡＲマーカ１０を近くから撮影している場合には、過去値への重み付けｗｎが相対的に小さくなる。相対的に手ブレの影響が大きくなることになるが、この場合のブレは近接戦闘の緊迫感や臨場感を演出する視覚効果を生み出すので有益となる。
【００７２】
そして、本実施形態ではこうした加重平均を用いた制御を前提として、ＡＲマーカ１０をロストした場合には、ロストしている間、ＡＲマーカ１０に対する相対位置を固定と仮想し、姿勢変化のみ起きるものと見なして制御する。
【００７３】
図９は、ＡＲマーカ１０をロストした場合における相対位置と相対姿勢の利用形態を説明する原理図である。
本実施形態では、ＡＲマーカ１０をロストした場合、相対位置はＡＲマーカ１０をロストしてから認識が再開されるまでの間、ロストする直前の値に固定される。図９の例では、ｔ４まではＡＲマーカ１０がＣＣＤカメラモジュール１５１６の撮影範囲にあって、正しく認識されて正しくマーカ基準の相対位置が求められていたが、ｔ５のタイミングでＡＲマーカ１０はカメラで写されない「ロスト」した状態になっている。そこで、キューに格納されたタイミングｔ５〜ｔ７の間の相対位置の値は、ロスト直前のｔ４のタイミングにおける値に固定する。一方、姿勢については加重平均を行う。つまり、タイミングｔ５〜ｔ７の間ゲーム装置１５００は位置移動せずに姿勢変化していると見なす。
【００７４】
実際のゲーム装置１５００はロスト中でも位置移動しているかもしれないが、一時的に相対位置を固定扱いにして処理を継続することで、ゲーム画面の表示が変わる状態を維持できる。相対位置が正しく算出できていない可能性があったとしてもゲームを中断させずに継続させることができる。
【００７５】
また、「プレーヤ視点の移動が無い前提」の制御に切り換わったとしても、相対位置（仮想カメラの位置）が固定とされてＡＲ表示の制御が継続されるので、プレーヤキャラクタ等の不自然な瞬間移動や、ギクシャクした動きなどを効果的に抑制できる。
【００７６】
［ＡＲマーカのロストを想定した補助機能：その２］
また、本実施形態では、ＡＲマーカ１０をロストした場合を想定した第２の補助機能として、ゲスト機がホスト機能を代行することができる。換言すると、ホスト機能をマーカの認識状態に応じてゲーム参加機内で継承させることができる。
【００７７】
図１０は、ホスト機能発現機の切り換えの仕組みを説明するための概念図であって、ゲームに参加するゲーム装置１５００が３台と仮定した場合の、各ゲーム装置のＡＲマーカ１０の認識状態の組み合わせと、その組み合わせにおいてどのゲーム装置１５００がホスト機能を発現するかの例を示している。尚、マーカ認識状態の欄の「In Sight」はＡＲマーカ１０を認識できている状態を意味し、「ＬＯＳＴ」はＡＲマーカ１０が撮影範囲から外れて認識できない状態（認識不能状態）にあることを意味している。
【００７８】
本実施形態では、当初からのホスト機であるゲーム装置１５００ａは、ゲームへの参加の受付処理を行う。受付されたゲーム装置１５００ｂ，１５００ｃはゲスト機となる。
ホスト機であるゲーム装置１５００ａは、受付処理に伴って、自身を発現優先順位第１位に設定するとともに、ゲスト機に対しては発現優先順位第２位以降を受付順に付与する。図中では、ゲーム装置のイラストに付与された白数字がそれぞれの発現優先順位を表している。
【００７９】
また、本実施形態のゲーム装置１５００ａ，１５００ｂ，１５００ｃは、ＡＲマーカ１０をロストした場合に所定の認識不能信号を他機に送信することができる。つまり、各ゲーム装置は、他機からの認識不能信号を受信したか否かによって他機のマーカ認識状態を知ることができる。
【００８０】
図１０（１）の組み合わせで示すように、ゲームに参加している全てのゲーム装置がＡＲマーカ１０を認識できている間は、当初からのホスト機であるゲーム装置１５００ａが、ホスト機としての機能を発現する。
すなわち、自プレーヤのプレーヤキャラクタＰＣ１に加えて、敵キャラクタ７などのＮＰＣ（ノンプレーヤキャラクタ）、背景物などのオブジェクトの制御、飛び交う銃弾などのエフェクトオブジェクトの制御を行い、それらの配置位置情報等をゲスト機へ配信する。勿論、敵キャラクタ７に係る制御には、配置領域１２の設定処理が含まれる。
【００８１】
一方、ゲスト機であるゲーム装置１５００ｂ，１５００ｃでは、操作入力や装置の移動によって各々のプレーヤのプレーヤキャラクタＰＣ２，ＰＣ３の動作や仮想３次元空間内における位置が制御されるが、敵キャラクタ７等についてはホスト機から得た情報に基づいて仮想３次元空間内での配置を制御する。つまり、オブジェクトの制御に関しては、ホスト機とゲスト機は、クライアント／サーバ型の関係を成している。
【００８２】
ここで、もし当初からのホスト機であるゲーム装置１５００ａがＡＲマーカ１０を認識できない状態が発生すると、実空間と仮想３次元空間との位置合わせにズレが発生し、敵キャラクタ７が傾いて配置されるなどの不具合が生じる可能性が高くなる。ホスト機から敵キャラクタ７の配置位置情報を取得しているゲスト機では、ＡＲマーカ１０をロストしていないにも係わらず敵キャラクタ７が不自然に表示されることになってしまう。
【００８３】
そこで、本実施形態のゲーム装置１５００は、ＡＲマーカ１０のロストした状態を検出して所定の「認識不能信号」を他機へ発信する。もし、ホスト機がＡＲマーカ１０をロストした場合には、認識不能信号の送信とともにホスト機能を停止する。
一方で、それまでゲスト機であったゲーム装置は、それぞれ、受信した認識不能信号に基づいて自身に付与された発現優先順位より上位の他機全てが認識不能信号を出している場合には、ホスト機能を発現させるべきと判断して、ホスト機能を発現させる。
【００８４】
具体的には、図１０（２）の組み合わせで示すように、当初からのホスト機（ゲーム装置１５００ａ）が認識不能状態となった場合、認識不能信号を発信して、ゲーム装置１５００ａはホスト機としての機能を停止しゲスト機として機能し始める。即ち、敵キャラクタ７に係る制御及び制御結果の配信は中断する。
【００８５】
一方、発現優先順位第２位のゲスト機（ゲーム装置１５００ｂ）は、自身より発現優先順位が上位の機体全てから認識不能信号を受信したのでホスト機能を発現させ、敵キャラクタ７等の制御と制御結果の配信を開始する。つまり、ホスト機能が継承されたことになる。尚、発現優先順位が第３位のゲスト機（ゲーム装置１５００ｃ）はそのままゲスト機として機能する。
【００８６】
図１０（３）の組み合わせで示すように、ホスト機能を発現しているゲーム装置１５００ｂもまたＡＲマーカ１０をロストした場合、発現優先順位第２位のゲスト機（ゲーム装置１５００ｂ）は、ホスト機能を停止しゲスト機として機能し始める。それに代わって、発現優先順位第３位のゲスト機（ゲーム装置１５００ｃ）は、自身より上位の機体全てから認識不能信号を受信したことになるので、ホスト機能を発現すべきと判断してホスト機能を発現させる。
【００８７】
図１０（３）の組み合わせ状態から、当初のホスト機であるゲーム装置１５００ａにてＡＲマーカ１０の認識が再開されると、ゲーム装置１５００ａは、ホスト機能を再開させるとともに認識不能通知の発信を停止する。ホスト機能を代行してきたゲーム装置１５００ｃは、ゲーム装置１５００ａからの認識不能信号を受信しなくなるので、ホスト機能を停止し、再びゲスト機としての機能のみ発現するようになる。
【００８８】
このように、本実施形態によれば、ＡＲマーカ１０を認識している何れかの機体が、常にＡＲマーカ１０を基準としたオブジェクトの位置決め処理を担うように構成できる。よって、もしホスト機であるゲーム装置がＡＲマーカを認識できない状態になると現実空間と仮想３次元空間（ＣＧ空間）との位置合わせにズレが発生し、敵キャラクタ７が傾いて配置されるなどの不具合が生じる可能性が高くなるが、本実施形態ではゲスト機によるホスト代行機能によってそうした事態を防ぐことができる。
【００８９】
［機能ブロックの説明］
次に、本実施形態を実現するための機能構成について説明する。
図１１は、本実施形態におけるゲーム装置１５００の機能構成の一例を示す機能ブロック図である。ゲーム装置１５００は、操作入力部１００と、撮像部１０４と、姿勢検出部１０８と、加速度検出部１１０と、処理部２００と、音出力部３５０と、画像表示部３６０と、通信部３７０と、測位信号受信部３８０と、記憶部５００とを備える。
【００９０】
操作入力部１００は、プレーヤによって為された各種の操作入力に応じて操作入力信号を処理部２００に出力する。例えば、ボタンスイッチや、ジョイスティック、タッチパッド、トラックボールといった直接プレーヤが指で操作する素子はもちろん、加速度センサや角速度センサ、傾斜センサ、地磁気センサなど、運動や姿勢を検知する素子などによっても実現できる。図１の方向入力キー１５０２、ホームキー１５０４がこれに該当する。３軸ジャイロ１５５６、３軸加速度センサ１５５７の検出値を操作入力に利用する場合には、それらも該当することとなる。また、本実施形態の操作入力部１００はタッチ操作入力部１０２を備え、表示画面へ指などで触れることによる操作入力を可能としている。図１のタッチパネル１５０６がこれに該当する。
【００９１】
撮像部１０４は、撮影対象からの光を受光して電気信号に変換し、デジタル画像データを生成し、処理部２００へ出力する。例えば、レンズ、メカシャッター、シャッタードライバ、ＣＣＤイメージセンサモジュールやＣＭＯＳイメージセンサモジュールといった光電変換素子、光電変換素子から電荷量を読み出し画像データを生成するデジタルシグナルプロセッサ（ＤＳＰ）、ＩＣメモリなどで実現される。図１ではＣＣＤカメラモジュール１５１６がこれに該当する。
【００９２】
姿勢検出部１０８は、ゲーム装置１５００の姿勢変化を検出し検出信号を処理部２００へ出力する。電子コンパスやジャイロスコープなどで実現できる。図１の電子コンパス１５５５や３軸ジャイロ１５５６がこれに該当する。姿勢検出は、直交３軸とし、そのうち何れかの軸を撮像部１０４が撮影する光軸方向に合わせてロール、ピッチ、ヨーの３成分について算出すると好適である。尚、本実施形態では、ゲーム装置１５００にＣＣＤカメラモジュール１５１６が固定されているので、姿勢検出部１０８は、プレーヤ視点の姿勢変化を検出しているとも言える。
【００９３】
加速度検出部１１０は、ゲーム装置１５００に作用している加速度を検出することができる。図１の３軸加速度センサ１５５７がこれに該当する。尚、本実施形態では、ゲーム装置１５００にＣＣＤカメラモジュール１５１６が固定されているので、加速度検出部１１０は、プレーヤ視点の移動に伴う加速度を検出しているとも言える。
【００９４】
処理部２００は、例えばＣＰＵやＧＰＵ等のマイクロプロセッサや、ＡＳＩＣ、ＩＣメモリなどの電子部品の適当な組み合わせによって実現される。処理部２００は、各機能部との間でデータの入出力制御を行い、所定のプログラムやデータ、操作入力部１００からの操作入力信号等に基づいて各種の演算処理を実行して、ゲーム装置１５００の動作を制御する。図１では制御基板１５５０がこれに該当する。
そして、処理部２００は、ゲーム演算部２０２と、音生成部２５０と、画像生成部２６０と、通信制御部２７０と、測位制御部２８０とを備える。
【００９５】
ゲーム演算部２０２は、本実施形態のゲームを実行するために必要な各種制御を実行する。また、システムクロックを用いた制限時間などの計時処理、フラグ管理処理、などを適宜実行することができる。
【００９６】
図１２は、本実施形態におけるゲーム演算部２０２の構成例を示す部分機能ブロック図である。本実施形態のゲーム演算部２０２は、ゲーム参加管理制御部２０４と、自機情報算出部２０６と、自機情報送信制御部２２０と、他機情報受信制御部２２１と、認識状態判定部２２２と、認識不能信号送信制御部２２３と、ホスト機能発現判断部２２４と、キャラクタ表示制御部２３０と、ＮＰＣ情報送信制御部２４０と、を含む。
【００９７】
ゲーム参加管理制御部２０４は、マルチプレイのためのゲーム参加関連の処理を実行する。例えば、自機をホスト機／ゲスト機とするかをプレーヤに選択させる処理を実行する。そして、この選択処理にてホスト機に選択された場合には、他機をゲーム参加機として受付・登録する処理と、ゲーム参加機の登録情報の配信に関する処理を実行する。また、ホスト機／ゲスト機に係わらず、自プレーヤにプレーヤキャラクタの種類を選択させるなどのプレーヤキャラクタ設定処理をする。そして、プレーヤキャラクタの設定情報を他機に配信する処理を行う。
【００９８】
また、本実施形態のゲーム参加管理制御部２０４は、発現優先順位設定部２０５を備える。発現優先順設定部２０５は、自機がホスト機能を発現している場合に、参加受付に伴って発現優先順位を設定し他機へ配信制御する。
【００９９】
自機情報算出部２０６は、ＡＲマーカ１０に対する自機のプレーヤ視点の位置関係に関する情報を算出する。本実施形態では、相対位置算出部２０７と、現在位置決定部２０９と、相対姿勢算出部２１０と、現在姿勢決定部２１１と、重み付け設定部２１２とを含む。
【０１００】
相対位置算出部２０７は、ＡＲマーカ１０の撮影画像を用いて、当該マーカに対する自機の相対的な位置関係を示す情報を周期的に算出する。つまり、その時点におけるプレーヤ視点の最新の相対位置を計測・算出する。
算出される相対位置の情報の内容は適宜設定可能であるが、例えばＡＲマーカ１０の所定位置（例えば、カードの中心や隅の何れか）を基準点とし、ＡＲマーカ１０の示す基準方向に基づく３軸直交座標（Ｘｍ，Ｙｍ，Ｚｍ）を求める。そして、当該座標系における相対位置（Ｘｃ，Ｙｃ，Ｚｃ）及び相対距離Ｌｃを算出する。具体的には、撮像部１０４で撮影した画像を解析してＡＲマーカ１０を検出し、当該ＡＲマーカ１０の種類と向きとを判定して、マーカ基準の相対位置を算出する。これらの処理は、公知のＡＲ技術を適宜流用することにより実現できる。また、ＡＲマーカ１０の種類に対応して予め設定されているカードサイズ（実寸；例えば５ｃｍ×７ｃｍなど）と、撮影画像内におけるＡＲマーカ１０のドット数とに基づいて相対距離Ｌｃを実寸単位で算出する。
【０１０１】
そして、本実施形態では、相対位置算出部２０７は、位置変化抑制制御部２０８としての機能を有する。
位置変化抑制制御部２０８は、ＡＲマーカ１０を認識できない認識不能状態のときに、ゲーム空間のオブジェクトの位置移動を抑制する処理を行う。具体的には、認識不能となってから認識状態に復帰するまでの間、ゲーム装置の位置の移動を無し（プレーヤ視点の位置移動を無し）と仮定して相対位置を決定する。より具体的には、認識不能以降に新たに算出する相対位置を認識不能になる直前に算出した相対位置に固定し、認識復帰とともにその固定を解除する（図９参照）。換言すると、認識不能状態が検出されている間、コンピュータの姿勢変化に応じてオブジェクトの表示向きを制御する認識不能時向き制御部として機能する。
【０１０２】
現在位置決定部２０９は、相対位置算出部２０７により算出された所定分過去の相対位置情報から最新の相対位置までを、重み付け設定部２１２によって設定された重み付けＷｎを用いた加重平均によって、仮想カメラＣＭの制御に適用される位置情報を算出する（図８参照）。
【０１０３】
相対姿勢算出部２１０は、姿勢検出部１０８による検出結果に基づいて、自機の姿勢情報を周期的に算出する。例えば、撮像部１０４による光軸方向を基準として、ピッチ、ヨー、ロールの各成分を、ＡＲマーカ１０の所定位置（例えば、カードの中心や隅の何れか）を基準点とマーカの示す基準方向に基づく３軸直交座標（Ｘｍ，Ｙｍ，Ｚｍ）に対する相対姿勢（ωｐ，ωｙ，ωｒ）を算出する。
【０１０４】
現在姿勢決定部２１１は、所定分過去の姿勢情報から最新の姿勢情報までを重み付け設定部２１２によって設定された重み付けを用いた加重平均によって、仮想カメラＣＭの制御に適用される姿勢情報を算出する（図８参照）。
【０１０５】
重み付け設定部２１２は、加重平均に処せられる算出時期が異なる情報毎の重み付けＷｎ（図８参照）を、最新の相対距離Ｌｃと対応づけられる算出時期に応じて所定関数又は所定のテーブルデータを参照して決定する。換言すると、加重平均に処せられる自機位置情報や自機姿勢の算出時期に応じて重み付けする第１の重み付け変更機能と、自機位置情報や自機姿勢の算出時におけるＡＲマーカ１０との距離Ｌとに応じて重み付けする第２の重み付け変更機能とを実現する。
【０１０６】
自機情報送信制御部２２０は、自機に係る各種情報をゲームに参加する他機へ送信させる処理を行う。例えば、操作入力部１００による操作入力情報、現在位置、現在姿勢、相対距離Ｌｃ、要素領域１４の定義情報などがこれに含まれる。
これに対して、他機情報受信制御部２２１は、他機に係る情報（他機における操作入力部１００による操作入力情報、現在位置、現在姿勢、相対距離Ｌｃ、要素領域１４の定義情報など）を受信制御する。
【０１０７】
認識状態判定部２２２は、ＡＲマーカ１０の認識状態を検出することができる。具体的には、撮像部１０４で撮影した画像内にＡＲマーカ１０が検出できない場合や、当該マーカのデザインを認識できなかった場合に認識不能状態を検出し、再び認識できるようになると認識復帰状態を検出する。
尚、認識不能状態は、例えばＡＲマーカ１０が遠くに有って撮像部１０４の解像能力との関係からデザイン識別に十分な情報が得られないケースや、ＡＲマーカ１０のカード面に対してＣＣＤカメラモジュール１５１６の光軸方向が浅いために同じくデザイン識別に十分な情報が得られないケース、ＡＲマーカ１０の一部が撮影範囲外に残ってデザイン識別に十分な情報が得られないケースなどが考えられる。
【０１０８】
認識不能信号送信制御部２２３は、認識状態判定部２２２により認識不能状態が検出された場合に、他のゲーム参加機へ所定の「認識不能信号」を送信させるための処理を実行する。他機に対してホスト機能の発現を要求する継承信号を送信する継承信号送信制御部として機能するとも言える。
【０１０９】
ホスト機能発現判断部２２４は、ゲームの参加機それぞれの認識不能状態の有無に基づいて自機がホスト機として機能すべきか否かを判断する。本実施形態では、自機に設定された発現優先順位と、自機及び他機の認識不能状態の監視結果とに基づいて、自機の発現優先順位よりも上位にある全ての他機が認識不能状態のとき、ホスト機として機能すべきと判断する。
【０１１０】
キャラクタ表示制御部２３０は、ゲーム参加機のＡＲマーカ１０に対する位置関係に基づいて仮想３次元空間（ＣＧ空間）中のキャラクタ等のオブジェクトの配置を制御する。換言すると、プレーヤキャラクＰＣ１〜ＰＣ３や敵キャラクタ７といったキャラクタの拡張現実空間内における表示位置を制御する。そして、本実施形態のキャラクタ表示制御部２３０は、領域設定部２３１と、ＮＰＣ制御部２３５とを有する。
【０１１１】
領域設定部２３１は、所定オブジェクト（本実施形態では敵キャラクタ７）を表示させる拡張現実空間中の領域を設定する。具体的には、基本領域設定部２３２と、要素領域設定部２３３と、配置領域設定部２３４とを有する。
【０１１２】
基本領域設定部２３２は、ＡＲマーカ１０から各プレーヤ視点までの相対距離Ｌｃに基づいて基本領域１３を設定する。つまり、配置領域１２の基本となるサイズを設定する。具体的には、ゲーム参加機別の相対位置Ｌｃのうち最小値を変数として所定の関数ｆ（Ｌｃ）で基本領域１３の基本長さＬｂを求める。そして、ＡＲマーカ１０の種類に応じて予め設定されている基本形状を、所定寸法が基本長さＬｂとなるように拡大／縮小してサイズを変更して基本領域１３を設定する。
【０１１３】
要素領域設定部２３３は、各プレーヤの視点位置でＡＲマーカ１０を撮影した場合の自機撮影範囲及び他機撮影範囲を用いて、各プレーヤの視点から見てＡＲマーカ１０がロストし難いようにしながら敵キャラクタ７を配置できる要素領域１４を設定する。また、プレーヤ視点から見たＡＲマーカの平面方向に対する俯角θｃを用いて自機撮影範囲及び他機撮影範囲の奥行を変更する奥行変更部としての機能を果たす。
【０１１４】
配置領域設定部２３４は、基本領域１３と要素領域１４とを用いて、何れのゲーム参加機についてもＡＲマーカ１０がロストし難いようにしながら敵キャラクタ７を配置できる配置領域１２を設定する。本実施形態では、基本領域１３及び各要素領域１４の重合部分を求め、これを配置領域１２とする。
【０１１５】
ＮＰＣ制御部２３５は、敵キャラクタ７などのＮＰＣ（ノンプレーヤキャラクタ）や、飛翔体６などのエフェクトオブジェクト、ゲーム空間の背景を形成する背景オブジェクトの配置制御を行う。いわゆる「ＡＩ制御」を行う。ＮＰＣ等のオブジェクトの制御情報（位置座標、姿勢、モーション制御データなど）は、オブジェクト毎に対応づけて所定期間分（例えば、ゲーム画像の数フレーム分）の履歴情報が、記憶部５００のプレイデータ５４１の敵キャラクタ配置情報キュー５４４に格納される（図１１参照）。そして、本実施形態におけるＮＰＣ制御部２３５は、制御開始時特殊制御部２３６と、移動方向制御部２３７とを有する。
【０１１６】
制御開始時特殊制御部２３６は、制御開始から所定期間（例えば、ゲーム画像の数フレーム分）、制御対象とするオブジェクトの移動速度及び／又は動作速度を低減させるように制御する。具体的には、敵キャラクタ配置情報キュー５４４に格納されている分の過去の制御情報と新たに算出した制御情報とを均して実際の制御情報とする。
例えば、ホスト機能を担うゲーム装置が切り換ったタイミングでは、切り換り前後で制御情報値のジャンプが生じる場合があるが、過去値と最新値との均し値を実際の制御に用いることで、切り換えタイミングにおけるオブジェクトの瞬間移動やズレ・ブレなどの不自然な表示を抑制することができる。特に、オブジェクトの表示位置の変化（ズレ・ブレ）に対して効果的である。
【０１１７】
移動方向制御部２３７は、制御対象とするオブジェクトの移動方向を撮像部１０４による撮影画像（ライブビュー）中のＡＲマーカ１０の画像位置に基づいて決定する処理と、配置領域１２内におけるオブジェクトの相対位置に基づいて移動方向を決定する処理とを行う。
【０１１８】
前者の処理では、ホスト機能発現機のライブビュー中のＡＲマーカ１０の画像位置が、画像中心から離れている程、敵キャラクタ７のオブジェクトがＡＲマーカ１０の画像位置に高確率で近づくように移動制御する。換言すると、ホスト機能発現機のプレーヤ視点方向（ＣＣＤカメラモジュール１５１６の光軸方向、仮想カメラの視線方向に同じ）がＡＲマーカ１０から離れているほど、敵キャラクタ７がよりＡＲマーカ１０に近づくように動作制御する。具体的には、プレーヤ（ゲーム装置）からＡＲマーカ１０への方向とプレーヤ視点方向とのなす角度が大きいほど、敵キャラクタ７がＡＲマーカ１０に近づくように、敵キャラクタ７の移動方向を決定する。移動方向や移動目標地点を抽選処理で決定する場合、抽選確率を一時的に変更したり、抽選結果がＡＲマーカ１０に近づかない場合に再抽選を実行するなどにより実現できる。
【０１１９】
例えば、敵キャラクタ７が最新の配置領域１２内に有れば、領域外に出ないように移動方向を選択する処理、または、配置領域１２の輪郭との距離を算出して所定の接近条件を満たす状態を検出した場合には次の移動量を一時的に低減させる処理を行う。また、もし敵キャラクタ７が領域外に有るのであれば、領域内に戻るように移動方向を選択する処理や、できるだけ速やかに戻れるように移動量を一時的に増加させる処理なども適用可能である。
【０１２０】
ＮＰＣ情報送信制御部２４０は、ＮＰＣ制御部２３５により求められたＮＰＣの制御情報を他機へ送信制御する。
【０１２１】
尚、領域設定部２３１と、ＮＰＣ制御部２３５と、ＮＰＣ情報送信制御部２４０は、自機がホスト機として機能すべきときにのみ発現する機能部であって、これらはホスト機能実行制御部２４９を構成する。
【０１２２】
図１１に戻り、音生成部２５０は、例えばデジタルシグナルプロセッサ（ＤＳＰ）や、音声合成ＩＣなどのプロセッサ、音声ファイル再生可能なオーディオコーデック等によって実現され、ゲーム演算部２０２による処理結果に基づいてゲームに係る効果音やＢＧＭ、各種操作音の音信号を生成し、音出力部３５０に出力する。
【０１２３】
音出力部３５０は、音生成部２５０から入力される音信号に基づいてゲームに関する効果音やＢＧＭ、電話通信音声等を音出力する装置によって実現される。図１ではスピーカ１５１０がこれに該当する。
【０１２４】
画像生成部２６０は、例えば、ＧＰＵ、デジタルシグナルプロセッサ（ＤＳＰ）などのプロセッサ、ビデオ信号ＩＣ、ビデオコーデックなどのプログラム、フレームバッファ等の描画フレーム用ＩＣメモリ、テクスチャデータの展開用に使用されるＩＣメモリ等によって実現される。画像生成部２６０は、ゲーム演算部２０２による処理結果に基づいて１フレーム時間（例えば１／６０秒）で１枚のゲーム画面を生成し、生成したゲーム画面の画像信号を画像表示部３６０に出力する。
【０１２５】
画像表示部３６０は、画像生成部２６０から入力される画像信号に基づいて各種ゲーム画像を表示する。例えば、フラットパネルディスプレイ、ブラウン管（ＣＲＴ）、プロジェクター、ヘッドマウントディスプレイといった画像表示装置によって実現できる。本実施形態では、図１のタッチパネル１５０６がこれに該当する。
【０１２６】
通信制御部２７０は、データ通信に係るデータ処理を実行し、通信部３７０を介して外部装置とのデータのやりとりを実現する。
これに関連する通信部３７０は、通信回線１と接続して通信を実現する。例えば、無線通信機、モデム、ＴＡ（ターミナルアダプタ）、有線用の通信ケーブルのジャックや制御回路等によって実現され、図１の無線通信モジュール１５５３がこれに該当する。
【０１２７】
測位制御部２８０は、測位信号受信部３８０を介して測位システムから得られた信号から位置情報を算出するための制御、つまり測位計算とその結果の管理を行う。例えば、図１のＧＰＳモジュール１５５４がこれに該当する。測位計算に携帯電話基地局の既知の位置情報を利用する場合には、基地局と無線通信するための無線通信モジュール１５５３も該当することになる。
【０１２８】
記憶部５００は、処理部２００にゲーム装置１５００を統合的に制御させるための諸機能を実現するためのプログラムや各種データ等を記憶する。また、処理部２００の作業領域として用いられ、処理部２００が各種プログラムに従って実行した演算結果や操作入力部１００から入力される入力データ等を一時的に記憶する。こうした機能は、例えばＲＡＭやＲＯＭなどのＩＣメモリ、ハードディスク等の磁気ディスク、ＣＤ−ＲＯＭやＤＶＤなどの光学ディスクなどによって実現される。図１では制御基板１５５０が搭載するＩＣメモリ１５５２やメモリカード１５４０がこれに該当する。
【０１２９】
本実施形態の記憶部５００は、ゲーム装置１５００をシステムプログラム５０２と、ゲームプログラム５０４とを記憶している。
システムプログラム５０２は、ゲーム装置１５００のコンピュータとしての基本機能を実現するためのプログラムである。
【０１３０】
ゲームクログラム５０４は、処理部２００にゲーム演算部２０２としての機能を実現させせるためのプログラムである。メモリカード１５４０に予め記憶されているものとするが、本実施形態では、ゲーム開始前に所定のサーバからダウンロードする構成であっても良い。
【０１３１】
また、記憶部５００には、予めゲーム空間初期設定データ５１０と、キャラクタ初期設定データ５１１と、ＡＲマーカ登録データ５１２と、奥行関数設定データ５１４とが記憶されている。これらもメモリカード１５４０に予め記憶されているものとするが、ゲーム開始前に所定のサーバからダウンロードする構成であっても良い。
また、記憶部５００には、ゲーム進行に応じて生成され随時更新されるデータとして、ゲーム参加機登録データ５２０と、自機情報キュー５３０と、現在位置５３７と、現在姿勢５３８と、プレイデータ５４１と、仮想３次元空間データ５６０と、ホスト機能継承タイミング５６２と、が記憶される。その他、各種処理を実行するにあたり必要となるデータ（例えば、圧縮解凍されたテクスチャデータ、経過時間、各種タイマー値、カウンタ、フラグ）なども適宜記憶されるものとする。
【０１３２】
ゲーム空間初期設定データ５１０は、ゲームの舞台を作るための背景オブジェクトを定義する初期設定データである。背景オブジェクトのモデルデータ、テクスチャデータ、配置位置データなどが含まれる。
【０１３３】
キャラクタ初期設定データ５１１は、プレーヤキャラクタＰＣ１〜ＰＣ３や、敵キャラクタ７などのゲームキャラクタの初期設定データを格納する。各キャラクタ毎に、モデルデータ、テクスチャデータ、モーションデータ、能力パラメータ（攻撃力、防御力、ＨＰなど）の初期値をキャラクタ毎に格納している。
【０１３４】
ＡＲマーカ登録データ５１２は、ゲームで使用できるＡＲマーカを登録するデータであって使用できる種類毎に記憶されている。そして、図１３に示すように、マーカ種類と、対応マーカカテゴリと、デザインパターンデータと、カード寸法と、基本領域１３の雛形となる基本領域モデルと、基本長さＬｂとする寸法を指定する基本長さ適用寸法と、を格納する。
【０１３５】
奥行関数設定データ５１４は、要素領域１４の奥行Ｄｂを算出するための関数を設定するデータであって、ＡＲマーカ１０のマーカカテゴリ別に用意されている（図７参照）。
【０１３６】
ゲーム参加機登録データ５２０は、ゲームに参加するゲーム装置の登録に関するデータ群であって参加処理により生成される。例えば図１４に示すように、ゲーム機ＩＤ５２１と対応づけて、通信接続で相手先を特定するためのアドレス情報５２２と、発現優先順位５２３と、プレーヤキャラクタ種類５２４と、マーカ認識状態５２５と、ホスト機能を発現する機体であるかを示すホスト機能発現フラグ５２６とを格納する。
ゲーム参加機登録データ５２０は、ゲームの参加処理に関連してホスト機にてオリジナルが生成されたのちに各ゲスト機へ配信される。
【０１３７】
自機情報キュー５３０は、ＡＲマーカ１０を基準とした自機の位置や姿勢等の情報を所定算出回数分格納する。例えば図１５に示すように、算出時刻５３２と対応づけて、相対位置５３３、相対姿勢５３４、相対距離５３５を格納する。
【０１３８】
現在位置５３７及び現在姿勢５３８は、それぞれ自機情報キュー５３０に格納されている相対位置５３３の加重平均値、相対姿勢５３４の加重平均値が格納される。
【０１３９】
プレイデータ５４１は、ホスト機能の実行により生成・管理されるデータ群であって、ゲーム進行状況を記述する各種データを格納する。本実施形態では、プレーヤキャラクタ状態データ５４２と、敵キャラクタ状態データ５４３と、敵キャラクタ配置情報キュー５４４と、飛翔体配置データ５４５と、基本領域設定データ５５０と、要素領域設定データ５５２と、配置領域設定データ５５４と、を含む。
【０１４０】
プレーヤキャラクタ状態データ５４２は、プレーヤキャラクタＰＣ１〜ＰＣ３それぞれの状態を記述するデータ、例えばＨＰ（ヒットポイント）などの能力値の現在値、適用されているモーションデータの識別情報やモーション制御データなど、を格納する。
【０１４１】
敵キャラクタ状態データ５４３は、敵キャラクタ７の状態を記述するデータが格納される。例えば、敵キャラクタのＨＰなどの能力値の現在値、適用されるモーションデータの識別情報やモーション制御データなどを格納する。
敵キャラクタ配置情報キュー５４４は、算出時刻と対応づけられた敵キャラクタ７のＣＧ空間における位置や姿勢を、所定算出回数分だけ格納する。
飛翔体配置データ５４５は、発射された飛翔体６毎の位置や姿勢、速度、加速度など飛翔の状態を記述する情報を格納する。
【０１４２】
基本領域設定データ５５０は、基本領域１３の最新の定義データを格納する。
要素領域設定データ５５２は、ゲーム参加機毎つまりはプレーヤ視点位置毎に求めた要素領域１４の最新の定義データを格納する。
配置領域設定データ５５４は、配置領域１２の最新情報を格納する。
【０１４３】
仮想３次元空間データ５６０は、仮想３次元空間に配置されるプレーヤキャラクタＰＣ１〜ＰＣ３、敵キャラクタ７、飛翔体６、背景物などの各種オブジェクトの配置情報を格納する。
【０１４４】
ホスト機能継承タイミング５６２は、ホスト機能を発現する機体が変化したタイミング情報（例えば、システム時刻）を格納する。換言すると、ホスト機能の実行役が別の機体に継承されたタイミングを格納する。
【０１４５】
［処理の流れの説明］
次に図１７〜図２４を参照しながら、本実施形態における各種処理の流れについて説明する。ここで説明する一連の処理は、ゲーム装置１５００が、システムプログラム５０２及びゲームプログラム５０４や各種設定データを読み出し実行することにより実現される。尚、テーブル９などの上に予めＡＲマーカ１０が配置されていて、プレーヤは各ゲーム装置１５００を手に持ってＣＣＤカメラモジュール１５１６でＡＲマーカ１０を撮影する姿勢にあるものとする。
【０１４６】
図１７は、本実施形態における主たる処理の流れを説明するためのフローチャートである。ゲーム装置１５００の処理部２００は、先ず他のゲーム装置とのアドホックモードによる通信接続を確立する（ステップＳ２）。以降、ゲーム装置同士の間ではピア・ツー・ピア（Ｐ２Ｐ）のローカルネットワークが形成された状態となる。
【０１４７】
次に、処理部２００は、ゲーム前準備処理を実行する（ステップＳ４）。
図１８は、本実施形態におけるゲーム前準備処理の流れを説明するためのフローチャートである。同処理において、処理部２００は先ず、自機をホスト機とするかゲスト機とするかの選択画面を表示してプレーヤに何れかを選択させるホスト／ゲスト選択処理を実行する（ステップＳ６）。
【０１４８】
もし、ホスト機が選択された場合には（ステップＳ８の「ホスト」）、ゲーム参加機登録データ５２０を生成して自機を登録する（ステップＳ１０）。すなわち、最初のゲーム機ＩＤ５２１を発行するとともに、先に確立したローカルエリアネットワークにおけるアドレス情報５２２を格納する。発現優先順位５２３は第１順位に設定し、マーカ認識状態５２５は認識状態を示す情報（図１４の例では「１」）に初期化する。
【０１４９】
そして、ホスト機の処理部２００は、自プレーヤキャラクタの選択処理（ステップＳ１２）と、ゲーム空間の初期化処理を実行する（ステップＳ１４）。
自プレーヤキャラクタの選択結果は、ゲーム参加機登録データ５２０のプレーヤキャラクタ種類５２４に格納される。
ゲーム空間の初期化処理では、ゲーム空間初期設定データ５１０及びキャラクタ初期設定データ５１１を参照して、仮想３次元空間に背景オブジェクトを配置してゲーム空間を配置するとともに、自プレーヤキャラクタＰＣ１と敵キャラクタ７とを配置する。ゲーム空間にキャラクタが配置されるのに伴って、プレーヤキャラクタ状態データ５４２と、敵キャラクタ状態データ５４３とが生成・初期化される。そして、ゲーム空間の初期化処理を実行したならば、ホスト機の処理部２００はホスト機としての参加処理を時限実行する（ステップＳ１６）。
【０１５０】
一方、ホスト／ゲストの選択処理にてゲストが選択された場合には（ステップＳ６の「ゲスト」）、ゲスト機とされたゲーム装置１５００の処理部２００は、自プレーヤキャラクタの選択処理を実行し（ステップＳ１８）、ホスト機へゲーム参加リクエスト信号を送信してゲスト機としての参加処理を行う（ステップＳ２２）。
【０１５１】
参加処理において、ホスト機の処理部２００は、ゲーム参加リクエストしたゲスト機と適宜情報の送受を行って参加機として登録する。即ち、ゲーム参加機登録データ５２０に新たに付与したゲーム機ＩＤ５２１を設定し、これに対応付けて当該ゲスト機のアドレス情報５２２を登録し、発現優先順位５２３をゲスト機の登録順＋１（よって、最初のゲスト機の発現優先順位は２位となる）を設定する。プレーヤキャラクタ種類５２４は当該ゲスト機から取得し、マーカ認識状態５２５は認識状態を示す値とする。そして、参加処理開始から所定受付時間が終了すると、ホスト機からゲーム参加機登録データ５２０がゲスト機に配信される。ゲスト機では、受信したゲーム参加機登録データ５２０を記憶部５００に記憶させる。
【０１５２】
参加処理を終了したならば、図１７のフローチャートに戻る。
ゲームを開始させたならば（ステップＳ２４）、処理部２００はステップＳ３２〜Ｓ３２０をゲーム終了条件が満たされるまで所定サイクルで繰り返し実行する。
【０１５３】
一回の制御サイクル内において、処理部２００は、先ず自動情報算出処理を実行する（ステップＳ３２）。
図１９は、自機情報算出処理の流れを説明するためのフローチャートである。同処理において、処理部２００は先ず撮像部１０４による撮影映像をキャプチャし（ステップＳ６０）、キャプチャした画像に写っているＡＲマーカ１０を検出する（ステップＳ６２）。
【０１５４】
もし、ＡＲマーカ１０を検出できたならば（ステップＳ６４のＹＥＳ）、処理部２００はＡＲマーカ１０の認識と種類の判別をする（ステップＳ６６）。すなわち、公知のマーカ方式ＡＲ技術と同様にして、ＡＲマーカが写っている部分を検出して、当該部分をＡＲマーカ登録データ５１２（図１３参照）に登録されているデザインパターンと照合することで、ＡＲマーカ１０を認識するとともにマーカの向きやマーカの種類、マーカのカテゴリを判定する。
【０１５５】
次いで、処理部２００は、ＡＲマーカ１０に対する相対位置（Ｘｃ，Ｙｃ，Ｚｃ）と相対姿勢（ωｐ，ωｙ，ωｒ）と相対距離Ｌとを計測・算出する（ステップＳ６８）。これらの算出結果は、自機情報キュー５３０に格納される。
【０１５６】
もし、ＡＲマーカ１０が検出されなかった場合には（ステップＳ６４のＮＯ）、処理部２００は相対位置及び相対姿勢等の算出は行わず、自機情報キュー５３０の直近過去の相対位置５３３及び相対距離５３５を参照する。
【０１５７】
もし、自機情報キュー５３０に直近過去のそれらの値が格納されていれば（ステップＳ７０のＹＥＳ）、それらをコピーして、そのまま今回の相対位置、相対距離として新たに自機情報キュー５３０に格納する（ステップＳ７２）。もし、直近過去のそれらの値が格納されていなければ（ステップＳ７０のＮＯ）、所定の初期値を今回の相対位置及び相対距離として自機情報キュー５３０に格納する（ステップＳ７４）。
相対姿勢については、自機情報キュー５３０に直近過去のそれらの値が格納されているか否かに関わらず、姿勢検出部１０８の検出結果に基づいて計測した結果を、新たに自機情報キュー５３０に格納する（ステップＳ７６）。
【０１５８】
今回分の相対位置及び相対姿勢を決定したならば、処理部２００は次に、重み付けｗｎ（ｎ：自機情報キュー５３０に記憶されているデータの記憶順番）を算出し（ステップＳ７８）、算出した重み付けｗｎを用いて自機情報キュー５３０に記憶されている分の相対位置５３３を加重平均して現在位置５３７を求める（ステップＳ８０）。
更に、自機情報キュー５３０に記憶されている分の相対姿勢５３４を加重平均して現在姿勢５３８を求める（ステップＳ８２）。尚、加重平均に係る重み付けｗｎは、所定の関数ｈ（ｎ，Ｌｃ）に最新の自機の相対距離Ｌｃを用いて算出する。そして、重み付けｗｎの算出を実行したならば、自機情報算出処理を終了する。
【０１５９】
図１７のフローチャートに戻って、処理部２００は次にホスト機能発現機設定処理を実行する（ステップＳ１１０）。
【０１６０】
図２０は、本実施形態におけるホスト機能発現機設定処理の流れを説明するためのフローチャートである。
同処理において、処理部２００は先ず各ゲーム装置におけるＡＲマーカ１０の認識状態の監視処理を行う（ステップＳ１１２〜Ｓ１２２）。
具体的には、処理部２００は、自機情報算出処理にてＡＲマーカ１０の認識ができなかった場合（ステップＳ１１２のＹＥＳ）、ゲーム参加機登録データ５２０の自機のマーカ認識状態５２５（図１４参照）を「認識不能（ＬＯＳＴ）」に変更し（ステップＳ１１４）、所定の認識不能信号を他機へ送信する（ステップＳ１１６）。ＡＲマーカ１０が認識できているならば（ステップＳ１１２のＮＯ）、自機のマーカ認識状態５２５を「識別中（In Sight）」に設定する（ステップＳ１１８）。
【０１６１】
他機からの認識不能信号については、処理部２００は認識不能信号の送信元である他機のマーカ認識状態５２５を「認識不能（ＬＯＳＴ）」に変更する（ステップＳ１２０）。認識不能信号を受信しなかった他機については「識別中（In Sight）」に設定（ステップＳ１２２）する。これでゲーム参加機それぞれにおけるマーカの識別状態が更新されたことになる。
【０１６２】
次に、処理部２００は、マーカ認識状態の監視結果に基づいてホスト機能を発現するゲーム装置すなわち「ホスト機能発現機」を選出する（ステップＳ１４０）。
具体的には、ゲーム参加機登録データ５２０のマーカ認識状態５２５を参照し、発現優先順位が当該ゲーム装置よりも上位にあたる全他機のマーカ認識状態が「認識不能（ＬＯＳＴ）」になっているゲーム参加機を、ホスト機能を発現するべき機体として選出する。
【０１６３】
そして、処理部２００は、当該選出機のホスト機能発現フラグ５２６を参照する。同フラグが「０」であれば（ステップＳ１４２の「０」）、それ以外のゲーム機の同フラグを「０」に設定し（ステップＳ１４４）、ホスト機能継承タイミング５６２に現在のシステム時刻を格納し更新して（ステップＳ１４６）、ホスト機能発現機設定処理を終了する。もし、選出機のホスト機能発現フラグ５２６がすでに「１」の場合には（ステップＳ１４２の「１」）、フラグ操作やホスト機能継承タイミング５６２の更新は行わずに、ホスト機能発現機設定処理を終了する。
【０１６４】
図１７のフローチャートに戻って、自機がホスト機能発現機に設定されている場合（ステップＳ１５０のＹＥＳ）、処理部２００は自機がホスト機能を発現するべきであると判断してホスト機能実行処理を行う（ステップＳ１５２）。
【０１６５】
図２１は、本実施形態におけるホスト機能実行処理の流れを説明するためのフローチャートである。同処理において、処理部２００は先ず、全他機からそれぞれの他機情報として、現在位置５３７と、現在姿勢５３８と操作入力データ（本実施形態では射撃操作入力の有無）を取得する（ステップＳ１６０）。そして、基本領域設定処理を実行する（ステップＳ１６２）。
【０１６６】
図２２は、本実施形態における基本領域設定処理の流れを説明するためのフローチャートである。同処理において、処理部２００は先ずゲーム参加機毎つまりはプレーヤ視点毎にＡＲマーカ１０までの相対距離Ｌｃを算出又は他機から送信してもらって取得し（ステップＳ１７０）、算出又は取得した相対距離Ｌｃに基づいて基本長さＬｂを算出する（ステップＳ１７２）。本実施形態では、ゲーム参加機別に算出した相対距離Ｌｃのうち最小値を用いて所定関数ｆ（Ｌｃ）を用いて基本長さＬｂを求める。
【０１６７】
次で、処理部２００は、算出した基本長さＬｂを所定の最小値と比較し、最小値を下回っていれば（ステップＳ１７４のＹＥＳ）、基本長さＬｂをこの最小値で置き換える（ステップＳ１７６）。そして、認識されたＡＲマーカの種類・カテゴリ（図１９のステップＳ６６参照）に対応するＡＲマーカ登録カード５１２（図１３参照）から基本領域モデルを読み出し、先に設定した基本長さＬｂを基本長さ適用寸法に割り当てた基本領域１３を設定する（ステップＳ１７８）。求めた基本領域１３を定義する情報（例えば、頂点座標、輪郭線を記述する関数など）は、プレイデータ５４１に基本領域設定データ５５０として格納される。そして、基本領域設定処理を終了する。
【０１６８】
図２１のフローチャートに戻って、処理部２００は次に、ゲーム参加機毎に要素領域設定処理を実行して、プレーヤ視点毎の要素領域１４を設定する（ステップＳ１８０）。
【０１６９】
図２３は、要素領域設定処理の流れを説明するためのフローチャートである。同処理において、処理部２００は先ず、キャプチャした画像に写っているＡＲマーカ１０の四隅の頂点位置を求め（ステップＳ１９０）、ゲーム装置１５００の位置及びロール、即ちＣＣＤカメラモジュール１５１６の位置及びロール（光軸周りの回転）を固定と見なして、ＡＲマーカ１０の四隅のうち右端が、ＣＣＤカメラモジュール１５１６の撮影範囲の右端に近接し、且つＡＲマーカ１０の四隅のうち下端が同撮影範囲の下端に近接する第１姿勢を求めるとともに、当該姿勢におけるＣＣＤカメラモジュール１５１６の光軸ＡＬ１を求める（ステップＳ１９２；図６参照）。
【０１７０】
同様にして、処理部２００はＡＲマーカ１０と撮影範囲とで左端同士・上端同士が近接する第２姿勢を求めて光軸ＡＬ２を求め（ステップＳ１９４）、ＡＲマーカ１０と撮影範囲とで左端同士・下端同士が近接する第３姿勢を求めて光軸ＡＬ３を求め（ステップＳ１９６）、ＡＲマーカ１０と撮影範囲とで右端同士・上端同士が近接する第４姿勢を求めて光軸ＡＬ４を求める（ステップＳ１９８）。
【０１７１】
次に、処理部２００はＡＲマーカ１０のデザイン面（マーカ平面）に対するＣＣＤカメラモジュール１５１６の光軸角度つまり俯角θｃを算出し、ＡＲマーカ１０のカテゴリに応じた奥行関数設定データ５１４を選択・参照して、算出した俯角θｃに基づく奥行Ｄｂを算出する（ステップＳ２００）。
【０１７２】
そして、ＣＣＤカメラモジュール１５１６のカメラ視点位置から現在の光軸方向に奥行Ｄｂだけ離れたクリップ面と、先に求めた光軸ＡＬ１〜ＡＬ４それぞれとの交点を求め、求めた４つの交点とカメラ視点位置とを頂点として囲まれるボリュームを、対象としているゲーム装置１５００（対象としているプレーヤ視点）における要素領域１４として設定する（ステップＳ２０２）。求めた要素領域１４を定義する情報（例えば、頂点座標、輪郭線を記述する関数など）は、プレイデータ５４１に要素領域設定データ５５２として格納される。そして、要素領域設定処理を終了する。
【０１７３】
図２１のフローチャートに戻って、処理部２００は次に、基本領域１３及び要素領域１４の重合領域を求めこれを配置領域１２とする（ステップＳ２２０）。求めた重合領域を定義する情報（例えば、頂点座標、輪郭線を記述する関数など）は、プレイデータ５４１に配置領域設定データ５５４として格納される。
【０１７４】
次に、処理部２００は敵キャラクタ７を最新の配置領域１２の範囲内に存在するよう動作制御する（ステップＳ２２２）。
【０１７５】
ここでの動作制御には、移動と攻撃の二つの動作が含まれる。
移動の制御については、例えば、敵キャラクタ７が最新の配置領域１２内に有れば、領域外に出ないように移動方向を選択する処理や、領域の輪郭との距離を算出して所定の接近条件を満たす状態を検出した場合には次の移動量を一時的に低減させる処理などを実行して、新たな配置位置を決定する。また、もし敵キャラクタ７が領域外に有るのであれば、領域内に戻るように移動方向を選択する処理や、できるだけ速やかに戻れるように移動量（移動速度）を一時的に増加させる処理などを実行して新たな配置位置を決定する。
【０１７６】
更には、撮像部１０４による撮影画像（ライブビュー）中のＡＲマーカ１０の画像位置が、画像中心から離れている程、敵キャラクタ７がＡＲマーカ１０の画像位置に高確率で近づくように移動制御する。換言すると、プレーヤ視点方向（ＣＣＤカメラモジュール１５１６の光軸方向、仮想カメラの視線方向に同じ）がＡＲマーカ１０から離れているほど、敵キャラクタ７がよりＡＲマーカ１０に近づくように動作制御する。
【０１７７】
具体的には、例えば敵キャラクタ７の移動方向を抽選処理で決定する場合、現在のＡＲマーカ１０向きの移動方向がより高確率で選出されるように抽選確率を一時的に変更したり、抽選結果が視線方向に沿わない場合に再抽選を実行するなどにより実現できる。
尚、新たに決定された敵キャラクタ７の位置及び姿勢は敵キャラクタ配置情報キュー５４４に格納される。移動制御に伴い、仮想３次元空間データ５６０のうち、敵キャラクタ７に係るオブジェクトの制御データが適宜書き換えられる。
攻撃の制御については、所定のアルゴリズム（いわゆるＡＩ制御）によって、適当なタイミングで適当なプレーヤキャラクタＰＣ１〜ＰＣ３に向けて、射撃するように制御する。
【０１７８】
ここで、処理部２００は、現在のシステム時刻とホスト機能継承タイミング５６２に格納されているシステム時刻（すなわちホスト機能の制御開始タイミング）とを比較して、ホスト機能の制御開始タイミングから所定時間が経過したかを判定する。
【０１７９】
そして、もし経過していない場合には（ステップＳ２２４のＮＯ）、処理部２００は敵キャラクタ７の移動量及び／又は移動速度が低減されるように調整する制御開始時特殊制御を行う（ステップＳ２２６）。
具体的には、例えば敵キャラクタ配置情報キュー５４４に格納されている位置及び姿勢の各加重平均値（重み付けは過去値ほど低い）を求め、敵キャラクタ配置情報キュー５４４の最新値を加重平均された位置及び姿勢に更新する。これにより、ホスト機能を担う機体が代わったことに起因する敵キャラクタ７の位置や姿勢が大きく変化したとしてもその影響を低減できる。敵キャラクタ７の見かけの移動量や移動速度が低減され、瞬時的に移動量や移動速度が増したような不自然な動きとならないようにできる。
尚、ホスト機能の制御開始タイミングから所定時間が経過していなければ（ステップＳ２２４のＹＥＳ）、こうした制御開始時特殊制御はスキップされる。
【０１８０】
次に、処理部２００は各プレーヤキャラクタＰＣ１〜ＰＣ３の配置位置を更新する（ステップＳ２２８）。これに伴い、仮想３次元空間データ５６０のうち、プレーヤキャラクタＰＣ１〜ＰＣ３に係るオブジェクトの制御データが適宜書き換えられる。
【０１８１】
次に、処理部２００は飛翔体６の管理をする（ステップＳ２４０）。例えば、敵キャラクタ７による攻撃動作が行われた場合や、各ゲーム装置にて攻撃操作入力が検出された場合に、対応するプレーヤキャラクタから発射される新たな飛翔体６を仮想３次元空間に配置する。また、配置済の飛翔体６については移動をさせる。これに伴い、プレイデータ５４１の飛翔体配置データ５４５が適宜書き換えられ、また仮想３次元空間データ５６０のうち飛翔体６に係るオブジェクトの制御データが適宜書き換えられる。
【０１８２】
次に、処理部２００は、飛翔体６の移動後の位置と、更新されたプレーヤキャラクＰＣ１〜ＰＣ３の位置、及び敵キャラクタ７の位置とに基づいて攻撃のヒット判定と、攻撃ヒットにともなうダメージ判定及びダメージ反映処理を行う（ステップＳ２４２）。もし、飛翔体６がヒットしたと判定された場合には、当該飛翔体６は仮想３次元空間から消去するのは勿論である。ダメージ反映処理により、プレイデータ５４１のプレーヤキャラクタ状態データ５４２及び敵キャラクタ状態データ５４３が更新される。
【０１８３】
ホスト機能実行処理によるこれまでの処理により、１制御サイクルでのゲームが進行したことになるので、処理部２００は最新のプレイデータ５４１を他機へ配信し（ステップＳ２４４）、ホスト機能実行処理を終了する。
【０１８４】
図１７のフローチャートに戻って、自機がホスト機能を発現するべきと判断されなかった場合（ステップＳ１５０のＮＯ）、処理部２００はゲスト機として振る舞うように制御することとなる。つまり、ゲスト機の処理部２００は、全ての他機から現在位置５３７と、現在姿勢５３８と操作入力情報とを取得し（ステップＳ３００）、ホスト機からプレイデータを取得する（ステップＳ３０２）。そして、取得した他機の現在位置５３７および現在姿勢５３８と、自機の現在位置５３７および現在姿勢５３８と、取得したプレイデータとに基づいて仮想３次元空間内のオブジェクトの配置位置を更新する（ステップＳ３０４）。
【０１８５】
ここまでの流れによって、ゲーム進行制御とその結果に応じた仮想３次元空間（ＣＧ空間）内のオブジェクトの再配置が完了したことになる。
そこで、処理部２００は次に、ゲーム画面の生成及び表示に関する処理を実行する。すなわち、キャプチャされた撮像部１０４で撮影した画像をクロップ処理して背景画像を生成し（ステップＳ３１０）、自機の現在位置５３７および現在姿勢５３８に基づいて仮想カメラＣＭを仮想３次元空間内に配置して、当該仮想カメラで撮影した仮想３次元空間の様子をレンダリングする（ステップＳ３１２）。そして、背景画像の上にレンダリングされたＣＧを合成し、さらにその上に画面中央に照準８などの情報表示体を合成してゲーム画面を完成させ（ステップＳ３１４）、これを画像表示部３６０で表示させる（ステップＳ３１６；図３参照）。
【０１８６】
次に、処理部２００はゲーム終了条件を満たすか否かを判定する（ステップＳ３２０）。もしゲーム終了条件を満たしていなければ（ステップＳ３２０のＮＯ）、次の制御サイクルに移行する。もし満たしていれば（ステップＳ３２０のＹＥＳ）、エンディング画面を表示させるなどのゲーム終了処理を実行して（ステップＳ３２２）、一連の処理を終了する。
【０１８７】
以上、本実施形態によれば、ＡＲマーカ１０に対するプレーヤ視点別の相対位置（本実施形態で言うところのＡＲマーカ１０の基準点に対するＣＣＤカメラモジュール１５１６の視点の相対位置で代表されるゲーム参加機の相対位置）を用いて、拡張現実空間中のキャラクタの表示位置をマルチプレイに都合良く適切に制御できる。
具体的には、注目キャラクタ（敵キャラクタ７）を追跡するように、それぞれのゲーム装置１５００の視点位置、視線方向が変えられたとしても、ＡＲマーカ１０がＣＣＤカメラモジュール１５１６の撮影範囲外にならないように、この注目キャラクタの配置を調整することができる。すなわち、拡張現実空間を利用したマルチプレイ型のゲームの品質を向上させ、キャラクタの配置制御に伴うさまざまな不都合を回避・低減することができる。
【０１８８】
また、本実施形態では、現在から遡って所与の時間分（或いは所与の回数分）の相対位置を用いて、実際に仮想カメラを制御するための現在位置を決定することができるので、手ブレを抑制することができる。更には、ＡＲマーカ１０が認識不能な間、一時的に位置座標をマーカロスト直前値に固定する一方で、姿勢については現在置を算出し続ける。これにより、ＡＲマーカ１０が認識できているときよりも、現実空間とＣＧ空間との座標合わせの精度が低下するが、ゲームを中断しなければならないほどのキャラクタ等の表示ズレを抑制できる。つまり、ＡＲマーカのロストに起因するゲームの中断への耐性を高める事ができる。
【０１８９】
また、敵キャラクタ７などのＮＰＣの制御などホスト機能を担っていたゲーム参加機において、ＡＲマーカ１０を認識できない状態に陥ったとしても、別のゲーム参加機がホスト機能を代行することで、マーカのロストに起因するＮＰＣなどの表示位置ズレなどを抑制し、ゲームを継続させることができる。
【０１９０】
尚、本実施形態では、構成要素を適宜変更・追加・省略することができる。
例えば、ホスト機能発現機の切り換えに関連して、ＡＲマーカ１０を認識できなくなった時に「認識不能信号」を発信し、認識不能信号の有無によってマーカ認識状態を管理する構成であったが、反対にＡＲマーカ１０を認識できている時に「認識信号」を送信する構成としても良い。そして「認識信号」が受信されている間は、送信元のマーカ認識状態５２５を「In Sight（認識中）」とし、「認識信号」が送信されていない機体のマーカ認識状態５２５を「ＬＯＳＴ（認識不能）」に設定すると良い。
【０１９１】
また、発現優先順位は、ゲーム前準備処理で設定した初期値をゲームプレイ中に適宜変更することも可能である。例えば図２４に示すように、ホスト機能実行処理にて、処理部２００は、他機全てから最新のＡＲマーカ１０に対する相対距離Ｌｃを取得し（ステップＳ２５０）、取得した相対距離Ｌｃに自機の最新の相対距離Ｌｃを含めて、距離の大きい順にソートして、ソートされた順番に発現優先順位５２３を再設定し配信する（ステップＳ２５４）。尚、ホスト機能を発現していないゲーム装置１５００の処理部２００は、例えば、図１７のステップＳ３０４に次いで、新しい発現優先順位５２３を受信した場合には、自機の記憶部５００に記憶されているゲーム参加機登録データ５２０の発現優先順位５２３を更新することとする（図１７参照）。
【０１９２】
ＡＲマーカ１０から離れているゲーム装置１５００ほど、より広い範囲を撮影できるのでＡＲマーカ１０がロストし難くなる効果が期待される。よって、相対距離Ｌｃの大きい順に発現優先順位５２３を再設定することで、ホスト機能の発現する機体の切り換え頻度を下げることができる。
【０１９３】
〔第２実施形態〕
次に、本発明を適用した第２実施形態について説明する。本実施形態は、基本的には第１実施形態と同様に実現されるが、ホスト機能発現機の切り換えの仕組みが異なる。尚、第１実施形態と同様の構成要素については同じ符号を付与して説明は省略し、第１実施形態との差異について主に述べることとする。
【０１９４】
本実施形態では、今現在ホスト機能を発現しているゲーム装置が、ＡＲマーカ１０を認識できなくなった時に他のゲーム装置へホスト機の機能継承を要求する「機能継承信号」を他ゲーム装置へ送信する。そして、機能継承信号と発現優先順位とを受信したゲーム装置１５００は、機能継承信号の送信元を除く他機の発現優先順位と自機の発現優先順位とを比較し、自機が最も上位であれば自機がホスト機能を発現するべきと判定し、ホスト機能を実行する。
【０１９５】
図２５は、本実施形態におけるゲーム演算部２０２の機能構成例を示す機能ブロック図である。基本的には第１実施形態のそれと同様であるが、認識不能信号送信制御部２２３に代わって、機能継承信号送信制御部２２３Ｃを備える。機能継承信号送信制御部２２３Ｃは、自機がホスト機能を発現している状態で、且つＡＲマーカ１０が認識できなくなった時に、他機へ「機能継承信号」を送信させる。
【０１９６】
そして、本実施形態のホスト機能発現判断部２２４は、機能継承信号を受信した場合、同信号の送信元を除く他機の発現優先順位５２３と自機に割り当てられている発現優先順位５２３とを比較し、自機が最上位であればホスト機能を発現すべきと判断する。
【０１９７】
尚、本実施形態ではマーカ認識状態を監視する必要がないので、ゲーム参加機登録データ５２０のマーカ認識状態５２５を省略することができる。
【０１９８】
処理の流れは、基本的には第１実施形態と同様であるが、ホスト機能発現設定処理が若干異なる。具体的には、図２６に示すように、第１実施形態のステップＳ１１２〜Ｓ１２２が省略される。代わって、自機がホスト機能を発現中で（ステップＳ１２２ＣのＹＥＳ）、且つＡＲマーカ１０が認識不能な場合（ステップＳ１１４ＣのＹＥＳ）、処理部２００は他機への「機能継承信号」を送信する処理を実行し（ステップＳ１１６Ｃ）、自機のホスト機能発現フラグ５２６を「０」に設定する（ステップＳ１１８Ｃ）。
【０１９９】
また、処理部２００は、機能継承信号を受信した場合で（ステップＳ１２０ＣのＹＥＳ）、且つＡＲマーカ１０が認識不能な場合（ステップＳ１２２ＣのＮＯ）、機能継承信号を他機へ送信し（ステップＳ１２４Ｃ）、自機のホスト機能発現フラグ５２６を「０」に設定して（ステップＳ１２６Ｃ）、ホスト機能発現設定処理を終了する。
【０２００】
もし、機能継承信号を受信した場合で（ステップＳ１２０ＣのＹＥＳ）、且つＡＲマーカ１０が認識可能である場合には（ステップＳ１２２ＣのＹＥＳ）、処理部２００は自機がホスト機能を発現すべきと判断して、自機のホスト機能発現フラグ５２６を「１」に設定するとともに他機の同フラグを全て「０」に設定し（ステップＳ１４４）、ホスト機能継承タイミング５６２を更新して（ステップＳ１４６）、ホスト機能発現設定処理を終了する。尚、所定時間、機能継承信号の受信待ちをしても受信できなかった場合には（ステップＳ１２０Ｃ）、そのままホスト機能発現設定処理を終了する。
以降の処理の流れは第１実施形態と同様である。
【０２０１】
尚、ホスト機能を発現しているゲーム装置１５００が機能継承信号を発信する条件は、上記の例に限らない。
例えば。ＡＲマーカ１０を認識可能であっても、ホスト機能を継承してから一定時間経過後に自動的に発信する構成とすることができる。具体的には、図２７に示すように、自機がホスト機能を発現中で且つＡＲマーカ１０が認識可能な状態であっても（ステップＳ１１４ＣのＮＯ）、ホスト機能継承タイミング５６２から所定時間が経過している場合に（ステップＳ１１５ＤのＹＥＳ）、ステップＳ１１６Ｃへ移行する流れとすると良い。つまり、ホスト機能の継承を、時限的にローテーションさせることができる。
【０２０２】
また、所定の順番に従って時限的にローテーションさせたい場合には、例えば図２８に示すように、図２７のステップＳ１１６Ｃに代えて機能継承信号とともに自機の発現優先順位５２３を全他機へ送信する（ステップＳ１１６Ｅ）。そして、機能継承信号を受信する側では、ステップＳ１２２ＣにてＡＲマーカ１０を認識できると判定した場合（ステップＳ１２２ＣのＮＯ）、自機の発現優先順位５２３が、機能継承信号の送信元の発現優先順位の次の順位になっていれば（ステップＳ１２３ＥのＹＥＳ）、ホスト機能を実行すべきと判断すると良い。尚、ここで言う「次の順番」とは、自機の発現優先順位５２３が最下位で有る場合、次の順番は最上位とする。すなわち、発現優先順位５２３をローテーションの順番と見なす。
【０２０３】
〔変形例〕
以上、本発明を適用した実施形態について説明したが、本発明の形態がこれらに限定されるものではなく、適宜構成要素の追加・省略・変更などを施すことができる。
【０２０４】
例えば、第１実施形態においてゲーム装置１５００としたコンピュータは、プレーヤ視点となる撮像素子と、姿勢変化を検出するジャイロや加速度センサとを搭載し、ゲームプログラムを実行可能であれば、携帯型ゲーム装置などの他、例えばスマートフォンやパソコン、携帯電話機などの電子機器を「ゲーム装置」としてもよい。
【０２０５】
また、ゲームのジャンルはシューティングゲームに限らず、適宜設定することができるのは勿論である。
【０２０６】
また、上記実施形態では、仮想カメラＣＭとプレーヤキャラクタＰＣとの仮想３次元空間における相対位置関係はほぼ固定として説明したがこれに限らない。例えば、図２９に示すように、仮想カメラＣＭ１〜ＣＭ３は、対応するゲーム装置１５００ａ〜１５００ｃのＡＲマーカ１０に対する相対位置（つまりはプレーヤ視点の相対位置）に基づいて配置されるが、プレーヤキャラクタＰＣ１〜ＰＣ３は別途ゲーム装置１５００の方向入力キー１５０２などによる操作入力によって移動制御されることとし、結果として仮想カメラとプレーヤキャラクタとの相対位置関係が可変であっても良い。この場合、プレーヤはゲーム装置１５００を動かすことで仮想カメラの位置を変える一方で、プレーヤキャラクタを別途の操作入力で制御することとなる。従って、ゲーム空間を箱庭的にイメージし、ゲーム空間内の様子をゲーム装置を通じて好きな角度から見ながら、プレーヤキャラクタを自在に操作してゲームプレイすることが可能となる。
【０２０７】
また、ゲーム装置１５００の画像表示部３６０を裸眼立体視可能な表示装置（例えばパララックスバリア方式やレンチキュラ方式など）で構成し、ＡＲマーカ１０に対するゲーム装置１５００の相対位置・相対姿勢に応じて、立体的な画像を表示制御することとしてもよい。その場合、ＣＣＤカメラモジュール１５１６で撮影されたライブビューの画像を最遠景に設定し、ゲーム空間（仮想三次元空間）の座標系上に配置されるキャラクタ等（オブジェクト）を立体的に表示制御するとしてもよい。このようにすることで、例えば、ＡＲマーカ１０に対して回り込むようにゲーム装置を移動させると、ＡＲマーカ１０を基準に出現するオブジェクト（上記実施形態の場合は敵キャラクタ）を、回り込んで立体視し、奥行き感を得ることが可能となる。
【符号の説明】
【０２０８】
１０…ＡＲマーカ
１２…配置領域
１３…基本領域
１４…要素領域
１０４…撮像部
１０８…姿勢検出部
１１０…加速度検出部
２００…処理部
２０２…ゲーム演算部
２０４…ゲーム参加管理制御部
２０５…発現優先順設定部
２０６…自機情報算出部
２０６Ｂ…位置関係算出部
２０７…相対位置算出部
２０８…位置変化抑制制御部
２０９…現在位置決定部
２１０…相対姿勢算出部
２１１…現在姿勢決定部
２１２…重み付け設定部
２２０…自機情報送信制御部
２２１…他機情報受信制御部
２２２…認識状態判定部
２２３…認識不能信号送信制御部
２２４…ホスト機能発現判断部
２３０…キャラクタ表示制御部
２３１…領域設定部
２３２…基本領域設定部
２３３…要素領域設定部
２３４…配置領域設定部
２３５…ＮＰＣ制御部
２３６…制御開始時特殊制御部
２３７…移動方向制御部
２４９…ホスト機能実行制御部
５００…記憶部
５０４…ゲームクログラム
５１２…ＡＲマーカ登録データ
５１４…奥行関数設定データ
５２０…ゲーム参加機登録データ
５２３…発現優先順位
５２４…プレーヤキャラクタ種類
５２５…マーカ認識状態
５２６…ホスト機能発現フラグ
５３０…自機情報キュー
５３３…相対位置
５３４…相対姿勢
５３５…相対距離
５３７…現在位置
５３８…現在姿勢
５４１…プレイデータ
５４４…敵キャラクタ配置情報キュー
５５０…基本領域設定データ
５５２…要素領域設定データ
５５４…配置領域設定データ
５６０…仮想３次元空間データ
５６２…ホスト機能継承タイミング
１５００…ゲーム装置
１５０６…タッチパネル
１５１６…ＣＣＤカメラモジュール
１５５０…制御基板
１５５６…３軸ジャイロ
１５５７…３軸加速度センサ
ＣＭ、ＣＭ１〜ＣＭ３…仮想カメラ
Ｄｂ…奥行
ＰＬ、ＰＬ１〜ＰＬ３…プレーヤＰＬ
ＰＣ、ＰＣ１〜ＰＣ２…プレーヤキャラクタ
ＡＬ１〜ＡＬ４…光軸
【図１】
0005474899.tif 000002
【図２】
0005474899.tif 000003
【図３】
0005474899.tif 000004
【図４】
0005474899.tif 000005
【図５】
0005474899.tif 000006
【図６】
0005474899.tif 000007
【図７】
0005474899.tif 000008
【図８】
0005474899.tif 000009
【図９】
0005474899.tif 000010
【図１０】
0005474899.tif 000011
【図１１】
0005474899.tif 000012
【図１２】
0005474899.tif 000013
【図１３】
0005474899.tif 000014
【図１４】
0005474899.tif 000015
【図１５】
0005474899.tif 000016
【図１６】
0005474899.tif 000017
【図１７】
0005474899.tif 000018
【図１８】
0005474899.tif 000019
【図１９】
0005474899.tif 000020
【図２０】
0005474899.tif 000021
【図２１】
0005474899.tif 000022
【図２２】
0005474899.tif 000023
【図２３】
0005474899.tif 000024
【図２４】
0005474899.tif 000025
【図２５】
0005474899.tif 000026
【図２６】
0005474899.tif 000027
【図２７】
0005474899.tif 000028
【図２８】
0005474899.tif 000029
【図２９】
0005474899.tif 000030