ゲームプログラムおよびゲーム装置
【構成】 ゲーム装置10はLCD14を含み、LCD14に関連してタッチパネル22が設けられる。LCD14には、プレイヤキャラクタを含むゲーム画面が表示される。プレイヤがスティック24を用いて、タッチパネル22上を撫でるように操作(ストローク操作)すると、その操作に従ってプレイヤキャラクタが移動される。プレイヤキャラクタの移動速度は、ストローク操作の長さに基づいて決定または算出され、移動方向はストローク操作の方向に決定される。
【効果】 プレイヤはストローク操作するだけでプレイヤキャラクタの移動を自在に操ることができ、操作が簡単である。
【効果】 プレイヤはストローク操作するだけでプレイヤキャラクタの移動を自在に操ることができ、操作が簡単である。
【発明の詳細な説明】
【技術分野】
【0001】
この発明はゲームプログラムおよびゲーム装置に関し、特にたとえば、タッチパネルを操作することによって所定の処理を実行する、ゲームプログラムおよびゲーム装置に関する。
【背景技術】
【0002】
この種の従来のゲーム装置の一例が特許文献1に開示される。この特許文献1によれば、タッチパネルを備えるゲーム装置において、プレイヤの指による操作で、ゲームをプレイすることができる。たとえば、キックボードゲームでは、キックボーダを指で操作し、その操作速度をタッチデータから計算し、操作速度に応じて、キックボーダの移動速度を変化させるようにしてある。
【特許文献1】特開2002−939号
【発明の開示】
【発明が解決しようとする課題】
【0003】
特許文献1では、キックボーダのようなプレイヤキャラクタの移動速度をタッチ操作によって制御するようにしてあるが、プレイヤキャラクタの移動方向は一方向であり、任意の方向にプレイヤキャラクタを移動させることができない。つまり、ゲームが単調であり、面白味に欠ける。
【0004】
それゆえに、この発明の主たる目的は、新規な、ゲームプログラムおよびゲーム装置を提供することである。
【0005】
この発明の他の目的は、プレイヤキャラクタの移動を自在に操ることができる、ゲームプログラムおよびゲーム装置を提供することである。
【課題を解決するための手段】
【0006】
請求項1の発明は、少なくともプレイヤによって操作されるプレイヤキャラクタを含むゲーム空間の一部をゲーム画像として表示する表示器および表示器に関連して設けられるタッチパネルを備えるゲーム装置のゲームプログラムである。このゲームプログラムは、ゲーム装置のプロセサに、タッチ入力検出ステップ、タッチ座標検出ステップ、差分検出ステップ、比較ステップ、位置検出ステップ、および移動処理ステップを実行させる。タッチ入力検出ステップは、タッチパネルへのタッチ入力の有無を一定時間毎に検出する。タッチ座標検出ステップは、タッチ入力検出ステップによって検出されたタッチ入力に基づくタッチ座標を検出する。差分検出ステップは、タッチ入力検出ステップによってタッチ入力が有る状態が連続して検出されたとき、直前の第1タッチ座標と現在の第2タッチ座標との差分を検出する。比較ステップは、差分検出ステップによって検出された差分と所定の閾値とを比較する。位置検出ステップは、ゲーム空間におけるプレイヤキャラクタの現在位置を検出する。そして、移動処理ステップは、差分が所定の閾値を超えるとき、位置検出ステップによって検出された現在位置に基づいて決定される第1移動速度で差分が示す移動方向にプレイヤキャラクタを移動させる。
【0007】
請求項1の発明では、ゲームプログラムは、ゲーム装置(10:実施例で相当する参照符号。以下、同じ。)のプロセサ(42)によって実行される。このゲーム装置は、少なくともプレイヤによって操作されるプレイヤキャラクタ(102)を含むゲーム空間の一部をゲーム画像(100)として表示する表示器(14)および表示器に関連して設けられるタッチパネル(22)を備える。具体的には、ゲームプログラムは、ゲーム装置のプロセサに、タッチ入力検出ステップ(S1)、タッチ座標検出ステップ(S9)、差分検出ステップ(S21)、比較ステップ(S23)、位置検出ステップ(S51)、および移動処理ステップ(S35)を実行させる。タッチ入力検出ステップは、タッチパネルへのタッチ入力の有無を一定時間(たとえば、画面更新単位時間)毎に検出する。タッチ座標検出ステップは、タッチ入力検出ステップによって検出されたタッチ入力に基づくタッチ座標を検出する。差分検出ステップは、タッチ入力検出ステップによってタッチ入力が有る状態が連続して検出されたとき、直前の第1タッチ座標と現在の第2タッチ座標との差分を検出する。つまり、プレイヤ(操作者)によるスクロール操作が有る場合に、一定時間における当該スクロール操作の長さを検出する。比較ステップは、差分検出ステップによって検出された差分(一定時間におけるスクロール操作の長さ)と所定の閾値とを比較する。位置検出ステップは、ゲーム空間におけるプレイヤキャラクタの現在位置を検出する。そして、移動処理ステップは、差分が所定の閾値を超えるとき、位置検出ステップによって検出された現在位置に基づいて決定される第1移動速度で差分が示す移動方向にプレイヤキャラクタを移動させる。つまり、ゲーム空間におけるプレイヤキャラクタの位置に応じて決定される第1移動速度で、たとえば、ストローク操作の方向にプレイヤキャラクタは移動される。
【0008】
請求項1の発明によれば、プレイヤのストローク操作に基づいて決定される移動速度で、ストローク操作の方向にプレイヤキャラクタを移動させることができるので、所望の方向にプレイヤキャラクタを移動させることができる。つまり、直感的な操作ができ、操作性を向上させることができる。
【0009】
また、プレイヤの現在位置に応じて第1移動速度を決定するので、たとえば、ゲーム空間における背景(地形)に応じた第1移動速度を決定することができ、したがって、ゲームのリアリティを表現することができ、ゲームが単調になるのを防止することができる。
【0010】
請求項2の発明は請求項1に従属し、ゲーム装置は、複数種類の地形情報で構成されるゲームマップを記憶する記憶手段をさらに備え、位置検出ステップは、記憶手段に記憶されるゲームマップ上におけるプレイヤキャラクタの現在位置を検出し、移動処理ステップは、地形情報毎に定義されている速度パラメータに基づいて、位置検出ステップによって検出された現在位置が属する地形情報に応じた演算を行うことにより決定される第1移動速度で差分が示す移動方向にプレイヤキャラクタを移動させる。
【0011】
請求項2の発明では、ゲーム装置は、複数種類の地形情報で構成されるゲームマップ(482b)を記憶する記憶手段(48)をさらに備える。位置検出ステップは、記憶手段に記憶されるゲームマップ上におけるプレイヤキャラクタの現在位置を検出する。移動処理ステップは、地形情報毎に定義される速度パラメータに基づいて、位置検出ステップによって検出された現在位置が属する地形情報に応じた演算を行うことにより決定される第1移動速度で差分が示す移動方向にプレイヤキャラクタを移動させる。つまり、プレイヤキャラクタの第1移動速度は、その現在位置に対応するゲームマップ上の地形に応じて決定されるのである。
【0012】
請求項2の発明によれば、プレイヤキャラクタの現在位置における地形情報に定義される速度パラメータに基づいてその移動速度が決定されるので、ゲームが単調になるのを防止することができる。また、ゲームのリアリティを表現することができる。
【0013】
請求項3の発明は請求項1または2に従属し、プレイヤキャラクタが移動中か否かを判定する移動判定ステップをさらに実行させ、移動処理ステップは、タッチ入力検出ステップによってタッチ入力が無い状態が検出され、移動判定ステップによってプレイヤキャラクタが移動中であると判定されたとき、第1減速度を現在の移動速度から減算した第2移動速度を算出する第2移動速度算出ステップ、および差分が所定の閾値以下であり、移動判定ステップによってプレイヤキャラクタが移動中であると判定されたとき、第1減速度よりも大きい第2減速度を現在の移動速度から減算した第3移動速度を算出する第3移動速度算出ステップを含む。
【0014】
請求項3の発明では、移動判定ステップ(S3,S27)は、プレイヤキャラクタが移動中か否かを判定する。移動処理ステップは、第2移動速度算出ステップ(S7,S33)および第3移動速度算出ステップ(S29,S31,S33)を含む。第2移動速度算出ステップは、タッチ入力検出ステップによってタッチ入力がない状態が検出され、移動判定ステップによってプレイヤキャラクタが移動中であると判定されたき、現在の移動速度から第1減速度を減算した第2移動速度を算出する。つまり、ストローク操作を終了すると、プレイヤキャラクタは、第1減速度で次第に(慣性的に)減速され、停止する。また、第3移動速度算出ステップは、差分が所定の閾値以下であり、移動判定ステップによってプレイヤキャラクタが移動中であると判定されたとき、第1減速度よりも大きい第2減速度を現在の移動速度から減算した第3移動速度を算出する。つまり、プレイヤキャラクタの移動中に、所定の閾値以下の長さのストローク操作があると、第2減速度で減速させ、プレイヤキャラクタを急停止させる。
【0015】
請求項3の発明によれば、プレイヤキャラクタの移動中に、ストローク操作を止めた場合には、プレイヤキャラクタを次第に減速させ、所定の閾値以下のストローク操作をした場合には、プレイヤキャラクタを急激に減速させるので、ストローク操作の仕方によって、減速方法を変化させることができる。つまり、プレイヤキャラクタの移動を自在に操ることができる。
【0016】
請求項4の発明は請求項3に従属し、位置検出ステップによって検出された現在位置に基づいて第1減速度および第2減速度を決定する減速度決定ステップをさらに実行させる。
【0017】
請求項4の発明では、減速度決定ステップ(S7,S29,S31)は、位置検出ステップによって検出されたプレイヤキャラクタの現在位置に基づいて第1減速度および第2減速度を決定する。
【0018】
請求項4の発明によれば、第1移動速度のみならず、減速度もプレイヤキャラクタの現在位置に基づいて変化させるので、ゲームのリアリティを表現することができ、ゲームが単調になるのを防止することができる。
【0019】
請求項5の発明は請求項3または4に従属し、第3移動速度算出ステップは、差分が連続して所定の閾値以下であるとき、第2減速度を次第に大きくさせて第3移動速度を算出する。
【0020】
請求項5の発明では、第3移動速度算出ステップは、差分が連続して所定の閾値以下であるとき、第2減速度を次第に大きくさせて第3移動速度を算出する。つまり、プレイヤキャラクタは急停止する。
【0021】
請求項5の発明によれば、プレイヤキャラクタを急停止させることもできる。
【0022】
請求項6の発明は、少なくともプレイヤによって操作されるプレイヤキャラクタを含むゲーム空間の一部をゲーム画像として表示する表示器および表示器に関連して設けられるタッチパネルを備えるゲーム装置である。このゲーム装置は、タッチ入力検出手段、タッチ座標検出手段、差分検出手段、比較手段、位置検出手段、および移動処理手段を備える。タッチ入力検出手段は、タッチパネルへのタッチ入力の有無を一定時間毎に検出する。タッチ座標検出手段は、タッチ入力検出手段によって検出されたタッチ入力に基づくタッチ座標を検出する。差分検出手段は、タッチ入力検出手段によってタッチ入力が有る状態が連続して検出されたとき、直前の第1タッチ座標と現在の第2タッチ座標との差分を検出する。比較手段は、差分検出手段によって検出された差分と所定の閾値とを比較する。位置検出手段は、ゲーム空間におけるプレイヤキャラクタの現在位置を検出する。そして、移動処理手段は、差分が所定の閾値よりも大きいとき、位置検出手段によって検出された現在位置に基づいて決定される移動速度で差分が示す移動方向にプレイヤキャラクタを移動させる。
【0023】
請求項6の発明においても請求項1の発明と同様に、直感的な操作ができ、操作性を向上させることができる。
【発明の効果】
【0024】
この発明によれば、連続して検出されるタッチ座標の差分が示す方向にプレイヤキャラクタを移動させるので、プレイヤは自在にプレイヤキャラクタを移動させることができる。また、プレイヤキャラクタの位置に応じて移動速度や減速度を決定するので、ゲームが単調になるのを防止することができる。
【0025】
この発明の上述の目的,その他の目的,特徴および利点は、図面を参照して行う以下の実施例の詳細な説明から一層明らかとなろう。
【発明を実施するための最良の形態】
【0026】
図1を参照して、この発明の一実施例であるゲーム装置10は、第1の液晶表示器(LCD)12および第2のLCD14を含む。このLCD12およびLCD14は、所定の配置位置となるようにハウジング16に収納される。この実施例では、ハウジング16は、上側ハウジング16aと下側ハウジング16bとによって構成され、LCD12は上側ハウジング16aに収納され、LCD14は下側ハウジング16bに収納される。したがって、LCD12とLCD14とは縦(上下)に並ぶように近接して配置される。
【0027】
なお、この実施例では、表示器としてLCDを用いるようにしてあるが、LCDに代えて、EL(Electronic Luminescence)ディスプレイやプラズマディスプレイを用いるようにしてもよい。
【0028】
図1からも分かるように、上側ハウジング16aは、LCD12の平面形状よりも少し大きな平面形状を有し、一方主面からLCD12の表示面を露出するように開口部が形成される。一方、下側ハウジング16bは、その平面形状が上側ハウジング16aよりも横長に選ばれ、横方向の略中央部にLCD14の表示面を露出するように開口部が形成される。また、下側ハウジング16bには、音抜き孔18が形成されるとともに、操作スイッチ20(20a,20b,20c,20d,20e,20Lおよび20R)が設けられる。
【0029】
また、上側ハウジング16aと下側ハウジング16bとは、上側ハウジング16aの下辺(下端)と下側ハウジング16bの上辺(上端)の一部とが回動可能に連結されている。したがって、たとえば、ゲームをプレイしない場合には、LCD12の表示面とLCD14の表示面とが対面するように、上側ハウジング16aを回動させて折りたたんでおけば、LCD12の表示面およびLCD14の表示面に傷がつくなどの破損を防止することができる。ただし、上側ハウジング16aと下側ハウジング16bとは、回動可能に連結せずに、それらを一体的(固定的)に設けたハウジング16を形成するようにしてもよい。
【0030】
操作スイッチ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との連結部以外に当該連結部を挟むように、左右に配置される。
【0031】
方向指示スイッチ20aは、ディジタルジョイスティックとして機能し、4つの押圧部の1つを操作することによって、プレイヤによって操作可能なプレイヤキャラクタ(またはプレイヤオブジェクト)の移動方向を指示したり、カーソルの移動方向を指示したりする等に用いられる。スタートスイッチ20bは、プッシュボタンで構成され、ゲームを開始(再開)したり、一時停止(Pause)したりする等に用いられる。セレクトスイッチ20cは、プッシュボタンで構成され、ゲームモードの選択等に用いられる。
【0032】
動作スイッチ20dすなわちAボタンは、プッシュボタンで構成され、方向指示以外の動作、すなわち、プレイヤキャラクタに打つ(パンチ)、投げる、つかむ(取得)、乗る、ジャンプするなどの任意のアクションをさせることができる。たとえば、アクションゲームにおいては、ジャンプ、パンチ、武器を動かす等を指示することができる。また、ロールプレイングゲーム(RPG)やシミュレーションRPGにおいては、アイテムの取得、武器やコマンドの選択および決定等を指示することができる。動作スイッチ20eすなわちBボタンは、プッシュボタンで構成され、セレクトスイッチ20cで選択したゲームモードの変更やAボタン20dで決定したアクションの取り消し等のために用いられる。
【0033】
動作スイッチ(左押しボタン)20Lおよび動作スイッチ(右押しボタン)20Rは、プッシュボタンで構成され、左押しボタン(Lボタン)20Lおよび右押しボタン(Rボタン)20Rは、Aボタン20dおよびBボタン20eと同様の操作に用いることができ、また、Aボタン20dおよびBボタン20eの補助的な操作に用いることができる。
【0034】
また、LCD14の上面には、タッチパネル22が装着される。タッチパネル22としては、たとえば、抵抗膜方式、光学式(赤外線方式)および静電容量結合式のいずれかの種類のものを用いることができる。また、タッチパネル22は、その上面(検出面)をスティック24ないしはペン(スタイラスペン)或いは指(以下、これらを「スティック24等」という場合がある。)で、押圧したり、撫でたり、触れたりすることにより操作すると、スティック24等の操作位置の座標を検出して、検出した座標(検出座標)に対応する座標データを出力する。
【0035】
この実施例では、LCD14(LCD12も同じ、または略同じ。)の表示面の解像度は256dot×192dotであり、タッチパネル22の検出面の検出精度もその解像度に対応して256dot×192dotとしてある。ただし、タッチパネル22の検出面の検出精度は、LCD14の表示面の解像度よりも低くてもよく、高くてもよい。
【0036】
LCD12およびLCD14には異なるゲーム画像(ゲーム画面)を表示することができる。たとえば、レースゲームでは、一方のLCDに移動体の運転席からの視点による画面を表示し、または、移動体をその後ろまたは上方から追従するカメラで撮影した画像を表示し、他方のLCDにレース(コース)全体の画面を表示することができる。また、RPGでは、一方のLCDにマップやプレイヤキャラクタ等のキャラクタを表示し、他方のLCDにプレイヤキャラクタが所有するアイテムを表示することができる。さらに、一方のLCD(たとえば、LCD12)にゲームのプレイ画面を表示し、他方のLCD(たとえば、LCD14)に当該ゲームを操作するための文字情報やアイコン等を含むゲーム画面(操作画面)を表示することができる。さらには、2つのLCD12およびLCD14を合わせて1つの画面として用いることにより、プレイヤキャラクタが倒さなければならない巨大な怪物(敵キャラクタ)を表示することもできる。
【0037】
したがって、プレイヤはスティック24等でタッチパネル22を操作することにより、LCD14の画面に表示されるプレイヤキャラクタ、敵キャラクタ、アイテムキャラクタ、文字情報、アイコン等のキャラクタ画像を指示(指定)したり、移動させたり、コマンドを選択したりすることができる。また、3次元ゲーム空間に設けられる仮想カメラ(視点)の方向を変化させたり、ゲーム画面をスクロール(徐々に移動表示)させたりすることもできる。
【0038】
このように、ゲーム装置10は、2画面分の表示部となるLCD12およびLCD14を有し、いずれか一方(この実施例では、LCD14)の上面にタッチパネル22が設けられるので、2画面(12,14)と2系統の操作部(20,22)とを有する構成になっている。
【0039】
また、この実施例では、スティック24は、たとえば上側ハウジング16aの側面(右側面)近傍に設けられる収納部(収納穴)26に収納することができ、必要に応じて取り出される。ただし、スティック24を設けない場合には、収納部26を設ける必要もない。
【0040】
さらに、ゲーム装置10はメモリカード(またはゲームカートリッジ)28を含み、このメモリカード28は着脱自在であり、下側ハウジング16bの裏面ないしは下端(底面)に設けられる挿入口30から挿入される。図1では省略するが、挿入口30の奥部には、メモリカード28の挿入方向先端部に設けられるコネクタ(図示せず)と接合するためのコネクタ46(図2参照)が設けられており、したがって、メモリカード28が挿入口30に挿入されると、コネクタ同士が接合され、ゲーム装置10のCPUコア42(図2参照)がメモリカード28にアクセス可能となる。
【0041】
なお、図1では表現できないが、下側ハウジング16bの音抜き孔18と対応する位置であり、この下側ハウジング16bの内部にはスピーカ32(図2参照)が設けられる。
【0042】
また、図1では省略するが、たとえば、下側ハウジング16bの裏面側には、電池収容ボックスが設けられ、また、下側ハウジング16bの底面側には、電源スイッチ、音量スイッチ、外部拡張コネクタおよびイヤフォンジャックなどが設けられる。
【0043】
図2はゲーム装置10の電気的な構成を示すブロック図である。図2を参照して、ゲーム装置10は電子回路基板40を含み、この電子回路基板40にはCPUコア42等の回路コンポーネントが実装される。CPUコア42は、バス44を介してコネクタ46に接続されるととともに、RAM48、第1のグラフィック処理ユニット(GPU)50、第2のGPU52、入出カインターフエース回路(以下、「I/F回路」という。)54およびLCDコントローラ60が接続される。
【0044】
コネコタ46には、上述したように、メモリカード28が着脱自在に接続される。メモリカード28は、ROM28aおよびRAM28bを含み、図示は省略するが、ROM28aおよびRAM28bは、互いにバスで接続され、さらに、コネクタ46と接合されるコネクタ(図示せず)に接続される。したがって、上述したように、CPUコア42は、ROM28aおよびRAM28bにアクセスすることができるのである。
【0045】
ROM28aは、ゲーム装置10で実行すべきゲーム(仮想ゲーム)のためのゲームプログラム、画像(キャラクタ画像、背景画像、アイテム画像、アイコン(ボタン)画像、メッセージ画像など)データおよびゲームに必要な音(音楽)のデータ(音データ)等を予め記憶する。RAM(バックアップRAM)28bは、そのゲームの途中データやゲームの結果データを記憶(セーブ)する。
【0046】
RAM48は、バッファメモリないしはワーキングメモリとして使用される。つまり、CPUコア42は、メモリカード28のROM28aに記憶されたゲームプログラム、画像データおよび音データ等をRAM48にロードし、ロードしたゲームプログラムを実行する。また、CPUコア42は、ゲームの進行に応じて一時的に発生するデータ(ゲームデータやフラグデータ)をRAM48に記憶しつつゲーム処理を実行する。
【0047】
なお、ゲームプログラム、画像データおよび音データ等は、ROM28aから一度に全部、または部分的かつ順次的に読み出され、RAM48に記憶(ロード)される。
【0048】
GPU50およびGPU52は、それぞれ、描画手段の一部を形成し、たとえばシングルチップASICで構成され、CPUコア42からのグラフィックスコマンド(graphics command :作画命令)を受け、そのグラフィックスコマンドに従ってゲーム画像データを生成する。ただし、CPUコア42は、グラフィックスコマンドに加えて、ゲーム画像データの生成に必要な画像生成プログラム(ゲームプログラムに含まれる。)をGPU50およびGPU52のそれぞれに与える。
【0049】
また、GPU50には、第1のビデオRAM(以下、「VRAM」という。)56が接続され、GPU52には、第2のVRAM58が接続される。GPU50およびGPU52が作画コマンドを実行するにあたって必要なデータ(画像データ:キャラクタデータやテクスチャ等のデータ)は、GPU50およびGPU52が、それぞれ、第1のVRAM56および第2のVRAM58にアクセスして取得する。なお、CPUコア42は、描画に必要な画像データをGPU50およびGPU52を介して第1のVRAM56および第2のVRAM58に書き込む。GPU50はVRAM56にアクセスして描画のためのゲーム画像データを作成し、GPU52はVRAM58にアクセスして描画のためのゲーム画像データを作成する。
【0050】
VRAM56およびVRAM58は、LCDコントローラ60に接続される。LCDコントローラ60はレジスタ62を含み、レジスタ62はたとえば1ビットで構成され、CPUコア42の指示によって「0」または「1」の値(データ値)を記憶する。LCDコントローラ60は、レジスタ62のデータ値が「0」である場合には、GPU50によって作成されたゲーム画像データをLCD12に出力し、GPU52によって作成されたゲーム画像データをLCD14に出力する。また、LCDコントローラ60は、レジスタ62のデータ値が「1」である場合には、GPU50によって作成されたゲーム画像データをLCD14に出力し、GPU52によって作成されたゲーム画像データをLCD12に出力する。
【0051】
なお、LCDコントローラ60は、VRAM56およびVRAM58から直接ゲーム画像データを読み出したり、GPU50およびGPU52を介してVRAM56およびVRAM58からゲーム画像データを読み出したりする。
【0052】
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から出力する。
【0053】
図3(A)および図3(B)は、この実施例のゲーム装置10のLCD14に表示されるゲーム画面100の例を示す図解図である。図3(A)に示すように、ゲーム画面100では、3次元仮想空間(ゲーム空間)のうち、プレイヤキャラクタ102を含む一部の領域(範囲)が表示される。図3(A)および図3(B)から分かるように、プレイヤキャラクタ102はゲーム画面100の略中央に表示される。また、ゲーム画面100には、プレイヤキャラクタ102が走行可能な道路オブジェクト104、草原オブジェクト106および森林オブジェクト108のような背景オブジェクトも表示される。
【0054】
なお、図3(A)および図3(B)では省略するが、上述したように、LCD14上にタッチパネル22が設けられる。
【0055】
たとえば、図3(A)に示すように、プレイヤがスティック24をLCD14(タッチパネル22)上で撫でるように画面右方に移動(スライド)させると、すなわち、スティック24を用いて右方向にドラッグ操作ないしストローク操作(以下、「ストローク操作」という。)すると、このストローク操作に従ってプレイヤキャラクタ102は3次元仮想空間(ゲーム空間)内を右方向に移動される。図3(B)はストローク操作に従ってプレイヤキャラクタ102が移動した後のゲーム画面100である。
【0056】
図面では表現することができないが、ストローク操作に従ってプレイヤキャラクタ102がゲーム空間内を移動される様子(アニメーション)がゲーム画面100としてLCD14に表示される。後で詳細に説明するが、プレイヤキャラクタ102は、ストローク操作に基づいて決定ないし算出される移動速度および移動方向(ストローク操作と同じ方向)で移動される。
【0057】
この実施例のゲーム(仮想ゲーム)では、図4に示すような3次元仮想空間(ゲーム空間)が設けられ、このゲーム空間内に設定されるスタート地点から出発し、複数の通過ポイントを通過して、ゴール地点に達するまでの時間を競う。図示は省略するが、ゲーム空間内には、敵キャラクタやアイテムキャラクタ等の他のキャラクタも存在する。また、分かり易く示すために、上述したような背景オブジェクト(104,106,108等)は省略してある。ゲーム中では、たとえば、敵キャラクタと競争したり、所定のアイテムを取得することにより、プレイヤキャラクタ102のパラメータ(ライフ、レベル等)が変化されたりする。
【0058】
なお、ゲーム空間の全体を、ゲーム画面120としてLCD12に表示することもできる。この場合には、プレイヤは、LCD12に表示されるゲーム画面120によってゲーム空間の全体におけるプレイヤキャラクタ102または敵キャラクタ或いはアイテムの位置を知ることができ、LCD14に表示されるゲーム画面100によってプレイヤキャラクタ102が現在走行中の一部の領域についての詳細を知ることができる。
【0059】
ただし、図3(A)および図3(B)に示すように、ゲーム画面100では、プレイヤキャラクタ102を画面中央に表示するようにしてあるため、背景オブジェクト(104,106,108)の表示位置の変化(移動)により、プレイヤキャラクタ102が移動したことが分かる。
【0060】
なお、ゲーム空間に存在するプレイヤキャラクタ102を移動させずに、ゲーム空間内の背景オブジェクト(104,106,108)を移動させることにより、プレイヤキャラクタ102が移動しているように見せることもできる。かかる場合には、ストローク操作に基づいて決定ないし算出される移動速度で、ストローク操作とは逆向きに背景オブジェクトを移動させるようにすればよい。つまり、プレイヤのストローク操作によって、プレイヤキャラクタ102と背景オブジェクトとの相対位置が変化されるのである。
【0061】
次に、図5および図6を用いて、プレイヤキャラクタ102の移動制御について説明することにする。ただし、以下の説明では、1フレーム(画面更新単位時間:1/60秒)期間におけるストローク操作の長さが所定の閾値(たとえば、5dot)以下である場合には、当該ストローク操作を「超短入力」という。ただし、この実施例では、一点を押し続ける操作も超短入力に含まれる。また、1フレーム期間におけるストーク操作の長さが所定の閾値を超える場合には、当該ストローク操作を「短入力」という。そして、1フレーム期間を超えてストローク操作が継続し、各フレームにおけるストローク操作の長さが所定の閾値を超える場合には、当該ストローク操作を「長入力」という。つまり、「長入力」は、「短入力」の複数フレーム分の集まりと同等である。
【0062】
図5(A)は1回の短入力を行った場合にプレイヤキャラクタ102が移動する様子を示す。この図5(A)に示す例(図5(B),図6(A)および図6(B)も同様。)では、ストローク操作の向きは、図面の上方向である。図5(A)に示すように、1回の短入力が行われると、プレイヤキャラクタ102は第0フレームから第1フレームまでの間、一定の移動速度(以下、「一定速度」という。)Aで移動され、ストローク操作の終了(タッチオフ)により、一定の減速度Bで、第1フレームから第3フレームにかけて次第に(慣性的に)減速され、停止される。ここで、移動速度(説明の都合上、「新速度」という。)Vjは、1フレーム毎に決定(算出)される。したがって、1フレーム期間におけるストローク操作の長さが所定の閾値を超える場合には、一定速度Aが新速度Vjとして決定され、ストローク操作が終了すると、減速度Bは現在の移動速度(現速度)Viから1フレーム毎に減算される。ただし、減速が開始される時点における現速度Viは一定速度Aである。
【0063】
具体的には、1フレーム期間におけるストローク操作の長さは、現在(現フレーム)におけるタッチ座標(現タッチ座標)Pj(Xj,Yj)を終点とし、1つ手前のフレーム(前フレーム)におけるタッチ座標(前タッチ座標)Pi(Xi,Yi)を始点とするベクトルの大きさ(スカラ)で決定される。つまり、1フレーム期間におけるストローク操作の長さ(座標距離)ΔDは数1に従って算出される。
【0064】
[数1]
ΔD=(ΔX,ΔY)=(Xj−Xi,Yj−Yi)
また、一定の減速度Bで減速する場合には、新速度Vjは数2に従って算出される。
【0065】
[数2]
Vj=Vi−B
ただし、現速度Viは、新速度Vjを算出する直前のフレームすなわち前フレームで決定または算出された新速度Vjである。なお、新速度Vjの決定および算出方法は、後述する図5(B)、図6(A)および図6(B)の場合も同じである。また、プレイヤキャラクタ102の移動中(走行中)において、ストローク操作の長さが所定の閾値以下となる場合には、図6(B)を用いて後述するように、一定の減速度Bよりも大きい減速度で減速される。
【0066】
ここで、図5(A)(図5(B)、図6(A)および図6(B)も同様。)に示すように、プレイヤキャラクタ102の右側に記載される矢印は、ストローク操作によってプレイヤキャラクタ102が移動される距離(移動距離)およびその方向(移動方向)を示してある。また、プレイヤがストローク操作を開始(タッチオン)した時点を第0フレームとし、プレイヤキャラクタ102は第0フレームから移動を開始され、1フレーム毎に、その移動が制御される。
【0067】
ただし、プレイヤキャラクタ102の移動距離は、プレイヤがストローク操作しているときに一定速度Aで移動した距離と、プレイヤがストローク操作を終了(タッチオフ)した後に減速度Bで減速を開始して停止するまでの距離との和である。移動距離の長さは、後述する図5(B)および図6(A)の場合も同様である。また、プレイヤキャラクタ102の移動方向はストローク操作と同じ方向(ここでは、上方向)であり、実際には1フレーム毎に検出されるタッチ座標(座標データ)に基づいて決定される。具体的には、プレイヤキャラクタ102の移動方向は、現タッチ座標Pj(Xj,Yj)を終点とし、前タッチ座標Pi(Xi,Yi)を始点とするベクトルの方向で決定される。これは、後述する図5(B)、図6(A)および図6(B)の場合も同じである。
【0068】
図5(B)は1回の長入力を行った場合にプレイヤキャラクタ102が移動する様子を示す。たとえば、図5(B)に示す例では、第0フレームから第3フレームまでの間において、ストローク操作が継続的に行われ、その後、ストローク操作が終了された場合について示してある。したがって、プレイヤキャラクタ102は、第0フレームから第3フレームまでの間において、一定速度Aで移動される。そして、プレイヤキャラクタ102は、第3フレームから第5フレームにかけて減速度Bで減速され、停止される。減速方法、移動距離の長さおよび移動方向の決定は、それぞれ、上述したとおりである。
【0069】
図5(A)および図5(B)を用いて説明したように、1フレーム期間におけるストローク操作の長さが所定の閾値を超える場合には、プレイヤキャラクタ102は、一定速度Aで当該ストロークの方向に移動される。また、所定の閾値を超える長さのストローク操作が複数のフレームに跨って継続される場合には、一定速度Aで移動される期間が長くなり、したがってプレイヤキャラクタ102の移動距離も長くなる。
【0070】
図6(A)は短入力が3回連続して行われた場合にプレイヤキャラクタ102が移動する様子を示す。上述したように、ストローク操作の開始時点を第0フレームとしてあり、ここでは、3回連続してストローク操作が行われるため、図6(A)に示すように、各ストローク操作の開始時点に対応して、第0フレームと記載してある。短入力が3回連続して行われる場合には、1回目と2回目のストローク操作の終了後に、プレイヤキャラクタ102は減速を開始するまたは開始しようとするが、2回目と3回目のストローク操作が開始されることによって、継続的に一定速度Aで移動されることになる。そして、3回目のストローク操作が終了した後に、図5(A)および図5(B)に示した場合と同様に、プレイヤキャラクタ102は減速され、停止される。
【0071】
図6(B)は短入力を3回連続して行った後に、超短入力を2回連続して行った場合にプレイヤキャラクタ102が移動される様子を示す。まず、短入力を3回連続して行う場合のプレイヤキャラクタ102の移動については、図6(A)に示した場合と同じであるため、重複した説明は省略する。短入力を3回連続した後では、プレイヤキャラクタ102は、一定の減速度Bで減速するように制御される。続いて、プレイヤキャラクタ102が減速しながら移動しているときに、超短入力があると、プレイヤキャラクタ102が、一定の減速度Bよりも大きい減速度で減速するように、新速度Vjが数2に従って算出される。具体的には、プレイヤキャラクタ102が移動中に、超短入力がある場合には、減速度Bは数3に従って更新される。
【0072】
[数3]
B=B+α
ここで、“=”は代入を意味する。また、減速度Bの増加量αは、この仮想ゲームのプログラマや開発者によって予め決定(設定)される値である。この減速度Bも1フレーム毎に更新され、超短入力が継続する場合には、減速度Bが次第に大きくなり、したがって、プレイヤキャラクタ102は急停止される。したがって、図6(B)に示す場合のプレイヤキャラクタ102の移動距離は、短入力によりストローク操作しているときに一定速度Aで移動した距離と、超短入力によりストローク操作しているときに次第に大きくなる減速度Bで移動した距離との和である。
【0073】
また、図示は省略するが、この実施例では、プレイヤキャラクタ102が走行している位置ないし場所に応じて、一定速度Aと減速度Bとを変化させるようにしてある。上述したように、ゲーム空間(ゲームマップ)には、道路オブジェクト104、草原オブジェクト106および森林オブジェクト108が設けられており、プレイヤキャラクタ102は、道路を走行し易く、草原、森林になるに連れて、走行し難くなる。したがって、この実施例では、プレイヤキャラクタ102が走行している位置(現在位置)の属する(に対応する)ゲームマップ上の地形に応じて速度を決定するようにしてある。具体的には、プレイヤキャラクタ102が道路を走行している場合に決定される一定速度AをA1とし、草原を走行している場合に決定される一定速度AをA2とし、そして、森林を走行している場合に決定される一定速度AをA3とすると、数4の関係が成り立つ。
【0074】
[数4]
A1>A2>A3
一方、走行のし易さは、逆に言うと、停止のし難さとなるため、プレイヤキャラクタ102の現在位置に対応するゲームマップ上の地形に応じて、決定する減速度Bを変化させることもできる。この実施例では、プレイヤキャラクタ102が道路を走行している場合に決定される減速度BをB1とし、草原を走行している場合に決定される減速度BをB2とし、そして、森林を走行している場合に決定される減速度BをB3とすると、数5の関係が成り立つ。
【0075】
[数5]
B3>B2>B1
このように、プレイヤキャラクタ102の走行している現在位置に対応するゲームマップ上の地形に応じて、異なる一定速度A(A1,A2,A3)および減速度B(B1,B2,B3)が決定されるので、ゲームが単調にならず、しかもリアリティを与えることができる。
【0076】
図7はゲーム装置10の内部に設けられるRAM48のメモリマップの例を示す図解図である。この図7を参照して、RAM48は、プログラム記憶領域480およびデータ記憶領域482を含む。プログラム記憶領域480はゲームプログラムを記憶し、ゲームプログラムは、ゲームメイン処理プログラム480a、画像生成プログラム480b、画像表示プログラム480c、タッチ入力検出プログラム480d、座標変化算出プログラム480eおよび移動速度算出プログラム480fなどによって構成される。
【0077】
ゲームメイン処理プログラム480aは、この実施例の仮想ゲームのメインルーチンを処理するためのプログラムである。画像生成プログラム480bは、ゲーム空間に設けられるステージ(コース104)、プレイヤキャラクタ(102,108,110)、ノンプレイヤキャラクタ(プレイヤの操作によらないで、コンピュータ(CPUコア42)により移動等を制御されるキャラクタ。)および背景オブジェクトなどのゲーム画像を生成するためのプログラムである。画像表示プログラム480cは、画像生成プログラム480bに従って生成されたゲーム画像(ゲーム画面)をLCD12およびLCD14に表示するためのプログラムである。
【0078】
タッチ入力検出プログラム480dは、タッチ入力の有無を一定時間(たとえば、1フレーム)毎に検出する。ただし、タッチ入力の有無は、タッチパネル22から座標データが入力されるか否かで判断する。タッチ入力が有る場合には、後述するタッチ入力フラグ482eをオンするとともに、タッチ入力が示すタッチ座標、つまりタッチパネル22から入力される座標データを後述する座標バッファ482cに記憶(一時記憶)する。一方、タッチ入力が無い場合には、タッチ入力フラグ482eをオフする。
【0079】
座標変化算出プログラム480eは、連続する複数の(この実施例では、2つの)フレームでタッチ座標(座標データ)が検出されたとき、つまりタッチ入力が継続するストローク操作が検出されたとき、2つのタッチ座標の変化(差分)を算出するためのプログラムである。ただし、2つのフレームは、現在のフレーム(現フレーム)およびその1フレーム手前のフレーム(前フレーム)である。
【0080】
移動速度算出プログラム480fは、座標変化算出プログラム480eに従って算出されたタッチ座標の差分が所定の閾値を超えるか否かに基づいてプレイヤキャラクタ102の移動速度(新速度Vj)を算出(決定)するためのプログラムである。この実施例では、プレイヤキャラクタ102が停止しているときに、ストローク操作があり、タッチ座標の差分が閾値を超える場合には、新速度Vjは一定速度Aに決定される。このとき、プレイヤキャラクタ102の現在位置に応じて、一定速度A1,A2,A3のいずれかが決定される。一方、タッチ座標の差分が所定の閾値以下である場合には、新速度Vjは0である。また、プレイヤキャラクタ102が移動中(走行中)に、タッチ座標の差分が閾値以下である場合には、新速度Vjは一定速度Aから一定の減速度Bよりも大きい減速度(B+α)を減算して算出される。ただし、プレイヤキャラクタ102が移動中に、タッチ座標の差分が所定の閾値を超える場合には、上述した場合と同様に、プレイヤキャラクタ102の現在位置に応じた一定速度Aが決定される。さらには、移動速度算出プログラム480fは、プレイヤキャラクタ102の移動中に、タッチ入力検出プログラム480dに従ってタッチ入力が無い状態(タッチオフ)が検出されたときには、現速度Viから一定の減速度Bを減算した移動速度(新速度Vj)を算出するためのプログラムでもある。ただし、新速度Vjは、差分に基づいて算出されるため、差分が検出される一定時間(1フレーム)毎に、決定または算出されることになる。さらに、移動速度算出プログラム480fは、算出した新速度Vjの値に応じて、後述する走行中フラグ482gのオン/オフを制御するためのプログラムでもある。具体的には、新速度Vjが0より大きい場合には、走行中フラグ482gをオンし、新速度Vjが0である場合には、走行中フラグ482gをオフする。
【0081】
なお、図示は省略するが、ゲームプログラム記憶領域480には、音再生プログラムやバックアッププログラムなども記憶される。音再生プログラムは、音(音楽)データを用いて、ゲームに必要な音(音楽)を再生するためのプログラムである。また、バックアッププログラムは、ゲームの進行に従って発生するデータ(ゲームの途中データや結果データ)をプレイヤの指示や所定のタイミング(イベント)に従ってメモリカード28のRAM28bに記憶(セーブ)するためのプログラムである。
【0082】
データ記憶領域482には、オブジェクトデータ482a、マップデータ482bおよび速度データ482cのようなデータが記憶される。オブジェクトデータ482aは、上述した画像生成プログラム480bに従ってゲーム画像を生成する際に使用するポリゴンデータやテクスチャデータを含み、またプレイヤの操作に従って更新される現在位置(3次元位置)についての位置データも含む。ただし、上述したような背景オブジェクト(102,104,106等)では、ゲーム空間(ゲームマップ)上において固定的に配置され、しかも同じ種類であっても異なる場所に配置される場合があるため、その位置データは複数記憶される場合もある。マップデータ482bは、図4に示したようなゲーム空間を表示するためのデータであり、具体的には、マス目で区切ったマップ(ゲームマップ)において、その各マス(ユニット)に配置する地形(背景オブジェクト)の種類ないし情報(地形情報)を示すデータである。つまり、マップデータ482bは、複数種類の地形(背景オブジェジェクト)を示すデータと各背景オブジェクトの配置位置ないし範囲を示すデータとによって構成される。速度データ482cは、プレイヤキャラクタ102の一定の移動速度Aおよび減速度Bについてのデータ(数値データ)である。具体的には、一定速度A1,A2,A3および減速度B1,B2,B3についての数値データが記憶される。ただし、上述したように、一定速度A1〜A3および減速度B1〜B3は、プレイヤキャラクタ102の現在位置が属するゲームマップ上の地形すなわち背景オブジェクト(道路オブジェクト104,草むらオブジェクト106,森林オブジェクト108)に対応して決定される速度である。つまり、一定速度Aおよび減速度Bは、地形に応じて決定される速度パラメータである。
【0083】
また、データ記憶領域482には、座標バッファ482dおよび速度バッファ482eが設けられる。座標バッファ482dは、タッチ入力検出プログラム480dに従って検出された座標データを記憶(一時記憶)するための領域であり、少なくとも2フレーム分の座標データを記憶可能な容量を有している。また、速度バッファ482eは、プレイヤキャラクタ102の現速度Viおよび現在の減速度Bについてのデータ(数値データ)を記憶(一時記憶)するための領域である。
【0084】
さらに、データ記憶領域482には、タッチ入力フラグ482fおよび走行中フラグ482gが記憶される。タッチ入力フラグ482fは、1ビットのレジスタで構成され、タッチ入力検出プログラム480dに従ってそのオン/オフが制御される。この実施例では、タッチ入力フラグ482fをオンする場合には、レジスタにデータ値「1」が設定される。逆に、タッチ入力フラグ482fをオフする場合には、レジスタにデータ値「0」が設定される。走行中フラグ482gもまた、1ビットのレジスタで構成され、移動速度算出プログラム480fに従ってそのオン/オフが制御される。この実施例では、走行中フラグ482gをオンする場合には、レジスタにデータ値「1」が設定される。逆に、走行中フラグ482gをオフする場合には、レジスタにデータ値「0」が設定される。
【0085】
なお、図示は省略するが、データ記憶領域482には、ゲームに必要な音を出力するための音(音楽)データやゲームの進行に伴って発生するデータ(ゲームの途中データ,結果データ)やフラグ(イベントフラグ)なども記憶される。
【0086】
具体的には、上述したようなプレイヤキャラクタ102の移動制御を、図2に示したCPUコア42が図8および図9に示すフロー図に従って処理する。なお、図示は省略するが、CPUコア42は、仮想ゲームのメインルーチンを別個独立に実行し、たとえば、ゲーム画面(100,120)の生成(更新)および表示を実行したり、ゲームに必要な音を再生したりする。
【0087】
図8を参照して、CPUコア42は、移動制御処理を開始すると、ステップS1で、タッチパネル22への入力があるかどうかを判断する。つまり、CPUコア42は、タッチパネル22から座標データが入力されたか否かを判断する。ステップS1で“NO”であれば、つまりタッチパネル22への入力がなければ、ステップS3で、タッチ入力フラグ482fをオフし、ステップS5で、プレイヤキャラクタ102が走行中かどうかを判断する。具体的には、走行中フラグ482gがオンであるかどうかを判断する。ステップS5で“NO”であれば、つまり走行中フラグ482gがオフであれば、プレイヤキャラクタ102は停止していると判断して、図9に示すステップS39に進む。一方、ステップS5で“YES”であれば、つまり走行中フラグ482gがオンであれば、プレイヤキャラクタ102が走行中であると判断して、ステップS7で、後述する減速度Bの決定処理(減速度決定処理:図11参照)を実行して、図9に示すステップS33に進む。
【0088】
また、ステップS1で“YES”であれば、つまりタッチパネル22への入力があれば、ステップS9で、入力された座標データすなわち現タッチ座標Pj(Xj,Yj)をデータ記憶領域482の座標バッファ482dに記憶する。続くステップS11では、タッチ入力フラグ482fがオンであるかどうかを判断する。ステップS11で“NO”であれば、つまりタッチ入力フラグ482fがオフであれば、タッチ入力が継続していない、すなわちストローク操作ではないと判断し、ステップS13で、タッチ入力フラグ482fをオンする。次にステップS15で、座標バッファ482dにおいて、現タッチ座標Pj(Xj,Yj)を前タッチ座標Pi(Xi,Yi)に置き換えて、ステップS39に進む。
【0089】
一方、ステップS11で“YES”であれば、つまりタッチ入力フラグ482fがオンであれば、タッチ入力が継続している、すなわちストローク操作であると判断する。続いて、ステップS17で、現タッチ座標Pj(Xj,Yj)を読み出し、ステップS19で、前タッチ座標Pi(Xi,Yi)を読み出し、ステップS21で、座標距離(1フレーム期間におけるストローク操作の長さ)ΔD(ΔX,ΔY)を算出する(数1参照)。そして、ステップS23で、ΔDが閾値を超えている(ΔD>閾値)かどうかを判断する。ステップS23で“NO”であれば、つまりΔDが閾値以下であれば、超短入力であると判断して、図9に示すステップS27に進む。一方、ステップS23で“YES”であれば、つまりΔDが閾値を超えていれば、短入力または長入力であると判断して、ステップS25で、後述するように、一定速度Aを新速度Vjとして決定する処理(新速度決定処理:図10参照)を実行して、図9に示すステップS35に進む。
【0090】
図9に示すように、ステップS27では、プレイヤキャラクタ102が走行中かどうかを判断する。この判断処理は、上述のステップS3の処理と同じであるため、詳細な説明は省略することにする。ステップS27で“NO”であれば、つまりプレイヤキャラクタ102が走行中でなければ、そのままステップS39に進む。
【0091】
なお、この実施例では、プレイヤキャラクタ102が停止中に超短入力がある場合には、プレイヤキャラクタ102を何ら制御しないようにしてあるが、超短入力が示す方向に、プレイヤキャラクタ102の向きを変化させるようにしてもよい。
【0092】
また、ステップS27で“YES”であれば、つまりプレイヤキャラクタ102が走行中であれば、ステップS29で、減速度決定処理(図11参照)を実行し、ステップS31で、減速度Bを増加させ、つまり減速度Bを数3に従って更新し、ステップS33で、現速度Viを読み出し、新速度Vjを数2に従って算出する。
【0093】
続いて、ステップS35では、新速度Vjおよびストローク方向(移動方向)に基づいて、プレイヤキャラクタ102を移動させる。なお、ストローク方向は、差分ΔDについてのベクトルの向きである。続くステップS37では、新速度Vjと座標Pjとを記憶する。ただし、このとき、新速度Vjは現速度Viに置き換えられ(Vi=Vj)、現タッチ座標Pjは前タッチ座標Piに置き換えられる(Pi=Pj)。これは、後述するように、ステップS39の処理を経て、ステップS1に戻った後に、次回(次フレーム)の処理において、現速度Viおよび前タッチ座標Piとして用いるためである。
【0094】
そして、ステップS39では、ゲーム終了かどうかを判断する。つまり、プレイヤによってゲーム終了の指示が与えられたり、ゲームオーバになったりしたかどうかを判断する。ステップS39で“NO”であれば、つまりゲーム終了でなければ、そのまま図8に示したステップS1に戻る。しかし、ステップS39で“YES”であれば、つまりゲーム終了であれば、そのまま移動制御処理を終了する。
【0095】
なお、図8および図9に示す移動制御処理は、1フレーム毎に実行される。したがって、ステップS1の処理も1フレーム毎に実行されることになる。
【0096】
図10は、図8に示したステップS25の新速度決定処理を示すフロー図である。この図10を参照して、CPUコア42は新速度決定処理を開始すると、ステップS51で、キャラクタ座標を取得する。つまり、プレイヤキャラクタ102についてのオブジェクトデータ482aに含まれる位置データを参照して、ゲーム空間すなわちゲームマップ上における現在位置を検出する。次のステップS53では、プレイヤキャラクタ102が道路上かどうかを判断する。つまり、CPUコア42は、マップデータ482bを参照して、プレイヤキャラクタ102の現在位置が属するゲームマップ上の位置に、道路オブジェクト104が配置されているかどうかを判断する。以下、同様である。ステップS53で“YES”あれば、つまりプレイヤキャラクタ102が道路上を走行している場合には、ステップS61で、速度データ482cを参照して、道路用の一定速度A1を読み出して、ステップS63に進む。
【0097】
しかし、ステップS53で“NO”であれば、つまりプレイヤキャラクタ102が道路上でなければ、ステップS55で、プレイヤキャラクタ102が草原上であるかどうかを判断する。この判断方法は、ステップS53における判断方法と同様であるため、詳細な説明は省略することにする。ステップS55で“YES”であれば、つまりプレイヤキャラクタ102が草原を走行中であれば、ステップS59で、草原用の一定速度A2を読み出して、ステップS63に進む。
【0098】
また、ステップS55で“NO”であれば、つまりプレイヤキャラクタ102が森林上であれば、ステップS57で、森林用の一定速度A3を読み出して、ステップS63に進む。ステップS63では、ステップS57,S59,S63のいずれかで読み出された一定速度Aを新速度Vj(Vj=A(A1,A2,A3))として決定し、新速度決定処理をリターンする。
【0099】
図11は、図8に示したステップS7および図9に示したステップS29の減速度決定処理を示すフロー図である。なお、以下においては、現速度決定処理と同じステップについては簡単に説明することにする。図11に示すように、減速度決定処理を開始すると、ステップS71で、キャラクタ座標すなわちプレイヤキャラクタ102の位置データを取得する。続くステップS73では、プレイヤキャラクタ102が道路上であるかどうかを判断する。ステップS73で“YES”であれば、ステップS81で、速度データ482cを参照して、道路用の減速度B1を読み出し、減速度決定処理をリターンする。
【0100】
ステップS73で“NO”であれば、ステップS75で、プレイヤキャラクタ102が草原上であるかどうかを判断する。ステップS75で“YES”であれば、ステップS79で、草原用の減速度B2を読み出し、減速度決定処理をリターンする。一方、ステップS75で“NO”であれば、ステップS77で、森林用の減速度B3を読み出し、減速度決定処理をリターンする。
【0101】
この実施例によれば、ストローク操作の長さに基づいてプレイヤキャラクタの移動速度を決定し、また、ストローク操作の方向にプレイヤキャラクタを移動させることができるので、プレイヤキャラクタを自在に操ることができる。また、ストローク操作するだけなので、操作が簡単である。
【0102】
また、この実施例では、プレイヤキャラクタが走行のし易さに応じて、一定速度や減速度を変化させるようにしてあるため、直感的な操作ができ、リアリティを味わうことができる。
【0103】
なお、この実施例では、プレイヤキャラクタを、道路、草原および森林のような背景上で走行させるようにしてあるが、背景はこれに限定される必要はない。たとえば、川や湖などを配置することもできる。かかる場合には、4種類以上の一定速度および減速度を用意しておき、プレイヤキャラクタが現在位置(走行位置)に基づいて、1の一定速度および1の減速度を選択的に決定することができる。また、少なくとも2種類の背景オブジェクトが配置されていれば、プレイヤキャラクタの走行や減速のし易さの違いを表現することができる。
【0104】
また、この実施例では、2つのLCDを設けて2つのゲーム画面を表示する場合について説明したが、1つのLCDを設けて、これに対応してタッチパネルを設けておき、当該LCDに1つのゲーム画面を表示するようにしてもよい。
【0105】
さらに、この実施例では、2つのLCDを設けたゲーム装置について説明したが、1つのLCDの表示領域を2つに分割し、少なくともいずれか一方の表示領域に対応してタッチパネルを設けるようにしてもよい。この場合、縦長のLCDを設ける場合には、縦に2つ表示領域が並ぶようにLCDの表示領域を分割し、横長のLCDを設ける場合には、横に2つの表示領域が並ぶようにLCDの表示領域を分割するようにすればよい。
【図面の簡単な説明】
【0106】
【図1】図1はこの発明のゲーム装置の一例を示す図解図である。
【図2】図2は図1に示すゲーム装置の電気的な構成を示すブロック図である。
【図3】図3は図1に示すゲーム装置に設けられる第2のLCDに表示されるゲーム画面の一例を示す図解図である。
【図4】図4はこの実施例の仮想3次元空間またはゲーム装置に設けられる第1のLCDに表示されるゲーム画面の一例を示す図解図である。
【図5】図5は3次元仮想空間に配置されるプレイヤキャラクタの移動制御の一例を示す図解図である。
【図6】図6は3次元仮想空間に配置されるプレイヤキャラクタの移動制御の他の例を示す図解図である。
【図7】図7は図2に示すゲーム装置に内蔵されるRAMのメモリマップを示す図解図である。
【図8】図8は図2に示すCPUコアのプレイヤキャラクタの移動制御処理の一部を示すフロー図である。
【図9】図9は図8のフロー図に後続する移動制御処理の他の一部を示すフロー図である。
【図10】図10は図2に示すCPUコアの現速度決定処理を示すフロー図である。
【図11】図11は図2に示すCPUコアの減速度決定処理を示すフロー図である。
【符号の説明】
【0107】
10 …ゲーム装置
12,14 …LCD
16,16a,16b …ハウジング
20 …操作スイッチ
22 …タッチパネル
24 …スティック
28 …メモリカード
28a …ROM
28b,48 …RAM
40 …電子回路基板
42 …CPUコア
50,52 …GPU
54 …I/F回路
56,58 …VRAM
60 …LCDコントローラ
【技術分野】
【0001】
この発明はゲームプログラムおよびゲーム装置に関し、特にたとえば、タッチパネルを操作することによって所定の処理を実行する、ゲームプログラムおよびゲーム装置に関する。
【背景技術】
【0002】
この種の従来のゲーム装置の一例が特許文献1に開示される。この特許文献1によれば、タッチパネルを備えるゲーム装置において、プレイヤの指による操作で、ゲームをプレイすることができる。たとえば、キックボードゲームでは、キックボーダを指で操作し、その操作速度をタッチデータから計算し、操作速度に応じて、キックボーダの移動速度を変化させるようにしてある。
【特許文献1】特開2002−939号
【発明の開示】
【発明が解決しようとする課題】
【0003】
特許文献1では、キックボーダのようなプレイヤキャラクタの移動速度をタッチ操作によって制御するようにしてあるが、プレイヤキャラクタの移動方向は一方向であり、任意の方向にプレイヤキャラクタを移動させることができない。つまり、ゲームが単調であり、面白味に欠ける。
【0004】
それゆえに、この発明の主たる目的は、新規な、ゲームプログラムおよびゲーム装置を提供することである。
【0005】
この発明の他の目的は、プレイヤキャラクタの移動を自在に操ることができる、ゲームプログラムおよびゲーム装置を提供することである。
【課題を解決するための手段】
【0006】
請求項1の発明は、少なくともプレイヤによって操作されるプレイヤキャラクタを含むゲーム空間の一部をゲーム画像として表示する表示器および表示器に関連して設けられるタッチパネルを備えるゲーム装置のゲームプログラムである。このゲームプログラムは、ゲーム装置のプロセサに、タッチ入力検出ステップ、タッチ座標検出ステップ、差分検出ステップ、比較ステップ、位置検出ステップ、および移動処理ステップを実行させる。タッチ入力検出ステップは、タッチパネルへのタッチ入力の有無を一定時間毎に検出する。タッチ座標検出ステップは、タッチ入力検出ステップによって検出されたタッチ入力に基づくタッチ座標を検出する。差分検出ステップは、タッチ入力検出ステップによってタッチ入力が有る状態が連続して検出されたとき、直前の第1タッチ座標と現在の第2タッチ座標との差分を検出する。比較ステップは、差分検出ステップによって検出された差分と所定の閾値とを比較する。位置検出ステップは、ゲーム空間におけるプレイヤキャラクタの現在位置を検出する。そして、移動処理ステップは、差分が所定の閾値を超えるとき、位置検出ステップによって検出された現在位置に基づいて決定される第1移動速度で差分が示す移動方向にプレイヤキャラクタを移動させる。
【0007】
請求項1の発明では、ゲームプログラムは、ゲーム装置(10:実施例で相当する参照符号。以下、同じ。)のプロセサ(42)によって実行される。このゲーム装置は、少なくともプレイヤによって操作されるプレイヤキャラクタ(102)を含むゲーム空間の一部をゲーム画像(100)として表示する表示器(14)および表示器に関連して設けられるタッチパネル(22)を備える。具体的には、ゲームプログラムは、ゲーム装置のプロセサに、タッチ入力検出ステップ(S1)、タッチ座標検出ステップ(S9)、差分検出ステップ(S21)、比較ステップ(S23)、位置検出ステップ(S51)、および移動処理ステップ(S35)を実行させる。タッチ入力検出ステップは、タッチパネルへのタッチ入力の有無を一定時間(たとえば、画面更新単位時間)毎に検出する。タッチ座標検出ステップは、タッチ入力検出ステップによって検出されたタッチ入力に基づくタッチ座標を検出する。差分検出ステップは、タッチ入力検出ステップによってタッチ入力が有る状態が連続して検出されたとき、直前の第1タッチ座標と現在の第2タッチ座標との差分を検出する。つまり、プレイヤ(操作者)によるスクロール操作が有る場合に、一定時間における当該スクロール操作の長さを検出する。比較ステップは、差分検出ステップによって検出された差分(一定時間におけるスクロール操作の長さ)と所定の閾値とを比較する。位置検出ステップは、ゲーム空間におけるプレイヤキャラクタの現在位置を検出する。そして、移動処理ステップは、差分が所定の閾値を超えるとき、位置検出ステップによって検出された現在位置に基づいて決定される第1移動速度で差分が示す移動方向にプレイヤキャラクタを移動させる。つまり、ゲーム空間におけるプレイヤキャラクタの位置に応じて決定される第1移動速度で、たとえば、ストローク操作の方向にプレイヤキャラクタは移動される。
【0008】
請求項1の発明によれば、プレイヤのストローク操作に基づいて決定される移動速度で、ストローク操作の方向にプレイヤキャラクタを移動させることができるので、所望の方向にプレイヤキャラクタを移動させることができる。つまり、直感的な操作ができ、操作性を向上させることができる。
【0009】
また、プレイヤの現在位置に応じて第1移動速度を決定するので、たとえば、ゲーム空間における背景(地形)に応じた第1移動速度を決定することができ、したがって、ゲームのリアリティを表現することができ、ゲームが単調になるのを防止することができる。
【0010】
請求項2の発明は請求項1に従属し、ゲーム装置は、複数種類の地形情報で構成されるゲームマップを記憶する記憶手段をさらに備え、位置検出ステップは、記憶手段に記憶されるゲームマップ上におけるプレイヤキャラクタの現在位置を検出し、移動処理ステップは、地形情報毎に定義されている速度パラメータに基づいて、位置検出ステップによって検出された現在位置が属する地形情報に応じた演算を行うことにより決定される第1移動速度で差分が示す移動方向にプレイヤキャラクタを移動させる。
【0011】
請求項2の発明では、ゲーム装置は、複数種類の地形情報で構成されるゲームマップ(482b)を記憶する記憶手段(48)をさらに備える。位置検出ステップは、記憶手段に記憶されるゲームマップ上におけるプレイヤキャラクタの現在位置を検出する。移動処理ステップは、地形情報毎に定義される速度パラメータに基づいて、位置検出ステップによって検出された現在位置が属する地形情報に応じた演算を行うことにより決定される第1移動速度で差分が示す移動方向にプレイヤキャラクタを移動させる。つまり、プレイヤキャラクタの第1移動速度は、その現在位置に対応するゲームマップ上の地形に応じて決定されるのである。
【0012】
請求項2の発明によれば、プレイヤキャラクタの現在位置における地形情報に定義される速度パラメータに基づいてその移動速度が決定されるので、ゲームが単調になるのを防止することができる。また、ゲームのリアリティを表現することができる。
【0013】
請求項3の発明は請求項1または2に従属し、プレイヤキャラクタが移動中か否かを判定する移動判定ステップをさらに実行させ、移動処理ステップは、タッチ入力検出ステップによってタッチ入力が無い状態が検出され、移動判定ステップによってプレイヤキャラクタが移動中であると判定されたとき、第1減速度を現在の移動速度から減算した第2移動速度を算出する第2移動速度算出ステップ、および差分が所定の閾値以下であり、移動判定ステップによってプレイヤキャラクタが移動中であると判定されたとき、第1減速度よりも大きい第2減速度を現在の移動速度から減算した第3移動速度を算出する第3移動速度算出ステップを含む。
【0014】
請求項3の発明では、移動判定ステップ(S3,S27)は、プレイヤキャラクタが移動中か否かを判定する。移動処理ステップは、第2移動速度算出ステップ(S7,S33)および第3移動速度算出ステップ(S29,S31,S33)を含む。第2移動速度算出ステップは、タッチ入力検出ステップによってタッチ入力がない状態が検出され、移動判定ステップによってプレイヤキャラクタが移動中であると判定されたき、現在の移動速度から第1減速度を減算した第2移動速度を算出する。つまり、ストローク操作を終了すると、プレイヤキャラクタは、第1減速度で次第に(慣性的に)減速され、停止する。また、第3移動速度算出ステップは、差分が所定の閾値以下であり、移動判定ステップによってプレイヤキャラクタが移動中であると判定されたとき、第1減速度よりも大きい第2減速度を現在の移動速度から減算した第3移動速度を算出する。つまり、プレイヤキャラクタの移動中に、所定の閾値以下の長さのストローク操作があると、第2減速度で減速させ、プレイヤキャラクタを急停止させる。
【0015】
請求項3の発明によれば、プレイヤキャラクタの移動中に、ストローク操作を止めた場合には、プレイヤキャラクタを次第に減速させ、所定の閾値以下のストローク操作をした場合には、プレイヤキャラクタを急激に減速させるので、ストローク操作の仕方によって、減速方法を変化させることができる。つまり、プレイヤキャラクタの移動を自在に操ることができる。
【0016】
請求項4の発明は請求項3に従属し、位置検出ステップによって検出された現在位置に基づいて第1減速度および第2減速度を決定する減速度決定ステップをさらに実行させる。
【0017】
請求項4の発明では、減速度決定ステップ(S7,S29,S31)は、位置検出ステップによって検出されたプレイヤキャラクタの現在位置に基づいて第1減速度および第2減速度を決定する。
【0018】
請求項4の発明によれば、第1移動速度のみならず、減速度もプレイヤキャラクタの現在位置に基づいて変化させるので、ゲームのリアリティを表現することができ、ゲームが単調になるのを防止することができる。
【0019】
請求項5の発明は請求項3または4に従属し、第3移動速度算出ステップは、差分が連続して所定の閾値以下であるとき、第2減速度を次第に大きくさせて第3移動速度を算出する。
【0020】
請求項5の発明では、第3移動速度算出ステップは、差分が連続して所定の閾値以下であるとき、第2減速度を次第に大きくさせて第3移動速度を算出する。つまり、プレイヤキャラクタは急停止する。
【0021】
請求項5の発明によれば、プレイヤキャラクタを急停止させることもできる。
【0022】
請求項6の発明は、少なくともプレイヤによって操作されるプレイヤキャラクタを含むゲーム空間の一部をゲーム画像として表示する表示器および表示器に関連して設けられるタッチパネルを備えるゲーム装置である。このゲーム装置は、タッチ入力検出手段、タッチ座標検出手段、差分検出手段、比較手段、位置検出手段、および移動処理手段を備える。タッチ入力検出手段は、タッチパネルへのタッチ入力の有無を一定時間毎に検出する。タッチ座標検出手段は、タッチ入力検出手段によって検出されたタッチ入力に基づくタッチ座標を検出する。差分検出手段は、タッチ入力検出手段によってタッチ入力が有る状態が連続して検出されたとき、直前の第1タッチ座標と現在の第2タッチ座標との差分を検出する。比較手段は、差分検出手段によって検出された差分と所定の閾値とを比較する。位置検出手段は、ゲーム空間におけるプレイヤキャラクタの現在位置を検出する。そして、移動処理手段は、差分が所定の閾値よりも大きいとき、位置検出手段によって検出された現在位置に基づいて決定される移動速度で差分が示す移動方向にプレイヤキャラクタを移動させる。
【0023】
請求項6の発明においても請求項1の発明と同様に、直感的な操作ができ、操作性を向上させることができる。
【発明の効果】
【0024】
この発明によれば、連続して検出されるタッチ座標の差分が示す方向にプレイヤキャラクタを移動させるので、プレイヤは自在にプレイヤキャラクタを移動させることができる。また、プレイヤキャラクタの位置に応じて移動速度や減速度を決定するので、ゲームが単調になるのを防止することができる。
【0025】
この発明の上述の目的,その他の目的,特徴および利点は、図面を参照して行う以下の実施例の詳細な説明から一層明らかとなろう。
【発明を実施するための最良の形態】
【0026】
図1を参照して、この発明の一実施例であるゲーム装置10は、第1の液晶表示器(LCD)12および第2のLCD14を含む。このLCD12およびLCD14は、所定の配置位置となるようにハウジング16に収納される。この実施例では、ハウジング16は、上側ハウジング16aと下側ハウジング16bとによって構成され、LCD12は上側ハウジング16aに収納され、LCD14は下側ハウジング16bに収納される。したがって、LCD12とLCD14とは縦(上下)に並ぶように近接して配置される。
【0027】
なお、この実施例では、表示器としてLCDを用いるようにしてあるが、LCDに代えて、EL(Electronic Luminescence)ディスプレイやプラズマディスプレイを用いるようにしてもよい。
【0028】
図1からも分かるように、上側ハウジング16aは、LCD12の平面形状よりも少し大きな平面形状を有し、一方主面からLCD12の表示面を露出するように開口部が形成される。一方、下側ハウジング16bは、その平面形状が上側ハウジング16aよりも横長に選ばれ、横方向の略中央部にLCD14の表示面を露出するように開口部が形成される。また、下側ハウジング16bには、音抜き孔18が形成されるとともに、操作スイッチ20(20a,20b,20c,20d,20e,20Lおよび20R)が設けられる。
【0029】
また、上側ハウジング16aと下側ハウジング16bとは、上側ハウジング16aの下辺(下端)と下側ハウジング16bの上辺(上端)の一部とが回動可能に連結されている。したがって、たとえば、ゲームをプレイしない場合には、LCD12の表示面とLCD14の表示面とが対面するように、上側ハウジング16aを回動させて折りたたんでおけば、LCD12の表示面およびLCD14の表示面に傷がつくなどの破損を防止することができる。ただし、上側ハウジング16aと下側ハウジング16bとは、回動可能に連結せずに、それらを一体的(固定的)に設けたハウジング16を形成するようにしてもよい。
【0030】
操作スイッチ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との連結部以外に当該連結部を挟むように、左右に配置される。
【0031】
方向指示スイッチ20aは、ディジタルジョイスティックとして機能し、4つの押圧部の1つを操作することによって、プレイヤによって操作可能なプレイヤキャラクタ(またはプレイヤオブジェクト)の移動方向を指示したり、カーソルの移動方向を指示したりする等に用いられる。スタートスイッチ20bは、プッシュボタンで構成され、ゲームを開始(再開)したり、一時停止(Pause)したりする等に用いられる。セレクトスイッチ20cは、プッシュボタンで構成され、ゲームモードの選択等に用いられる。
【0032】
動作スイッチ20dすなわちAボタンは、プッシュボタンで構成され、方向指示以外の動作、すなわち、プレイヤキャラクタに打つ(パンチ)、投げる、つかむ(取得)、乗る、ジャンプするなどの任意のアクションをさせることができる。たとえば、アクションゲームにおいては、ジャンプ、パンチ、武器を動かす等を指示することができる。また、ロールプレイングゲーム(RPG)やシミュレーションRPGにおいては、アイテムの取得、武器やコマンドの選択および決定等を指示することができる。動作スイッチ20eすなわちBボタンは、プッシュボタンで構成され、セレクトスイッチ20cで選択したゲームモードの変更やAボタン20dで決定したアクションの取り消し等のために用いられる。
【0033】
動作スイッチ(左押しボタン)20Lおよび動作スイッチ(右押しボタン)20Rは、プッシュボタンで構成され、左押しボタン(Lボタン)20Lおよび右押しボタン(Rボタン)20Rは、Aボタン20dおよびBボタン20eと同様の操作に用いることができ、また、Aボタン20dおよびBボタン20eの補助的な操作に用いることができる。
【0034】
また、LCD14の上面には、タッチパネル22が装着される。タッチパネル22としては、たとえば、抵抗膜方式、光学式(赤外線方式)および静電容量結合式のいずれかの種類のものを用いることができる。また、タッチパネル22は、その上面(検出面)をスティック24ないしはペン(スタイラスペン)或いは指(以下、これらを「スティック24等」という場合がある。)で、押圧したり、撫でたり、触れたりすることにより操作すると、スティック24等の操作位置の座標を検出して、検出した座標(検出座標)に対応する座標データを出力する。
【0035】
この実施例では、LCD14(LCD12も同じ、または略同じ。)の表示面の解像度は256dot×192dotであり、タッチパネル22の検出面の検出精度もその解像度に対応して256dot×192dotとしてある。ただし、タッチパネル22の検出面の検出精度は、LCD14の表示面の解像度よりも低くてもよく、高くてもよい。
【0036】
LCD12およびLCD14には異なるゲーム画像(ゲーム画面)を表示することができる。たとえば、レースゲームでは、一方のLCDに移動体の運転席からの視点による画面を表示し、または、移動体をその後ろまたは上方から追従するカメラで撮影した画像を表示し、他方のLCDにレース(コース)全体の画面を表示することができる。また、RPGでは、一方のLCDにマップやプレイヤキャラクタ等のキャラクタを表示し、他方のLCDにプレイヤキャラクタが所有するアイテムを表示することができる。さらに、一方のLCD(たとえば、LCD12)にゲームのプレイ画面を表示し、他方のLCD(たとえば、LCD14)に当該ゲームを操作するための文字情報やアイコン等を含むゲーム画面(操作画面)を表示することができる。さらには、2つのLCD12およびLCD14を合わせて1つの画面として用いることにより、プレイヤキャラクタが倒さなければならない巨大な怪物(敵キャラクタ)を表示することもできる。
【0037】
したがって、プレイヤはスティック24等でタッチパネル22を操作することにより、LCD14の画面に表示されるプレイヤキャラクタ、敵キャラクタ、アイテムキャラクタ、文字情報、アイコン等のキャラクタ画像を指示(指定)したり、移動させたり、コマンドを選択したりすることができる。また、3次元ゲーム空間に設けられる仮想カメラ(視点)の方向を変化させたり、ゲーム画面をスクロール(徐々に移動表示)させたりすることもできる。
【0038】
このように、ゲーム装置10は、2画面分の表示部となるLCD12およびLCD14を有し、いずれか一方(この実施例では、LCD14)の上面にタッチパネル22が設けられるので、2画面(12,14)と2系統の操作部(20,22)とを有する構成になっている。
【0039】
また、この実施例では、スティック24は、たとえば上側ハウジング16aの側面(右側面)近傍に設けられる収納部(収納穴)26に収納することができ、必要に応じて取り出される。ただし、スティック24を設けない場合には、収納部26を設ける必要もない。
【0040】
さらに、ゲーム装置10はメモリカード(またはゲームカートリッジ)28を含み、このメモリカード28は着脱自在であり、下側ハウジング16bの裏面ないしは下端(底面)に設けられる挿入口30から挿入される。図1では省略するが、挿入口30の奥部には、メモリカード28の挿入方向先端部に設けられるコネクタ(図示せず)と接合するためのコネクタ46(図2参照)が設けられており、したがって、メモリカード28が挿入口30に挿入されると、コネクタ同士が接合され、ゲーム装置10のCPUコア42(図2参照)がメモリカード28にアクセス可能となる。
【0041】
なお、図1では表現できないが、下側ハウジング16bの音抜き孔18と対応する位置であり、この下側ハウジング16bの内部にはスピーカ32(図2参照)が設けられる。
【0042】
また、図1では省略するが、たとえば、下側ハウジング16bの裏面側には、電池収容ボックスが設けられ、また、下側ハウジング16bの底面側には、電源スイッチ、音量スイッチ、外部拡張コネクタおよびイヤフォンジャックなどが設けられる。
【0043】
図2はゲーム装置10の電気的な構成を示すブロック図である。図2を参照して、ゲーム装置10は電子回路基板40を含み、この電子回路基板40にはCPUコア42等の回路コンポーネントが実装される。CPUコア42は、バス44を介してコネクタ46に接続されるととともに、RAM48、第1のグラフィック処理ユニット(GPU)50、第2のGPU52、入出カインターフエース回路(以下、「I/F回路」という。)54およびLCDコントローラ60が接続される。
【0044】
コネコタ46には、上述したように、メモリカード28が着脱自在に接続される。メモリカード28は、ROM28aおよびRAM28bを含み、図示は省略するが、ROM28aおよびRAM28bは、互いにバスで接続され、さらに、コネクタ46と接合されるコネクタ(図示せず)に接続される。したがって、上述したように、CPUコア42は、ROM28aおよびRAM28bにアクセスすることができるのである。
【0045】
ROM28aは、ゲーム装置10で実行すべきゲーム(仮想ゲーム)のためのゲームプログラム、画像(キャラクタ画像、背景画像、アイテム画像、アイコン(ボタン)画像、メッセージ画像など)データおよびゲームに必要な音(音楽)のデータ(音データ)等を予め記憶する。RAM(バックアップRAM)28bは、そのゲームの途中データやゲームの結果データを記憶(セーブ)する。
【0046】
RAM48は、バッファメモリないしはワーキングメモリとして使用される。つまり、CPUコア42は、メモリカード28のROM28aに記憶されたゲームプログラム、画像データおよび音データ等をRAM48にロードし、ロードしたゲームプログラムを実行する。また、CPUコア42は、ゲームの進行に応じて一時的に発生するデータ(ゲームデータやフラグデータ)をRAM48に記憶しつつゲーム処理を実行する。
【0047】
なお、ゲームプログラム、画像データおよび音データ等は、ROM28aから一度に全部、または部分的かつ順次的に読み出され、RAM48に記憶(ロード)される。
【0048】
GPU50およびGPU52は、それぞれ、描画手段の一部を形成し、たとえばシングルチップASICで構成され、CPUコア42からのグラフィックスコマンド(graphics command :作画命令)を受け、そのグラフィックスコマンドに従ってゲーム画像データを生成する。ただし、CPUコア42は、グラフィックスコマンドに加えて、ゲーム画像データの生成に必要な画像生成プログラム(ゲームプログラムに含まれる。)をGPU50およびGPU52のそれぞれに与える。
【0049】
また、GPU50には、第1のビデオRAM(以下、「VRAM」という。)56が接続され、GPU52には、第2のVRAM58が接続される。GPU50およびGPU52が作画コマンドを実行するにあたって必要なデータ(画像データ:キャラクタデータやテクスチャ等のデータ)は、GPU50およびGPU52が、それぞれ、第1のVRAM56および第2のVRAM58にアクセスして取得する。なお、CPUコア42は、描画に必要な画像データをGPU50およびGPU52を介して第1のVRAM56および第2のVRAM58に書き込む。GPU50はVRAM56にアクセスして描画のためのゲーム画像データを作成し、GPU52はVRAM58にアクセスして描画のためのゲーム画像データを作成する。
【0050】
VRAM56およびVRAM58は、LCDコントローラ60に接続される。LCDコントローラ60はレジスタ62を含み、レジスタ62はたとえば1ビットで構成され、CPUコア42の指示によって「0」または「1」の値(データ値)を記憶する。LCDコントローラ60は、レジスタ62のデータ値が「0」である場合には、GPU50によって作成されたゲーム画像データをLCD12に出力し、GPU52によって作成されたゲーム画像データをLCD14に出力する。また、LCDコントローラ60は、レジスタ62のデータ値が「1」である場合には、GPU50によって作成されたゲーム画像データをLCD14に出力し、GPU52によって作成されたゲーム画像データをLCD12に出力する。
【0051】
なお、LCDコントローラ60は、VRAM56およびVRAM58から直接ゲーム画像データを読み出したり、GPU50およびGPU52を介してVRAM56およびVRAM58からゲーム画像データを読み出したりする。
【0052】
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から出力する。
【0053】
図3(A)および図3(B)は、この実施例のゲーム装置10のLCD14に表示されるゲーム画面100の例を示す図解図である。図3(A)に示すように、ゲーム画面100では、3次元仮想空間(ゲーム空間)のうち、プレイヤキャラクタ102を含む一部の領域(範囲)が表示される。図3(A)および図3(B)から分かるように、プレイヤキャラクタ102はゲーム画面100の略中央に表示される。また、ゲーム画面100には、プレイヤキャラクタ102が走行可能な道路オブジェクト104、草原オブジェクト106および森林オブジェクト108のような背景オブジェクトも表示される。
【0054】
なお、図3(A)および図3(B)では省略するが、上述したように、LCD14上にタッチパネル22が設けられる。
【0055】
たとえば、図3(A)に示すように、プレイヤがスティック24をLCD14(タッチパネル22)上で撫でるように画面右方に移動(スライド)させると、すなわち、スティック24を用いて右方向にドラッグ操作ないしストローク操作(以下、「ストローク操作」という。)すると、このストローク操作に従ってプレイヤキャラクタ102は3次元仮想空間(ゲーム空間)内を右方向に移動される。図3(B)はストローク操作に従ってプレイヤキャラクタ102が移動した後のゲーム画面100である。
【0056】
図面では表現することができないが、ストローク操作に従ってプレイヤキャラクタ102がゲーム空間内を移動される様子(アニメーション)がゲーム画面100としてLCD14に表示される。後で詳細に説明するが、プレイヤキャラクタ102は、ストローク操作に基づいて決定ないし算出される移動速度および移動方向(ストローク操作と同じ方向)で移動される。
【0057】
この実施例のゲーム(仮想ゲーム)では、図4に示すような3次元仮想空間(ゲーム空間)が設けられ、このゲーム空間内に設定されるスタート地点から出発し、複数の通過ポイントを通過して、ゴール地点に達するまでの時間を競う。図示は省略するが、ゲーム空間内には、敵キャラクタやアイテムキャラクタ等の他のキャラクタも存在する。また、分かり易く示すために、上述したような背景オブジェクト(104,106,108等)は省略してある。ゲーム中では、たとえば、敵キャラクタと競争したり、所定のアイテムを取得することにより、プレイヤキャラクタ102のパラメータ(ライフ、レベル等)が変化されたりする。
【0058】
なお、ゲーム空間の全体を、ゲーム画面120としてLCD12に表示することもできる。この場合には、プレイヤは、LCD12に表示されるゲーム画面120によってゲーム空間の全体におけるプレイヤキャラクタ102または敵キャラクタ或いはアイテムの位置を知ることができ、LCD14に表示されるゲーム画面100によってプレイヤキャラクタ102が現在走行中の一部の領域についての詳細を知ることができる。
【0059】
ただし、図3(A)および図3(B)に示すように、ゲーム画面100では、プレイヤキャラクタ102を画面中央に表示するようにしてあるため、背景オブジェクト(104,106,108)の表示位置の変化(移動)により、プレイヤキャラクタ102が移動したことが分かる。
【0060】
なお、ゲーム空間に存在するプレイヤキャラクタ102を移動させずに、ゲーム空間内の背景オブジェクト(104,106,108)を移動させることにより、プレイヤキャラクタ102が移動しているように見せることもできる。かかる場合には、ストローク操作に基づいて決定ないし算出される移動速度で、ストローク操作とは逆向きに背景オブジェクトを移動させるようにすればよい。つまり、プレイヤのストローク操作によって、プレイヤキャラクタ102と背景オブジェクトとの相対位置が変化されるのである。
【0061】
次に、図5および図6を用いて、プレイヤキャラクタ102の移動制御について説明することにする。ただし、以下の説明では、1フレーム(画面更新単位時間:1/60秒)期間におけるストローク操作の長さが所定の閾値(たとえば、5dot)以下である場合には、当該ストローク操作を「超短入力」という。ただし、この実施例では、一点を押し続ける操作も超短入力に含まれる。また、1フレーム期間におけるストーク操作の長さが所定の閾値を超える場合には、当該ストローク操作を「短入力」という。そして、1フレーム期間を超えてストローク操作が継続し、各フレームにおけるストローク操作の長さが所定の閾値を超える場合には、当該ストローク操作を「長入力」という。つまり、「長入力」は、「短入力」の複数フレーム分の集まりと同等である。
【0062】
図5(A)は1回の短入力を行った場合にプレイヤキャラクタ102が移動する様子を示す。この図5(A)に示す例(図5(B),図6(A)および図6(B)も同様。)では、ストローク操作の向きは、図面の上方向である。図5(A)に示すように、1回の短入力が行われると、プレイヤキャラクタ102は第0フレームから第1フレームまでの間、一定の移動速度(以下、「一定速度」という。)Aで移動され、ストローク操作の終了(タッチオフ)により、一定の減速度Bで、第1フレームから第3フレームにかけて次第に(慣性的に)減速され、停止される。ここで、移動速度(説明の都合上、「新速度」という。)Vjは、1フレーム毎に決定(算出)される。したがって、1フレーム期間におけるストローク操作の長さが所定の閾値を超える場合には、一定速度Aが新速度Vjとして決定され、ストローク操作が終了すると、減速度Bは現在の移動速度(現速度)Viから1フレーム毎に減算される。ただし、減速が開始される時点における現速度Viは一定速度Aである。
【0063】
具体的には、1フレーム期間におけるストローク操作の長さは、現在(現フレーム)におけるタッチ座標(現タッチ座標)Pj(Xj,Yj)を終点とし、1つ手前のフレーム(前フレーム)におけるタッチ座標(前タッチ座標)Pi(Xi,Yi)を始点とするベクトルの大きさ(スカラ)で決定される。つまり、1フレーム期間におけるストローク操作の長さ(座標距離)ΔDは数1に従って算出される。
【0064】
[数1]
ΔD=(ΔX,ΔY)=(Xj−Xi,Yj−Yi)
また、一定の減速度Bで減速する場合には、新速度Vjは数2に従って算出される。
【0065】
[数2]
Vj=Vi−B
ただし、現速度Viは、新速度Vjを算出する直前のフレームすなわち前フレームで決定または算出された新速度Vjである。なお、新速度Vjの決定および算出方法は、後述する図5(B)、図6(A)および図6(B)の場合も同じである。また、プレイヤキャラクタ102の移動中(走行中)において、ストローク操作の長さが所定の閾値以下となる場合には、図6(B)を用いて後述するように、一定の減速度Bよりも大きい減速度で減速される。
【0066】
ここで、図5(A)(図5(B)、図6(A)および図6(B)も同様。)に示すように、プレイヤキャラクタ102の右側に記載される矢印は、ストローク操作によってプレイヤキャラクタ102が移動される距離(移動距離)およびその方向(移動方向)を示してある。また、プレイヤがストローク操作を開始(タッチオン)した時点を第0フレームとし、プレイヤキャラクタ102は第0フレームから移動を開始され、1フレーム毎に、その移動が制御される。
【0067】
ただし、プレイヤキャラクタ102の移動距離は、プレイヤがストローク操作しているときに一定速度Aで移動した距離と、プレイヤがストローク操作を終了(タッチオフ)した後に減速度Bで減速を開始して停止するまでの距離との和である。移動距離の長さは、後述する図5(B)および図6(A)の場合も同様である。また、プレイヤキャラクタ102の移動方向はストローク操作と同じ方向(ここでは、上方向)であり、実際には1フレーム毎に検出されるタッチ座標(座標データ)に基づいて決定される。具体的には、プレイヤキャラクタ102の移動方向は、現タッチ座標Pj(Xj,Yj)を終点とし、前タッチ座標Pi(Xi,Yi)を始点とするベクトルの方向で決定される。これは、後述する図5(B)、図6(A)および図6(B)の場合も同じである。
【0068】
図5(B)は1回の長入力を行った場合にプレイヤキャラクタ102が移動する様子を示す。たとえば、図5(B)に示す例では、第0フレームから第3フレームまでの間において、ストローク操作が継続的に行われ、その後、ストローク操作が終了された場合について示してある。したがって、プレイヤキャラクタ102は、第0フレームから第3フレームまでの間において、一定速度Aで移動される。そして、プレイヤキャラクタ102は、第3フレームから第5フレームにかけて減速度Bで減速され、停止される。減速方法、移動距離の長さおよび移動方向の決定は、それぞれ、上述したとおりである。
【0069】
図5(A)および図5(B)を用いて説明したように、1フレーム期間におけるストローク操作の長さが所定の閾値を超える場合には、プレイヤキャラクタ102は、一定速度Aで当該ストロークの方向に移動される。また、所定の閾値を超える長さのストローク操作が複数のフレームに跨って継続される場合には、一定速度Aで移動される期間が長くなり、したがってプレイヤキャラクタ102の移動距離も長くなる。
【0070】
図6(A)は短入力が3回連続して行われた場合にプレイヤキャラクタ102が移動する様子を示す。上述したように、ストローク操作の開始時点を第0フレームとしてあり、ここでは、3回連続してストローク操作が行われるため、図6(A)に示すように、各ストローク操作の開始時点に対応して、第0フレームと記載してある。短入力が3回連続して行われる場合には、1回目と2回目のストローク操作の終了後に、プレイヤキャラクタ102は減速を開始するまたは開始しようとするが、2回目と3回目のストローク操作が開始されることによって、継続的に一定速度Aで移動されることになる。そして、3回目のストローク操作が終了した後に、図5(A)および図5(B)に示した場合と同様に、プレイヤキャラクタ102は減速され、停止される。
【0071】
図6(B)は短入力を3回連続して行った後に、超短入力を2回連続して行った場合にプレイヤキャラクタ102が移動される様子を示す。まず、短入力を3回連続して行う場合のプレイヤキャラクタ102の移動については、図6(A)に示した場合と同じであるため、重複した説明は省略する。短入力を3回連続した後では、プレイヤキャラクタ102は、一定の減速度Bで減速するように制御される。続いて、プレイヤキャラクタ102が減速しながら移動しているときに、超短入力があると、プレイヤキャラクタ102が、一定の減速度Bよりも大きい減速度で減速するように、新速度Vjが数2に従って算出される。具体的には、プレイヤキャラクタ102が移動中に、超短入力がある場合には、減速度Bは数3に従って更新される。
【0072】
[数3]
B=B+α
ここで、“=”は代入を意味する。また、減速度Bの増加量αは、この仮想ゲームのプログラマや開発者によって予め決定(設定)される値である。この減速度Bも1フレーム毎に更新され、超短入力が継続する場合には、減速度Bが次第に大きくなり、したがって、プレイヤキャラクタ102は急停止される。したがって、図6(B)に示す場合のプレイヤキャラクタ102の移動距離は、短入力によりストローク操作しているときに一定速度Aで移動した距離と、超短入力によりストローク操作しているときに次第に大きくなる減速度Bで移動した距離との和である。
【0073】
また、図示は省略するが、この実施例では、プレイヤキャラクタ102が走行している位置ないし場所に応じて、一定速度Aと減速度Bとを変化させるようにしてある。上述したように、ゲーム空間(ゲームマップ)には、道路オブジェクト104、草原オブジェクト106および森林オブジェクト108が設けられており、プレイヤキャラクタ102は、道路を走行し易く、草原、森林になるに連れて、走行し難くなる。したがって、この実施例では、プレイヤキャラクタ102が走行している位置(現在位置)の属する(に対応する)ゲームマップ上の地形に応じて速度を決定するようにしてある。具体的には、プレイヤキャラクタ102が道路を走行している場合に決定される一定速度AをA1とし、草原を走行している場合に決定される一定速度AをA2とし、そして、森林を走行している場合に決定される一定速度AをA3とすると、数4の関係が成り立つ。
【0074】
[数4]
A1>A2>A3
一方、走行のし易さは、逆に言うと、停止のし難さとなるため、プレイヤキャラクタ102の現在位置に対応するゲームマップ上の地形に応じて、決定する減速度Bを変化させることもできる。この実施例では、プレイヤキャラクタ102が道路を走行している場合に決定される減速度BをB1とし、草原を走行している場合に決定される減速度BをB2とし、そして、森林を走行している場合に決定される減速度BをB3とすると、数5の関係が成り立つ。
【0075】
[数5]
B3>B2>B1
このように、プレイヤキャラクタ102の走行している現在位置に対応するゲームマップ上の地形に応じて、異なる一定速度A(A1,A2,A3)および減速度B(B1,B2,B3)が決定されるので、ゲームが単調にならず、しかもリアリティを与えることができる。
【0076】
図7はゲーム装置10の内部に設けられるRAM48のメモリマップの例を示す図解図である。この図7を参照して、RAM48は、プログラム記憶領域480およびデータ記憶領域482を含む。プログラム記憶領域480はゲームプログラムを記憶し、ゲームプログラムは、ゲームメイン処理プログラム480a、画像生成プログラム480b、画像表示プログラム480c、タッチ入力検出プログラム480d、座標変化算出プログラム480eおよび移動速度算出プログラム480fなどによって構成される。
【0077】
ゲームメイン処理プログラム480aは、この実施例の仮想ゲームのメインルーチンを処理するためのプログラムである。画像生成プログラム480bは、ゲーム空間に設けられるステージ(コース104)、プレイヤキャラクタ(102,108,110)、ノンプレイヤキャラクタ(プレイヤの操作によらないで、コンピュータ(CPUコア42)により移動等を制御されるキャラクタ。)および背景オブジェクトなどのゲーム画像を生成するためのプログラムである。画像表示プログラム480cは、画像生成プログラム480bに従って生成されたゲーム画像(ゲーム画面)をLCD12およびLCD14に表示するためのプログラムである。
【0078】
タッチ入力検出プログラム480dは、タッチ入力の有無を一定時間(たとえば、1フレーム)毎に検出する。ただし、タッチ入力の有無は、タッチパネル22から座標データが入力されるか否かで判断する。タッチ入力が有る場合には、後述するタッチ入力フラグ482eをオンするとともに、タッチ入力が示すタッチ座標、つまりタッチパネル22から入力される座標データを後述する座標バッファ482cに記憶(一時記憶)する。一方、タッチ入力が無い場合には、タッチ入力フラグ482eをオフする。
【0079】
座標変化算出プログラム480eは、連続する複数の(この実施例では、2つの)フレームでタッチ座標(座標データ)が検出されたとき、つまりタッチ入力が継続するストローク操作が検出されたとき、2つのタッチ座標の変化(差分)を算出するためのプログラムである。ただし、2つのフレームは、現在のフレーム(現フレーム)およびその1フレーム手前のフレーム(前フレーム)である。
【0080】
移動速度算出プログラム480fは、座標変化算出プログラム480eに従って算出されたタッチ座標の差分が所定の閾値を超えるか否かに基づいてプレイヤキャラクタ102の移動速度(新速度Vj)を算出(決定)するためのプログラムである。この実施例では、プレイヤキャラクタ102が停止しているときに、ストローク操作があり、タッチ座標の差分が閾値を超える場合には、新速度Vjは一定速度Aに決定される。このとき、プレイヤキャラクタ102の現在位置に応じて、一定速度A1,A2,A3のいずれかが決定される。一方、タッチ座標の差分が所定の閾値以下である場合には、新速度Vjは0である。また、プレイヤキャラクタ102が移動中(走行中)に、タッチ座標の差分が閾値以下である場合には、新速度Vjは一定速度Aから一定の減速度Bよりも大きい減速度(B+α)を減算して算出される。ただし、プレイヤキャラクタ102が移動中に、タッチ座標の差分が所定の閾値を超える場合には、上述した場合と同様に、プレイヤキャラクタ102の現在位置に応じた一定速度Aが決定される。さらには、移動速度算出プログラム480fは、プレイヤキャラクタ102の移動中に、タッチ入力検出プログラム480dに従ってタッチ入力が無い状態(タッチオフ)が検出されたときには、現速度Viから一定の減速度Bを減算した移動速度(新速度Vj)を算出するためのプログラムでもある。ただし、新速度Vjは、差分に基づいて算出されるため、差分が検出される一定時間(1フレーム)毎に、決定または算出されることになる。さらに、移動速度算出プログラム480fは、算出した新速度Vjの値に応じて、後述する走行中フラグ482gのオン/オフを制御するためのプログラムでもある。具体的には、新速度Vjが0より大きい場合には、走行中フラグ482gをオンし、新速度Vjが0である場合には、走行中フラグ482gをオフする。
【0081】
なお、図示は省略するが、ゲームプログラム記憶領域480には、音再生プログラムやバックアッププログラムなども記憶される。音再生プログラムは、音(音楽)データを用いて、ゲームに必要な音(音楽)を再生するためのプログラムである。また、バックアッププログラムは、ゲームの進行に従って発生するデータ(ゲームの途中データや結果データ)をプレイヤの指示や所定のタイミング(イベント)に従ってメモリカード28のRAM28bに記憶(セーブ)するためのプログラムである。
【0082】
データ記憶領域482には、オブジェクトデータ482a、マップデータ482bおよび速度データ482cのようなデータが記憶される。オブジェクトデータ482aは、上述した画像生成プログラム480bに従ってゲーム画像を生成する際に使用するポリゴンデータやテクスチャデータを含み、またプレイヤの操作に従って更新される現在位置(3次元位置)についての位置データも含む。ただし、上述したような背景オブジェクト(102,104,106等)では、ゲーム空間(ゲームマップ)上において固定的に配置され、しかも同じ種類であっても異なる場所に配置される場合があるため、その位置データは複数記憶される場合もある。マップデータ482bは、図4に示したようなゲーム空間を表示するためのデータであり、具体的には、マス目で区切ったマップ(ゲームマップ)において、その各マス(ユニット)に配置する地形(背景オブジェクト)の種類ないし情報(地形情報)を示すデータである。つまり、マップデータ482bは、複数種類の地形(背景オブジェジェクト)を示すデータと各背景オブジェクトの配置位置ないし範囲を示すデータとによって構成される。速度データ482cは、プレイヤキャラクタ102の一定の移動速度Aおよび減速度Bについてのデータ(数値データ)である。具体的には、一定速度A1,A2,A3および減速度B1,B2,B3についての数値データが記憶される。ただし、上述したように、一定速度A1〜A3および減速度B1〜B3は、プレイヤキャラクタ102の現在位置が属するゲームマップ上の地形すなわち背景オブジェクト(道路オブジェクト104,草むらオブジェクト106,森林オブジェクト108)に対応して決定される速度である。つまり、一定速度Aおよび減速度Bは、地形に応じて決定される速度パラメータである。
【0083】
また、データ記憶領域482には、座標バッファ482dおよび速度バッファ482eが設けられる。座標バッファ482dは、タッチ入力検出プログラム480dに従って検出された座標データを記憶(一時記憶)するための領域であり、少なくとも2フレーム分の座標データを記憶可能な容量を有している。また、速度バッファ482eは、プレイヤキャラクタ102の現速度Viおよび現在の減速度Bについてのデータ(数値データ)を記憶(一時記憶)するための領域である。
【0084】
さらに、データ記憶領域482には、タッチ入力フラグ482fおよび走行中フラグ482gが記憶される。タッチ入力フラグ482fは、1ビットのレジスタで構成され、タッチ入力検出プログラム480dに従ってそのオン/オフが制御される。この実施例では、タッチ入力フラグ482fをオンする場合には、レジスタにデータ値「1」が設定される。逆に、タッチ入力フラグ482fをオフする場合には、レジスタにデータ値「0」が設定される。走行中フラグ482gもまた、1ビットのレジスタで構成され、移動速度算出プログラム480fに従ってそのオン/オフが制御される。この実施例では、走行中フラグ482gをオンする場合には、レジスタにデータ値「1」が設定される。逆に、走行中フラグ482gをオフする場合には、レジスタにデータ値「0」が設定される。
【0085】
なお、図示は省略するが、データ記憶領域482には、ゲームに必要な音を出力するための音(音楽)データやゲームの進行に伴って発生するデータ(ゲームの途中データ,結果データ)やフラグ(イベントフラグ)なども記憶される。
【0086】
具体的には、上述したようなプレイヤキャラクタ102の移動制御を、図2に示したCPUコア42が図8および図9に示すフロー図に従って処理する。なお、図示は省略するが、CPUコア42は、仮想ゲームのメインルーチンを別個独立に実行し、たとえば、ゲーム画面(100,120)の生成(更新)および表示を実行したり、ゲームに必要な音を再生したりする。
【0087】
図8を参照して、CPUコア42は、移動制御処理を開始すると、ステップS1で、タッチパネル22への入力があるかどうかを判断する。つまり、CPUコア42は、タッチパネル22から座標データが入力されたか否かを判断する。ステップS1で“NO”であれば、つまりタッチパネル22への入力がなければ、ステップS3で、タッチ入力フラグ482fをオフし、ステップS5で、プレイヤキャラクタ102が走行中かどうかを判断する。具体的には、走行中フラグ482gがオンであるかどうかを判断する。ステップS5で“NO”であれば、つまり走行中フラグ482gがオフであれば、プレイヤキャラクタ102は停止していると判断して、図9に示すステップS39に進む。一方、ステップS5で“YES”であれば、つまり走行中フラグ482gがオンであれば、プレイヤキャラクタ102が走行中であると判断して、ステップS7で、後述する減速度Bの決定処理(減速度決定処理:図11参照)を実行して、図9に示すステップS33に進む。
【0088】
また、ステップS1で“YES”であれば、つまりタッチパネル22への入力があれば、ステップS9で、入力された座標データすなわち現タッチ座標Pj(Xj,Yj)をデータ記憶領域482の座標バッファ482dに記憶する。続くステップS11では、タッチ入力フラグ482fがオンであるかどうかを判断する。ステップS11で“NO”であれば、つまりタッチ入力フラグ482fがオフであれば、タッチ入力が継続していない、すなわちストローク操作ではないと判断し、ステップS13で、タッチ入力フラグ482fをオンする。次にステップS15で、座標バッファ482dにおいて、現タッチ座標Pj(Xj,Yj)を前タッチ座標Pi(Xi,Yi)に置き換えて、ステップS39に進む。
【0089】
一方、ステップS11で“YES”であれば、つまりタッチ入力フラグ482fがオンであれば、タッチ入力が継続している、すなわちストローク操作であると判断する。続いて、ステップS17で、現タッチ座標Pj(Xj,Yj)を読み出し、ステップS19で、前タッチ座標Pi(Xi,Yi)を読み出し、ステップS21で、座標距離(1フレーム期間におけるストローク操作の長さ)ΔD(ΔX,ΔY)を算出する(数1参照)。そして、ステップS23で、ΔDが閾値を超えている(ΔD>閾値)かどうかを判断する。ステップS23で“NO”であれば、つまりΔDが閾値以下であれば、超短入力であると判断して、図9に示すステップS27に進む。一方、ステップS23で“YES”であれば、つまりΔDが閾値を超えていれば、短入力または長入力であると判断して、ステップS25で、後述するように、一定速度Aを新速度Vjとして決定する処理(新速度決定処理:図10参照)を実行して、図9に示すステップS35に進む。
【0090】
図9に示すように、ステップS27では、プレイヤキャラクタ102が走行中かどうかを判断する。この判断処理は、上述のステップS3の処理と同じであるため、詳細な説明は省略することにする。ステップS27で“NO”であれば、つまりプレイヤキャラクタ102が走行中でなければ、そのままステップS39に進む。
【0091】
なお、この実施例では、プレイヤキャラクタ102が停止中に超短入力がある場合には、プレイヤキャラクタ102を何ら制御しないようにしてあるが、超短入力が示す方向に、プレイヤキャラクタ102の向きを変化させるようにしてもよい。
【0092】
また、ステップS27で“YES”であれば、つまりプレイヤキャラクタ102が走行中であれば、ステップS29で、減速度決定処理(図11参照)を実行し、ステップS31で、減速度Bを増加させ、つまり減速度Bを数3に従って更新し、ステップS33で、現速度Viを読み出し、新速度Vjを数2に従って算出する。
【0093】
続いて、ステップS35では、新速度Vjおよびストローク方向(移動方向)に基づいて、プレイヤキャラクタ102を移動させる。なお、ストローク方向は、差分ΔDについてのベクトルの向きである。続くステップS37では、新速度Vjと座標Pjとを記憶する。ただし、このとき、新速度Vjは現速度Viに置き換えられ(Vi=Vj)、現タッチ座標Pjは前タッチ座標Piに置き換えられる(Pi=Pj)。これは、後述するように、ステップS39の処理を経て、ステップS1に戻った後に、次回(次フレーム)の処理において、現速度Viおよび前タッチ座標Piとして用いるためである。
【0094】
そして、ステップS39では、ゲーム終了かどうかを判断する。つまり、プレイヤによってゲーム終了の指示が与えられたり、ゲームオーバになったりしたかどうかを判断する。ステップS39で“NO”であれば、つまりゲーム終了でなければ、そのまま図8に示したステップS1に戻る。しかし、ステップS39で“YES”であれば、つまりゲーム終了であれば、そのまま移動制御処理を終了する。
【0095】
なお、図8および図9に示す移動制御処理は、1フレーム毎に実行される。したがって、ステップS1の処理も1フレーム毎に実行されることになる。
【0096】
図10は、図8に示したステップS25の新速度決定処理を示すフロー図である。この図10を参照して、CPUコア42は新速度決定処理を開始すると、ステップS51で、キャラクタ座標を取得する。つまり、プレイヤキャラクタ102についてのオブジェクトデータ482aに含まれる位置データを参照して、ゲーム空間すなわちゲームマップ上における現在位置を検出する。次のステップS53では、プレイヤキャラクタ102が道路上かどうかを判断する。つまり、CPUコア42は、マップデータ482bを参照して、プレイヤキャラクタ102の現在位置が属するゲームマップ上の位置に、道路オブジェクト104が配置されているかどうかを判断する。以下、同様である。ステップS53で“YES”あれば、つまりプレイヤキャラクタ102が道路上を走行している場合には、ステップS61で、速度データ482cを参照して、道路用の一定速度A1を読み出して、ステップS63に進む。
【0097】
しかし、ステップS53で“NO”であれば、つまりプレイヤキャラクタ102が道路上でなければ、ステップS55で、プレイヤキャラクタ102が草原上であるかどうかを判断する。この判断方法は、ステップS53における判断方法と同様であるため、詳細な説明は省略することにする。ステップS55で“YES”であれば、つまりプレイヤキャラクタ102が草原を走行中であれば、ステップS59で、草原用の一定速度A2を読み出して、ステップS63に進む。
【0098】
また、ステップS55で“NO”であれば、つまりプレイヤキャラクタ102が森林上であれば、ステップS57で、森林用の一定速度A3を読み出して、ステップS63に進む。ステップS63では、ステップS57,S59,S63のいずれかで読み出された一定速度Aを新速度Vj(Vj=A(A1,A2,A3))として決定し、新速度決定処理をリターンする。
【0099】
図11は、図8に示したステップS7および図9に示したステップS29の減速度決定処理を示すフロー図である。なお、以下においては、現速度決定処理と同じステップについては簡単に説明することにする。図11に示すように、減速度決定処理を開始すると、ステップS71で、キャラクタ座標すなわちプレイヤキャラクタ102の位置データを取得する。続くステップS73では、プレイヤキャラクタ102が道路上であるかどうかを判断する。ステップS73で“YES”であれば、ステップS81で、速度データ482cを参照して、道路用の減速度B1を読み出し、減速度決定処理をリターンする。
【0100】
ステップS73で“NO”であれば、ステップS75で、プレイヤキャラクタ102が草原上であるかどうかを判断する。ステップS75で“YES”であれば、ステップS79で、草原用の減速度B2を読み出し、減速度決定処理をリターンする。一方、ステップS75で“NO”であれば、ステップS77で、森林用の減速度B3を読み出し、減速度決定処理をリターンする。
【0101】
この実施例によれば、ストローク操作の長さに基づいてプレイヤキャラクタの移動速度を決定し、また、ストローク操作の方向にプレイヤキャラクタを移動させることができるので、プレイヤキャラクタを自在に操ることができる。また、ストローク操作するだけなので、操作が簡単である。
【0102】
また、この実施例では、プレイヤキャラクタが走行のし易さに応じて、一定速度や減速度を変化させるようにしてあるため、直感的な操作ができ、リアリティを味わうことができる。
【0103】
なお、この実施例では、プレイヤキャラクタを、道路、草原および森林のような背景上で走行させるようにしてあるが、背景はこれに限定される必要はない。たとえば、川や湖などを配置することもできる。かかる場合には、4種類以上の一定速度および減速度を用意しておき、プレイヤキャラクタが現在位置(走行位置)に基づいて、1の一定速度および1の減速度を選択的に決定することができる。また、少なくとも2種類の背景オブジェクトが配置されていれば、プレイヤキャラクタの走行や減速のし易さの違いを表現することができる。
【0104】
また、この実施例では、2つのLCDを設けて2つのゲーム画面を表示する場合について説明したが、1つのLCDを設けて、これに対応してタッチパネルを設けておき、当該LCDに1つのゲーム画面を表示するようにしてもよい。
【0105】
さらに、この実施例では、2つのLCDを設けたゲーム装置について説明したが、1つのLCDの表示領域を2つに分割し、少なくともいずれか一方の表示領域に対応してタッチパネルを設けるようにしてもよい。この場合、縦長のLCDを設ける場合には、縦に2つ表示領域が並ぶようにLCDの表示領域を分割し、横長のLCDを設ける場合には、横に2つの表示領域が並ぶようにLCDの表示領域を分割するようにすればよい。
【図面の簡単な説明】
【0106】
【図1】図1はこの発明のゲーム装置の一例を示す図解図である。
【図2】図2は図1に示すゲーム装置の電気的な構成を示すブロック図である。
【図3】図3は図1に示すゲーム装置に設けられる第2のLCDに表示されるゲーム画面の一例を示す図解図である。
【図4】図4はこの実施例の仮想3次元空間またはゲーム装置に設けられる第1のLCDに表示されるゲーム画面の一例を示す図解図である。
【図5】図5は3次元仮想空間に配置されるプレイヤキャラクタの移動制御の一例を示す図解図である。
【図6】図6は3次元仮想空間に配置されるプレイヤキャラクタの移動制御の他の例を示す図解図である。
【図7】図7は図2に示すゲーム装置に内蔵されるRAMのメモリマップを示す図解図である。
【図8】図8は図2に示すCPUコアのプレイヤキャラクタの移動制御処理の一部を示すフロー図である。
【図9】図9は図8のフロー図に後続する移動制御処理の他の一部を示すフロー図である。
【図10】図10は図2に示すCPUコアの現速度決定処理を示すフロー図である。
【図11】図11は図2に示すCPUコアの減速度決定処理を示すフロー図である。
【符号の説明】
【0107】
10 …ゲーム装置
12,14 …LCD
16,16a,16b …ハウジング
20 …操作スイッチ
22 …タッチパネル
24 …スティック
28 …メモリカード
28a …ROM
28b,48 …RAM
40 …電子回路基板
42 …CPUコア
50,52 …GPU
54 …I/F回路
56,58 …VRAM
60 …LCDコントローラ
【特許請求の範囲】
【請求項1】
少なくともプレイヤによって操作されるプレイヤキャラクタを含むゲーム空間の一部をゲーム画像として表示する表示器および前記表示器に関連して設けられるタッチパネルを備えるゲーム装置のゲームプログラムであって、
前記ゲーム装置のプロセサに、
前記タッチパネルへのタッチ入力の有無を一定時間毎に検出するタッチ入力検出ステップ、
前記タッチ入力検出ステップによって検出されたタッチ入力に基づくタッチ座標を検出するタッチ座標検出ステップ、
前記タッチ入力検出ステップによってタッチ入力が有る状態が連続して検出されたとき、直前の第1タッチ座標と現在の第2タッチ座標との差分を検出する差分検出ステップ、
前記差分検出ステップによって検出された差分と所定の閾値とを比較する比較ステップ、
前記ゲーム空間における前記プレイヤキャラクタの現在位置を検出する位置検出ステップ、および
前記差分が前記所定の閾値を超えるとき、前記位置検出ステップによって検出された現在位置に基づいて決定される第1移動速度で前記差分が示す移動方向に前記プレイヤキャラクタを移動させる移動処理ステップを実行させる、ゲームプログラム。
【請求項2】
前記ゲーム装置は、複数種類の地形情報で構成されるゲームマップを記憶する記憶手段をさらに備え、
前記位置検出ステップは、前記記憶手段に記憶されるゲームマップ上における前記プレイヤキャラクタの現在位置を検出し、
前記移動処理ステップは、前記地形情報毎に定義されている速度パラメータに基づいて、前記位置検出ステップによって検出された現在位置が属する前記地形情報に応じた演算を行うことにより決定される第1移動速度で前記差分が示す移動方向に前記プレイヤキャラクタを移動させる、請求項1に記載のゲームプログラム。
【請求項3】
前記プレイヤキャラクタが移動中か否かを判定する移動判定ステップをさらに実行させ、
前記移動処理ステップは、
前記タッチ入力検出ステップによってタッチ入力が無い状態が検出され、前記移動判定ステップによって前記プレイヤキャラクタが移動中であると判定されたとき、第1減速度を現在の移動速度から減算した第2移動速度を算出する第2移動速度算出ステップ、および
前記差分が前記所定の閾値以下であり、前記移動判定ステップによってプレイヤキャラクタが移動中であると判定されたとき、前記第1減速度よりも大きい第2減速度を現在の移動速度から減算した第3移動速度を算出する第3移動速度算出ステップを含む、請求項1または2記載のゲームプログラム。
【請求項4】
前記位置検出ステップによって検出された現在位置に基づいて前記第1減速度および第2減速度を決定する減速度決定ステップをさらに実行させる、請求項3記載のゲームプログラム。
【請求項5】
前記第3移動速度算出ステップは、前記差分が連続して前記所定の閾値以下であるとき、前記第2減速度を次第に大きくさせて前記第3移動速度を算出する、請求項3または4記載のゲームプログラム。
【請求項6】
少なくともプレイヤによって操作されるプレイヤキャラクタを含むゲーム空間の一部をゲーム画像として表示する表示器および前記表示器に関連して設けられるタッチパネルを備えるゲーム装置であって、
前記タッチパネルへのタッチ入力の有無を一定時間毎に検出するタッチ入力検出手段、
前記タッチ入力検出手段によって検出されたタッチ入力に基づくタッチ座標を検出するタッチ座標検出手段、
前記タッチ入力検出手段によってタッチ入力が有る状態が連続して検出されたとき、直前の第1タッチ座標と現在の第2タッチ座標との差分を検出する差分検出手段、
前記差分検出手段によって検出された差分と所定の閾値とを比較する比較手段、
前記ゲーム空間における前記プレイヤキャラクタの現在位置を検出する位置検出手段、および
前記差分が前記所定の閾値よりも大きいとき、前記位置検出手段によって検出された現在位置に基づいて決定される移動速度で前記差分が示す移動方向に前記プレイヤキャラクタを移動させる移動処理手段を備える、ゲーム装置。
【請求項1】
少なくともプレイヤによって操作されるプレイヤキャラクタを含むゲーム空間の一部をゲーム画像として表示する表示器および前記表示器に関連して設けられるタッチパネルを備えるゲーム装置のゲームプログラムであって、
前記ゲーム装置のプロセサに、
前記タッチパネルへのタッチ入力の有無を一定時間毎に検出するタッチ入力検出ステップ、
前記タッチ入力検出ステップによって検出されたタッチ入力に基づくタッチ座標を検出するタッチ座標検出ステップ、
前記タッチ入力検出ステップによってタッチ入力が有る状態が連続して検出されたとき、直前の第1タッチ座標と現在の第2タッチ座標との差分を検出する差分検出ステップ、
前記差分検出ステップによって検出された差分と所定の閾値とを比較する比較ステップ、
前記ゲーム空間における前記プレイヤキャラクタの現在位置を検出する位置検出ステップ、および
前記差分が前記所定の閾値を超えるとき、前記位置検出ステップによって検出された現在位置に基づいて決定される第1移動速度で前記差分が示す移動方向に前記プレイヤキャラクタを移動させる移動処理ステップを実行させる、ゲームプログラム。
【請求項2】
前記ゲーム装置は、複数種類の地形情報で構成されるゲームマップを記憶する記憶手段をさらに備え、
前記位置検出ステップは、前記記憶手段に記憶されるゲームマップ上における前記プレイヤキャラクタの現在位置を検出し、
前記移動処理ステップは、前記地形情報毎に定義されている速度パラメータに基づいて、前記位置検出ステップによって検出された現在位置が属する前記地形情報に応じた演算を行うことにより決定される第1移動速度で前記差分が示す移動方向に前記プレイヤキャラクタを移動させる、請求項1に記載のゲームプログラム。
【請求項3】
前記プレイヤキャラクタが移動中か否かを判定する移動判定ステップをさらに実行させ、
前記移動処理ステップは、
前記タッチ入力検出ステップによってタッチ入力が無い状態が検出され、前記移動判定ステップによって前記プレイヤキャラクタが移動中であると判定されたとき、第1減速度を現在の移動速度から減算した第2移動速度を算出する第2移動速度算出ステップ、および
前記差分が前記所定の閾値以下であり、前記移動判定ステップによってプレイヤキャラクタが移動中であると判定されたとき、前記第1減速度よりも大きい第2減速度を現在の移動速度から減算した第3移動速度を算出する第3移動速度算出ステップを含む、請求項1または2記載のゲームプログラム。
【請求項4】
前記位置検出ステップによって検出された現在位置に基づいて前記第1減速度および第2減速度を決定する減速度決定ステップをさらに実行させる、請求項3記載のゲームプログラム。
【請求項5】
前記第3移動速度算出ステップは、前記差分が連続して前記所定の閾値以下であるとき、前記第2減速度を次第に大きくさせて前記第3移動速度を算出する、請求項3または4記載のゲームプログラム。
【請求項6】
少なくともプレイヤによって操作されるプレイヤキャラクタを含むゲーム空間の一部をゲーム画像として表示する表示器および前記表示器に関連して設けられるタッチパネルを備えるゲーム装置であって、
前記タッチパネルへのタッチ入力の有無を一定時間毎に検出するタッチ入力検出手段、
前記タッチ入力検出手段によって検出されたタッチ入力に基づくタッチ座標を検出するタッチ座標検出手段、
前記タッチ入力検出手段によってタッチ入力が有る状態が連続して検出されたとき、直前の第1タッチ座標と現在の第2タッチ座標との差分を検出する差分検出手段、
前記差分検出手段によって検出された差分と所定の閾値とを比較する比較手段、
前記ゲーム空間における前記プレイヤキャラクタの現在位置を検出する位置検出手段、および
前記差分が前記所定の閾値よりも大きいとき、前記位置検出手段によって検出された現在位置に基づいて決定される移動速度で前記差分が示す移動方向に前記プレイヤキャラクタを移動させる移動処理手段を備える、ゲーム装置。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【公開番号】特開2006−149662(P2006−149662A)
【公開日】平成18年6月15日(2006.6.15)
【国際特許分類】
【出願番号】特願2004−344535(P2004−344535)
【出願日】平成16年11月29日(2004.11.29)
【出願人】(000233778)任天堂株式会社 (1,115)
【出願人】(504440133)株式会社ポケモン (3)
【Fターム(参考)】
【公開日】平成18年6月15日(2006.6.15)
【国際特許分類】
【出願日】平成16年11月29日(2004.11.29)
【出願人】(000233778)任天堂株式会社 (1,115)
【出願人】(504440133)株式会社ポケモン (3)
【Fターム(参考)】
[ Back to top ]