ゲームプログラムおよびゲーム装置
【構成】仮想ゲーム空間に存在する地上物オブジェクト200は、仮想ゲーム空間を移動する飛行オブジェクト100の前方を捉える視野でLCDに再現される。飛行オブジェクト100の移動速度を定義する速度パラメータおよび方向パラメータは、プレイヤによるボタン操作に応答して変更される。時間T(T>0)の後に飛行オブジェクト100が到達する地点の高度は、飛行オブジェクト100の移動パラメータに基づいて予測される。予測された地点に存在する地上物オブジェクト200の標高は、マップデータを参照して検出される。検出された地上物オブジェクト200の標高B1と飛行オブジェクト100の高度B2との相違を表す相違情報は、LCDを通してプレイヤに向けて出力される。
【効果】飛行オブジェクトを操作する上での難しさを緩和することができる。
【効果】飛行オブジェクトを操作する上での難しさを緩和することができる。
【発明の詳細な説明】
【技術分野】
【0001】
この発明は、ゲームプログラムまたはゲーム装置に関し、特にたとえば、仮想XYZ空間を形成するXY平面上に存在する1または2以上の第1オブジェクトを仮想XYZ空間を移動する第2オブジェクトの前方を捉える視野で再現する、ゲームプログラムまたはゲーム装置に関する。
【背景技術】
【0002】
飛行機がプレイヤの操作に応じて仮想ゲーム空間内を飛行する、フライトシミュレータと呼ばれるゲームが従来から知られている。このようなゲームの多くは、飛行機がどの程度の高さを飛行しているかを示す飛行高度を画面に表示する。中には、特許文献1または2のように、実際の高度計を模した画像をディスプレイモニタ上に表示してリアリティを高めたゲームもある。
【特許文献1】特開2000−176156号公報
【特許文献2】特開2002−123166号公報
【発明の開示】
【発明が解決しようとする課題】
【0003】
このようなゲームでは、プレイヤは、仮想ゲーム空間に配置された山やビルなどの地上物に飛行機が衝突しないような操作を求められる。しかし、飛行機が地上物からどの程度高い位置を飛行しているかについては、飛行機の高度のみからは容易に把握することができない。このため、画面上に表示される飛行機および地上物を手掛かりとする以外、プレイヤは地上物から飛行機までの距離を推測することができず、これがフライトシミュレータのようなゲームを困難にする原因の1つとなっている。
【0004】
それゆえに、この発明の主たる目的は、操作の困難性を緩和することができる、ゲームプログラムまたはゲーム装置を提供することである。
【課題を解決するための手段】
【0005】
請求項1の発明に従うゲームプログラムは、地上物オブジェクトが配置された仮想ゲーム空間と、仮想ゲーム空間内を移動する移動オブジェクトとを画面に表示するゲーム装置のプロセサに、変更ステップ、予測ステップ、第1検出ステップ、第2検出ステップ、および出力ステップを実行させるためのプログラムである。変更ステップは、移動オブジェクトの移動を定義する移動パラメータをプレイヤの操作に応答して変更するステップである。予測ステップは、時間T(T>0)の後に移動オブジェクトが到達する到達点を移動パラメータに基づいて予測するステップである。第1検出ステップは、現在の移動オブジェクトの高度および予測ステップによって予測された到達点における移動オブジェクトの高度の少なくともいずれか一方を検出するステップである。第2検出ステップは、予測ステップによって予測された到達点における地上物オブジェクトの高さを検出するステップである。出力ステップは、第1検出ステップによって検出された高度と第2検出ステップによって検出された高さとの相違を表す相違情報をプレイヤに向けて出力するステップである。
【0006】
地上物オブジェクト(200:実施例で相当する参照符号。以下同じ)は、仮想ゲーム空間に配置される。移動オブジェクト(100)は、仮想ゲーム空間内を移動する。このような地上物オブジェクトおよび移動オブジェクトが画面に表示される。移動オブジェクトの移動を定義する移動パラメータは、プレイヤの操作に応答して変更ステップ(S19, S25, S29, S35, S49, S51, S53, S55)で変更される。時間T(T>0)の後に移動オブジェクトが到達する到達点は、移動パラメータに基づいて予測ステップ(S81)で予測される。現在の移動オブジェクトの高度および予測ステップによって予測された到達点における移動オブジェクトの高度の少なくともいずれか一方は、第1検出ステップ(S73)で検出される。予測ステップによって予測された到達点における地上物オブジェクトの高さは、第2検出ステップ(S83)で検出される。第1検出ステップによって検出された高度と第2検出ステップによって検出された高さとの相違を表す相違情報は、プレイヤに向けて出力ステップ(S99, S101)で出力される。
【0007】
第2検出ステップで検出される高さは、移動オブジェクトが時間Tの後に到達すると思われる地点における地上物オブジェクトの高さである。この高さと移動オブジェクトの高度との相違を表す相違情報をプレイヤに向けて出力することで、移動オブジェクトを操作する上での難しさを緩和することができる。
【0008】
請求項2の発明に従うゲームプログラムは、請求項1に従属し、出力ステップは第1情報出力ステップおよび第2情報出力ステップを含む。第1情報出力ステップは高さを表す高さ情報を相違情報の一部として出力するステップであり、第2情報出力ステップは高度を表す高度情報を相違情報の他の一部として出力するステップである。
【0009】
高さを表す高さ情報は、相違情報の一部として第1情報出力ステップ(S99)で出力される。また、高度を表す高度情報は、相違情報の他の一部として第2情報出力ステップ(S101)で出力される。これによって、地上物オブジェクトの高さと移動オブジェクトの高度を正確に認識することができる。
【0010】
請求項3の発明に従うゲームプログラムは、請求項2に従属し、高さ情報は高さに対応する長さを有して画面の垂直方向に伸びる第1バーキャラクタを含み、高度情報は高度に対応する長さを有して画面の垂直方向に伸びる第2バーキャラクタを含む。
【0011】
高さ情報は第1バーキャラクタ(B1)を含み、高度情報は第2バーキャラクタ(B2)を含む。第1バーキャラクタは高さに対応する長さを有して画面の垂直方向に伸びるキャラクタであり、第2バーキャラクタは高度に対応する長さを有して画面の垂直方向に伸びるキャラクタである。垂直方向に伸びるバーキャラクタを表示することで、プレイヤは上述した距離を直感的に把握することができる。
【0012】
請求項4の発明に従うゲームプログラムは、請求項3に従属し、第1バーキャラクタは画面の下方から上方向に伸びるバー本体と高さに相当する位置に設定された上端部とを有し、第2バーキャラクタは画面の上方から下方向に伸びるバー本体と高度に相当する位置に設定された下端部とを有し、上端部から下端部までの間隔が高さと高度との相違を意味する。これによって、移動キャラクタが地上物キャラクタに接触するか否かをプレイヤに認識させることができ、移動キャラクタが地上物キャラクタに衝突するような誤操作を容易に回避させることができる。
【0013】
請求項5の発明に従うゲームプログラムは、請求項3または4に従属し、第1情報出力ステップは第1バーキャラクタの長さを対数演算によって決定する。これによって、画面のサイズが小さくても地上オブジェクトの高さを的確に表現することができる。
【0014】
請求項6の発明に従うゲームプログラムは、請求項1ないし5のいずれかに従属し、予測ステップによって予測された高度から検出ステップによって検出された高さを減算することによって求められる減算値が属する数値範囲によって異なる警告を出力する警告ステップ(S115, S117)をプロセサにさらに実行させるようにしたプログラムである。
【0015】
減算値は、予測ステップによって予測された高度から検出ステップによって検出された高さを減算することによって求められる。警告ステップ(S115, S117)では、このような減算値が属する数値範囲によって異なる警告が出力される。これによって、移動オブジェクトから地上物オブジェクトまでの距離に応じた注意喚起をプレイヤに与えることができ、操作性が向上する。
【0016】
請求項7の発明に従うゲームプログラムは、請求項6に従属し、警告ステップは、減算値がゼロを上回る数値が分布する第1数値範囲に属するとき警告を第1態様で出力する第1警告出力ステップ、および減算値がゼロを下回る数値が分布する第2数値範囲に属するとき警告を第2態様で出力する第2警告出力ステップを含む。
【0017】
減算値がゼロを上回る数値が分布する第1数値範囲に属するときは、警告は第1警告出力ステップ(115)によって第1態様で出力される。減算値がゼロを下回る数値が分布する第2数値範囲に属するときは、警告は第2警告出力ステップ(117)によって第2態様で出力される。これによって、移動オブジェクトから地上物オブジェクトまでの距離に応じて異なる態様でプレイヤに注意喚起を与えることができ、操作性が向上する。
【0018】
請求項8の発明に従うゲームプログラムは、請求項1ないし7のいずれかに従属し、Tとして複数の数値の各々を設定する設定ステップ、予測ステップによって予測された複数の到達点に関連して第1検出ステップによって検出された複数の高度から第2検出ステップによって検出された複数の高さをそれぞれ減算する減算ステップ、および減算ステップによって算出された複数の減算値の中から最小減算値を特定する特定ステップをプロセサにさらに実行させるようにしたプログラムであり、出力ステップは、特定ステップによって特定された最小減算値に対応する相違情報を出力する。
【0019】
複数の数値の各々は、設定ステップ(S79, S89)でTとして設定される。減算ステップ(S85)では、第2検出ステップによって検出された複数の高さが予測ステップによって予測された複数の到達点に関連して第1検出ステップによって検出された複数の高度からそれぞれ減算される。特定ステップ(S91)は、減算ステップによって算出された複数の減算値の中から最小減算値を特定する。ここで、出力ステップの出力処理のために注目される高さは、特定ステップによって特定された最小減算値に対応する。
【0020】
第1時間およびこれよりも長い第2時間の各々を所定時間として設定することを前提として、移動オブジェクトの移動方向を大きく変更すると、移動オブジェクトから地上物オブジェクトまでの距離が、第2時間後の到達位置では十分であるものの、第1時間後の到達位置では不十分である事態が生じ得る。このような事態を想定して、請求項8では最小減算値に対応する大きさに注目するようにしている。これによって、操作性がさらに向上する。
【0021】
請求項9の発明に従うゲームプログラムは、請求項1ないし8のいずれかに従属し、変更ステップは、移動オブジェクトの移動方向を定義する方向パラメータをプレイヤの第1操作に応答して変更する第1変更ステップ、および移動オブジェクトの移動速度を定義する速度パラメータをプレイヤの第2操作に応答して変更する第2変更ステップを含む。
【0022】
移動オブジェクトの移動方向を定義する方向パラメータは、プレイヤの第1操作に応答して第1変更ステップ(S49, S51, S53, S55)で変更される。移動オブジェクトの移動速度を定義する速度パラメータは、プレイヤの第2操作に応答して第2変更ステップ(S19, S25, S29, S35)で変更される。時間Tの後に移動オブジェクトが到達する位置は、方向パラメータおよび速度パラメータに依存することとなる。
【0023】
請求項10の発明に従うゲーム装置は、地上物オブジェクトが配置された仮想ゲーム空間と、仮想ゲーム空間内を移動する移動オブジェクトとを画面に表示するゲーム装置であって、変更手段、予測手段、第1検出手段、第2検出手段、および出力手段を備える。変更手段は、移動オブジェクトの移動を定義する移動パラメータをプレイヤの操作に応答して変更する。予測手段は、時間T(T>0)の後に移動オブジェクトが到達する到達点を移動パラメータに基づいて予測する。第1検出手段は、現在の前記移動オブジェクトの高度および予測手段によって予測された到達点における移動オブジェクトの高度の少なくともいずれか一方を検出する。第2検出手段は、予測手段によって予測された到達点における地上物オブジェクトの高さを検出する。出力手段は、検出手段によって検出された高さと移動オブジェクトの高度との相違を表す相違情報をプレイヤに向けて出力する。
【0024】
地上物オブジェクト(200)は、仮想ゲーム空間に配置される。移動オブジェクト(100)は、仮想ゲーム空間内を移動する。このような地上物オブジェクトおよび移動オブジェクトが画面に表示される。移動オブジェクトの移動を定義する移動パラメータは、プレイヤの操作に応答して変更手段(S19, S25, S29, S35, S49, S51, S53, S55)によって変更される。時間T(T>0)の後に移動オブジェクトが到達する到達点は、移動パラメータに基づいて予測手段(S81)によって予測される。現在の移動オブジェクトの高度および予測ステップによって予測された到達点における移動オブジェクトの高度の少なくともいずれか一方は、第1検出手段(S73)によって検出される。予測手段によって予測された到達点における地上物オブジェクトの高さは、第2検出手段(S83)によって検出される。第1検出手段によって検出された高度と第2検出手段によって検出された高さとの相違を表す相違情報は、プレイヤに向けて出力手段(S99, S101)によって出力される。請求項1と同様、第2オブジェクトを操作する上での難しさを緩和することができる。
【発明の効果】
【0025】
この発明によれば、第2検出ステップまたは第2検出手段によって検出される高さは、移動オブジェクトが時間Tの後に到達すると思われる地点における地上物オブジェクトの高さである。この高さと移動オブジェクトの高度との相違を表す相違情報をプレイヤに向けて出力することで、移動オブジェクトを操作する上での難しさを緩和することができる。
【0026】
この発明の上述の目的,その他の目的,特徴および利点は、図面を参照して行う以下の実施例の詳細な説明から一層明らかとなろう。
【発明を実施するための最良の形態】
【0027】
図1を参照して、この発明の一実施例であるゲーム装置10は、第1の液晶表示器(LCD)12および第2のLCD14を含む。このLCD12およびLCD14は、所定の配置位置となるようにハウジング16に収納される。この実施例では、ハウジング16は、上側ハウジング16aと下側ハウジング16bとによって構成され、LCD12は上側ハウジング16aに収納され、LCD14は下側ハウジング16bに収納される。したがって、LCD12とLCD14とは縦(上下)に並ぶように近接して配置される。
【0028】
なお、この実施例では、表示器としてLCDを用いるようにしてあるが、LCDに代えて、EL(Electronic Luminescence)ディスプレイやプラズマディスプレイ等を用いるようにしてもよい。
【0029】
図1からも分かるように、上側ハウジング16aは、LCD12の平面形状よりも少し大きな平面形状を有し、一方主面からLCD12の表示面を露出するように開口部が形成される。一方、下側ハウジング16bは、その平面形状が上側ハウジング16aよりも横長に選ばれ、横方向の略中央部にLCD14の表示面を露出するように開口部が形成される。また、下側ハウジング16bには、音抜き孔18が形成されるとともに、操作スイッチ20(20a,20b,20c,20d,20e,20Lおよび20R)が設けられる。
【0030】
また、上側ハウジング16aと下側ハウジング16bとは、上側ハウジング16aの下辺(下端)と下側ハウジング16bの上辺(上端)の一部とが回動可能に連結されている。したがって、たとえば、ゲームをプレイしない場合には、LCD12の表示面とLCD14の表示面とが対面するように、上側ハウジング16aを回動させて折りたたんでおけば、LCD12の表示面およびLCD14の表示面に傷がつくなどの破損を防止することができる。ただし、上側ハウジング16aと下側ハウジング16bとは、回動可能に連結せずに、それらを一体的(固定的)に設けたハウジング16を形成するようにしてもよい。
【0031】
操作スイッチ20は、方向指示スイッチ(十字キー)20a,スタートスイッチ20b、セレクトスイッチ20c、動作スイッチ(Aボタン)20d、動作スイッチ(Bボタン)20e、動作スイッチ(Lボタン)20Lおよび動作スイッチ(Rボタン)20Rを含む。スイッチ20a,20bおよび20cは、下側ハウジング16bの一方主面において、LCD14の左側に配置される。また、スイッチ20dおよび20eは、下側ハウジング16bの一方主面において、LCD14の右側に配置される。さらに、スイッチ20Lおよびスイッチ20Rは、それぞれ、下側ハウジング16bの上端(天面)の一部において、上側ハウジング16aとの連結部以外の部分に、当該連結部を挟むように左右に配置される。
【0032】
操作スイッチ20の各スイッチの役割は、ゲームごとに適宜設定される。たとえば、方向指示スイッチ20aは、ディジタルジョイスティックとして機能し、4つの押圧部の少なくとも1つを操作することによって、プレイヤによって操作可能なプレイヤキャラクタ(またはプレイヤオブジェクト)の移動方向またはカーソルの移動方向を指示すること等のために用いられる。スタートスイッチ20bは、プッシュボタンで構成され、ゲームを開始(再開)したり、一時停止(Pause)したりすること等のために用いられる。セレクトスイッチ20cは、プッシュボタンで構成され、ゲームモードの選択等のために用いられる。
【0033】
動作スイッチ20dすなわちAボタン20dは、プッシュボタンで構成され、方向指示以外の動作、すなわち、プレイヤキャラクタに打つ(パンチ)、投げる、つかむ(取得)、乗る、ジャンプするなどの任意のアクションをさせることができる。たとえば、アクションゲームにおいては、ジャンプ、パンチ、武器を動かす等を指示することができる。また、ロールプレイングゲーム(RPG)やシミュレーションRPGにおいては、アイテムの取得、武器またはコマンドの選択および決定等を指示することができる。動作スイッチ20eすなわちBボタン20eは、プッシュボタンで構成され、セレクトスイッチ20cで選択したゲームモードの変更やAボタン20dで決定したアクションの取り消し等のために用いられる。
【0034】
動作スイッチ20L(左押しボタン)および動作スイッチ20R(右押しボタン)は、プッシュボタンで構成される。これら左押しボタン(Lボタン)20Lおよび右押しボタン(Rボタン)20Rは、Aボタン20dおよびBボタン20eと同様の操作に用いることができ、また、Aボタン20dおよびBボタン20eの補助的な操作に用いることができる。
【0035】
また、このゲーム装置10はタッチパネルを用いたゲーム装置であり、LCD14の上面には、タッチパネル22が装着される。タッチパネル22としては、少なくとも1点の指示位置を検出可能なものが用いられる。具体的には、抵抗膜方式、赤外線を利用した光学式(再帰反射式)、静電容量結合式の種類のもの等を用いることができる。
【0036】
タッチパネル22は、その上面をスティック24ないしはペン(スタイラスペン)或いは指(以下、これらを「スティック24等」という場合がある。)で、押圧したり撫でたり(触れたり)することによって操作(タッチ操作)されると、スティック24等の指示位置を検出して、指示位置の座標値を示す座標データを出力する。2点の指示位置を同時に検出可能なタッチパネルであれば、プレイヤによってたとえば2点がタッチ操作された場合には、2点の指示位置の座標値を含む座標データを出力する。
【0037】
なお、この実施例では、LCD14(LCD12も同じ、または略同じ。)の表示面の解像度は256dot×192dotであり、タッチパネル22の検出精度も表示画面に対応して256dot×192dotとしてあるが、タッチパネル22の検出精度は表示画面の解像度よりも低くてもよく、高くてもよい。
【0038】
たとえば、LCD12にはプレイヤに見せるためのゲーム画面が表示され、タッチパネル22の設けられるLCD14には、LCD12のゲーム画面に関連して、プレイヤに見せかつ操作させるためのゲーム画面が表示されてよい。LCD12に表示されるゲーム画面には、ゲーム空間内に登場するプレイヤキャラクタが含まれてよい。また、LCD14に表示されるゲーム画面には、スティック24等のタッチ入力によるプレイヤキャラクタの操作方法の案内や指示などが含まれてよいし、タッチ操作可能なたとえばオブジェクトないしアイコン、文字情報等が含まれてもよい。
【0039】
なお、LCD14にタッチ操作可能なオブジェクト等が表示される場合、プレイヤは、該オブジェクトをスティック24等で直接触れるようにしてタッチパネル22上を操作することによって、たとえばそのオブジェクトの選択または操作、座標入力指示等を行うことが可能である。また、ゲームの種類に応じてその他各種の入力指示を行うことができ、たとえばLCD14の表示画面に表示される文字情報やアイコン等によるコマンドを選択したり、LCD12に表示されるゲーム画面(マップ)のスクロール(徐々に移動表示)方向を指示したりすることも可能である。
【0040】
このように、ゲーム装置10は、2画面分の表示部となるLCD12およびLCD14を有し、いずれか一方(この実施例では、LCD14)の表示画面上にタッチパネル22が設けられるので、2画面(LCD12,14)と2系統の操作部(20,22)を有する構成となるのである。
【0041】
ただし、このゲーム装置10は、ゲーム空間内に登場するプレイヤキャラクタの動作をタッチパネル操作に基づいて制御しようとするものである。したがって、上述の各操作スイッチ20の操作内容のうちプレイヤキャラクタの動作制御に関するものは、タッチパネル22での操作に割り当てられるものもあるので、それらの操作内容に関しては操作スイッチ20の操作があっても機能しないように設定しておいてよい。
【0042】
また、この実施例では、スティック24は、たとえば上側ハウジング16aの側面(右側面)に設けられる収納部(収納穴)26に収納することができ、必要に応じて取り出される。ただし、スティック24を設けない場合には、収納部26を設ける必要もない。
【0043】
さらに、ゲーム装置10はメモリカード(またはゲームカートリッジ)28を含み、このメモリカード28は着脱自在であり、下側ハウジング16bの裏面ないしは下端(底面)に設けられる挿入口30から挿入される。図1では省略するが、挿入口30の奥部には、メモリカード28の挿入方向先端部に設けられるコネクタ(図示せず)と接合するためのコネクタ46(図2参照)が設けられており、したがって、メモリカード28が挿入口30に挿入されると、コネクタ同士が接合され、ゲーム装置10のCPUコア42(図2参照)がメモリカード28にアクセス可能となる。
【0044】
なお、図1では表現できないが、下側ハウジング16bの内部において、この下側ハウジング16bの音抜き孔18と対応する位置には、スピーカ32(図2参照)が設けられる。
【0045】
また、図1では省略するが、たとえば、下側ハウジング16bの裏面側には、電池収容ボックスが設けられ、また、下側ハウジング16bの底面側には、電源スイッチ、音量調節つまみ、外部拡張コネクタおよびイヤフォンジャックなどが設けられる。
【0046】
図2はゲーム装置10の電気的な構成を示すブロック図である。図2を参照して、ゲーム装置10は電子回路基板40を含み、この電子回路基板40にはCPUコア42等の回路コンポーネントが実装される。CPUコア42は、バス44を介してコネクタ46に接続されるととともに、RAM48、第1のグラフィック処理ユニット(GPU)50、第2のGPU52、入出カインターフエース回路(以下、「I/F回路」という。)54およびLCDコントローラ60に接続される。
【0047】
コネクタ46には、上述したように、メモリカード28が着脱自在に接続される。メモリカード28は、ROM28aおよびRAM28bを含み、図示は省略するが、ROM28aおよびRAM28bは、ともにバスで接続され、さらに、コネクタ46と接合されるコネクタ(図示せず)に接続される。したがって、上述したように、CPUコア42は、ROM28aおよびRAM28bにアクセスすることができるのである。
【0048】
ROM28aは、ゲーム装置10で実行すべきゲーム(仮想ゲーム)のためのゲームプログラム、画像(キャラクタ画像、背景画像、アイテム画像、メッセージ画像など)データおよびゲームに必要な音ないし音楽のデータ(音データ)等を予め記憶する。RAM(バックアップRAM)28bは、そのゲームの途中データやゲームの結果データを記憶(セーブ)する。
【0049】
RAM48は、バッファメモリないしはワーキングメモリとして使用される。つまり、CPUコア42は、メモリカード28のROM28aに記憶されたゲームプログラム、および画像データ、音データ等のデータをRAM48にロードし、ロードしたゲームプログラムを実行する。また、CPUコア42は、ゲームの進行に応じて一時的なデータ(ゲームデータやフラグデータ)をRAM48に記憶しつつゲーム処理を実行する。
【0050】
なお、ゲームプログラム、画像データおよび音データ等は、ROM28aから一度に全部、または必要に応じて部分的かつ順次的に読み出され、RAM48に記憶される。
【0051】
GPU50およびGPU52は、それぞれ、描画手段の一部を形成し、たとえばシングルチップASICで構成され、CPUコア42からのグラフィックスコマンド(graphics command :作画命令)を受け、そのグラフィックスコマンドに従ってゲーム画像データを生成する。ただし、CPUコア42は、グラフィックスコマンドに加えて、ゲーム画像データの生成に必要な画像生成プログラム(ゲームプログラムに含まれる。)をGPU50およびGPU52のそれぞれに与える。
【0052】
なお、GPU50およびGPU52が作画コマンドを実行するにあたって必要なデータ(画像データ:ポリゴンやテクスチャ等のデータ)は、GPU50およびGPU52がそれぞれ、RAM48にアクセスして取得する。
【0053】
また、GPU50には、第1のビデオRAM(以下、「VRAM」という。)56が接続され、GPU52には、第2のVRAM58が接続される。GPU50は作成したゲーム画像データをVRAM56に描画し、GPU52は作成したゲーム画像データをVRAM58に描画する。
【0054】
VRAM56およびVRAM58は、LCDコントローラ60に接続される。LCDコントローラ60はレジスタ62を含み、レジスタ62はたとえば1ビットで構成され、CPUコア42の指示によって「0」または「1」の値(データ値)を記憶する。LCDコントローラ60は、レジスタ62のデータ値が「0」である場合には、VRAM56に描画されたゲーム画像データをLCD12に出力し、VRAM58に描画されたゲーム画像データをLCD14に出力する。また、LCDコントローラ60は、レジスタ62のデータ値が「1」である場合には、VRAM56に描画されたゲーム画像データをLCD14に出力し、VRAM58に描画されたゲーム画像データをLCD12に出力する。
【0055】
なお、上述の例では、LCDコントローラ60がVRAM56およびVRAM58と接続され、これらVRAM56およびVRAM58から画像データを取得するように説明した。しかし、VRAM56およびVRAM58に描画された画像データは、CPUコア42の指示の下、GPU50およびGPU52によってLCDコントローラ60に与えられてもよい。
【0056】
I/F回路54には、操作スイッチ20,タッチパネル22およびスピーカ32が接続される。ここで、操作スイッチ20は、上述したスイッチ20a,20b,20c,20d,20e,20Lおよび20Rであり、操作スイッチ20が操作されると、対応する操作信号(操作データ)がI/F回路54を介してCPUコア42に入力される。また、タッチパネル22からの座標データがI/F回路54を介してCPUコア42に入力される。さらに、CPUコア42は、ゲーム音楽(BGM)、効果音またはゲームキャラクタの音声(擬制音)などのゲームに必要な音データをRAM48から読み出し、I/F回路54を介してスピーカ32から出力する。
【0057】
図3には、RAM48のメモリマップの一例が示される。RAM48はゲームプログラム記憶領域70を含む。ゲームプログラム記憶領域70にはメモリカード28のROM28aからゲームプログラムがロードされる。この実施例のゲームプログラムは、ゲームメイン処理プログラム70a、機体位置制御プログラム70b、機体速度制御プログラム70c、機体方向制御プログラム70d、仮想空間表示プログラム70e、飛行情報表示プログラム70f等を含む。
【0058】
ゲームメイン処理プログラム70aは、この実施例のゲームのメイン処理を実行するためのプログラムである。図4を参照して、このゲームは、戦闘機の機体を模した飛行オブジェクト(プレイヤオブジェクト)100がプレイヤのキー操作に従って仮想ゲーム空間内を移動するコンバットフライトシミュレーションゲームである。仮想ゲーム空間は、X軸,Y軸およびZ軸によって形成される3次元の空間(仮想XYZ空間)である。Z軸には標高(海抜)0m〜7000mのスケールを定義する目盛りが割り当てられ、XY平面は標高0mに相当する位置に形成される。図示しないが、仮想ゲーム空間には、敵および味方の戦闘機が登場する。
【0059】
XY平面上には、地面,山,ビル建物,氷山,船舶などを模した複数の地上物オブジェクト200,200,…が配置される。ここで、地上に配置された敵および味方の戦闘機は、地上物オブジェクト200から区別される。プレイヤは、飛行オブジェクト100が地上物オブジェクト200に衝突しないようにキー操作を行う。このようなコンバットフライトシミュレーションゲームのメイン処理が、ゲームメイン処理プログラム70aによって実行される。
【0060】
機体位置制御プログラム70bは、飛行オブジェクト100の位置を制御するためのプログラムである。飛行オブジェクト100の動作は、XYZ座標で表現される現在位置と秒速で表現される速度ベクトルとによって定義される。また、LCD12に表示される1フレーム画像の更新周期は、1/60秒である。したがって、現在位置は、フレーム更新タイミングが到来する毎に数1に従って更新される。
[数1]
(Cx,Cy,Cz)=(Cx,Cy,Cz)+(Vx,Vy,Vz)*1/60秒
Cx,Cy,Cz:現在位置
Vx,Vy,Vz:速度ベクトル
数1によれば、現在位置を定義するX座標Cxは、速度ベクトルのX軸成分Vxに“1/60”を掛け算することによって得られた掛け算値と加算される。また、現在位置を定義するY座標Cyは、速度ベクトルのY軸成分Vyに“1/60”を掛け算することによって得られた掛け算値と加算される。さらに、現在位置を定義するZ座標Czは、速度ベクトルのZ軸成分Vzに“1/60”を掛け算することによって得られた掛け算値と加算される。こうして、現在位置を定義するX座標Cx,Y座標CyおよびZ座標Czが更新される。
【0061】
機体速度制御プログラム70cは、飛行オブジェクト100の移動速度つまり速度ベクトルの長さを制御するためのプログラムである。動作スイッチ20Rが1回押されると、飛行オブジェクト100を加速させるべく、速度ベクトルの長さがΔLG1だけ増大される。動作スイッチ20Lが1回押されると、飛行オブジェクト100を減速させるべく、速度ベクトルの長さがΔLG1だけ減少される。動作スイッチ20Rが2回続けて押されると、飛行オブジェクト100を急加速させるべく、速度ベクトルの長さがΔLG2(>ΔLG1)だけ増大される。動作スイッチ20Lが2回続けて押されると、飛行オブジェクト200を急減速させるべく、速度ベクトルの長さがΔLG2だけ減少される。なお、スイッチ操作が解除されるか、動作スイッチ20Rおよび20Lの両方が同時に押されると、速度ベクトルの長さは基準値LGrefに戻される。
【0062】
なお、基準値LGrefは、時速換算で1000km/hに相当する。また、ΔLG1は時速換算で300km/hに相当し、ΔLG2は時速換算で700km/hに相当する。
【0063】
機体方向制御プログラム70dは、飛行オブジェクト100の移動方向つまり動きベクトル(速度ベクトル)の方向を制御するためのプログラムである。図5を参照して、飛行オブジェクト100の方向は、ヨー角およびピッチ角によって規定される。ヨー角はZ軸周り方向の角度であり、ピッチ角はX軸周り方向の角度である。この実施例では、ヨー角およびピッチ角のいずれもが0°を示すとき、飛行オブジェクトは真北を向く。方向指示スイッチ20aが上方向に操作されると、ピッチ角が減少するように速度ベクトルの方向が更新される。方向指示スイッチ20aが下方向に操作されると、ピッチ角が増大するように速度ベクトルの方向が更新される。方向指示スイッチ20aが左方向に操作されると、ヨー角が減少するように速度ベクトルの方向が更新される。方向指示スイッチ20aが右方向に操作されると、ヨー角が増大するように速度ベクトルの方向が更新される。
【0064】
仮想空間表示プログラム70eは、飛行オブジェクト100を後方から捉える視野で仮想ゲーム空間および飛行オブジェクト100をLCD12に表示するためのプログラムである。仮想空間表示プログラム70eは、フレーム更新タイミングが到来する毎に、飛行オブジェクト100の現在位置および動きベクトルによって規定される視界を画面全体に表示し、飛行オブジェクト100の背面を画面中央に表示する。仮想ゲーム空間および飛行オブジェクト100は、飛行オブジェクト100の前方を捉える視野で、図6,図7または図8に示すようにLCD12に再現される。
【0065】
飛行情報表示プログラム70fは、飛行オブジェクト100の飛行状況をプレイヤに伝えるためのプログラムである。フレーム更新タイミングが到来すると、飛行オブジェクト100の現在位置および速度ベクトルが検出され、これに基づいて機体高度(Z座標に対応),機体速度(速度ベクトルの長さに対応)および方位(動きベクトルの方向に対応)がLCD12に表示される。図6,図7または図8に示すように、機体高度は“ALT****m”(****:高度を示す数値)の要領で画面右下に表示され、機体速度は“SPEED####km/h”(####:時速を示す数値)の要領で画面左下に表示される。方位を示すキャラクタ(N,E,WまたはS)は、画面上方に表示される。
【0066】
機体高度が5000mを下回るときは、1.0秒後または2.0秒後に飛行オブジェクト100が到達するXYZ座標が数2に従って予測される。
[数2]
(Fx,Fy,Fz)=(Cx,Cy,Cz)+(Vx,Vy,Vz)*T秒
T:1.0または2.0
Fx,Fy,Fz:予測到達位置
数2によれば、現在位置を定義するX座標Cxは、速度ベクトルのX軸成分Vxに“T”を掛け算することによって得られた掛け算値と加算される。また、現在位置を定義するY座標Cyは、速度ベクトルのY軸成分Vyに“T”を掛け算することによって得られた掛け算値と加算される。さらに、現在位置を定義するZ座標Czは、速度ベクトルのZ軸成分Vzに“T”を掛け算することによって得られた掛け算値と加算される。こうして、1.0秒後および2.0秒後の各々の予測到達位置を定義するX座標Fx,Y座標FyおよびZ座標Fzが求められる。
【0067】
続いて、数2の演算によって予測された2つのXY座標の各々における地上物オブジェクト200の標高が検出される。さらに、1.0秒後の飛行オブジェクト100の高度からこの真下に存在する地上物オブジェクト200までの距離と、2.0秒後の飛行オブジェクトの高度からこの真下に存在する地上物オブジェクト200までの距離とが算出される。算出される距離は、飛行オブジェクト100の高度から地上オブジェクト200の標高を減算して得られる数値を示す。
【0068】
飛行オブジェクト100が図9(A)に示す要領で飛行する場合、1.0秒後の飛行オブジェクト100から地上物オブジェクト200までの距離として“D1a”が算出され、2.0秒後の飛行オブジェクト100から地上物オブジェクト200までの距離として“D2a”が算出される。また、飛行オブジェクト100が図9(B)に示す要領で飛行する場合、1.0秒後の飛行オブジェクト100から地上物オブジェクト200までの距離として“D1b”が算出され、2.0秒後の飛行オブジェクト100から地上物オブジェクト200までの距離として“D2b”が算出される。図9(B)によれば、2.0秒後の飛行オブジェクト100の高度は地上オブジェクト200の標高よりも低い。このため、距離D2bは負の数値を示す。
【0069】
こうして2つの距離が算出された後は、最短距離(数値が最も小さい距離であり、図9(A)および図9(B)のいずれにおいても距離Db2)に注目して以下の処理が実行される。地上物標高バーB1および機体高度バーB2を表示するためのバースケールは、最短距離を定義する機体高度が1000m以上であるとき5000mに設定される一方、最短距離を定義する機体高度が1000m未満のとき1000mに設定される。
【0070】
地上物標高バーB1および機体高度バーB2は、バースケールが5000mであるとき図7に示す要領で表示され、バースケールが1000mであるとき図8に示す要領で表示される。地上物標高バーB1は画面の右下端から上方向に伸び、機体高度バーB2は画面の右上端から下方向に伸びる。地上物標高バーB1の上端の位置が地上物オブジェクト200の標高に相当し、機体高度バーB2の下端の位置が飛行オブジェクト100の高度に相当する。したがって、機体高度バーB2の下端の地上物標高バーB1の上端への接触は、飛行オブジェクト100が地上オブジェクト200に衝突することを意味する。
【0071】
地上物標高バーB1は赤色(RGB:255,0,0)で表示され、機体高度バーB2は緑色(RGB:0,255,0)で表示される。また、地上物標高バーB1および機体高度バーB2の幅は、8ピクセルに相当する。こうして表示された地上物標高バーB1および機体高度バーB2が、飛行オブジェクト100の高度と地上物オブジェクト200の標高との相違を表す相違情報を形成する。
【0072】
地上物標高バーB1を表示するにあたっては、サイズが小さいLCD12に0mから高高度までを表現することの困難性を考慮して、Log(対数)を利用して地上物標高バーB1の長さが規定される。たとえば、標高100mの地上物オブジェクトに対応する地上物標高バーB1の長さが32dotで表現される場合、標高1000mの地上物オブジェクトに対応する地上物標高バーB1の長さは、320dotではなく96dotとされる。なお、Logの底値は、適宜変更されてもよい。
【0073】
表示された機体高度バーB2の色は、敵の戦闘機から発射されたミサイルが飛行オブジェクト100にロックオンしたとき、緑色から赤色に変更される。また、ミサイルが被弾中,飛行オブジェクト100が急加速中,あるいは飛行オブジェクト100が急減速中であれば、機体高度バーB2は左右に振動する。ここで、ミサイルが飛行オブジェクト100に衝突して0.5秒を経過した時点からの5秒間を“被弾中”と定義する。なお、被弾中の振動幅は最大4ピクセルであり、急加速中または急減速中の振動幅は最大2ピクセルである。
【0074】
また、表示された機体高度バーB2は、注目する最短距離が200m以下でかつ0mを上回るとき1秒間に2.5回の割合でフラッシングし(図9(A)参照)、注目する最短距離が0m以下のとき1秒間に7.5回の割合でフラッシングする(図9(B)参照)。また、注目する最短距離が200m以下であれば、“PULL UP”の警告メッセージが画面に表示される。
【0075】
1秒間に2.5回のフラッシングが行われるとき、プレイヤは飛行オブジェクト100が警戒高度にあると認識する。1秒間に7.5回のフラッシングが行われるとき、プレイヤは遅くとも2.0秒後に飛行オブジェクト100が墜落すると認識する。なお、“フラッシング”とは、機体高度バーB1の色を赤色および緑色の間で変化させる処理、すなわち赤色と緑色が単位時間毎に交互に表れるように点滅表示させる処理である。
【0076】
このような飛行情報表示プログラム70fが実行されることで、プレイヤが飛行オブジェクト100を操作するときの困難性を緩和することができる。
【0077】
なお、ゲームプログラム記憶領域70には図示は省略しているが、ゲーム音楽またはゲームサウンドを生成して出力するためのプログラムなど、ゲーム進行に必要な各種プログラムが記憶される。例えば、上述の最短距離が200m以下のときに警告音を発生させるようにしても良い。その場合には、警告音を生成して出力するためのプログラムが記憶される。
【0078】
また、RAM48のメモリマップはデータ記憶領域を含み、データ記憶領域には、メモリカード28のROM28aまたはRAM28bからロードされたデータやゲーム処理に応じて生成されたデータ等が記憶される。データ記憶領域は、画像データ記憶領域72、動作パラメータ記憶領域74、位置関係データ記憶領域76等を含む。
【0079】
画像データ記憶領域72には、ゲーム画像を生成するための画像データが記憶される。たとえば、飛行オブジェクト100、地上物オブジェクト200、飛行情報キャラクタ、その他のオブジェクトなどの画像データ、および地上物オブジェクト200のマップデータ(地上物オブジェクト200の標高を含む)が記憶される。
【0080】
動作パラメータ記憶領域74には、機体位置制御プログラム70b,機体速度制御プログラム70cおよび機体方向制御プログラム70dによって規定された飛行オブジェクト100の動作パラメータ(移動パラメータ)が記憶される。具体的には、飛行オブジェクト100の現在位置を示すXYZ座標と現時点の速度ベクトルとが動作パラメータとして記憶される。
【0081】
位置関係データ記憶領域76には、飛行情報表示プログラム70fによって算出された2点の位置関係に関するデータが記憶される。具体的には、1.0秒後に飛行オブジェクト100が到達する位置のXYZ座標とこの到達位置を定義するXY座標における地上物オブジェクトの標高とが、1.0秒後の位置関係データとして記憶される。また、2.0秒後に飛行オブジェクト100が到達する位置のXYZ座標とこの到達位置を定義するXY座標における地上物オブジェクトの標高とが、2.0秒後の位置関係データとして記憶される。
【0082】
なお、データ記憶領域には、図示は省略するが、ゲームの進行に応じて発生する他のゲームデータ(フラグやカウンタも含む。)等も記憶される。
【0083】
機体位置制御プログラム70bの処理を、図10を参照して説明する。まずステップS1で飛行オブジェクト100の現在位置を表すXYZ座標を初期化する。初期化されたZ座標は、標高6000mに相当する値を示す。ステップS3およびS5では、飛行オブジェクト100の速度ベクトルを初期化する。速度ベクトルの長さは、時速換算で1000km/hに相当する初期値LGrefに設定される。速度ベクトルの方向は、ピッチ角=ヨー角=0°に相当する方向に設定される。初期化されたXYZ座標および速度ベクトルは、動作パラメータ記憶領域74に書き込まれる。ステップS7ではフレーム更新タイミングが到来したか否かを判別する。ここでYESであればステップS9に進み、動作パラメータ記憶領域74に格納されたXYZ座標を上述の数1に従って更新する。更新処理が完了すると、ステップS7に戻る。
【0084】
機体速度制御プログラム70cの処理を、図11を参照して説明する。ステップS11では動作スイッチ20Rが1回押されたか否かを判別し、ステップS13では動作スイッチ20Lが1回押されたか否かを判別する。ステップS15では動作スイッチ20Rが2回続けて押されたか否かを判別し、ステップS17では動作スイッチ20Lが2回続けて押されたか否かを判別する。
【0085】
ステップS11でYESと判断されるとステップS19に進み、動作パラメータ記憶領域74に格納された動きベクトルの長さをΔLG1だけ増大させる。これによって、飛行オブジェクト100が加速される。動作スイッチ20Rの押圧が解除されるか、動作スイッチ20Lおよび20Rが同時に押されると、ステップS21からステップS23に進み、動作パラメータ記憶領域74に格納された動きベクトルの長さを初期値LGrefに戻す。ステップS23の処理が完了すると、ステップS11に戻る。
【0086】
ステップS13でYESと判断されるとステップS25に進み、動作パラメータ記憶領域74に格納された動きベクトルの長さをΔLG1だけ減少させる。これによって、飛行オブジェクト100が減速される。動作スイッチ20Lの押圧が解除されるか、動作スイッチ20Lおよび20Rが同時に押されると、ステップS27でYESと判断し、ステップS23の処理を経てステップS11に戻る。
【0087】
ステップS15でYESと判断されるとステップS29に進み、動作パラメータ記憶領域74に格納された動きベクトルの長さをΔLG2だけ増大させる。これによって、飛行オブジェクト100が急加速される(アフターバーナー)。動作スイッチ20Rの押圧が解除されるか、動作スイッチ20Lおよび20Rが同時に押されると、ステップS31からステップS33に進み、動作パラメータ記憶領域74に格納された動きベクトルの長さを初期値LGrefに戻す。ステップS33の処理が完了すると、ステップS11に戻る。
【0088】
ステップS17でYESと判断されるとステップS35に進み、動作パラメータ記憶領域74に格納された動きベクトルの長さをΔLG2だけ減少させる。これによって、飛行オブジェクト100が急減速される(ハードブレーキ)。動作スイッチ20Lの押圧が解除されるか、動作スイッチ20Lおよび20Rが同時に押されると、ステップS37でYESと判断し、ステップS33の処理を経てステップS11に戻る。
【0089】
機体方向制御プログラム70dの処理を、図12を参照して説明する。ステップS41では方向指示スイッチ20aが上方向に操作されたか否かを判別し、ステップS43では方向指示スイッチ20aが下方向に操作されたか否かを判別する。また、ステップS45では方向指示スイッチ20aが左方向に操作されたか否かを判別し、ステップS47では方向指示スイッチ20aが右方向に操作されたか否かを判別する。
【0090】
ステップS41でYESであればステップS49に進み、ピッチ角が減少するように速度ベクトルの方向を更新する。ステップS43でYESであればステップS51に進み、ピッチ角が増大するように速度ベクトルの方向を更新する。ステップS45でYESであればステップS53に進み、ヨー角が減少するように速度ベクトルの方向を更新する。ステップS47でYESであればステップS55に進み、ヨー角が増大するように速度ベクトルの方向を更新する。ステップS49,S51,S53またはS55の処理が完了すると、ステップS41に戻る。
【0091】
仮想空間表示プログラム70eの処理を、図13を参照して説明する。ステップS61ではフレーム更新タイミングが到来したか否かを判別し、YESであればステップS63に進む。ステップS63では、動作パラメータ記憶領域74を参照して、飛行オブジェクト100のXYZ座標および移動方向を検出する。ステップS65では、検出されたXYZ座標および移動方向によって特定される視界を算出し、算出された視界を表す画像をLCD12の全面に表示する。ステップS67では、飛行オブジェクト100の背面をLCD12の中央に表示する。仮想ゲーム空間および飛行オブジェクト100は、飛行オブジェクト100の前方を捉える視野でLCD12に再現される(図6,図7または図8参照)。ステップS67の処理が完了すると、ステップS61に戻る。なお、ステップS67の処理は行われなくてもよい。すなわち、飛行オブジェクト100の背面を表示せず、飛行オブジェクト100のコックピットから前方を捉えた視野を再現して表示するようにしてもよい。
【0092】
飛行情報表示プログラム70fの処理を、図14を参照して説明する。フレーム更新タイミングが到来するとステップS71からステップS73に進み、飛行オブジェクト100の現時点のXYZ座標および速度ベクトルを動作パラメータ記憶領域74から検出する。ステップS75では、検出されたXYZ座標および速度ベクトルに基づいて、機体高度,機体速度および方位を図6,図7または図8に示す要領でLCD12に表示する。
【0093】
ステップS77では機体高度が5000m以上であるか否かを判別し、YESであればステップS71に戻る一方、NOであればステップS79に進む。ステップS79では変数Tを“1.0”に設定し、続くステップS81では飛行オブジェクト100のT秒後の到達地点を示すXYZ座標を上述の数2に従って算出する。
【0094】
ステップS83では、ステップS81で予測されたXY座標における地上物オブジェクト200の標高を検出する。標高の検出にあたっては、画像データ記憶領域72に記憶されたマップデータが参照される。ステップS85では、ステップS81で予測されたXY座標における飛行オブジェクト100から地上物オブジェクト200までの距離を算出する。算出された距離は、ステップS81で予測されたZ座標からステップS83で検出された標高を減算することで求められる。
【0095】
ステップS87では変数Tが“2.0”を示すか否かを判別する。ここでNOであれば、ステップS89で変数Tを“2.0”に設定してからステップS81〜S85の処理を再度実行する。これによって、1.0秒後の到達地点および2.0秒後の到達地点の各々について、飛行オブジェクト100から地上物オブジェクト200までの距離が求められる。
【0096】
ステップS87でYESであればステップS91に進み、算出された2つの距離の中から最短距離(数値が最小の距離)を特定する。ステップS93では、特定された最短距離を定義する機体高度(飛行オブジェクト100のZ座標)が1000m以上であるか否かを判別する。ここでYESであればステップS95でバースケールを5000mに設定する一方、NOであればステップS97でバースケールを1000mに設定する。
【0097】
ステップS99では、ステップS91で特定された最短距離を定義する赤色の地上物標高バーB1をLCD12に表示する。ステップS101では、ステップS91で特定された最短距離を定義する緑色の機体高度バーB2をLCD12に表示する。表示される地上物標高バーB1および機体高度バーB2は、ステップS95またはS97で設定されたバースケールで、図7または図8に示す要領で表示される。
【0098】
上述のように、地上物標高バーB1は画面の右下から上方向に伸び、機体高度バーB2は画面の右上から下方向に伸びる。地上物標高バーB1の上端の位置が地上物オブジェクト200の標高に相当し、機体高度バーB2の下端の位置が飛行オブジェクト100の高度に相当する。地上物標高バーB1の長さは、対数演算によって決定される。こうして表示された地上物標高バーB1および機体高度バーB2が、飛行オブジェクト100の高度と地上物オブジェクト200の標高との相違を表す相違情報を形成する。
【0099】
ステップS103では、敵の戦闘機から発射されたミサイルが飛行オブジェクト100にロックオンしたか否かを判別する。ここでYESであれば、ステップS105で機体高度バーB2の色を赤色に変更してからステップS71に戻る。一方、NOであれば、ミサイルが被弾中,飛行オブジェクト100が急加速中,あるいは飛行オブジェクト100が急減速中であるか否かを、ステップS107で判別する。被弾中,急加速中および急減速中のいずれでもなければそのままステップS111に進む一方、被弾中,急加速中または急減速中であれば、ステップS109で機体高度バーB2を左右に振動させてからステップS111に進む。なお、上述のように、被弾中の振動幅は、急加速中または急減速中の振動幅よりも大きい。
【0100】
ステップS111では、ステップS91で特定された最短距離が200m以下であるか否かを判別する。ステップS113では、ステップS91で特定された最短高度が0m以下であるか否かを判別する。最短距離が200mを上回るときは、機体高度に十分に余裕があると判断し、そのままステップS71に戻る。最短距離が200m以下でかつ0mを上回るときは、飛行オブジェクト100が警戒高度にあるとみなし、ステップS115に進む。最短距離が0m以下であれば、遅くとも2.0秒後に飛行オブジェクト100が地上物オブジェクト200に衝突して墜落するとみなし、ステップS117に進む。
【0101】
ステップS115では、機体高度バーB2を1秒間に2.5回の割合でフラッシングする。ステップS117では、機体高度バーB2を1秒間に7.5回の割合でフラッシングする。ステップS115またはS117に続くステップS119では“PULL UP”の警告メッセージをLCD12に表示し、その後にステップS71に戻る。
【0102】
以上の説明から分かるように、仮想ゲーム空間に存在する1または2以上の地上物オブジェクト200は、仮想ゲーム空間を移動する飛行オブジェクト100の前方を捉える視野でLCD12に再現される(S65)。飛行オブジェクト100の移動速度を定義する速度パラメータは、プレイヤによる操作スイッチ20Rおよび20Lの操作に応答して変更される(S19, S25, S29, S35)。飛行オブジェクト100の移動方向を定義する方向パラメータは、プレイヤによる方向指示スイッチ20aの操作に応答して変更される(S49, S51, S53, S55)。
【0103】
時間T(T>0)の後に飛行オブジェクト100が到達する地点の高度は、飛行オブジェクト100の移動パラメータに基づいて予測される(S81)。予測された地点に存在する地上物オブジェクト200の標高は、マップデータを参照して検出される(S83)。検出された地上物オブジェクト200の標高と飛行オブジェクト100の高度との相違を表す相違情報は、LCD12を通してプレイヤに向けて出力される(S99, S101)。
【0104】
飛行オブジェクト100がT秒後に到達すると思われる地点に存在する地上オブジェクト200の標高と飛行オブジェクト100の高度との相違を表す相違情報をプレイヤに向けて出力することで、飛行オブジェクト100を操作する上での難しさを緩和することができる。特に、飛行オブジェクト100のコックピットから前方を捉えた視野を再現して表示するような場合には、飛行オブジェクト100が画面に表示されないために、飛行オブジェクト100と地上物オブジェクト200の間の距離を目視で確認することが難しいので、飛行オブジェクト100を操作する上での難しさをより効果的に緩和することができる。
【0105】
なお、この実施例では、戦闘機を模したオブジェクトを空中を模した仮想ゲーム空間で移動させるようにしたが、潜水艦を模したオブジェクトを海中を模した仮想ゲーム空間で移動させるようにしてもよい。
【0106】
また、この実施例では、操作スイッチ20Rおよび20Lの操作状態に関係なく1.0秒後および2.0秒後に飛行オブジェクトが到達する位置を算出するようにしている。しかし、操作スイッチ20Rまたは20Lの操作中(移動方向を変更する期間)には、たとえば0.5秒後のようなより短い時間が経過した後の到達位置を算出するようにしてもよい。
【0107】
さらに、この実施例では、1.0秒後および2.0秒後という2つの時間に注目しているが、これよりも多くの時間に注目するようにしてもよい。また、1つの時間(例えば、2.0秒後)のみに注目するようにしてもよい。
【0108】
また、この実施例では、機体高度バーB2として、T秒後の飛行オブジェクト100の予測高度を表示するようにしたが、現在の飛行オブジェクト100の高度を表示するようにしてもよい。このようにすれば、現在の飛行オブジェクト100の高度とT秒後の到達予測地点の地上物オブジェクト200の標高との相違を表す相違情報をプレイヤに認識させることができる。
【0109】
また、この実施例では、縦方向の同一線上に対して、地上物標高バーB1を下から上方向に伸びるように表示し、機体高度バーB2を上から下方向に伸びるように表示したが、縦方向の同一線上に限らず、地上物標高バーB1と機体高度バーB2の伸びる方向を同じにしてもよい。例えば、地上物標高バーB1と機体高度バーB2を所定間隔を空けて横に並べて表示し、地上物標高バーB1と機体高度バーB2のどちらも下端から上方向に伸びるように表示してもよい。
【0110】
また、この実施例では、T秒後の機体高度、地上物標高、機体高度と地上物標高の距離(間隔)を2つのバーとバー間の距離で表したが、これらを数値で表すようにしてもよい。また、機体高度と地上物標高の距離のみをバーまたは数値で表すようにしてもよい。あるいは、機体高度と地上物標高のみを数値で表すようにしてもよい。
【図面の簡単な説明】
【0111】
【図1】この発明の一実施例のゲーム装置の一例を示す外観図である。
【図2】図1実施例のゲーム装置の電気的な構成を示すブロック図である。
【図3】図2に示すRAM48のメモリマップの一例を示す図解図である。
【図4】仮想ゲーム空間を飛行オブジェクトが移動する様子を示す図解図である。
【図5】飛行オブジェクトの姿勢を規定するヨー角およびピッチ角を示す図解図である。
【図6】LCD12に表示されるゲーム画面の一例を示す図解図である。
【図7】LCD12に表示されるゲーム画面の一例を示す図解図である。
【図8】LCD12に表示されるゲーム画面の一例を示す図解図である。
【図9】(A)は飛行オブジェクトの予測到達位置における飛行オブジェクトから地上物オブジェクトまでの距離の一例を示す図解図であり;(B)は飛行オブジェクトの予測到達位置における飛行オブジェクトから地上物オブジェクトまでの距離の他の一例を示す図解図である。
【図10】機体位置制御プログラムに従う処理の一例を示すフロー図である。
【図11】機体速度制御プログラムに従う処理の一例を示すフロー図である。
【図12】機体方向制御プログラムに従う処理の一例を示すフロー図である。
【図13】仮想空間表示プログラムに従う処理の一例を示すフロー図である。
【図14】飛行情報表示プログラムに従う処理の一部を示すフロー図である。
【図15】飛行情報表示プログラムに従う処理の他の一部を示すフロー図である。
【図16】飛行情報表示プログラムに従う処理のその他の一部を示すフロー図である。
【符号の説明】
【0112】
10 …ゲーム装置
12,14 …LCD
22 …タッチパネル
24 …スティック
28 …メモリカード
32 …スピーカ
42 …CPUコア
48 …RAM
50,52 …GPU
54 …I/F回路
56,58 …VRAM
60 …LCDコントローラ
100 …飛行オブジェクト
200 …地上オブジェクト
【技術分野】
【0001】
この発明は、ゲームプログラムまたはゲーム装置に関し、特にたとえば、仮想XYZ空間を形成するXY平面上に存在する1または2以上の第1オブジェクトを仮想XYZ空間を移動する第2オブジェクトの前方を捉える視野で再現する、ゲームプログラムまたはゲーム装置に関する。
【背景技術】
【0002】
飛行機がプレイヤの操作に応じて仮想ゲーム空間内を飛行する、フライトシミュレータと呼ばれるゲームが従来から知られている。このようなゲームの多くは、飛行機がどの程度の高さを飛行しているかを示す飛行高度を画面に表示する。中には、特許文献1または2のように、実際の高度計を模した画像をディスプレイモニタ上に表示してリアリティを高めたゲームもある。
【特許文献1】特開2000−176156号公報
【特許文献2】特開2002−123166号公報
【発明の開示】
【発明が解決しようとする課題】
【0003】
このようなゲームでは、プレイヤは、仮想ゲーム空間に配置された山やビルなどの地上物に飛行機が衝突しないような操作を求められる。しかし、飛行機が地上物からどの程度高い位置を飛行しているかについては、飛行機の高度のみからは容易に把握することができない。このため、画面上に表示される飛行機および地上物を手掛かりとする以外、プレイヤは地上物から飛行機までの距離を推測することができず、これがフライトシミュレータのようなゲームを困難にする原因の1つとなっている。
【0004】
それゆえに、この発明の主たる目的は、操作の困難性を緩和することができる、ゲームプログラムまたはゲーム装置を提供することである。
【課題を解決するための手段】
【0005】
請求項1の発明に従うゲームプログラムは、地上物オブジェクトが配置された仮想ゲーム空間と、仮想ゲーム空間内を移動する移動オブジェクトとを画面に表示するゲーム装置のプロセサに、変更ステップ、予測ステップ、第1検出ステップ、第2検出ステップ、および出力ステップを実行させるためのプログラムである。変更ステップは、移動オブジェクトの移動を定義する移動パラメータをプレイヤの操作に応答して変更するステップである。予測ステップは、時間T(T>0)の後に移動オブジェクトが到達する到達点を移動パラメータに基づいて予測するステップである。第1検出ステップは、現在の移動オブジェクトの高度および予測ステップによって予測された到達点における移動オブジェクトの高度の少なくともいずれか一方を検出するステップである。第2検出ステップは、予測ステップによって予測された到達点における地上物オブジェクトの高さを検出するステップである。出力ステップは、第1検出ステップによって検出された高度と第2検出ステップによって検出された高さとの相違を表す相違情報をプレイヤに向けて出力するステップである。
【0006】
地上物オブジェクト(200:実施例で相当する参照符号。以下同じ)は、仮想ゲーム空間に配置される。移動オブジェクト(100)は、仮想ゲーム空間内を移動する。このような地上物オブジェクトおよび移動オブジェクトが画面に表示される。移動オブジェクトの移動を定義する移動パラメータは、プレイヤの操作に応答して変更ステップ(S19, S25, S29, S35, S49, S51, S53, S55)で変更される。時間T(T>0)の後に移動オブジェクトが到達する到達点は、移動パラメータに基づいて予測ステップ(S81)で予測される。現在の移動オブジェクトの高度および予測ステップによって予測された到達点における移動オブジェクトの高度の少なくともいずれか一方は、第1検出ステップ(S73)で検出される。予測ステップによって予測された到達点における地上物オブジェクトの高さは、第2検出ステップ(S83)で検出される。第1検出ステップによって検出された高度と第2検出ステップによって検出された高さとの相違を表す相違情報は、プレイヤに向けて出力ステップ(S99, S101)で出力される。
【0007】
第2検出ステップで検出される高さは、移動オブジェクトが時間Tの後に到達すると思われる地点における地上物オブジェクトの高さである。この高さと移動オブジェクトの高度との相違を表す相違情報をプレイヤに向けて出力することで、移動オブジェクトを操作する上での難しさを緩和することができる。
【0008】
請求項2の発明に従うゲームプログラムは、請求項1に従属し、出力ステップは第1情報出力ステップおよび第2情報出力ステップを含む。第1情報出力ステップは高さを表す高さ情報を相違情報の一部として出力するステップであり、第2情報出力ステップは高度を表す高度情報を相違情報の他の一部として出力するステップである。
【0009】
高さを表す高さ情報は、相違情報の一部として第1情報出力ステップ(S99)で出力される。また、高度を表す高度情報は、相違情報の他の一部として第2情報出力ステップ(S101)で出力される。これによって、地上物オブジェクトの高さと移動オブジェクトの高度を正確に認識することができる。
【0010】
請求項3の発明に従うゲームプログラムは、請求項2に従属し、高さ情報は高さに対応する長さを有して画面の垂直方向に伸びる第1バーキャラクタを含み、高度情報は高度に対応する長さを有して画面の垂直方向に伸びる第2バーキャラクタを含む。
【0011】
高さ情報は第1バーキャラクタ(B1)を含み、高度情報は第2バーキャラクタ(B2)を含む。第1バーキャラクタは高さに対応する長さを有して画面の垂直方向に伸びるキャラクタであり、第2バーキャラクタは高度に対応する長さを有して画面の垂直方向に伸びるキャラクタである。垂直方向に伸びるバーキャラクタを表示することで、プレイヤは上述した距離を直感的に把握することができる。
【0012】
請求項4の発明に従うゲームプログラムは、請求項3に従属し、第1バーキャラクタは画面の下方から上方向に伸びるバー本体と高さに相当する位置に設定された上端部とを有し、第2バーキャラクタは画面の上方から下方向に伸びるバー本体と高度に相当する位置に設定された下端部とを有し、上端部から下端部までの間隔が高さと高度との相違を意味する。これによって、移動キャラクタが地上物キャラクタに接触するか否かをプレイヤに認識させることができ、移動キャラクタが地上物キャラクタに衝突するような誤操作を容易に回避させることができる。
【0013】
請求項5の発明に従うゲームプログラムは、請求項3または4に従属し、第1情報出力ステップは第1バーキャラクタの長さを対数演算によって決定する。これによって、画面のサイズが小さくても地上オブジェクトの高さを的確に表現することができる。
【0014】
請求項6の発明に従うゲームプログラムは、請求項1ないし5のいずれかに従属し、予測ステップによって予測された高度から検出ステップによって検出された高さを減算することによって求められる減算値が属する数値範囲によって異なる警告を出力する警告ステップ(S115, S117)をプロセサにさらに実行させるようにしたプログラムである。
【0015】
減算値は、予測ステップによって予測された高度から検出ステップによって検出された高さを減算することによって求められる。警告ステップ(S115, S117)では、このような減算値が属する数値範囲によって異なる警告が出力される。これによって、移動オブジェクトから地上物オブジェクトまでの距離に応じた注意喚起をプレイヤに与えることができ、操作性が向上する。
【0016】
請求項7の発明に従うゲームプログラムは、請求項6に従属し、警告ステップは、減算値がゼロを上回る数値が分布する第1数値範囲に属するとき警告を第1態様で出力する第1警告出力ステップ、および減算値がゼロを下回る数値が分布する第2数値範囲に属するとき警告を第2態様で出力する第2警告出力ステップを含む。
【0017】
減算値がゼロを上回る数値が分布する第1数値範囲に属するときは、警告は第1警告出力ステップ(115)によって第1態様で出力される。減算値がゼロを下回る数値が分布する第2数値範囲に属するときは、警告は第2警告出力ステップ(117)によって第2態様で出力される。これによって、移動オブジェクトから地上物オブジェクトまでの距離に応じて異なる態様でプレイヤに注意喚起を与えることができ、操作性が向上する。
【0018】
請求項8の発明に従うゲームプログラムは、請求項1ないし7のいずれかに従属し、Tとして複数の数値の各々を設定する設定ステップ、予測ステップによって予測された複数の到達点に関連して第1検出ステップによって検出された複数の高度から第2検出ステップによって検出された複数の高さをそれぞれ減算する減算ステップ、および減算ステップによって算出された複数の減算値の中から最小減算値を特定する特定ステップをプロセサにさらに実行させるようにしたプログラムであり、出力ステップは、特定ステップによって特定された最小減算値に対応する相違情報を出力する。
【0019】
複数の数値の各々は、設定ステップ(S79, S89)でTとして設定される。減算ステップ(S85)では、第2検出ステップによって検出された複数の高さが予測ステップによって予測された複数の到達点に関連して第1検出ステップによって検出された複数の高度からそれぞれ減算される。特定ステップ(S91)は、減算ステップによって算出された複数の減算値の中から最小減算値を特定する。ここで、出力ステップの出力処理のために注目される高さは、特定ステップによって特定された最小減算値に対応する。
【0020】
第1時間およびこれよりも長い第2時間の各々を所定時間として設定することを前提として、移動オブジェクトの移動方向を大きく変更すると、移動オブジェクトから地上物オブジェクトまでの距離が、第2時間後の到達位置では十分であるものの、第1時間後の到達位置では不十分である事態が生じ得る。このような事態を想定して、請求項8では最小減算値に対応する大きさに注目するようにしている。これによって、操作性がさらに向上する。
【0021】
請求項9の発明に従うゲームプログラムは、請求項1ないし8のいずれかに従属し、変更ステップは、移動オブジェクトの移動方向を定義する方向パラメータをプレイヤの第1操作に応答して変更する第1変更ステップ、および移動オブジェクトの移動速度を定義する速度パラメータをプレイヤの第2操作に応答して変更する第2変更ステップを含む。
【0022】
移動オブジェクトの移動方向を定義する方向パラメータは、プレイヤの第1操作に応答して第1変更ステップ(S49, S51, S53, S55)で変更される。移動オブジェクトの移動速度を定義する速度パラメータは、プレイヤの第2操作に応答して第2変更ステップ(S19, S25, S29, S35)で変更される。時間Tの後に移動オブジェクトが到達する位置は、方向パラメータおよび速度パラメータに依存することとなる。
【0023】
請求項10の発明に従うゲーム装置は、地上物オブジェクトが配置された仮想ゲーム空間と、仮想ゲーム空間内を移動する移動オブジェクトとを画面に表示するゲーム装置であって、変更手段、予測手段、第1検出手段、第2検出手段、および出力手段を備える。変更手段は、移動オブジェクトの移動を定義する移動パラメータをプレイヤの操作に応答して変更する。予測手段は、時間T(T>0)の後に移動オブジェクトが到達する到達点を移動パラメータに基づいて予測する。第1検出手段は、現在の前記移動オブジェクトの高度および予測手段によって予測された到達点における移動オブジェクトの高度の少なくともいずれか一方を検出する。第2検出手段は、予測手段によって予測された到達点における地上物オブジェクトの高さを検出する。出力手段は、検出手段によって検出された高さと移動オブジェクトの高度との相違を表す相違情報をプレイヤに向けて出力する。
【0024】
地上物オブジェクト(200)は、仮想ゲーム空間に配置される。移動オブジェクト(100)は、仮想ゲーム空間内を移動する。このような地上物オブジェクトおよび移動オブジェクトが画面に表示される。移動オブジェクトの移動を定義する移動パラメータは、プレイヤの操作に応答して変更手段(S19, S25, S29, S35, S49, S51, S53, S55)によって変更される。時間T(T>0)の後に移動オブジェクトが到達する到達点は、移動パラメータに基づいて予測手段(S81)によって予測される。現在の移動オブジェクトの高度および予測ステップによって予測された到達点における移動オブジェクトの高度の少なくともいずれか一方は、第1検出手段(S73)によって検出される。予測手段によって予測された到達点における地上物オブジェクトの高さは、第2検出手段(S83)によって検出される。第1検出手段によって検出された高度と第2検出手段によって検出された高さとの相違を表す相違情報は、プレイヤに向けて出力手段(S99, S101)によって出力される。請求項1と同様、第2オブジェクトを操作する上での難しさを緩和することができる。
【発明の効果】
【0025】
この発明によれば、第2検出ステップまたは第2検出手段によって検出される高さは、移動オブジェクトが時間Tの後に到達すると思われる地点における地上物オブジェクトの高さである。この高さと移動オブジェクトの高度との相違を表す相違情報をプレイヤに向けて出力することで、移動オブジェクトを操作する上での難しさを緩和することができる。
【0026】
この発明の上述の目的,その他の目的,特徴および利点は、図面を参照して行う以下の実施例の詳細な説明から一層明らかとなろう。
【発明を実施するための最良の形態】
【0027】
図1を参照して、この発明の一実施例であるゲーム装置10は、第1の液晶表示器(LCD)12および第2のLCD14を含む。このLCD12およびLCD14は、所定の配置位置となるようにハウジング16に収納される。この実施例では、ハウジング16は、上側ハウジング16aと下側ハウジング16bとによって構成され、LCD12は上側ハウジング16aに収納され、LCD14は下側ハウジング16bに収納される。したがって、LCD12とLCD14とは縦(上下)に並ぶように近接して配置される。
【0028】
なお、この実施例では、表示器としてLCDを用いるようにしてあるが、LCDに代えて、EL(Electronic Luminescence)ディスプレイやプラズマディスプレイ等を用いるようにしてもよい。
【0029】
図1からも分かるように、上側ハウジング16aは、LCD12の平面形状よりも少し大きな平面形状を有し、一方主面からLCD12の表示面を露出するように開口部が形成される。一方、下側ハウジング16bは、その平面形状が上側ハウジング16aよりも横長に選ばれ、横方向の略中央部にLCD14の表示面を露出するように開口部が形成される。また、下側ハウジング16bには、音抜き孔18が形成されるとともに、操作スイッチ20(20a,20b,20c,20d,20e,20Lおよび20R)が設けられる。
【0030】
また、上側ハウジング16aと下側ハウジング16bとは、上側ハウジング16aの下辺(下端)と下側ハウジング16bの上辺(上端)の一部とが回動可能に連結されている。したがって、たとえば、ゲームをプレイしない場合には、LCD12の表示面とLCD14の表示面とが対面するように、上側ハウジング16aを回動させて折りたたんでおけば、LCD12の表示面およびLCD14の表示面に傷がつくなどの破損を防止することができる。ただし、上側ハウジング16aと下側ハウジング16bとは、回動可能に連結せずに、それらを一体的(固定的)に設けたハウジング16を形成するようにしてもよい。
【0031】
操作スイッチ20は、方向指示スイッチ(十字キー)20a,スタートスイッチ20b、セレクトスイッチ20c、動作スイッチ(Aボタン)20d、動作スイッチ(Bボタン)20e、動作スイッチ(Lボタン)20Lおよび動作スイッチ(Rボタン)20Rを含む。スイッチ20a,20bおよび20cは、下側ハウジング16bの一方主面において、LCD14の左側に配置される。また、スイッチ20dおよび20eは、下側ハウジング16bの一方主面において、LCD14の右側に配置される。さらに、スイッチ20Lおよびスイッチ20Rは、それぞれ、下側ハウジング16bの上端(天面)の一部において、上側ハウジング16aとの連結部以外の部分に、当該連結部を挟むように左右に配置される。
【0032】
操作スイッチ20の各スイッチの役割は、ゲームごとに適宜設定される。たとえば、方向指示スイッチ20aは、ディジタルジョイスティックとして機能し、4つの押圧部の少なくとも1つを操作することによって、プレイヤによって操作可能なプレイヤキャラクタ(またはプレイヤオブジェクト)の移動方向またはカーソルの移動方向を指示すること等のために用いられる。スタートスイッチ20bは、プッシュボタンで構成され、ゲームを開始(再開)したり、一時停止(Pause)したりすること等のために用いられる。セレクトスイッチ20cは、プッシュボタンで構成され、ゲームモードの選択等のために用いられる。
【0033】
動作スイッチ20dすなわちAボタン20dは、プッシュボタンで構成され、方向指示以外の動作、すなわち、プレイヤキャラクタに打つ(パンチ)、投げる、つかむ(取得)、乗る、ジャンプするなどの任意のアクションをさせることができる。たとえば、アクションゲームにおいては、ジャンプ、パンチ、武器を動かす等を指示することができる。また、ロールプレイングゲーム(RPG)やシミュレーションRPGにおいては、アイテムの取得、武器またはコマンドの選択および決定等を指示することができる。動作スイッチ20eすなわちBボタン20eは、プッシュボタンで構成され、セレクトスイッチ20cで選択したゲームモードの変更やAボタン20dで決定したアクションの取り消し等のために用いられる。
【0034】
動作スイッチ20L(左押しボタン)および動作スイッチ20R(右押しボタン)は、プッシュボタンで構成される。これら左押しボタン(Lボタン)20Lおよび右押しボタン(Rボタン)20Rは、Aボタン20dおよびBボタン20eと同様の操作に用いることができ、また、Aボタン20dおよびBボタン20eの補助的な操作に用いることができる。
【0035】
また、このゲーム装置10はタッチパネルを用いたゲーム装置であり、LCD14の上面には、タッチパネル22が装着される。タッチパネル22としては、少なくとも1点の指示位置を検出可能なものが用いられる。具体的には、抵抗膜方式、赤外線を利用した光学式(再帰反射式)、静電容量結合式の種類のもの等を用いることができる。
【0036】
タッチパネル22は、その上面をスティック24ないしはペン(スタイラスペン)或いは指(以下、これらを「スティック24等」という場合がある。)で、押圧したり撫でたり(触れたり)することによって操作(タッチ操作)されると、スティック24等の指示位置を検出して、指示位置の座標値を示す座標データを出力する。2点の指示位置を同時に検出可能なタッチパネルであれば、プレイヤによってたとえば2点がタッチ操作された場合には、2点の指示位置の座標値を含む座標データを出力する。
【0037】
なお、この実施例では、LCD14(LCD12も同じ、または略同じ。)の表示面の解像度は256dot×192dotであり、タッチパネル22の検出精度も表示画面に対応して256dot×192dotとしてあるが、タッチパネル22の検出精度は表示画面の解像度よりも低くてもよく、高くてもよい。
【0038】
たとえば、LCD12にはプレイヤに見せるためのゲーム画面が表示され、タッチパネル22の設けられるLCD14には、LCD12のゲーム画面に関連して、プレイヤに見せかつ操作させるためのゲーム画面が表示されてよい。LCD12に表示されるゲーム画面には、ゲーム空間内に登場するプレイヤキャラクタが含まれてよい。また、LCD14に表示されるゲーム画面には、スティック24等のタッチ入力によるプレイヤキャラクタの操作方法の案内や指示などが含まれてよいし、タッチ操作可能なたとえばオブジェクトないしアイコン、文字情報等が含まれてもよい。
【0039】
なお、LCD14にタッチ操作可能なオブジェクト等が表示される場合、プレイヤは、該オブジェクトをスティック24等で直接触れるようにしてタッチパネル22上を操作することによって、たとえばそのオブジェクトの選択または操作、座標入力指示等を行うことが可能である。また、ゲームの種類に応じてその他各種の入力指示を行うことができ、たとえばLCD14の表示画面に表示される文字情報やアイコン等によるコマンドを選択したり、LCD12に表示されるゲーム画面(マップ)のスクロール(徐々に移動表示)方向を指示したりすることも可能である。
【0040】
このように、ゲーム装置10は、2画面分の表示部となるLCD12およびLCD14を有し、いずれか一方(この実施例では、LCD14)の表示画面上にタッチパネル22が設けられるので、2画面(LCD12,14)と2系統の操作部(20,22)を有する構成となるのである。
【0041】
ただし、このゲーム装置10は、ゲーム空間内に登場するプレイヤキャラクタの動作をタッチパネル操作に基づいて制御しようとするものである。したがって、上述の各操作スイッチ20の操作内容のうちプレイヤキャラクタの動作制御に関するものは、タッチパネル22での操作に割り当てられるものもあるので、それらの操作内容に関しては操作スイッチ20の操作があっても機能しないように設定しておいてよい。
【0042】
また、この実施例では、スティック24は、たとえば上側ハウジング16aの側面(右側面)に設けられる収納部(収納穴)26に収納することができ、必要に応じて取り出される。ただし、スティック24を設けない場合には、収納部26を設ける必要もない。
【0043】
さらに、ゲーム装置10はメモリカード(またはゲームカートリッジ)28を含み、このメモリカード28は着脱自在であり、下側ハウジング16bの裏面ないしは下端(底面)に設けられる挿入口30から挿入される。図1では省略するが、挿入口30の奥部には、メモリカード28の挿入方向先端部に設けられるコネクタ(図示せず)と接合するためのコネクタ46(図2参照)が設けられており、したがって、メモリカード28が挿入口30に挿入されると、コネクタ同士が接合され、ゲーム装置10のCPUコア42(図2参照)がメモリカード28にアクセス可能となる。
【0044】
なお、図1では表現できないが、下側ハウジング16bの内部において、この下側ハウジング16bの音抜き孔18と対応する位置には、スピーカ32(図2参照)が設けられる。
【0045】
また、図1では省略するが、たとえば、下側ハウジング16bの裏面側には、電池収容ボックスが設けられ、また、下側ハウジング16bの底面側には、電源スイッチ、音量調節つまみ、外部拡張コネクタおよびイヤフォンジャックなどが設けられる。
【0046】
図2はゲーム装置10の電気的な構成を示すブロック図である。図2を参照して、ゲーム装置10は電子回路基板40を含み、この電子回路基板40にはCPUコア42等の回路コンポーネントが実装される。CPUコア42は、バス44を介してコネクタ46に接続されるととともに、RAM48、第1のグラフィック処理ユニット(GPU)50、第2のGPU52、入出カインターフエース回路(以下、「I/F回路」という。)54およびLCDコントローラ60に接続される。
【0047】
コネクタ46には、上述したように、メモリカード28が着脱自在に接続される。メモリカード28は、ROM28aおよびRAM28bを含み、図示は省略するが、ROM28aおよびRAM28bは、ともにバスで接続され、さらに、コネクタ46と接合されるコネクタ(図示せず)に接続される。したがって、上述したように、CPUコア42は、ROM28aおよびRAM28bにアクセスすることができるのである。
【0048】
ROM28aは、ゲーム装置10で実行すべきゲーム(仮想ゲーム)のためのゲームプログラム、画像(キャラクタ画像、背景画像、アイテム画像、メッセージ画像など)データおよびゲームに必要な音ないし音楽のデータ(音データ)等を予め記憶する。RAM(バックアップRAM)28bは、そのゲームの途中データやゲームの結果データを記憶(セーブ)する。
【0049】
RAM48は、バッファメモリないしはワーキングメモリとして使用される。つまり、CPUコア42は、メモリカード28のROM28aに記憶されたゲームプログラム、および画像データ、音データ等のデータをRAM48にロードし、ロードしたゲームプログラムを実行する。また、CPUコア42は、ゲームの進行に応じて一時的なデータ(ゲームデータやフラグデータ)をRAM48に記憶しつつゲーム処理を実行する。
【0050】
なお、ゲームプログラム、画像データおよび音データ等は、ROM28aから一度に全部、または必要に応じて部分的かつ順次的に読み出され、RAM48に記憶される。
【0051】
GPU50およびGPU52は、それぞれ、描画手段の一部を形成し、たとえばシングルチップASICで構成され、CPUコア42からのグラフィックスコマンド(graphics command :作画命令)を受け、そのグラフィックスコマンドに従ってゲーム画像データを生成する。ただし、CPUコア42は、グラフィックスコマンドに加えて、ゲーム画像データの生成に必要な画像生成プログラム(ゲームプログラムに含まれる。)をGPU50およびGPU52のそれぞれに与える。
【0052】
なお、GPU50およびGPU52が作画コマンドを実行するにあたって必要なデータ(画像データ:ポリゴンやテクスチャ等のデータ)は、GPU50およびGPU52がそれぞれ、RAM48にアクセスして取得する。
【0053】
また、GPU50には、第1のビデオRAM(以下、「VRAM」という。)56が接続され、GPU52には、第2のVRAM58が接続される。GPU50は作成したゲーム画像データをVRAM56に描画し、GPU52は作成したゲーム画像データをVRAM58に描画する。
【0054】
VRAM56およびVRAM58は、LCDコントローラ60に接続される。LCDコントローラ60はレジスタ62を含み、レジスタ62はたとえば1ビットで構成され、CPUコア42の指示によって「0」または「1」の値(データ値)を記憶する。LCDコントローラ60は、レジスタ62のデータ値が「0」である場合には、VRAM56に描画されたゲーム画像データをLCD12に出力し、VRAM58に描画されたゲーム画像データをLCD14に出力する。また、LCDコントローラ60は、レジスタ62のデータ値が「1」である場合には、VRAM56に描画されたゲーム画像データをLCD14に出力し、VRAM58に描画されたゲーム画像データをLCD12に出力する。
【0055】
なお、上述の例では、LCDコントローラ60がVRAM56およびVRAM58と接続され、これらVRAM56およびVRAM58から画像データを取得するように説明した。しかし、VRAM56およびVRAM58に描画された画像データは、CPUコア42の指示の下、GPU50およびGPU52によってLCDコントローラ60に与えられてもよい。
【0056】
I/F回路54には、操作スイッチ20,タッチパネル22およびスピーカ32が接続される。ここで、操作スイッチ20は、上述したスイッチ20a,20b,20c,20d,20e,20Lおよび20Rであり、操作スイッチ20が操作されると、対応する操作信号(操作データ)がI/F回路54を介してCPUコア42に入力される。また、タッチパネル22からの座標データがI/F回路54を介してCPUコア42に入力される。さらに、CPUコア42は、ゲーム音楽(BGM)、効果音またはゲームキャラクタの音声(擬制音)などのゲームに必要な音データをRAM48から読み出し、I/F回路54を介してスピーカ32から出力する。
【0057】
図3には、RAM48のメモリマップの一例が示される。RAM48はゲームプログラム記憶領域70を含む。ゲームプログラム記憶領域70にはメモリカード28のROM28aからゲームプログラムがロードされる。この実施例のゲームプログラムは、ゲームメイン処理プログラム70a、機体位置制御プログラム70b、機体速度制御プログラム70c、機体方向制御プログラム70d、仮想空間表示プログラム70e、飛行情報表示プログラム70f等を含む。
【0058】
ゲームメイン処理プログラム70aは、この実施例のゲームのメイン処理を実行するためのプログラムである。図4を参照して、このゲームは、戦闘機の機体を模した飛行オブジェクト(プレイヤオブジェクト)100がプレイヤのキー操作に従って仮想ゲーム空間内を移動するコンバットフライトシミュレーションゲームである。仮想ゲーム空間は、X軸,Y軸およびZ軸によって形成される3次元の空間(仮想XYZ空間)である。Z軸には標高(海抜)0m〜7000mのスケールを定義する目盛りが割り当てられ、XY平面は標高0mに相当する位置に形成される。図示しないが、仮想ゲーム空間には、敵および味方の戦闘機が登場する。
【0059】
XY平面上には、地面,山,ビル建物,氷山,船舶などを模した複数の地上物オブジェクト200,200,…が配置される。ここで、地上に配置された敵および味方の戦闘機は、地上物オブジェクト200から区別される。プレイヤは、飛行オブジェクト100が地上物オブジェクト200に衝突しないようにキー操作を行う。このようなコンバットフライトシミュレーションゲームのメイン処理が、ゲームメイン処理プログラム70aによって実行される。
【0060】
機体位置制御プログラム70bは、飛行オブジェクト100の位置を制御するためのプログラムである。飛行オブジェクト100の動作は、XYZ座標で表現される現在位置と秒速で表現される速度ベクトルとによって定義される。また、LCD12に表示される1フレーム画像の更新周期は、1/60秒である。したがって、現在位置は、フレーム更新タイミングが到来する毎に数1に従って更新される。
[数1]
(Cx,Cy,Cz)=(Cx,Cy,Cz)+(Vx,Vy,Vz)*1/60秒
Cx,Cy,Cz:現在位置
Vx,Vy,Vz:速度ベクトル
数1によれば、現在位置を定義するX座標Cxは、速度ベクトルのX軸成分Vxに“1/60”を掛け算することによって得られた掛け算値と加算される。また、現在位置を定義するY座標Cyは、速度ベクトルのY軸成分Vyに“1/60”を掛け算することによって得られた掛け算値と加算される。さらに、現在位置を定義するZ座標Czは、速度ベクトルのZ軸成分Vzに“1/60”を掛け算することによって得られた掛け算値と加算される。こうして、現在位置を定義するX座標Cx,Y座標CyおよびZ座標Czが更新される。
【0061】
機体速度制御プログラム70cは、飛行オブジェクト100の移動速度つまり速度ベクトルの長さを制御するためのプログラムである。動作スイッチ20Rが1回押されると、飛行オブジェクト100を加速させるべく、速度ベクトルの長さがΔLG1だけ増大される。動作スイッチ20Lが1回押されると、飛行オブジェクト100を減速させるべく、速度ベクトルの長さがΔLG1だけ減少される。動作スイッチ20Rが2回続けて押されると、飛行オブジェクト100を急加速させるべく、速度ベクトルの長さがΔLG2(>ΔLG1)だけ増大される。動作スイッチ20Lが2回続けて押されると、飛行オブジェクト200を急減速させるべく、速度ベクトルの長さがΔLG2だけ減少される。なお、スイッチ操作が解除されるか、動作スイッチ20Rおよび20Lの両方が同時に押されると、速度ベクトルの長さは基準値LGrefに戻される。
【0062】
なお、基準値LGrefは、時速換算で1000km/hに相当する。また、ΔLG1は時速換算で300km/hに相当し、ΔLG2は時速換算で700km/hに相当する。
【0063】
機体方向制御プログラム70dは、飛行オブジェクト100の移動方向つまり動きベクトル(速度ベクトル)の方向を制御するためのプログラムである。図5を参照して、飛行オブジェクト100の方向は、ヨー角およびピッチ角によって規定される。ヨー角はZ軸周り方向の角度であり、ピッチ角はX軸周り方向の角度である。この実施例では、ヨー角およびピッチ角のいずれもが0°を示すとき、飛行オブジェクトは真北を向く。方向指示スイッチ20aが上方向に操作されると、ピッチ角が減少するように速度ベクトルの方向が更新される。方向指示スイッチ20aが下方向に操作されると、ピッチ角が増大するように速度ベクトルの方向が更新される。方向指示スイッチ20aが左方向に操作されると、ヨー角が減少するように速度ベクトルの方向が更新される。方向指示スイッチ20aが右方向に操作されると、ヨー角が増大するように速度ベクトルの方向が更新される。
【0064】
仮想空間表示プログラム70eは、飛行オブジェクト100を後方から捉える視野で仮想ゲーム空間および飛行オブジェクト100をLCD12に表示するためのプログラムである。仮想空間表示プログラム70eは、フレーム更新タイミングが到来する毎に、飛行オブジェクト100の現在位置および動きベクトルによって規定される視界を画面全体に表示し、飛行オブジェクト100の背面を画面中央に表示する。仮想ゲーム空間および飛行オブジェクト100は、飛行オブジェクト100の前方を捉える視野で、図6,図7または図8に示すようにLCD12に再現される。
【0065】
飛行情報表示プログラム70fは、飛行オブジェクト100の飛行状況をプレイヤに伝えるためのプログラムである。フレーム更新タイミングが到来すると、飛行オブジェクト100の現在位置および速度ベクトルが検出され、これに基づいて機体高度(Z座標に対応),機体速度(速度ベクトルの長さに対応)および方位(動きベクトルの方向に対応)がLCD12に表示される。図6,図7または図8に示すように、機体高度は“ALT****m”(****:高度を示す数値)の要領で画面右下に表示され、機体速度は“SPEED####km/h”(####:時速を示す数値)の要領で画面左下に表示される。方位を示すキャラクタ(N,E,WまたはS)は、画面上方に表示される。
【0066】
機体高度が5000mを下回るときは、1.0秒後または2.0秒後に飛行オブジェクト100が到達するXYZ座標が数2に従って予測される。
[数2]
(Fx,Fy,Fz)=(Cx,Cy,Cz)+(Vx,Vy,Vz)*T秒
T:1.0または2.0
Fx,Fy,Fz:予測到達位置
数2によれば、現在位置を定義するX座標Cxは、速度ベクトルのX軸成分Vxに“T”を掛け算することによって得られた掛け算値と加算される。また、現在位置を定義するY座標Cyは、速度ベクトルのY軸成分Vyに“T”を掛け算することによって得られた掛け算値と加算される。さらに、現在位置を定義するZ座標Czは、速度ベクトルのZ軸成分Vzに“T”を掛け算することによって得られた掛け算値と加算される。こうして、1.0秒後および2.0秒後の各々の予測到達位置を定義するX座標Fx,Y座標FyおよびZ座標Fzが求められる。
【0067】
続いて、数2の演算によって予測された2つのXY座標の各々における地上物オブジェクト200の標高が検出される。さらに、1.0秒後の飛行オブジェクト100の高度からこの真下に存在する地上物オブジェクト200までの距離と、2.0秒後の飛行オブジェクトの高度からこの真下に存在する地上物オブジェクト200までの距離とが算出される。算出される距離は、飛行オブジェクト100の高度から地上オブジェクト200の標高を減算して得られる数値を示す。
【0068】
飛行オブジェクト100が図9(A)に示す要領で飛行する場合、1.0秒後の飛行オブジェクト100から地上物オブジェクト200までの距離として“D1a”が算出され、2.0秒後の飛行オブジェクト100から地上物オブジェクト200までの距離として“D2a”が算出される。また、飛行オブジェクト100が図9(B)に示す要領で飛行する場合、1.0秒後の飛行オブジェクト100から地上物オブジェクト200までの距離として“D1b”が算出され、2.0秒後の飛行オブジェクト100から地上物オブジェクト200までの距離として“D2b”が算出される。図9(B)によれば、2.0秒後の飛行オブジェクト100の高度は地上オブジェクト200の標高よりも低い。このため、距離D2bは負の数値を示す。
【0069】
こうして2つの距離が算出された後は、最短距離(数値が最も小さい距離であり、図9(A)および図9(B)のいずれにおいても距離Db2)に注目して以下の処理が実行される。地上物標高バーB1および機体高度バーB2を表示するためのバースケールは、最短距離を定義する機体高度が1000m以上であるとき5000mに設定される一方、最短距離を定義する機体高度が1000m未満のとき1000mに設定される。
【0070】
地上物標高バーB1および機体高度バーB2は、バースケールが5000mであるとき図7に示す要領で表示され、バースケールが1000mであるとき図8に示す要領で表示される。地上物標高バーB1は画面の右下端から上方向に伸び、機体高度バーB2は画面の右上端から下方向に伸びる。地上物標高バーB1の上端の位置が地上物オブジェクト200の標高に相当し、機体高度バーB2の下端の位置が飛行オブジェクト100の高度に相当する。したがって、機体高度バーB2の下端の地上物標高バーB1の上端への接触は、飛行オブジェクト100が地上オブジェクト200に衝突することを意味する。
【0071】
地上物標高バーB1は赤色(RGB:255,0,0)で表示され、機体高度バーB2は緑色(RGB:0,255,0)で表示される。また、地上物標高バーB1および機体高度バーB2の幅は、8ピクセルに相当する。こうして表示された地上物標高バーB1および機体高度バーB2が、飛行オブジェクト100の高度と地上物オブジェクト200の標高との相違を表す相違情報を形成する。
【0072】
地上物標高バーB1を表示するにあたっては、サイズが小さいLCD12に0mから高高度までを表現することの困難性を考慮して、Log(対数)を利用して地上物標高バーB1の長さが規定される。たとえば、標高100mの地上物オブジェクトに対応する地上物標高バーB1の長さが32dotで表現される場合、標高1000mの地上物オブジェクトに対応する地上物標高バーB1の長さは、320dotではなく96dotとされる。なお、Logの底値は、適宜変更されてもよい。
【0073】
表示された機体高度バーB2の色は、敵の戦闘機から発射されたミサイルが飛行オブジェクト100にロックオンしたとき、緑色から赤色に変更される。また、ミサイルが被弾中,飛行オブジェクト100が急加速中,あるいは飛行オブジェクト100が急減速中であれば、機体高度バーB2は左右に振動する。ここで、ミサイルが飛行オブジェクト100に衝突して0.5秒を経過した時点からの5秒間を“被弾中”と定義する。なお、被弾中の振動幅は最大4ピクセルであり、急加速中または急減速中の振動幅は最大2ピクセルである。
【0074】
また、表示された機体高度バーB2は、注目する最短距離が200m以下でかつ0mを上回るとき1秒間に2.5回の割合でフラッシングし(図9(A)参照)、注目する最短距離が0m以下のとき1秒間に7.5回の割合でフラッシングする(図9(B)参照)。また、注目する最短距離が200m以下であれば、“PULL UP”の警告メッセージが画面に表示される。
【0075】
1秒間に2.5回のフラッシングが行われるとき、プレイヤは飛行オブジェクト100が警戒高度にあると認識する。1秒間に7.5回のフラッシングが行われるとき、プレイヤは遅くとも2.0秒後に飛行オブジェクト100が墜落すると認識する。なお、“フラッシング”とは、機体高度バーB1の色を赤色および緑色の間で変化させる処理、すなわち赤色と緑色が単位時間毎に交互に表れるように点滅表示させる処理である。
【0076】
このような飛行情報表示プログラム70fが実行されることで、プレイヤが飛行オブジェクト100を操作するときの困難性を緩和することができる。
【0077】
なお、ゲームプログラム記憶領域70には図示は省略しているが、ゲーム音楽またはゲームサウンドを生成して出力するためのプログラムなど、ゲーム進行に必要な各種プログラムが記憶される。例えば、上述の最短距離が200m以下のときに警告音を発生させるようにしても良い。その場合には、警告音を生成して出力するためのプログラムが記憶される。
【0078】
また、RAM48のメモリマップはデータ記憶領域を含み、データ記憶領域には、メモリカード28のROM28aまたはRAM28bからロードされたデータやゲーム処理に応じて生成されたデータ等が記憶される。データ記憶領域は、画像データ記憶領域72、動作パラメータ記憶領域74、位置関係データ記憶領域76等を含む。
【0079】
画像データ記憶領域72には、ゲーム画像を生成するための画像データが記憶される。たとえば、飛行オブジェクト100、地上物オブジェクト200、飛行情報キャラクタ、その他のオブジェクトなどの画像データ、および地上物オブジェクト200のマップデータ(地上物オブジェクト200の標高を含む)が記憶される。
【0080】
動作パラメータ記憶領域74には、機体位置制御プログラム70b,機体速度制御プログラム70cおよび機体方向制御プログラム70dによって規定された飛行オブジェクト100の動作パラメータ(移動パラメータ)が記憶される。具体的には、飛行オブジェクト100の現在位置を示すXYZ座標と現時点の速度ベクトルとが動作パラメータとして記憶される。
【0081】
位置関係データ記憶領域76には、飛行情報表示プログラム70fによって算出された2点の位置関係に関するデータが記憶される。具体的には、1.0秒後に飛行オブジェクト100が到達する位置のXYZ座標とこの到達位置を定義するXY座標における地上物オブジェクトの標高とが、1.0秒後の位置関係データとして記憶される。また、2.0秒後に飛行オブジェクト100が到達する位置のXYZ座標とこの到達位置を定義するXY座標における地上物オブジェクトの標高とが、2.0秒後の位置関係データとして記憶される。
【0082】
なお、データ記憶領域には、図示は省略するが、ゲームの進行に応じて発生する他のゲームデータ(フラグやカウンタも含む。)等も記憶される。
【0083】
機体位置制御プログラム70bの処理を、図10を参照して説明する。まずステップS1で飛行オブジェクト100の現在位置を表すXYZ座標を初期化する。初期化されたZ座標は、標高6000mに相当する値を示す。ステップS3およびS5では、飛行オブジェクト100の速度ベクトルを初期化する。速度ベクトルの長さは、時速換算で1000km/hに相当する初期値LGrefに設定される。速度ベクトルの方向は、ピッチ角=ヨー角=0°に相当する方向に設定される。初期化されたXYZ座標および速度ベクトルは、動作パラメータ記憶領域74に書き込まれる。ステップS7ではフレーム更新タイミングが到来したか否かを判別する。ここでYESであればステップS9に進み、動作パラメータ記憶領域74に格納されたXYZ座標を上述の数1に従って更新する。更新処理が完了すると、ステップS7に戻る。
【0084】
機体速度制御プログラム70cの処理を、図11を参照して説明する。ステップS11では動作スイッチ20Rが1回押されたか否かを判別し、ステップS13では動作スイッチ20Lが1回押されたか否かを判別する。ステップS15では動作スイッチ20Rが2回続けて押されたか否かを判別し、ステップS17では動作スイッチ20Lが2回続けて押されたか否かを判別する。
【0085】
ステップS11でYESと判断されるとステップS19に進み、動作パラメータ記憶領域74に格納された動きベクトルの長さをΔLG1だけ増大させる。これによって、飛行オブジェクト100が加速される。動作スイッチ20Rの押圧が解除されるか、動作スイッチ20Lおよび20Rが同時に押されると、ステップS21からステップS23に進み、動作パラメータ記憶領域74に格納された動きベクトルの長さを初期値LGrefに戻す。ステップS23の処理が完了すると、ステップS11に戻る。
【0086】
ステップS13でYESと判断されるとステップS25に進み、動作パラメータ記憶領域74に格納された動きベクトルの長さをΔLG1だけ減少させる。これによって、飛行オブジェクト100が減速される。動作スイッチ20Lの押圧が解除されるか、動作スイッチ20Lおよび20Rが同時に押されると、ステップS27でYESと判断し、ステップS23の処理を経てステップS11に戻る。
【0087】
ステップS15でYESと判断されるとステップS29に進み、動作パラメータ記憶領域74に格納された動きベクトルの長さをΔLG2だけ増大させる。これによって、飛行オブジェクト100が急加速される(アフターバーナー)。動作スイッチ20Rの押圧が解除されるか、動作スイッチ20Lおよび20Rが同時に押されると、ステップS31からステップS33に進み、動作パラメータ記憶領域74に格納された動きベクトルの長さを初期値LGrefに戻す。ステップS33の処理が完了すると、ステップS11に戻る。
【0088】
ステップS17でYESと判断されるとステップS35に進み、動作パラメータ記憶領域74に格納された動きベクトルの長さをΔLG2だけ減少させる。これによって、飛行オブジェクト100が急減速される(ハードブレーキ)。動作スイッチ20Lの押圧が解除されるか、動作スイッチ20Lおよび20Rが同時に押されると、ステップS37でYESと判断し、ステップS33の処理を経てステップS11に戻る。
【0089】
機体方向制御プログラム70dの処理を、図12を参照して説明する。ステップS41では方向指示スイッチ20aが上方向に操作されたか否かを判別し、ステップS43では方向指示スイッチ20aが下方向に操作されたか否かを判別する。また、ステップS45では方向指示スイッチ20aが左方向に操作されたか否かを判別し、ステップS47では方向指示スイッチ20aが右方向に操作されたか否かを判別する。
【0090】
ステップS41でYESであればステップS49に進み、ピッチ角が減少するように速度ベクトルの方向を更新する。ステップS43でYESであればステップS51に進み、ピッチ角が増大するように速度ベクトルの方向を更新する。ステップS45でYESであればステップS53に進み、ヨー角が減少するように速度ベクトルの方向を更新する。ステップS47でYESであればステップS55に進み、ヨー角が増大するように速度ベクトルの方向を更新する。ステップS49,S51,S53またはS55の処理が完了すると、ステップS41に戻る。
【0091】
仮想空間表示プログラム70eの処理を、図13を参照して説明する。ステップS61ではフレーム更新タイミングが到来したか否かを判別し、YESであればステップS63に進む。ステップS63では、動作パラメータ記憶領域74を参照して、飛行オブジェクト100のXYZ座標および移動方向を検出する。ステップS65では、検出されたXYZ座標および移動方向によって特定される視界を算出し、算出された視界を表す画像をLCD12の全面に表示する。ステップS67では、飛行オブジェクト100の背面をLCD12の中央に表示する。仮想ゲーム空間および飛行オブジェクト100は、飛行オブジェクト100の前方を捉える視野でLCD12に再現される(図6,図7または図8参照)。ステップS67の処理が完了すると、ステップS61に戻る。なお、ステップS67の処理は行われなくてもよい。すなわち、飛行オブジェクト100の背面を表示せず、飛行オブジェクト100のコックピットから前方を捉えた視野を再現して表示するようにしてもよい。
【0092】
飛行情報表示プログラム70fの処理を、図14を参照して説明する。フレーム更新タイミングが到来するとステップS71からステップS73に進み、飛行オブジェクト100の現時点のXYZ座標および速度ベクトルを動作パラメータ記憶領域74から検出する。ステップS75では、検出されたXYZ座標および速度ベクトルに基づいて、機体高度,機体速度および方位を図6,図7または図8に示す要領でLCD12に表示する。
【0093】
ステップS77では機体高度が5000m以上であるか否かを判別し、YESであればステップS71に戻る一方、NOであればステップS79に進む。ステップS79では変数Tを“1.0”に設定し、続くステップS81では飛行オブジェクト100のT秒後の到達地点を示すXYZ座標を上述の数2に従って算出する。
【0094】
ステップS83では、ステップS81で予測されたXY座標における地上物オブジェクト200の標高を検出する。標高の検出にあたっては、画像データ記憶領域72に記憶されたマップデータが参照される。ステップS85では、ステップS81で予測されたXY座標における飛行オブジェクト100から地上物オブジェクト200までの距離を算出する。算出された距離は、ステップS81で予測されたZ座標からステップS83で検出された標高を減算することで求められる。
【0095】
ステップS87では変数Tが“2.0”を示すか否かを判別する。ここでNOであれば、ステップS89で変数Tを“2.0”に設定してからステップS81〜S85の処理を再度実行する。これによって、1.0秒後の到達地点および2.0秒後の到達地点の各々について、飛行オブジェクト100から地上物オブジェクト200までの距離が求められる。
【0096】
ステップS87でYESであればステップS91に進み、算出された2つの距離の中から最短距離(数値が最小の距離)を特定する。ステップS93では、特定された最短距離を定義する機体高度(飛行オブジェクト100のZ座標)が1000m以上であるか否かを判別する。ここでYESであればステップS95でバースケールを5000mに設定する一方、NOであればステップS97でバースケールを1000mに設定する。
【0097】
ステップS99では、ステップS91で特定された最短距離を定義する赤色の地上物標高バーB1をLCD12に表示する。ステップS101では、ステップS91で特定された最短距離を定義する緑色の機体高度バーB2をLCD12に表示する。表示される地上物標高バーB1および機体高度バーB2は、ステップS95またはS97で設定されたバースケールで、図7または図8に示す要領で表示される。
【0098】
上述のように、地上物標高バーB1は画面の右下から上方向に伸び、機体高度バーB2は画面の右上から下方向に伸びる。地上物標高バーB1の上端の位置が地上物オブジェクト200の標高に相当し、機体高度バーB2の下端の位置が飛行オブジェクト100の高度に相当する。地上物標高バーB1の長さは、対数演算によって決定される。こうして表示された地上物標高バーB1および機体高度バーB2が、飛行オブジェクト100の高度と地上物オブジェクト200の標高との相違を表す相違情報を形成する。
【0099】
ステップS103では、敵の戦闘機から発射されたミサイルが飛行オブジェクト100にロックオンしたか否かを判別する。ここでYESであれば、ステップS105で機体高度バーB2の色を赤色に変更してからステップS71に戻る。一方、NOであれば、ミサイルが被弾中,飛行オブジェクト100が急加速中,あるいは飛行オブジェクト100が急減速中であるか否かを、ステップS107で判別する。被弾中,急加速中および急減速中のいずれでもなければそのままステップS111に進む一方、被弾中,急加速中または急減速中であれば、ステップS109で機体高度バーB2を左右に振動させてからステップS111に進む。なお、上述のように、被弾中の振動幅は、急加速中または急減速中の振動幅よりも大きい。
【0100】
ステップS111では、ステップS91で特定された最短距離が200m以下であるか否かを判別する。ステップS113では、ステップS91で特定された最短高度が0m以下であるか否かを判別する。最短距離が200mを上回るときは、機体高度に十分に余裕があると判断し、そのままステップS71に戻る。最短距離が200m以下でかつ0mを上回るときは、飛行オブジェクト100が警戒高度にあるとみなし、ステップS115に進む。最短距離が0m以下であれば、遅くとも2.0秒後に飛行オブジェクト100が地上物オブジェクト200に衝突して墜落するとみなし、ステップS117に進む。
【0101】
ステップS115では、機体高度バーB2を1秒間に2.5回の割合でフラッシングする。ステップS117では、機体高度バーB2を1秒間に7.5回の割合でフラッシングする。ステップS115またはS117に続くステップS119では“PULL UP”の警告メッセージをLCD12に表示し、その後にステップS71に戻る。
【0102】
以上の説明から分かるように、仮想ゲーム空間に存在する1または2以上の地上物オブジェクト200は、仮想ゲーム空間を移動する飛行オブジェクト100の前方を捉える視野でLCD12に再現される(S65)。飛行オブジェクト100の移動速度を定義する速度パラメータは、プレイヤによる操作スイッチ20Rおよび20Lの操作に応答して変更される(S19, S25, S29, S35)。飛行オブジェクト100の移動方向を定義する方向パラメータは、プレイヤによる方向指示スイッチ20aの操作に応答して変更される(S49, S51, S53, S55)。
【0103】
時間T(T>0)の後に飛行オブジェクト100が到達する地点の高度は、飛行オブジェクト100の移動パラメータに基づいて予測される(S81)。予測された地点に存在する地上物オブジェクト200の標高は、マップデータを参照して検出される(S83)。検出された地上物オブジェクト200の標高と飛行オブジェクト100の高度との相違を表す相違情報は、LCD12を通してプレイヤに向けて出力される(S99, S101)。
【0104】
飛行オブジェクト100がT秒後に到達すると思われる地点に存在する地上オブジェクト200の標高と飛行オブジェクト100の高度との相違を表す相違情報をプレイヤに向けて出力することで、飛行オブジェクト100を操作する上での難しさを緩和することができる。特に、飛行オブジェクト100のコックピットから前方を捉えた視野を再現して表示するような場合には、飛行オブジェクト100が画面に表示されないために、飛行オブジェクト100と地上物オブジェクト200の間の距離を目視で確認することが難しいので、飛行オブジェクト100を操作する上での難しさをより効果的に緩和することができる。
【0105】
なお、この実施例では、戦闘機を模したオブジェクトを空中を模した仮想ゲーム空間で移動させるようにしたが、潜水艦を模したオブジェクトを海中を模した仮想ゲーム空間で移動させるようにしてもよい。
【0106】
また、この実施例では、操作スイッチ20Rおよび20Lの操作状態に関係なく1.0秒後および2.0秒後に飛行オブジェクトが到達する位置を算出するようにしている。しかし、操作スイッチ20Rまたは20Lの操作中(移動方向を変更する期間)には、たとえば0.5秒後のようなより短い時間が経過した後の到達位置を算出するようにしてもよい。
【0107】
さらに、この実施例では、1.0秒後および2.0秒後という2つの時間に注目しているが、これよりも多くの時間に注目するようにしてもよい。また、1つの時間(例えば、2.0秒後)のみに注目するようにしてもよい。
【0108】
また、この実施例では、機体高度バーB2として、T秒後の飛行オブジェクト100の予測高度を表示するようにしたが、現在の飛行オブジェクト100の高度を表示するようにしてもよい。このようにすれば、現在の飛行オブジェクト100の高度とT秒後の到達予測地点の地上物オブジェクト200の標高との相違を表す相違情報をプレイヤに認識させることができる。
【0109】
また、この実施例では、縦方向の同一線上に対して、地上物標高バーB1を下から上方向に伸びるように表示し、機体高度バーB2を上から下方向に伸びるように表示したが、縦方向の同一線上に限らず、地上物標高バーB1と機体高度バーB2の伸びる方向を同じにしてもよい。例えば、地上物標高バーB1と機体高度バーB2を所定間隔を空けて横に並べて表示し、地上物標高バーB1と機体高度バーB2のどちらも下端から上方向に伸びるように表示してもよい。
【0110】
また、この実施例では、T秒後の機体高度、地上物標高、機体高度と地上物標高の距離(間隔)を2つのバーとバー間の距離で表したが、これらを数値で表すようにしてもよい。また、機体高度と地上物標高の距離のみをバーまたは数値で表すようにしてもよい。あるいは、機体高度と地上物標高のみを数値で表すようにしてもよい。
【図面の簡単な説明】
【0111】
【図1】この発明の一実施例のゲーム装置の一例を示す外観図である。
【図2】図1実施例のゲーム装置の電気的な構成を示すブロック図である。
【図3】図2に示すRAM48のメモリマップの一例を示す図解図である。
【図4】仮想ゲーム空間を飛行オブジェクトが移動する様子を示す図解図である。
【図5】飛行オブジェクトの姿勢を規定するヨー角およびピッチ角を示す図解図である。
【図6】LCD12に表示されるゲーム画面の一例を示す図解図である。
【図7】LCD12に表示されるゲーム画面の一例を示す図解図である。
【図8】LCD12に表示されるゲーム画面の一例を示す図解図である。
【図9】(A)は飛行オブジェクトの予測到達位置における飛行オブジェクトから地上物オブジェクトまでの距離の一例を示す図解図であり;(B)は飛行オブジェクトの予測到達位置における飛行オブジェクトから地上物オブジェクトまでの距離の他の一例を示す図解図である。
【図10】機体位置制御プログラムに従う処理の一例を示すフロー図である。
【図11】機体速度制御プログラムに従う処理の一例を示すフロー図である。
【図12】機体方向制御プログラムに従う処理の一例を示すフロー図である。
【図13】仮想空間表示プログラムに従う処理の一例を示すフロー図である。
【図14】飛行情報表示プログラムに従う処理の一部を示すフロー図である。
【図15】飛行情報表示プログラムに従う処理の他の一部を示すフロー図である。
【図16】飛行情報表示プログラムに従う処理のその他の一部を示すフロー図である。
【符号の説明】
【0112】
10 …ゲーム装置
12,14 …LCD
22 …タッチパネル
24 …スティック
28 …メモリカード
32 …スピーカ
42 …CPUコア
48 …RAM
50,52 …GPU
54 …I/F回路
56,58 …VRAM
60 …LCDコントローラ
100 …飛行オブジェクト
200 …地上オブジェクト
【特許請求の範囲】
【請求項1】
地上物オブジェクトが配置された仮想ゲーム空間と、前記仮想ゲーム空間内を移動する移動オブジェクトとを画面に表示するゲーム装置のプロセサに、
前記移動オブジェクトの移動を定義する移動パラメータをプレイヤの操作に応答して変更する変更ステップ、
時間T(T>0)の後に前記移動オブジェクトが到達する到達点を前記移動パラメータに基づいて予測する予測ステップ、
現在の前記移動オブジェクトの高度および前記予測ステップによって予測された到達点における前記移動オブジェクトの高度の少なくともいずれか一方を検出する第1検出ステップ、
前記予測ステップによって予測された到達点における前記地上物オブジェクトの高さを検出する第2検出ステップ、および
前記第1検出ステップによって検出された高度と前記第2検出ステップによって検出された高さとの相違を表す相違情報を前記プレイヤに向けて出力する出力ステップを実行させるための、ゲームプログラム。
【請求項2】
前記出力ステップは、前記高さを表す高さ情報を前記相違情報の一部として出力する第1情報出力ステップ、および前記高度を表す高度情報を前記相違情報の他の一部として出力する第2情報出力ステップを含む、請求項1記載のゲームプログラム。
【請求項3】
前記高さ情報は前記高さに対応する長さを有して画面の垂直方向に伸びる第1バーキャラクタを含み、
前記高度情報は前記高度に対応する長さを有して前記画面の垂直方向に伸びる第2バーキャラクタを含む、請求項2記載のゲームプログラム。
【請求項4】
前記第1バーキャラクタは前記画面の下方から上方向に伸びるバー本体と前記高さに相当する位置に設定された上端部とを有し、
前記第2バーキャラクタは前記画面の上方から下方向に伸びるバー本体と前記高度に相当する位置に設定された下端部とを有し、
前記上端部から前記下端部までの間隔が前記高さと前記高度との相違を意味する、請求項3記載のゲームプログラム。
【請求項5】
前記第1情報出力ステップは前記第1バーキャラクタの長さを対数演算によって決定する、請求項3または4記載のゲームプログラム。
【請求項6】
前記予測ステップによって予測された高度から前記検出ステップによって検出された高さを減算することによって求められる減算値が属する数値範囲によって異なる警告を出力する警告ステップを前記プロセサにさらに実行させるようにした、請求項1ないし5のいずれかに記載のゲームプログラム。
【請求項7】
前記警告ステップは、前記減算値がゼロを上回る数値が分布する第1数値範囲に属するとき前記警告を第1態様で出力する第1警告出力ステップ、および前記減算値がゼロを下回る数値が分布する第2数値範囲に属するとき前記警告を第2態様で出力する第2警告出力ステップを含む、請求項6記載のゲームプログラム。
【請求項8】
前記Tとして複数の数値の各々を設定する設定ステップ、
前記予測ステップによって予測された複数の到達点に関連して前記第1検出ステップによって検出された複数の高度から前記第2検出ステップによって検出された複数の高さをそれぞれ減算する減算ステップ、および
前記減算ステップによって算出された複数の減算値の中から最小減算値を特定する特定ステップを前記プロセサにさらに実行させるようにし、
前記出力ステップは、前記特定ステップによって特定された最小減算値に対応する相違情報を出力する、請求項1ないし7のいずれかに記載のゲームプログラム。
【請求項9】
前記変更ステップは、前記移動オブジェクトの移動方向を定義する方向パラメータをプレイヤの第1操作に応答して変更する第1変更ステップ、および前記移動オブジェクトの移動速度を定義する速度パラメータを前記プレイヤの第2操作に応答して変更する第2変更ステップを含む、請求項1ないし8のいずれかに記載のゲームプログラム。
【請求項10】
地上物オブジェクトが配置された仮想ゲーム空間と、前記仮想ゲーム空間内を移動する移動オブジェクトとを画面に表示するゲーム装置であって、
前記移動オブジェクトの移動を定義する移動パラメータをプレイヤの操作に応答して変更する変更手段、
時間T(T>0)の後に前記移動オブジェクトが到達する到達点を前記移動パラメータに基づいて予測する予測手段、
現在の前記移動オブジェクトの高度および前記予測手段によって予測された到達点における前記移動オブジェクトの高度の少なくともいずれか一方を検出する第1検出手段、
前記予測手段によって予測された到達点における前記地上物オブジェクトの高さを検出する第2検出手段、および
前記第1検出手段によって検出された高度と前記第2検出手段によって検出された高さとの相違を表す相違情報を前記プレイヤに向けて出力する出力手段を備える、ゲーム装置。
【請求項1】
地上物オブジェクトが配置された仮想ゲーム空間と、前記仮想ゲーム空間内を移動する移動オブジェクトとを画面に表示するゲーム装置のプロセサに、
前記移動オブジェクトの移動を定義する移動パラメータをプレイヤの操作に応答して変更する変更ステップ、
時間T(T>0)の後に前記移動オブジェクトが到達する到達点を前記移動パラメータに基づいて予測する予測ステップ、
現在の前記移動オブジェクトの高度および前記予測ステップによって予測された到達点における前記移動オブジェクトの高度の少なくともいずれか一方を検出する第1検出ステップ、
前記予測ステップによって予測された到達点における前記地上物オブジェクトの高さを検出する第2検出ステップ、および
前記第1検出ステップによって検出された高度と前記第2検出ステップによって検出された高さとの相違を表す相違情報を前記プレイヤに向けて出力する出力ステップを実行させるための、ゲームプログラム。
【請求項2】
前記出力ステップは、前記高さを表す高さ情報を前記相違情報の一部として出力する第1情報出力ステップ、および前記高度を表す高度情報を前記相違情報の他の一部として出力する第2情報出力ステップを含む、請求項1記載のゲームプログラム。
【請求項3】
前記高さ情報は前記高さに対応する長さを有して画面の垂直方向に伸びる第1バーキャラクタを含み、
前記高度情報は前記高度に対応する長さを有して前記画面の垂直方向に伸びる第2バーキャラクタを含む、請求項2記載のゲームプログラム。
【請求項4】
前記第1バーキャラクタは前記画面の下方から上方向に伸びるバー本体と前記高さに相当する位置に設定された上端部とを有し、
前記第2バーキャラクタは前記画面の上方から下方向に伸びるバー本体と前記高度に相当する位置に設定された下端部とを有し、
前記上端部から前記下端部までの間隔が前記高さと前記高度との相違を意味する、請求項3記載のゲームプログラム。
【請求項5】
前記第1情報出力ステップは前記第1バーキャラクタの長さを対数演算によって決定する、請求項3または4記載のゲームプログラム。
【請求項6】
前記予測ステップによって予測された高度から前記検出ステップによって検出された高さを減算することによって求められる減算値が属する数値範囲によって異なる警告を出力する警告ステップを前記プロセサにさらに実行させるようにした、請求項1ないし5のいずれかに記載のゲームプログラム。
【請求項7】
前記警告ステップは、前記減算値がゼロを上回る数値が分布する第1数値範囲に属するとき前記警告を第1態様で出力する第1警告出力ステップ、および前記減算値がゼロを下回る数値が分布する第2数値範囲に属するとき前記警告を第2態様で出力する第2警告出力ステップを含む、請求項6記載のゲームプログラム。
【請求項8】
前記Tとして複数の数値の各々を設定する設定ステップ、
前記予測ステップによって予測された複数の到達点に関連して前記第1検出ステップによって検出された複数の高度から前記第2検出ステップによって検出された複数の高さをそれぞれ減算する減算ステップ、および
前記減算ステップによって算出された複数の減算値の中から最小減算値を特定する特定ステップを前記プロセサにさらに実行させるようにし、
前記出力ステップは、前記特定ステップによって特定された最小減算値に対応する相違情報を出力する、請求項1ないし7のいずれかに記載のゲームプログラム。
【請求項9】
前記変更ステップは、前記移動オブジェクトの移動方向を定義する方向パラメータをプレイヤの第1操作に応答して変更する第1変更ステップ、および前記移動オブジェクトの移動速度を定義する速度パラメータを前記プレイヤの第2操作に応答して変更する第2変更ステップを含む、請求項1ないし8のいずれかに記載のゲームプログラム。
【請求項10】
地上物オブジェクトが配置された仮想ゲーム空間と、前記仮想ゲーム空間内を移動する移動オブジェクトとを画面に表示するゲーム装置であって、
前記移動オブジェクトの移動を定義する移動パラメータをプレイヤの操作に応答して変更する変更手段、
時間T(T>0)の後に前記移動オブジェクトが到達する到達点を前記移動パラメータに基づいて予測する予測手段、
現在の前記移動オブジェクトの高度および前記予測手段によって予測された到達点における前記移動オブジェクトの高度の少なくともいずれか一方を検出する第1検出手段、
前記予測手段によって予測された到達点における前記地上物オブジェクトの高さを検出する第2検出手段、および
前記第1検出手段によって検出された高度と前記第2検出手段によって検出された高さとの相違を表す相違情報を前記プレイヤに向けて出力する出力手段を備える、ゲーム装置。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【公開番号】特開2007−296191(P2007−296191A)
【公開日】平成19年11月15日(2007.11.15)
【国際特許分類】
【出願番号】特願2006−127702(P2006−127702)
【出願日】平成18年5月1日(2006.5.1)
【出願人】(000233778)任天堂株式会社 (1,115)
【Fターム(参考)】
【公開日】平成19年11月15日(2007.11.15)
【国際特許分類】
【出願日】平成18年5月1日(2006.5.1)
【出願人】(000233778)任天堂株式会社 (1,115)
【Fターム(参考)】
[ Back to top ]