それゆえに、この発明の主たる目的は、プレイヤがラインを描くような操作をすることによってプレイヤキャラクタの移動状態を変化させることができ、ゲームのルールを知らなくても直感的に操作し得る、面白さと斬新さに富んだ新規な、ゲーム装置及びゲームプログラムを提供することである。
この発明の他の目的は、ゲームプレイのための操作に熟練を要さず、初心者でも楽しみながらゲームプレイし得る、ゲーム装置及びゲームプログラムを提供することである。
上記目的を達成するために、本発明は以下のような構成を採用した。なお、括弧内の参照符号,図番号および補足説明は、本発明の理解を助けるために後述の実施形態との対応関係を示したものであって、本発明の範囲を何ら限定するものではない。
本発明の第1の局面は、表示部(12)、座標入力手段(16)、軌跡記憶制御手段(31,S41,S46)、移動制御手段(31,S75)、判定手段(31,S67)、軌跡移動制御手段(31,S79,S80)、および表示制御手段(31,S23)を備えた、ゲーム装置である。表示部は、ゲーム画像を表示するためのものである。座標入力手段は、前記ゲーム画像上で座標を入力するための手段である。軌跡記憶制御手段は、前記座標入力手段によって入力される座標に基づいて当該入力座標の遷移履歴を表す軌跡データ(372)を記憶手段に記憶する手段である。移動制御手段は、移動キャラクタの位置座標データを記憶手段に記憶するとともに当該位置座標データを所定の規則に基づいて更新する手段である。判定手段は、前記軌跡データと前記位置座標データに基づいて、軌跡に前記移動キャラクタが接触したか否かを判定する手段である。軌跡移動制御手段は、前記判定手段によって前記軌跡に前記移動キャラクタが接触したことが判定されたときに、前記軌跡データに基づいて、当該移動キャラクタが当該軌跡に応じた移動をするように、前記位置座標データを更新する手段である。表示制御手段は、前記位置座標データに基づいて移動キャラクタを前記表示部に表示させる手段である。
本発明の第2の局面は、上記第1の局面において、前記表示制御手段は、前記軌跡データに基づいて、前記軌跡を前記表示部に表示させることを特徴とする。
本発明の第3の局面は、上記第1の局面において、前記移動制御手段は、前記判定手段によって前記軌跡に前記移動キャラクタが接触したことが判定されないときに、前記所定の規則に基づく更新をおこなうことを特徴とする。
本発明の第4の局面は、上記第1の局面において、前記軌跡移動制御手段は、前記軌跡データに基づいて、前記移動キャラクタが前記軌跡に沿って移動するように、前記位置座標データを更新することを特徴とする。
本発明の第5の局面は、上記第1の局面において、前記軌跡移動制御手段は、前記軌跡データに基づいて、前記移動キャラクタが前記軌跡に吸着して移動するように、前記位置座標データを更新することを特徴とする。
なお、上記第1、第3、第4、第5の局面に関し、軌跡移動制御手段は、例えば、軌跡に接触した移動キャラクタが、軌跡に沿って移動するようにしてもよい。この場合、例えば、移動キャラクタが軌跡上を転がったり歩いたりすべったりして軌跡に接触したまま移動するようにしたり、移動キャラクタの内部の点(例えば、中心)が軌跡上を移動するようにしてもよい。また、移動キャラクタが軌跡に沿って移動しない場合には、移動キャラクタが軌跡に接触した瞬間のみ移動キャラクタの移動方向を変化するようにしてもよい。
なお、軌跡に沿って移動させる場合、移動キャラクタを軌跡が描かれた方向に移動させても良いし、そうでなくてもよい。後者の場合には、例えば、移動キャラクタの接触時点の移動方向の軌跡の接線方向成分に従って接触後の移動方向を決めても良い。
本発明の第6の局面は、上記第1の局面において、前記軌跡移動制御手段は、前記軌跡データに基づいて、前記移動キャラクタが前記軌跡の接線方向に移動するように、記憶手段に記憶される前記位置座標データを更新することを特徴とする。
本発明の第7の局面は、上記第1ないし第6のいずれかの局面において、前記軌跡移動制御手段は、前記軌跡データに基づいて、前記移動キャラクタが前記軌跡上の相対的に古い入力座標から相対的に新しい入力座標に向かう方向に移動または加速するように、前記位置座標データを更新することを特徴とする。
なお、上記第7の局面に関し、軌跡移動制御手段は、軌跡上の相対的に古い入力座標から相対的に新しい入力座標に向かう方向に移動または加速するように位置座標データを更新するが、これは、移動キャラクタの移動方向が当該方向であればよく、移動キャラクタが当該古い入力座標を出発点として当該新しい入力座標へ向かって移動することは必須ではない。
また、移動キャラクタは必ずしも当該方向に移動する必要はなく、移動キャラクタを当該方向に加速させる場合には、接触前の移動キャラクタの移動方向が当該方向と反対方向であったときには、移動速度が減少する制御がされる。
本発明の第8の局面は、上記第1の局面において、前記判定手段は、前記軌跡データと前記位置座標データに基づいて、前記軌跡上の時間的に連続する2つの入力座標を両端点とする各線分について、前記移動キャラクタが接触したか否かを判定することを特徴とする。
本発明の第9の局面は、上記第8の局面において、前記判定手段は、最も古い入力座標を端点とする前記線分から順番に前記移動キャラクタが接触したか否かを判定し、前記移動キャラクタがいずれかの前記線分に接触したことが判定されたときに、前記判定を終了することを特徴とする。
本発明の第10の局面は、上記第8の局面において、前記軌跡移動制御手段は、前記判定手段によって接触したと判定された線分の両端点のうち、相対的に古い入力座標から相対的に新しい入力座標に向かう方向に前記移動キャラクタが移動または加速するように、前記位置座標データを更新することを特徴とする。
本発明の第11の局面は、上記第10の局面において、前記軌跡移動制御手段は、ある線分の両端点のうち相対的に古い入力座標から相対的に新しい入力座標に向かう方向に前記移動キャラクタが移動するように前記位置座標データを更新し続けているときに、前記位置座標データが示す位置座標が所定条件を満たすようになったときに、当該相対的に新しい入力座標から時間的に連続するさらに新しい入力座標に向かう方向に前記移動キャラクタが移動するように前記位置座標データを更新することを特徴とする。
なお、上記第11の局面に関し、所定条件の例として、位置座標データが示す位置座標が線分の端点のうち相対的に新しい入力座標に達したことを条件としてもよいし、位置座標データが示す位置座標から線分に下ろした垂線とその線分との交点が、その線分の端点のうち相対的に新しい入力座標に達したことを条件としてもよい。また、移動キャラクタが次の線分に接触するような位置座標データになったことを条件としてもよい。
本発明の第12の局面は、上記第11の局面において、前記軌跡移動制御手段は、ある線分の両端点のうち相対的に古い入力座標から相対的に新しい入力座標に向かう方向に前記移動キャラクタが移動するように前記位置座標データを更新し続けているときに、前記移動キャラクタが当該ある線分に時間的に連続する新たな線分に接触したか否かを判定し、当該接触したと判定されたときに、当該新たな線分の両端点のうち相対的に古い入力座標から相対的に新しい入力座標に向かう方向に前記移動キャラクタが移動するように、前記位置座標データを更新することを特徴とする。
本発明の第13の局面は、上記第11の局面において、記軌跡移動制御手段は、ある線分の両端点のうち相対的に古い入力座標から相対的に新しい入力座標に向かう方向に前記移動キャラクタが移動するように前記位置座標データを更新し続けているときに、前記移動キャラクタが当該ある線分に接触しなくなったか否かを判定し、当該接触しなくなったと判定されたときに、当該ある線分の両端点のうち相対的に新しい入力座標を中心とする円弧上を前記位置座標データが示す位置座標が移動するように、かつ、前記位置座標データが示す位置座標と当該相対的に新しい入力座標を結ぶ直線が、当該ある線分に時間的に連続する新たな線分と直交するまで、前記位置座標データを更新し、その後、当該新たな線分の両端点のうち、相対的に古い入力座標から相対的に新しい入力座標に向かう方向に前記移動キャラクタが移動するように、前記位置座標データを更新することを特徴とする。
本発明の第14の局面は、上記第10の局面において、前記判定手段は、前記軌跡移動制御手段は、ある線分の両端点のうち相対的に古い入力座標から相対的に新しい入力座標に向かう方向に前記移動キャラクタが移動するように前記位置座標データを更新し続けているときに、前記移動キャラクタが当該ある線分に接触しなくなったか否かを判定し、当該接触しなくなったと判定されたときに、当該線分よりも新しい線分が存在しないことを判定する軌跡移動終了判定手段をさらに備え、前記軌跡移動制御手段は、前記判定手段によって前記軌跡に前記移動キャラクタが接触したことが判定されてから、前記軌跡移動終了判定手段によって前記新しい入力座標が存在しないことが判定されるまで、前記軌跡データに基づく前記位置座標データの更新をおこなうことを特徴とする。
本発明の第15の局面は、上記第1の局面において、前記移動キャラクタの移動速度データを記憶手段に記憶する移動速度データ記憶制御手段をさらに備え、前記軌跡移動制御手段は、前記移動速度データに基づいて、前記位置座標データを更新し、前記軌跡の形状および前記移動速度データに基づいて、前記軌跡データに基づく前記位置座標データの更新を終了するか否かを判定する軌跡移動終了判定手段をさらに備え、前記軌跡移動制御手段は、前記判定手段によって前記軌跡に前記移動キャラクタが接触したことが判定されてから、前記軌跡移動終了判定手段によって終了することが判定されるまで、前記軌跡データに基づく前記位置座標データの更新をおこなうことを特徴とする。
なお、上記第15の局面に関し、軌跡移動終了判定手段は、軌跡の方向変化率が高く、移動速度が大きいときに、終了することを判定してもよい。
本発明の第16の局面は、上記第11の局面において、前記移動キャラクタの移動速度データを記憶手段に記憶する移動速度データ記憶制御手段をさらに備え、前記軌跡移動制御手段は、前記移動速度データに基づいて、前記位置座標データを更新し、前記所定条件を満たすと判定されたときに、前記ある線分を基準として、前記位置座標データが示す位置座標と、当該線分の両端点のうち相対的に新しい入力座標から時間的に連続するさらに新しい入力座標が異なる側にあるときに、前記移動速度データに基づいて、前記軌跡データに基づく前記位置座標データの更新を終了するか否かを判定する軌跡移動終了判定手段をさらに備え、前記軌跡移動制御手段は、前記判定手段によって前記軌跡に前記移動キャラクタが接触したことが判定されてから、前記軌跡移動終了判定手段によって終了することが判定されるまで、前記軌跡データに基づく前記位置座標データの更新をおこなうことを特徴とする。
本発明の第17の局面は、上記第11の局面において、第1データを記憶する第1データ記憶手段、前記所定条件を満たすと判定されたときに、前記ある線分を基準として、前記位置座標データが示す位置座標と、当該線分の両端点のうち相対的に新しい入力座標から時間的に連続するさらに新しい入力座標が異なる側にあるときに、第1データを閾値に近付けるように更新する第1データ更新手段、および前記第1データが前記閾値になったことを判定する軌跡移動終了判定手段をさらに備え、前記軌跡移動制御手段は、前記判定手段によって前記軌跡に前記移動キャラクタが接触したことが判定されてから、前記軌跡移動終了判定手段によって前記第1データが前記閾値になったことが判定されるまで、前記軌跡データに基づく前記位置座標データの更新をおこなうことを特徴とする。
なお、上記第17の局面に関し、第1データ更新手段は、第1データを0に近付けるように更新し、軌跡移動終了判定手段は第1データが0(または0以下)になったことを判定してもよい。また、第1データ更新手段は、第1データを増加させるように更新し、軌跡移動終了判定手段は第1データが0より大きい所定値(または所定値以上)になったことを判定してもよい。
本発明の第18の局面は、上記第17の局面において、前記第1データ更新手段は、前記ある線分を基準として、前記位置座標データが示す位置座標と、当該線分の両端点のうち相対的に新しい入力座標から時間的に連続するさらに新しい入力座標が同じ側にあるときには、第1データを閾値から遠ざけるように更新することを特徴とする。
本発明の第19の局面は、上記第17または第18の局面において、前記移動キャラクタの移動速度データを記憶手段に記憶する移動速度データ記憶制御手段をさらに備え、前記軌跡移動制御手段は、前記移動速度データに基づいて、前記位置座標データを更新し、前記第1データ更新手段は、前記移動速度データに基づいて、前記更新する量を決定することを特徴とする。
本発明の第20の局面は、上記第1の局面において、前記判定手段によって前記軌跡に前記移動キャラクタが接触したことが判定されたときに、前記位置座標データが示す位置座標と、当該位置座標から前記軌跡に下ろした垂線と当該軌跡との交点との間の距離を所定距離に設定する、めり込み制御手段をさらに備えることを特徴とする。
本発明の第21の局面は、上記第20の局面において、前記めり込み制御手段は、前記距離が前記所定距離に徐々に近付くように、前記位置座標データを更新することを特徴とする。
本発明の第22の局面は、上記第1の局面において、前記軌跡記憶制御手段は、前記座標入力手段が座標の検出を開始してから検出を終了するまでの期間において連続して入力される座標に基づいて、1グループの前記軌跡データを記憶手段に記憶することを特徴とする。
本発明の第23の局面は、上記第22の局面において、前記軌跡記憶制御手段は、前記軌跡上の時間的に連続する2つの入力座標を両端点とする線分について、時間的に連続する2つの線分のなす角度が閾値以上になったときに、当該線分のうち相対的に古い線分以前についての入力座標に基く前記軌跡データと、当該線分のうち時間的に新しい線分以降についての入力座標に基づく前記軌跡データとを、別グループとして記憶することを特徴とする。
本発明の第24の局面は、上記第1の局面において、前記軌跡記憶制御手段は、前記座標入力手段が座標の検出を開始してから検出を終了するまでの期間において連続して入力される座標に基づいて、1グループの前記軌跡データを記憶手段に記憶し、前記判定手段は、各グループについての前記軌跡データと前記位置座標データに基づいて、いずれのグループに前記移動キャラクタが接触したか否かを判定し、前記判定手段によっていずれかのグループに前記移動キャラクタが接触したことが判定されたときに、当該グループについての前記軌跡データに基づいて当該移動キャラクタが移動するように、記憶手段に記憶される前記位置座標データを更新することを特徴とする。
本発明の第25の局面は、上記第1の局面において、あるグループについての前記軌跡データが記憶手段に記憶されているときに、前記座標入力手段が新たな座標の検出を開始したときに、当該グループの軌跡データを記憶手段から消去または無効にする軌跡データ消去手段をさらに備えることを特徴とする。
本発明の第26の局面は、上記第1の局面において、前記移動キャラクタの移動速度データを記憶手段に記憶する移動速度データ記憶制御手段をさらに備え、前記移動制御手段は、前記移動速度データに基づいて、前記位置座標データを更新し、前記軌跡移動制御手段は、前記判定手段によって前記軌跡に前記移動キャラクタが接触したことが判定されたときに、前記移動キャラクタが前記軌跡に接触した時点における前記移動速度データが閾値よりも小さいときのみ、前記軌跡データに基づいて、当該移動キャラクタが当該軌跡に応じた移動をするように、前記位置座標データを更新することを特徴とする。
本発明の第27の局面は、上記第1の局面において、前記移動キャラクタの移動速度データを記憶手段に記憶する移動速度データ記憶制御手段をさらに備え、前記移動制御手段は、前記移動速度データに基づいて、前記位置座標データを更新し、前記軌跡移動制御手段は、前記判定手段によって前記軌跡に前記移動キャラクタが接触したことが判定されたときに、前記移動キャラクタが前記軌跡に接触した時点における前記移動速度データの前記軌跡に垂直な成分が閾値よりも小さいときのみ、前記軌跡データに基づいて、当該移動キャラクタが当該軌跡に応じた移動をするように、前記位置座標データを更新することを特徴とする。
本発明の第28の局面は、上記第26の局面において、前記閾値は、前記軌跡の角度に応じて決定されることを特徴とする。
本発明の第29の局面は、上記第26の局面において、前記移動キャラクタの移動速度データを記憶手段に記憶する移動速度データ記憶制御手段をさらに備え、前記移動制御手段は、前記移動速度データに基づいて、前記位置座標データを更新し、前記軌跡移動制御手段は、前記判定手段によって前記軌跡に前記移動キャラクタが接触したことが判定されたときであっても、前記移動速度データが閾値以上のときには、前記移動キャラクタが当該軌跡に対して反転するように、前記移動速度データを更新することを特徴とする。
本発明の第30の局面は、上記第10の局面において、前記判定手段は、さらに、前記軌跡データと前記位置座標データに基づいて、前記移動キャラクタが前記入力座標に接触し、かつ、当該入力座標から当該入力座標を端点とする前記線分に垂直に伸ばした直線を基準として、前記位置座標データが示す位置座標と当該線分の他方端点とが異なる側に存在することを判定し、当該異なる側に存在すると判定されたときに、当該入力座標を中心とする円弧上を前記位置座標データが示す位置座標が移動するように、かつ、前記位置座標データが示す位置座標と当該入力座標を結ぶ直線が、当該線分と直交するまで、前記位置座標データを更新し、その後、当該線分の両端点のうち、相対的に古い入力座標から相対的に新しい入力座標に向かう方向に前記移動キャラクタが移動するように、前記位置座標データを更新することを特徴とする。
本発明の第31の局面は、上記第30の局面において、前記移動キャラクタの移動速度データを記憶手段に記憶する移動速度データ記憶制御手段をさらに備え、前記移動制御手段は、前記移動速度データに基づいて、前記位置座標データを更新し、前記判定手段によって、記軌跡データと前記位置座標データに基づいて、前記移動キャラクタが前記入力座標に接触し、かつ、当該入力座標から当該入力座標を端点とする前記線分に垂直に伸ばした直線を基準として、前記位置座標データが示す位置座標と当該線分の他方端点とが異なる側に存在することが判定されたときに、当該判定がされた時点の前記移動速度データが示す移動速度の当該線分に垂直な成分が閾値より小さいときのみ、当該線分の両端点のうち、相対的に古い入力座標から相対的に新しい入力座標に向かう方向に前記移動キャラクタが移動するように、前記位置座標データを更新することを特徴とする。
本発明の第32の局面は、上記第31の局面において、前記移動キャラクタの移動速度データを記憶手段に記憶する移動速度データ記憶制御手段をさらに備え、前記移動制御手段は、前記移動速度データに基づいて、前記位置座標データを更新し、前記判定手段によって、記軌跡データと前記位置座標データに基づいて、前記移動キャラクタが前記入力座標に接触し、かつ、当該入力座標から当該入力座標を端点とする前記線分に垂直に伸ばした直線を基準として、前記位置座標データが示す位置座標と当該線分の他方端点とが異なる側に存在することが判定されたときであっても、当該判定がされた時点の前記移動速度データが示す移動速度の当該線分に垂直な成分が閾値以上のときには、前記移動キャラクタが当該入力座標に対して反転するように、前記移動速度データを更新することを特徴とする。
本発明の第33の局面は、上記第30の局面において、前記移動キャラクタの移動速度データを記憶手段に記憶する移動速度データ記憶制御手段をさらに備え、前記移動制御手段は、前記移動速度データに基づいて、前記位置座標データを更新し、前記判定手段によって、記軌跡データと前記位置座標データに基づいて、前記移動キャラクタが前記入力座標に接触し、かつ、当該入力座標から当該入力座標を端点とする前記線分に垂直に伸ばした直線を基準として、前記位置座標データが示す位置座標と当該線分の他方端点とが異なる側に存在することが判定されたときに、当該判定がされた時点の前記移動速度データが示す移動速度の前記位置座標データが示す位置座標と当該入力座標を結ぶ方向の成分が閾値より小さいときのみ、当該線分の両端点のうち、相対的に古い入力座標から相対的に新しい入力座標に向かう方向に前記移動キャラクタが移動するように、前記位置座標データを更新することを特徴とする。
本発明の第34の局面は、上記第33の局面において、前記移動キャラクタの移動速度データを記憶手段に記憶する移動速度データ記憶制御手段をさらに備え、前記移動制御手段は、前記移動速度データに基づいて、前記位置座標データを更新し、前記判定手段によって、記軌跡データと前記位置座標データに基づいて、前記移動キャラクタが前記入力座標に接触し、かつ、当該入力座標から当該入力座標を端点とする前記線分に垂直に伸ばした直線を基準として、前記位置座標データが示す位置座標と当該線分の他方端点とが異なる側に存在することが判定されたときであっても、当該判定がされた時点の前記移動速度データが示す移動速度の前記位置座標データが示す位置座標と当該入力座標を結ぶ方向の成分が閾値以上のときには、前記移動キャラクタが当該入力座標に対して反転するように、前記移動速度データを更新することを特徴とする。
本発明の第35の局面は、上記第1の局面において、記憶手段に記憶されている軌跡データを、相対的に古い入力座標から順に自動的に消去または無効にする軌跡データ消去手段をさらに備えることを特徴とする。
なお、上記第35の局面に関し、軌跡データ消去手段は、一定時間ごとに一定量だけ、軌跡データを、相対的に古い入力座標から順に自動的に消去または無効にするようにしてもよい。
本発明の第36の局面は、上記第1または第35の局面において、前記座標入力手段が座標の検出を開始した時点または終了した時点から所定時間が経過したことを判定する時間判定手段をさらに備え、前記軌跡データ消去手段は、前記時間判定手段によって所定時間が経過したことが判定されたときに、前記軌跡データ記憶手段に記憶されている軌跡データを消去または無効にすることを特徴とする。
本発明の第37の局面は、上記第1の局面において、第2データを記憶手段に記憶するとともに、前記軌跡記憶制御手段によって前記軌跡データが記憶手段に記憶されることに応じて、当該第2データを閾値に近付けるように更新する第2データ更新手段をさらに備え、前記軌跡記憶制御手段は、前記第2データが閾値になったときには、前記座標入力手段によって座標が入力されたときも、軌跡データを記憶手段に記憶しないことを特徴とする。
本発明の第38の局面は、上記第37の局面において、前記軌跡量データ更新手段は、前記座標入力手段からの入力がないときに、前記第2データを前記閾値から遠ざけるように自動的に更新することを特徴とする。
本発明の第39の局面は、上記第37の局面において、前記軌跡記憶制御手段によって記憶手段に記憶された前記軌跡データに基づく軌跡の長さを検出する軌跡長さ検出手段を含み、前記軌跡量データ更新手段は、前記軌跡長さ検出手段によって検出された軌跡の長さに応じた量だけ前記第2データを更新することを特徴とする。
本発明の第40の局面は、上記第1の局面において、前記表示制御手段は、前記第2データの値を示す情報を表示することを特徴とする。
本発明の第41の局面は、上記第1の局面において、座標が入力されていない状態から前記座標入力手段によって最初に入力された座標に前記移動キャラクタが存在するか否かを検出するキャラクタ検出手段をさらに備え、前記軌跡記憶制御手段は、前記キャラクタ検出手段によって前記入力座標に移動キャラクタが存在しないことが検出されたときのみ、当該入力座標に基づいて、前記軌跡データを記憶手段に記憶することを特徴とする。
本発明の第42の局面は、上記第1の局面において、前記キャラクタ検出手段によって前記入力座標に前記移動キャラクタが存在することが検出されたことに応じて、当該移動キャラクタを予め定められた動作で表示させることを特徴とする。
本発明の第43の局面は、上記第1の局面において、前記移動キャラクタの移動速度データを記憶手段に記憶する移動速度データ記憶制御手段をさらに備え、前記移動制御手段は、前記移動速度データに基づいて、前記位置座標データを更新し、前記判定手段によって前記軌跡に前記移動キャラクタが接触したことが判定されたときに、接触直前の前記移動速度データが示す速度のうち前記軌跡の接線方向に水平な成分が前記移動キャラクタの新たな移動速度となるように決定する移動速度決定手段をさらに備えることを特徴とする。
本発明の第44の局面は、上記第36の局面において、前記移動キャラクタの移動速度データを記憶手段に記憶する移動速度データ記憶制御手段をさらに備え、前記軌跡移動制御手段は、前記移動速度データに基づいて、前記位置座標データを更新し、前記軌跡移動制御手段は、現在の前記移動速度データが示す移動速度の大きさに基づいて、当該移動速度データを更新するための加速度の大きさを決定する加速度決定手段を含み、前記加速度決定手段は、目標速度値を設定する目標速度設定手段、最大速度値を設定する最大速度設定手段、およびプラスの第1値およびマイナスの第2値を設定する設定手段を含み、現在の前記移動速度データが示す移動速度の大きさが前記目標速度値のときに前記加速度の大きさを0に決定し、現在の前記移動速度データが示す移動速度の大きさが0のときに、前記加速度の大きさを前記第1値に決定し、現在の前記移動速度データが示す移動速度の大きさが前記最大速度値のときに前記加速度の大きさを前記第2値に決定し、現在の前記移動速度データが示す移動速度の大きさが0から前記目標速度値の間のときには前記第1値と0で補間し、現在の前記移動速度データが示す移動速度の大きさが前記目標速度値から前記最大速度値の間のときには0と前記第2値で補間することにより、前記加速度の大きさを決定し、前記軌跡移動制御手段は、前記蚊速度決定手段によって決定された加速度の大きさと、前記軌跡の接線方向によって、加速度ベクトルを決定することを特徴とする。
本発明の第45の局面は、上記第1の局面において、前記座標入力手段が前記表示部の画面上に設けられたタッチパネルであることを特徴とする。
本発明の第46の局面は、ゲーム画像を表示するための表示部(12)と、前記ゲーム画像上で座標を入力するための座標入力手段(16)と、記憶手段(37)とに接続されたコンピュータ(31)を、軌跡記憶制御手段、移動制御手段、判定手段、軌跡移動制御手段、および表示制御手段として機能させるためのゲームプログラムである。軌跡記憶制御手段は、前記座標入力手段によって入力される座標に基づいて当該入力座標の遷移履歴を表す軌跡データを記憶手段に記憶する手段である。移動制御手段は、移動キャラクタの位置座標データを記憶手段に記憶するとともに当該位置座標データを所定の規則に基づいて更新する手段である。判定手段は、前記軌跡データと前記位置座標データに基づいて、軌跡に前記移動キャラクタが接触したか否かを判定する手段である。軌跡移動制御手段は、前記判定手段によって前記軌跡に前記移動キャラクタが接触したことが判定されたときに、前記軌跡データに基づいて、当該移動キャラクタが当該軌跡に応じた移動をするように、前記位置座標データを更新する手段である。表示制御手段は、前記位置座標データに基づいて移動キャラクタを前記表示部に表示させる手段である。
本発明の第47の局面は、表示部(実施例との対応関係を示せば、下画面のLCD12)と、画像データ記憶手段(ROM21の画像データ記憶領域210)と、プログラム記憶手段(ROM21のプログラム記憶領域215)と、座標入力手段(タッチパネル16又はマウス等)と、操作状態検出手段(図10のフローチャート)と、一時記憶手段(W−RAM37)と、書込手段(図10のステップ41,46,48,49)と、操作軌跡画像データ発生手段(図11のステップ66,CPUコア31)と、表示制御手段(図11)とを備えるゲーム装置(10)である。
表示部は、ゲームの画像を表示するもの(例えば、ゲーム装置が家庭用ビデオゲーム機であればテレビジョン受像機等のCRTディスプレイ、携帯ゲーム機であれば液晶表示器等)である。画像データ記憶手段は、少なくとも、ゲームにおけるプレイヤキャラクタ(すなちわ、プレイヤによって操作される移動キャラクタ)や敵キャラクタ等の移動キャラクタを表示するための移動キャラクタ画像データと、背景画像を表示するための背景画像データを記憶する。プログラム記憶手段は、移動キャラクタ画像と背景画像を表示制御するためのゲームプログラム(例えば、背景画像上に移動キャラクタを移動表示させるプログラム)を記憶する。座標入力手段は、その操作によって座標を入力するもの(例えば、マウスやトラックボールやタッチパネル等)である。操作状態検出手段は、座標入力手段によって最初の座標位置(始点)を指定してから座標位置の指定を終了するまでの期間(現在点又はタッチオフした瞬間に現在点が終点となる)における操作軌跡を検出するもの(例えば、各種の検出プログラムとそのブログラムを実行するCPUコア31)である。一時記憶手段は、ゲーム処理に必要なデータを一時記憶する。書込手段は、操作状態検出手段によって検出された操作軌跡に関するデータを一時記憶手段に書き込むもの(例えば、書込みプログラムとそのブログラムを実行するCPUコア31)である。操作軌跡画像データ発生手段は、一時記憶手段に記憶されている操作軌跡に関するデータに基づいて、移動キャラクタの移動を誘導する操作軌跡画像を表示部に表示させるための操作軌跡画像データを発生する。表示制御手段は、ゲームプログラムに基づいて、画像データ記憶手段に記憶されている移動キャラクタ画像データと背景画像データを読み出して、移動キャラクタと背景画像を表示部に表示させるとともに、操作軌跡画像データを用いて操作軌跡画像を表示部に表示させ、当該移動キャラクタを操作軌跡画像に沿って移動表示する。
本発明の第48の局面は、表示部(LCD12)と、タッチパネル(16)と、画像データ記憶手段と、プログラム記憶手段と、操作状態検出手段と、一時記憶手段と、書込手段と、操作軌跡画像データ発生手段と、表示制御手段とを備える、ゲーム装置である。
表示部は、ゲームの画像を表示するものである。タッチパネルは、表示部の上面に装着され、表示部の画面を直接タッチすることによってタッチ位置の座標を入力するものである。画像データ記憶手段は、少なくとも、ゲームの移動キャラクタを表示するための移動キャラクタ画像データと背景画像を表示するための背景画像データを記憶する。プログラム記憶手段は、移動キャラクタ画像と背景画像を表示させるためのゲームプログラムを記憶する。操作状態検出手段は、少なくとも、タッチパネルをタッチ操作して最初の座標位置(始点)を指定してから座標位置の指定を終了するまでの期間(現在点又はタッチオフした瞬間に現在点が終点となる)における操作軌跡を検出する。一時記憶手段は、ゲーム処理に必要なデータを一時記憶する。書込手段は、操作状態検出手段によって検出された操作軌跡に関するデータを一時記憶手段に書き込む。操作軌跡画像データ発生手段は、一時記憶手段に記憶されている操作軌跡に関するデータに基づいて、移動キャラクタの移動を誘導する操作軌跡画像を表示部に表示させるための操作軌跡画像データを発生する。表示制御手段は、ゲームプログラムに基づいて、画像データ記憶手段に記憶されている移動キャラクタ画像データと背景画像データを読み出して、移動キャラクタと背景画像を表示部に表示させるとともに、操作軌跡画像データを用いて操作軌跡画像を表示部に表示させ、当該移動キャラクタを操作軌跡画像に沿って移動表示する。
本発明の第49の局面は、ゲームの画像を表示する表示部が関連的に設けられ、座標入力手段と、ゲームのための移動キャラクタを表示する移動キャラクタ画像データならびに背景画像を表示する背景画像データを記憶する画像データ記憶手段と、移動キャラクタ画像と背景画像を表示制御するためのゲームプログラムを記憶するプログラム記憶手段と、コンピュータと、コンピュータによるゲーム処理のためのデータを一時記憶する一時記憶手段とを備えた画像処理装置において、コンピュータに、操作状態検出ステップと、書込ステップと、操作軌跡画像データ発生ステップと、第1の表示制御ステップと、第2の表示制御ステップと、第3の表示制御ステップとを実行させる、ゲームプログラムである。
操作状態検出ステップは、座標入力手段を操作して最初の座標位置を指定してから座標位置の指定を終了するまでの期間における操作軌跡を検出する。書込ステップは、操作状態検出手段によって検出された操作軌跡に関するデータを一時記憶手段に書き込む。操作軌跡画像データ発生ステップは、一時記憶手段に記憶されている操作軌跡に関するデータに基づいて、移動キャラクタの移動を誘導する操作軌跡画像を表示部に表示させるための操作軌跡画像データを発生する。第1の表示制御ステップは、ゲームプログラムに基づいて、画像データ記憶手段に記憶されている移動キャラクタ画像データと背景画像データを読み出して、移動キャラクタと背景画像を表示部に表示させる。第2の表示制御ステップは、ゲームプログラムと一時記憶手段に記憶されている操作軌跡画像データに基づいて、操作軌跡画像を表示部に表示させる。第3の表示制御ステップは、ゲームプログラムに基づいて、表示部に表示されている移動キャラクタを操作軌跡画像に沿って移動表示する。
本発明の第50の局面は、ゲームのための画像を表示する表示部が関連的に設けられ、表示部の表示画面上に設けられるタッチパネルと、ゲームのための移動キャラクタを表示する移動キャラクタ画像データならびに背景画像を表示する背景画像データを記憶する画像データ記憶手段と、移動キャラクタ画像と背景画像を表示させるためのゲームプログラムを記憶するプログラム記憶手段と、コンピュータと、コンピュータによるゲーム処理のためのデータを一時記憶する一時記憶手段とを備えた画像処理装置において、コンピュータに、操作状態検出ステップと、書込ステップと、操作軌跡画像データ発生ステップと、第1の表示制御ステップと、第2の表示制御ステップと、第3の表示制御ステップとを実行させる、ゲームプログラムである。
操作状態検出ステップは、タッチパネルを操作して最初の座標位置を指定してから座標位置の指定を終了するまでの期間における操作軌跡を検出する。書込ステップは、操作状態検出手段によって検出された操作軌跡に関するデータを一時記憶手段に書き込む。操作軌跡画像データ発生ステップは、一時記憶手段に記憶されている操作軌跡に関するデータに基づいて、移動キャラクタの移動を誘導する操作軌跡画像を表示部に表示させるための操作軌跡画像データを発生する。第1の表示制御ステップは、ゲームプログラムに基づいて、画像データ記憶手段に記憶されている移動キャラクタ画像データと背景画像データを読み出して、移動キャラクタと背景画像を表示部に表示させる。第2の表示制御ステップは、ゲームプログラムと一時記憶手段に記憶されている操作軌跡画像データに基づいて、操作軌跡画像を表示部に表示させる。第3の表示制御ステップは、ゲームプログラムに基づいて、表示部に表示されている移動キャラクタを操作軌跡画像に沿って移動表示する。
本発明の第51の局面は、表示手段(12)、座標入力手段(16)、メモリ(37)、格納手段(31,S41,S46)、無効化手段(31)、ゲーム処理手段(31)、および表示制御手段(31)を備えたゲーム装置である。表示手段は、ゲーム画像を表示するための手段である。座標入力手段は、前記表示手段の画面上の座標を入力するための手段である。メモリは、データを一時的に記憶するためのものである。格納手段は、前記座標入力手段による座標入力の開始から解除までの間、当該座標入力手段によって入力された座標を表す座標データを有効な座標データとして前記メモリに逐次格納する手段である。無効化手段は、前記メモリに格納されている有効な座標データ群のうち、当該メモリに格納されてから一定時間以上が経過した座標データを順次無効にする手段である。ゲーム処理手段は、前記メモリに格納されている有効な座標データ群を用いてゲーム処理を実行する手段である。表示制御手段は、前記ゲーム処理手段によるゲーム処理結果を反映したゲーム画像を前記表示手段に表示させる手段である。
なお、上記第51の局面に関し、「座標データを無効にする」とは、メモリから座標データを消去したり、座標データが有効か否かを示すフラグを「無効」にセットしたりすることである。また、これに対応して、「有効な座標データ」は、メモリに格納されている(すなわちメモリから消去されていない)座標データを指す場合もあれば、メモリに格納されている座標データのうち、座標データが有効か否かを示すフラグが「有効」にセットされている座標データを指す場合もある。
本発明の第52の局面は、ゲーム画像を表示するための表示手段(12)と、前記表示手段の画面上の座標を入力するための座標入力手段(16)と、データを一時的に記憶するメモリ(37)とに接続されたコンピュータ(31)を、格納手段、無効化手段、ゲーム処理手段、および表示制御手段として機能させるためのゲームプログラムである。格納手段は、前記座標入力手段による座標入力の開始から解除までの間、当該座標入力手段によって入力された座標を表す座標データを有効な座標データとして前記メモリに逐次格納する手段である。無効化手段は、前記メモリに格納されている有効な座標データ群のうち、当該メモリに格納されてから一定時間以上が経過した座標データを順次無効にする手段である。ゲーム処理手段は、前記メモリに格納されている有効な座標データ群を用いてゲーム処理を実行する手段である。表示制御手段は、前記ゲーム処理手段によるゲーム処理結果を反映したゲーム画像を前記表示手段に表示させる手段である。
本発明の第53の局面は、上記第52の局面において、前記ゲームプログラムは、前記メモリに格納されている有効な座標データによって構成される操作軌跡が所定の条件を満たしているかどうかを判別する判別手段として更に前記コンピュータを機能させるものであり、前記ゲーム処理手段は、前記判別手段における判定の結果に応じて異なるゲーム処理を実行する手段であることを特徴とする。
なお、上記第53の局面に関し、「所定の条件」の例としては、操作軌跡の形状が所定形状(例えば円)かどうかや、操作軌跡の一部が画面上の所定領域を横切ったかどうか等の条件が挙げられる。
本発明の第54の局面は、上記第52の局面において、前記ゲームプログラムは、前記メモリに格納されている有効な座標データによって構成される操作軌跡の画像を生成する軌跡画像生成手段として更に前記コンピュータを機能させるものであり、前記表示制御手段は、前記軌跡画像生成手段によって生成された操作軌跡の画像を含むゲーム画像を前記表示手段に表示させるものであることを特徴とする。
この発明によれば、プレイヤがラインを描くような操作をすることによってプレイヤキャラクタの移動状態を変化させることができ、ゲームのルールを知らなくても直感的に操作し得る、面白さと斬新さに富んだ新規な、ゲーム装置及びゲームプログラムが得られる。
また、ゲームプレイのための操作に熟練を要さず、初心者でも楽しみながらゲームプレイすることができる。
図1はこの発明のゲーム装置の一例の携帯ゲーム機の外観図である。図1において、この実施例の携帯ゲーム装置10は、2つの液晶表示器(以下「LCD」と略称する)11及びLCD12を所定の配置位置となるように、ハウジング13に収納して構成される。具体的には、第1のLCD11と第2のLCD12を上下に配置して収納する場合は、ハウジング13が上ハウジング13aと下ハウジング13bから構成され、上ハウジング13aが下ハウジング13bの上辺の一部で回動自在(折畳み自在)に保持される。上ハウジング13aは、第1のLCD11の平面形状よりも少し大きな平面形状を有し、一方主面からLCD11の表示面を露出するように開口部が形成される。下ハウジング13bは、その平面形状が上ハウジング13aよりも横長に選ばれ、横方向の略中央部にLCD12の表示面を露出する開口部が形成され、LCD12を挟む何れか一方に音抜き孔14aが形成されるとともに、LCD12を挟む左右に操作スイッチ部15が装着される。
操作スイッチ部15は、LCD12の左横における下ハウジング13bの一方主面に装着される方向指示スイッチ15a,スタートスイッチ15b,セレクトスイッチ15cと、LCD12の右横における下ハウジング13bの一方主面に装着される装着される動作スイッチ15d,15eを含む。方向指示スイッチ15aは、プレイヤによって操作可能なカーソルの移動方向の指示等に用いられる。動作スイッチ15d,15eは、方向指示以外の動作、例えばプレイヤキャラクタ(又は移動キャラクタ)の各種動作を指示するために使用される。また、必要に応じて、動作スイッチをさらに追加するか、下ハウジング13bにおける操作スイッチ部15の装着領域の上部側面に側面スイッチ15L,15Rを設けてもよい。
LCD12の上面には、好ましくはタッチパネル16が装着される。タッチパネル16は、例えば、抵抗膜方式,光学式(赤外線方式),静電容量結合式の何れの種類でもよく、その上面をスティック17(又は指でも可)で押圧操作又は移動操作若しくは撫でる操作をしたとき、スティック17の座標位置を検出して座標データを出力する。タッチパネル16は、LCD12の画面に表示されるゲームフィールド(又は表示領域)の座標を指定して、当該ゲームフィールドに表示される操作対象物を直接指定するか、プレイヤキャラクタを所望の経路で移動させるための操作軌跡画像(この実施例のゲームでは、「虹のライン」という)の表示位置とその形状を指定するために用いられる。また、タッチパネル16は、LCD12に表示されるアイコンの選択・操作や、その他の座標入力指示等に用いてもよい。
このように、携帯ゲーム装置10は、2画面分の液晶表示部となる液晶表示器11,12を有し、何れか一方のLCD(例えば、下画面であるLCD12)の表面に、タッチパネル16が設けられるので、2画面のLCD11,LCD12と2系統の操作部(15,16)を有する構成となる。この場合、タッチパネル16は、操作スイッチ部15とは異なる操作入力又は操作スイッチ部15と同様の入力指示のために用いられる。
上ハウジング13aの側面近傍には、必要に応じて収納孔14bが形成される。この収納孔14bには、タッチパネル16上の座標位置を入力するスティック17を収納するための孔であり、スティック17の外形寸法と略同様に選ばれる。下ハウジング13bの側面の一部には、ゲームプログラムを記憶したメモリ(ROM等)を内蔵したゲームカード(又はゲームカートリッジ)20を着脱自在に装着するためのカード挿入部(図示せず)が形成される。カード挿入部の内部には、メモリカード20と電気的に接続するためのコネクタ(図示せず)が内蔵される。さらに、下ハウジング13b(又は上ハウジング13aでも可)には、CPU等の各種電子部品を実装した電子回路基板(後述の図3に示す30)が収納される。なお、ゲームプログラムを記憶する記憶媒体としては、ROM又はフラッシュメモリのような不揮発性半導体メモリに限らず、CD−ROMやDVD等の光学式ディスク状記憶媒体を用いてもよい。
図2はこの発明の一実施例の携帯ゲーム機のブロック図である。図2において、ハウジング13に収納される電子回路基板30には、CPUコア31が実装される。CPUコア31には、バス32を介して、コネクタ33が接続されるとともに、入出力インターフェース(I/F)回路34,第1のグラフィック処理ユニット(第1のGPU)35,第2のグラフィック処理ユニット(第2GPU)36及びワーキングRAM(以下「W−RAM」という)37が接続される。コネコタ33には、メモリカード20が着脱自在に接続される。メモリカード20には、ROM21及びS−RAM25が内蔵される。S−RAM25は、携帯ゲーム装置10から取り外されたとき、電力供給の停止によって記憶データが破壊されるのを防止するために、ボタン電池(図示せず)からのバックアップ電源が供給される。このROM21はCPUコア31によって読出し制御され、S−RAM25はCPUコア31によって書込み及び/又は読出し制御される。I/F回路34には、操作スイッチ部15及びタッチパネル16が接続されるとともに、スピーカ18が接続される。スピーカ18は、音抜き孔14aの内側位置に配置される。第1のGPU35には、第1のビデオRAM38が接続され、第2のGPU36には、第2のビデオRAM(以下「V−RAM」)39が接続される。
図3はこの発明の一実施例のゲーム画面(上画面のLCD11と下画面のLCD12)の表示例を示した図である。この実施例では、下画面のLCD12がゲームにおける主画面となり、上画面のLCD11が補助画面となる。下画面(主画面)のLCD12は、プレイヤによって操作されるキャラクタ(操作対象キャラクタ)が表示される領域であり、プレイヤがゲームプレイにおいて主として使用し又は見る画面である。これに対して、上画面(補助画面)のLCD11は、プレイヤの操作が直接影響を及ぼさない画面であって、下画面においてゲームプレイする場合の参考となる画像を表示する領域であり、プレイヤがゲームプレイを有利に進めるための参考として使用し又は見る画面である。
具体的には、下画面のLCD12に表示される操作対象キャラクタは、プレイヤが移動方向や動作を指示できるプレイヤキャラクタである。また、操作対象キャラクタには、必要に応じて、移動方向を指示できないが動作を一時停止させることのできる敵キャラクタや、プレイヤキャラクタの移動に障害となるブロック等の障害物を含めても良い。その場合、プレイヤキャラクタと敵キャラクタ・障害物は、プレイヤが自分自身の意思でその移動方向又は動作(機能)を変化させることができように、操作の仕方によってどのような変化を生じさせるかをプログラム設定されている。
例えば、プレイヤキャラクタPCは、プレイヤによって描かれた操作軌跡(実施例では、この操作軌跡を「虹のライン」または「虹のベルトコンベア」と呼ぶこともできる)TRの形状と方向によって移動方向を変えることができ、直接タッチされることにより動作を変えることができる。操作軌跡の形状によってプレイヤキャラクタPCの移動方向を変化させる場合としては、移動方向前方から近付いて来ている敵キャラクタECの攻撃を回避するか、ブロックBL1に載せられたアイテムITを取得したい場合、プレイヤキャラクタを空中に浮遊するブロックBL1に誘導する。このとき、プレイヤは、移動方向前方の座標を始点としてブロックBL1の近傍を終点とする右上向きの操作軌跡TR1を描くように、タッチパネル16を操作する。操作軌跡TR1は、始点を指定したときから現在指定されている座標点(現在点)が画面に表示され、タッチオフした時点で直前の現在点の座標が終点の座標となる。そして、プレイヤキャラクタPCは、操作軌跡TR1の始点近傍で操作軌跡TR1に吸着された状態(吸着力を有する状態)となる。吸着状態になると、プレイヤキャラクタPCは所定の速度に達するまで加速されながら、操作軌跡TR1の描画方向に沿って移動(又は並行移動)し、操作軌跡TR1の終点近傍で吸着状態が解除されてブロックBL1にのり上がることができる。ここで、プレイヤキャラクタPCが操作軌跡TR1に対して吸着力を有する状態とするのは、操作軌跡TR1が傾斜の急な斜線または円弧であっても、線から外れずに線上を滑らかに移動するような映像表現を実現するためである。なお、プレイヤキャラクタPCが操作軌跡TR1に吸着する状態に代えて、操作軌跡TR1の始点近傍で強い引力を持たせるようにしても良い。ここで、「吸着力」とはプレイヤキャラクタPCが操作軌跡に接触したときに発生する力であるのに対して、「引力」とはプレイヤキャラクタPCが操作軌跡から離れていているときにも発生する力であるとする。引力は、例えば、プレイヤキャラクタPCの位置と操作軌跡の始点との間の距離の二乗に反比例する値を有するベクトルで表現することができ、このようなベクトルを後述する移動ベクトルと合成することによって、プレイヤキャラクタPCが操作軌跡の始端に引き寄せられて移動するような表現が可能となる。
また、敵キャラクタECの攻撃を回避するために、敵キャラクタECの前方から円弧又は山形を描くように操作軌跡TR2を書くと、プレイヤキャラクタPCは操作軌跡TR2の上を通過するので、敵キャラクタECに遭遇(又は接触)することなく、移動できる。また、操作軌跡の形状と方向によってプレイヤキャラクタPCの移動方向を変化させる場合は、操作軌跡TR1の始点と終点を逆とした左下向きの操作軌跡TR1’を描くようにタッチパネル16を操作すると、プレイヤキャラクタPCが操作軌跡TR1’の終点座標(左下)に到来したとき、終点近傍で操作軌跡TR1に吸着されて操作軌跡TR1に沿って移動(又は並行移動)を始めても、減衰力(すなわち進行方向とは逆の加速度)が働くため、プレイヤキャラクタPCが操作軌跡TR1’を上り始めてから暫くして速度の低下を招き、やがてプレイヤキャラクタPCが操作軌跡TR1’を滑り落ちて逆向きの方向に移動するように方向変更される。この場合も、吸着力に代えて引力を働かせても良い。なお、動作の変化例として、プレイヤキャラクタにタッチしてから一定時間だけ高速移動させたり、回転させたり、敵キャラクタの攻撃を受けてもダメージを受けない無敵状態に変化させることも可能である。
そして、プレイヤキャラクタPC以外のキャラクタ等に対する操作例としては、敵キャラクタECに直接タッチすると、敵キャラクタECがその場で立ち止まって一時停止するので、プレイヤキャラクタPCが敵から攻撃を受けることなくその場を通過できる。また、移動通路にプレイヤキャラクタPCの行く手を遮る障害物(障害ブロック)OAが存在するとき、プレイヤが障害物OAに直接タッチすると、障害物OAが爆破されて、プレイヤキャラクタPCが通過可能となる。
以上説明した様に、この実施例のゲームでは、従来の方向指示スイッチ15aと動作指示スイッチ15d,15eを操作する場合(間接的に指示する場合)に比べて、タッチパネル16を操作して操作軌跡TR1,TR2を直接描いたり、画像変化させたい対象物に直接指示(例えば、プレイヤキャラクタPCには高速移動、敵キャラクタECには一時停止、障害物には破壊の指示)をすることにより、直接かつ直感的に操作することができる。そのため、プレイヤがゲームプレイする前に各種操作スイッチの操作に関する取扱説明書を熟読したり、各種操作スイッチの操作に熟練する必要性を低減でき、初心者でも容易にゲームプレイに慣れてゲームを楽しむことができる。
一方、上画面(補助画面)のLCD11に表示される画像としては、縮小マップRMP,操作軌跡TRを描くことのできる残存距離又はその残存距離をインク量に見立ててインク量(又はインク残量)を表示する表示部DS1,マップ数や取得アイテムや得点等のゲーム進行状態を表示する表示部DS2等を含む。縮小マップRMPは、プレイヤキャラクタPCがマップ上のどの位置にいるかを知らせるために、1つのステージ又はマップの全体(又はマップが広い場合は当該マップ全体の1/2等の一部マップ)を縮小して表示するものである。表示部DS1は、タッチパネル16を操作して1回に描ける操作軌跡TR1の長さ(または同時に存在する操作軌跡TRの総長さ)に何の制限も付けないと、連続的に操作軌跡を描くプレイヤもいるので、それを防止するためである。
図4はROM21の記憶データを図解的に示したメモリマップである。図4において、ROM21は、記憶領域210と記憶領域215に大別される。記憶領域210は、画像データを記憶する記憶領域であり、記憶領域211及び212を含む。記憶領域211は、キャラクタ画像データを記憶する記憶領域(キャラクタ画像データ記憶領域)である。ここで、キャラクタ画像としては、例えばプレイヤキャラクタや敵キャラクタ等の移動キャラクタ,アイテムキャラクタ等の各種キャラクタが含まれる。プレイヤキャラクタは、プレイヤの意思で操作可能な移動キャラクタであり、プレイヤオブジェクト又は移動キャラクタともいう。記憶領域212は、初期画面や、各ステージ(又はマップ)の背景画面データやエンディング画面等を表示するための画像データを記憶する記憶領域である。背景画面としては、プレイヤキャラクタが自由に移動できる野山,洞窟,建造物,地下迷路等の画面である。
また、この実施例では、背景画面や、プレイヤによって直接又は間接的に指定されるプレイヤキャラクタ,敵キャラクタ,味方キャラクタ等の移動キャラクタ、又はプレイヤの操作によって破壊することのできるブロック等のゲームプレイの主要な画像は下側のLCD12に表示し、縮小マップ,得点,インク量等のゲームプレイに参考となる画像又は情報は上画面のLCD11に表示しているが、下画面に表示する画像の一部を上画面のLCD11に表示しても良い。
記憶領域215は、ゲームプログラムデータを記憶する記憶領域であり、記憶領域215a〜215dを含む。記憶領域215aには、上画面の表示制御プログラムが記憶される。記憶領域215bには、下画面の表示制御プログラムが記憶される。記憶領域215cには、操作スイッチの操作状態検出処理プログラムが記憶される。操作スイッチ操作状態検出処理プログラムは、例えば、短い一定時間ごとに、方向指示スイッチ15aの上下左右の何れかの指示の検出とその方向指示の継続時間による移動量の検出や、動作スイッチ15d,15eの種類の検出などのプログラムである。記憶領域215dには、タッチパネル操作状態検出処理プログラムが記憶される。タッチパネル操作状態検出処理プログラムは、短い一定時間(例えばフレーム周期)ごとにタッチパネルの操作によって変化する座標データを読み取りかつその座標データを一時記憶し、比較的長い一定時間(例えばフレーム期間の数十倍〜数百倍)ごとに座標データの変化状態を検出し、座標データの変化が同じ(又は略同じ)座標データの繰り返しであればタッチ位置で停止していることを検出し、座標データの変化が徐々にかつ連続的に変化していればX軸成分とY軸成分の変化量に基づいて操作軌跡の入力であることを検出する。また、X軸成分とY軸成分のそれぞれの変化量を合成したベクトル量に基づいて、移動量(スクロールの量又は距離)を検出してもよい。なお、これらの記憶領域215a〜215dに記憶されている各種プログラムの処理の詳細は、後述の図8〜図12を参照して説明する。
再び図2を参照して、CPUコア31は、ROM21に記憶されているプログラムに基づいて、1つのステージ(又はマップ)の初期画面データ(例えば、図4のROM21のメモリマップに示す或る1つのステージ番号)の初期画面(又はスタート画面)の画像データ(例えば、下画面のみ又は下画面と上画面の両方の画像データ)を読み出して、W−RAM37へ転送する。また、CPUコア31は、上画面の画像を発生制御するためのプログラムをROM21から読み出してGPU35に与え、下画面の画像を発生制御するためのプログラムをROM21から読み出してGPU36に与える。これに応じて、GPU35は、W−RAM37を読出処理しかつ上画面の画像データを生成処理して、LCD11に表示すべき上画面の画像データをV−RAM38に書込処理するとともに、所定のタイミングでV−RAM38を読出制御して、上画面の画像をLCD11に表示させる。これに並行して、GPU36は、W−RAM37を読出処理しかつ下画面の画像データを生成処理して、LCD12に表示すべき下画面の画像データをV−RAM39に書込処理するとともに、所定の表示タイミングで読出してLCD12に下画面の画像を表示させる。
図5はワーキングRAM37の記憶領域を図解的に示した図である。ワーキングRAM37は、記憶領域371〜記憶領域373を含む。記憶領域371は、タッチパネル16を操作して入力された単位時間ごとの座標データを一時記憶するものであり、先入れ先出し態様で記憶する。記憶領域372は、プレイヤがタッチパネル16を操作して入力された座標データが1回のタッチオン時から連続するものであるとき、タッチオンからタッチオフまでの座標変化を順次記憶することにより、操作軌跡の(結果として操作軌跡の形状)データを記憶する。記憶領域373は、ゲーム進行に関連するデータを記憶する領域であり、例えばクリアしたステージ(マップ)番号,取得したアイテム,得点等のバックアップデータや、処理に応じて一時記憶すべきその他のデータ(例えば、プレイヤキャラクタPCの位置座標データ、移動速度データ(X方向の移動速度データとY方向の移動速度データを含む移動速度ベクトルデータである),吸着力データ、インク量データ、操作軌跡TRの法線データ、背景画面のスクロール速度やスクロールのオフセット値等)を記憶する領域である。
図6はこの発明の一実施例であるゲーム画面の表示変化の一例を説明するための図である。プレイヤが何も操作しない場合は、図6(A)に示すように、プレイヤキャラクタPCは背景画面の地形(又は地面)GRに沿って慣性によりまたは自立的に移動する。このとき、プレイヤは、プレイヤキャラクタPCを起伏のある地面の位置から空中に浮遊しているブロック(又は島)BL1に登るように移動させたい場合、図6(B)に示すように、プレイヤキャラクタPCの進行方向前方の地面GRからブロックBL1へ向けて上昇するような直線(又は円弧の)形状の操作軌跡TR1を描く。すると、プレイヤキャラクタPCは、図6(C)に示すように、操作軌跡TR1の始点に接したとき(又は近傍に来たときでもよい)、操作軌跡TR1に吸着して、操作軌跡TR1に沿って移動する。すなわち、プレイヤキャラクタPCは、操作軌跡TR1の傾斜角に影響を受けずに、操作軌跡TR1に沿って平行移動し、操作軌跡TR1の終点位置で吸着状態が解除されて、ブロックBL1の上に載る。図6(D)に示すように、操作軌跡TR1の描画終了から(または描画開始から)一定時間経過後に操作軌跡TR1が始点から終点に向かって徐々に消去される。さらに、プレイヤキャラクタPCを隣のブロックBL2へ移動させたい場合は、図6(E)に示すように、ブロックBL1からブロックBL2へ向かうような操作軌跡TR2を描くと、プレイヤキャラクタPCが操作軌跡TR2を通ってブロックBL1からブロックBL2へと移動する。なお、このとき、先に表示された操作軌跡TR1は次に描かれた操作軌跡TR2が表示される前に完全に消去して、複数の操作軌跡TR1,TR2が同時に表示されないようにしてもよいし、操作軌跡TR2の始点が描画された時点で、操作軌跡TR1を始点から終点に向けて徐々に消去するようにしてもよい。また、各線分(または、線分の始端あるいは終端)毎に、操作軌跡情報の一部としてW−RAM37に格納されてから一定時間の有効期間(例えば1秒間)を設け、この有効期間が終了した時点でその線分(または、線分の始端あるいは終端)に関する情報をW−RAM37から消去するようにしてもよい。
図7はゲーム画面の表示変化においてプレイヤキャラクタと操作軌跡の関係を説明するための図である。プレイヤキャラクタPCの高さと操作軌跡TRの始点座標の位置との関係によっては、プレイヤキャラクタPCが操作軌跡TRに載って移動することが不自然な場合もあるので、プレイヤキャラクタPCが操作軌跡TRに吸着して操作軌跡TR上を移動する(又は登る)か、それとも操作軌跡TRに衝突して移動方向を変更するかは、次のように処理してもよい。すなわち、地面とプレイヤキャラクタPCの中心との間の垂直方向の距離をd1とし、地面と操作軌跡TRの始点との間の垂直方向の距離をd2としたとき(図7(A)参照)、d1>d2又はd1=d2の場合は図7(B)に示すように、プレイヤキャラクタPCが操作軌跡TRに載って移動できる(登る)こととする。一方、d1<d2の場合は、プレイヤキャラクタPCが操作軌跡TRに登ることが不自然な動きとなるので、図7(C)に示すように、プレイヤキャラクタPCが操作軌跡TRに衝突して移動方向を反転させることとする。なお、d1は、地面からプレイヤキャラクタPCの中心までの垂直方向の距離を使用する代わりに、地面からプレイヤキャラクタPCの外形までの垂直方向の距離またはその近似値、及びそれらにオフセットを加えて近傍の値を使っても良い。
一方、図7(A)において、操作軌跡TRの形状が同じでも、始点と終点の座標が逆の関係にある場合、言い換えれば操作軌跡TRが右上を始点として左下を終点とするような斜め下向きに描かれた場合は、d1>d2又はd1=d2の条件(すなわちd1<d2でない条件)であっても、プレイヤがプレイヤキャラクタPCの移動方向を右向から左向に反転させるための操作指示と考えられる。その場合は、操作軌跡TRの向きが左下向きの指示であることを検出することにより、d1<d2の場合と同様に、プレイヤキャラクタPCの移動方向を反転させる。この場合、より好ましくは、プレイヤキャラクタPCは、操作軌跡TRを少し登りかけて徐々に減速し、逆向きの移動方向が付与されてそれまでの進行方向とは逆の方向に移動表示させる。
このように、プレイヤキャラクタと操作軌跡の関係を考慮して、移動方向や移動速度を変化させれば、プレイヤから見てプレイヤキャラクタが自然な動きをするように見ることができ、違和感なくプレイヤキャラクタを移動表示させることができる利点がある。
図8ないし図12はこの実施例のゲーム(ゲームソフト)の一例の動作を説明するためのフローチャートであり、特に図8及び図9はそのメインルーチンを示し、図10はタッチパネルの操作状態の検出処理の詳細なフローチャートを示し、図11および図12は下画面の表示制御のための詳細なフローチャート(下画面の表示制御プログラムのサブルーチン)を示す。次に、図1〜図12を参照してフローに沿って、図3,図6及び図7のゲーム画像表示の動作の概略を説明する。
電源スイッチ(図示せず)が投入されると、CPUコア31はROM21の記憶領域215に記憶されている各プログラムに基づいて以下の処理を開始する。まず、ステップ(図示では記号「S」と略して示す)11において、初期処理が行われる。この初期処理としては、例えば、W−RAM37及びV−RAM38,39がイニシャルクリアされた後、S−RAM25に記憶されているバックアップデータ(これまでにプレイされている場合は前回のプレイまでの攻略したステージ番号や得点等の経過データ)が読み出され、W−RAM37のゲーム進行データ記憶領域373に書き込まれる。また、プレイ開始の選択画面が表示され、始めのステージ番号1から開始するか、前回プレイの続きのステージ番号から開始するかの選択が行われる。この選択画面では、例えばゲームの難易度を選択するようにしても良い。ステップ12において、選択されたステージ番号又はマップ番号(始めてプレイする場合はステージ又はマップ番号「1」)が、ステージ(又はマップ)カウンタ(カウンタに代えてレジスタでもよい;図示しないが、W−RAM37の一部アドレス)に設定される。このようにして、ゲームプレイ開始のための準備処理が行われる。
続くステップ13において、ステージカウンタに設定されているステージ番号の1ステージ分の背景画面データとそのキャラクタデータが、ROM21から読み出されて、W−RAM37の記憶領域371,373に書き込まれる。ステップ14において、カーソルの座標データが初期値に設定される。但し、この処理は、タッチパネル16に代えてマウス等のポインティングデバイスを用いてキャラクタの動作を指定するか、操作軌跡を入力する場合であり、タッチパネルのみ使用して座標入力する場合は省略される。
ステップ15において、方向指示スイッチ15aの入力があったか否かが判断されるが、入力のあることが判断されるとステップ16へ進み、入力のないことが判断されるとステップ18へ進む。方向指示スイッチ15aの入力があると、ステップ16において、方向指示スイッチ15aの操作状態の検出処理、例えば方向指示スイッチ15aの「上」,「下」,「左」,「右」の何れかが押圧されていれば、操作された「上」,「下」,「左」,「右」に対応するキーコードを読み込んで内部レジスタ(図示せず)に一時記憶する。ステップ17において、方向指示スイッチ15aの操作に基づくカーソルの現在座標位置の変更処理が行われる。ステップ18において、その他の操作スイッチ15b〜15e,15L,15Rの入力があるか否かが判断され、操作スイッチ15b〜15e,15L,15Rの入力のあることが判断されると、ステップ19において、他のスイッチに応じた入力処理が行われる。その後、又は操作スイッチ15b〜15e,15L,15Rの入力のないことが判断されると、ステップ20へ進む。このようにして、方向指示スイッチ15aおよびその他の操作スイッチ15b〜15e,15L,15Rの操作入力に応じた処理が行われる。
ステップ20において、タッチパネル16の操作による座標入力があったか否かが判断される。タッチパネル16の操作による座標入力があった場合は、そのことが判断されて、ステップ30のタッチパネル操作状態検出処理及びその検出に基づく画像処理のサブルーチン処理が行われるが、その場合の動作は図10を参照して後述する。
そして、LCD11及びLCD12の非表示期間(垂直帰線期間)において、ステップ21〜23の処理が行われる。すなわち、ステップ21において、LCD11及びLCD12の非表示期間か否かが判断され、非表示期間であることが判断されると、ステップ22において、上画面の画像表示制御プログラムに基づいて、CPUコア31とGPU35が共同して、上画面に表示すべき画像データの処理を行う。例えば、上画面の画像データ(画像表示のためのプログラムデータとキャラクタデータ)がW−RAM37から読み出されて、GPU35に与えられると、GPU35が上画面用1画面サイズのビットマップ形式の画像データを発生して、当該画像データがV−RAM38に上書きされる。これによって、上画面の1画面分の画像データ(ビットマップデータ)がV−RAM38に一時記憶されることになる。続くステップ23において、下画面の画像表示制御プログラムに基づいて、CPUコア31とGPU36が共同して、下画面の画像処理(表示制御処理)を行う。この下画面の表示制御処理については、後述の図11のサブルーチンのフローチャートを参照して詳細に説明する。
続く、ステップ24において、ステージクリア条件に達したか否かが判断され、ステージクリアしていないことが判断されると、ステップ25においてゲームが終了したか否かが判断される。このゲーム終了条件の検出は、ステージカウンタの計数値が最大ステージ番号(N)に達しているとき、又はゲームオーバー条件(例えば、1ステージをクリアするための制限時間をオーバーしたこと)に基づいて検出される。そして、ステップ24においてステージクリア条件ではなく、かつステップ25においてゲーム終了条件でもないことが検出されると、前述のステップ13へ戻って、ステップ13〜25及び後述のステップ27,28の動作を一定周期で繰り返すことになる。
一方、前述のステップ21において、LCD11及びLCD12の非表示期間でないこと(すなわち表示期間であること)が判断されると、ステップ27において、LCD11の表示タイミングにおいて、GPU35がV−RAM38を読出制御することにより、上画面の画像データが1フレーム期間にフレーム走査に同期して順次読み出されて、上画面の画像がLCD11に表示される。これに並行して、ステップ28において、LCD12の表示タイミングにおいて、GPU36がV−RAM39を読出制御することにより、下画面の画像データが1フレーム期間にフレーム走査に同期して順次読み出されて、下画面の画像がLCD12に表示される。このようにして、上画面の画像がLCD11に表示され、下画面の画像がLCD12に表示されることになる。
次に、図10を参照して、タッチパネル操作状態検出処理及びその検出に基づく画像処理のサブルーチン処理を説明する。ステップ31において、タッチパネル16の操作による座標データが読込まれて、記憶領域371の各番地に先入れ先出し態様で書き込まれる。すなわち、このステップでは、タッチパネル16を操作して入力される座標データが一定時間間隔で(又は単位時間毎に)書き込まれるが、タッチ操作の座標位置が止まったままでも、その入力座標データが書き込まれることになる。続くステップ32において、タッチオンが開始されたか否かが判断される。タッチオンの開始であることが判断されると、ステップ33においてタッチオン座標位置に操作対象となるプレイヤキャラクタPC,敵キャラクタEC又は障害物OAが存在するか否かが判断される。操作対象物であることが判断されると、ステップ34においてプレイヤキャラクタPCか否かが判断される。プレイヤキャラクタPCであることが判断されると、プレイヤキャラクタPCの加速処理又は無敵状態化処理が行われる。加速処理としては、プレイヤキャラクタPCが高速で移動しているように見せるためにプレイヤキャラクタPCを回転させる処理、又は足のあるキャラクタであれば左右の足を交互に早く動かす処理である。また、無敵状態化処理としては、例えばプレイヤキャラクタPCが無敵状態か否かを示すフラグを無敵状態にセットする処理である。これにより、敵キャラクタに接触してもダメージを受けない状態となる。なお、後述するステップ64の処理では、こうして無敵状態にセットしたフラグに基づいてプレイヤキャラクタPCの周りにバリアを掛けたような画像が表示される。その後、又はプレイヤキャラクタPCでないことが判断されると、ステップ36において、敵キャラクタECか否かが判断される。敵キャラクタECであることが判断されると、ステップ37において敵キャラクタECの一時停止のための処理が行われる。その後、又は敵キャラクタECでないことが判断されると、ステップ38において、障害ブロックOAか否かが判断される。障害ブロックOAであることが判断されると、ステップ39において障害ブロックOAの破壊のための処理が行われる。このようにして、タッチオン座標位置にプレイヤの操作可能な操作対象物がある場合は、操作対象物の種類に応じて、操作対象物の画像変化を与えるための処理が行われる。その後、メインルーチンへ戻る。
一方、前述のステップ33において、タッチオン座標位置に操作対象物の存在しないことが判断された場合は、操作軌跡TRの始点座標の入力であるので、ステップ41へ進み、以下の処理を行う。すなわち、ステップ41において、タッチオンが開始しかつタッチオン座標に操作対象物の存在しない条件の検出された場合は、操作軌跡TRの始点座標が入力されたことであるため、タッチオン座標を操作軌跡TRの始点座標(P1=Ps=x1,y1)として記憶領域372に記憶させる。続くステップ42において、操作軌跡TRの途中の距離が計算(又は累計)されるが、始点座標の入力のあった直後は操作軌跡TRの距離が0の状態である。ステップ43において、操作軌跡TRの累計距離が1回の描画で許容された最大距離(又は表示部DS1で表示されるインク量で書くことのできる最大値)を超えたか否かが判断されるが、最大距離又は最大値を超えていなければメインルーチンへ戻る。
そして、再びタッチパネル操作処理サブルーチンが実行されると、前述のステップ32においてタッチオンの開始でないこと、すなわちタッチオン状態を継続していることが判断されて、ステップ45へ進む。ステップ45において、連続タッチ中でありかつタッチ座標に変化があるか否かが判断される。連続タッチ中に座標変化のあることが判断されると、ステップ46へ進み、操作軌跡TRの途中の座標が記憶領域372に書き込まれて一時記憶される。続くステップ42において、操作軌跡TRの途中の距離が累計される。すなわち、始点座標から次の指定座標(P2=x2,y2)の変化分(dx,dy)が累計される。その後、前述のステップ43において、操作軌跡の累計距離が最大値を超えていないことが判断され、メインルーチンへ戻る。そして、操作軌跡TRを描くためのタッチ座標の変化がある毎に、ステップ31,32,45,46,42,43の各ステップの処理が繰り返される。このようにして、操作軌跡TRの各点の座標データ(P3=x3,y3、P4=x4,y4、・・・Pn−1=xn−1,yn−1)が順次記憶領域372に記憶される。
そして、プレイヤが操作座標TRの座標入力を終了するために、タッチパネル16をタッチオフすると、前述のステップ31,32,45,46,42,43を繰り返している途中のステップ45において、連続タッチ中でなくかつタッチ座標に変化のないことが判断されて、ステップ47へ進む。ステップ47において、連続タッチの終了したことが判断されて、ステップ48において、操作軌跡の終点座標(Pn=Pe=xn,yn)が記憶領域372に記憶される。このようにして、操作軌跡TRの始点(P1=Ps)から終点(Pn=Pe)までの座標データ(P1〜Pn)が記憶領域372に記憶されることになる。
なお、操作軌跡TRの距離の累計がインク量によって許容されている最大値を超えた場合は、前述のステップ43において、距離の累計が最大値を超えたことが判断されて、ステップ49において直前の検出座標を終点の座標(Pe)として記憶させることになる。このようにして、タッチパネル16のタッチ操作に応じて操作軌跡TRの座標が連続的に記憶されることになる。このとき、記憶領域373に記憶されている操作軌跡TRの形状は、各座標点を結ぶ折れ線で近似された形状の直線又は曲線となる。
次に、図11及び図12の下画面の表示制御サブルーチンを参照して、図3,図6及び図7に示すようなゲーム表示の流れに沿って詳細な動作を説明する。ステップ51において、各ステージ(又はマップ)のスタート点からの表示開始か否かが判断される。いずれかのステージのスタート点からの表示開始であることが判断されると、ステップ52において、スクロールレジスタ(図示せず)にオフセット値として当該ステージのスタート位置の値(最初は0)が設定される。続くステップ53において、ステージカウンタの値に応じたステージのスタート位置の背景画面の画像が生成される。具体的には、1つのステージの背景画面は、LCD12で表示される1画面よりもスクロール方向に数倍分大きな画面であり、その大きな画面分(1ステージ分)の背景画像データが、背景を構成するキャラクタ別の画像データ(パネル)とパネルの配置パターンを示す表示座標データとしてW−RAM37に記憶されている。そして、CPUコア31は、キャラクタ単位のパネルと表示座標データとに基づいてビットマップデータに変換することによって1画面分の背景画面の画像データ(ビットマップデータ)を生成し、その画像データをV−RAM39の表示位置に対応するアドレスに書き込む。その後、又は前述のステップ51において各ステージのスタート点からの開始でないことが判断された後に、ステージカウンタによって決定されるステージの敵キャラクタの画像データが生成され、表示位置に対応するV−RAM39のアドレスにビットマップデータで書き込まれる。ステップ55において、プレイヤキャラクタPCの画像データが生成され、位置座標データに基づいて、表示位置に対応するV−RAM39のアドレスにビットマップデータで書き込まれる。ここで、敵キャラクタECのビットマップデータは背景画像のあるドット位置について背景画像データに上書され、プレイヤキャラクタPCのビットマップデータは背景画像又は敵キャラクタECのあるドット位置について背景画像又は敵キャラクタECのビットマップデータに上書されることになる。このようにして、1画面に表示すべき背景画像BG,敵キャラクタEC,プレイヤキャラクタPCの画像がV−RAM39に書き込まれる。そして、上述のステップ28において下画面の画像データを読み出す場合は、スクロールレジスタの値に基づいて1画面分の画像データだけが読み出されることになる。
ステップ56において、プレイヤキャラクタPCが背景画面をスクロールさせるように設定されている単位距離だけ移動したか否かが判断される。単位距離だけ移動したことが判断されると、続くステップ57においてスクロールレジスタに単位距離(例えば1)だけ加算され、ステップ58においてスクロール表示のための処理(背景画面を単位距離だけスクロール方向に移動又はずらせるように処理)が行われる。その後又は前述のステップ56において単位距離の移動でないことが判断された後、ステップ59においてプレイヤキャラクタがダメージを受けたか否かが判断される。ダメージを受けたことが判断されると、ステップ60において、プレイヤキャラクタのダメージ処理(例えばプレイヤキャラクタが衝撃を受けたような画像表示のための処理)が行われる。その後又は前述のステップ59においてプレイヤキャラクタがダメージを受けていないことが判断された後、ステップ61において敵キャラクタがダメージを受けたか否かが判断される。ダメージを受けたことが判断されると、ステップ62において、敵キャラクタのダメージ処理(例えば敵キャラクタが衝撃を受けたような画像表示のための処理)が行われる。このようにして、背景画面のスクロール処理とプレイヤキャラクタ又は敵キャラクタのダメージ処理が行われる。
ステップ63において、プレイヤによって操作可能な操作対象物(プレイヤキャラクタPC,敵キャラクタEC又は障害ブロックOA)がタッチパネル16によって操作されたか否かが判断される。何れかの走査対象物が操作されたことが判断された場合は、ステップ64において、ステップ35,37,39の動作処理に基づいた表示状態の変化処理が行われる。この処理は、例えばプレイヤキャラクタPCがタッチされたとき、プレイヤキャラクタPCが高速移動しているように回転表示し又は、無敵状態に表示する等の画像変化の処理が行われる。また、敵キャラクタECがタッチされたとき、敵キャラクタECの動きを一時停止する等の画像変化の処理が行われる。障害ブロックOAがタッチされたとき、障害ブロックOAを爆破するような画像変化の処理が行われる。これによって、タッチ操作されたキャラクタの種類に応じて異なる表示変化の処理が行われる。
その後又はステップ63で操作対象物の指定のないことが判断された後、続くステップ65において、操作軌跡TRの指定があったか否かが判断される。この判断は、タッチオン中であるか否か、すなわち図10のステップ41又は46において座標が記憶されたことを検出した場合である。操作軌跡TRの指定があったことが判断されると、ステップ66において、始点座標から現在点座標(タッチオフした場合はそのときの現在点が終点座標Peとなる)までの各点の折れ線で近似される形状の直線又は曲線による操作軌跡TRの画像が生成され、その操作軌跡TRの画像データ(ビットマップデータ)がV−RAM39に書き込まれる。例えば、プレイヤキャラクタPCが空中に架かった虹を渡って移動しているように見えるように、操作軌跡TRが虹色を構成する七色で表現される。その後、又は前述のステップ65において操作軌跡TRの指定の無いことが判断された後、ステップ67へ進む。
ステップ67において、プレイヤキャラクタPCが操作軌跡TRの任意の点(始点座標Psを含む)に近接したか否かが判断され、近接したことが判断されると次のステップ68において操作軌跡TRの法線方向に対応するプレイヤキャラクタPCの移動速度(つまり衝突速度)が所定値以下か否かが判断される。所定値以下である場合は、ステップ69において、プレイヤキャラクタPCが図7を参照して説明したように、操作軌跡TRに吸着できる条件になっているか否かが判断される。吸着条件を満たしていることが判断されると、ステップ70においてプレイヤキャラクタPCに吸着力が付与され、プレイヤキャラクタPCが操作軌跡TRに吸着した状態で操作軌跡TRに沿って移動できることになる。ここで、プレイヤキャラクタPCが操作軌跡TRに沿って移動する場合は、操作軌跡TRに吸着した状態で移動するので、見た目的には操作軌跡TR上を並行移動することになる。
一方、ステップ68の条件を満たさず又はステップ69の条件を満たさない場合(すなわち、何れかがNoの場合)は、プレイヤキャラクタPCが操作軌跡TRを通って移動できない場合であるので、ステップ71においてプレイヤキャラクタPCの移動方向の反転処理が行われる。この処理は、操作軌跡TRの法線方向に対応するプレイヤキャラクタPCの移動速度ベクトル成分を反転させることにより行う。
その後、又はステップ67において近接していないことが判断された場合は、ステップ72へ進む。ステップ72において、プレイヤキャラクタPCが操作軌跡TRの終点座標Peに近接したか否かが判断され、近接したことが判断されるとステップ73へ進み、プレイヤキャラクタPCの吸着力を解除する処理が行なわれる。接近していないと判断した場合は、ステップ74へ進み、ステップ74においてプレイヤキャラクタPCの剥離条件を満たしているか否かが判定される。ここで、剥離条件は、操作軌跡TRで円弧や角を描いたときに発生する操作軌跡TRの法線方向に対するキャラクタPCの移動速度ベクトル成分、すなわち遠心力や慣性力による加速度に相当する力が吸着力を上回ったときに剥離したものと判断される。その結果、前述のステップ73へ進み、吸着力を解除するための処理が行われる。続くステップ75において、プレイヤキャラクタPCがそのときの移動速度と操作軌跡TRの終端部分の形状に応じて、慣性による移動処理が行われる。例えば、移動速度との関係について説明すれば、移動速度が速い場合は、プレイヤキャラクタPCが操作軌跡TRの終点から慣性力で遠くへ飛ぶように表示される。逆に、移動速度が遅い場合は、慣性力が少ししか作用しないので、プレイヤキャラクタPCが操作軌跡TRの終端から斜め下向きに落下するように表示される。また、操作軌跡TRの形状が逆向きのV字やそれに近い急な円弧になっている場合は、プレイヤキャラクタPCが操作軌跡TRを駆け上がって頂点を飛び出して落下するように表示される。これに対して、操作軌跡TRの形状が放物線の頂点を上向きとする緩やかな円弧状に描かれている場合は、プレイヤキャラクタPCが操作軌跡TRを駆け上がった後、操作軌跡TRに沿っての斜め下向きに滑り降りるように表示される。
続くステップ76において、プレイヤキャラクタPCが吸着状態にあるか否かが判断される。吸着状態にある場合は、ステップ77において、プレイヤキャラクタPCの進行方向と操作軌跡TRを描いた方向を調べ、同じ方向を向いていればステップ78に、逆方向であればステップ80に進む。ステップ78では、プレイヤキャラクタPCの速度が所定速度に達しているか否かが判断され、所定速度以下であればステップ79に進み、ステップ79においてプレイヤキャラクタPCの速度を進行方向に増加させる処理を行う。ステップ77において、それぞれの方向が逆の場合はステップ80に進み、ステップ80では、プレイヤキャラクタPCの速度を減速させる処理が行われる。なお、プレイヤキャラクタPCの速度の減速は、直ちにゼロの速度にすることも含まれるものとする。
続くステップ81において、プレイヤキャラクタPCがアイテムITを取得したか否かが判断される。アイテムITを取得した場合は、ステップ82において、取得したアイテムの種類データがW−RAM37の記憶領域373に書き込まれる。ステップ83において、得点を付与する条件になったか否かが判断され、得点付与条件を満たしている場合はステップ84において得点が付与され、それまでに獲得していた得点に加算される。ステップ85において、スクロールレジスタの値が当該ステージの最終位置を表す値に達したか否かが判断され、最終位置を表す値に達していないことが判断されると、メインルーチン(ステップ24)へ戻る。そして、一定周期毎に上述の下画面表示のためのサブルーチンの処理が繰り返され、タッチパネル16の操作に応じた表示処理が行われる。このような表示処理結果が前述のステップ28のタイミングで下画面のLCD12に表示されることになる。
そして、前述のステップ85において、スクロールレジスタの値が当該ステージの最終位置を表す値に達したことが判断されると、ステージクリアの処理が行われる。例えば、ステージクリア処理としては、ステージカウンタの計数値に1を加算して、次のステージの処理に進めたり、ゲーム途中のバックアップデータを退避(又はバックアップ)記憶させたり、スクロールレジスタをリセットして初期値に戻す等の処理をした後に、メインルーチンへ戻り、次のステージの動作処理が行われる。
ところで、上述のステップ22における上画面の表示処理では、図3に示す表示を行うために、CPUコア31が下画面のLCD12に表示されているステージの全体マップを縮小処理して、そのビットマップデータをV−RAM38に書き込む。また、CPUコア31は、プレイヤによって入力された操作軌跡TRの距離に逆比例させるように、インク残量を求め、インク残量の棒グラフを表示するための画像データを生成して、V−RAM38へ書き込む(または、操作軌跡TRの距離に比例する量だけインク量を減らすようにしてもよい)。さらに、取得したアイテムや獲得した得点などの情報を表示するための画像データを生成して、V−RAM38へ書き込む。このようにして、V−RAM38に書き込まれた上画面の画像データは、上述のステップ27においてGPU35によって読み出されて、図3に示すようにLCD11に表示される。ここで、表示部DS1にインク残量を表示するのは、操作軌跡TRの長さが入力可能な一定距離に制限されているので、制限された距離をインクの残量に見立てて、その範囲で操作軌跡TRを入力させるためであるが、制限された長さをその他の方法で表示しても良い。また、操作軌跡の累計長さを表示しても良い。また、このような制限を無くしても良い。
そして、前述のステップ25において、ゲーム終了条件に達したことが判断されると、ステップ29へ進み、ステップ29においてゲーム終了処理が行われる。ゲーム終了処理は、例えばW−RAM37に記憶されているゲームの経過を表すデータ(進行したステージ番号,得点等の各種のバックアップデータ)がCPUコア31によって読み出され、メモリカード20のS−RAM25に書き込まれる。このようにして、一連のゲーム処理の動作を終了する。
図13は下画面の他の表示例を示す。上述の図3,図6及び図7の表示例では、インク残量が上画面に表示される場合を示すが、下画面に表示しても良い。また、図13(A)に示すように、ブロックBL2の上にプレイヤキャラクタのライフをワンアップ等の可能なアイテムITを載せておき、アイテムを取得させるために操作軌跡TRを描かせても良い。図13(B)は、プレイヤキャラクタPCが地形に沿って移動しているとき、プレイヤキャラクタPCを落とし穴の手前からブロックBL2へ誘導する場合を示す。図13(C)は、プレイヤキャラクタPCが小高い丘にいる状態において、当該丘からブロックBL1の上を通ってブロックBL2まで長いアーチ状(虹状又は山形)の操作軌跡TR3を描いたとき、インク量が限界量に達した状態の例を示す。さらに、上述の実施例では、操作軌跡がプレイヤキャラクタの移動方向を誘導する場合を説明したが、その他にも敵キャラクタの移動を妨害することによってプレイヤキャラクタに対する攻撃を回避するために操作軌跡を用いても良い。なお、操作軌跡TSの入力とそれに基づく表示例は多種多様であり、ゲーム内容の状況に応じて適宜選ばれることは言うまでもない。
なお、上述の実施例では、ゲーム画面として、上画面と下画面の2画面を用いた場合を説明したが、この発明の技術思想は、1画面のみの表示部に本実施例における下画面のゲーム画像だけを表示する場合にも適用できる。また、この発明のゲーム装置又はゲームプログラムをタッチパネル付の携帯液晶ゲーム機に適用した場合を説明したが、この発明の技術思想はこの実施例に限定されず、家庭用ビデオゲーム機,アーケードゲーム機,パソコン,携帯電話用のゲームソフトとして使用することもできる。その場合、タッチパネルによる座標入力に代えて、マウスやトラックボールのような座標入力手段又はポインティングデバイスを使用してもよい。
以下では、上述の実施例で説明した種々の処理の好ましい一具体例について説明する。
(操作軌跡の表示処理)
まず、操作軌跡の表示処理の好ましい具体例を説明する。この具体例では、例えば、図14の矢印のようにプレイヤがタッチパネル16上でスティック17をP1からP16までスライドさせ、スティック17をタッチパネル16から一旦離してからさらにP21からP29までスライドさせたとき、W−RAM37の操作軌跡データ記憶領域372には図15に示すような操作軌跡情報が記録される。なお、P1,P2,P3,・・・等は、タッチパネル16の出力信号に基づいて周期的に(例えば1フレームの周期で)検出される入力座標である。操作軌跡情報においては、操作軌跡は入力座標を始点または終点とした複数の線分(直線)によって近似的に表現される。例えば、図14のP1からP16までの操作軌跡は15本の線分で表現され、P21からP29までの操作軌跡は8本の線分で表現される。操作軌跡情報においては、これらの線分毎に、軌跡番号,線分番号,始点座標,終点座標,接線ベクトル,法線ベクトルの情報が含まれている。軌跡番号は、操作軌跡を識別するための番号であって、各線分がどの操作軌跡に属しているかを示しており、連続的に(すなわちスティック17をタッチパネル16から離すことなしに)描かれた複数の線分には共通の軌跡番号が付される。なお、連続的に書かれた操作軌跡であっても、ある点において操作軌跡が鋭角に折れ曲がっている場合には(具体的には、連続する2つの線分の接線ベクトル(または法線ベクトル)のなす角度が閾値よりも大きい場合には)、この点を境にして、操作軌跡の前方部分と後方部分に異なる軌跡番号が割り当てられる(すなわち前方部分と後方部分が別個の操作軌跡として扱われる)。線分番号は、各線分を識別するための番号であって、同一の操作軌跡に属する線分に対して固有に割り当てられる番号である。始点座標は、各線分の両端部のうち、先に入力された端部の座標である。終点座標は、各線分の両端部のうち、後に入力された端部の座標である。接線ベクトルは、始点座標から終点座標に向かう方向を示す単位ベクトルである。法線ベクトルは、接線ベクトルを反時計回りに90度回転させて得られる単位ベクトルである。なお、接線ベクトル、法線ベクトルは、始点座標および終点座標から計算される情報であり、必ずしも操作軌跡データ記憶領域に記憶しておく必要はない。
操作軌跡情報に追加された各線分の情報(以下、単に線分情報と称す)は、所定のタイミングで古いものから順番に消去される。以下、線分情報の消去タイミングの具体例を例示する。
線分情報の消去タイミングの第1の例としては、新しい操作軌跡の入力が検出されたときに、その操作軌跡よりも古い操作軌跡に属する線分の情報をまとめて消去することが考えられる。この場合、例えば図15において、軌跡番号2かつ線分番号1の線分情報が追加されたときに、軌跡番号1の線分情報がまとめて消去されることになる。
線分情報の消去タイミングの第2の例としては、各線分情報について、操作軌跡情報に登録された時点から一定時間以上経過した線分情報を操作軌跡情報から削除することが考えられる。この場合、例えば図15において、線分番号が小さいものから線分情報が順次消去されることになる。なお、各線分情報について、操作軌跡情報に登録された時点から一定時間以上経過したかどうかを判定する方法としては、例えば、操作軌跡情報に登録された時点の時刻情報(またはフレーム番号)を線分情報と関連付けて記憶しておき、その時刻情報と現在時刻(または現在のフレーム番号)とを比較する方法が考えられる。
線分情報の消去タイミングの第3の例としては、プレイヤが操作軌跡を描き終わった時点(つまりタッチパネル16からスティック17を離した時点)から一定時間(例えば2秒間)だけ待機した後に、この操作軌跡が始点側から一定の周期で一定の長さずつ短くなるように、各線分情報を変更または消去することが考えられる。より具体的に説明すると、例えば図14においてプレイヤがP16でスティック17をタッチパネル16から離してから2秒が経過するまでは、図16(A)に示すように線分番号1の線分情報は変更も消去もされないが、それから1フレーム経過した時点で、図16(B)に示すように線分番号1の線分情報の始点座標がP1からPaに変更される。この結果、操作軌跡の長さがdだけ短くなる。さらにそれから1フレーム経過した時点では、図16(C)に示すように線分番号1の線分情報の始点座標がPaからPbに変更され、この結果、操作軌跡の長さがさらにdだけ短くなる。さらにそれから1フレーム経過した時点では、図16(D)に示すように線分番号1の線分情報が消去され、かつ線分番号2の線分情報の始点座標がP2からPcに変更され、この結果、操作軌跡の長さがさらにdだけ短くなる。この例によれば、dの大きさを任意に設定することができるため、操作軌跡が短くなる速さを適宜に設定することができる。
上述のように、一度描いた操作軌跡が消去されることにより、プレイヤキャラクタPCの現在位置や移動速度等を考慮して、プレイヤは適切なタイミングで操作軌跡を描く必要が生じ、ゲーム性が増す。
ところで、操作軌跡の終点が決定されるタイミングとしては、プレイヤがタッチパネル16からスティック17を離したタイミングと、「インク残量」を表すパラメータが0になったタイミングの2つのタイミングがある(さらに、前述の通り、操作軌跡が鋭角に折れ曲がっている場合がある)。以下、このインク残量の制御方法の一具体例を説明する。インク残量には最大値が設定されており、ゲーム開始直後にはインク残量は最大値に設定されている。そして、プレイヤがタッチパネル16上でスティック17をスライドさせると、そのスライド量に比例した量だけインク残量が減る。スライド量は、図15に示す各線分情報の始点座標と終点座標の距離を合計することによって求めることができる(または、各線分情報が生成されるごとに、当該線分の長さだけインク残量を減らす計算をしてもよい)。プレイヤがタッチパネル16上でスティック17をスライドさせている途中でインク残量が0になると、その時点で操作軌跡の入力は受け付けられなくなり、たとえプレイヤがスティック17をスライドさせ続けたとしても、操作軌跡情報には新たな線分情報は追加されない。
次に、操作軌跡の入力によって減ってしまったインク残量を回復させるための処理の具体例を例示する。
インク残量を回復させるための処理の第1の具体例としては、常に一定の割合で徐々にインク残量を回復させることが考えられる。例えば、1フレーム期間が経過する毎に、最大値の60分の1の量だけインク残量を回復させる。このとき、プレイヤキャラクタPCが地面に接しているか否かによってインク残量が回復する速さを変化させるようにしても良い。また、プレイヤがタッチパネル16からスティック17を離しているか否かによってインク残量が回復する速さを変化させるようにしても良い。また、プレイヤがタッチパネル16からスティック17を離している間、一定時間ごとに一定量だけインク残量を回復させてもよい。
インク残量を回復させるための処理の第2の具体例としては、プレイヤキャラクタPCが特定のアイテム(例えばインク瓶)を取得した時点で一定量だけ、もしくは最大値までインク残量を回復させることが考えられる。
インク残量を回復させるための処理の第3の具体例としては、プレイヤがタッチパネル16からスティック17を離した時点でインク残量を最大値まで回復させることが考えられる。
上述のように、インク残量を減少させたり回復させたりすることにより、プレイヤが効率的に操作軌跡を描く必要が生じるため、ゲーム性が増す。
操作軌跡情報に含まれる線分情報は、上記のようにして必要に応じて追加・変更・削除されるが、このような操作軌跡情報に基づいて、操作軌跡を表す画像が生成され、LCD12に表示される。具体的には、図17に示すように、操作軌跡情報に含まれている各線分情報に基づいて、線分毎に略矩形の虹オブジェクトを線分に沿って配置し、こうして配置された各虹オブジェクトに対して虹色のテクスチャをマッピングすることによって、虹色の操作軌跡の画像が生成される。操作軌跡の画像はこのように操作軌跡情報に含まれる各線分情報に基づいて生成されるので、例えば図16のように操作軌跡が徐々に短くなるように操作軌跡情報が順次更新されれば、LCD12に表示される操作軌跡もそれに応じて徐々に短くなる。なお、操作軌跡情報から線分情報を徐々に消去する替わりに、各線分情報が有効か否かを示すフラグを用意しておき、これを徐々に無効にセットするようにしてもよい。
(プレイヤキャラクタの移動処理)
次に、プレイヤキャラクタPCの移動処理の好ましい具体例を説明する。
一般的なゲームのプレイヤキャラクタは、十字スイッチ15aなどの方向指示スイッチを操作することによってプレイヤはその移動方向を簡単に制御することができるが、本実施例のゲームのプレイヤキャラクタPCは、プレイヤはそのような操作ではその移動方向を制御することができない。本実施例のゲームでは、プレイヤキャラクタPCは、操作軌跡TRに接触しない状態では、基本的には地面上を前方に向かって(すなわちプレイヤキャラクタが画面右方向を向いているときには画面右方向に、画面左方向を向いているときには画面左方向に)所定の目標速度で移動するようにコンピュータによって自動制御される。より具体的には、図18に示すように、プレイヤキャラクタPCが地面にいるときには、プレイヤキャラクタPCの現在の移動方向および移動速度を示す移動速度ベクトルに対して、図19により求められる通常加速ベクトルを加算することによって得られる合成ベクトル(この合成ベクトルは、次フレームの処理では移動速度ベクトルとして利用される)にしたがって、プレイヤキャラクタPCの中心座標(位置座標データ)を移動させる。プレイヤキャラクタPCには「向き(画面右方向か画面左方向か)」が設定されており、図19において通常加速ベクトルがプラスである場合には、加速度ベクトルの向きはプレイヤキャラクラPCの向きと同方向となり、通常加速ベクトルがマイナスである場合には、通常加速ベクトルの向きはプレイヤキャラクタPCの向きと反対方向となる。図19によれば、現在の移動速度ベクトルの大きさが目標速度Vtに達していない場合にはプレイヤキャラクタPCを加速し、現在の移動速度ベクトルの大きさが目標速度Vtを超えている場合にはプレイヤキャラクタPCを減速するような通常加速ベクトルが選ばれるので、プレイヤキャラクタPCの移動速度は徐々に目標速度Vtに近付くようになる。
なお、本実施例では、プレイヤキャラクタPCが地面上に存在するときのみ、地面上を前方に向かって自立的に移動するように自動制御されるが、プレイヤキャラクタPCが空中にいるときにも、所定のアルゴリズムに従って自立的に移動制御されるようにしてもよい。
プレイヤキャラクタPCは、上記のような通常加速ベクトルの影響や後述するプレイヤの操作入力(加速指示や操作軌跡)による影響を除けば、基本的には、ゲーム世界においてあたかも現実世界の物理法則に従っているかのような振る舞いをする。つまり、プレイヤキャラクタPCに作用する慣性力,重力,遠心力,空気抵抗,浮力,水の抵抗などの影響を考慮して(もちろん必ずしもこれらの全ての要素を考慮する必要はない)、その移動方向および移動速度が決定され、その位置が制御される。図20は、プレイヤキャラクタPCが空中を進んでいるときの移動処理の具体例を示している。図20において、プレイヤキャラクタPCの移動方向および移動速度は、重力と空気抵抗の影響を受けて変化する。重力の影響は、移動速度ベクトルに対して鉛直下方向の重力ベクトルを加算することによって反映され、空気抵抗の影響は、移動速度ベクトルに対して、この移動速度ベクトルの大きさに比例した大きさであり、かつこの移動速度ベクトルの向きとは反対方向の空気抵抗ベクトルを加算することによって反映される。つまり、プレイヤキャラクタPCの中心座標の移動先は、現在の中心座標に対して、現在の移動速度ベクトルと重力ベクトルと空気抵抗ベクトルとを合成して得られる合成ベクトルを加算することによって決定される。
上述のようなプレイヤキャラクタPCの移動制御は、プレイヤキャラクタPCが操作軌跡に接触しないときの移動制御である(以下、通常移動制御と呼ぶ)。本実施例では、プレイヤキャラクタPCが操作軌跡に接触したときには、通常移動制御は実行されず、これとは異なる移動制御(以下、接触時移動制御と呼ぶ)がされる(後述)。しかしながら、プレイヤキャラクタPCが操作軌跡に接触したときに、接触時移動制御に加えて通常移動制御をするようにしてもよい。そのようにすれば、例えば、操作軌跡と地面が交差している場合、操作軌跡上を移動するプレイヤキャラクタPCが地面上に位置する瞬間に地面上を前方に自立的に移動する処理がされ、操作軌跡を離脱させるような処理が可能である。
ところで、図13(A)の状況で仮にプレイヤが何もしないでいると、プレイヤキャラクタPCは、空気の抵抗力でその速度は幾分低下するものの、慣性力によって前進し続けて結果的に穴に落ちてしまうことになる。そこでプレイヤは、プレイヤキャラクタPCが穴に落ちてしまわないように、プレイヤキャラクタPCの移動方向や移動速度をプレイヤが変化させて、プレイヤキャラクタPCが穴に落ちてしまうのをうまく回避しなくてはならない。プレイヤキャラクタPCの移動方向や移動速度をプレイヤが変化させる方法としては、基本的には、プレイヤキャラクタPCの表示位置をスティック17でタッチすることによってプレイヤキャラクタPCを大きく加速する方法と、タッチパネル16に描いた操作軌跡に沿ってプレイヤキャラクタPCを加速させる方法の2つの方法が用意されているのみである。以下、これらの各方法について説明する。
まず、プレイヤキャラクタPCの表示位置をスティック17でタッチすることによってプレイヤキャラクタPCを大きく加速するときの処理の具体例を説明する。プレイヤがプレイヤキャラクタPCの表示位置をスティック17でタッチすると、プレイヤの移動速度ベクトルに対して、図21に示すようなタッチ加速ベクトルが加算され、この加算結果である合成ベクトルに基づいてプレイヤキャラクタPCの中心座標が移動される。タッチ加速ベクトルは、移動速度ベクトルと同方向のベクトルであって、その大きさは例えば移動速度ベクトルの0.8倍の大きさに決定される。タッチ加速ベクトルの大きさは、移動速度ベクトルの大きさに依存せず常に一定としても構わない。タッチ加速ベクトルが加算される期間は、プレイヤがプレイヤキャラクタPCの表示位置をスティック17でタッチした直後のフレームだけでもよいし、そのフレームから一定期間、タッチ加速ベクトルが毎フレーム加算されるようにしてもよい。
次に、タッチパネル16に描いた操作軌跡に沿ってプレイヤキャラクタPCを加速させるときの処理の具体例を説明する。なお、プレイヤキャラクタPCは必ずしもプレイヤが描いた操作軌跡に沿って移動する訳ではない。例えば、プレイヤキャラクタPCが操作軌跡に接触しないような位置にプレイヤが操作軌跡を描いた場合には、この操作軌跡はプレイヤキャラクタPCの動作に影響を与えることはない。つまり、操作軌跡は、プレイヤキャラクタPCが接触することによってプレイヤキャラクタPCの移動方向や移動速度に影響を与えることができる(ただし、前述したようにプレイヤキャラクタPCと操作軌跡との間にあたかも引力が生じているようにプレイヤキャラクタPCを移動制御する場合は、この限りでない。)。また例えば、プレイヤキャラクタPCが操作軌跡に対してほぼ垂直方向から高速で接触した場合には、プレイヤキャラクタPCは操作軌跡で跳ね返ってしまう。また例えば、操作軌跡の曲率が大きすぎる場合には、操作軌跡に沿って移動している途中にプレイヤキャラクタPCは大きな遠心力を受けて、操作軌跡の終端に到達する前に操作軌跡から離れてしまうことになる。
まず、プレイヤキャラクタPCが操作軌跡に接触したときの処理の具体例について説明する。プレイヤキャラクタPCが操作軌跡に接触したかどうかの判定は、その操作軌跡を構成する各線分にプレイヤキャラクタPCが接触したかどうかをそれぞれ判定することによって行われる。具体的には、操作軌跡の始端側の線分から順番に、線分とプレイヤキャラクタPCとの接触の有無が判定される。例えば、図14に示す操作軌跡とプレイヤキャラクタPCとの接触判定は、まず、図22に示すように、P1とP2を結ぶ線分(以下、単に線分P1−P2と称す)の始点P1を中心とした半径r(rはプレイヤキャラクタPCの半径に等しい)の半円形判定領域にプレイヤキャラクタPCの中心座標が含まれているかどうかを判定し、次に、線分P1−P2を中心軸とした、幅が2rの矩形判定領域にプレイヤキャラクタPCの中心座標が含まれているかどうかを判定する。さらに、図23に示すように、線分P2−P3の始点P2を中心とした半円形判定領域にプレイヤキャラクタPCの中心座標が含まれているかどうかを判定し、次に、線分P2−P3を中心軸とした矩形判定領域にプレイヤキャラクタPCの中心座標が含まれているかどうかを判定する。残りの線分についても同様である。図22および図23の例では、プレイヤキャラクタPCの中心座標が線分P2−P3を中心軸とした矩形判定領域に含まれているため、プレイヤキャラクタPCが線分P2−P3に接触したと判定される。
上記のようにしてプレイヤキャラクタPCがいずれかの線分に接触したことが検出されると、次に、プレイヤキャラクタPCが操作軌跡で跳ね返るか、操作軌跡に吸着する(つまり操作軌跡に沿って移動を開始する)かの判定(以下、吸着判定と称す)が行われる。
まず、プレイヤキャラクタPCの中心座標が、例えば図23に示すように矩形判定領域に進入した場合の吸着判定の方法を説明する。以下の説明では、図24に示すように、便宜上、移動速度ベクトルを、プレイヤキャラクタPCが接触している線分に対して垂直な成分と、プレイヤキャラクタPCが接触している線分に対して平行な成分とに分割し(図15の操作軌跡データ記憶領域に記憶された法線ベクトル、接線ベクトルに基づいて各成分の値が計算される)、前者を垂直ベクトルと称し、後者を平行ベクトルと称することとする。
吸着判定は、接触時点における垂直ベクトルの大きさが、しきい値αよりも大きいかどうかを判定することによって行われる。垂直ベクトルの大きさがしきい値αよりも大きい場合にはプレイヤキャラクタPCは操作軌跡で跳ね返り、垂直ベクトルの大きさがしきい値αよりも小さい場合にはプレイヤキャラクタPCは操作軌跡に吸着する。しきい値αは、垂直ベクトルの角度(衝突角度とも言い換えることができる)に依存して変動する。垂直ベクトルの角度としきい値αとの関係は図25のようになっている。なお、図25において規定されている角度以外の角度については補間演算によって決定される。例えば垂直ベクトルの角度が45°である場合には、しきい値αは(α2+α1)/2となる。しきい値αが大きいほど、プレイヤキャラクタPCは操作軌跡に吸着し易くなるので、図25のα1,α2,α3の値を適宜に調整することによって、吸着力の大きさを所望の大きさに設定することができる。このように、垂直ベクトルの角度によって閾値を変化させることにより、吸着するか跳ね返るかの条件が一定でなくなるのでゲーム性が増し、また、自然な現象を再現することができる。
吸着判定によってプレイヤキャラクタPCが操作軌跡で跳ね返ると判定された場合には、図26に示すように、接触時の垂直ベクトルとは反対方向のベクトル(大きさは、例えば垂直ベクトルの大きさの0.8倍)と、接触時の水平ベクトルとを合成して得られるベクトルを新たな移動速度ベクトルとして、その後のプレイヤキャラクタPCの移動先の決定に利用する。
吸着判定によってプレイヤキャラクタPCが操作軌跡に吸着する(つまり操作軌跡に沿って移動を開始する)と判定された場合には、図27に示すように、接触時の水平ベクトルを新たな移動速度ベクトルとして、その後のプレイヤキャラクタPCの移動先の決定に利用する。このとき(すなわち、吸着すると判定されたとき)、プレイヤキャラクタPCの中心座標(位置座標データが示す座標)と線分(ここでは線分P2−P3)との間の距離がプレイヤキャラクタPCのサイズに応じた所定距離(ここでは、プレイヤキャラクタPCの半径r)より小さいか否かを判定する。その判定により、小さいことが判定された場合には、プレイヤキャラクタPCの中心座標と線分(ここでは線分P2−P3)との間の距離がプレイヤキャラクタPCの半径rと等しくなるように(つまりプレイヤキャラクタPCが線分にめり込まないように)、図28のようにプレイヤキャラクタPCの中心座標を線分から離れる方向に移動させてもよい(すなわち、線分の法線ベクトル方向またはその反対方向に位置座標データを移動させる。位置座標データが示す位置が線分よりも法線ベクトル方向に存在するときには法線ベクトル方向に移動し、法線ベクトルの反対方向に存在するときには法線ベクトルの反対方向に移動させる)。このような処理によって、プレイヤキャラクタPCの内部を通過するような操作軌跡TRが描かれたときであっても、プレイヤキャラクタPCが操作軌跡TRにめりこまない状態にすることができる。また、図22および23を参照して前述した接触判定において、プレイヤキャラクタPCの移動速度が速いときには、判定時点でプレイヤキャラクタPCが操作軌跡TRにめりこんでいる場合もある。この場合でも、上述の処理によって、プレイヤキャラクタPCが操作軌跡TRにめり込まない状態にすることができる。
上述のプレイヤキャラクタPCの中心座標を線分から離れる方向に移動させる処理は、徐々に(例えば1フレーム毎に一定距離ずつ)、プレイヤキャラクタPCの中心座標と線分との間の距離がプレイヤキャラクタPCの半径rと等しくなるまで、継続しておこなうようにしてもよい。そのようにすれば、プレイヤキャラクタPCの移動が唐突になることがなく自然な表現が可能になる。なお、操作軌跡に沿ってプレイヤキャラクタPCを移動させるための処理の詳細については後述する。
なお、本実施例では、プレイヤキャラクタPCの中心座標と線分との間の距離がプレイヤキャラクタPCの半径と等しくなるように移動させたが、プレイヤキャラクタPCの中心座標と線分との間の距離が0になるように移動させても良い(すなわち、プレイヤキャラクタPCの中心座標が線分上に位置するように移動させても良い)。この場合、プレイヤキャラクタPCは操作軌跡に接触したときに、操作軌跡上に引っ張られ、操作軌跡上を移動することになる。
次に、プレイヤキャラクタPCの中心座標が、例えば図29に示すように、半円形判定領域に進入した場合の吸着判定の方法を説明する。この場合、プレイヤキャラクタPCの中心座標と始点P1を結ぶ直線に直交し、かつ始点P1を通るような仮想線分を利用することによって、プレイヤキャラクタPCの中心座標が矩形判定領域に進入した場合と同様の方法で吸着判定を行うことができる。つまり、接触時点における移動速度ベクトルを、仮想線分に対して垂直な成分である垂直ベクトルと、仮想線分に対して平行な成分である水平ベクトルとに分割し、接触時点における垂直ベクトルの大きさが、垂直ベクトルの角度によって決定されるしきい値αよりも大きいかどうかを判定することによって、プレイヤキャラクタPCが操作軌跡で跳ね返るか、操作軌跡に吸着するかを判定することができる。なお、プレイヤキャラクタPCの中心座標が、始点P2,P3のような操作軌跡の途中の始点に対応する半円形判定領域に進入した場合にも、同様の吸着判定が行われる。
図29において、吸着判定によってプレイヤキャラクタPCが操作軌跡で跳ね返ると判定された場合には、図26と同様に、接触時の垂直ベクトルとは反対方向のベクトル(大きさは、例えば垂直ベクトルの大きさの0.8倍)と、接触時の水平ベクトルとを合成して得られるベクトルを新たな移動速度ベクトルとして、その後のプレイヤキャラクタPCの移動先の決定に利用する。また、吸着判定によってプレイヤキャラクタPCが操作軌跡に吸着する(つまり操作軌跡に沿って移動を開始する)と判定された場合には、図27と同様に、接触時の水平ベクトルを新たな移動速度ベクトルとして、その後のプレイヤキャラクタPCの移動先の決定に利用する。
吸着すると判定された場合には、プレイヤキャラクタPCの中心座標と始点P1を結ぶ直線が、線分P1−P2に直交する状態になったと判定されるまで(操作軌跡の途中の始点の場合、例えば、P2についての半円形判定領域に侵入した場合には、線分P2−P3と線分P1−P2の両方について、直交する状態になったかどうかを判定する必要がある)、プレイヤキャラクタPCの中心座標を、始点P1を中心とする円弧上を移動させる(例えば、1フレームごとに上述の水平ベクトルの絶対値だけ移動させる)。なお、プレイヤキャラクタPCの中心座標と始点P1を結ぶ直線が、線分P1−P2に直交する状態になった後において、操作軌跡に沿ってプレイヤキャラクタPCを移動させるための処理の詳細については後述する。なお、図29の例では、平行ベクトルの方向は始点P1を中心として時計回りの方向となるが、プレイヤキャラクタPCと操作軌跡との接触の仕方によっては、図30に示すように平行ベクトルの方向が始点P1を中心として反時計回りの方向になることもある。すなわち、上述の円弧上を移動させる処理において、円弧上をどちらの方向に移動させるかは、上述の平行ベクトルの向きによって定める。この結果、図29の場合はプレイヤキャラクタPCが操作軌跡の上面に吸着した状態で操作軌跡に沿って移動するが、図30の場合にはプレイヤキャラクタPCが操作軌跡の下面に吸着した状態で操作軌跡に沿って移動することになる。
なお、図29や図30のように仮想線分を用いて吸着判定を行う代わりに、接触時点における移動速度ベクトルを、線分P1−P2に対して垂直な成分である垂直ベクトルと、線分P1−P2に対して平行な成分である水平ベクトルとに分割し、当該垂直ベクトルの大きさが、垂直ベクトルの角度によって決定されるしきい値αよりも大きいかどうかを判定することによって、プレイヤキャラクタPCが操作軌跡で跳ね返るか、操作軌跡に吸着するかを判定することができる。この判定は、接触時点でおこなってもよいが、図31や図32のように、接触時のプレイヤキャラクタPCの中心座標を始点P1を中心として時計回りまたは反時計回りに回転させて(時計回りか反時計回りかの判定は上述の通り)、半円形判定領域の外縁まで移動させた後(プレイヤキャラクタPCの中心座標と始点P1を結ぶ直線が、線分P1−P2に直交する状態になるまで移動させた後)、図24と同様の方法で吸着判定を行うようにしても良い。この場合、接触時点における垂直ベクトルを記憶しておいて、時計回りまたは反時計回りに回転させ、半円形判定領域の外縁まで移動したときに、記憶しておいた垂直ベクトルを用いて図24と同様の方法で吸着判定をおこなうようにしてもよい。このとき、記憶しておいた垂直ベクトルの方向が線分P1−P2から離れる方向となる場合があるが、この場合には、吸着することなく、また、跳ね返ることなく、接触時点における移動速度ベクトル(または垂直ベクトル)の方向にプレイヤキャラクタPCが移動するようにしてもよい。また、この場合、半円形判定領域の外縁まで移動する前であっても、現在のプレイヤキャラクタPCの中心座標からみて記憶しておいた垂直ベクトルの方向が線分P1−P2から離れる方向であると判定された時点で、接触時点における移動速度ベクトル(または垂直ベクトル)の方向にプレイヤキャラクタPCが移動するようにしてもよい。
上述したような判定により、吸着するか跳ね返るか(または吸着も跳ね返ることもないか)を決定することによって、プレイヤキャラクタPCが不自然に操作軌跡に吸着することがなくなり、また、熟練したプレイヤは、操作軌跡に吸着させてプレイヤキャラクタPCを軌跡に沿って移動させるか、それとも、操作軌跡に跳ね返りをさせてプレイヤキャラクタPCの方向転換をさせるかを、操作軌跡を適切に描くことによって使い分けることができる。また、適切に操作軌跡を描かないと軌跡に沿った移動をさせることができないため、ゲーム性が増す。
なお、上記の吸着判定の結果、プレイヤキャラクタPCが操作軌跡に吸着すると判定された場合には、W−RAM37に以下の情報が記憶され、プレイヤキャラクタPCの移動に伴って適宜に更新される。なお、接触時点における移動速度ベクトルのうち接触した線分の接線方向の成分ベクトルが新たな移動速度ベクトルとされる。
・プレイヤキャラクタPCが接している線分の軌跡番号および線分番号
・線分の始点から終点方向を見たときにプレイヤキャラクタPCが線分の左右のどちら側に接しているかを示す接触方向パラメータ
・プレイヤキャラクタPCの操作軌跡への吸着度合を示す耐久パラメータ
接触方向パラメータは、図33(A)のように線分の始点(ここではP2)から終点(ここではP3)方向を見たときにプレイヤキャラクタPCが線分の左側に接しているときは正の値となり、図33(B)のように線分の右側に接しているときは負の値となる。また、その絶対値は、プレイヤキャラクタPCの中心座標と線分との間の距離をdとし、プレイヤキャラクタPCの半径をrとしたとき、d/rとなる。なお、線分の始点から終点方向を見たときにプレイヤキャラクタPCが線分の左右のどちら側に接しているかを判定する方法としては、例えば、線分の始点からプレイヤキャラクタPCの中心座標に延ばしたベクトルと、線分の法線ベクトルとの内積を計算し、内積が正である場合は線分の左側に、内積が負である場合は線分の右側に接していると判定することができる。なお、この接触方向パラメータは、図28を参照して説明したようなめり込みの補正にも利用することができる。例えば、接触方向パラメータの値が0.9である場合には、めり込みを解消するためにはプレイヤキャラクタPCの中心座標を接線の法線ベクトルの方向に移動させればよいことが分かる。また、接触方向パラメータの値が−0.9の場合には、法線ベクトルの反対方向に移動させれば良い。
耐久パラメータは、プレイヤキャラクタPCが操作軌跡に吸着したときに初期値(例えば20)に設定され、その後、プレイヤキャラクタPCが操作軌跡に沿って移動するときに、遠心力や重力の影響を受けて増加したり減少したりする。ただし耐久パラメータには上限値(例えば25)が設定されており、この上限値を超える値はとり得ない。また、耐久パラメータが0以下になると、プレイヤキャラクタPCは操作軌跡から離れてしまう。耐久パラメータの増減の仕方の詳細については後述する。
プレイヤキャラクタPCが操作軌跡に接触して吸着すると、プレイヤキャラクタPCは操作軌跡に沿って移動を始める。操作軌跡に沿って移動中のプレイヤキャラクタPCの移動処理は、図33(A)に示すように、移動速度ベクトル,軌跡加速ベクトル,重力ベクトル,空気抵抗ベクトルに基づいて行われる。移動速度ベクトル,重力ベクトル,空気抵抗ベクトルについては図20と同様であるので説明を省略する。軌跡加速ベクトルは、プレイヤキャラクタPCが接している線分の接線ベクトルと同一方向のベクトルであって、その大きさは、図35に示すように、移動速度ベクトルの大きさに基づいて変化する。つまり、軌跡加速ベクトルも、図18および図19で説明した通常加速ベクトルと同様に、プレイヤキャラクタPCの移動速度を目標速度Vt’に近付けるように作用する。
プレイヤキャラクタPCの移動先は、上述の移動速度ベクトル,軌跡加速ベクトル,重力ベクトル,空気抵抗ベクトルを合成して得られる合成ベクトル(図34(B)参照)を、図34(C)のように線分に平行な成分である平行成分と、線分に垂直な成分である垂直成分とに分割し、この平行成分(この平行成分は、次フレームの処理では移動速度ベクトルとして利用される)にしたがって、プレイヤキャラクタPCの中心座標を移動させる。
なお、図34において、重力ベクトル以外のベクトルについては線分の接線ベクトルに対して平行なベクトルであるので、重力ベクトルの接線ベクトルに対して平行な成分の大きさを最初に求めれば、スカラー量の加減算のみで図34(C)の合成ベクトルの平行成分の大きさを求めることもできる。
プレイヤキャラクタPCは上記のようにして操作軌跡に沿って移動するが、その途中で、ある線分から別の線分への移動が発生する。この線分間の移動の発生の有無は、例えば、プレイヤキャラクタPCの中心座標の移動先を決定するときに、その移動先が次の線分の矩形判定領域に進入したかどうか、またはその移動先が現在接している線分の矩形判定領域の終端(線分の終点を含む辺)を超えたかどうかを毎回確認することによって判定される。例えば図36(A)の例では、合成ベクトルの平行線分にしたがって決定された次の移動先(仮の移動先)が次の線分P6−P7の矩形判定領域に進入していると判定されるため、図36(B)のようにプレイヤキャラクタPCの中心座標の移動先が変更される。好ましくは、移動量が図36(A)の合成ベクトルの平行成分の大きさと同一となるように移動先が決定される。また、例えば図37(A)の例では、合成ベクトルの平行線分にしたがって決定された次の移動先(仮の移動先)が線分P5−P6の矩形判定領域の終端を超えたと判定されるため、図37(B)のように、P6を中心とした半径rの円弧に沿って移動するように、プレイヤキャラクタPCの中心座標の移動先が変更される。好ましくは、移動量が図37(A)の合成ベクトルの平行成分の大きさと同一となるように移動先が決定される。
次に、耐久パラメータの増減の仕方の詳細について説明する。耐久パラメータは、重力による影響と遠心力による影響を受けて増減する。
まず、重力による耐久パラメータの変動について説明する。仮想世界におけるプレイヤキャラクタPCの中心座標がプレイヤキャラクタPCと線分との接触点(プレイヤキャラクタPCの中心座標を通りかつ線分に直交する直線と、この線分との交点)よりも下方にあれば(すなわち、画面左上に原点があってY軸が垂直方向で下方向を正として設定されているときに、Y座標値が大きければ)、1フレームにつき一定量(例えば1)ずつ耐久パラメータが減る。逆に、プレイヤキャラクタPCの中心座標が接触点よりも上方にあれば、1フレームにつき一定量(例えば1)ずつ耐久パラメータが増える。
他の例では、上述の図34(C)を参照して説明した垂直成分の大きさ(絶対値)だけ耐久パラメータを増減させてもよい。また、この値は、重力ベクトルの接線ベクトルに対して垂直な成分の大きさとして求めても良い。
次に、遠心力による耐久パラメータの変動について説明する。遠心力は、プレイヤキャラクタPCがある線分(便宜上、線分Aと称す)から次の線分(便宜上、線分Bと称す)に移動する際に発生し得る。このときに発生する遠心力によって耐久パラメータが増加するか低減するかは、図36のようにコーナー(すなわち線分間)を内回りに回ったか、図37のようにコーナーを外回りに回ったかによって異なる。すなわち、内回りに回ったときには耐久パラメータを増加し、外回りに回ったときには耐久パラメータを減少させる。コーナーを内回りに回ったか外回りに回ったかは、例えば、線分Aの法線ベクトルと線分Bの接線ベクトルの内積を計算し、その内積の正負と接触方向パラメータの正負の組み合わせに応じて、図38のように判定することができる。
遠心力による耐久パラメータの変化量は、コーナーの角度がきついほど、またプレイヤキャラクタPCの移動速度が速いほど大きくなる。具体的には、線分Aの接線ベクトルと線分Bの接線ベクトルの外積の大きさに、コーナー通過時のプレイヤキャラクタPCの移動速度ベクトルの大きさを乗算し、この結果得られた値に対して予め決められた適当な係数を乗算することによって、耐久パラメータの変化量が算出される。
以上のような処理により、例えばきついコーナーを外回りに通過した場合には耐久パラメータが大きく減り、きついコーナーを内回りに通過した場合には耐久パラメータが大きく増え(ただし上限値は超えない)、緩いコーナーを外回りに通過した場合には耐久パラメータが少し減り、緩いコーナーを内回りに通過した場合には耐久パラメータが少し増えることになる。
耐久パラメータが0になると吸着状態が解除され、その後のプレイヤキャラクタPCの移動先は、図18や図20を参照して説明したような方法で決定されることになる。操作軌跡の途中で吸着状態が解除される場合のプレイヤキャラクタPCの動作例を図39に示す。
一方、プレイヤキャラクタPCが操作軌跡の終点(軌跡番号が同一の線分の中での最終の線分における終点であり、例えば図14のP16またはP29)に到達したときも、吸着状態が解除され、その後のプレイヤキャラクタPCの移動先は、図18や図20を参照して説明したような方法で決定されることになる。
上述のように、吸着状態が解除されると判定されたときには、その時点(または直前)の移動速度ベクトルを使用して、吸着状態解除後のプレイヤキャラクタPCの中心位置を決定する。なお、操作軌跡の終点から離れるときに、その時点(または直前)のプレイヤキャラクタPCの移動速度ベクトルに所定の係数(例えば1.5)を乗算するようにすれば、プレイヤキャラクタPCが操作軌跡の終点から勢いよく飛び出すので、プレイヤキャラクタPCの動きに躍動感を与えることができる。操作軌跡の終点で吸着状態が解除される場合のプレイヤキャラクタPCの動作例を図39に示す。
なお、プレイヤキャラクタPCが仮想空間において水中を移動するときには、プレイヤキャラクタPCの移動先を決定するときに、例えば図20に示す重力ベクトルの代わりに鉛直上向きの浮力ベクトルを、空気抵抗ベクトルの代わりに空気抵抗ベクトルと向きが同じで大きさがより大きい水抵抗ベクトルを利用することによって、プレイヤキャラクタPCの自然な動きを表現することができる。この場合、前述の耐久パラメータは浮力の影響を受けて変動し、仮想世界におけるプレイヤキャラクタPCの中心座標がプレイヤキャラクタPCと線分との接触点(プレイヤキャラクタPCの中心座標を通りかつ線分に直交する直線と、この線分との交点)よりも上方にあれば(すなわちY座標値が小さければ)、1フレームにつき一定量(例えば1)ずつ耐久パラメータが減る。逆に、プレイヤキャラクタPCの中心座標が接触点よりも下方にあれば、1フレームにつき一定量(例えば1)ずつ耐久パラメータが増える。
なお、本実施例では、プレイヤキャラクタPCが操作軌跡TRに接触したときに、プレイヤキャラクタPCは操作軌跡TRに吸着されて、操作軌跡TRに沿って移動するため、操作軌跡TRに応じた移動制御が継続的に実行されるが、プレイヤキャラクタPCが操作軌跡TRに吸着せず、操作軌跡TRに接触したときにだけ操作軌跡TRに応じた移動制御を実行するようにしてもよい。例えば、プレイヤキャラクタPCが操作軌跡TRに接触したと判定されたときに、図15の操作軌跡データ記憶領域372を参照して、接触したと判定された線分についての、始点座標から終点座標に向かうベクトルを、加速度ベクトルとして、当該加速度ベクトルと移動速度ベクトル,重力ベクトル,空気抵抗ベクトルを合成して得られる合成ベクトルにしたがって、プレイヤキャラクタPCの移動先座標を決定してもよい。
なお、上記の実施形態では、図6(D)に示すように、操作軌跡TR1が時間の経過に応じて始点側から終点側に向かって徐々に消去されるが、このように、操作軌跡の各線分(または各線分を繋ぐ各点)の有効時間に制限が設けられていることにより、操作軌跡を適切なタイミングで描くことが要求されるため、ゲーム性が増す。また、このように操作軌跡に有効時間を設けることは、例えばプレイヤがタッチパネル上ですばやく円(他の図形や記号でもよい)を描いたときにだけ特定の処理を実行するような場合にも適用することができる。この場合、有効時間が過ぎた操作軌跡の点が画面から消えていくため、プレイヤは、操作軌跡の有効時間を視覚的に判断することができ、どの程度の速さで入力操作を行えばよいかを容易に把握することができる。