特許第5829090号(P5829090)IP Force 特許公報掲載プロジェクト 2015.5.11 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 任天堂株式会社の特許一覧
<>
  • 特許5829090- 図000002
  • 特許5829090- 図000003
  • 特許5829090- 図000004
  • 特許5829090- 図000005
  • 特許5829090- 図000006
  • 特許5829090- 図000007
  • 特許5829090- 図000008
  • 特許5829090- 図000009
  • 特許5829090- 図000010
  • 特許5829090- 図000011
  • 特許5829090- 図000012
  • 特許5829090- 図000013
  • 特許5829090- 図000014
  • 特許5829090- 図000015
  • 特許5829090- 図000016
  • 特許5829090- 図000017
  • 特許5829090- 図000018
  • 特許5829090- 図000019
  • 特許5829090- 図000020
  • 特許5829090- 図000021
  • 特許5829090- 図000022
  • 特許5829090- 図000023
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】5829090
(24)【登録日】2015年10月30日
(45)【発行日】2015年12月9日
(54)【発明の名称】ゲームシステム、ゲーム処理方法、ゲームプログラム、およびゲーム装置
(51)【国際特許分類】
   A63F 13/55 20140101AFI20151119BHJP
   A63F 13/42 20140101ALI20151119BHJP
   A63F 13/525 20140101ALI20151119BHJP
【FI】
   A63F13/55
   A63F13/42
   A63F13/525
【請求項の数】22
【全頁数】50
(21)【出願番号】特願2011-223597(P2011-223597)
(22)【出願日】2011年10月11日
(65)【公開番号】特開2013-81621(P2013-81621A)
(43)【公開日】2013年5月9日
【審査請求日】2014年8月25日
(73)【特許権者】
【識別番号】000233778
【氏名又は名称】任天堂株式会社
【住所又は居所】京都府京都市南区上鳥羽鉾立町11番地1
(74)【代理人】
【識別番号】100158780
【弁理士】
【氏名又は名称】寺本 亮
(74)【代理人】
【識別番号】100130269
【弁理士】
【氏名又は名称】石原 盛規
(72)【発明者】
【氏名】四方 宏昌
【住所又は居所】京都府京都市南区上鳥羽鉾立町11番地1 任天堂株式会社内
(72)【発明者】
【氏名】佐藤 賢太
【住所又は居所】京都府京都市南区上鳥羽鉾立町11番地1 任天堂株式会社内
【審査官】 鈴木 崇雅
(56)【参考文献】
【文献】 特開2012−101026(JP,A)
【文献】 特表2010−531491(JP,A)
【文献】 特開2008−161726(JP,A)
【文献】 米国特許出願公開第2009/0048018(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
A63F 13/00−98
(57)【特許請求の範囲】
【請求項1】
プレイヤによる入力装置への入力を示す入力データに基づいて、仮想世界に配置されたプレイヤオブジェクトの制御を行うゲームシステムであって、
前記入力データを取得する入力データ取得手段と、
前記入力データに基づいて、前記仮想世界における前記プレイヤオブジェクトの向きの変化方向および変化量を示す制御データを設定する設定手段と、
前記プレイヤオブジェクトと所定の他のオブジェクトとが所定の位置関係である場合、前記プレイヤオブジェクトが所定の方向を向きやすいように、前記制御データを調整する調整手段と、
前記制御データに基づいて、前記プレイヤオブジェクトの姿勢を変更する姿勢変更手段とを備え
前記入力データには、前記入力装置に備えられた方向入力部に対する入力に応じた方向データが含まれ、
前記設定手段は、前記方向データに基づいて、前記制御データを設定し、
前記方向データに応じて、前記プレイヤオブジェクトを前記仮想世界において移動させる移動手段をさらに備え、
前記移動手段は、前記プレイヤオブジェクトと前記他のオブジェクトとが前記所定の位置関係である場合において、前記方向データが示す前記プレイヤオブジェクトの移動方向が前記他のオブジェクトに向かう方向であるとき、前記プレイヤオブジェクトの移動を制限し、
前記調整手段は、前記プレイヤオブジェクトと前記他のオブジェクトとが前記所定の位置関係である場合において、前記方向データが示す前記プレイヤオブジェクトの移動方向が前記他のオブジェクトに向かう方向であるとき、前記プレイヤオブジェクトが前記他のオブジェクトを向くように前記制御データを調整する、ゲームシステム。
【請求項2】
前記調整手段は、前記プレイヤオブジェクトが前記他のオブジェクトを向きやすいように前記制御データを調整する、請求項1に記載のゲームシステム。
【請求項3】
前記調整手段は、前記他のオブジェクトが前記プレイヤオブジェクトの後方に存在する場合、前記プレイヤオブジェクトが前記他のオブジェクトを向きやすいように前記制御データを調整する、請求項2に記載のゲームシステム。
【請求項4】
前記プレイヤオブジェクトからみた特定の方向と、前記プレイヤオブジェクトから前記他のオブジェクトへの方向との一致の度合を算出する度合算出手段をさらに備え、
前記調整手段は、前記度合に基づいて前記制御データを調整する、請求項1から3の何れかに記載のゲームシステム。
【請求項5】
前記度合は、前記他のオブジェクトが前記プレイヤオブジェクトの後方に存在するほど値が大きくなり、
前記調整手段は、前記度合が大きいほど前記プレイヤオブジェクトが前記他のオブジェクトを向きやすいように前記制御データを調整する、請求項4に記載のゲームシステム。
【請求項6】
前記入力データには、前記入力装置の姿勢に基づいた姿勢データが含まれ、
前記姿勢データに基づいて、前記入力装置の姿勢を取得する姿勢取得手段をさらに備え

前記設定手段は、前記入力装置の姿勢に応じて、前記制御データを設定する、請求項1から5の何れかに記載のゲームシステム。
【請求項7】
前記設定手段は、前記入力装置の姿勢の変化量に応じた第1変化量で前記プレイヤオブジェクトの向きが変化するように、前記制御データを設定し、
前記調整手段は、前記プレイヤオブジェクトと前記他のオブジェクトとが前記所定の位置関係である場合、前記プレイヤオブジェクトの向きが前記第1変化量よりも多い第2変化量で変化するように、前記制御データを調整する、請求項6に記載のゲームシステム。
【請求項8】
前記設定手段は、前記入力装置の姿勢の変化方向に対応する前記仮想世界における方向に、当該入力装置の姿勢の変化量に応じた第1変化量で前記プレイヤオブジェクトの向きが変化するように、前記制御データを設定し、
前記調整手段は、前記入力装置の姿勢の変化方向に対応する前記仮想世界における方向が前記プレイヤオブジェクトが前記他のオブジェクトに向く方向である場合に、前記第1変化量よりも多い第2変化量で前記プレイヤオブジェクトの向きが変化するように、前記制御データを調整する、請求項7に記載のゲームシステム。
【請求項9】
前記入力装置は、表示部を有する可搬型表示装置であり、
前記仮想世界に前記プレイヤオブジェクトの向きに応じて仮想カメラを設定する仮想カメラ設定手段と、
前記仮想カメラで前記仮想世界を撮像した画像を前記表示部に表示させる表示制御手段とをさらに備える、請求項1からの何れかに記載のゲームシステム。
【請求項10】
前記他のオブジェクトは前記仮想世界を移動可能な敵オブジェクトであり、
前記入力データに基づいて、前記敵オブジェクトに対する攻撃を前記プレイヤオブジェクトに行わせる攻撃制御手段をさらに備える、請求項1からの何れかに記載のゲームシステム。
【請求項11】
プレイヤによる入力装置への入力を示す入力データに基づいて、仮想世界に配置されたプレイヤオブジェクトの制御を行うゲームシステムに含まれる少なくとも1つのプロセッサにより実行されるゲーム処理方法であって、
前記入力データを取得する入力データ取得ステップと、
前記入力データに基づいて、前記仮想世界における前記プレイヤオブジェクトの向きの変化方向および変化量を示す制御データを設定する設定ステップと、
前記プレイヤオブジェクトと所定の他のオブジェクトとが所定の位置関係である場合、前記プレイヤオブジェクトが所定の方向を向きやすいように、前記制御データを調整する調整ステップと、
前記制御データに基づいて、前記プレイヤオブジェクトの姿勢を変更する姿勢変更ステップとを含み、
前記入力データには、前記入力装置に備えられた方向入力部に対する入力に応じた方向データが含まれ、
前記設定ステップでは、前記方向データに基づいて、前記制御データを設定し、
前記方向データに応じて、前記プレイヤオブジェクトを前記仮想世界において移動させる移動ステップをさらに含み、
前記移動ステップでは、前記プレイヤオブジェクトと前記他のオブジェクトとが前記所定の位置関係である場合において、前記方向データが示す前記プレイヤオブジェクトの移動方向が前記他のオブジェクトに向かう方向であるとき、前記プレイヤオブジェクトの移動を制限し、
前記調整ステップでは、前記プレイヤオブジェクトと前記他のオブジェクトとが前記所定の位置関係である場合において、前記方向データが示す前記プレイヤオブジェクトの移動方向が前記他のオブジェクトに向かう方向であるとき、前記プレイヤオブジェクトが前記他のオブジェクトを向くように前記制御データを調整する、ゲーム処理方法。
【請求項12】
前記調整ステップでは、前記プレイヤオブジェクトが前記他のオブジェクトを向きやすいように前記制御データを調整する、請求項11に記載のゲーム処理方法。
【請求項13】
前記調整ステップでは、前記他のオブジェクトが前記プレイヤオブジェクトの後方に存在する場合、前記プレイヤオブジェクトが前記他のオブジェクトを向きやすいように前記制御データを調整する、請求項1に記載のゲーム処理方法。
【請求項14】
前記プレイヤオブジェクトからみた特定の方向と、前記プレイヤオブジェクトから前記他のオブジェクトへの方向との一致の度合を算出する度合算出ステップをさらに含み、
前記調整ステップでは、前記度合に基づいて前記制御データを調整する、請求項1から1の何れかに記載のゲーム処理方法。
【請求項15】
前記度合は、前記他のオブジェクトが前記プレイヤオブジェクトの後方に存在するほど値が大きくなり、
前記調整ステップでは、前記度合が大きいほど前記プレイヤオブジェクトが前記他のオブジェクトを向きやすいように前記制御データを調整する、請求項1に記載のゲーム処理方法。
【請求項16】
前記入力データには、前記入力装置の姿勢に基づいた姿勢データが含まれ、
前記姿勢データに基づいて、前記入力装置の姿勢を取得する姿勢取得ステップをさらに含み、
前記設定ステップでは、前記入力装置の姿勢に応じて、前記制御データを設定する、請求項1から1の何れかに記載のゲーム処理方法。
【請求項17】
前記設定ステップでは、前記入力装置の姿勢の変化量に応じた第1変化量で前記プレイヤオブジェクトの向きが変化するように、前記制御データを設定し、
前記調整ステップでは、前記プレイヤオブジェクトと前記他のオブジェクトとが前記所定の位置関係である場合、前記プレイヤオブジェクトの向きが前記第1変化量よりも多い第2変化量で変化するように、前記制御データを調整する、請求項1に記載のゲーム処理方法。
【請求項18】
前記設定ステップでは、前記入力装置の姿勢の変化方向に対応する前記仮想世界における方向に、当該入力装置の姿勢の変化量に応じた第1変化量で前記プレイヤオブジェクトの向きが変化するように、前記制御データを設定し、
前記調整ステップでは、前記入力装置の姿勢の変化方向に対応する前記仮想世界における方向が前記プレイヤオブジェクトが前記他のオブジェクトに向く方向である場合に、前記第1変化量よりも多い第2変化量で前記プレイヤオブジェクトの向きが変化するように、前記制御データを調整する、請求項17に記載のゲーム処理方法。
【請求項19】
前記入力装置は、表示部を有する可搬型表示装置であり、
前記仮想世界に前記プレイヤオブジェクトの向きに応じて仮想カメラを設定する仮想カメラ設定ステップと、
前記仮想カメラで前記仮想世界を撮像した画像を前記表示部に表示させる表示制御ステップとをさらに含む、請求項1から18の何れかに記載のゲーム処理方法。
【請求項20】
前記他のオブジェクトは前記仮想世界を移動可能な敵オブジェクトであり、
前記入力データに基づいて、前記敵オブジェクトに対する攻撃を前記プレイヤオブジェクトに行わせる攻撃制御ステップをさらに含む、請求項1から19の何れかに記載のゲーム処理方法。
【請求項21】
プレイヤによる入力装置への入力を示す入力データに基づいて、仮想世界に配置されたプレイヤオブジェクトの制御を行うゲーム装置のコンピュータにおいて実行されるゲームプログラムであって、
前記入力データを取得する入力データ取得手段と、
前記入力データに基づいて、前記仮想世界における前記プレイヤオブジェクトの向きの変化方向および変化量を示す制御データを設定する設定手段と、
前記プレイヤオブジェクトと所定の他のオブジェクトとが所定の位置関係である場合、前記プレイヤオブジェクトが所定の方向を向きやすいように、前記制御データを調整する調整手段と、
前記制御データに基づいて、前記プレイヤオブジェクトの姿勢を変更する姿勢変更手段として、前記コンピュータを機能させ
前記入力データには、前記入力装置に備えられた方向入力部に対する入力に応じた方向データが含まれ、
前記設定手段は、前記方向データに基づいて、前記制御データを設定し、
前記方向データに応じて、前記プレイヤオブジェクトを前記仮想世界において移動させる移動手段として前記コンピュータをさらに機能させ、
前記移動手段は、前記プレイヤオブジェクトと前記他のオブジェクトとが前記所定の位置関係である場合において、前記方向データが示す前記プレイヤオブジェクトの移動方向が前記他のオブジェクトに向かう方向であるとき、前記プレイヤオブジェクトの移動を制限し、
前記調整手段は、前記プレイヤオブジェクトと前記他のオブジェクトとが前記所定の位置関係である場合において、前記方向データが示す前記プレイヤオブジェクトの移動方向が前記他のオブジェクトに向かう方向であるとき、前記プレイヤオブジェクトが前記他のオブジェクトを向くように前記制御データを調整する、ゲームプログラム。
【請求項22】
プレイヤによる入力装置への入力を示す入力データに基づいて、仮想世界に配置されたプレイヤオブジェクトの制御を行うゲーム装置であって、
前記入力データを取得する入力データ取得手段と、
前記入力データに基づいて、前記仮想世界における前記プレイヤオブジェクトの向きの変化方向および変化量を示す制御データを設定する設定手段と、
前記プレイヤオブジェクトと所定の他のオブジェクトとが所定の位置関係である場合、前記プレイヤオブジェクトが所定の方向を向きやすいように、前記制御データを調整する調整手段と、
前記制御データに基づいて、前記プレイヤオブジェクトの姿勢を変更する姿勢変更手段とを備え
前記入力データには、前記入力装置に備えられた方向入力部に対する入力に応じた方向データが含まれ、
前記設定手段は、前記方向データに基づいて、前記制御データを設定し、
前記方向データに応じて、前記プレイヤオブジェクトを前記仮想世界において移動させる移動手段をさらに備え、
前記移動手段は、前記プレイヤオブジェクトと前記他のオブジェクトとが前記所定の位置関係である場合において、前記方向データが示す前記プレイヤオブジェクトの移動方向が前記他のオブジェクトに向かう方向であるとき、前記プレイヤオブジェクトの移動を制限し、
前記調整手段は、前記プレイヤオブジェクトと前記他のオブジェクトとが前記所定の位置関係である場合において、前記方向データが示す前記プレイヤオブジェクトの移動方向が前記他のオブジェクトに向かう方向であるとき、前記プレイヤオブジェクトが前記他のオブジェクトを向くように前記制御データを調整する、ゲーム装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、複数のプレイヤによって行われるゲーム処理を実行するゲームシステム、ゲーム処理方法、ゲームプログラム、およびゲーム装置に関する。
【背景技術】
【0002】
従来より、プレイヤによる方向入力部に対する入力に応じてプレイヤオブジェクトを移動させたり、方向転換させたりすることができるゲーム装置が存在する。例えば、特許文献1に記載のゲームでは、スティックを上下方向に倒すとプレイヤオブジェクトは前後に移動し、スティックを左右方向に倒すとプレイヤオブジェクトは回転する。このようなゲームでは、プレイヤの入力に応じてプレイヤオブジェクトの向きや位置が変化する。
【先行技術文献】
【非特許文献】
【0003】
【非特許文献1】「任天堂公式ガイドブック007ゴールデンアイ」、任天堂株式会社、1998年10月10日、P.5
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、従来のゲームでは、プレイヤの入力がそのままプレイヤオブジェクトの向きや位置の制御に用いられるものであり、必ずしもプレイヤは自身が意図した通りに容易にプレイヤオブジェクトを動作させることができるものではなかった。
【0005】
それ故、本発明の目的は、プレイヤが意図した通りに容易にプレイヤオブジェクトを動作させることができるゲームシステム、ゲーム処理方法、ゲームプログラム、およびゲーム装置を提供することである。
【課題を解決するための手段】
【0006】
本発明は、上記の課題を解決するために、以下の構成を採用した。
【0007】
本発明の一例は、プレイヤによる入力装置への入力を示す入力データに基づいて、仮想世界に配置されたプレイヤオブジェクトの制御を行うゲームシステムである。ゲームシステムは、入力データ取得手段と、設定手段と、調整手段と、姿勢変更手段とを備える。入力データ取得手段は、上記入力データを取得する。設定手段は、上記入力データに基づいて、上記仮想世界における上記プレイヤオブジェクトの向きの変化方向および変化量を示す制御データを設定する。調整手段は、上記プレイヤオブジェクトと所定の他のオブジェクトとが所定の位置関係である場合、上記プレイヤオブジェクトが所定の方向を向きやすいように、上記制御データを調整する。姿勢変更手段は、上記制御データに基づいて、上記プレイヤオブジェクトの姿勢を変更する。
【0008】
上記によれば、入力データに基づいてプレイヤオブジェクトの向きの変化方向および変化量を示す制御データが設定される。そして、プレイヤオブジェクトと所定の他のオブジェクトとが所定の位置関係である場合、プレイヤオブジェクトが所定の方向を向きやすいように制御データを調整することができる。これにより、プレイヤオブジェクトと所定の他のオブジェクトとが所定の位置関係である場合、プレイヤオブジェクトを所定の方向に向けやすくすることができる。
【0009】
また、他の構成では、上記調整手段は、上記プレイヤオブジェクトが上記他のオブジェクトを向きやすいように上記制御データを調整してもよい。
【0010】
上記によれば、プレイヤオブジェクトを他のオブジェクトに向けやすくすることができる。
【0011】
また、他の構成では、上記調整手段は、上記他のオブジェクトが上記プレイヤオブジェクトの後方に存在する場合、上記プレイヤオブジェクトが上記他のオブジェクトを向きやすいように上記制御データを調整してもよい。
【0012】
上記によれば、他のオブジェクトがプレイヤオブジェクトの後方に存在する場合、プレイヤオブジェクトを他のオブジェクトに向けやすくすることができる。
【0013】
また、他の構成では、ゲームシステムは、上記プレイヤオブジェクトからみた特定の方向と、上記プレイヤオブジェクトから上記他のオブジェクトへの方向との一致の度合を算出する度合算出手段をさらに備えてもよい。この場合、上記調整手段は、上記度合に基づいて上記制御データを調整してもよい。
【0014】
上記によれば、上記度合に基づいて制御データを調整することができる。例えば、上記度合は、他のオブジェクトが上記プレイヤオブジェクトの後方に存在するほど値が大きくなるものでもよいし、他のオブジェクトが上記プレイヤオブジェクトの右方向に存在するほど値が大きくなるものでもよい。
【0015】
また、他の構成では、上記度合は、上記他のオブジェクトが上記プレイヤオブジェクトの後方に存在するほど値が大きくなってもよい。この場合、上記調整手段は、上記度合が大きいほど上記プレイヤオブジェクトが上記他のオブジェクトを向きやすいように上記制御データを調整してもよい。
【0016】
上記によれば、他のオブジェクトがプレイヤオブジェクトの後方に存在するほど、プレイヤオブジェクトを他のオブジェクトに向かせやすくすることができる。
【0017】
また、他の構成では、上記入力データには、上記入力装置の姿勢に基づいた姿勢データが含まれてもよい。また、ゲームシステムは、上記姿勢データに基づいて、上記入力装置の姿勢を取得する姿勢取得手段をさらに備えてもよい。そして、上記設定手段は、上記入力装置の姿勢に応じて、上記制御データを設定してもよい。
【0018】
上記によれば、入力装置の姿勢を取得することができ、当該入力装置の姿勢に応じて上記制御データを設定することができる。
【0019】
また、他の構成では、上記設定手段は、上記入力装置の姿勢の変化量に応じた第1変化量で上記プレイヤオブジェクトの向きが変化するように、上記制御データを設定してもよい。この場合、上記調整手段は、上記プレイヤオブジェクトと上記他のオブジェクトとが上記所定の位置関係である場合、上記プレイヤオブジェクトの向きが上記第1変化量よりも多い第2変化量で変化するように、上記制御データを調整してもよい。
【0020】
上記によれば、入力装置の姿勢の変化量に応じた第1変化量でプレイヤオブジェクトの向きを変化させることができる。そして、上記所定の位置関係の場合、プレイヤオブジェクトの向きをより大きく変化させることができる。
【0021】
また、他の構成では、上記設定手段は、上記入力装置の姿勢の変化方向に対応する上記仮想世界における方向に、当該入力装置の姿勢の変化量に応じた第1変化量で上記プレイヤオブジェクトの向きが変化するように、上記制御データを設定してもよい。そして、上記調整手段は、上記入力装置の姿勢の変化方向に対応する上記仮想世界における方向が上記プレイヤオブジェクトが上記他のオブジェクトに向く方向である場合に、上記第1変化量よりも多い第2変化量で上記プレイヤオブジェクトの向きが変化するように、上記制御データを調整してもよい。
【0022】
上記によれば、入力装置の姿勢の変化方向および変化量に応じてプレイヤオブジェクトの向きを変化させることができる。そして、入力装置の姿勢がプレイヤオブジェクトが他のオブジェクトを向く方向に変化する場合、プレイヤオブジェクトの向きをより大きく変化させることができる。
【0023】
また、他の構成では、上記入力データには、上記入力装置に備えられた方向入力部に対する入力に応じた方向データが含まれてもよい。また、上記設定手段は、上記方向データに基づいて、上記制御データを設定してもよい。
【0024】
上記によれば、方向入力部に対する入力に基づいて、上記制御データを設定することができる。
【0025】
また、他の構成では、ゲームシステムは、上記方向データに応じて、上記プレイヤオブジェクトを上記仮想世界において移動させる移動手段をさらに備えてもよい。
【0026】
上記によれば、方向入力部に対する入力に応じてプレイヤオブジェクトを仮想世界において移動させることができる。
【0027】
また、他の構成では、上記移動手段は、上記プレイヤオブジェクトと上記他のオブジェクトとが上記所定の位置関係である場合において、上記方向データが示す上記プレイヤオブジェクトの移動方向が上記他のオブジェクトに向かう方向であるとき、前記プレイヤオブジェクトの移動を制限してもよい。また、上記調整手段は、上記プレイヤオブジェクトと上記他のオブジェクトとが上記所定の位置関係である場合において、上記方向データが示す上記プレイヤオブジェクトの移動方向が上記他のオブジェクトに向かう方向であるとき、上記プレイヤオブジェクトが上記他のオブジェクトを向くように上記制御データを調整してもよい。
【0028】
上記によれば、方向入力部に対する入力に基づいてプレイヤオブジェクトを移動させることができる。そして、プレイヤオブジェクトと他のオブジェクトとが所定の位置関係である場合において、方向データが示す移動方向が他のオブジェクトに向かう方向であるとき、プレイヤオブジェクトの移動を制限することができる。この場合において、プレイヤオブジェクトが他のオブジェクトを向くように制御データを調整することができる。
【0029】
また、他の構成では、上記入力装置は、表示部を有する可搬型表示装置であってもよい。また、ゲームシステムは、仮想カメラ設定手段と表示制御手段とをさらに備えてもよい。仮想カメラ設定手段は、上記仮想世界に上記プレイヤオブジェクトの向きに応じて仮想カメラを設定する。また、表示制御手段は、上記仮想カメラで上記仮想世界を撮像した画像を上記表示部に表示させる。
【0030】
上記によれば、プレイヤオブジェクトの向きに応じて仮想カメラを設定し、当該仮想カメラで仮想空間を撮像した画像を可搬型表示装置の表示部に表示させることができる。
【0031】
また、他の構成では、上記他のオブジェクトは上記仮想世界を移動可能な敵オブジェクトであってもよい。また、ゲームシステムは、上記入力データに基づいて、上記敵オブジェクトに対する攻撃を上記プレイヤオブジェクトに行わせる攻撃制御手段をさらに備えてもよい。
【0032】
上記によれば、プレイヤオブジェクトが敵オブジェクトに対して攻撃するゲームを行うことができる。
【0033】
なお、本発明の別の一例は、上記ゲームシステムに含まれるゲーム装置であってもよい。また、上記ゲームシステムに含まれるコンピュータを上記各手段として機能させるゲームプログラムの形態であってもよい。さらに、本発明の別の一例は、上記のゲーム装置またはゲームシステムにおいて行われるゲーム処理方法の形態であってもよい。なお、上記ゲームシステムは、複数の装置が協働することによって実現されてもよいし、1つの装置によって実現されてもよい。
【発明の効果】
【0034】
本発明によれば、プレイヤは自身が意図した通りに容易にプレイヤオブジェクトを動作させることができる。
【図面の簡単な説明】
【0035】
図1】ゲームシステム1の外観図
図2】ゲーム装置3の内部構成を示すブロック図
図3】コントローラ5の外観構成を示す斜視図
図4】コントローラ5の内部構成を示すブロック図
図5】端末装置7の外観構成を示す平面図
図6】ユーザが端末装置7を横向きで把持した様子を示す図
図7】端末装置7の内部構成を示すブロック図
図8】テレビ2に表示されるテレビ用ゲーム画像の一例を示す図
図9】端末装置7のLCD51に表示される端末用ゲーム画像の一例を示す図
図10】第1キャラクタ91a〜91cの移動経路を示す図
図11】第1キャラクタ91aの移動の詳細を示す図
図12】第1キャラクタ91aが複数の敵キャラクタ93に向かって移動を開始した時点でテレビ2の左上の領域に表示される画像90aを示す図
図13】左アナログスティック53Aの入力方向に基づく第2キャラクタ92の移動および回転を示す図
図14】端末装置7を実空間の上方から見た図であり、実空間における端末装置7の姿勢の変化を示す図
図15】第2キャラクタ92の真後ろに敵キャラクタ93が存在する場合のテレビ2の右下領域に表示される画像90dを示す図
図16】ゲーム処理において用いられる各種データを示す図
図17】ゲーム装置3において実行されるゲーム処理の流れを示すメインフローチャート
図18図17に示す回転処理(ステップS3)の詳細な流れを示すフローチャート
図19図18に示すスティックによる回転角算出処理(ステップS15)の詳細な流れを示すフローチャート
図20図18に示すジャイロセンサによる回転角算出処理(ステップS16)の詳細な流れを示すフローチャート
図21図17に示す移動処理(ステップS4)の詳細な流れを示すフローチャート
図22】ゲーム空間の上方から第2キャラクタ92と敵キャラクタ93とを見た図であり、第2キャラクタ92と敵キャラクタ93との角度を示す図
【発明を実施するための形態】
【0036】
[1.ゲームシステムの全体構成]
以下、図面を参照して、本発明の一実施形態に係るゲームシステム1について説明する。図1は、ゲームシステム1の外観図である。図1において、ゲームシステム1は、テレビジョン受像器等に代表される据置型のディスプレイ装置(以下、「テレビ」と記載する)2、据置型のゲーム装置3、光ディスク4、コントローラ5、マーカ装置6、および、端末装置7を含む。ゲームシステム1は、コントローラ5を用いたゲーム操作に基づいてゲーム装置3においてゲーム処理を実行し、ゲーム処理によって得られるゲーム画像をテレビ2および/または端末装置7に表示するものである。
【0037】
ゲーム装置3には、当該ゲーム装置3に対して交換可能に用いられる情報記憶媒体の一例である光ディスク4が脱着可能に挿入される。光ディスク4には、ゲーム装置3において実行されるための情報処理プログラム(典型的にはゲームプログラム)が記憶されている。ゲーム装置3の前面には光ディスク4の挿入口が設けられている。ゲーム装置3は、挿入口に挿入された光ディスク4に記憶されている情報処理プログラムを読み出して実行することによってゲーム処理を実行する。
【0038】
ゲーム装置3には、テレビ2が接続コードを介して接続される。テレビ2は、ゲーム装置3において実行されるゲーム処理によって得られるゲーム画像を表示する。テレビ2はスピーカ2a(図2)を有しており、スピーカ2aは、上記ゲーム処理の結果得られるゲーム音声を出力する。なお、他の実施形態においては、ゲーム装置3と据置型の表示装置とは一体となっていてもよい。また、ゲーム装置3とテレビ2との通信は無線通信であってもよい。
【0039】
テレビ2の画面の周辺(図1では画面の上側)には、マーカ装置6が設置される。詳細は後述するが、ユーザ(プレイヤ)はコントローラ5を動かすゲーム操作を行うことができ、マーカ装置6は、コントローラ5の動きや位置や姿勢等をゲーム装置3が算出するために用いられる。マーカ装置6は、その両端に2つのマーカ6Rおよび6Lを備えている。マーカ6R(マーカ6Lも同様)は、具体的には1以上の赤外LED(Light Emitting Diode)であり、テレビ2の前方に向かって赤外光を出力する。マーカ装置6は有線で(無線であってもよい)ゲーム装置3に接続されており、ゲーム装置3はマーカ装置6が備える各赤外LEDの点灯を制御することが可能である。なお、マーカ装置6は可搬型であり、ユーザはマーカ装置6を自由な位置に設置することができる。図1ではマーカ装置6がテレビ2の上に設置された態様を表しているが、マーカ装置6を設置する位置および向きは任意である。
【0040】
コントローラ5は、自機に対する操作に基づく操作データをゲーム装置3に与えるものである。コントローラ5とゲーム装置3とは無線通信によって通信可能である。本実施形態では、コントローラ5とゲーム装置3との間の無線通信には例えばBluetooth(ブルートゥース)(登録商標)の技術が用いられる。なお、他の実施形態においてはコントローラ5とゲーム装置3とは有線で接続されてもよい。また、図1では、ゲームシステム1に含まれるコントローラ5は1つとするが、ゲームシステム1は複数のコントローラ5を含んでいてもよい。つまり、ゲーム装置3は複数のコントローラと通信可能であり、所定台数のコントローラを同時に使用することによって複数人でゲームをプレイすることが可能である。コントローラ5の詳細な構成については後述する。
【0041】
端末装置7は、ユーザが把持可能な程度の大きさであり、ユーザは端末装置7を手に持って動かしたり、あるいは、端末装置7を自由な位置に配置したりして使用することが可能である。詳細な構成は後述するが、端末装置7は、表示手段であるLCD(Liquid Crystal Display:液晶表示装置)51、および、入力手段(後述するタッチパネル52やジャイロセンサ74等)を備える。端末装置7とゲーム装置3とは無線(有線であってもよい)によって通信可能である。端末装置7は、ゲーム装置3で生成された画像(例えばゲーム画像)のデータをゲーム装置3から受信し、画像をLCD51に表示する。なお、本実施形態では表示装置としてLCDを用いているが、端末装置7は、例えばEL(Electro Luminescence:電界発光)を利用した表示装置等、他の任意の表示装置を有していてもよい。また、端末装置7は、自機に対する操作に基づく操作データをゲーム装置3に送信する。
【0042】
[2.ゲーム装置3の内部構成]
次に、図2を参照して、ゲーム装置3の内部構成について説明する。図2は、ゲーム装置3の内部構成を示すブロック図である。ゲーム装置3は、CPU10、システムLSI11、外部メインメモリ12、ROM/RTC13、ディスクドライブ14、およびAV−IC15等を有する。
【0043】
CPU10は、光ディスク4に記憶されたゲームプログラムを実行することによってゲーム処理を実行するものであり、ゲームプロセッサとして機能する。CPU10は、システムLSI11に接続される。システムLSI11には、CPU10の他、外部メインメモリ12、ROM/RTC13、ディスクドライブ14およびAV−IC15が接続される。システムLSI11は、それに接続される各構成要素間におけるデータ転送の制御、表示すべき画像の生成、外部装置からのデータの取得等の処理を行う。なお、システムLSI11の内部構成については後述する。揮発性の外部メインメモリ12は、光ディスク4から読み出されたゲームプログラムや、フラッシュメモリ17から読み出されたゲームプログラム等のプログラムを記憶したり、各種データを記憶したりするものであり、CPU10のワーク領域やバッファ領域として用いられる。ROM/RTC13は、ゲーム装置3の起動用のプログラムが組み込まれるROM(いわゆるブートROM)と、時間をカウントするクロック回路(RTC:Real Time Clock)とを有する。ディスクドライブ14は、光ディスク4からプログラムデータやテクスチャデータ等を読み出し、後述する内部メインメモリ11eまたは外部メインメモリ12に読み出したデータを書き込む。
【0044】
システムLSI11には、入出力プロセッサ(I/Oプロセッサ)11a、GPU(Graphics Processor Unit)11b、DSP(Digital Signal Processor)11c、VRAM(Video RAM)11d、および内部メインメモリ11eが設けられる。図示は省略するが、これらの構成要素11a〜11eは内部バスによって互いに接続される。
【0045】
GPU11bは、描画手段の一部を形成し、CPU10からのグラフィクスコマンド(作画命令)に従って画像を生成する。VRAM11dは、GPU11bがグラフィクスコマンドを実行するために必要なデータ(ポリゴンデータやテクスチャデータ等のデータ)を記憶する。画像が生成される際には、GPU11bは、VRAM11dに記憶されたデータを用いて画像データを作成する。なお、本実施形態においては、ゲーム装置3は、テレビ2に表示するゲーム画像と、端末装置7に表示するゲーム画像との両方を生成する。以下では、テレビ2に表示されるゲーム画像を「テレビ用ゲーム画像」と呼び、端末装置7に表示されるゲーム画像を「端末用ゲーム画像」と呼ぶことがある。
【0046】
DSP11cは、オーディオプロセッサとして機能し、内部メインメモリ11eや外部メインメモリ12に記憶されるサウンドデータや音波形(音色)データを用いて、音声データを生成する。なお、本実施形態においては、ゲーム音声についてもゲーム画像と同様、テレビ2のスピーカから出力するゲーム音声と、端末装置7のスピーカから出力するゲーム音声との両方が生成される。
【0047】
上記のようにゲーム装置3において生成される画像および音声のうちで、テレビ2において出力される画像および音声のデータは、AV−IC15によって読み出される。AV−IC15は、読み出した画像データをAVコネクタ16を介してテレビ2に出力するとともに、読み出した音声データを、テレビ2に内蔵されるスピーカ2aに出力する。これによって、テレビ2に画像が表示されるとともにスピーカ2aから音が出力される。
【0048】
また、ゲーム装置3において生成される画像および音声のうちで、端末装置7において出力される画像および音声のデータは、入出力プロセッサ11a等によって端末装置7へ送信される。入出力プロセッサ11a等による端末装置7へのデータの送信については後述する。
【0049】
入出力プロセッサ11aは、それに接続される構成要素との間でデータの送受信を実行したり、外部装置からのデータのダウンロードを実行したりする。入出力プロセッサ11aは、フラッシュメモリ17、ネットワーク通信モジュール18、コントローラ通信モジュール19、拡張コネクタ20、メモリカード用コネクタ21、コーデックLSI27に接続される。また、ネットワーク通信モジュール18にはアンテナ22が接続される。コントローラ通信モジュール19にはアンテナ23が接続される。コーデックLSI27は端末通信モジュール28に接続され、端末通信モジュール28にはアンテナ29が接続される。
【0050】
ゲーム装置3は、インターネット等のネットワークに接続して外部情報処理装置(例えば他のゲーム装置や、各種サーバや、各種情報処理装置等)と通信を行うことが可能である。すなわち、入出力プロセッサ11aは、ネットワーク通信モジュール18およびアンテナ22を介してインターネット等のネットワークに接続し、ネットワークに接続される外部情報処理装置と通信することができる。入出力プロセッサ11aは、定期的にフラッシュメモリ17にアクセスし、ネットワークへ送信する必要があるデータの有無を検出し、当該データが有る場合には、ネットワーク通信モジュール18およびアンテナ22を介してネットワークに送信する。また、入出力プロセッサ11aは、外部情報処理装置から送信されてくるデータやダウンロードサーバからダウンロードしたデータを、ネットワーク、アンテナ22およびネットワーク通信モジュール18を介して受信し、受信したデータをフラッシュメモリ17に記憶する。CPU10はゲームプログラムを実行することにより、フラッシュメモリ17に記憶されたデータを読み出してゲームプログラムで利用する。フラッシュメモリ17には、ゲーム装置3と外部情報処理装置との間で送受信されるデータの他、ゲーム装置3を利用してプレイしたゲームのセーブデータ(ゲームの結果データまたは途中データ)が記憶されてもよい。また、フラッシュメモリ17にはゲームプログラムが記憶されてもよい。
【0051】
また、ゲーム装置3は、コントローラ5からの操作データを受信することが可能である。すなわち、入出力プロセッサ11aは、コントローラ5から送信される操作データをアンテナ23およびコントローラ通信モジュール19を介して受信し、内部メインメモリ11eまたは外部メインメモリ12のバッファ領域に記憶(一時記憶)する。
【0052】
また、ゲーム装置3は、端末装置7との間で画像や音声等のデータを送受信することが可能である。入出力プロセッサ11aは、端末装置7へゲーム画像(端末用ゲーム画像)を送信する場合、GPU11bが生成したゲーム画像のデータをコーデックLSI27へ出力する。コーデックLSI27は、入出力プロセッサ11aからの画像データに対して所定の圧縮処理を行う。端末通信モジュール28は、端末装置7との間で無線通信を行う。したがって、コーデックLSI27によって圧縮された画像データは、端末通信モジュール28によってアンテナ29を介して端末装置7へ送信される。なお、本実施形態では、ゲーム装置3から端末装置7へ送信される画像データはゲームに用いるものであり、ゲームにおいては表示される画像に遅延が生じるとゲームの操作性に悪影響が出る。そのため、ゲーム装置3から端末装置7への画像データの送信に関しては、できるだけ遅延が生じないようにすることが好ましい。したがって、本実施形態では、コーデックLSI27は、例えばH.264規格といった高効率の圧縮技術を用いて画像データを圧縮する。なお、それ以外の圧縮技術を用いてもよいし、通信速度が十分である場合には無圧縮で画像データを送信する構成であってもよい。また、端末通信モジュール28は、例えばWi−Fiの認証を受けた通信モジュールであり、例えばIEEE802.11n規格で採用されるMIMO(Multiple Input Multiple Output)の技術を用いて端末装置7との間の無線通信を高速に行うようにしてもよいし、他の通信方式を用いてもよい。
【0053】
また、ゲーム装置3は、画像データの他、音声データを端末装置7へ送信する。すなわち、入出力プロセッサ11aは、DSP11cが生成した音声データを、コーデックLSI27を介して端末通信モジュール28へ出力する。コーデックLSI27は、音声データに対しても画像データと同様に圧縮処理を行う。音声データに対する圧縮の方式は、どのような方式であってもよいが、圧縮率が高く、音声の劣化が少ない方式が好ましい。また、他の実施形態においては、音声データは圧縮されずに送信されてもよい。端末通信モジュール28は、圧縮された画像データおよび音声データを、アンテナ29を介して端末装置7へ送信する。
【0054】
また、ゲーム装置3は、端末装置7から各種データを受信可能である。詳細は後述するが、本実施形態では、端末装置7は、操作データ、画像データ、および音声データを送信する。端末装置7から送信される各データはアンテナ29を介して端末通信モジュール28によって受信される。ここで、端末装置7からの画像データおよび音声データは、ゲーム装置3から端末装置7への画像データおよび音声データと同様の圧縮処理が施されている。したがって、これら画像データおよび音声データについては、端末通信モジュール28からコーデックLSI27に送られ、コーデックLSI27によって伸張処理が施されて入出力プロセッサ11aに出力される。一方、端末装置7からの操作データに関しては、画像や音声に比べてデータ量が少ないので、圧縮処理が施されていなくともよい。また、必要に応じて暗号化がされていてもよいし、されていなくともよい。したがって、操作データは、端末通信モジュール28で受信された後、コーデックLSI27を介して入出力プロセッサ11aに出力される。入出力プロセッサ11aは、端末装置7から受信したデータを、内部メインメモリ11eまたは外部メインメモリ12のバッファ領域に記憶(一時記憶)する。
【0055】
また、ゲーム装置3は、他の機器や外部記憶媒体に接続することが可能である。すなわち、入出力プロセッサ11aには、拡張コネクタ20およびメモリカード用コネクタ21が接続される。拡張コネクタ20は、USBやSCSIのようなインターフェースのためのコネクタである。拡張コネクタ20に対しては、外部記憶媒体のようなメディアを接続したり、他のコントローラ等の周辺機器を接続したり、有線の通信用コネクタを接続することによってネットワーク通信モジュール18に替えてネットワークとの通信を行ったりすることができる。メモリカード用コネクタ21は、メモリカードのような外部記憶媒体を接続するためのコネクタである。例えば、入出力プロセッサ11aは、拡張コネクタ20やメモリカード用コネクタ21を介して外部記憶媒体にアクセスし、外部記憶媒体にデータを保存したり、外部記憶媒体からデータを読み出したりすることができる。
【0056】
ゲーム装置3には、電源ボタン24、リセットボタン25、およびイジェクトボタン26が設けられる。電源ボタン24およびリセットボタン25は、システムLSI11に接続される。電源ボタン24がオンされると、図示しないACアダプタによって外部の電源からゲーム装置3の各構成要素に対して電力が供給される。リセットボタン25が押されると、システムLSI11は、ゲーム装置3の起動プログラムを再起動する。イジェクトボタン26は、ディスクドライブ14に接続される。イジェクトボタン26が押されると、ディスクドライブ14から光ディスク4が排出される。
【0057】
なお、他の実施形態においては、ゲーム装置3が備える各構成要素のうちでいくつかの構成要素は、ゲーム装置3とは別体の拡張機器として構成されてもよい。このとき、拡張機器は、例えば上記拡張コネクタ20を介してゲーム装置3と接続されるようにしてもよい。具体的には、拡張機器は、例えば上記コーデックLSI27、端末通信モジュール28およびアンテナ29の各構成要素を備えており、拡張コネクタ20に対して着脱可能であってもよい。これによれば、上記各構成要素を備えていないゲーム装置に対して上記拡張機器を接続することによって、当該ゲーム装置を端末装置7と通信可能な構成とすることができる。
【0058】
[3.コントローラ5の構成]
次に、図3および図4を参照して、コントローラ5について説明する。図3は、コントローラ5の外観構成を示す斜視図である。図4は、コントローラ5の外観構成を示す斜視図である。図3は、コントローラ5の上側後方から見た斜視図である。
【0059】
図3および図4において、コントローラ5は、例えばプラスチック成型によって形成されたハウジング31を有している。ハウジング31は、その前後方向(図3に示すZ1軸方向)を長手方向とした略直方体形状を有しており、全体として大人や子供の片手で把持可能な大きさである。ユーザは、コントローラ5に設けられたボタンを押下すること、および、コントローラ5自体を動かしてその位置や姿勢(傾き)を変えることによってゲーム操作を行うことができる。
【0060】
ハウジング31には、複数の操作ボタンが設けられる。図3に示すように、ハウジング31の上面には、十字ボタン32a、1番ボタン32b、2番ボタン32c、Aボタン32d、マイナスボタン32e、ホームボタン32f、プラスボタン32g、および電源ボタン32hが設けられる。ハウジング31の下面には凹部が形成されており、当該凹部の後面側傾斜面にはBボタン32iが設けられる(図示せず)。これらの各操作ボタン32a〜32iには、ゲーム装置3が実行する情報処理プログラムに応じた機能が適宜割り当てられる。また、電源ボタン32hは遠隔からゲーム装置3本体の電源をオン/オフするためのものである。
【0061】
ハウジング31の後面にはコネクタ33が設けられている。コネクタ33は、コントローラ5に他の機器(例えば、アナログスティックを有するサブコントローラや他のセンサユニット等)を接続するために利用される。
【0062】
ハウジング31上面の後方には複数(図3では4つ)のLED34a〜34dが設けられる。ここで、コントローラ5には、他のコントローラ5と区別するためにコントローラ種別(番号)が付与される。
【0063】
また、コントローラ5は撮像情報演算部35(図4)を有しており、、ハウジング31前面には撮像情報演算部35の光入射面35aが設けられる。光入射面35aは、マーカ6Rおよび6Lからの赤外光を少なくとも透過する材質で構成される。
【0064】
ハウジング31上面における1番ボタン32bとホームボタン32fとの間には、コントローラ5に内蔵されるスピーカからの音を外部に放出するための音抜き孔31aが形成されている。
【0065】
なお、図3に示したコントローラ5の形状や、各操作ボタンの形状等は単なる一例に過ぎず、他の形状、数、および設置位置であってもよい。
【0066】
図4は、コントローラ5の内部構成を示すブロック図である。図4に示すように、コントローラ5は、操作部32(各操作ボタン32a〜32i)、撮像情報演算部35、通信部36、加速度センサ37、およびジャイロセンサ48を備えている。コントローラ5は、自機に対して行われた操作内容を表すデータを操作データとしてゲーム装置3へ送信するものである。なお、以下では、コントローラ5が送信する操作データを「コントローラ操作データ」と呼び、端末装置7が送信する操作データを「端末操作データ」と呼ぶことがある。
【0067】
操作部32は、上述した各操作ボタン32a〜32iを含み、各操作ボタン32a〜32iに対する入力状態(各操作ボタン32a〜32iが押下されたか否か)を表す操作ボタンデータを通信部36のマイコン42へ出力する。
【0068】
撮像情報演算部35は、赤外線フィルタ38、レンズ39、撮像素子40、および画像処理回路41を含んでいる。赤外線フィルタ38は、コントローラ5の前方から入射する光から赤外線のみを通過させる。レンズ39は、赤外線フィルタ38を透過した赤外線を集光して撮像素子40へ入射させる。撮像素子40は、例えばCMOSセンサやあるいはCCDセンサのような固体撮像素子であり、レンズ39が集光した赤外線を受光して画像信号を出力する。ここで、撮像対象となる端末装置7のマーカ部55およびマーカ装置6は、赤外光を出力するマーカで構成される。したがって、赤外線フィルタ38を設けることによって、撮像素子40は、赤外線フィルタ38を通過した赤外線だけを受光して画像データを生成するので、撮像対象(マーカ部55および/またはマーカ装置6)の画像をより正確に撮像することができる。以下では、撮像素子40によって生成された画像データは、画像処理回路41で処理される。画像処理回路41は、撮像画像内における撮像対象の位置を算出する。画像処理回路41は、算出された位置を示す座標を通信部36のマイコン42へ出力する。この座標のデータは、マイコン42によって操作データとしてゲーム装置3に送信される。以下では、上記座標を「マーカ座標」と呼ぶ。マーカ座標はコントローラ5自体の向き(傾斜角度)や位置に対応して変化するので、ゲーム装置3はこのマーカ座標を用いてコントローラ5の向きや位置を算出することができる。
【0069】
加速度センサ37は、コントローラ5の加速度(重力加速度を含む)を検出する。なお、加速度センサ37は、例えば静電容量式のMEMS(Micro Electro Mechanical System)型加速度センサであるとするが、他の方式の加速度センサを用いるようにしてもよい。
【0070】
本実施形態では、加速度センサ37は、コントローラ5を基準とした上下方向(図3に示すY1軸方向)、左右方向(図3に示すX1軸方向)および前後方向(図3に示すZ1軸方向)の3軸方向に関してそれぞれ直線加速度を検出する。
【0071】
加速度センサ37が検出した加速度を表すデータ(加速度データ)は、通信部36へ出力される。なお、加速度センサ37が検出した加速度は、コントローラ5自体の向き(傾斜角度)や動きに対応して変化するので、ゲーム装置3は取得された加速度データを用いてコントローラ5の向き(姿勢)や動きを算出することができる。
【0072】
なお、加速度センサ37(後述する加速度センサ63についても同様)から出力される加速度の信号に基づいて、ゲーム装置3のプロセッサ(例えばCPU10)またはコントローラ5のプロセッサ(例えばマイコン42)等のコンピュータが処理を行うことによって、コントローラ5に関するさらなる情報を推測または算出(判定)することができることは、当業者であれば本明細書の説明から容易に理解できるであろう。例えば、加速度センサ37を搭載するコントローラ5が静止状態であることを前提としてコンピュータ側の処理が実行される場合(すなわち、加速度センサによって検出される加速度が重力加速度のみであるとして処理が実行される場合)、コントローラ5が現実に静止状態であれば、検出された加速度に基づいてコントローラ5の姿勢が重力方向に対して傾いているか否かまたはどの程度傾いているかを知ることができる。具体的には、加速度センサ37の検出軸が鉛直下方向を向いている状態を基準としたとき、1G(重力加速度)がかかっているか否かによって、コントローラ5が基準に対して傾いているか否かを知ることができるし、その大きさによって基準に対してどの程度傾いているかも知ることができる。また、多軸の加速度センサ37の場合には、さらに各軸の加速度の信号に対して処理を施すことによって、重力方向に対してコントローラ5がどの程度傾いているかをより詳細に知ることができる。この場合において、プロセッサは、加速度センサ37からの出力に基づいてコントローラ5の傾斜角度を算出してもよいし、当該傾斜角度を算出せずに、コントローラ5の傾斜方向を算出するようにしてもよい。このように、加速度センサ37をプロセッサと組み合わせて用いることによって、コントローラ5の傾斜角度または姿勢を判定することができる。
【0073】
一方、コントローラ5が動的な状態(コントローラ5が動かされている状態)であることを前提とする場合には、加速度センサ37は重力加速度に加えてコントローラ5の動きに応じた加速度を検出するので、検出された加速度から重力加速度の成分を所定の処理により除去することによってコントローラ5の動き方向を知ることができる。また、コントローラ5が動的な状態であることを前提とする場合であっても、検出された加速度から、加速度センサの動きに応じた加速度の成分を所定の処理により除去することによって、重力方向に対するコントローラ5の傾きを知ることが可能である。なお、他の実施例では、加速度センサ37は、内蔵の加速度検出手段で検出された加速度信号をマイコン42に出力する前に当該加速度信号に対して所定の処理を行うための、組込み式の処理装置または他の種類の専用の処理装置を備えていてもよい。組込み式または専用の処理装置は、例えば、加速度センサ37が静的な加速度(例えば、重力加速度)を検出するために用いられる場合、加速度信号を傾斜角(あるいは、他の好ましいパラメータ)に変換するものであってもよい。
【0074】
ジャイロセンサ48は、3軸(本実施形態では、X1Y1Z1軸)回りの角速度を検出する。本明細書では、コントローラ5の撮像方向(Z1軸正方向)を基準として、X1軸回りの回転方向をピッチ方向、Y1軸回りの回転方向をヨー方向、Z1軸回りの回転方向をロール方向と呼ぶ。ジャイロセンサ48は、3軸回りの角速度を検出することができればよく、用いるジャイロセンサの数および組み合わせはどのようなものであってもよい。例えば、ジャイロセンサ48は、3軸ジャイロセンサであってもよいし、2軸ジャイロセンサと1軸ジャイロセンサとを組み合わせて3軸周りの角速度を検出するものであってもよい。ジャイロセンサ48で検出された角速度を表すデータ(角速度データ)は、通信部36へ出力される。また、ジャイロセンサ48は1軸または2軸回りの角速度を検出するものであってもよい。
【0075】
コントローラ5の通信部36は、マイコン42、メモリ43、無線モジュール44、およびアンテナ45を含んでいる。マイコン42は、処理を行う際にメモリ43を記憶領域として用いながら、マイコン42が取得したデータをゲーム装置3へ無線送信する無線モジュール44を制御する。
【0076】
操作部32、撮像情報演算部35、加速度センサ37、およびジャイロセンサ48からマイコン42へ出力されたデータは、一時的にメモリ43に格納される。これらのデータは、操作データ(コントローラ操作データ)としてゲーム装置3へ送信される。
【0077】
以上のように、コントローラ5は、自機に対する操作を表す操作データとして、マーカ座標データ、加速度データ、角速度データ、および操作ボタンデータを送信可能である。また、ゲーム装置3は、上記操作データをゲーム入力として用いてゲーム処理を実行する。したがって、上記コントローラ5を用いることによって、ユーザは、各操作ボタンを押下するという従来の一般的なゲーム操作に加えて、コントローラ5自体を動かすゲーム操作を行うことができる。例えば、コントローラ5を任意の姿勢に傾ける操作、コントローラ5によって画面上の任意の位置を指示する操作、および、コントローラ5自体を動かす操作等を行うことが可能となる。
【0078】
また、本実施形態において、コントローラ5は、ゲーム画像を表示する表示手段を有しないが、例えば電池残量を表す画像等を表示するための表示手段を有していてもよい。
【0079】
[4.端末装置7の構成]
次に、図5図7を参照して、端末装置7の構成について説明する。図5は、端末装置7の外観構成を示す平面図である。図5における(a)図は端末装置7の正面図であり、(b)図は上面図であり、(c)図は右側面図であり、(d)図は下面図である。また、図6は、ユーザが端末装置7を横向きで把持した様子を示す図である。
【0080】
図5に示されるように、端末装置7は、大略的には横長の長方形の板状形状であるハウジング50を備える。すなわち、端末装置7は、タブレット型の情報処理装置であるということもできる。ハウジング50は、ユーザが把持することができる程度の大きさである。
【0081】
端末装置7は、ハウジング50の表面(表側)にLCD51を有する。LCD51は、ハウジング50の表面の中央付近に設けられる。したがって、ユーザは、図6に示すようにLCD51の両側部分のハウジング50を持つことによって、LCD51の画面を見ながら端末装置7を持って動かすことができる。なお、図6ではユーザがLCD51の左右両側の部分のハウジング50を持つことで端末装置7を横持ちで(横に長い向きにして)持つ例を示しているが、端末装置7を縦持ちで(縦に長い向きにして)持つことも可能である。
【0082】
図5の(a)図に示すように、端末装置7は、操作手段として、LCD51の画面上にタッチパネル52を有する。タッチパネル52はシングルタッチ方式でもよいし、マルチタッチ方式であってもよい。タッチパネル52に対する入力は通常タッチペン60を用いて行われるが、タッチペン60に限らずユーザの指でタッチパネル52に対する入力をすることも可能である。なお、ハウジング50には、タッチパネル52に対する操作を行うために用いられるタッチペン60を収納する収納穴60aが設けられている(図5(b)参照)。
【0083】
図5に示すように、端末装置7は、操作手段(操作部)として、2つのアナログスティック53Aおよび53Bと、複数のボタン(キー)54A〜54Mとを備えている。各アナログスティック53Aおよび53Bは、方向を指示することが可能なデバイスである。各アナログスティック53Aおよび53Bは、ユーザの指で操作される可動部材(スティック部)がハウジング50の表面に対して任意の方向(上下左右および斜め方向の任意の角度)にスライドすることができるように構成されている。すなわち、スライドパッドと呼ばれることもある方向入力デバイスである。なお、各アナログスティック53Aおよび53Bの可動部材は、ハウジング50の表面に対して任意の方向に傾倒する種類のものでもよい。本実施形態では、可動部材がスライドする種類のアナログスティックを用いるので、ユーザは親指を大きく動かさなくても各アナログスティック53Aおよび53Bを操作することができ、ハウジング50をよりしっかりと把持した状態で操作を行うことができる。
【0084】
また、左アナログスティック53AはLCD51の画面の左側に、右アナログスティック53BはLCD51の画面の右側にそれぞれ設けられる。また、図6に示すように、各アナログスティック53Aおよび53Bは、ユーザが端末装置7の左右部分(LCD51の左右両側の部分)を把持した状態で操作可能な位置に設けられるので、ユーザは、端末装置7を持って動かす場合においても各アナログスティック53Aおよび53Bを容易に操作することができる。
【0085】
各ボタン54A〜54Lは、所定の入力を行うための操作手段(操作部)であり、押下可能なキーである。以下に示すように、各ボタン54A〜54Lは、ユーザが端末装置7の左右部分を把持した状態で操作可能な位置に設けられる(図6参照)。
【0086】
図5の(a)図に示すように、ハウジング50の表面には、各操作ボタン54A〜54Lのうち、十字ボタン(方向入力ボタン)54Aと、ボタン54B〜54Hおよび54Mとが設けられる。
【0087】
十字ボタン54Aは、LCD51の左側であって、左アナログスティック53Aの下側に設けられる。十字ボタン54Aは、十字の形状を有しており、少なくとも上下左右の方向を指示することが可能なボタンである。
【0088】
また、ボタン54B〜54Dは、LCD51の下側に設けられる。また、端末装置7は、端末装置7の電源をオン/オフするための電源ボタン54Mを有している。電源ボタン54Mの操作により、ゲーム装置3の電源を遠隔でオン/オフすることも可能である。また、4つのボタン54E〜54Hは、LCD51の右側であって、右アナログスティック53Bの下側に設けられる。さらに、4つのボタン54E〜54Hは、(4つのボタン54E〜54Hの中心位置に対して)上下左右の位置関係となるように配置されている。したがって、端末装置7は、ユーザに上下左右の方向を指示させるためのボタンとして4つのボタン54E〜54Hを機能させることも可能である。
【0089】
また、本実施形態では、ハウジング50の裏側(LCD51が設けられる表面の反対側)には、突起部(庇部59)が設けられる(図5(c)参照)。図5(c)に示すように、庇部59は、略板状のハウジング50の裏面から突起して設けられる、山状の部材である。突起部は、ハウジング50の裏面を把持するユーザの指に掛止可能な高さ(厚さ)を有する。
【0090】
また、図5の(a)図、(b)図、および(c)図に示すように、第1Lボタン54Iおよび第1Rボタン54Jは、ハウジング50の上側の面における左右の両側にそれぞれ設けられる。本実施形態では、第1Lボタン54Iおよび第1Rボタン54Jは、ハウジング50の斜め上部分(左上部分および右上部分)に設けられる。
【0091】
また、図5の(c)図に示すように、第2Lボタン54Kおよび第2Rボタン54Lは、上記突起部(庇部59)に配置される。第2Lボタン54Kは、庇部59の左端付近に設けられる。第2Rボタン54Lは、庇部59の右端付近に設けられる。
【0092】
各ボタン54A〜54Lには、ゲームプログラムに応じた機能が適宜割り当てられる。例えば、十字ボタン54Aおよびボタン54E〜54Hは方向指示操作や選択操作等に用いられてもよいし、各ボタン54B〜54Eは決定操作やキャンセル操作等に用いられてもよい。また、端末装置7は、LCD51の画面表示をオン/オフするためのボタンや、ゲーム装置3との接続設定(ペアリング)を行うためのボタンを有していてもよい。
【0093】
図5の(a)図に示すように、端末装置7は、マーカ55Aおよびマーカ55Bからなるマーカ部55をハウジング50の表面に備えている。マーカ部55は、LCD51の上側に設けられる。各マーカ55Aおよびマーカ55Bは、マーカ装置6の各マーカ6Rおよび6Lと同様、1以上の赤外LEDで構成される。マーカ55Aおよび55Bを構成する赤外LEDは、赤外光を透過する窓部の内側に配置される。マーカ部55は、上述のマーカ装置6と同様、コントローラ5の動き等をゲーム装置3が算出するために用いられる。また、ゲーム装置3はマーカ部55が備える各赤外LEDの点灯を制御することが可能である。
【0094】
端末装置7は、撮像手段であるカメラ56を備えている。カメラ56は、所定の解像度を有する撮像素子(例えば、CCDイメージセンサやCMOSイメージセンサ等)と、レンズとを含む。
【0095】
なお、端末装置7は、音声入力手段であるマイク69を備えている。ハウジング50の表面には、マイクロフォン用孔50cが設けられる。マイク69はこのマイクロフォン用孔50cの奥のハウジング50内部に設けられる。マイク69は、ユーザの音声等、端末装置7の周囲の音を検出する。
【0096】
端末装置7は、音声出力手段であるスピーカ77を備えている。図5の(a)図に示すように、ハウジング50の表面の下側にはスピーカ孔57が設けられる。スピーカ77の出力音はこのスピーカ孔57から出力される。本実施形態では、端末装置7は2つのスピーカを備えており、左スピーカおよび右スピーカのそれぞれの位置にスピーカ孔57が設けられる。なお、端末装置7は、スピーカ77の音量を調節するためのつまみ64を備える。また、端末装置7は、イヤホン等の音声出力部を接続するための音声出力端子62を備える。
【0097】
また、ハウジング50には、赤外線通信モジュール82からの赤外線信号を端末装置7の外部に出射するための窓63が設けられる。
【0098】
また、端末装置7は、他の装置(付加装置)を端末装置7に接続するための拡張コネクタ58を備えている。拡張コネクタ58は、端末装置7に接続される他の装置との間でデータ(情報)を送受信するための通信端子である。
【0099】
また、端末装置7は、拡張コネクタ58とは別に、付加装置から電力を取得するための充電端子66を有する。本実施形態では、充電端子66はハウジング50の下側側面に設けられる。したがって、端末装置7と付加装置とが接続される際には、拡張コネクタ58を介して情報を送受信することに加えて、一方から他方への電力供給を行うことも可能である。また、端末装置7は充電コネクタを有し、ハウジング50は充電コネクタを保護するためのカバー部61を有する。本実施形態では、充電コネクタ(カバー部61)はハウジング50の上画の側面に設けられるが、左右の側面や下側の側面に設けられてもよい。
【0100】
また、端末装置7のハウジング50には、ストラップの紐を結びつけるための孔65aおよび65bが設けられる。
【0101】
なお、図5に示した端末装置7に関して、各操作ボタンやハウジング50の形状や、各構成要素の数および設置位置等は単なる一例に過ぎず、他の形状、数、および設置位置であってもよい。
【0102】
次に、図7を参照して、端末装置7の内部構成について説明する。図7は、端末装置7の内部構成を示すブロック図である。図7に示すように、端末装置7は、図5に示した構成の他、タッチパネルコントローラ71、磁気センサ72、加速度センサ73、ジャイロセンサ74、ユーザインタフェースコントローラ(UIコントローラ)75、コーデックLSI76、スピーカ77、サウンドIC78、マイク79、無線モジュール80、アンテナ81、赤外線通信モジュール82、フラッシュメモリ83、電源IC84、電池85、およびバイブレータ89を備える。これらの電子部品は、電子回路基板上に実装されてハウジング50内に収納される。
【0103】
UIコントローラ75は、各種の入出力部に対するデータの入出力を制御するための回路である。UIコントローラ75は、タッチパネルコントローラ71、アナログスティック53(アナログスティック53Aおよび53B)、操作ボタン54(各操作ボタン54A〜54L)、マーカ部55、磁気センサ72、加速度センサ73、およびジャイロセンサ74に接続される。また、UIコントローラ75は、コーデックLSI76と拡張コネクタ58に接続される。また、UIコントローラ75には電源IC84が接続され、UIコントローラ75を介して各部に電力が供給される。電源IC84には内蔵の電池85が接続され、電力が供給される。また、電源IC84には、外部電源から電力を取得可能な充電器86またはケーブルを充電コネクタを介して接続することが可能であり、端末装置7は、当該充電器86またはケーブルを用いて外部電源からの電力供給と充電を行うことができる。なお、端末装置7は、図示しない充電機能を有するクレイドルに端末装置7を装着することで充電を行うことも可能である。
【0104】
タッチパネルコントローラ71は、タッチパネル52に接続され、タッチパネル52の制御を行う回路である。タッチパネルコントローラ71は、タッチパネル52からの信号に基づいて所定の形式のタッチ位置データを生成してUIコントローラ75へ出力する。タッチ位置データは、タッチパネル52の入力面において入力が行われた位置の座標を表す。
【0105】
アナログスティック53は、ユーザの指で操作されるスティック部がスライドした(または傾倒した)方向および量を表すスティックデータをUIコントローラ75へ出力する。また、操作ボタン54は、各操作ボタン54A〜54Lに対する入力状況(押下されたか否か)を表す操作ボタンデータをUIコントローラ75へ出力する。
【0106】
磁気センサ72は、磁界の大きさおよび方向を検知することで方位を検出する。検出された方位を示す方位データは、UIコントローラ75へ出力される。また、UIコントローラ75から磁気センサ72へは、磁気センサ72に対する制御指示が出力される。磁気センサ72に関しては、MI(磁気インピーダンス)素子、フラックスゲートセンサ、ホール素子、GMR(巨大磁気抵抗)素子、TMR(トンネル磁気抵抗)素子、あるいはAMR(異方性磁気抵抗)素子等を用いたセンサがあるが、方位を検出することができればどのようなものが用いられてもよい。なお、厳密には、地磁気以外に磁界が発生している場所においては、得られた方位データは方位を示さないことになるが、そのような場合であっても、端末装置7が動いた場合には方位データが変化するため、端末装置7の姿勢の変化を算出することができる。
【0107】
加速度センサ73は、ハウジング50の内部に設けられ、3軸(図5の(a)図に示すXYZ軸)方向に沿った直線加速度の大きさを検出する。具体的には、加速度センサ73は、ハウジング50の長辺方向をX軸、ハウジング50の短辺方向をY軸、ハウジング50の表面に対して垂直な方向をZ軸として、各軸の直線加速度の大きさを検出する。検出された加速度を表す加速度データはUIコントローラ75へ出力される。また、UIコントローラ75から加速度センサ73へは、加速度センサ73に対する制御指示が出力される。加速度センサ73は、本実施形態では例えば静電容量式のMEMS型加速度センサであるとするが、他の実施形態においては他の方式の加速度センサを用いるようにしてもよい。また、加速度センサ73は1軸または2軸方向を検出する加速度センサであってもよい。
【0108】
ジャイロセンサ74は、ハウジング50の内部に設けられ、上記X軸、Y軸およびZ軸の3軸周りの角速度を検出する。検出された角速度を表す角速度データは、UIコントローラ75へ出力される。また、UIコントローラ75からジャイロセンサ74へは、ジャイロセンサ74に対する制御指示が出力される。なお、3軸の角速度を検出するために用いられるジャイロセンサの数および組み合わせはどのようなものであってもよく、ジャイロセンサ74はジャイロセンサ48と同様、2軸ジャイロセンサと1軸ジャイロセンサとで構成されてもよい。また、ジャイロセンサ74は1軸または2軸方向を検出するジャイロセンサであってもよい。
【0109】
UIコントローラ75は、上記の各構成要素から受け取ったタッチ位置データ、スティックデータ、操作ボタンデータ、方位データ、加速度データ、および角速度データを含む操作データをコーデックLSI76に出力する。なお、拡張コネクタ58を介して端末装置7に他の装置が接続される場合には、当該他の装置に対する操作を表すデータが上記操作データにさらに含まれていてもよい。
【0110】
コーデックLSI76は、ゲーム装置3へ送信するデータに対する圧縮処理、および、ゲーム装置3から送信されたデータに対する伸張処理を行う回路である。コーデックLSI76には、LCD51、カメラ56、サウンドIC78、無線モジュール80、フラッシュメモリ83、および赤外線通信モジュール82が接続される。また、コーデックLSI76はCPU87と内部メモリ88を含む。端末装置7はゲーム処理自体を行なわない構成であるが、端末装置7の管理や通信のためのプログラムを実行する。電源投入時にフラッシュメモリ83に格納されたプログラムを内部メモリ88に読み出してCPU87が実行することで、端末装置7が起動する。また、内部メモリ88の一部の領域はLCD51のためのVRAMとして使用される。
【0111】
カメラ56は、ゲーム装置3からの指示に従って画像を撮像し、撮像した画像データをコーデックLSI76へ出力する。また、コーデックLSI76からカメラ56へは、画像の撮像指示等、カメラ56に対する制御指示が出力される。
【0112】
サウンドIC78は、スピーカ77およびマイク79に接続され、スピーカ77およびマイク79への音声データの入出力を制御する回路である。すなわち、コーデックLSI76から音声データを受け取った場合、サウンドIC78は当該音声データに対してD/A変換を行って得られる音声信号をスピーカ77へ出力し、スピーカ77から音を出力させる。また、マイク79は、端末装置7に伝わる音(ユーザの音声等)を検知して、当該音を示す音声信号をサウンドIC78へ出力する。サウンドIC78は、マイク79からの音声信号に対してA/D変換を行い、所定の形式の音声データをコーデックLSI76へ出力する。
【0113】
コーデックLSI76は、カメラ56からの画像データ、マイク79からの音声データ、および、UIコントローラ75からの操作データ(端末操作データ)を、無線モジュール80を介してゲーム装置3へ送信する。本実施形態では、コーデックLSI76は、画像データおよび音声データに対して、コーデックLSI27と同様の圧縮処理を行う。上記端末操作データ、ならびに、圧縮された画像データおよび音声データは、送信データとして無線モジュール80に出力される。無線モジュール80にはアンテナ81が接続されており、無線モジュール80はアンテナ81を介してゲーム装置3へ上記送信データを送信する。無線モジュール80は、ゲーム装置3の端末通信モジュール28と同様の機能を有している。すなわち、無線モジュール80は、例えばIEEE802.11nの規格に準拠した方式により、無線LANに接続する機能を有する。送信されるデータは必要に応じて暗号化されていてもよいし、されていなくともよい。
【0114】
以上のように、端末装置7からゲーム装置3へ送信される送信データには、操作データ(端末操作データ)、画像データ、および音声データが含まれる。なお、拡張コネクタ58を介して端末装置7に他の装置が接続される場合には、当該他の装置から受け取ったデータが上記送信データにさらに含まれていてもよい。また、赤外線通信モジュール82は、他の装置との間で例えばIRDAの規格に従った赤外線通信を行う。コーデックLSI76は、赤外線通信によって受信したデータを、必要に応じて上記送信データに含めてゲーム装置3へ送信してもよい。
【0115】
また、上述のように、ゲーム装置3から端末装置7へは、圧縮された画像データおよび音声データが送信される。これらのデータはアンテナ81および無線モジュール80を介してコーデックLSI76に受信される。コーデックLSI76は、受信した画像データおよび音声データを伸張する。伸張された画像データはLCD51へ出力され、画像がLCD51に表示される。つまり、コーデックLSI76(CPU87)は、受信された画像データを表示部に表示させる。また、伸張された音声データはサウンドIC78へ出力され、サウンドIC78はスピーカ77から音を出力させる。
【0116】
[5.ゲーム処理の概要]
次に、本実施形態のゲームシステム1において実行されるゲーム処理の概要について説明する。本実施形態におけるゲームは、複数のプレイヤによって行われるゲームである。本実施形態では、ゲーム装置3には1台の端末装置7と、複数台のコントローラ5とが無線通信により接続される。なお、本実施形態のゲームでは、ゲーム装置3に接続可能なコントローラ5の台数は3台までとする。
【0117】
以下では、コントローラ5(コントローラ5a〜5c)を操作する3人の第1プレイヤ(第1プレイヤA〜C)に端末装置7を操作する1人の第2プレイヤを加えた4名のプレイヤによって、本実施形態に係るゲームが行われた場合について説明する。
【0118】
図8は、テレビ2に表示されるテレビ用ゲーム画像の一例を示す図である。図9は、端末装置7のLCD51に表示される端末用ゲーム画像の一例を示す図である。
【0119】
図8に示すように、テレビ2の画面は4等分に分割され、分割された各領域にはそれぞれ画像90a、画像90b、画像90c、および画像90dが表示される。図8に示すように、テレビ2には、第1キャラクタ91a、第1キャラクタ91b、第1キャラクタ91c、および第2キャラクタ92が表示される。また、テレビ2には、複数の敵キャラクタ(93a〜93c)が表示される。
【0120】
第1キャラクタ91aは、ゲーム空間(3次元(2次元でもよい)の仮想世界)に配置される仮想キャラクタであり、第1プレイヤAによって操作される。第1キャラクタ91aは、剣オブジェクト95aを把持して、当該剣オブジェクト95aで敵キャラクタ93に対して攻撃を行う。また、第1キャラクタ91bは、ゲーム空間に配置される仮想キャラクタであり、第1プレイヤBによって操作される。第1キャラクタ91bは、剣オブジェクト95bを把持し、当該剣オブジェクト95bを用いて敵キャラクタ93に対して攻撃を行う。また、第1キャラクタ91cは、ゲーム空間に配置される仮想キャラクタであり、第1プレイヤCによって操作される。第1キャラクタ91cは、剣オブジェクト95cを把持し、当該剣オブジェクト95cを用いて敵キャラクタ93に対して攻撃を行う。また、第2キャラクタ92は、ゲーム空間に配置される仮想キャラクタであり、第2プレイヤによって操作される。第2キャラクタ92は、弓オブジェクト96および矢オブジェクト97を把持し、当該矢オブジェクト97をゲーム空間に発射させて、敵キャラクタ93に対して攻撃を行う。敵キャラクタ93は、ゲーム装置3によって制御される仮想キャラクタである。
【0121】
本実施形態のゲームは、第1プレイヤA〜Cおよび第2プレイヤが互いに協力することによって、敵キャラクタ93を倒しながらゲーム空間内を移動するゲームである。具体的には、各プレイヤキャラクタ(91a〜91cおよび92)は、敵キャラクタ93を倒しながらゲーム空間の始点位置から終点位置まで移動する。
【0122】
図8に示すように、テレビ2には、画面を上下左右に4等分した領域にそれぞれ異なる画像90a〜90dが表示される。具体的には、画面の左上の領域には、第1プレイヤAがコントローラ5aを用いて操作する第1キャラクタ91aの真後ろからゲーム空間を見たときの画像90aが表示される。画像90aは、第1キャラクタ91aのゲーム空間における位置および向きに応じて設定される第1仮想カメラAでゲーム空間を撮像した画像である。第1仮想カメラAの撮像方向は、第1キャラクタ91aのゲーム空間における向きと一致する。また、画面の右上の領域には、第1プレイヤBがコントローラ5bを用いて操作する第1キャラクタ91bの真後ろからゲーム空間を見たときの画像90bが表示される。画像90bは、第1キャラクタ91bのゲーム空間における位置および向きに応じて設定される第1仮想カメラBでゲーム空間を撮像した画像である。第1仮想カメラBの撮像方向は、第1キャラクタ91bのゲーム空間における向きと一致する。また、画面の左下の領域には、第1プレイヤCがコントローラ5cを用いて操作する第1キャラクタ91cの真後ろからゲーム空間を見たときの画像90cが表示される。画像90cは、第1キャラクタ91cのゲーム空間における位置および向きに応じて設定される第1仮想カメラCでゲーム空間を撮像した画像である。第1仮想カメラCの撮像方向は、第1キャラクタ91cのゲーム空間における向きと一致する。また、画面の右下の領域には、第2プレイヤが端末装置7を用いて操作する第2キャラクタ92の斜め後方からゲーム空間を見たときの画像90dが表示される。画像90dは、第2キャラクタ92のゲーム空間における位置および向きに応じて設定される第2仮想カメラでゲーム空間を撮像した画像である。第2仮想カメラの位置は、第2キャラクタ92の右斜め後方の所定位置(ゲーム空間の地面近傍よりも上方の位置)に設定される。このため、第2仮想カメラで撮像された画像90dは、第2キャラクタ92を含むゲーム空間を第2キャラクタの斜め後方であって上方から見た画像となる。
【0123】
なお、本実施形態では、第1仮想カメラAは第1キャラクタ91aの真後ろに設定されるため、画像90aにおける第1キャラクタ91aを半透明で表示する。これにより、プレイヤは、画像90aにおいて第1キャラクタ91aよりも画面の奥方向に存在する各キャラクタを視認することができる。他の画像90bおよび90d等においても同様である。なお、第1仮想カメラA〜Cの位置は、第1キャラクタ91a〜91cの視点に設定されてもよい。
【0124】
一方、図9に示すように、端末装置7のLCD51には、第2キャラクタ92の後方からゲーム空間を見たときの画像90eが表示される。画像90eは、第2キャラクタ92のゲーム空間における位置および向きに応じて設定される第3仮想カメラでゲーム空間を撮像した画像である。第3仮想カメラの位置は、第2キャラクタ92の後方(ここでは真後ろよりも僅かに右方向にずれた位置)に設定される。また、第3仮想カメラの姿勢(撮像方向)は、第2キャラクタ92のゲーム空間における向きに基づいて設定される。後述するように、第2キャラクタ92の向きは、左アナログスティック53Aに対する入力、および端末装置7の姿勢に応じて変化する。このため、第3仮想カメラの姿勢は、左アナログスティック53Aに対する入力、および端末装置7の姿勢に応じて変化する。
【0125】
ゲーム空間の位置は、ゲーム空間に固定された直交座標系(xyz座標系)の各軸に関する座標値で表される。y軸はゲーム空間の地面に対して垂直上向きに設定され、x軸およびz軸は、ゲーム空間の地面と平行に設定される。第1キャラクタ91a〜91cおよび第2キャラクタ92は、ゲーム空間の地面(xz平面)上を向き(xz平面に平行な向き)を変えながら移動する。第1キャラクタ91は、所定の規則に従って自動で移動される。また、第2キャラクタ92は、端末装置7に対する操作に応じて、その向きを変えながらゲーム空間の地面上を移動する。第2キャラクタ92の位置および向きの制御については、後述する。
【0126】
次に、第1キャラクタ91の移動(向きおよび位置の変化)について説明する。第1キャラクタ91は、ゲーム空間に予め設定された経路に沿って自動で移動する。図10は、第1キャラクタ91a〜91cの移動経路を示す図である。図10では、ゲーム空間を上方から見て簡略表示されている。図10に示すように、ゲーム空間には、第1キャラクタ91a〜91c、敵キャラクタ93a、および敵キャラクタ93bが存在する。図10における下方にはゲームの始点位置が存在し、図10における上方にはゲームの終点位置が存在するものとする。図10に示すように、ゲーム空間には、一点鎖線で示される経路98a、98b、および98cが予め設定される。経路98a〜98cは、実際には画面には表示されない、ゲーム装置3において内部的に設定される各キャラクタの移動経路である。
【0127】
具体的には、第1キャラクタ91aは基本的に、経路98a上を自動で移動する。また、第1キャラクタ91bは基本的に経路98b上を自動で移動し、第1キャラクタ91cは基本的に経路98c上を自動で移動する。ここで、第1キャラクタ91から所定範囲内に敵キャラクタ93が存在する場合、当該第1キャラクタ91は、経路98から離れて当該所定範囲内に存在する敵キャラクタ93に近づくように移動する。例えば、図10に示すように、第1キャラクタ91aと敵キャラクタ93aとの距離が所定以上の場合、第1キャラクタ91aの向きは経路98aに沿った方向に設定され、第1キャラクタ91aは経路98a上に位置するように第1キャラクタ91aの位置が時間経過に応じて変化する(時刻t=t0)。すなわち、第1キャラクタ91aと敵キャラクタ93aとの距離が所定以上の場合、第1キャラクタ91aは、経路98a上を向きを変化させながら移動する。時刻t=t0から所定時間が経過して時刻t=t1となった場合、第1キャラクタ91aと敵キャラクタ93a(および93b)との距離が所定値以下となる。この場合、第1キャラクタ91aは、敵キャラクタ93aに向かって移動を開始する。すなわち、第1キャラクタ91aの向きは、当該第1キャラクタ91aの位置から敵キャラクタ93aの位置に向かう方向に変化し、第1キャラクタ91aは、敵キャラクタ93aに向かって移動する。同様に、第1キャラクタ91bも、当該第1キャラクタ91bと敵キャラクタ93aとの距離が所定値以下であるため、敵キャラクタ93aに向かって移動を開始する。一方、第1キャラクタ91cは、当該第1キャラクタ91cと敵キャラクタ93aとの距離が所定値を超えているため、敵キャラクタ93aに向かって移動せずに、経路98c上を移動する。
【0128】
図11は、第1キャラクタ91aの移動の詳細を示す図である。図11に示すように、ゲーム空間には、経路98a上を移動する誘導オブジェクト94aが配置される。誘導オブジェクト94は、各第1キャラクタ91にそれぞれ設定されるオブジェクトであり、ゲーム装置3において内部的に設定されるオブジェクトである。誘導オブジェクト94は、実際には画面には表示されない。誘導オブジェクト94aは、第1キャラクタ91aの移動を制御するためのオブジェクトであり、経路98a上を自動で移動するオブジェクトである。第1キャラクタ91aは、周辺に敵キャラクタ93が存在しない場合、当該誘導オブジェクト98aに追従するようにして移動する。具体的には、第1キャラクタ91aの向きは、第1キャラクタ91aの位置から誘導オブジェクト94aの位置に向かう方向に設定され、第1キャラクタ91aの位置は、誘導オブジェクト94aの位置に向かって変化する。一方、第1キャラクタ91aは、周辺に敵キャラクタ93が存在すると、当該敵キャラクタ93に近づくように移動する。すなわち、第1キャラクタ91aは、周辺に敵キャラクタ93が存在すると、敵キャラクタ93に向かって移動する。そして、当該敵キャラクタ93を倒して周辺に敵キャラクタ93が存在しなくなると、第1キャラクタ91aは再び誘導オブジェクト94aに追従するように移動する。具体的には、図11に示すように、時刻t=t1において、誘導オブジェクト94aは経路98a上に存在し、第1キャラクタ91aも経路98a上に存在している。ここで、時刻t=t1において、第1キャラクタ91aと敵キャラクタ93との距離が所定値以下となった場合、第1キャラクタ91aは敵キャラクタ93に向かって移動を開始する。時刻t=t1から所定時間が経過して時刻t=t2になると、第1キャラクタ91aは経路98aから逸れる。さらに所定時間が経過すると、第1キャラクタ91aは、敵キャラクタ93の近傍に移動し、第1キャラクタ91aは敵キャラクタ93と格闘する。この間、誘導オブジェクト94aは、第1キャラクタ91aと誘導オブジェクト94aとの距離が所定以上離れないように、経路98a上を移動する。第1キャラクタ91aと敵キャラクタ93との格闘が長時間になると、誘導オブジェクト94aは停止する。そして、時刻t=t3において第1キャラクタ91aが敵キャラクタ93を倒すと、第1キャラクタ91aの周辺には敵キャラクタ93が存在しなくなるため、第1キャラクタ91aは再び誘導オブジェクト94aに追従するようにして(誘導オブジェクト94aに向かって)移動を開始する。
【0129】
このようにして、各第1キャラクタ91は、基本的に各誘導オブジェクト94に追従するようにしてゲーム空間を自動で移動し、所定範囲内に敵キャラクタ93が存在する場合には、敵キャラクタ93に向かって移動する。
【0130】
図12は、第1キャラクタ91aが複数の敵キャラクタ93に向かって移動を開始した時点でテレビ2の左上の領域に表示される画像90aを示す図である。図12に示すように、第1キャラクタ91aと敵キャラクタ93との距離が所定値以下となった場合において、敵キャラクタ93が複数存在する場合、画像90aには、選択オブジェクト99aが表示される。選択オブジェクト99aは、第1キャラクタ91aが攻撃する対象となる敵キャラクタ93aの頭上に表示される。すなわち、選択オブジェクト99aは、第1キャラクタ91aの攻撃対象を示すオブジェクトである。第1キャラクタ91aは、選択オブジェクト99aによって選択された敵キャラクタ93aに近づくように自動で(第1プレイヤAによる方向指示無しで)移動する。なお、第1プレイヤAがコントローラ5の十字ボタン32aを操作すると、選択オブジェクト99aの位置が変化して敵キャラクタ93bの頭上に表示される。これにより、第1プレイヤAは攻撃対象の敵キャラクタ93を切り替えることができる。
【0131】
また、図10に示すように、第1キャラクタ91bと敵キャラクタ93との距離が所定値以下である場合、第1キャラクタ91bも敵キャラクタ93に向かって移動する。図示は省略するが、図12と同様に、テレビ2の右上の領域に表示される画像90bには、第1キャラクタ91b、敵キャラクタ93aおよび93bに加えて、選択オブジェクト99bが表示される。この場合、画像90aにおいても、第1キャラクタ91bの攻撃対象を示す選択オブジェクト99bが表示される。選択オブジェクト99bは、選択オブジェクト99aとは異なる表示態様で表示される。例えば、第1キャラクタ91aが赤色で表示される場合は、選択オブジェクト99aは赤色で表示され、第1キャラクタ91bが青色で表示される場合は、選択オブジェクト99bは青色で表示される。これにより、第1プレイヤAは、画像90aを見ることで、自身が操作する第1キャラクタ91aの攻撃対象と、第1プレイヤBが操作する第1キャラクタ91bの攻撃対象とを知ることができる。すなわち、コントローラ5を操作する各プレイヤは各画像90a〜90cを見ることで、自身の攻撃対象がどの敵キャラクタ93かを知ると同時に、他のプレイヤの攻撃対象がどの敵キャラクタ93かを知ることができる。
【0132】
なお、第1キャラクタ91および第2キャラクタ92による敵キャラクタ93への攻撃は次のようにして行われる。すなわち、第1キャラクタ91aは、剣オブジェクト95aを用いて敵キャラクタ93に対して攻撃を行う。第1プレイヤAがコントローラ5aを振ると、第1キャラクタ91aは、剣オブジェクト95aを振る動作を行う。具体的には、コントローラ5aの実空間における姿勢の変化と対応して、剣オブジェクト95aのゲーム空間における姿勢も変化する。例えば、第1プレイヤAがコントローラ5aを左から右に振ると、第1キャラクタ91aが剣オブジェクト95aを左から右に振る動作が行われる。そして、剣オブジェクト95aが振られた場合において、第1キャラクタ91aの前方の近距離の範囲(剣オブジェクト95aの長さに相当する範囲)に敵キャラクタ93が存在すると、当該敵キャラクタ93に剣オブジェクト95aが当たって攻撃が成功する。敵キャラクタ93に対する攻撃が所定回数成功すると、敵キャラクタ93は倒れる。第1キャラクタ91bおよび91cも同様に、それぞれ剣オブジェクト95bおよび95cを用いて敵キャラクタ93に対して攻撃を行う。
【0133】
一方、第2キャラクタ92は、矢オブジェクト97をゲーム空間内に発射させることによって、敵キャラクタ93に対して攻撃を行う。例えば、第2プレイヤが指で端末装置7の右アナログスティック53Bを所定方向(例えば下方向)にスライドすると、端末装置7のLCD51には、円形の照準が表示される。そして、第2プレイヤが右アナログスティック53Bを離すと、右アナログスティック53Bは元の位置に戻る(右アナログスティック53Bが中心の位置まで戻る)。すると、第2キャラクタ92の位置からLCD51に表示された円形の照準の中心に向かって矢オブジェクト97がゲーム空間内に発射される。このようにして、第2キャラクタ92は、矢オブジェクト97を発射させることによってより遠距離の敵キャラクタ93に対して攻撃することが可能である。なお、図8に示すように、テレビ2には残りの矢オブジェクト97の数が示される(図8では残りの矢オブジェクト97の数は4つである)。第2プレイヤが端末装置7に対して所定の操作(例えば、端末装置7の裏面を地面の方向に向ける操作)を行うと、リロードされて残りの矢オブジェクト97の数が所定数となる。
【0134】
なお、敵キャラクタ93は、プレイヤキャラクタ(第1キャラクタ91および第2キャラクタ92)に対して攻撃を行う。複数のプレイヤキャラクタ(ここでは4つのキャラクタ)のうち1つのキャラクタが敵キャラクタ93からの攻撃を所定回数受けて倒れると、ゲームオーバーとなる。したがって、各プレイヤは他のプレイヤが敵キャラクタ93に倒されないように協力して敵キャラクタ93を倒しながらゲームを楽しむ。
【0135】
次に、第2キャラクタ92の位置および向きの制御について説明する。第2キャラクタ92は、端末装置7の左アナログスティック53Aの入力に応じて移動する。図13は、左アナログスティック53Aの入力方向に基づく第2キャラクタ92の移動および回転を示す図である。図13において、AY軸方向は左アナログスティック53Aの上方向(図5(a)のY軸方向)を示し、AX軸方向は左アナログスティック53Aの右方向(図5(a)のX軸負方向)を示す。具体的には、左アナログスティック53Aが上方向にスライドされた場合、第2キャラクタ92は、前進する(すなわち、図9の画面の奥方向に向かって移動する)。左アナログスティック53Aが下方向にスライドされた場合、第2キャラクタ92は、向きを変えずに後退する(すなわち、図9の画面の奥方向を向きながら画面の手前方向に向かって移動する)。このように、左アナログスティック53Aの上方向への入力があった場合は、第2キャラクタ92は前進し、左アナログスティック53Aの下方向への入力があった場合は、第2キャラクタ92は後退する。
【0136】
第2キャラクタ92の向きは、第1の入力と第2の入力とによって変化する。第1の入力は、左アナログスティック53Aを用いた入力である。具体的には、図13に示すように、左アナログスティック53Aが右方向にスライドされた場合、第2キャラクタ92は、右旋回する。すなわち、左アナログスティック53Aが右方向にスライドされた場合、第2キャラクタ92は、ゲーム空間の上方から見た場合に時計回りに回転する(この場合、第2キャラクタ92の向きだけ変化し、第2キャラクタ92の位置は変化しない)。また、左アナログスティック53Aが左方向にスライドされた場合、第2キャラクタ92は、左旋回する。また、左アナログスティック53Aが斜め方向にスライドされた場合、第2キャラクタ92は右または左に旋回しながら移動する。例えば、左アナログスティック53Aが右斜め上方向にスライドされた場合、第2キャラクタ92は、右旋回しながら前進する。
【0137】
第2の入力は、端末装置7の実空間における姿勢を変化させることによって行われる。すなわち、第2キャラクタ92の向きは、端末装置7の姿勢の変化に応じて変化する。図14は、端末装置7を実空間の上方から見た図であり、実空間における端末装置7の姿勢の変化を示す図である。図14に示すように、端末装置7をY軸回りに回転させると(図6に示す姿勢から重力方向の軸回りに回転させると)、その回転量に応じてゲーム空間内の第2キャラクタ92の向きが変化する。例えば、端末装置7を実空間の上方から見たときに時計回りに所定の角度だけ回転させると、第2キャラクタ92もゲーム空間の上方から見たときに時計回りに当該所定の角度だけ回転する。例えば、第2プレイヤが、端末装置7の裏面(LCD51が設けられた面の裏側の面)を右方向に向けると、第2キャラクタ92は右方向を向く。なお、例えば、端末装置7の裏面を上方向に向けると(端末装置7をX軸周りに回転させると)、第2キャラクタ92の向きは変化しない。すなわち、第2キャラクタ92の向きはゲーム空間の地面(xz平面)に平行に設定されるため、端末装置7の裏面を上方向に向けても第2キャラクタ92はゲーム空間の上方向を向かない。他の実施形態では、第2キャラクタ92の向きをゲーム空間の上下方向(y軸に平行な方向)に変化させてもよい。
【0138】
以上のように、第2キャラクタ92は、左アナログスティック53Aの上下方向の入力(上下方向へのスライド操作)に応じて移動する。また、左アナログスティック53Aの左右方向の入力および端末装置7に対する姿勢の変化に応じて、第2キャラクタの向きが変化する。
【0139】
なお、第2仮想カメラおよび第3仮想カメラの姿勢は、第2キャラクタ92の向きの変化に応じて変化する。具体的には、第2仮想カメラの撮像方向ベクトルは、第2キャラクタ92の向き(前方向ベクトル)に対して固定の角度を有するように設定される。これにより、テレビ2には、第2キャラクタ92の右斜め後方の上方の位置から当該第2キャラクタ92を含むゲーム空間を撮像した画像90dが表示される。また、第3仮想カメラの撮像方向ベクトルのxz平面における向き(当該撮像方向ベクトルをゲーム空間のxz平面に投影したベクトルの向き)は、第2キャラクタ92の向きと一致するように設定される。なお、第3仮想カメラの撮像方向ベクトルの上下方向(y軸に平行な方向)における向きは、端末装置7の姿勢に応じて設定される。例えば、端末装置7の裏面を実空間の上方に向けると、第3仮想カメラの撮像方向ベクトルもゲーム空間の上方を向くように設定される。このため、第2プレイヤが端末装置7を図14に示すように右回りに回転させると、第3仮想カメラも右回りに回転し、結果として端末装置7のLCD51には、回転前の右側のゲーム空間を撮像した画像が表示される。また、第2プレイヤが端末装置7の裏面を実空間の上方に向けると、端末装置7のLCD51にはゲーム空間の上方の領域を撮像した画像が表示される。
【0140】
ここで、図15に示すように、第2キャラクタ92の真後ろに敵キャラクタ93が存在する場合、第2プレイヤは敵キャラクタ93を攻撃しようとして第2キャラクタ92を後方に振り向かせようとする。図15は、第2キャラクタ92の真後ろに敵キャラクタ93が存在する場合のテレビ2の右下領域に表示される画像90dを示す図である。第2プレイヤは第2キャラクタ92を後方に振り向かせようとして、テレビ2の画面または端末装置7の画面を見ながら端末装置7の左アナログスティック53Aを操作する。このとき、テレビ2の画面において敵キャラクタ93が第2キャラクタ92の下方に表示されるため、第2プレイヤは左アナログスティック53Aを下方向にスライドさせてしまう。上述のように、左アナログスティック53Aの入力が下方向である場合、第2キャラクタ92は、後退してしまう(第2キャラクタ92の向きは変わらず位置のみが後方に移動する)。あるいは、第2プレイヤは第2キャラクタ92を後方に振り向かせる場合、端末装置7を大きく回転(Y軸回りに回転)させることになる。このように、第2キャラクタ92を後方に振り向かせる場合は、操作の難易度が高くなることがある。
【0141】
このため、本実施形態においては、第2キャラクタ92の後方に敵キャラクタ93が存在する場合、敵キャラクタ93に向きやすくするために、次に示す2つの処理(第1の処理および第2の処理)が行われる。すなわち、第1の処理では、第2キャラクタ92の後方に敵キャラクタ93が存在する場合において、左アナログスティック53Aの下方向への入力があったとき、第2キャラクタ92を旋回させる。具体的には、第2キャラクタ92に対する敵キャラクタ93の後ろ方向度合BRを算出し、当該後ろ方向度合BRに基づいて、第2キャラクタ92を旋回させる。ここで、「後ろ方向度合BR」は、敵キャラクタ93がどの程度第2キャラクタ92の後ろ方向に存在するかを示す値であり、第2キャラクタ92と敵キャラクタ93との角度に応じて変化する値である。具体的には、後ろ方向度合BRは、敵キャラクタ93が第2キャラクタ92の後方に存在するほど大きくなる。例えば、第2キャラクタ92の真後ろに敵キャラクタ93が存在する場合(第2キャラクタ92の正面を0度として180度の方向に敵キャラクタ93が存在する場合)、後ろ方向度合BRは1となる。また、第2キャラクタ92の右または左に敵キャラクタ93が存在する場合(第2キャラクタ92の正面を0度として90度または−90度の方向に敵キャラクタ93が存在する場合)、後ろ方向度合BRは0となる。敵キャラクタ93が90度から180度(−90度から−180度)の方向に存在する場合は、後ろ方向度合BRは0から1の間の値となる。詳細は後述するが、後ろ方向度合BRが大きいほど、第2キャラクタの旋回量(回転量)が大きくなる。
【0142】
また、第2の処理では、第2キャラクタ92の後方に敵キャラクタ93が存在する場合において、敵キャラクタ93に近づく方向に端末装置7を回転させるときは、端末装置7の実際の回転量よりも大きな回転量で第2キャラクタ92を回転させる。例えば、第2キャラクタ92の真後ろに敵キャラクタ93が存在する場合は、第2キャラクタ92は、端末装置7のY軸回りの回転量の1.5倍の回転量で回転してもよい。例えば、第2キャラクタ92の真後ろに敵キャラクタ93が存在する場合において、端末装置7を右方向に180度よりも小さい角度(例えば120度)で回転させると、第2キャラクタ92は敵キャラクタ93を向く。その後、さらに端末装置7を右方向に所定の角度(例えば、30度)だけ回転させると、第2キャラクタ92は敵キャラクタ93から遠ざかる方向に回転するため、第2キャラクタ92は当該所定の角度(例えば、30度)だけ回転する。
【0143】
以上のように、本実施形態では、第2キャラクタ92の後方に敵キャラクタ93が存在する場合、第2キャラクタ92が敵キャラクタ93に向きやすくする処理が行われる。
【0144】
[6.ゲーム処理の詳細]
次に、本ゲームシステムにおいて実行されるゲーム処理の詳細を説明する。まず、ゲーム処理において用いられる各種データについて説明する。図16は、ゲーム処理において用いられる各種データを示す図である。図16において、ゲーム装置3のメインメモリ(外部メインメモリ12または内部メインメモリ11e)に記憶される主なデータが示されている。図16に示すように、ゲーム装置3のメインメモリには、ゲームプログラム100、コントローラ操作データ110、端末操作データ120、および処理用データ130が記憶される。なお、メインメモリには、図16に示すデータの他、ゲームに登場する各種オブジェクトの画像データやゲームに使用される音声データ等、ゲームに必要なデータが記憶される。
【0145】
ゲームプログラム100は、ゲーム装置3に電源が投入された後の適宜のタイミングで光ディスク4からその一部または全部が読み込まれてメインメモリに記憶される。なお、ゲームプログラム100は、光ディスク4に代えて、フラッシュメモリ17やゲーム装置3の外部装置から(例えばインターネットを介して)取得されてもよい。また、ゲームプログラム100に含まれる一部(例えば、コントローラ5および/または端末装置7の姿勢を算出するためのプログラム)については、ゲーム装置3内に予め記憶されていてもよい。
【0146】
コントローラ操作データ110は、コントローラ5において行われた操作を表すデータであり、コントローラ5において行われた操作に基づいてコントローラ5から出力(送信)される。コントローラ操作データ110は、コントローラ5から送信されてゲーム装置3において取得され、メインメモリに記憶される。コントローラ操作データ110は、角速度データ111、操作ボタンデータ112、および加速度データ113を含む。なお、ゲーム装置3は、複数のコントローラ5(具体的には、コントローラ5a〜5c)から操作データを取得するため、各コントローラ5からそれぞれ送信されてくる各コントローラ操作データ110をメインメモリにそれぞれ記憶する。最新の(最後に取得された)データから所定個数のコントローラ操作データ110が、コントローラ5毎に、時系列に記憶されてもよい。
【0147】
角速度データ111は、コントローラ5におけるジャイロセンサ48によって検出された角速度を表すデータである。ここでは、角速度データ111は、コントローラ5に固定のX1Y1Z1座標系(図3参照)の各軸回りの角速度をそれぞれ表す。このように、本実施形態においては、コントローラ5がジャイロセンサ48を備え、コントローラ操作データ101には、コントローラ5の姿勢を算出するための物理量として上記角速度データ111が含まれる。したがって、ゲーム装置3は、コントローラ5の姿勢を角速度に基づいて正確に算出することができる。具体的には、ゲーム装置3は、ジャイロセンサ48によって検出されたX1軸、Y1軸、Z1軸周りの角速度をそれぞれ時間で積分することによって、コントローラ5の姿勢(初期的な姿勢からのX1Y1Z1座標系の各軸周りの回転角)を算出することができる。
【0148】
操作ボタンデータ112は、コントローラ5に設けられた各操作ボタン32a〜32iに対する入力状態を表すデータである。具体的には、操作ボタンデータ112は、各操作ボタン32a〜32iが押下されているか否かを表す。
【0149】
加速度データ113は、コントローラ5の加速度センサ37によって検出された加速度を表すデータである。ここでは、加速度データ113は、コントローラ5に固定のX1Y1Z1座標系の各軸周りの加速度をそれぞれ表す。
【0150】
端末操作データ120は、端末装置7において行われた操作を表すデータであり、端末装置7において行われた操作に基づいて端末装置7から出力(送信)される。端末操作データ120は、端末装置7から送信されてゲーム装置3において取得され、メインメモリに記憶される。端末操作データ120は、角速度データ121、左スティックデータ122、右スティックデータ123、および加速度データ124を含む。なお、端末操作データ120は、これらのデータの他、各ボタンの操作データ、端末装置7の磁気センサ62によって検出された方位を示す方位データデータ等を含む。
【0151】
角速度データ121は、端末装置7におけるジャイロセンサ74によって検出された角速度を表すデータである。ここでは、角速度データ121は、端末装置7に固定のXYZ座標系(図5参照)の各軸回りの角速度をそれぞれ表す。
【0152】
左スティックデータ122は、左アナログスティック53Aの入力情報を示すデータである。具体的には、左スティックデータ122は、左アナログスティック53Aに対して行われた入力方向を示す2次元の入力ベクトル(InX,InY)によって表される。InXは、図13に示すAX軸の値であり、InYはAY軸の値である。ここで、InXおよびInYは−1〜1までの間の値をとり、入力ベクトルの長さの最大値は1である。例えば、左アナログスティック53Aの上方向が入力された場合、入力ベクトルは(0,1)となり、下方向が入力された場合、入力ベクトルは(0,−1)となる。また、左アナログスティック53Aの右方向が入力された場合、入力ベクトルは(1,0)となり、左方向が入力された場合、入力ベクトルは(−1,0)となる。CPU10は、端末装置7から送信された操作データに含まれる左アナログスティック53Aの操作情報に基づいて、入力ベクトル(InX,InY)を算出し、メインメモリに左スティックデータ122として保存する。
【0153】
右スティックデータ123は、右アナログスティック53Bの入力情報を示すデータである。右スティックデータ123は、左スティックデータ122と同様に、2次元のベクトルによって表される。
【0154】
処理用データ130は、後述するゲーム処理(図17)において用いられるデータである。処理用データ130は、第1キャラクタデータ131、第2キャラクタデータ132、敵キャラクタデータ133、端末姿勢データ134、第1仮想カメラデータ135、第2仮想カメラデータ136、および、第3仮想カメラデータ137を含む。なお、図16に示すデータの他、処理用データ130は、コントローラ5の姿勢を示すデータ、ゲームに登場する各種オブジェクトに設定される各種パラメータを表すデータ等、ゲーム処理において用いられる各種データを含む。
【0155】
第1キャラクタデータ131は、第1キャラクタ91に関する様々な情報を示すデータであり、第1キャラクタ91a〜91cのそれぞれのゲーム空間における位置および向き(姿勢)を表すデータを含む。また、第1キャラクタデータ131には、各第1キャラクタの生命力を示すデータ、剣オブジェクト91a〜91cの姿勢を示すデータ、第1各キャラクタに対応する誘導オブジェクト94a〜94cの位置を示すデータ、および、各第1キャラクタの攻撃対象を示すデータが含まれる。
【0156】
第2キャラクタデータ132は、第2キャラクタ92に関する様々な情報を示すデータであり、第2キャラクタ92のゲーム空間における位置および向き(姿勢)を表すデータを含む。また、第2キャラクタデータ132には、矢オブジェクト97の残りの数を示すデータ、第2キャラクタ92の生命力を示すデータ等が含まれる。
【0157】
敵キャラクタデータ133は、各敵キャラクタ93に関する様々な情報を示すデータであり、各敵キャラクタ93のゲーム空間における位置および向きを示すデータを含む。また、敵キャラクタデータ133には、各敵キャラクタ93の生命力を示すデータ等が含まれる。
【0158】
端末姿勢データ134は、端末装置7の姿勢を表すデータである。端末装置7の姿勢は、例えば、基本的な姿勢(例えば図6に示す姿勢)から現在の姿勢への回転を表す回転行列によって表現されてもよいし、XYZ各軸回りの回転角度によって表現されてもよい。端末姿勢データ134は、端末装置7からの端末操作データ120に含まれる角速度データ121に基づいて算出される。具体的には、端末姿勢データ134は、ジャイロセンサ74によって検出されたX軸、Y軸、Z軸周りの角速度をそれぞれ時間で積分することによって算出される。
【0159】
第1仮想カメラデータ135は、第1キャラクタ91a〜91cの背後にそれぞれ設定(固定)される第1仮想カメラA〜第1仮想カメラCのゲーム空間における位置および姿勢を示すデータである。上述のように、第1仮想カメラAは、第1キャラクタ91aの背後に設定され、当該仮想カメラの撮像方向は第1キャラクタ91aの向きに設定される。また、第1仮想カメラBは、第1キャラクタ91bの背後に設定され、当該仮想カメラの撮像方向は第1キャラクタ91bの向きに設定される。第1仮想カメラCは、第1キャラクタ91cの背後に設定され、当該仮想カメラの撮像方向は第1キャラクタ91cの向きに設定される。
【0160】
第2仮想カメラデータ136は、第2キャラクタ92の右斜め後方に設定(固定)される第2仮想カメラのゲーム空間における位置および姿勢を示すデータである。
【0161】
第3仮想カメラデータ137は、第2キャラクタ92の背後に設定(固定)される第3仮想カメラのゲーム空間における位置および姿勢を示すデータである。
【0162】
(フローチャートの説明)
次に、ゲーム装置3において実行されるゲーム処理の詳細を、図17図21を用いて説明する。図17は、ゲーム装置3において実行されるゲーム処理の流れを示すメインフローチャートである。ゲーム装置3の電源が投入されると、ゲーム装置3のCPU10は、図示しないブートROMに記憶されている起動プログラムを実行し、これによってメインメモリ等の各ユニットが初期化される。そして、光ディスク4に記憶されたゲームプログラムがメインメモリに読み込まれ、CPU10によって当該ゲームプログラムの実行が開始される。図17のフローチャートに示す処理は、以上の処理が完了した後に行われる。なお、ゲーム装置3においては、電源投入後にゲームプログラムがすぐに実行される構成であってもよいし、電源投入後にまず所定のメニュー画面を表示する内蔵プログラムが実行され、その後例えばユーザによるメニュー画面に対する選択操作によってゲームの開始が指示されたことに応じてゲームプログラムが実行される構成であってもよい。
【0163】
なお、図17図21に示すフローチャートにおける各ステップの処理は、単なる一例に過ぎず、同様の結果が得られるのであれば、各ステップの処理順序を入れ替えてもよい。また、変数や定数の値等も、単なる一例に過ぎず、必要に応じて他の値を採用してもよい。また、本実施形態では、上記フローチャートの各ステップの処理をCPU10が実行するものとして説明するが、上記フローチャートにおける一部のステップの処理を、CPU10以外のプロセッサや専用回路が実行するようにしてもよい。
【0164】
まず、ステップS1において、CPU10は初期処理を実行する。初期処理は、仮想のゲーム空間を構築し、ゲーム空間に登場する各オブジェクト(第1、第2キャラクタや敵キャラクタ、各仮想カメラ、その他ゲーム空間に配置されるオブジェクト等)を初期位置に配置したり、ゲーム処理で用いる各種パラメータの初期値を設定したりする処理である。例えば、CPU10は、第2キャラクタデータ132に含まれる第2キャラクタ92の向きを示す前方向ベクトルを初期化したり、左アナログスティック53Aによる回転角や端末装置7の姿勢による回転角を初期化したりする。また、CPU10は、後ろ方向度合BR(詳細は後述する)を初期化する。CPU10は、ステップS1の処理の後、ステップS2の処理を実行する。以降、ステップS2〜S9の一連の処理からなる処理ループが所定時間(1フレーム時間。例えば1/60秒)に1回の割合で繰り返し実行される。
【0165】
ステップS2において、CPU10は、端末装置7および3つのコントローラ5から送信されてメインメモリに記憶された操作データをそれぞれ取得する。端末装置7および各コントローラ5は操作データ(端末操作データおよびコントローラ操作データ)をゲーム装置3へ繰り返し送信する。ゲーム装置3においては、端末通信モジュール28が端末操作データを逐次受信し、受信された端末操作データが入出力プロセッサ11aによってメインメモリに逐次記憶される。また、コントローラ通信モジュール19が各コントローラ操作データを逐次受信し、受信された各コントローラ操作データが入出力プロセッサ11aによってメインメモリに逐次記憶される。コントローラ5とゲーム装置3との間における送受信の間隔、および、端末装置7とゲーム装置3との間における送受信の間隔はゲームの処理時間(上記1フレーム時間)よりも短い方が好ましく、例えば200分の1秒である。ステップS2においては、CPU10は、最新のコントローラ操作データ110および最新の端末操作データ120をメインメモリから読み出す。ステップS2の処理の後、ステップS3の処理が実行される。
【0166】
ステップS3において、CPU10は回転処理を実行する。回転処理は、端末装置7によって操作される第2キャラクタ92をゲーム空間内で回転させる処理である。以下、図18を参照して、回転処理の詳細について説明する。
【0167】
図18は、図17に示す回転処理(ステップS3)の詳細な流れを示すフローチャートである。
【0168】
ステップS11において、CPU10は、第2キャラクタ92からの距離が所定値以下であり、かつ、第2キャラクタ92からの距離が最小となる敵キャラクタ93を選択する。具体的には、CPU10は、第2キャラクタデータ132および敵キャラクタデータ133を参照して、第2キャラクタ92と各敵キャラクタ93との距離を算出する。そして、CPU10は、第2キャラクタ92からの距離が所定値以下であり、かつ、第2キャラクタ92との距離が最小である敵キャラクタ93を選択する。なお、第2キャラクタ92との距離が最小である敵キャラクタ93であっても、当該距離が所定値を超える場合は、CPU10は、敵キャラクタ93を選択しない。CPU10は、次にステップS12の処理を実行する。
【0169】
ステップS12において、CPU10は、敵キャラクタ93が選択されたか否かを判定する。判定結果が肯定の場合(すなわち、ステップS11で敵キャラクタ93が選択された場合)、CPU10は、次にステップS13の処理を実行する。一方、判定結果が否定の場合、CPU10は、次にステップS14の処理を実行する。
【0170】
ステップS13において、CPU10は、後ろ方向度合BRを算出する。後ろ方向度合BRは、第2キャラクタ92と敵キャラクタ93との角度に応じて変化する値である。図22は、ゲーム空間の上方から第2キャラクタ92と敵キャラクタ93とを見た図であり、第2キャラクタ92と敵キャラクタ93との角度を示す図である。具体的には、CPU10は、第2キャラクタ92の向きを示すベクトル(前方向ベクトル)と、第2キャラクタ92から敵キャラクタ93に向かうベクトルとの角度DEGを算出する。そして、CPU10は、第2キャラクタ92と敵キャラクタ93との角度DEGの絶対値が90度より大きければ、以下の式(1)により、後ろ方向度合BRを算出する。
後ろ方向度合BR=(DEGの絶対値−90)/90 (1)
なお、CPU10は、角度DEGの絶対値が90度以下である場合、後ろ方向度合BRに0を設定する。すなわち、後ろ方向度合BRは、敵キャラクタ93が第2キャラクタ92の真後ろ(180度)に存在する場合は1となり、敵キャラクタ93が第2キャラクタ92の左右方向よりも前方側に存在する場合は0となる。CPU10は、算出した後ろ方向度合BRをメインメモリに記憶して、次にステップS15の処理を実行する。
【0171】
一方、ステップS14において、CPU10は、第2キャラクタ92の周辺(所定範囲内)に敵キャラクタ93が存在しないため、後ろ方向度合BRに0を設定する。CPU10は、次にステップS15の処理を実行する。
【0172】
ステップS15において、CPU10は、スティックによる回転角算出処理を実行する。ステップS15では、CPU10は、左アナログスティック53Aを用いた入力(上記第1の入力)に基づく第2キャラクタ92の回転角を算出する。以下、図19を参照して、スティックによる回転角算出処理の詳細について説明する。
【0173】
図19は、図18に示すスティックによる回転角算出処理(ステップS15)の詳細な流れを示すフローチャートである。
【0174】
ステップS21において、CPU10は、メインメモリを参照して、左アナログスティック53Aの入力を示す入力ベクトル(InX,InY)(左スティックデータ122)を取得する。次に、CPU10は、ステップS22の処理を実行する。
【0175】
ステップS22において、CPU10は、入力ベクトルの角度Diおよび長さLenを算出する。入力ベクトルの角度Diは、左アナログスティック53Aの上方向を基準とした入力ベクトルの角度である。具体的には、CPU10は、以下の式(2)に基づいて、角度Diを算出する。
Di=arccos(InY/Len) (2)
ただし、CPU10は、InXが負である場合、上記式(2)で算出したDiに−1をかけた値を角度Diとしてメインメモリに記憶する。また、Lenが0である場合には、Di=0とする。次に、CPU10は、ステップS23の処理を実行する。
【0176】
ステップS23において、CPU10は、入力ベクトルの角度Diおよび長さLenに基づいて、値Xを算出する。具体的には、CPU10は、以下の式(3)に基づいて、値Xを算出する。
X=(Di/90)×Len (3)
ここで、X>1の場合、CPU10はXに1を設定し、X<−1の場合、Xに−1を設定してメインメモリに当該Xを記憶する。次に、CPU10は、ステップS24の処理を実行する。
【0177】
ステップS24において、CPU10は、後ろ方向度合BRに応じて、値OutXを算出する。具体的には、CPU10は、以下の式(4)に基づいて、値OutXを算出する。
OutX=InX+(X−InX)×BR (4)
【0178】
ここで、OutXは、左アナログスティック53Aの入力に基づく第2キャラクタ92の回転角を表す値である。具体的には、OutXは、左アナログスティック53Aの入力方向を示す入力ベクトルの横方向の値InXを、第2キャラクタ92と敵キャラクタ93との相対的な位置関係に基づいて調整したものであるといえる。例えば、後ろ方向度合BRが0の場合(つまり、敵キャラクタ93が第2キャラクタ92の真横よりも前方側に存在する場合)、OutX=InXとなる。すなわち、敵キャラクタ93が第2キャラクタ92の前方側に存在する場合は、左アナログスティック53Aの横方向の入力をそのまま用いて、第2キャラクタ92を旋回させる。また、後ろ方向度合BRが1の場合(つまり、敵キャラクタ93が第2キャラクタ92の真後ろに存在する場合)、OutX=Xとなる。すなわち、敵キャラクタ93が第2キャラクタ92の真後ろに存在する場合は、入力ベクトルのInXを用いずに(上記式(3)で算出された)値Xを用いて、第2キャラクタ92を制御する。具体的には、敵キャラクタ93が第2キャラクタ92の真後ろに存在する場合において、左アナログスティック53Aの下方向が入力された場合、InX=0,InY=−1となり、上記式(2)により、角度Di=180となる。そして、角度Di=180を上記式(3)に代入すると、X=1となる(上記式(3)によりX=2となるが、この場合は、X=1に設定される)。つまり、敵キャラクタ93が第2キャラクタ92の真後ろに存在する場合において、左アナログスティック53Aの下方向が入力された場合、横方向の入力があったものとして第2キャラクタ92が制御される。
【0179】
また、例えば、敵キャラクタ93が第2キャラクタ92の真後ろに存在する場合において、左アナログスティック53Aの右斜め下方向が入力された場合、上記式(3)によりX>InXであるため、OutX>InXとなる。すなわち、敵キャラクタ93が第2キャラクタ92の後方に存在する場合、実際の左アナログスティック53Aの入力に応じた回転角よりも大きな回転角で、第2キャラクタ92は旋回することになる。さらに、後ろ方向度合BRは、第2キャラクタ92と敵キャラクタ93との角度が180度に近いほど大きくなるため、敵キャラクタ93が第2キャラクタ92の真後ろに近いほど、OutXは大きくなる。したがって、敵キャラクタ93が第2キャラクタ92の真後ろに近いほど、第2キャラクタ92が回転する角度は大きくなる。
【0180】
なお、敵キャラクタ93が第2キャラクタ92の真後ろに存在する場合において、左アナログスティック53Aの右斜め上方向が入力された場合、上記式(4)により、OutX=Xとなる。ここで、例えば、入力ベクトルの角度Di=30度であって、長さLen=1である場合、InX=1/2である。一方、角度Di=30度であって、長さLen=1である場合、上記式(3)により、X=1/3となる。すなわち、敵キャラクタ93が第2キャラクタ92の真後ろに存在する場合において、左アナログスティック53Aの右斜め上方向が入力された場合、OutXの値は、InXの値よりも小さな値となることがある。このことは、敵キャラクタ93が第2キャラクタ92の真後ろに存在する場合において、第2プレイヤが左アナログスティック53Aの右斜め上方向を入力すると、第2キャラクタ92は右方向への旋回が弱められることを意味する。すなわち、この場合、第2キャラクタ92は、実際の入力よりも右方向への回転角が小さくなり、前方へ移動しやすくなる。敵キャラクタ93が第2キャラクタ92の真後ろに存在する場合において、左アナログスティック53Aの上方向が入力された場合は、第2プレイヤは敵キャラクタ93から逃げようと意図して操作していると考えられる。したがって、この場合、第2キャラクタ92が前方へ移動しやすくすることにより、第2プレイヤの意図した通りに第2キャラクタ92を移動させることができる。
【0181】
このように、実際の左アナログスティック53Aの入力値InXが、第2キャラクタ92と敵キャラクタ93との相対的な位置関係に基づいて調整されて、OutXが算出される。ステップS24の処理の後、CPU10は、ステップS25の処理を実行する。
【0182】
ステップS25において、CPU10は、左アナログスティック53Aによる回転角degSを算出する。具体的には、CPU10は、以下の式(5)に基づいて、回転角degSを算出する。
degS=−OutX×定数S (5)
ここで、定数Sは予め定められた値であり、左アナログスティック53Aに対する操作によって回転する第2キャラクタ92の回転速度に関係する値である。なお、後述するジャイロセンサによる回転角算出処理において算出される回転方向と合わせるため、式(5)においてOutXの符号が反転されている。ステップS25の処理の後、CPU10は、図19に示すスティックによる回転角算出処理を終了する。
【0183】
図18に戻り、CPU10は、次にステップS16の処理を実行する。ステップS16のジャイロセンサによる回転角算出処理では、CPU10は、端末装置7の姿勢を変化させることによる入力(上記第2の入力)に基づく第2キャラクタ92の回転角を算出する。以下、図20を参照して、ジャイロセンサによる回転角算出処理の詳細について説明する。
【0184】
図20は、図18に示すジャイロセンサによる回転角算出処理(ステップS16)の詳細な流れを示すフローチャートである。
【0185】
ステップS31において、CPU10は、メインメモリの角速度データ121を参照して、端末装置7が備えるジャイロセンサ74の検出値(XYZ各軸周りの角速度を示す値)を取得する。次に、CPU10は、ステップS32の処理を実行する。
【0186】
ステップS32において、CPU10は、端末装置7の姿勢を算出する。具体的には、CPU10は、ステップS31で取得した検出値に基づいて、端末装置7の姿勢を算出(取得)する。CPU10は、ジャイロセンサ74が検出したX軸周り、Y軸周り、Z軸周りの角速度をそれぞれ時間で積分することによって、初期的な姿勢からのX軸、Y軸、Z軸周りの回転角をそれぞれ算出することができる。CPU10は、算出した端末装置7の姿勢を示すデータを端末姿勢データ134としてメインメモリに記憶する。なお、ステップS32において、CPU10は、加速度データ124(端末装置7の加速度センサ73によって検出された加速度)に基づいて、端末装置7の姿勢を補正してもよい。次に、CPU10は、ステップS33の処理を実行する。
【0187】
ステップS33において、CPU10は、前回のフレームで算出した端末装置7の姿勢(前回の処理ループにおけるステップS32で算出した姿勢)と、今回のフレームで算出した端末装置7の姿勢とに基づいて、1フレームの間のヨー方向(Y軸周り)の回転角degGを算出する。次に、CPU10は、ステップS34の処理を実行する。
【0188】
ステップS34において、CPU10は、回転角degGが示す回転方向が第2キャラクタ92が敵キャラクタ93を向く方向か否かを判定する。ここでは、CPU10は、ステップS33で算出した回転角degGだけ第2キャラクタ92を回転させた場合に、第2キャラクタ92が敵キャラクタ93を向く方向に回転するか否かを判定する。例えば、CPU10は、第2キャラクタ92と敵キャラクタ93との角度が150度の場合において、ステップS33で算出した回転角degGが10度の場合(時計回りに10度回転の場合)、回転角degGが示す回転方向が第2キャラクタ92が敵キャラクタ93を向く方向であると判定する。一方、例えば、CPU10は、第2キャラクタ92と敵キャラクタ93との角度が150度の場合において、ステップS33で算出した回転角degGが−10度の場合(反時計回りに10度回転の場合)、回転角degGが示す回転方向が第2キャラクタ92が敵キャラクタ93を向く方向であると判定しない。判定結果が肯定の場合、CPU10は、次にステップS35の処理を実行する。判定結果が否定の場合、CPU10は、図20に示すジャイロセンサによる回転角算出処理を終了する。
【0189】
ステップS35において、CPU10は、回転角degGが増加するように当該degGを補正する。具体的には、CPU10は、次に示す式(6)に基づいて、回転角degGを補正する。
degG=degG×(1+BR×定数G) (6)
ここで、定数Gは予め定められた正の値であり、端末装置7の姿勢の変化によって回転する第2キャラクタ92の回転速度に関係する値である。式(6)から明らかなように、後ろ方向度合BRが大きいほど、補正後の回転角degGは大きくなる。
【0190】
このように、端末装置7を回転させることによって第2キャラクタ92が敵キャラクタ93を向く方向に第2キャラクタ92が回転される場合、実際の端末装置7の回転量よりも回転角degGは大きくなる。このため、端末装置7の実際の回転量よりも大きく第2キャラクタ92がゲーム空間内で回転する。これにより、第2キャラクタ92が敵キャラクタ93を向くようにしてプレイヤが端末装置7を回転させる場合、プレイヤは大きく端末装置7を回転させなくても、第2キャラクタ92を敵キャラクタ93に向かせることができる。例えば、敵キャラクタ93が第2キャラクタ92の真後ろに存在する場合は、端末装置7を少し回転させるだけで、第2キャラクタ92を大きく回転させることができる。ステップS35の処理の後、CPU10は、図20に示すジャイロセンサによる回転角算出処理を終了する。
【0191】
図18に戻り、CPU10は、次にステップS17の処理を実行する。ステップS17において、CPU10は、上記ステップS15で算出したスティックによる回転角degSと、ステップS16で算出したジャイロセンサによる回転角degGとに基づいて、第2キャラクタ92を回転させる。具体的には、CPU10は、回転角degSに回転角degGを加えた角度を算出し、当該算出した角度で第2キャラクタ92の前方向ベクトルをゲーム空間のy軸(地面から垂直上方に向かう軸)周りに回転させる。CPU10は、ステップS17の処理の後、図18に示す回転処理を終了する。
【0192】
図17に戻り、CPU10は、次にステップS4の処理を実行する。ステップS4において、CPU10は、移動処理を実行する。当該移動処理において、第2キャラクタ92および第1キャラクタ91はゲーム空間内で移動される。以下、図21を参照して、移動処理の詳細について説明する。
【0193】
図21は、図17に示す移動処理(ステップS4)の詳細な流れを示すフローチャートである。
【0194】
ステップS41において、CPU10は、第2キャラクタ92の移動方向が前方向か否かを判定する。具体的には、CPU10は、入力ベクトルの値InYが0以上か否かを判定する。判定結果が否定の場合、CPU10は、次にステップS42の処理を実行する。一方、判定結果が肯定の場合、CPU10は、次にステップS43の処理を実行する。
【0195】
ステップS42において、CPU10は、後ろ方向度合BRとスティックの入力ベクトルの値InYとに基づいて、第2キャラクタ92の移動量を算出する。具体的には、CPU10は、後ろ方向度合BRが小さいほど大きくなるように、第2キャラクタ92の移動量を算出する。より具体的には、後ろ方向度合BRが1の場合、第2キャラクタ92の移動量は0になる。後ろ方向度合BRが0の場合、第2キャラクタ92の移動量は、入力ベクトルの値InYに応じた値となる。また、CPU10は、入力ベクトルの値InYの絶対値が大きいほど大きくなるように、第2キャラクタ92の移動量を算出する。ステップS42の処理の後、CPU10は、ステップS44の処理を実行する。
【0196】
ステップS43において、CPU10は、入力ベクトルの値InYに基づいて、第2キャラクタ92の移動量を算出する。例えば、CPU10は、InYに所定の定数をかけた値を第2キャラクタ92の移動量として算出する。次に、CPU10は、ステップS44の処理を実行する。
【0197】
ステップS44において、CPU10は、ステップS42またはステップS43で算出した移動量と、ステップS3で回転した第2キャラクタ92の向きとに基づいて、第2キャラクタ92を移動させる。例えば、CPU10は、算出した移動量に、第2キャラクタ92の向きを示す単位ベクトルをかけることにより、移動ベクトルを算出する。そして、CPU10は、現在の第2キャラクタ92の位置を示す位置ベクトルに当該移動ベクトルを加えることにより、第2キャラクタ92の位置を更新する。
【0198】
以上のようにして、第2キャラクタ92が回転され(ステップS3)、第2キャラクタ92の移動量が算出される(ステップS42またはS43)。このようにして、第2キャラクタ92の移動が制御されることにより、第2キャラクタ92は次のように動作する。例えば、第2キャラクタ92の真後ろに敵キャラクタ93が存在する場合において、プレイヤが左アナログスティック53Aを用いて下方向を入力した場合、第2キャラクタ92は後退せず(移動量は0)に旋回する。さらに、プレイヤが左アナログスティック53Aの下方向を入力し続けたとすると、敵キャラクタ93は第2キャラクタ92の真後ろではなく斜め後方に位置することになる。このときの後ろ方向度合BRは1よりも小さな値となり、第2キャラクタ92の移動量は、0よりも大きな値となる。したがって、第2キャラクタ92は旋回しながら後退することになる。すなわち、第2キャラクタ92の真後ろに敵キャラクタ93が存在する場合において、プレイヤが左アナログスティック53Aの下方向を入力し続けた場合、第2キャラクタ92は最初は回転だけしてその後は回転しながら移動することになる。その結果、第2キャラクタ92は敵キャラクタ93と距離をとりながら(移動しながら)回転する。すなわち、第2キャラクタ92の背後に敵キャラクタ93が存在する場合において、プレイヤは、距離をとりながら第2キャラクタ92を敵キャラクタ93に向かせることができ、弓による攻撃に適した動作であるといえる。すなわち、弓等の離れた敵に対する攻撃を行う武器では、攻撃対象との距離が近すぎるとかえって攻撃し難く、ある程度の距離を保つ方がよい場合がある。
【0199】
次に、CPU10は、ステップS45の処理を実行する。ステップS45およびステップS46の処理によって、第1キャラクタ91がゲーム空間を移動する。
【0200】
ステップS45において、CPU10は、第1キャラクタ91a〜91cに対応する誘導オブジェクト94a〜94cを、所定の経路に沿って移動させる。すなわち、CPU10は、誘導オブジェクト94a〜94cを予め設定された経路98a〜98cに沿ってそれぞれ移動させる。なお、CPU10は、第1キャラクタ91とそれに対応する誘導オブジェクト94との距離が所定値以上にならないように、誘導オブジェクト94の位置を制御する。次に、CPU10はステップS46の処理を実行する。
【0201】
ステップS46において、CPU10は、誘導オブジェクト94と敵キャラクタ93との位置に基づいて、第1キャラクタ91を移動させる。具体的には、CPU10は、第1キャラクタ91aを中心とした所定範囲に敵キャラクタ93が存在しない場合、第1キャラクタ91aが誘導オブジェクト94aに追従するように第1キャラクタ91aを移動させる(第1キャラクタ91aの位置および向きを更新する)。また、CPU10は、当該所定範囲に敵キャラクタ93が存在する場合、当該敵キャラクタ93に近づくように第1キャラクタ91aを移動させる(第1キャラクタ91aの位置および向きを更新してメインメモリに記憶する)。なお、第1キャラクタ91aと敵キャラクタ93とが近接して格闘している場合には、CPU10は、第1キャラクタ91aが敵キャラクタ93を倒すまで第1キャラクタ91aを移動させない。CPU10は、他の第1キャラクタ91についても同様に、それぞれの位置および向きを更新する。CPU10は、ステップS46の処理の後、図21に示す移動処理を終了する。
【0202】
図17に戻り、CPU10は、次にステップS5の処理を実行する。ステップS5において、CPU10は、ゲーム処理を実行する。当該ゲーム処理では、各キャラクタによる攻撃が行われたり、攻撃の結果に応じた処理(例えば、攻撃を受けた敵キャラクタ93の生命力を示す値を減少させる処理等)が行われたりする。具体的には、角速度データ111(コントローラ5のジャイロセンサ48が検出した角速度を示すデータ)に基づいて、コントローラ5の姿勢が算出され、当該姿勢に応じて剣オブジェクト95の姿勢が決定される。そして、剣オブジェクト95と敵キャラクタ93との位置関係に基づいて、敵キャラクタ93に対する攻撃が成功したか(剣オブジェクト95が敵キャラクタ93に当たったか)否かが判定される。この場合において、CPU10は、加速度データ113(コントローラ5の加速度センサ37が検出した加速度を示すデータ)を参照してコントローラ5が振られたか否かを判定してもよい。また、CPU10は、右スティックデータ123を参照して、右アナログスティック53Bに対する入力が行われたことに応じて矢オブジェクト97を発射させるか否かを判定し、判定結果に応じて、矢オブジェクト97をゲーム空間内に発射させる。この場合において、矢オブジェクト97は、例えば、第2キャラクタ92の位置からLCD51の画面の中心に対応するゲーム空間の位置に向かって発射される。発射された矢オブジェクト97は、重力等の影響が考慮されてゲーム空間を移動する。そして、移動中の矢オブジェクト97が他のオブジェクト(敵キャラクタ93や他の障害物)と接触したか否かが判定され、接触した場合は、矢オブジェクト97は停止する。また、敵キャラクタ93をゲーム空間内で移動させる処理が行われる。また、各コントローラ5の十字ボタン32aが押された場合、選択オブジェクト99が移動されて攻撃対象の敵キャラクタ93が切り替えられる。また、CPU10は、各プレイヤキャラクタ(91,92)に設定された仮想カメラの位置および向きを、各プレイヤキャラクタの位置および向き(あるいは端末装置7の姿勢)に応じて更新する。CPU10は、次にステップS6の処理を実行する。
【0203】
ステップS6において、CPU10は、テレビ用ゲーム画像の生成処理を実行する。ステップS6においては、テレビ2に表示される画像90a、画像90b、画像90c、および画像90dが生成される。具体的には、CPU10は、第1キャラクタ91aの背後に設定された第1仮想カメラAでゲーム空間を撮像することによって画像を取得する。ここで、第1キャラクタ91aを中心とした所定範囲に複数の敵キャラクタ93が存在する場合、CPU10は、取得した画像に選択オブジェクト99aの画像を重ね合わせることにより、テレビ2の左上の領域に表示される画像90aを生成する。同様に、CPU10は、第1キャラクタ91bの背後に設定された第1仮想カメラBでゲーム空間を撮像することによって画像90bを生成する。また、CPU10は、第1キャラクタ91cの背後に設定された第1仮想カメラCでゲーム空間を撮像することにより画像90cを生成する。さらに、CPU10は、第2キャラクタ92の右斜め後方に設定された第2仮想カメラでゲーム空間を撮像することによって画像90dを生成する。そして、CPU10は、生成した4つの画像90a〜画像90dを結合してテレビ用ゲーム画像を生成する。テレビ用ゲーム画像の左上の領域には画像90a、右上の領域には画像90b、左下の領域には画像90c、右下の領域には画像90dが配置される。CPU10は、次にステップS7の処理を実行する。
【0204】
ステップS7において、CPU10は、端末用ゲーム画像の生成処理を実行する。具体的には、CPU10は、第2キャラクタ92の背後に設定された第3仮想カメラでゲーム空間を撮像することにより画像90e(端末用ゲーム画像)を生成する。CPU10は、次にステップS8の処理を実行する。
【0205】
ステップS8において、CPU10は、表示処理(ゲーム画像の出力処理)を実行する。ここでは、ステップS6で生成したテレビ用ゲーム画像がテレビ2に出力され、ステップS7で生成した端末用ゲーム画像が端末装置7に出力(送信)される。これにより、テレビ2には、図11に示すような画像が表示され、端末装置7のLCD51には図12に示すような画像が表示される。また、ステップS8においては、ゲーム画像と共に音声データがテレビ2および/または端末装置7へ出力され、テレビ2のスピーカ2aおよび/または端末装置7のスピーカ77からゲーム音声が出力される。CPU10は、次にステップS9の処理を実行する。
【0206】
ステップS9において、CPU10は、ゲームを終了するか否かを判定する。ステップS9の判定は、例えば、ゲームオーバーになったか否か、あるいは、ユーザがゲームを中止する指示を行ったか否か等によって行われる。第1キャラクタ91a〜91cおよび第2キャラクタ92のうちの何れかが敵キャラクタ93によって倒された場合(所定回数攻撃を受けた場合)、ゲームオーバーとなる。ステップS9の判定結果が否定の場合、ステップS2の処理が再度実行される。一方、ステップS9の判定結果が肯定の場合、CPU10は図20に示すゲーム処理を終了する。
【0207】
以上のように、本実施形態におけるゲームでは、コントローラ5を操作する少なくとも1人のプレイヤと、端末装置7を操作するプレイヤとが協力しながらゲームが進行する。コントローラ5によって操作される第1キャラクタ91は、ゲーム空間の所定の経路に基づいて自動で移動する。また、端末装置7によって操作される第2キャラクタ92は、端末装置7に対する入力(左アナログスティック53Aに対する入力、および、端末装置7の姿勢を変化させることによる入力)に基づいて、移動する。すなわち、第1キャラクタ91の移動方向および移動量は自動で制御され、第2キャラクタ92の移動方向および移動量はプレイヤによる入力によって制御される。このように、第1キャラクタ91は第1の自由度で移動し(具体的には、予め定められた経路に沿って移動し)、第2キャラクタ92は当該第1の自由度よりも自由度の高い第2の自由度で移動する(具体的には、端末装置7に対する操作に基づいて所定の平面上の任意の位置を移動する)。このように、コントローラ5によって操作される第1キャラクタ91の移動が制限され、端末装置7によって操作される第2キャラクタ92は自由に移動できるように設定されることにより、複数人で行われる新規なゲームを提供することができる。すなわち、第1キャラクタ91を操作する第1プレイヤはテレビ2の画面を見ながら所定の制限(第1の自由度)の下でゲームを行うのに対して、第2キャラクタ92を操作する第2プレイヤはテレビ2および端末装置7の画面を見ながら自由に(第2の自由度で)第2キャラクタ92を移動させてゲームを行う。第2プレイヤは、第2キャラクタ92を自由に移動させることができるので、第1プレイヤよりも有利な条件でゲームを進めることができる。一方、第1プレイヤは所定の制限の下でゲームを行うが、自動で第1キャラクタ91が移動するため、移動に関する操作を行う必要はなく、単純な操作(敵キャラクタ93を攻撃するためにコントローラ5を振る操作)でゲームを行うことができる。したがって、例えば、ゲームに熟練したプレイヤが端末装置7を用いて第2キャラクタ92を操作し、ゲームに熟練していない(複数の)プレイヤがコントローラ5を用いて第1キャラクタ91を操作することにより、ゲームの熟練度に関係なく複数人で協力してゲームを行うことができる。例えば、ゲームに熟練していないプレイヤによって操作される第1キャラクタ91が敵キャラクタ93に襲われそうなときに、ゲームに熟練したプレイヤは、第2キャラクタ92を自由に操作して当該敵キャラクタ93を倒すことができる。また、第2キャラクタ92は、矢オブジェクト97で攻撃することができるので、より遠方の敵キャラクタ93に攻撃を行うことができる。このため、第2プレイヤは第1プレイヤよりも有利であるといえ、第1プレイヤを助けながらゲームを行うことに適しているといえる。逆に、ゲームに熟練したプレイヤが第1キャラクタ91を操作し、ゲームに熟練していないプレイヤが第2キャラクタ92を操作してもよい。また、複数のプレイヤが同じ条件(同じ自由度)でゲームを行う場合では、各プレイヤはそれぞれ勝手に操作してしまい、ゲームの進行の妨げになる場合がある。しかしながら、本実施形態におけるゲームでは、第1キャラクタ91の移動が制限されるため、各プレイヤが勝手にそれぞれのプレイヤキャラクタを移動させてゲームの進行の妨げになることはない。本実施形態では、各プレイヤがそれぞれの自由度でそれぞれの役割に応じてゲームを進行させることができる。
【0208】
また、本実施形態では、第1キャラクタ91に対応する第1仮想カメラがゲーム空間内にそれぞれ設定され、第2キャラクタ92に対応する第2仮想カメラがゲーム空間内に設定される。そして、第1仮想カメラおよび第2仮想カメラによって撮像された画像がテレビ2の画面に表示される。さらに、第2キャラクタ92に対応する第3仮想カメラがゲーム空間内に設定されて、当該第3仮想カメラで撮像された画像が端末装置7のLCD51に表示される。これにより、第1プレイヤはテレビ2の画面を見ながら他の第1プレイヤおよび第2プレイヤの状況を把握することができる。また、第2プレイヤは、2つの画面を見ることができるため、第1プレイヤよりも多くの情報に基づいてゲームを進めることができる。
【0209】
また、本実施形態では、敵キャラクタ93が第2キャラクタ92の後方(第2キャラクタ92の左右方向よりも後ろ側;90度〜180度または−180度〜−90度の方向)に存在する場合、第2キャラクタ92が敵キャラクタ93に向きやすくなる。具体的には、敵キャラクタ93が第2キャラクタ92の後方に存在する場合は、左アナログスティック53Aの下方向が入力されても、第2キャラクタ92は後退せずに(または後退しながら)旋回する。また、敵キャラクタ93が第2キャラクタ92の後方に存在する場合において、第2キャラクタ92が敵キャラクタ93を向く方向に端末装置7を回転させる場合、端末装置7の回転量よりも大きな回転量で第2キャラクタ92は回転する。このように、第2キャラクタ92と敵キャラクタ93との位置関係に応じて、第2キャラクタ92が敵キャラクタ93に向きやすくなる。このため、第2プレイヤは敵キャラクタ93が第2キャラクタ92の後方に存在する場合でも、容易に第2キャラクタ92を敵キャラクタ93に向けることができる。
【0210】
[7.変形例]
なお、上記実施形態は本発明を実施する一例であり、他の実施形態においては例えば以下に説明する構成であってもよい。
【0211】
例えば、本実施形態では、4人のプレイヤのうちの3人のプレイヤがコントローラ5を操作して、1人のプレイヤが端末装置7を操作した。他の実施形態では、複数の端末装置7がゲーム装置3に接続(無線で接続)され、複数のプレイヤが端末装置7をそれぞれ操作してもよい。また、他の実施形態では、プレイヤの人数は4人以上であってもよいし、1人のプレイヤがコントローラ5を操作して、1人のプレイヤが端末装置7を操作することで2人のプレイヤでゲームが行われてもよい。
【0212】
また、本実施形態では、複数人のプレイヤが互いに協力することでゲームが進行するようにしたが、他の実施形態では、複数人のプレイヤ同士が対戦するゲームであってもよい。また、複数人で行われるゲームであればどのようなゲームであってもよい。
【0213】
また、本実施形態では、第2キャラクタ92に対応する第2仮想カメラおよび第3仮想カメラがゲーム空間に設定されて、テレビ2に第2仮想カメラによって撮像された画像が表示され、端末装置7に第3仮想カメラによって撮像された画像が表示された。他の実施形態では、テレビ2には第2仮想カメラによって撮像された画像(第2キャラクタ92に対応する画像)は表示されなくてもよい。この場合、第2キャラクタ92の後方からゲーム空間を見た画像はテレビ2に表示されないため、第1プレイヤは、第2キャラクタ92の状況を把握し難いが、第2キャラクタ92の状況を知らなくてもゲームを行うことは可能である。
【0214】
また、本実施形態では、第3仮想カメラによって撮像された画像が端末装置7に表示されたが、他の実施形態では、端末装置7には第2キャラクタ92の動作に応じた画像が表示されてもよい。ここで、第2キャラクタ92の動作に応じた画像は、第2キャラクタ92が動作することによって変化する画像であればよく、仮想カメラでゲーム空間を撮像した画像であってもよし、仮想カメラでゲーム空間を撮像した画像でなくてもよい。例えば、端末装置7には、ゲーム空間における各キャラクタ(91、92、93)の位置および向きを表示するためのマップ画像が表示されてもよい。
【0215】
また、本実施形態では、第1キャラクタ91は所定の経路に沿って自動で移動し(第1キャラクタ91の向きおよび位置が自動で変化し)、第2キャラクタ92はゲーム空間内の2次元平面上を第2プレイヤによる入力方向に移動した。他の実施形態では、第1キャラクタ91は所定の経路に基づいて、第1プレイヤの操作に応じて移動してもよい。例えば、第1キャラクタ91は、コントローラ5の十字ボタン32aの上方向が押された場合に、所定の経路上を前方に向かって移動してもよい。また、例えば、第1キャラクタ91は、所定の経路を含む所定範囲を自動またはプレイヤの操作に応じて移動してもよい。また、例えば、第1キャラクタ91の向きのみがプレイヤによって制御され、第1キャラクタ91の移動量は自動で制御されてもよいし、第1キャラクタ91の移動量のみがプレイヤによって制御され、第1キャラクタ91の向きは自動で制御されてもよい。また、他の実施形態では、第2キャラクタ92は、2次元平面上の制限された範囲(第1キャラクタ91の移動範囲よりも広い範囲)を第2プレイヤの操作に基づいて、移動してもよい。すなわち、第1キャラクタ91が第1の自由度で移動され、第2キャラクタ92が当該第1の自由度よりも自由度の高い第2の自由度で移動されてもよい。ここで、「自由度」とは、プレイヤがどの程度自由にキャラクタを制御できるかを示すのもである。例えば、自由度は、キャラクタの位置に関してプレイヤがどの程度自由に制御できるかを示すものであってもよいし、キャラクタの向きに関してプレイヤがどの程度自由に制御できるかを示すものであってもよい。例えば、自由度は、プレイヤの操作によってキャラクタが移動できるゲーム空間の範囲(位置)を示すものであってもよいし、プレイヤの操作によってキャラクタのゲーム空間における向きがどの程度変化し得るかを示すものであってもよい。また、自由度は、プレイヤの操作に応じてどの程度自由にキャラクタが動作するかを示すものであってもよい。例えば、第1キャラクタ91は基本的に所定の経路上を自動で移動するため(位置および向きがゲーム装置3によって自動で決定されるため)、第1キャラクタ91が移動可能なゲーム空間の範囲は、第2キャラクタ92と比べて狭いといえる。また、第1キャラクタ91の向きは、ゲーム装置3によって自動で決定されるため、第1キャラクタ91の向きに関する自由度は、第2キャラクタ92と比べて低いといえる。このため、第1キャラクタ91の自由度は、第2キャラクタ92の自由度と比べて低い。
【0216】
また、本実施形態では、敵キャラクタ93が第2キャラクタ92の後方に存在しない場合において、左アナログスティック53Aの下方が入力された場合、第2キャラクタ92を旋回させずに第2キャラクタ92を後退させた。他の実施形態では、同様の場合において、第2キャラクタ92を移動させるとともに、第2キャラクタ92を旋回させてもよい。
【0217】
また、本実施形態では、敵キャラクタ93が第2キャラクタ92の後方に存在しない場合において、左アナログスティック53Aの下方が入力された場合、第2キャラクタ92を後退させた。そして、敵キャラクタ93が第2キャラクタ92の後方に存在する場合であって、左アナログスティック53Aの下方が入力されたとき、第2キャラクタ92を後退させずに、第2キャラクタ92を旋回させた。他の実施形態では、敵キャラクタ93が第2キャラクタ92の後方に存在する場合であって、左アナログスティック53Aの下方が入力されたとき、第2キャラクタ92の後方への移動を制限(移動量を0または小さく)して、第2キャラクタ92を旋回させてもよい。また、他の実施形態では、敵キャラクタ93が第2キャラクタ92の後方に存在する場合には、敵キャラクタ93が第2キャラクタ92の後方に存在しない場合に比べて、第2キャラクタ92の旋回量を多くしてもよい。
【0218】
すなわち、他の実施形態では、敵キャラクタ93が第2キャラクタ92の後方に存在する場合であって、左アナログスティック53Aの下方が入力されたとき、第2キャラクタ92が敵キャラクタ93を向きやすいように、スティックによる回転角(回転方向と回転量を示す制御データ)が調整されてもよい。
【0219】
また、本実施形態では、敵キャラクタ93が第2キャラクタ92の後方に存在する場合、敵キャラクタ93が第2キャラクタ92の後方に存在しない場合と比べて、端末装置7の回転による第2キャラクタ92の回転量を大きくした。すなわち、敵キャラクタ93が第2キャラクタ92の後方に存在する場合、第2キャラクタ92が敵キャラクタ93を向きやすいように、ジャイロセンサによる回転角(回転方向と回転量を示す制御データ)が調整された。
【0220】
以上のように、敵キャラクタ93が第2キャラクタ92の後方に存在する場合には、第2キャラクタ92が敵キャラクタ93を向きやすいように、第2キャラクタ92の回転方向および回転量を示す制御データが調整されてもよい。
【0221】
また、本実施形態では、第2キャラクタ92の後方に敵キャラクタ93が存在する場合、第2キャラクタ92が敵キャラクタ93に向きやすいように、上記制御データが調整された。他の実施形態では、第2キャラクタ92の後方に敵キャラクタ93が存在する場合に、第2キャラクタ92が敵キャラクタ93と反対方向を向きやすいように、制御データが調整されてもよい。例えば、強敵から逃げやすいように、制御データが調整されてもよい。また、他の実施形態では、第2キャラクタ92の前方に敵キャラクタ93が存在する場合に、第2キャラクタ92が敵キャラクタ93と反対方向を向きやすいように、調整されてもよい。
【0222】
すなわち、プレイヤオブジェクトと所定の他のオブジェクトとが所定の位置関係である場合、プレイヤオブジェクトの向きが所定方向を向きやすいように、当該プレイヤオブジェクトの回転方向および回転量を示す制御データが調整されてもよい。
【0223】
また、他の実施形態では、後ろ方向度合BRに代えて、敵キャラクタ93がどの程度第2キャラクタ92の前方向に存在するかを示す前方向度合が算出され、当該前方向度合に基づいて、上記制御データが調整されてもよい。この場合、前方向度合は、第2キャラクタ92と敵キャラクタ93との角度が小さいほど大きくなる。また、後ろ方向度合BRに代えて、右方向度合が算出され、当該右方向度合に基づいて、上記制御データが調整されてもよい。すなわち、第2キャラクタ92の特定の方向を基準とした敵キャラクタ93の角度に応じた度合が算出され、当該度合に基づいて、上記制御データが調整されてもよい。当該度合は、敵キャラクタ93が第2キャラクタ92を基準とした特定の方向(例えば後ろ方向)にどの程度存在するかを示すものであり、敵キャラクタ93が第2キャラクタ92を基準として特定の方向に存在するほど値が大きくなる。より具体的には、当該度合は、第2キャラクタ92からみた特定の方向(例えば、後ろ方向、右方向、前方向等)と、当該第2キャラクタ92の位置から敵キャラクタ93の位置へ向かう方向との一致の度合を示すものである。
【0224】
また、本実施形態では、端末装置7の左アナログスティック53Aに対する入力に基づいて、第2キャラクタ92の移動および向きが制御された。他の実施形態では、他のボタン(十字ボタン54A等の方向を入力するための操作部)に対する入力に基づいて、第2キャラクタ92の位置および向きが制御されてもよい。
【0225】
また、本実施形態では、矢オブジェクトによって敵キャラクタ93に攻撃したが、他の実施形態では、例えば、ボール等の球体、銃弾、砲弾、槍、ブーメラン等、どのようなものでもよい。
【0226】
また、本実施形態では、ゲーム装置3において端末用ゲーム画像を生成し、当該生成した画像を端末装置7に無線通信により送信することにより、端末装置7に端末用ゲーム画像を表示させた。他の実施形態では、端末装置7において端末用ゲーム画像を生成して、生成した画像を端末装置7の表示部(LCD51)に表示させてもよい。この場合において、端末装置7には、ゲーム装置3からゲーム空間のキャラクタや仮想カメラに関する情報(位置や姿勢等の情報)が送信され、当該情報に基づいて端末装置7内で端末用ゲーム画像が生成される。
【0227】
また、本実施形態では、ジャイロセンサが検出した角速度に基づいて、端末装置7の姿勢を算出した。他の実施形態では、ジャイロセンサが検出した角速度に基づいた端末装置7の姿勢を、加速度センサが検出した加速度に基づいて補正してもよいし、加速度センサが検出した加速度に基づいて端末装置7の姿勢を算出してもよい。すなわち、1以上の慣性センサ(加速度センサやジャイロセンサ)を用いて、端末装置7の姿勢を算出してもよい。また、他の実施形態では、磁気センサが検出する方位(磁気センサが検出する地磁気によって示される方角)に基づいて、端末装置7の姿勢を算出してもよい。また、他の実施形態では、端末装置7をカメラ等で撮像して得られる画像を用いて、端末装置7の姿勢を算出してもよい。また、端末装置7の姿勢に基づく姿勢データ(慣性センサの検出値を示すデータ、磁気センサの検出値を示すデータ、端末装置7の姿勢に応じて変化する画像データ等)を端末装置7が出力し、当該姿勢データに基づいて、ゲーム装置3は端末装置7の姿勢が取得(算出)されてもよい。
【0228】
また、他の実施形態では、ゲーム装置3において行われたゲーム処理の一部が、端末装置7において実行されてもよい。例えば、端末装置7で操作されるゲーム空間内のオブジェクトの位置や姿勢、動作等が端末装置7において決定され、当該決定した情報がゲーム装置3に送信されてもよい。また、端末装置7において端末装置の姿勢が算出され、当該姿勢を示す情報がゲーム装置3に送信されてもよい。ゲーム装置3は受信した情報に基づいて、その他のゲーム処理を実行してもよい。
【0229】
また、本実施形態では、上記ゲーム装置3において上記ゲームプログラムが実行されたが、他の実施形態では、ゲーム専用装置に限らず、一般的な情報処理装置(パーソナルコンピュータやスマートフォン等)において上記プログラムが実行されてもよい。すなわち、他の実施形態では、一般的な情報処理装置において上記プログラムが実行されることにより、当該情報処理装置をゲーム装置として機能させてもよい。
【0230】
また、上記ゲームプログラムは、光ディスクに限らず、磁気ディスク、不揮発性メモリ等の記憶媒体に記憶されてもよく、ネットワークに接続されたサーバ上のRAMや磁気ディスク等のコンピュータ読み取り可能な記憶媒体に記憶されて、ネットワークを介して当該プログラムが提供されてもよい。また、上記ゲームプログラムは、ソースコードとして情報処理装置に読み込まれて、プログラムの実行の際にコンパイルされて実行されてもよい。
【0231】
また、上記実施形態においては、ゲーム装置3のCPU10が上記ゲームプログラムを実行することによって、上述したフローチャートによる処理が行われた。他の実施形態においては、上記処理の一部又は全部は、ゲーム装置3が備える専用回路によって行われてもよし、他の汎用プロセッサによって行われてもよい。少なくとも1つのプロセッサが、上記処理を実行するための「プログラムされた論理回路」として動作するものであってもよい。
【0232】
さらに、他の実施形態では、互いに通信可能な複数の情報処理装置を有するゲームシステムにおいて、当該複数の情報処理装置が、上述のようなゲーム装置3において実行されたゲーム処理を分担して実行するようにしてもよい。例えば、インターネットのようなネットワークに接続された複数の情報処理装置によって上述のようなゲームシステムが構成されてもよい。この場合、例えば、プレイヤはネットワークに接続可能な操作装置や可搬型表示装置(上記実施形態における端末装置7のようなものやタブレット型コンピュータやスマートフォン等の表示装置を備える操作装置)に対するゲーム操作を行う。当該ゲーム操作に応じた操作情報は、ネットワークを介して他の情報処理装置に送信され、当該他の情報処理装置は、受信した操作情報に基づいたゲーム処理を実行し、実行結果を操作装置や可搬型表示装置に送信する。
【0233】
ここで開示された、システム、デバイス、および装置は、1つの場所または1つ以上のネットワークを介して通信しながら様々な場所に分散されて配置された、1台以上のプロセッサを含んでもよい。例えば、そのようなプロセッサは、ディスプレイのための適切な画像を提供するために標準の3D図形変換、仮想カメラ、および他の技術を用いることができる。制限されることのない一例として、プロセッサは、据置型ディスプレイと共同設置された独立のコンポーネントまたはその一部であってもよく、可搬型ディスプレイと遠隔通信(例えば、無線)するものであってもよい。また、プロセッサは、可搬型ディスプレイと共同設置された独立のコンポーネントまたはその一部であってもよく、据置型ディスプレイまたは関連機器と遠隔通信(例えば、無線)するものであってもよい。また、プロセッサは、分散処理装置であってもよく、これらは可搬型ディスプレイ内に含まれてもよいし、据置型ディスプレイと共同設置されてもよい。これら分散された部分は、無線または有線のような接続を介して互いに通信するようになっている。また、プロセッサは、据置型ディスプレイおよび可搬型ディスプレイから離れて設置され(例えば、クラウド内)、1以上のネットワーク接続を介してこれらが互いに通信するものであってもよい。また、プロセッサは、上記のバリエーションや組み合わせであってもよい。プロセッサは、1以上の汎用プロセッサを用いて実装されてもよいし、1以上の特定グラフィックプロセッサを用いて実装されてもよいし、これらの組み合わせであってもよい。これらは、特別に設計されたASICs(特定用途向け集積回路)および/または論理回路によって補われてもよい。分散プロセッサアーキテクチャまたは装置の場合、適切なデータ交換と送信プロトコルは、当業者が理解されるように低遅延および双方向性の維持を提供するために用いられる。同様に、ここで開示されたシステムおよび方法を実装するためのプログラム命令、データ、および他の情報は、1以上のオンボードおよび/または着脱自在のメモリデバイスに格納されてもよい。複数のメモリデバイスは、互いに共同配置または遠隔に配置される同一のデバイスまたは異なるデバイスの一部であってもよい。
【符号の説明】
【0234】
1 ゲームシステム
2 テレビ
3 ゲーム装置
4 光ディスク
5 コントローラ
7 端末装置
10 CPU
11e 内部メインメモリ
12 外部メインメモリ
37 加速度センサ
48 ジャイロセンサ
51 LCD
73 加速度センサ
74 ジャイロセンサ
91 第1キャラクタ
92 第2キャラクタ
93 敵キャラクタ
94 誘導オブジェクト
95 剣オブジェクト
96 弓オブジェクト
97 矢オブジェクト
98 経路
99 選択オブジェクト
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20
図21
図22