(57)【要約】【課題】入力装置自体を動かして入力するときに、プレイヤが目標とする入力値をゲーム内の処理に反映することのできるゲームプログラムおよびゲーム装置を提供すること。【解決手段】入力装置自体の動きに応じて変化する入力データの取り得る値のうち、所定の値を第１の基準値として設定する。また、入力データから変換されるゲームパラメータが取り得る値の中から所定の値を第２の基準値として設定する。更に、入力値範囲の中から第１の基準値を含む所定の範囲を変換範囲として設定する。そして、入力データの値が変換範囲内に含まれるときは、当該入力データをそのまま変換したときよりも第２の基準値に近い値に変換される第１の変換式で変換してゲームパラメータとする。そして、当該ゲームパラメータに基づいてゲーム処理を行う。【選択図】図１２
2008000184.tif 000002
【特許請求の範囲】
【請求項１】
入力装置自体の動きに応じて変化する入力値に基づいたゲーム処理をゲーム装置のコンピュータに実行させるゲームプログラムであって、
前記入力値が取り得る範囲である入力値範囲内の所定値を基準値に設定する基準値設定ステップと、
前記基準値を含む入力値範囲の一部を特定範囲として設定する特定範囲設定ステップと、
前記入力装置自体の動きに応じて変化する入力値を取得する入力値取得ステップと、
前記入力値取得ステップによって取得した入力値が前記特定範囲に含まれるとき、当該入力値を前記基準値と同一の値または当該入力値を当該基準値へ近づけた値であるゲームパラメータ値へ変換する変換ステップと、
前記ゲームパラメータ値を用いたゲーム処理を行う処理ステップとを前記コンピュータに実行させる、ゲームプログラム。
【請求項２】
前記変換ステップはさらに、前記入力値取得ステップによって取得した入力値が前記特定範囲に含まれないとき、当該入力値を当該入力値と同値または当該入力値近傍の値であるゲームパラメータ値へ変換する、請求項１に記載のゲームプログラム。
【請求項３】
前記変換ステップは、前記入力値取得ステップによって取得した入力値が前記特定範囲の境界では、前記特定範囲内外のゲームパラメータ値は連続性を持った値へ変換する、請求項１に記載のゲームプログラム。
【請求項４】
前記特定範囲設定ステップは、前記基準値を中心とした所定の範囲を特定範囲として設定する、請求項１に記載のゲームプログラム。
【請求項５】
前記変換ステップは、前記入力範囲内の各入力値とそれぞれの入力値を変換した各ゲームパラメータ値との関係が連続的になるように変換を行う、請求項１に記載のゲームプログラム。
【請求項６】
前記変換ステップは、前記入力範囲外の各入力値とそれぞれの入力値を変換した各ゲームパラメータ値との関係が連続的になるように変換を行う、請求項２に記載のゲームプログラム。
【請求項７】
前記変換ステップで行われる前記入力範囲外の各入力値に対する変換は、前記入力値を所定の曲線補間で補完することによる行われる、請求項２に記載のゲームプログラム。
【請求項８】
前記基準値は、前記入力値を変換することにより得られるゲームパラメータ値に基づいた所定のゲーム処理の結果が、ゲーム内容に応じた最良の結果となるような所定の値である、請求項１に記載のゲームプログラム。
【請求項９】
前記基準値設定ステップは、
前記入力値範囲の上限値を第１の比較値、前記入力値範囲の下限値を第２の比較値として設定する比較値設定ステップと、
前記第１の比較値と前記第２の比較値の中間値である入力中間値を算出する入力中間値算出ステップと、
前記第１の比較値と前記第２の比較値に前記所定の変換を行うことによりそれぞれ得られるゲームパラメータ値で所定のゲーム処理を行った結果である結果値をそれぞれ算出するシミュレートステップと、
前記シミュレートステップによって算出された結果値を比較し、前記ゲーム内容に応じた最良の結果となるような所定の値との差が大きいほうのゲームパラメータ値へ前記所定の変換がされた前記比較値を前記入力中間値で更新する比較値更新ステップとを含み、
前記入力中間値算出ステップとシミュレートステップと比較値更新ステップとは、所定の条件が満たされるまで繰り返され、
前記基準値設定ステップは、前記所定の条件が満たされたときにおける前記入力中間値を基準値として設定する、請求項８に記載のゲームプログラム。
【請求項１０】
前記所定の条件とは、前記第１の比較値と第２の比較値とが一致したとき、および、入力値取得ステップによって入力値が取得されたときのいずれかのときである、請求項９に記載のゲームプログラム。
【請求項１１】
前記基準値設定ステップは、
前記入力値範囲で所定間隔ごとの各値に前記所定の変換を行うことにより得られる各ゲームパラメータ値で所定のゲーム処理を行った結果である結果値をそれぞれ算出するシミュレートステップを含み、
前記シミュレートステップによって算出された結果値のうち前記ゲーム内容に応じた最良の結果となるような結果値が算出されたゲームパラメータ値へ前記所定の変換がされた前記入力値範囲の値を基準値として設定する、請求項８に記載のゲームプログラム。
【請求項１２】
前記所定のゲーム処理とは、仮想ゲーム空間内の移動オブジェクトを飛ばす処理である、請求項８に記載のゲームプログラム。
【請求項１３】
前記ゲーム内容に応じた最良の結果となるような所定の値とは、前記移動オブジェクトの飛んだ位置または飛ぶ軌道を示すための値である、請求項１２に記載のゲームプログラム。
【請求項１４】
入力装置自体の動きに応じて変化する入力値に基づいたゲーム処理を行うゲーム装置であって、
前記入力値が取り得る範囲である入力値範囲内の所定値を基準値として設定する基準値設定部と、
前記基準値を含む入力値範囲の一部を特定範囲として設定する特定範囲設定部と、
前記入力装置自体の動きに応じて変化する入力値を取得する入力値取得部と、
前記入力値取得部によって取得した入力値が前記特定範囲に含まれるとき、当該入力値を前記基準値と同一の値または当該入力値を当該基準値へ近づけた値であるゲームパラメータ値へ変換する変換部と、
前記ゲームパラメータ値を用いたゲーム処理を行う処理部とを備える、ゲーム装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ゲームプログラムおよびゲーム装置に関し、より特定的には、入力装置自体の動きに応じてゲーム処理を行うゲームプログラムおよびゲーム装置に関する。
【背景技術】
【０００２】
従来から、卓球のラケットや野球のバット等のようなスポーツ用具を振るタイプのゲーム（卓球ゲームや野球ゲーム等）がある。これらのゲームにおいては、スポーツ用具を振る動作を入力するためのコントローラに、スイッチを利用したボタンやレバーを用いていた。また、これとは別に、スポーツ用具の形状をしたコントローラ（入力装置）も開示されている（例えば特許文献１）。特許文献１に示すコントローラは、卓球のラケット型入力装置である。当該ラケット型入力装置は、圧電ブザー素子を含み、当該ラケット型入力装置が変位したときに圧電ブザー素子に生じる電気信号から加速度データを得ている。そして、当該加速度データに基づいて、卓球ゲームにおけるボールの移動を制御している。これにより、当該ラケット型入力装置で振る動作を行うことにより、実際のラケットを振る動作に即したゲーム進行が可能になる。
【特許文献１】特開２００２−７０５７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかしながら、上述したような上記特許文献１に開示された装置においては、以下に示す問題点があった。確かに、上述のラケット型入力装置を振る動作を行うことで、実際の振る動作に即したゲーム進行が可能となる。しかし、プレイヤのラケット型入力装置の握り方や振る際の癖等の要因で、プレイヤは同じ動作を行っているつもりでも、計測して得られる値としては異なる値が得られることがある。その結果、プレイヤとしては同じ動作を行ったつもりでも、ゲーム内においては別の動作が行われたとして処理されることもあった。そのため、入力装置自体を振ることで入力を行うタイプのゲームでは、予め可動範囲が定められているジョイスティック等を用いた入力方法に比べると、プレイヤの入力したい値、つまりプレイヤが目標とする入力値を的確に入力することは困難であった。そのため、プレイヤの思い通りの入力がゲーム内に反映されず、ゲームの興趣を下げてしまうことがあった。
【０００４】
それ故に、本発明の目的は、入力装置自体を動かして入力するときに、プレイヤが目標とする入力値をゲーム内の処理に反映することのできるゲームプログラムおよびゲーム装置を提供することである。
【課題を解決するための手段】
【０００５】
本発明は、上記の課題を解決するために、以下の構成を採用した。なお、括弧内の参照符号および補足説明等は、本発明の理解を助けるために後述する実施形態との対応関係を示したものであって、本発明を何ら限定するものではない。
【０００６】
第１の発明は、入力装置自体の動きに応じて変化する入力値に基づいたゲーム処理をゲーム装置のコンピュータに実行させるゲームプログラムであって、基準値設定ステップ（Ｓ２）と、特定範囲設定ステップ（Ｓ４）と、入力値取得ステップ（Ｓ５、Ｓ６）と、変換ステップ（Ｓ７〜Ｓ８）と、処理ステップ（Ｓ１０）とをコンピュータに実行させる。基準値設定ステップは、入力値が取り得る範囲である入力値範囲内の所定値を基準値に設定する。特定範囲設定ステップは、基準値を含む入力値範囲の一部を特定範囲として設定する。入力値取得ステップと、入力装置自体の動きに応じて変化する入力値を取得する。変換ステップと、入力値取得ステップによって取得した入力値が特定範囲に含まれるとき、当該入力値を基準値と同一の値または当該入力値を当該基準値へ近づけた値であるゲームパラメータ値へ変換する。処理ステップと、ゲームパラメータ値を用いたゲーム処理を行う。
【０００７】
第２の発明は、第１の発明において、変換ステップはさらに、入力値取得ステップによって取得した入力値が特定範囲に含まれないとき、当該入力値を当該入力値と同値または当該入力値近傍の値であるゲームパラメータ値へ変換する。
【０００８】
第３の発明は、第１の発明において、変換ステップは、入力値取得ステップによって取得した入力値が特定範囲の境界では、特定範囲内外のゲームパラメータ値は連続性を持った値へ変換する。
【０００９】
第４の発明は、第１の発明において、特定範囲設定ステップは、基準値を中心とした所定の範囲を特定範囲として設定する。
【００１０】
第５の発明は、第１の発明において、変換ステップは、入力範囲内の各入力値とそれぞれの入力値を変換した各ゲームパラメータ値との関係が連続的になるように変換を行う。
【００１１】
第６の発明は、第２の発明において、変換ステップは、入力範囲外の各入力値とそれぞれの入力値を変換した各ゲームパラメータ値との関係が連続的になるように変換を行う。
【００１２】
第７の発明は、第２の発明において、変換ステップで行われる入力範囲外の各入力値に対する変換は、入力値を所定の曲線補間で補完することによる行われる。
【００１３】
第８の発明は、第１の発明において、基準値は、入力値を変換することにより得られるゲームパラメータ値に基づいた所定のゲーム処理の結果が、ゲーム内容に応じた最良の結果となるような所定の値である。
【００１４】
第９の発明は、第８の発明において、基準値設定ステップは、比較値設定ステップ（Ｓ２３、Ｓ２６）と、入力中間値算出ステップ（Ｓ２９）と、シミュレートステップ（Ｓ２７、Ｓ２８）と、比較値更新ステップ（Ｓ３１、Ｓ３２）とを含む。比較値設定ステップでは、入力値範囲の上限値を第１の比較値、入力値範囲の下限値を第２の比較値として設定する。入力中間値算出ステップでは、第１の比較値と第２の比較値の中間値である入力中間値を算出する。シミュレートステップでは、第１の比較値と第２の比較値に所定の変換を行うことによりそれぞれ得られるゲームパラメータ値で所定のゲーム処理を行った結果である結果値をそれぞれ算出する。比較値更新ステップでは、シミュレートステップによって算出された結果値を比較し、ゲーム内容に応じた最良の結果となるような所定の値との差が大きいほうのゲームパラメータ値へ所定の変換がされた比較値を入力中間値で更新する。また、入力中間値算出ステップとシミュレートステップと比較値更新ステップとは、所定の条件が満たされるまで繰り返され、基準値設定ステップは、所定の条件が満たされたときにおける入力中間値を基準値として設定する。
【００１５】
第１０の発明は、第９の発明において、所定の条件とは、第１の比較値と第２の比較値とが一致したとき、および、入力値取得ステップによって入力値が取得されたときのいずれかのときである。
【００１６】
第１１の発明は、第８の発明において、基準値設定ステップは、入力値範囲で所定間隔ごとの各値に所定の変換を行うことにより得られる各ゲームパラメータ値で所定のゲーム処理を行った結果である結果値をそれぞれ算出するシミュレートステップを含む。また、シミュレートステップによって算出された結果値のうちゲーム内容に応じた最良の結果となるような結果値が算出されたゲームパラメータ値へと所定の変換がされた入力値範囲の値を基準値として設定する。
【００１７】
第１２の発明は、第８の発明において、所定のゲーム処理とは、仮想ゲーム空間内の移動オブジェクトを飛ばす処理である。
【００１８】
第１３の発明は、第１２の発明において、ゲーム内容に応じた最良の結果となるような所定の値とは、移動オブジェクトの飛んだ位置または飛ぶ軌道を示すための値である。
【００１９】
第１４の発明は、入力装置自体の動きに応じて変化する入力値に基づいたゲーム処理を行うゲーム装置（３）であって、基準値設定部（３０）と、特定範囲設定部（３０）と、入力値取得部（３０）と、変換部（３０）と、処理部（３０）とを備える。基準値設定部は、入力値が取り得る範囲である入力値範囲内の所定値を基準値として設定する。特定範囲設定部は、基準値を含む入力値範囲の一部を特定範囲として設定する。入力値取得部は、入力装置自体の動きに応じて変化する入力値を取得する。変換部は、入力値取得部によって取得した入力値が特定範囲に含まれるとき、当該入力値を基準値と同一の値または当該入力値を当該基準値へ近づけた値であるゲームパラメータ値へ変換する。
処理部は、ゲームパラメータ値を用いたゲーム処理を行う。
【発明の効果】
【００２０】
上記第１の発明によれば、コントローラ７を振る強さの調整等のような、プレイヤが目標とする入力値の入力が行いにくいデバイス等を用いた入力操作の際に、実際の入力値の内容に関わらず、プレイヤの目標とした入力に基づいた処理をゲーム内に反映させることができる。その結果、思い通りの入力ができないことによりプレイヤにストレスを与えることを防ぐことができ、快適なゲームプレイを提供することができる。
【００２１】
上記第２の発明によれば、変換範囲外についても、入力値が補正されてゲームパラメータとして用いられる。そのため、入力操作にかかる難易度を全体的に下げることができ、プレイヤが快適にゲームを楽しめることを可能とする。
【００２２】
上記第３の発明によれば、変換範囲の境界において、特定範囲内外のゲームパラメータ値は連続性を持った値へ変換することができる。そのため、変換範囲の境界前後の入力値に応じて処理されるゲーム処理に関して、不連続な値であるが故に処理内容が大きく変わってしまうことによる違和感をプレイヤに与えることを防ぐことができる。
【００２３】
上記第４の発明によれば、基準点を中心に変換範囲を設定するため、プレイヤの入力動作と変換される結果（ゲームパラメータ）のバランスが良くなり、違和感のない操作感覚をプレイヤに提供できる。
【００２４】
上記第５の発明によれば、変換範囲内では、ゲームパラメータ値が連続的になるよう変換する。そのため、ゲームの難易度を下げながら、入力操作と当該操作が反映されるゲーム内の反映結果との関係について、より違和感のない操作感覚を提供できる。
【００２５】
上記第６の発明によれば、変換範囲外についてもゲームパラメータ値が連続的になるよう変換するため、入力操作と当該操作が反映されるゲーム内の反映結果との関係についてより違和感のない操作感覚を提供できる。
【００２６】
上記第７の発明によれば、変換範囲外について、入力値が曲線補間を用いて補正された値をゲームパラメータとして用いる。そのため、入力操作にかかる難易度を全体的に下げることができ、プレイヤが快適にゲームを楽しめることを可能とする。
【００２７】
上記第８の発明によれば、例えばゴルフゲームにおけるベストショットのような、ゲーム内容に応じた最良の結果が出せる値を基準値とする。そのため、ゲームの難易度を下げ、更にゲームの爽快感を増すこともでき、ゲームの興趣を高めることが可能となる。
【００２８】
上記第９乃至１０の発明によれば、例えばゴルフゲームにおけるベストショットのように、ゲーム内容に応じた最良の結果が出せるゲームパラメータの算出処理について、計算量を減らして処理負荷を軽減することができる。
【００２９】
上記第１１の発明によれば、ゲーム内容に応じた最良の結果が出せるゲームパラメータをより正確に算出することが可能となる。
【００３０】
上記第１２乃至第１３の発明によれば、ゴルフゲームやテニスゲームのような、球を飛ばして楽しむゲームの難易度を下げることができ、プレイヤに快適にゲームを楽しませることができる。
【００３１】
また、本発明のゲーム装置によれば、上述した本発明のゲームプログラムと同様の効果を得ることができる。
【発明を実施するための最良の形態】
【００３２】
以下、本発明の実施の形態について、図面を参照して説明する。尚、この実施例により本発明が限定されるものではない。
【００３３】
図１を参照して、本発明の一実施形態に係るゲーム装置について説明する。以下、説明を具体的にするために、当該ゲーム装置を用いたゲームシステム１を一例として説明する。なお、図１は、当該ゲームシステム１を説明するための外観図である。以下、据置型ゲーム装置を一例にして、当該ゲームシステム１について説明する。
【００３４】
図１において、当該ゲームシステム１は、家庭用テレビジョン受像機等のスピーカ２ａを備えたディスプレイ（以下、モニタと記載する）２に、接続コードを介して接続される据置型ゲーム装置（以下、単にゲーム装置と記載する）３および当該ゲーム装置３に操作情報を与えるコントローラ７によって構成される。ゲーム装置３は、接続端子を介して受信ユニット６が接続される。受信ユニット６は、コントローラ７から無線送信される送信データを受信し、コントローラ７とゲーム装置３とは無線通信によって接続される。また、ゲーム装置３には、当該ゲーム装置３に対して交換可能に用いられる情報記憶媒体の一例の光ディスク４が脱着される。ゲーム装置３の上部主面には、当該ゲーム装置３の電源ＯＮ／ＯＦＦスイッチ、ゲーム処理のリセットスイッチ、およびゲーム装置３上部の蓋を開くＯＰＥＮスイッチが設けられている。ここで、プレイヤがＯＰＥＮスイッチを押下することによって上記蓋が開き、光ディスク４の脱着が可能となる。
【００３５】
また、ゲーム装置３には、セーブデータ等を固定的に記憶するバックアップメモリ等を搭載する外部メモリカード５が必要に応じて着脱自在に装着される。ゲーム装置３は、光ディスク４に記憶されたゲームプログラムなどを実行することによって、その結果をゲーム画像としてモニタ２に表示する。さらに、ゲーム装置３は、外部メモリカード５に記憶されたセーブデータを用いて、過去に実行されたゲーム状態を再現して、ゲーム画像をモニタ２に表示することもできる。そして、ゲーム装置３のプレイヤは、モニタ２に表示されたゲーム画像を見ながら、コントローラ７を操作することによって、ゲーム進行を楽しむことができる。
【００３６】
コントローラ７は、その内部に備える通信部７５（後述）から受信ユニット６が接続されたゲーム装置３へ、例えばＢｌｕｅｔｏｏｔｈ（ブルートゥース；登録商標）の技術を用いて送信データを無線送信する。コントローラ７は、主にモニタ２に表示されるゲーム空間に登場するプレイヤオブジェクトを操作するための操作手段である。コントローラ７は、複数の操作ボタン、キー、およびスティック等の操作部が設けられている。また、後述により明らかとなるが、コントローラ７は、当該コントローラ７から見た画像を撮像する撮像情報演算部７４を備えている。また、撮像情報演算部７４の撮像対象の一例として、モニタ２の表示画面近傍に２つのＬＥＤモジュール（以下、マーカと記載する）８Ｌおよび８Ｒが設置される。マーカ８Ｌおよび８Ｒは、コントローラ７の位置を示すためのものである。これらマーカ８Ｌおよび８Ｒは、それぞれモニタ２の前方に向かって赤外光を出力する。
【００３７】
次に、図２を参照して、ゲーム装置３の構成について説明する。なお、図２は、ゲーム装置３の機能ブロック図である。
【００３８】
図２において、ゲーム装置３は、各種プログラムを実行する例えばリスク（ＲＩＳＣ）ＣＰＵ（セントラルプロセッシングユニット）３０を備える。ＣＰＵ３０は、図示しないブートＲＯＭに記憶された起動プログラムを実行し、メインメモリ３３等のメモリの初期化等を行った後、光ディスク４に記憶されているゲームプログラムの実行し、そのゲームプログラムに応じたゲーム処理等を行うものである。ＣＰＵ３０には、メモリコントローラ３１を介して、ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）３２、メインメモリ３３、ＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）３４、およびＡＲＡＭ（Ａｕｄｉｏ  ＲＡＭ）３５が接続される。また、メモリコントローラ３１には、所定のバスを介して、コントローラＩ／Ｆ（インターフェース）３６、ビデオＩ／Ｆ３７、外部メモリＩ／Ｆ３８、オーディオＩ／Ｆ３９、およびディスクＩ／Ｆ４１が接続され、それぞれ受信ユニット６、モニタ２、外部メモリカード５、スピーカ２ａ、およびディスクドライブ４０が接続されている。
【００３９】
ＧＰＵ３２は、ＣＰＵ３０の命令に基づいて画像処理を行うものあり、例えば、３Ｄグラフィックスの表示に必要な計算処理を行う半導体チップで構成される。ＧＰＵ３２は、図示しない画像処理専用のメモリやメインメモリ３３の一部の記憶領域を用いて画像処理を行う。ＧＰＵ３２は、これらを用いてモニタ２に表示すべきゲーム画像データやムービ映像を生成し、適宜メモリコントローラ３１およびビデオＩ／Ｆ３７を介してモニタ２に出力する。
【００４０】
メインメモリ３３は、ＣＰＵ３０で使用される記憶領域であって、ＣＰＵ３０の処理に必要なゲームプログラム等を適宜記憶する。例えば、メインメモリ３３は、ＣＰＵ３０によって光ディスク４から読み出されたゲームプログラムや各種データ等を記憶する。このメインメモリ３３に記憶されたゲームプログラムや各種データ等がＣＰＵ３０によって実行される。
【００４１】
ＤＳＰ３４は、ゲームプログラム実行時にＣＰＵ３０において生成されるサウンドデータ等を処理するものであり、そのサウンドデータ等を記憶するためのＡＲＡＭ３５が接続される。ＡＲＡＭ３５は、ＤＳＰ３４が所定の処理（例えば、先読みしておいたゲームプログラムやサウンドデータの記憶）を行う際に用いられる。ＤＳＰ３４は、ＡＲＡＭ３５に記憶されたサウンドデータを読み出し、メモリコントローラ３１およびオーディオＩ／Ｆ３９を介してモニタ２に備えるスピーカ２ａに出力させる。
【００４２】
メモリコントローラ３１は、データ転送を統括的に制御するものであり、上述した各種Ｉ／Ｆが接続される。コントローラＩ／Ｆ３６は、例えば４つのコントローラＩ／Ｆ３６ａ〜３６ｄで構成され、それらが有するコネクタを介して嵌合可能な外部機器とゲーム装置３とを通信可能に接続する。例えば、受信ユニット６は、上記コネクタと嵌合し、コントローラＩ／Ｆ３６を介してゲーム装置３と接続される。上述したように受信ユニット６は、コントローラ７からの送信データを受信し、コントローラＩ／Ｆ３６を介して当該送信データをＣＰＵ３０へ出力する。ビデオＩ／Ｆ３７には、モニタ２が接続される。外部メモリＩ／Ｆ３８には、外部メモリカード５が接続され、その外部メモリカード５に設けられたバックアップメモリ等とアクセス可能となる。オーディオＩ／Ｆ３９にはモニタ２に内蔵されるスピーカ２ａが接続され、ＤＳＰ３４がＡＲＡＭ３５から読み出したサウンドデータやディスクドライブ４０から直接出力されるサウンドデータをスピーカ２ａから出力可能に接続される。ディスクＩ／Ｆ４１には、ディスクドライブ４０が接続される。ディスクドライブ４０は、所定の読み出し位置に配置された光ディスク４に記憶されたデータを読み出し、ゲーム装置３のバスやオーディオＩ／Ｆ３９に出力する。
【００４３】
図３および図４を参照して、本発明の入力装置の一例であるコントローラ７について説明する。なお、図３は、コントローラ７の上面後方から見た斜視図である。図４は、コントローラ７を下面後方から見た斜視図である。
【００４４】
図３および図４において、コントローラ７は、例えばプラスチック成型によって形成されたハウジング７１を有しており、当該ハウジング７１に複数の操作部７２が設けられている。ハウジング７１は、その前後方向を長手方向とした略直方体形状を有しており、全体として大人や子供の片手で把持可能な大きさである。
【００４５】
ハウジング７１上面の中央前面側に、十字キー７２ａが設けられる。この十字キー７２ａは、十字型の４方向プッシュスイッチであり、矢印で示す４つの方向（前後左右）に対応する操作部分が十字の突出片にそれぞれ９０°間隔で配置される。プレイヤが十字キー７２ａのいずれかの操作部分を押下することによって前後左右いずれかの方向を選択される。例えばプレイヤが十字キー７２ａを操作することによって、仮想ゲーム世界に登場するプレイヤキャラクタ等の移動方向を指示したり、カーソルの移動方向を指示したりすることができる。
【００４６】
なお、十字キー７２ａは、上述したプレイヤの方向入力操作に応じて操作信号を出力する操作部であるが、他の態様の操作部でもかまわない。例えば、リング状に４方向の操作部分を備えたプッシュスイッチとその中央に設けられたセンタスイッチとを複合した複合スイッチを上記十字キー７２ａの代わりに設けてもかまわない。また、ハウジング７１上面から突出した傾倒可能なスティックを倒すことによって、傾倒方向に応じて操作信号を出力する操作部を上記十字キー７２ａの代わりに設けてもかまわない。さらに、水平移動可能な円盤状部材をスライドさせることによって、当該スライド方向に応じた操作信号を出力する操作部を、上記十字キー７２ａの代わりに設けてもかまわない。また、タッチパッドを、上記十字キー７２ａの代わりに設けてもかまわない。また、少なくとも４つの方向（前後左右）をそれぞれ示すスイッチに対して、プレイヤによって押下されたスイッチに応じて操作信号を出力する操作部を上記十字キー７２ａの代わりに設けてもかまわない。
【００４７】
ハウジング７１上面の十字キー７２ａより後面側に、複数の操作ボタン７２ｂ〜７２ｇが設けられる。操作ボタン７２ｂ〜７２ｇは、プレイヤがボタン頭部を押下することによって、それぞれの操作ボタン７２ｂ〜７２ｇに割り当てられた操作信号を出力する操作部である。例えば、操作ボタン７２ｂ〜７２ｄには、Ｘボタン、Ｙボタン、およびＢボタン等としての機能が割り当てられる。また、操作ボタン７２ｅ〜７２ｇには、セレクトスイッチ、メニュースイッチ、およびスタートスイッチ等としての機能が割り当てられる。これら操作ボタン７２ｂ〜７２ｇは、ゲーム装置３が実行するゲームプログラムに応じてそれぞれの機能が割り当てられるが、本発明の説明とは直接関連しないため詳細な説明を省略する。なお、図３に示した配置例では、操作ボタン７２ｂ〜７２ｄは、ハウジング７１上面の中央前後方向に沿って並設されている。また、操作ボタン７２ｅ〜７２ｇは、ハウジング７１上面の左右方向に沿って操作ボタン７２ｂおよび７２ｄの間に並設されている。そして、操作ボタン７２ｆは、その上面がハウジング７１の上面に埋没しており、プレイヤが不意に誤って押下することのないタイプのボタンである。
【００４８】
また、ハウジング７１上面の十字キー７２ａより前面側に、操作ボタン７２ｈが設けられる。操作ボタン７２ｈは、遠隔からゲーム装置３本体の電源をオン／オフする電源スイッチである。この操作ボタン７２ｈも、その上面がハウジング７１の上面に埋没しており、プレイヤが不意に誤って押下することのないタイプのボタンである。
【００４９】
また、ハウジング７１上面の操作ボタン７２ｃより後面側に、複数のＬＥＤ７０２が設けられる。ここで、コントローラ７は、他のコントローラ７と区別するためにコントローラ種別（番号）が設けられている。例えば、ＬＥＤ７０２は、コントローラ７に現在設定されている上記コントローラ種別をプレイヤに通知するために用いられる。具体的には、コントローラ７から受信ユニット６へ送信データを送信する際、上記コントローラ種別に応じて複数のＬＥＤ７０２のうち、種別に対応するＬＥＤが点灯する。
【００５０】
一方、ハウジング７１下面には、凹部が形成されている。後述で明らかとなるが、ハウジング７１下面の凹部は、プレイヤがコントローラ７を把持したときに当該プレイヤの人差し指や中指が位置するような位置に形成される。そして、上記凹部の後面側傾斜面には、操作ボタン７２ｉが設けられる。操作ボタン７２ｉは、例えばＡボタンとして機能する操作部であり、シューティングゲームにおけるトリガスイッチや、プレイヤオブジェクトを所定オブジェクトに対して注目させる操作等に用いられる。
【００５１】
また、ハウジング７１前面には、撮像情報演算部７４の一部を構成する撮像素子７４３が設けられる。ここで、撮像情報演算部７４は、コントローラ７が撮像した画像データを解析してその中で輝度が高い場所を判別してその場所の重心位置やサイズなどを検出するためのシステムであり、例えば、最大２００フレーム／秒程度のサンプリング周期であるため比較的高速なコントローラ７の動きでも追跡して解析することができる。また、ハウジング７０の後面には、コネクタ７３が設けられている。コネクタ７３は、例えば３２ピンのエッジコネクタであり、例えば接続ケーブルと嵌合して接続するために利用される。
【００５２】
ここで、説明を具体的にするために、コントローラ７に対して設定する座標系について定義する。図３および図４に示すように、互いに直交するＸＹＺ軸をコントローラ７に対して定義する。具体的には、コントローラ７の前後方向となるハウジング７１の長手方向をＺ軸とし、コントローラ７の前面（撮像情報演算部７４が設けられている面）方向をＺ軸正方向とする。また、コントローラ７の上下方向をＹ軸とし、ハウジング７１の上面（十字キー７２ａ等が設けられた面）方向をＹ軸正方向とする。さらに、コントローラ７の左右方向をＸ軸とし、ハウジング７１の左側面（図３では表されずに図４で表されている側面）方向をＸ軸正方向とする。
【００５３】
次に、図５を参照して、コントローラ７の内部構造について説明する。なお、図５（ａ）は、コントローラ７の上筐体（ハウジング７１の一部）を外した状態を示す斜視図である。図５（ｂ）は、コントローラ７の下筐体（ハウジング７１の一部）を外した状態を示す斜視図である。ここで、図５（ｂ）に示す基板７００は、図５（ａ）に示す基板７００の裏面から見た斜視図となっている。
【００５４】
図５（ａ）において、ハウジング７１の内部には基板７００が固設されており、当該基板７００の上主面上に操作ボタン７２ａ〜７２ｈ、加速度センサ７０１、ＬＥＤ７０２、水晶振動子７０３、無線モジュール７５３、およびアンテナ７５４等が設けられる。そして、これらは、基板７００等に形成された配線（図示せず）によってマイコン７５１（図６参照）に接続される。加速度センサ７０１は、コントローラ７が配置された３次元空間における傾きや振動等の算出に用いることができる加速度を検出して出力する。
【００５５】
より詳細には、図６に示すように、コントローラ７は３軸の加速度センサ７０１を備えていることが好ましい。この３軸の加速度センサ７０１は、３方向、すなわち、上下方向（図３に示すＹ軸）、左右方向（図３に示すＸ軸）、および前後方向（図３に示すＺ軸）で直線加速度を検知する。また、他の実施形態においては、ゲーム処理に用いる制御信号の種類によっては、Ｘ軸とＹ軸（または他の対になった軸）のそれぞれに沿った直線加速度のみを検知する２軸の加速度検出手段を使用してもよい。例えば、この３軸または２軸の加速度センサ７０１は、アナログ・デバイセズ株式会社（Ａｎａｌｏｇ  Ｄｅｖｉｃｅｓ，  Ｉｎｃ．）またはＳＴマイクロエレクトロニクス社（ＳＴＭｉｃｒｏｅｌｅｃｔｒｏｎｉｃｓ  Ｎ．Ｖ．）から入手可能であるタイプのものでもよい。加速度センサ７０１は、シリコン微細加工されたＭＥＭＳ（Ｍｉｃｒｏ  Ｅｌｅｃｔｒｏ  Ｍｅｃｈａｎｉｃａｌ  Ｓｙｓｔｅｍｓ：微小電子機械システム）の技術に基づいた静電容量式（静電容量結合式）であることが好ましい。しかしながら、既存の加速度検出手段の技術（例えば、圧電方式や圧電抵抗方式）あるいは将来開発される他の適切な技術を用いて３軸または２軸の加速度センサ７０１が提供されてもよい。
【００５６】
当業者には公知であるように、加速度センサ７０１に用いられるような加速度検出手段は、加速度センサの持つ各軸に対応する直線に沿った加速度（直線加速度）のみを検知することができる。つまり、加速度センサ７０１からの直接の出力は、その２軸または３軸のそれぞれに沿った直線加速度（静的または動的）を示す信号である。このため、加速度センサ７０１は、非直線状（例えば、円弧状）の経路に沿った動き、回転、回転運動、角変位、傾斜、位置、または姿勢等の物理特性を直接検知することはできない。
【００５７】
しかしながら、加速度センサ７０１から出力される加速度の信号に対して追加の処理を行うことによって、コントローラ７に関するさらなる情報を推測または算出（判定）することができることは、当業者であれば本明細書の説明から容易に理解できるであろう。例えば、静的な加速度（重力加速度）が検知されると、加速度センサ７０１からの出力を用いて、傾斜角度と検知された加速度とを用いた演算によって重力ベクトルに対する対象（コントローラ７）の傾きを判定することができる。このように、加速度センサ７０１をマイコン７５１（または他のプロセッサ）と組み合わせて用いることによって、コントローラ７の傾き、姿勢または位置を判定することができる。同様に、加速度センサ７０１を備えるコントローラ７が例えば後述するようにユーザの手で動的に加速されて動かされる場合に、加速度センサ７０１によって生成される加速度信号を処理することによって、コントローラ７のさまざまな動きおよび／または位置を算出することができる。他の実施例では、加速度センサ７０１は、信号をマイコン４２に出力する前に内蔵の加速度検出手段から出力される加速度信号に対して所望の処理を行うための、組込み式の信号処理装置または他の種類の専用の処理装置を備えていてもよい。例えば、組込み式または専用の処理装置は、加速度センサが静的な加速度（例えば、重力加速度）を検出するためのものである場合、検知された加速度信号をそれに相当する傾斜角（あるいは、他の好ましいパラメータ）に変換するものであってもよい。
【００５８】
また、無線モジュール７５３およびアンテナ７５４を有する通信部７５によって、コントローラ７がワイヤレスコントローラとして機能する。なお、水晶振動子７０３は、後述するマイコン７５１の基本クロックを生成する。
【００５９】
一方、図５（ｂ）において、基板７００の下主面上の前端縁に撮像情報演算部７４が設けられる。撮像情報演算部７４は、コントローラ７の前方から順に赤外線フィルタ７４１、レンズ７４２、撮像素子７４３、および画像処理回路７４４によって構成されており、それぞれ基板７００の下主面に取り付けられる。また、基板７００の下主面上の後端縁にコネクタ７３が取り付けられる。そして、操作ボタン７２ｉが撮像情報演算部７４の後方の基板７００の下主面上に取り付けられていて、それよりさらに後方に、電池７０５が収容される。電池７０５とコネクタ７３との間の基板７００の下主面上には、バイブレータ７０４が取り付けられる。このバイブレータ７０４は、例えば振動モータやソレノイドであってよい。バイブレータ７０４が作動することによってコントローラ７に振動が発生するので、それを把持しているプレイヤの手にその振動が伝達され、いわゆる振動対応ゲームが実現できる。
【００６０】
次に、図６を参照して、コントローラ７の内部構成について説明する。なお、図６は、コントローラ７の構成を示すブロック図である。
【００６１】
撮像情報演算部７４は、赤外線フィルタ７４１、レンズ７４２、撮像素子７４３、および画像処理回路７４４を含んでいる。赤外線フィルタ７４１は、コントローラ７の前方から入射する光から赤外線のみを通過させる。ここで、モニタ２の表示画面近傍に配置されるマーカ８Ｌおよび８Ｒは、モニタ２の前方に向かって赤外光を出力する赤外ＬＥＤである。したがって、赤外線フィルタ７４１を設けることによってマーカ８Ｌおよび８Ｒの画像をより正確に撮像することができる。レンズ７４２は、赤外線フィルタ７４１を透過した赤外線を集光して撮像素子７４３へ出射する。撮像素子７４３は、例えばＣＭＯＳセンサやあるいはＣＣＤのような固体撮像素子であり、レンズ７４２が集光した赤外線を撮像する。したがって、撮像素子７４３は、赤外線フィルタ７４１を通過した赤外線だけを撮像して画像データを生成する。撮像素子７４３で生成された画像データは、画像処理回路７４４で処理される。具体的には、画像処理回路７４４は、撮像素子７４３から得られた画像データ（マーカ８Ｌおよび８Ｒの撮像画像）を処理して高輝度部分を検知し、それらの位置座標や面積を検出した結果を示す処理結果データを通信部７５へ出力する。なお、これらの撮像情報演算部７４は、コントローラ７のハウジング７１に固設されており、ハウジング７１自体の方向を変えることによってその撮像方向を変更することができる。この撮像情報演算部７４から出力される処理結果データに基づいて、コントローラ７の位置や動きに応じた信号を得ることができ、当該信号に基づいてモニタ２の画面座標系に基づいた入力座標を得ることができる。つまり、コントローラ７は、撮像情報演算部７４から出力される処理結果データによってポインティングデバイスとして機能する。
【００６２】
加速度センサ７０１は、上述したようにコントローラ７の上下方向（Ｙ軸方向）、左右方向（Ｘ軸方向）、および前後方向（Ｚ軸方向）の３軸成分に分けてそれぞれ加速度を検知して出力するセンサである。加速度センサ７０１が検知した３軸成分の加速度を示すデータは、それぞれ通信部７５へ出力される。この加速度センサ７０１から出力される加速度データに基づいて、コントローラ７の動きを判定することができる。なお、加速度センサ７０１は、特定のアプリケーションで必要なデータに応じて何れか２軸に対してそれぞれ加速度を検出する加速度センサが用いられてもかまわない。
【００６３】
通信部７５は、マイクロコンピュータ（Ｍｉｃｒｏ  Ｃｏｍｐｕｔｅｒ：マイコン）７５１、メモリ７５２、無線モジュール７５３、およびアンテナ７５４を含んでいる。マイコン７５１は、処理の際にメモリ７５２を記憶領域として用いながら、送信データを無線送信する無線モジュール７５３を制御する。
【００６４】
コントローラ７に設けられた操作部７２からの操作信号（キーデータ）、加速度センサ７０１からの３軸方向の加速度信号（Ｘ、Ｙ、およびＺ軸方向加速度データ）、および撮像情報演算部７４からの処理結果データは、マイコン７５１に出力される。マイコン７５１は、入力した各データ（キーデータ、Ｘ、Ｙ、およびＺ軸方向加速度データ、処理結果データ）を受信ユニット６へ送信する送信データとして一時的にメモリ７５２に格納する。ここで、通信部７５から受信ユニット６への無線送信は、所定の周期毎に行われるが、ゲームの処理は１／６０秒を単位として行われることが一般的であるので、それよりも短い周期で送信を行うことが必要となる。具体的には、ゲームの処理単位は１６．７ｍｓ（１／６０秒）であり、ブルートゥース（登録商標）で構成される通信部７５の送信間隔は５ｍｓである。マイコン７５１は、受信ユニット６への送信タイミングが到来すると、メモリ７５２に格納されている送信データを一連の操作情報として出力し、無線モジュール７５３へ出力する。そして、無線モジュール７５３は、例えばＢｌｕｅｔｏｏｔｈ（ブルートゥース；登録商標）の技術を用いて、所定周波数の搬送波を用いて操作情報をその電波信号としてアンテナ７５４から放射する。つまり、コントローラ７に設けられた操作部７２からのキーデータ、加速度センサ７０１からのＸ、Ｙ、およびＺ軸方向加速度データ、および撮像情報演算部７４からの処理結果データがコントローラ７から送信される。そして、ゲーム装置３の受信ユニット６でその電波信号を受信し、ゲーム装置３で当該電波信号を復調や復号することによって、一連の操作情報（キーデータ、Ｘ、Ｙ、およびＺ軸方向加速度データ、および処理結果データ）を取得する。そして、ゲーム装置３のＣＰＵ３０は、取得した操作情報とゲームプログラムとに基づいて、ゲーム処理を行う。なお、Ｂｌｕｅｔｏｏｔｈ（登録商標）の技術を用いて通信部７５を構成する場合、通信部７５は、他のデバイスから無線送信された送信データを受信する機能も備えることができる。
【００６５】
次に、図７〜図９を用いて、本実施形態で想定するゲームの概要について説明する。本実施形態で想定するゲームは、ゴルフゲームである。図７は、本実施形態で想定するゲームの画面の一例である。図７において、モニタ２には、ゴルフクラブ１０２を構えたプレイヤオブジェクト１０１と、カップ１０３、ボール１０４が表示されている。そして、プレイヤは、コントローラ７をゴルフクラブに見立てて、振る動作（ショットやパットの動作）を行うと、この動きに連動してプレイヤオブジェクト１０１がゴルフクラブを振る動作が描画される。図８は、ゴルフクラブを振る動作を示す模式図であり、図９は、図８に示した動きに対応する、コントローラ７をゴルフクラブに見立てて振る動作を示す模式図である。
【００６６】
より具体的に説明すると、プレイヤは、クラブの種類を選択し、打つ方向を定めてから、コントローラ７をゴルフクラブのスイングの要領で振る。本実施形態にかかるゲーム装置３は、コントローラ７から得られる加速度データを基にスイング（振り）の強さの値を求める。従来は、このスイングの強さの値（以下、スイングパワーと呼ぶ）をそのままショットパワーとして用いていたが、本実施形態では、後述するような処理によって、当該スイングパワーに補正をかけた値をショットパワーとして用いる。そして、当該ショットパワーと、ゴルフクラブ毎に設定されている初速度やそのときのゲーム内環境（風速など）のパラメータとを掛け合わせることで、ボールの飛距離が決まる。例えば、振りが強すぎると、より遠くまでボールを飛ばせるが、その反面、ボール１０４がカップ１０３を通り過ぎてしまいこともある。また、振りが弱すぎると、カップ１０３までボール１０４が届かないこともある。そのため、現実のゴルフと同様に、プレイヤは、カップまでの距離に応じてコントローラ７を振る強さを調整する必要がある。
【００６７】
ここで、プレイヤのスイングパワーとゲーム内で処理されるショットパワーとの関係について、図１０を用いて説明する。図１０のグラフでは、いずれも、縦軸をショットパワー、横軸をスイングパワーとしている。そして、グラフ（Ａ）は、後述の本実施形態にかかる補正処理を行わない場合の上記関係を示すグラフである（つまり、従来における処理）。グラフ（Ａ）では、スイングパワーをそのままショットパワーとして用いるため、スイングパワー＝ショットパワーという関係になるようなグラフとなっている。そして、ベストショットパワーとなる点を、点１１１とする。このベストショットパワーとは、プレイヤがスイング操作を行うときのクラブの種類と打つ方向とゲーム内環境とから、ボール１０４がカップ１０３に一番近くに止まるショットパワーのことである。これは、一般的に、カップに近い位置にボールを飛ばすことがプレイヤにとって最良の結果となると考えられるためである。つまり、ベストショットパワーとは、そのときのゲーム内容に応じて、プレイヤにとって最良の結果が出る（つまり、プレイヤにとって最も有利なゲーム展開となる）ようなショットパワーである。そして、ベストショットパワーを点１１１とすると、当該ベストショットパワーになるようなスイングパワー（以下、ベストスイングパワーと呼ぶ）は一点（点１１２）だけとなる。
【００６８】
一方、本実施形態では、グラフ（Ｂ）に示すように、スイングパワーのうち、ベストスイングパワーとなる点１１２を中心とした所定の範囲１１３については、全てベストショットパワーになるような関係となる。つまり、プレイヤのスイングパワーが、多少ベストスイングパワーに及ばない、あるいは強すぎるような場合でも、ゲーム内ではベストショットとして扱うような処理が行われる。処理の詳細は後述するが、本実施形態では、まず、プレイヤのスイング操作前に、ベストスイングパワー（上記点１１２）を予め算出する。そして、このベストスイングパワーを中心とした所定の範囲１１３を、変換範囲として設定する。そして、スイングパワーが当該変換範囲内に含まれる値であれば、ベストショットパワー（点１１１）に変換して、当該ベストショットパワーでボールをショットする処理を行う。換言すれば、上記変換範囲内では、スイングパワーをそのままショットパワーに変換した値を使うのではなく、ベストショットパワーに変換した値を使うことになる。
【００６９】
更に、上記変換範囲外のスイングパワーについては、エルミート補間を行った値をショットパワーとして用いる。ここで、エルミート補間について説明する。エルミート補間とは、隣接する２つの値の他、両地点での変化量を考慮して変化速度を加減しながら補間する補間方法である。本実施形態では、上記グラフ（Ｂ）において、上記変換範囲の左側については、まず、変換範囲の左端の点とスイングパワーが０の点とをエルミート補間によって補間する。この補間では、当該左端の点には、右方向に大きさ１のベクトルが係っているものとし、スイングパワーが０の点には、右上４５度の方向で大きさ１のベクトルが係っているものとしている。そして、この補間によってできる曲線上の値をショットパワーとする。また、上記変換範囲の右側については、変換範囲の右端の点とスイングパワーの上限値の点とをエルミート補間した曲線上の値をショットパワーとする。この補間においては、当該右端の点には、右方向に大きさ１のベクトルが係っているものとし、スイングパワーが上限値の点には、右上４５度の方向で大きさ１のベクトルが係っているものとしている。グラフ（Ｃ）は、このようなエルミート補間を行った結果のスイングパワーとショットパワーとの関係を示すグラフである。当該グラフ（Ｃ）では、変換範囲の左端の点１１４とスイングパワーが０の点１１５とがエルミート補間によって結ばれている。また、変換範囲の右端の点１１６とスイングパワーが１の点１１７とがエルミート補間によって結ばれている。そのため、スイングパワーからショットパワーへの変換については、グラフ（Ａ）に比べると、全体的にベストショットパワーに近づいた値に変換されることになる。
【００７０】
このように、本ゲームでは、スイングパワーがベストスイングパワー値の前後にかかる所定範囲内ならば、ベストショットパワー値としてショットを行う処理が行われる。つまり、スイングパワーが、ベストスイングパワー値にある程度近い強さであれば、ベストショットパワーを用いてボールをショットする処理を行う。その結果、プレイヤのスイングの強さが多少ベストパワーに及ばなかったり、強すぎるといった場合でも、カップ１０３の近くにボール１０４を止める（あるいは、カップインする）ことができ、ゲームの難易度を下げて、プレイヤが快適にゲームを楽しめるようにすることができる。更に、所定範囲外であっても、上記のエルミート補間による値をショットパワーとして用いるため、同様にゲームの難易度を下げて、より快適にゲームを楽しめるように調整することが可能となる。
【００７１】
次に、ゲーム装置３によって実行されるゲーム処理の詳細を説明する。まず、ゲーム処理の際にメインメモリ３３に記憶されるプログラムおよびデータについて説明する。図１１は、図２に示したメインメモリ３３のメモリマップを示す図解図である。図１１において、メインメモリ３３は、ゲームプログラム記憶領域３３０よびデータ記憶領域３３５を含む。
【００７２】
ゲームプログラム記憶領域３３０は、ＣＰＵ３０によって実行されるゲームプログラムを記憶し、このゲームプログラムは、ゲームメイン処理プログラム３３１と、ベストパワー算出プログラム３３２と、スイングパワー算出プログラム３３３と、ショット処理プログラム３３４などによって構成される。
【００７３】
ゲームメイン処理プログラム３３１は、本実施形態に係る処理全体を制御するためのプログラムである。
【００７４】
ベストパワー算出プログラム３３２は、カップに一番近い位置にボールを止めることができるスイングパワー、すなわち、上記ベストスイングパワーを算出するためのプログラムである。
【００７５】
スイングパワー算出プログラム３３３は、プレイヤがコントローラ７を振ったときの加速度データをスイングパワーに変換するためのプログラムである。具体的には、−２Ｇ〜＋２Ｇの範囲で得られる加速度データを、０〜１の範囲で示されるスイングパワーに変換するためのプログラムである。
ショット処理プログラム３３４は、ボールをショットするためのプログラムである。スイングパワーを基に得られるショットパワーに基づいて、ボールを飛ばすための処理を行う。
【００７６】
データ記憶領域３３５には、加速度データ３３６、スイングパワー３３７、ショットパワー３３８、クラブ初速度３３９、仮定スイングパワー（大）３４０、仮定スイングパワー（小）３４１、ベストスイングパワー３４２、変換幅３４３、環境データ３４４、画像データ３４５などのデータが記憶されるとともに、ゲーム処理で用いられる各種フラグも記憶される。
【００７７】
加速度データ３３６は、コントローラ７から送信データとして送信されてくる一連の操作情報に含まれる加速度データであり、得られた加速度データを所定フレーム分（例えば、ゲーム処理間隔である１フレーム（１／６０秒）に対して３０フレーム分）格納する。加速度データ３３６には、加速度センサ７０１がＸ、Ｙ、およびＺ軸の３軸成分に分けてそれぞれ検出したＸ軸方向加速度３３６ａ、Ｙ軸方向加速度３３６ｂ、およびＺ軸方向加速度３３６ｃが含まれる。なお、ゲーム装置３に備える受信ユニット６は、コントローラ７から所定間隔例えば５ｍｓごとに送信される操作情報に含まれる加速度データ３３６を受信し、受信ユニット６に備える図示しないバッファに蓄えられる。その後、ゲーム処理間隔である１フレーム毎に読み出されてメインメモリ３３に記憶される。−２Ｇ〜＋２Ｇの範囲の値をとる。
【００７８】
スイングパワー３３７は、加速度データ３３６を上記スイングパワー算出プログラムで変換した値である。この値が、コントローラ７を振った強さを示す値として用いられる。０〜１の範囲の値であり、０．０１刻みで表される。
【００７９】
ショットパワー３３８は、ボールをショットするパワーを示す。後述するような処理でスイングパワーが変換されることで導き出される値である。スイングパワーと同様に、０〜１の範囲の値を取る。上記ショット処理プログラムにおいて、この値に基づいてボールの飛距離が決まることになる。
【００８０】
クラブ初速度３３９は、各ゴルフクラブ毎に対応する形で予め設定されている値であり、上記スイングパワーが最大（１）の場合にボールに与える初速度を示すデータである。ゴルフクラブの種類に応じて、１番ウッド３３９ａ〜パター３３９ｎまでのデータがある。
【００８１】
仮定スイングパワー（大）３４０および仮定スイングパワー（小）３４１は、後述のベストパワー算出処理でベストパワーを求める際に用いられる変数である。また、ベストスイングパワー３４２は、ベストパワー算出プログラム３３２で算出されたベストスイングパワー、つまり、もっともボールがカップに近い位置に飛ばすことのできるスイングパワーを示す。
【００８２】
変換幅３４３は、上述の、スイングパワーをベストショットパワーへと変換するための所定の範囲を示すためのデータである。ゲームの難易度設定に応じて、この幅は変化する。環境データ３４４は、仮想ゲーム空間内の自然環境を示すためのデータである。風速３４４ａや傾斜角３４４ｂ等のデータが含まれている。画像データ３４５は、プレイヤオブジェクト１０１やゴルフコース等の、仮想ゲーム空間内に登場する各種オブジェクトの画像データである。
【００８３】
次に、ゲーム装置３において実行されるゲーム処理の流れを図１２〜図１３を用いて説明する。図１２は、ゲーム装置３において実行されるゲーム処理の流れを示すフローチャートである。ゲーム装置３の電源が投入されると、ゲーム装置３のＣＰＵ３０は、図示しないブートＲＯＭに記憶されている起動プログラムを実行し、メインメモリ３３等の各ユニットが初期化される。そして、光ディスク４に格納されたゲームプログラムがメインメモリ３３に読み込まれ、当該ゲームプログラムの実行が開始される。その結果、ＧＰＵ３２を介してモニタ２にゲーム画像が表示されることによって、ゲームが開始される。この後、図１２に示すフローチャートの処理が実行される。また、本実施形態におけるゲームは上述のようにゴルフゲームであり、当該処理は、ゴルフクラブのショットやパット動作に関する処理であるが、これ以外の当該ゴルフゲームに関する処理（コース選択やショットされたボールの軌道計算等）については、本発明と直接関連しないため、詳細な説明を省略する。
【００８４】
図１２において、まず、ＣＰＵ３０は、初期設定処理を行う（ステップＳ１）。この処理では、ゲームの難易度設定や、プレイヤオブジェクトのパラメータ設定（パワーやテクニック）、風速などの自然環境パラメータの設定、初期クラブの設定、初期方向（ボールを打つ方向）の設定等が行われる。また、仮定スイングパワー（大）３４０等の各種変数やフラグも初期化される。
【００８５】
次に、ＣＰＵ３０は、ベストパワー算出処理を行う（ステップＳ２）。本処理は、現在の状態（クラブの種類や方向、風速等）でボールをショットすると仮定したときに、ボールがカップの一番近くに止まるようなショットパワーに対応するスイングパワー（換言すれば、ボールがカップの一番近くに止まるようなショットパワーへと変換されるスイングパワー）、すなわちベストスイングパワーを算出するための処理である。この処理では、スイングパワー＝ショットパワーとして、ボールの飛んだ位置を算出する。つまり、上記図１０（Ａ）に示したグラフに基づいてボールの飛んだ位置を算出する。算出の方法としては、本処理では、スイングパワーの上限値と下限値とを比較して、２点のうち、よりカップの近くまで飛ばせる値を求める。そして、この値と上記２点の中点とを次の比較対象にして、その比較処理を繰り返していき、ベストスイングパワーになる値を絞り込んでいく処理が行われる。
【００８６】
図１３は、上記ステップＳ２で示したベストパワー算出処理の詳細を示すフローチャートである。図１３において、まず、ＣＰＵ３０は、プレイヤがクラブの種類を変更したかどうか（クラブの変更操作の有無）を判定する（ステップＳ２１）。当該判定の結果、クラブの変更があったときは（ステップ２１でＹＥＳ）、ＣＰＵ３０は、クラブに関する各種設定値を、変更されたクラブのものに変更する（ステップＳ２２）。具体的には、変更されたクラブに設定されているクラブ初速度３３９等をメモリから読み出す。更に、ＣＰＵ３０は、仮定スイングパワー（大）３４０および仮定スイングパワー（小）３４１を初期化する（ステップＳ２３）。具体的には、仮定スイングパワー（大）３４０に「１」を設定し、仮定スイングパワー（小）に「０」を設定する。そして、ステップＳ２４の処理に進む。一方、クラブの変更がなければ（ステップＳ２１でＮＯ）、上記ステップＳ２２、Ｓ２３の処理は行わずに、そのままステップＳ２４の処理に進む。
【００８７】
次に、ＣＰＵ３０は、ショットする方向に変更があったかどうか（ショット方向の変更操作の有無）を判定する（ステップＳ２４）。その結果、方向が変更されていれば（ステップＳ２４でＹＥＳ）、それに応じて方向設定を変更する（ステップＳ２５）。更に、上記ステップＳ２３同様に、仮定スイングパワー（大）３４０および仮定スイングパワー（小）３４１を初期化する（ステップＳ２６）。そして、ステップＳ２７の処理に進む。一方、クラブの変更がなければ（ステップＳ２４でＮＯ）、上記ステップＳ２５、Ｓ２６の処理は行わずに、そのままステップＳ２７の処理に進む。
【００８８】
次に、ＣＰＵ３０は、現在の環境（クラブの種類や打つ方向、風速等）で、仮定スイングパワー（大）３４０の値をスイングパワーとしてボールをショットしたと仮定した場合の、ボールの飛んだ位置を算出する（上述のように、ここでは、上記図１０（Ａ）のグラフに示した関係を基に算出される）。更に、当該飛んだ位置からカップまでの距離を算出する（ステップＳ２７）。
【００８９】
続いて、ＣＰＵ３０は、今度は、現在の環境（クラブの種類や打つ方向、風速等）で、仮定スイングパワー（小）３４１の値をスイングパワーとしてボールをショットしたと仮定した場合の、ボールの飛んだ位置を算出する。更に、当該飛んだ位置からカップまでの距離を算出する（ステップＳ２８）。つまり、例えばクラブ変更後の１度目の処理を考えると、力一杯ボールを打ったとき（スイングパワー＝１）のボールの飛んだ位置と現在のボールの位置（スイングパワー＝０）とのそれぞれについて、カップまでの距離を算出するわけである。
【００９０】
次に、ＣＰＵ３０は、仮定スイングパワー（大）３４０と仮定スイングパワー（小）３４１との中間値を算出し、ベストスイングパワー３４２とする（ステップＳ２９）。
【００９１】
続いて、ＣＰＵ３０は、上記ステップＳ２７とＳ２８で算出された距離を比較し、仮定スイングパワー（大）３４０で打ったほうがカップに近い位置にボールを飛ばせるのか否かを判定する（ステップＳ３０）。これは、上述したように、カップに近い位置にボールを飛ばすことがプレイヤにとって最良の結果となると考えられるためである。当該判定の結果、仮定スイングパワー（大）３４０で打ったほうがカップに近い位置にボールを飛ばせるのであれば（ステップＳ３１でＹＥＳ）、ベストスイングパワー３４２の値を仮定スイングパワー（小）３４１に代入する（ステップＳ３１）。逆に、仮定スイングパワー（小）３４１で打ったほうがカップに近い位置にボールを飛ばせるのであれば（ステップＳ３１でＮＯ）、ベストスイングパワー３４２の値を仮定スイングパワー（大）３４０に代入する（ステップＳ３２）。以上で、ベストパワー算出処理が終了する。上述のように、本処理は１フレーム毎に繰り返されるため、例えば、クラブ変更後の１度目の処理では、スイングパワーが１のときと０のときで、どちらがカップに近いかが比較される。スイングパワーが１のときのほうが、よりカップに近い位置に打てる場合は、次のフレームにおける処理では、スイングパワーが１のときと０．５のときとで、カップまでの距離が比較される。このような処理が繰り返されることで、ベストスイングパワーとなる値が絞り込まれていくことになる。なお、当該ベストパワー算出処理は、後述のスイング動作が開始されるまで繰り返し行われるが、この繰り返しの過程で上記仮定スイングパワー（大）３４０と仮定スイングパワー（小）３４１とが同じ値になれば、その時点で当該ベストパワー算出処理は行わないようにしてもよい。仮定スイングパワー（大）３４０と仮定スイングパワー（小）３４１とが同じ値になったということは、ベストスイングパワーが算出できたと考えられるからである。
【００９２】
図１２に戻り、ステップＳ２のベストパワー算出処理の次に、ＣＰＵ３０は、プレイヤのスイング動作が開始されたかどうかを判定する（ステップＳ３）。これは、例えばＸ軸方向の加速度データの変化などから判定する。その結果、スイング動作が開始していないときは（ステップＳ３でＮＯ）、ステップＳ２の処理に戻る。つまり、スイング動作が開始されるまでは、上記ベストパワー算出処理が繰り返されることになる。一方、スイング動作が開始したときは（ステップＳ３でＹＥＳ）、ステップＳ４に処理を進める。
【００９３】
次に、ＣＰＵ３０は、スイングパワーの値のうち、ベストスイングパワーの値を中心とした所定の範囲、すなわち変換範囲を決定する（ステップＳ４）。当該変換範囲は、ゲームの難易度設定によって変化する。例えば、ゲームの難易度設定で「易しい」という設定を選んでいたときは、変換幅３４３に−０．３〜＋０．３という設定がされる。そして、ＣＰＵ３０は、変換幅３４３からこの設定を読み出し、当該変換範囲を、ベストスイングパワーの値を中心とした−０．３〜＋０．３の範囲に設定する。また、例えば、ゲームの難易度設定で「普通」という設定を選んでいたときは、変換幅３４３には−０．０５〜＋０．０５という範囲が設定される。そしてＣＰＵ３０は、同様にこの設定を読み出して、当該変換範囲を、ベストスイングパワーの値を中心とした−０．０５〜＋０．０５の範囲に設定する。図１４は、当該難易度設定に応じた変換範囲の一例を示すための図である。図１４（Ａ）に示すグラフは、難易度設定「普通」の場合のグラフであり、（Ｂ）に示すグラフは、難易度設定「易しい」の場合のグラフである。グラフ（Ａ）に比べ、グラフ（Ｂ）のほうが、ベストショットとなる範囲が広いため、ベストショットを出しやすくなっている。
【００９４】
図１２に戻り、次に、ＣＰＵ３０は、コントローラ７から加速度データ３３６を取得する（ステップＳ５）。続いて、当該加速度データを基にスイングパワーを算出する（ステップＳ６）。これは、例えば、所定の範囲内において単位時間あたりの加速度データ３３６の値を見て、一番大きな変化をしているときの値を所定の数式を用いてスイングパワーに変換するような処理が行われる。例えば、過去３０フレームの間の加速度を見て、２０〜２１フレームの加速度の変化が一番激しければ、当該フレームにおける加速度データ（−２Ｇ〜＋２Ｇの範囲）を採用してスイングパワー（０〜１の範囲）の値に変換する。もちろん、スイングパワーへ変換する基となる加速度データの取得方法はこれに限るものではない。単純に所定範囲内における加速度データのうちの最大値を用いてもよい。例えば、過去３０フレームの間の加速度データの中から最大の値である加速度データをスイングパワーに変換してもよい。
【００９５】
次に、ＣＰＵ３０は、算出したスイングパワーが、上記変換範囲内に含まれているかどうかを判定する（ステップＳ７）。その結果、変換範囲内に含まれていれば（ステップＳ７でＹＥＳ）、上記ベストスイングパワー３４２の値をショットパワー３３８として設定する（ステップＳ８）。つまり、スイングパワーが変換範囲内に含まれていれば、無条件にベストスイングパワーでコントローラ７が振られたとする。一方、変換範囲内に含まれていないときは、上記スイングパワーを上述したようなエルミート補間することで得られる値（図１０のグラフ（Ｃ）参照）をショットパワー３３８として設定する（ステップＳ９）。
【００９６】
次に、ＣＰＵ３０は、ショットパワー３３８に設定された値に基づいて、ボールをショットする処理を行う（ステップＳ１０）。より具体的には、ショットパワー３３８の値と、そのとき選択しているクラブのクラブ初速度３３９と、ボールを打つ方向と、風速などの環境パラメータとに基づいて、ボールの弾道や飛距離等を算出し、ボールが飛んでいく様子を画面に表示するための処理が行われる。その結果、上記スイングパワーが変換範囲内に含まれていれば、無条件にベストショットを打つことができることになる。以上で、本実施形態にかかるゲーム処理は終了する。
【００９７】
このように、本実施形態では、スイングパワーが所定の範囲内の値であるときは、ベストショットとなるような値に変換している。これにより、コントローラ７を振る強さの調整等のような、プレイヤの意図した入力が行いにくいデバイス等を用いた入力操作の際に、実際の入力値の内容に関わらず、プレイヤの意図した入力をゲーム内に反映させることができる。その結果、思い通りの入力ができないことによりプレイヤにストレスを与えることを防ぐことができ、快適なゲームプレイを提供することができる。また、ゴルフゲームやテニスゲーム等の、ボールを打つタイプのスポーツゲームであれば、ベストショットを出しやすくなり、ゲームの難易度を下げることが可能となる。また、例えば、コントローラ７を剣に見立て、これを振って遊ぶタイプのゲーム（剣劇ゲーム）であれば、当該変換範囲内にクリティカルヒットや必殺技の発動を関連づけることで、よりゲームの爽快感を増して、ゲームの興趣を高めることも可能となる。つまり、コントローラ７自体を動かして楽しむタイプのゲーム全般について、コントローラを動かす一連の動作から得られるパラメータの中から、ゲームの内容に応じた最良の結果が出せるようなパラメータを入力しやすくすることができ、ゲームの興趣を高めることが可能となる。
【００９８】
なお、上述したベストパワー算出処理においては、スイングパワーの上限値・下限値と、この２点の中点値とを利用した比較アルゴリズムを用いていた。ベストスイングパワーの算出については、これに限らずに、例えば、スイングパワーとして取り得る値について、総当たりの要領で、カップと最も近くなるスイングパワーを調べるようにしてもよい。計算量は多くなるが、より正確にベストスイングパワーの値を算出することが可能となる。
【００９９】
また、上記ベストショットパワーについて、上述の実施形態では、ボール１０４がカップ１０３の一番近くに止まるよう箇所を基準としていた。これに限らず、ベストショットとなる箇所については、プレイヤが指定した箇所にしてもよい。そして、当該プレイヤが指定した箇所を基準としてベストショットパワーを決めてもよい。
【０１００】
また、上述した本実施形態におけるゲームはゴルフゲームであるため、カップに近い位置にボールを飛ばすことのできるパワーを上記ベストショットパワーとしていた。これが、他のゲーム、例えば、野球ゲームの場合であれば、ホームランとなるようなパワーがプレイヤにとって最良の結果となる値と考えられるため、これをベストショットパワーとしてもよい。また、テニスゲームの場合であれば、例えば、相手コート内で、かつ相手プレイヤから最も遠い位置にボールを打てるようなパワーをベストショットパワーとしてもよい。一般的にはこのような位置にボールを打つことが、相手プレイヤが最もボールを打ち返しにくいと考えられるからである。このように、ゲーム内容やゲームの展開に応じて、プレイヤにとって最も有利なゲーム展開となるような値（最良となるような値）をベストショットパワーとすればよい。
【０１０１】
また、上記変換範囲外におけるスイングパワーについては、上述の実施形態ではエルミート補間をかけた値をショットパワーとしていたが、補間をかけなくてもよい。例えば、図１５に示すように、変換範囲外については、従来と同様にスイングパワー＝ショットパワーとなる関係にしてもよい。また、この場合、更に、変換範囲内と変換範囲外とについて、変換後の値（ショットパワー）が連続した値となるようにしてもよい。例えば、図１６で示すように、スイングパワーの変換範囲の境界にかかるショットパワーの値についても連続した値となるような値でショットパワーを算出してもよい。
【０１０２】
また、上記変換範囲内については、一律にベストスイングパワーの値をショットパワーとして設定していたが、これに限らない。例えば、図１７に示すように、変換範囲内においても、本来ベストスイングパワーとなる一点を通る一次関数で表すことのできる値をショットパワーとしてもよい。このとき、当該一次関数については、変換範囲内では変換範囲外に比べてパラメータ変化量が小さくなるような一次関数とすることが好ましい。
【０１０３】
また、変換範囲の幅（変換幅３４３）についても、上述のような難易度設定だけでなく、クラブの種類毎に変化させるようにしてもよい。もちろん、クラブの種類だけに限らず、例えば、ゲーム内において所定のアイテムを使用したときに変換範囲の幅を一時的に広くすることでプレイヤを有利にする、等のような処理を行うようにしてもよい。これにより、ゲームの興趣を更に高めることが可能となる。
【０１０４】
また、上記変換範囲外のスイングパワーについて、上述の実施形態では、変換範囲外の両端をエルミート補間することで得られる値を用いていたが、補間の方法はこれに限らず、スプライン補間等、他の曲線補間方法を用いてもよい。いずれにしろ、コントローラを動かす一連の動作から得られるパラメータの中から、ゲームの内容に応じた最良の結果が出せるようなパラメータを入力しやすくすることができ、ゲームの難易度を下げ、また、ゲームの興趣を高めることが可能となる。
【産業上の利用可能性】
【０１０５】
本発明にかかるゲーム装置およびゲームプログラムは、プレイヤの目標とする入力値が入力しやすくなり、入力装置自体を振って遊ぶゲーム処理を行うゲーム装置およびゲームプログラムに有用である。
【図面の簡単な説明】
【０１０６】
【図１】本発明の一実施形態に係るゲームシステム１を説明するための外観図
【図２】図１のゲーム装置３の機能ブロック図
【図３】図３のコントローラ７の上面後方から見た斜視図
【図４】図３のコントローラ７を下面後方から見た斜視図
【図５】図３のコントローラ７の上筐体を外した状態を示す斜視図
【図６】図３のコントローラ７の構成を示すブロック図
【図７】本実施形態で想定するゲームの画面の一例
【図８】ゴルフクラブを振る動作を示す模式図
【図９】コントローラ７をゴルフクラブに見立てて振る動作を示す模式図
【図１０】スイングパワーとショットパワーとの関係を示すグラフ
【図１１】メインメモリ３３のメモリマップを示す図解図
【図１２】本発明の実施形態に係るゲーム処理の流れを示すフローチャート
【図１３】図１２のステップＳ２で示したベストパワー算出処理の詳細を示したフローチャート
【図１４】難易度設定による変換範囲の違いを示すための図
【図１５】変換範囲外についてエルミート補間を行わない例を示すグラフ
【図１６】変換範囲内と変換範囲外のショットパワーが連続する例を示すグラフ
【図１７】変換範囲内のショットパワーが一次関数となる例を示す図
【符号の説明】
【０１０７】
１…ゲームシステム
２…モニタ
２ａ…スピーカ
３…ゲーム装置
３０…ＣＰＵ
３１…メモリコントローラ
３２…ＧＰＵ
３３…メインメモリ
３４…ＤＳＰ
３５…ＡＲＡＭ
３６…コントローラＩ／Ｆ
３７…ビデオＩ／Ｆ
３８…外部メモリＩ／Ｆ
３９…オーディオＩ／Ｆ
４０…ディスクドライブ
４１…ディスクＩ／Ｆ
４…光ディスク
５…外部メモリカード
６…受信ユニット
７…コントローラ
７１…ハウジング
７２…操作部
７３…コネクタ
７４…撮像情報演算部
７４１…赤外線フィルタ
７４２…レンズ
７４３…撮像素子
７４４…画像処理回路
７５…通信部
７５１…マイコン
７５２…メモリ
７５３…無線モジュール
７５４…アンテナ
７００…基板
７０１…加速度センサ
７０２…ＬＥＤ
７０３…水晶振動子
７０４…バイブレータ
７０５…電池
【図１】
2008000184.tif 000003
【図２】
2008000184.tif 000004
【図３】
2008000184.tif 000005
【図４】
2008000184.tif 000006
【図５】
2008000184.tif 000007
【図６】
2008000184.tif 000008
【図７】
2008000184.tif 000009
【図８】
2008000184.tif 000010
【図９】
2008000184.tif 000011
【図１０】
2008000184.tif 000012
【図１１】
2008000184.tif 000013
【図１２】
2008000184.tif 000014
【図１３】
2008000184.tif 000015
【図１４】
2008000184.tif 000016
【図１５】
2008000184.tif 000017
【図１６】
2008000184.tif 000018
【図１７】
2008000184.tif 000019