説明

ゲームプログラムおよびゲーム装置

【課題】オブジェクト移動経路を設定するユーザの負担を軽減する。
【解決手段】ゲーム装置はゲーム空間60を表示手段に表示し、ゲーム空間60は第1領域62とこの第1領域におけるオブジェクト66の移動の連続性を遮断する第2領域とを含む。ユーザがタッチペン26によって移動経路68をゲーム空間内に設定する。コリジョン68すなわちオブジェクト66はこの経路に沿って移動する。経路上において、オブジェクトが次の点位置に移動したとするとオブジェクトが第2領域内に入り込むことになる点位置が設定されているとき、コンピュータは、その次の点位置を第1領域内の目標位置に補正してオブジェクトを移動させる。

【発明の詳細な説明】
【技術分野】
【0001】
この発明は、ゲームプログラムおよびゲーム装置に関し、特にたとえば、床や地面のような第1領域と第1領域におけるオブジェクトの移動の連続性を遮断するたとえば壁、高低差のある別の床や地面、または、池(水面)のような第2領域とを含むゲーム空間内において、ユーザが指定する経路に沿ってオブジェクトが移動する、そのようなゲーム装置およびそれのためのゲームプログラムに関する。
【背景技術】
【0002】
この種のゲームの一例が非特許文献1で知られている。この背景技術においては、ユーザがゲーム空間内に設定した軌跡または経路に沿って、非特許文献2で示すブーメランのようなオブジェクトが移動する。ただし、その経路が壁などの障害物に接触しているときには、ブーメランはその接触場所に到達したとき、ブーメランはその経路に沿った移動をしないでプレイヤキャラクタ(「リンク」)のところに戻ってくる。
【0003】
ただし、非特許文献2にはブーメランを使用できることが紹介されているだけで、実際にブーメランが戻る動作を示している訳ではない。
【非特許文献1】「ゼルダの伝説 夢幻の砂時計 取扱説明書」,任天堂株式会社,2007年6月23日
【非特許文献2】http://www.nintendo.co.jp/ds/azej/penaction/03.html(非特許文献1のゲームの紹介URL)
【発明の開示】
【発明が解決しようとする課題】
【0004】
ゲーム空間の地形(ジオメトリ)によっては、第2領域内に入り込むことなく経路を第1領域内だけで正確に設定するのが困難な場合がある。たとえば壁に挟まれた狭い通路や、川にかかった狭い橋などの場合、ユーザは、通路や橋などのような第1領域上だけでなく壁や川のような第2領域内に経路を設定してしまうことがある。このような場合、ユーザの意図どおりにオブジェクトを移動させるためには、場合によっては、何度もやり直しが必要になる可能性がある。あるいは、ユーザは細心の注意を払って経路をゲーム空間内に設定する必要がある。
【0005】
それゆえに、この発明の主たる目的は、新規な、ゲームプログラムおよびゲーム理装置を提供することである。
【0006】
この発明の他の目的は、移動経路の設定がユーザの負担になることが少ない、ゲームプログラムおよびゲーム装置を提供することである。
【課題を解決するための手段】
【0007】
この発明は、上記の課題を解決するために、以下の構成を採用した。なお、括弧内の参照符号および補足説明等は、この発明の理解を助けるために後述する実施形態との対応関係を示したものであって、この発明を何ら限定するものではない。
【0008】
第1の発明は、ゲーム装置のコンピュータを、第1領域と第1領域におけるオブジェクトの移動の連続性を遮断する第2領域とを含むゲーム空間を表示装置に表示させる表示制御手段、ゲーム空間内においてユーザが指定する経路に沿ってオブジェクトを移動させるオブジェクト移動制御手段、経路上に沿って移動するオブジェクトに関連する所定領域が、第1領域と第2領域との境界を越えて第2領域に入るかどうかを判定する越境判定手段、および越境判定手段によって所定領域が第2領域に入ると判定されたとき、オブジェクトが移動する経路を第1領域内に補正する経路補正手段として機能させる、ゲームプログラムである。
【0009】
請求項1の発明では、ゲームプログラムは、ゲーム装置(10:後述する実施例で相当する参照符号。以下同じ。)のコンピュータ(34)を、表示制御手段、オブジェクト移動制御手段、越境判定手段および経路補正手段として機能させる。表示制御手段は、実施例でいえばコンピュータ(34)によって画像データ(94)を使って実行される画面表示制御プログラム(92)が相当し、たとえば床や地面のような第1領域とたとえば壁、高低差のある別の床や地面、または、池(水面)のような第2領域とを含むゲーム空間とそのゲーム空間内のオブジェクトとを表示する。コンピュータ(34)は、たとえば経路設定プログラム(88)に従って、ユーザの操作に応じてオブジェクトが移動すべき経路をゲーム空間内に設定する。オブジェクト移動制御手段は、実施例では、コンピュータ(34)によって実行されるオブジェクト制御プログラム(90)、特にステップS113が相当し、ユーザの操作に従ってゲーム空間内に設定した経路に沿ってオブジェクトを移動させる。
【0010】
越境判定手段は、実施例ではコンピュータとそれによって実行されるステップS103が相当し、この越境判断手段は、オブジェクトに相関する所定領域(実施例では、コリジョン68)が、ゲーム空間(60)に含まれる第1領域(62)と第2領域(64)との境界(63)を越えて第2領域に入るかどうかを判定する。たとえば、所定領域の外縁の座標(X−r)と境界の座標(X63)とを比較して、前者が後者を越えているかどうか判断する。
【0011】
経路補正手段は、実施例ではコンピュータとそれによって実行されるステップS111がそれに相当する。経路補正手段では、越境判定手段によって所定領域が境界を越えて第2領域に入ると判定されたとき、ステップS111において、経路を補正する。したがって、オブジェクト移動制御手段によってオブジェクトを経路に沿って移動したとしても、オブジェクトが第2領域(64)に入り込むことはない。
【0012】
第1の発明によれば、仮に経路上の点位置が第2領域内に入り込むようにユーザが経路を指定したとしても、当該経路を第1領域内に補正するので、ユーザはオブジェクトの移動経路の指定に余り神経質になる必要はなくなる。したがって、ユーザは興趣をそがれることがなく、楽しくゲームをプレイできる。
【0013】
第2の発明は、第1の発明に従属し、オブジェクト移動制御手段は、経路上の点位置を順次目標にしてオブジェクトを移動させ、越境判定手段は、次の経路上の点位置にオブジェクトが移動したとする場合の所定領域が、第1領域と第2領域との境界を越えて第2領域に入るかどうかを判定する、ゲームプログラムである。
【0014】
第2の発明では、オブジェクト移動制御手段は経路上の点位置を順次目標にしてオブジェクトを移動させる。そして、越境判定手段は、オブジェクトを次の点位置に移動させたときそのオブジェクトに相関する所定領域が、境界(63)を越えて第2領域に入ることになるかどうかを判断する。たとえば、所定領域の外縁の座標(X−r)と境界の座標(X63)とを比較して、前者が後者を越えているかどうか判断する。
【0015】
第2の発明によれば、オブジェクトが越境して第2領域に入り込むかどうかを順次の移動目標位置毎に判定することができる。
【0016】
第3の発明は、第2の発明に従属し、経路補正手段は、越境判定手段によって次の点位置において所定領域が第2領域に入ると判定されなかったとき、次の点位置を目標位置として設定し、越境判定手段によって次の点位置において所定領域が第2領域に入ると判定されたときには、次の点位置を補正して第1領域内の目標位置を設定する目標位置設定手段を含み、オブジェクト移動制御手段は、オブジェクトを目標位置に移動させる、ゲームプログラムである。
【0017】
第3の発明では、目標位置設定手段は、越境判定手段によって次の点位置において所定領域が境界を越えて第2領域に入ると判定したとき、たとえば実施例のステップS111において、次の点位置を補正して第1領域内の目標位置を設定する。たとえば、所定領域の大きさ(実施例ではコリジョン68の半径)を考慮して、その所定領域が第1領域(62)に入りかつ第2領域(64)入り込まない目標位置を設定する。ただし、この目標位置設定手段は、越境判定手段によって次の点位置において所定領域が境界を越えて第2領域に入り込まないと判定したとき、たとえば実施例のステップS105において、経路上の次の点位置を目標位置として設定する。したがって、いずれの場合においても、オブジェクト移動制御手段によってオブジェクトをその目標位置まで移動したとしても、オブジェクトが第2領域(64)に入り込むことはない。
【0018】
第3の発明によれば、目標位置設定手段によって必要なときに目標位置を補正するようにしているので、オブジェクトをユーザの意図通りの位置に移動させることができるとともにオブジェクトが第2領域内に入り込むのを確実に防止できる。
【0019】
第4の発明は、第3の発明に従属し、経路補正手段は、越境判定手段によって次の点位置において所定領域が境界を越えて第2領域に入ると判定したとき、次の点位置の境界からの距離が閾値以下かどうか判断する判断手段を含み、判断手段によって距離が閾値以下であると判断したとき、目標位置設定手段は、次の点位置を補正して第1領域内の目標位置を設定する、ゲームプログラムである。
【0020】
第4の発明では、実施例ではコンピュータとそれが実行するステップS107によって「次の点位置」と境界との間の距離を計算し、実施例のステップS109が相当する判断手段によって、その距離が閾値以下かどうか判断する。そして、距離が閾値以下であれば経路補正手段は経路を補正しない。つまり経路が第2領域(64)に入り込んでいたとしてもその入り込み量が小さいとき、目標位置設定手段は、補正による目標位置設定処理ではなく、「次の点位置」に基づく目標位置設定処理を実行することになる。
【0021】
第4の発明によれば、ユーザの手振れなどによる意図しない経路のずれを効果的に補正してオブジェクトを移動させることができる。
【0022】
第5の発明は、第4の発明に従属し、目標位置設定手段は、判断手段によって距離が閾値以下であると判断されなかったとき、次の点位置を目標位置として設定する、ゲームプログラムである。
【0023】
たとえば実施例において、ステップS109で“NO”が判断されたときには、目標位置設定手段(S105)は、越境判定手段によって次の点位置において所定領域の外縁が境界を越えて第2領域に入ると判定したときであっても、その「次の点位置」を目標位置として設定する。この場合のように第1の領域から境界を越えて大きく第2領域(64)に入った経路指定はユーザが敢えて意図した経路指定であると解釈して、その場合には、オブジェクトが第2領域に入ってしまう点位置であっても、その点位置を目標位置として設定する。
【0024】
ただし、第5の発明の場合、実施例ではオブジェクトがその目標位置へ移動することができないので、結局オブジェクトの移動は停止することになる。
【0025】
第5の発明によれば、オブジェクトが移動する経路の指定をユーザの意図を反映させたものにすることができる。
【0026】
第6の発明は、第4または第5の発明に従属し、ゲーム空間を表現する仮想カメラは平行カメラであり、閾値はゲーム空間の上側または下側もしくは左側あるいは右側において異なる値として設定されている、ゲームプログラムである。
【0027】
平行カメラ(74)で撮影したゲーム空間の場合、ゲーム空間(60)の下側においては第2領域(64)であるたとえば壁面(64a)が直立しているのに対して、上側においては緩やかに傾斜した状態に表現され、左右側の壁面(64c)はそれらの中間の傾斜を持つように表現される。したがって、第4の発明では、第2領域がどのように表現されるかによって、ゲーム空間の上側または下側もしくは左側あるいは右側において異なる閾値を設定して使用するようにした。
【0028】
第6の発明によれば、ゲーム空間の表現にマッチした閾値が設定されるので、違和感をユーザに与えることがない。
【0029】
第7の発明は、第6の発明に従属し、閾値は、上側において比較的大きい値として設定され、下側において比較的小さい値として設定され、左側あるいは右側においてそれらの間の値として設定される、ゲームプログラムである。
【0030】
実施例では、ゲーム空間(60)の上側においては、オブジェクトは2次元にかなり近く平面的に表示されるので、相対的に大きい閾値を設定し、ゲーム空間の下側においては、オブジェクトは完全に3次元として表示されるので、相対的に小さい閾値を設定し、左側および右側においては、相対的に大きい閾値と相対的に小さい閾値の中間の閾値を設定する。
【0031】
第8の発明は、第3ないし第7の発明のいずれかに従属し、コンピュータを、オブジェクトが所定時間内に目標位置に到達したかどうか判定する到達判定手段、および到達判定手段によってオブジェクトが所定時間内に目標位置に到達したと判定しなかったとき、オブジェクト移動制御手段によるオブジェクト移動を停止する停止手段としてさらに機能させる、ゲームプログラムである。
【0032】
第8の発明では、到達判定手段は、実施例では、コンピュータとそれによって実行されるステップS115‐S123に相当し、所定時間内に目標位置までオブジェクトが移動できなかったとき、オブジェクト移動処理が停止される。特に、実施例では、上記の第5の発明の場合、第8の発明の結果を招来することになる。
【0033】
第9の発明は、第1の発明に従属し、経路補正手段は、越境判定手段によって次の点位置において所定領域が境界を越えて第2領域に入ると判定したとき、境界に沿って第1領域内をオブジェクトが移動するように、オブジェクトが移動する経路を補正する、ゲームプログラムである。
【0034】
第9の発明によれば、オブジェクトが第1領域と第2領域との境界に沿ってかつ第1領域内を移動することになるので、プレイヤに違和感を与えない。
【0035】
第10の発明は、第1ないし第9の発明のいずれかに従属し、コンピュータを、経路を表示装置に表示させる第1表示手段、および第1表示手段によって表示された経路のうち移動手段によって移動したオブジェクトのゲーム空間内の位置に対応する経路を、第1表示手段によって表示された経路とは異なる態様で表示する第2表示手段としてさらに機能させる、ゲームプログラムである。
【0036】
第10の発明では、第1表示手段は、実施例では、コンピュータ(34)とそれによって実行されるステップS17がそれに相当し、ユーザが適正に経路を設定したときその経路を表示させる。第2表示手段は、実施例では、コンピュータ(34)とそれによって実行されるステップS125が相当する。第2表示手段は,オブジェクトの移動済みの経路を第1表示による表示とは変更して(たとえば、色を変えるなどして)表示する。
【0037】
第10の発明によれば、ユーザが指定した経路のうち既にオブジェクトが移動した経路をユーザに認識させることができる。
【0038】
第11の発明は、第1ないし第10の発明のいずれかに従属し、コンピュータを、ユーザが指定するゲーム空間内の位置を検出する位置検出手段、位置検出手段によって今回検出された位置と前回検出された位置とが所定の閾値を超えているときに、前回までに検出された位置と今回検出された位置に基づいて、経路を生成する経路生成手段としてさらに機能させる、ゲームプログラムである。
【0039】
第11の発明では、経路生成手段は、たとえばコンピュータ(34)とそれによって実行される経路設定プログラム(88,図8)であり、具体的には、経路データとして前回記憶した座標と今回検出された現在の座標との間の距離を算出し、その2座標位置間の距離が所定の閾値以上であるか否かを判定する。距離が閾値を越えているときには今回の座標を経路データとしてとして設定する。
【0040】
第11の発明では、閾値を、手ぶれによる座標の変化を排除できるような所定値に設定することによって、手振れによって意図しない経路が設定されるのが効果的に防止できる。
【0041】
第12の発明は、第1ないし第11の発明に従属し、表示制御手段は、オブジェクトとともに当該オブジェクトに関連する関連画像を表示装置に表示させ、コンピュータを、ユーザが指定する指定位置が関連画像に位置する場合に、当該指定に後続するユーザの指定により示される指定位置に基づいて、経路を生成する経路生成手段としてさらに機能させる、ゲームプログラムである。
【0042】
第12の発明では、表示制御手段は、画像データ(94)を用いて、ゲーム空間内にオブジェクトを、そのオブジェクトに関連するコリジョン(68)と一緒に表示する。ユーザはコリジョンの順次の位置を指定して経路を設定する。
【0043】
第12の発明によれば、表示されている関連画像に対する指定から経路の生成が開始されるため、ユーザが経路を指定しやすくなる。
【0044】
第13の発明は、第12の発明に従属し、コンピュータを、関連画像を基準に所定領域を設定する所定領域設定手段としてさらに機能させる、ゲームプログラムである。
【0045】
第13の発明では、たとえばコリジョンが所定領域として機能する。
【0046】
第14の発明は、第1領域と第1領域におけるオブジェクトの移動の連続性を遮断する第2領域とを含むゲーム空間を表示する表示制御手段、ゲーム空間内においてユーザが指定する経路に沿ってオブジェクトを移動させるオブジェクト移動制御手段、経路上に沿って移動するオブジェクトに関連する所定領域が、第1領域と第2領域との境界を越えて第2領域に入るかどうかを判定する越境判定手段、および越境判定手段によって所定領域が第2領域に入ると判定されたとき、オブジェクトが移動する経路を第1領域内に補正する経路補正手段を備える、ゲーム装置である。
【0047】
第14の発明によっても第1の発明と同様の効果が期待できる。
【発明の効果】
【0048】
この発明によれば、オブジェクトが第2領域内に入り込む経路を設定したとしてもオブジェクトを第1領域内で移動させることができるので、移動経路の設定におけるユーザの負担を軽減することができる。したがって、ゲームを一層楽しくプレイすることができる。
【0049】
この発明の上述の目的,その他の目的,特徴および利点は、図面を参照して行う以下の実施例の詳細な説明から一層明らかとなろう。
【図面の簡単な説明】
【0050】
【図1】この発明の一実施例のゲーム装置の一例を示す外観図である。
【図2】図1実施例の電気的な構成を示すブロック図である。
【図3】図1実施例の表示手段に表示される、ゲーム空間、そのゲーム空間内に設定された経路およびこの経路に沿ってゲーム空間内を移動するオブジェクトを含むゲーム画面の一例を示す図解図である。
【図4】図3実施例のゲーム空間のジオメトリを示す図解図である。
【図5】図1実施例を適用可能なゲーム空間のジオメトリの他の例を示す図解図である。
【図6】図1実施例のゲーム装置のメモリマップの一例を示す図解図である。
【図7】経路データの一例を示す図解図である。
【図8】図1実施例においてのユーザによって経路を設定する際の動作の一例を示すフロー図である。
【図9】図1実施例においてゲーム空間内において経路に沿ってオブジェクトを移動させる際の動作の一例を示すフロー図である。
【発明を実施するための最良の形態】
【0051】
図1を参照して、この発明の実施例であるゲーム装置10は、第1の液晶表示器(LCD)12および第2のLCD14を含む。LCD12およびLCD14は、所定の配置位置となるようにハウジング16に収納される。この実施例では、ハウジング16は、上側ハウジング16aと下側ハウジング16bとによって構成され、LCD12は上側ハウジング16aに収納され、LCD14は下側ハウジング16bに収納される。したがって、LCD12とLCD14とは縦(上下)に並ぶように近接して配置される。
【0052】
なお、この実施例では、表示器としてLCDを用いるようにしてあるが、LCDに代えて、EL(Electronic Luminescence)ディスプレイやプラズマディスプレイを用いるようにしてもよい。
【0053】
図1からも分かるように、上側ハウジング16aは、LCD12の平面形状よりも少し大きな平面形状を有し、一方主面からLCD12の表示面を露出するように開口部が形成される。一方、下側ハウジング16bは、その平面形状が上側ハウジング16aと略同じであり、その略中央部にLCD14の表示面を露出するように開口部が形成される。下側ハウジング16bの右側面には電源スイッチ18が設けられる。
【0054】
また、上側ハウジング16aには、LCD12を挟んで左右に、スピーカ36aおよび36b(図2)のための音抜き孔20aおよび20bが形成される。そして、下側ハウジング16bには、マイク(図示せず)のためのマイク孔20cが形成されるとともに、操作スイッチ22(22a,22b,22c,22d,22e,22f,22g,22Lおよび22R)が設けられる。
【0055】
また、上側ハウジング16aと下側ハウジング16bとは、上側ハウジング16aの下辺(下端)と下側ハウジング16bの上辺(上端)の一部とにおいて、回動可能に連結されている。したがって、たとえば、ゲームをプレイしない場合には、LCD12の表示面とLCD14の表示面とが対面するように、上側ハウジング16aを回動させて折りたたんでおけば、LCD12の表示面およびLCD14の表示面に傷がつくなどの破損を防止することができる。ただし、上側ハウジング16aと下側ハウジング16bとは、回動可能に連結せずに、それらを一体的(固定的)に設けたハウジング16を形成するようにしてもよい。
【0056】
操作スイッチ22は、方向指示スイッチ(十字スイッチ)22a,スタートスイッチ22b、セレクトスイッチ22c、動作スイッチ(Aボタン)22d、動作スイッチ(Bボタン)22e、動作スイッチ(Xボタン)22f、動作スイッチ(Yボタン)22g、動作スイッチ(Lボタン)22Lおよび動作スイッチ(Rボタン)22Rを含む。スイッチ22aは、下側ハウジング16bの一方主面であり、LCD14の左側に配置される。その他のスイッチ22b−22gは、下側ハウジング16bの一方主面であり、LCD14の右側に配置される。さらに、スイッチ22Lおよびスイッチ22Rは、それぞれ、上側ハウジング16aとの連結部を挟む下側ハウジング16bの上側面の左右角部に配置される。
【0057】
方向指示スイッチ22aは、ディジタルジョイスティックとして機能し、4つの押圧部の1つを操作することによって、ユーザないしプレイヤによって操作可能なプレイヤキャラクタ(またはプレイヤオブジェクト)の移動方向を指示したり、カーソルの移動方向を指示したりする等に用いられる。また、各押圧部には、特定の役割を割り当てることができ、4つの押圧部の1つを操作することによって、割り当てられた役割を指示(指定)することができる。
【0058】
スタートスイッチ22bは、プッシュボタンで構成され、ゲームを開始(再開)したり、一時停止(Pause)したりする等に用いられる。また、セレクトスイッチ22cは、プッシュボタンで構成され、ゲームモードの選択等に用いられる。
【0059】
動作スイッチ22dすなわちAボタンは、プッシュボタンで構成され、方向指示以外の動作、すなわち、プレイヤキャラクタに打つ(パンチ)、投げる、つかむ(取得)、乗る、ジャンプするなどの任意のアクションをさせることができる。たとえば、アクションゲームにおいては、ジャンプ、パンチ、武器を動かす等を指示することができる。また、ロールプレイングゲーム(RPG)やシミュレーションRPGにおいては、アイテムの取得、武器やコマンドの選択および決定等を指示することができる。動作スイッチ22eすなわちBボタンは、プッシュボタンで構成され、セレクトスイッチ22cで選択したゲームモードの変更やAボタン22dで決定したアクションの取り消し等のために用いられる。
【0060】
動作スイッチ22fすなわちXボタン、および動作スイッチ22gすなわちYボタンは、プッシュボタンで構成され、Aボタン22dとBボタン22eだけでは、ゲーム進行ができないときに、補助的な操作に用いられる。ただし、Xボタン22fおよびYボタン22gは、Aボタン22dおよびBボタン22eと同様の操作に用いることも可能である。もちろん、ゲームプレイにおいてXボタン22fとYボタン22gとを必ずしも使用しなくてよい。
【0061】
動作スイッチ22L(左押しボタン)および動作スイッチ22R(右押しボタン)は、プッシュボタンで構成され、左押しボタン(Lボタン)22Lおよび右押しボタン(Rボタン)22Rは、Aボタン22dおよびBボタン22eと同様の操作に用いることができ、また、Aボタン22dおよびBボタン22eの補助的な操作に用いることができる。さらに、Lボタン22LおよびRボタン22Rは、方向スイッチ22a、Aボタン22d,Bボタン22e,Xボタン22f,Yボタン22gに割り当てられた役割を、他の役割に変更することができる。
【0062】
また、LCD14の上面には、タッチパネル24が装着される。タッチパネル24としては、たとえば、抵抗膜方式、光学式(赤外線方式)および静電容量結合式のいずれかの種類のものを用いることができる。また、タッチパネル24は、その上面をスティック26ないしはペン(スタイラスペン)或いは指(以下、これらを「スティック26等」という場合がある。)で、押圧したり、撫でたり、触れたりすることにより操作(タッチオン操作)すると、スティック26等の操作位置の座標を検出して、検出した座標(検出座標)に対応する座標データを出力する。
【0063】
なお、この実施例では、LCD14(LCD12も同じ、または略同じ)の表示面の解像度は256ドット×192ドットであり、タッチパネル24の検出精度も表示画面に対応して256ドット×192ドットとしてあるが、タッチパネル24の検出精度は表示画面の解像度よりも低くてもよく、高くてもよい。
【0064】
LCD12およびLCD14には異なるゲーム画面が表示されてもよい。たとえば、レースゲームでは一方のLCDに運転席からの視点による画面を表示し、他方のLCDにレース(コース)全体の画面を表示することができる。また、RPGでは、一方のLCDにマップやプレイヤキャラクタ等のキャラクタを表示し、他方のLCDにプレイヤキャラクタが所有するアイテムを表示することができる。さらに、一方のLCD(この実施例では、LCD14)にゲームの操作画面(ゲーム画面)を表示し、他方のLCD(この実施例では、LCD12)に当該ゲームに関する情報(得点やレベルなど)を含む他のゲーム画面を表示することができる。さらには、2つのLCD12およびLCD14を合わせて1つの画面として用いることにより、プレイヤキャラクタが倒さなければならない巨大な怪物(敵キャラクタ)を表示することもできる。
【0065】
したがって、プレイヤはスティック26等でタッチパネル24を操作することにより、LCD14の画面に表示されるプレイヤキャラクタ、敵キャラクタ、アイテムキャラクタ、操作オブジェクトなどの画像を指示(操作)したり、コマンドを選択(入力)したりすることができる。また、3次元ゲーム空間に設けられる仮想カメラ(視点)の方向(視線の向き)を変化させたり、ゲーム画面(マップ)のスクロール(徐々に移動表示)方向を指示したりすることもできる。
【0066】
なお、ゲームの種類によっては、タッチパネル24を用いることにより、その他の入力指示も可能である。たとえば、座標入力指示を入力したり、LCD14において文字,数字,記号等を手書き入力したりすることができる。
【0067】
このように、ゲーム装置10は、2画面分の表示部となるLCD12およびLCD14を有し、いずれか一方(この実施例では、LCD14)の上面にタッチパネル24が設けられるので、2画面(12,14)と2系統の操作部(22,24)とを有する構成になっている。
【0068】
また、この実施例では、スティック26は、たとえば下側ハウジング16bに設けられる収納部(図示せず)に収納することができ、必要に応じて取り出される。ただし、スティック26を設けない場合には、その収納部も設ける必要はない。
【0069】
さらに、ゲーム装置10はメモリカード(またはカートリッジ)28を含み、このメモリカード28は着脱自在であり、下側ハウジング16bの裏面ないしは下端(底面)に設けられる挿入部30(図1では点線で示す)に挿入される。図1では省略するが、挿入部30の奥部には、メモリカード28の挿入方向先端部に設けられるコネクタ(図示せず)と接合するためのコネクタ32(図2参照)が設けられており、したがって、メモリカード28が挿入部30に挿入されると、コネクタ同士が接合され、ゲーム装置10のCPUコア34(図2参照)がメモリカード28にアクセス可能となる。
【0070】
なお、図1では表現できないが、上側ハウジング16aの音抜き孔20aおよび20bと対応する位置であり、この上側ハウジング16aの内部にはスピーカ36aおよび36b(図2参照)が設けられる。
【0071】
また、図1では省略するが、たとえば、下側ハウジング16bの裏面側には、電池収容ボックスが設けられ、また、下側ハウジング16bの底面側には、音量スイッチ、外部拡張コネクタおよびイヤフォンジャックなどが設けられる。
【0072】
図2はゲーム装置10の電気的な構成を示すブロック図である。図2を参照して、ゲーム装置10は電子回路基板38を含み、この電子回路基板38には上述のCPUコア34等の回路コンポーネントが実装される。CPUコア34は、バス40を介して前述のコネクタ32に接続されるとともに、RAM42、第1のグラフィック処理ユニット(GPU)44、第2のGPU46、入出カインターフエース回路(以下、「I/F回路」という。)48およびLCDコントローラ50が接続される。
【0073】
コネクタ32には、上述したように、メモリカード28が着脱自在に接続される。メモリカード28は、ROM28aおよびRAM28bを含み、図示は省略するが、ROM28aおよびRAM28bは、互いにバスで接続され、さらに、コネクタ32と接合されるコネクタ(図示せず)に接続される。したがって、上述したように、CPUコア34は、ROM28aおよびRAM28bにアクセスすることができるのである。
【0074】
ROM28aは、ゲーム装置10で実行すべきゲームのためのゲームプログラム、画像データ(文字やオブジェクトの画像、背景画像、アイテム画像、アイコン(ボタン)画像、メッセージ画像など)およびゲームに必要な音(音楽)のデータ(音データ)等を予め記憶する。RAM(バックアップRAM)28bは、そのゲームの途中データやゲームの結果データなどを記憶(セーブ)する。
【0075】
RAM42は、バッファメモリないしはワーキングメモリとして使用される。つまり、CPUコア34は、メモリカード28のROM28aに記憶されたゲームプログラム、画像データおよび音データ等をRAM42にロードし、ロードしたゲームプログラムを実行する。また、CPUコア34は、ゲームの進行に応じて一時的に発生するデータ(ゲームデータやフラグデータ)をRAM42に記憶しつつゲーム処理を実行する。
【0076】
なお、ゲームプログラム、画像データおよび音データ等は、ROM28aから一度に全部、または部分的かつ順次的に読み出され、RAM42に記憶(ロード)される。
【0077】
GPU44およびGPU46は、それぞれ、描画手段の一部を形成し、たとえばシングルチップASICで構成され、CPUコア34からのグラフィックスコマンド(作画命令)を受け、そのグラフィックスコマンドに従って画像データを生成する。ただし、CPUコア34は、グラフィックスコマンドに加えて、画像データの生成に必要な画像生成プログラム(ゲームプログラムに含まれる。)をGPU44およびGPU46のそれぞれに与える。
【0078】
また、GPU44には、第1のビデオRAM(以下、「VRAM」という。)52が接続され、GPU46には、第2のVRAM54が接続される。GPU44およびGPU46が作画コマンドを実行するにあたって必要なデータ(画像データ:ポリゴンやテクスチャ等のデータ)は、GPU44およびGPU46が、それぞれ、第1のVRAM52および第2のVRAM54にアクセスして取得する。
【0079】
なお、CPUコア34は、描画に必要な画像データをGPU44およびGPU46を介して第1のVRAM52および第2のVRAM54に書き込む。GPU44はVRAM52にアクセスして描画のための画像データを作成し、GPU46はVRAM54にアクセスして描画のための画像データを作成する。
【0080】
VRAM52およびVRAM54は、LCDコントローラ50に接続される。LCDコントローラ50はレジスタ56を含み、レジスタ56はたとえば1ビットで構成され、CPUコア34の指示によって「0」または「1」の値(データ値)を記憶する。LCDコントローラ50は、レジスタ56のデータ値が「0」である場合には、GPU44によって作成された画像データをLCD12に出力し、GPU46によって作成された画像データをLCD14に出力する。また、LCDコントローラ50は、レジスタ56のデータ値が「1」である場合には、GPU44によって作成された画像データをLCD14に出力し、GPU46によって作成された画像データをLCD12に出力する。
【0081】
なお、LCDコントローラ50は、VRAM52およびVRAM54から直接画像データを読み出したり、GPU44およびGPU46を介してVRAM52およびVRAM54から画像データを読み出したりする。
【0082】
I/F回路48には、操作スイッチ22,タッチパネル24およびスピーカ36a,36bが接続される。ここで、操作スイッチ22は、上述したスイッチ22a,22b,22c,22d,22e,22f,22g,22Lおよび22Rであり、操作スイッチ22が操作されると、対応する操作信号(操作データ)がI/F回路48を介してCPUコア34に入力される。また、タッチパネル24からの座標データがI/F回路48を介してCPUコア34に入力される。さらに、CPUコア34は、ゲーム音楽(BGM)、効果音またはゲームキャラクタの音声(擬制音)などのゲームに必要な音データをRAM42から読み出し、I/F回路48を介してスピーカ36a,36bから出力する。
【0083】
I/F回路48には、操作スイッチ22,タッチパネル24および左右スピーカ36a,36bが接続される。ここで、操作スイッチ22は、上述したスイッチ22a,22b,22c,22d,22e,22Lおよび22Rであり、操作スイッチ22が操作されると、対応する操作信号(操作データ)がI/F回路48を介してCPUコア34に入力される。また、タッチパネル24から出力される操作データ(座標データ)がI/F回路48を介してCPUコア34に入力される。さらに、CPUコア34は、ゲーム音楽(BGM)、効果音またはゲームキャラクタの音声(擬制音)などのゲームに必要な音データをRAM42から読み出し、I/F回路48を介して左右スピーカ36a,36bからその音を出力する。
【0084】
ワイヤレス通信部58は他のゲーム装置10との間で無線によってデータを送受信するための通信手段である。すなわち、ワイヤレス通信部58は、相手方への通信データを無線信号に変調してアンテナから送信し、また、相手方のゲーム装置10からの無線信号を同じアンテナで受信して通信データに復調する。
【0085】
この実施例では、ユーザがタッチペン(スティック)26を用いて仮想ゲーム世界(仮想ゲーム空間)内にオブジェクトが移動すべき軌跡(経路)を設定し、オブジェクトをその経路に沿って移動させるゲームを実行する。
【0086】
具体的には、図3に示す仮想3次元ゲーム空間60を表示した仮想3次元ゲーム画面が第2のLCD14に表示される。この仮想3次元ゲーム空間60のジオメトリは、図4に示すが、第1領域62および第2領域64が形成されていて、第1領域62は、たとえば床オブジェクトからなり、オブジェクト66が、敵などに遭遇しない限り、自由に移動できる領域である。第2領域64はたとえば壁オブジェクトなどのような障害物であり、オブジェクト66の第1領域62内における移動を阻止したり妨害したりする領域である。つまり、第2領域64は第1領域62におけるオブジェクトの移動の連続性を遮断する機能を持った領域であるということができる。この第1領域62と第2領域64とが境界63で接している。
【0087】
なお、図3において点線で示し、オブジェクト66の下方に設定されている円形領域は「コリジョン」(衝突または接触)を判定するためにオブジェクト66に関連して設定されている領域であり、ここではこの領域をコリジョン68と呼ぶ。コリジョン68はオブジェクト66に相関する所定領域であり、後述のように、この実施例では、便宜上このコリジョン68を用いて、オブジェクト66が第2領域64に入り込むかどうかを判定するようにしている。
【0088】
そして、ユーザはスティック26を用いてタッチパネル24(図2)表面をなぞることによって、オブジェクト66すなわちコリジョン68の移動すべき経路70を図3に示すように設定する。
【0089】
経路70は、その開始点72Sから終了点72Eまで連続して設定されるものであり、実際にはもっと細かいのであるが、順次の点位置72S,720,721,722,723,…72Eによって形成される。
【0090】
そして、コリジョン68すなわちオブジェクト66はこの経路70に沿ってゲーム空間60内の第1領域62上を移動するのであるが、ユーザは必ずしも、第1領域62内だけに(オブジェクト66が壁などに入り込まないように)経路を正確に設定できるというものではない。たとえば、第1領域62が狭小な場合、あるいは、第1領域62と第2領域64との境界63が複雑な形状である場合などにおいては、ユーザが設定する経路70はしばしば、第2領域64に極端に接近したり、場合によっては、境界63を越境して第2領域64内に入り込んだりしてしまう。このような場合、先に挙げた背景技術などにおいては、オブジェクトの移動が停止されてしまうので、ユーザの思い通りのオブジェクトの移動がなかなかできにくい。そのため、ユーザの意図どおりにオブジェクトを移動させるためには、場合によっては、何度もやり直しが必要になることもあり、経路設定の技量を競うゲームでない限り、それがユーザのゲームに対する興趣をそぐことにもなる。
【0091】
そこで、この実施例は、ユーザが指定した経路70に沿ってオブジェクト66が移動する場合にオブジェクト66(コリジョン68)が多少第2領域64に入り込んでしまうときでも、ユーザが指定した経路自体の入り込みの量が許容値である場合には、経路70の連続性を確保してオブジェクト66を継続的に移動させようとするものである。
【0092】
すなわち、後に詳細に説明するが、簡単に言うと、順次の点位置に設定されるコリジョン68の境界63からの入り込みがある場合に、ユーザが指定した経路自体の境界63からの入り込み量が閾値D以下であれば、経路70のそのときの第2領域64への入り込みはユーザが意図しなかった入り込みであると判定して、当該次の点位置を補正して、オブジェクト66が次に移動すべき目標位置をコリジョン68が第1領域62内となるように設定する。しかし、コリジョン68の境界63からの入り込みがある場合に、ユーザが指定した経路自体の境界63からの入り込み量が閾値Dを越えている場合には、経路70のそのときの第2領域64への入り込みはユーザが敢えて意図した入り込みであると判定して、補正をしないで、第2領域64内の当該次の点位置をオブジェクト66が次に移動すべき目標位置として設定する。
【0093】
なお、図3の仮想3次元ゲーム空間60は図4に示す平行カメラ74で撮影したゲーム空間である。ここで、平行カメラとは、その撮影方向が一定なままで移動するカメラのことを言う。なお、本実施例では、カメラの高さ位置も一定にされる。このような平行カメラ74で表現する仮想3次元ゲーム空間60では、図3からよく分かるように、仮想3次元ゲーム空間60の下側においては第2領域64である壁面64aが直立しているのに対して、上側においてはその壁面64bはかなり「寝た」(緩やかに傾斜した)状態で表現されている。そして、左右側の壁面64cは壁面64aと壁面64bとの中間の傾斜を持つように表現される。
【0094】
したがって、この実施例では、仮想3次元ゲーム空間60の上側においては、オブジェクト66は2次元にかなり近く平面的に表示される。したがって、この位置において経路を第2領域64にかかるように設定したとしても、オブジェクト66自体が2次元に近く平面化されて表示されているので、経路のブレでオブジェクト66が第2領域64に入りこんだとしても、入り込む量は3次元の仮想空間においては、LCD14における2次元的な見た目ほど大きくないので、経路の境界63からの入り込み量の閾値Dとして比較的大きな閾値を設定している。逆に、仮想3次元ゲーム空間60の下側においては、オブジェクト66は完全に3次元として表示されるので、比較的小さな閾値Dを設定している。仮想3次元ゲーム空間60の左側および右側においては、それらの中間の値の閾値Dを設定する。
【0095】
なお、図3の仮想3次元ゲーム空間のジオメトリを図4に示す。図4では第2領域64が第1領域62より仮想空間において高い位置に設定されている。しかしながら、第2領域64は図5に示すように第1領域62より低い位置に設定されてもよい。図5のように第1領域62より低い位置に設定される第2領域64としては、池や川さらには海のような水面(属性の異なる面)、深い穴、あるいは、第1領域62の床とは高さが異なる床などが想定され得る。水面ではオブジェクト66は第1領域62(たとえば地面)と同じ様に移動することはできず、何もなければ(アイテムを用いるなど、特殊な状態にならない限り)オブジェクトは沈んでいくことになる。このような場合も第2領域64は第1領域62におけるオブジェクト66の移動の連続性を遮断するように働く。
【0096】
図4や図5で示すように、仮想3次元ゲーム空間を構成する第1領域62および第2領域64は任意のジオメトリを持って配置できる点に留意されたい。
【0097】
図3および図4に示す仮想3次元ゲーム空間60において、図3の左右方向をX軸とすると、図3の上下方向がY軸となり、図4に示す高さ方向がZ軸となる。X軸の座標は、図3の左端が「0」に決められていて、右に向うにつれて値が大きくなる。Y軸の座標は、図3の下端が「0」とされ、上に向うにつれて値が大きくなる。Z軸の座標は、図4の右端(第1領域62を示す線の位置)が「0」で、左に向うにつれて値が大きくなる。
【0098】
図6には、ゲーム装置10のメモリマップの一例が示される。メモリマップはプログラム記憶領域80およびデータ記憶領域82を含む。なお、図6にはメモリマップの一部のみが示されており、ゲームやアプリケーションの進行に必要な各種プログラムおよびデータが記憶される。
【0099】
ゲームメインプログラム記憶領域84には、ゲームを進行させるためのプログラムが記憶される。タッチ入力検出プログラム記憶領域86には、タッチパネル24からの操作データ(タッチ入力データ)を検出するためのプログラムが記憶される。タッチ入力データは、タッチ位置の座標データを含み、たとえば一定時間間隔で(たとえば1表示フレーム(1/60秒)中に所定回数)検出される。
【0100】
経路設定プログラム記憶領域88には、オブジェクト66を移動させるための経路70(図3)を示す経路データを取得するためのプログラムが記憶されている。この実施例では、タッチオンからタッチオフまで連続的に検出される座標を経路(軌跡)の座標として取得する。ただし、実施例では、ユーザが1回に描画できる軌跡の長さに制限がある。具体的には、移動経路として記憶される座標数に上限値を設定しているので、座標カウンタ(後述)によって記憶した座標数を計測し、座標カウンタ値が所定の閾値を超えた場合にはそれ以降の検出される座標は経路データとしては記憶されない。また、手ぶれ対策として、前回記憶された座標から所定距離以上離れていない座標も経路データとして記憶しないこととしている。
【0101】
オブジェクト制御プログラム記憶領域90には、図3に示すようにユーザが設定した経路70に沿うオブジェクト66の移動を制御するためのプログラムが記憶されている。このプログラムによって、たとえば、オブジェクト66の仮想3次元ゲーム空間における座標を示す位置データ、2次元マップ(後述)における座標を示す位置データ等が設定され更新される。
【0102】
画面表示制御プログラム記憶領域92には、画面の生成および表示を制御するためのプログラムが記憶されている。また、このプログラムによって、たとえば3次元ゲーム画面を生成するための注視点位置データおよびカメラ位置データが設定および更新される。
【0103】
画像データ記憶領域94には、地形オブジェクト、背景オブジェクト、オブジェクト66を含む全てのオブジェクトないしキャラクタを表示するための画像データが記憶されている。
【0104】
マップデータ記憶領域96には、仮想3次元ゲーム世界のマップデータが記憶されている。マップデータは仮想3次元ゲーム世界の構成を示すデータであり、地形オブジェクトのような固定的に設けられるオブジェクト等の位置データや画像指定データ等を含む。
【0105】
2Dマップデータ記憶領域98には、仮想3次元ゲーム世界の2次元マップデータが記憶されている。この2次元マップは、仮想3次元ゲーム世界を前述の平行カメラから見た平面図である。この2Dマップデータは、後に詳細に説明するように、図3の経路70が第2領域64に入り込んでいるかどうかを判定したり、その場合の「次の点位置」と境界63(図3)との間の距離を計算したり、さらには補正した目標位置を設定したりするために利用される。
【0106】
タッチ入力データ記憶領域100には、タッチ入力検出プログラムによって検出されるタッチ入力データが記憶される。タッチ入力データはタッチ入力の有無を示すデータおよび検出された座標データを含む。
【0107】
座標カウンタ記憶領域102は、経路設定プログラム88によって経路として記憶されるタッチ座標の数を計測するための変数が記憶される。つまり、この実施例では、経路として記憶可能な座標(点位置)の数に制限を設けている。つまり、経路として記憶した座標数が一定値(たとえば100)を超えたと判定される場合には、タッチオンが継続されていても検出される座標を経路データとして記憶しないようにしている。しかしながら、この座標数の制限値は、任意に変更可能であるばかりでなく、制限値を設けないことも自由である。制限値を設定しない場合、当然、この座標カウンタ記憶領域102も省略可能である。
【0108】
経路データ記憶領域104には、経路設定プログラムによって取得された経路データが記憶される。経路データとしては、図7に示すように、座標カウンタ値に対応付けて、タッチ座標(Xa,Ya)が記憶されている。このタッチ座標が経路70上の各点(図3の720,721,722,…)の位置データである。
【0109】
図6に戻って、オブジェクト位置データ記憶領域106には、オブジェクト66の仮想3次元ゲーム空間における位置座標、2次元マップ上の位置座標等を示す位置データが記憶される。
【0110】
目標位置設定レジスタ108は、オブジェクト制御プログラムに従ってオブジェクト66を移動させるときに、オブジェクト66が次に移動すべき位置を「目標位置」としてその都度設定するためのレジスタである。
【0111】
さらに、タイマ110は、コンピュータすなわちCPUコア34がオブジェクト66の次の点位置(目標位置)への移動を指示したにも拘らず移動しなかった場合のタイムアウトを判定するためのタイマである。
【0112】
ここで、図8を参照して、移動経路設定プログラム88によって図7に示す経路データを設定するための動作について説明する。
【0113】
なお、コンピュータないしCPUコア34によって図3に示す画像データ記憶領域94に記憶されている画像データを用いて同じく図3に示す画面表示制御プログラム領域92に格納されている画面表示制御プログラムを実行することによって図3に示すような仮想3次元ゲーム空間60を表現するゲーム画像(ゲーム画面)が表示される。つまり、画面表示制御プログラムが表示制御手段を構成することになるが、この表示制御手段がゲーム画面を表示するとき、図3に示すように、オブジェクト66とともに当該オブジェクト66に関連する関連画像、実施例ではコリジョン68の画像を表示装置(第2のLCD14)に表示させる。
【0114】
そこで、この実施例では、ユーザがオブジェクト66の経路70を設定するとき、上述のコリジョン68が移動すべき順次の点位置を指定することによって経路70が設定できるようにしている。したがって、ユーザが指定する点位置がコリジョン68の画像上に位置する場合に、そのユーザの指定により示される点位置に基づいて、経路70を生成するようにしている。
【0115】
ゲームによってはオブジェクト66が非常に大きかったり、非常に小さかったりすることがあるが、そのような場合に、正確にオブジェクト66のどこにタッチしたら経路生成のために点位置を指定したことになるのか、ユーザにとっては分かりにくい。ところが、実施例のようにオブジェクト66の関連画像(コリジョン68)にタッチしたときは経路設定のための操作をユーザが行なっていると判断できれば、ユーザが経路設定に際してどこの位置を最初に指定すればよいかが容易に把握できる。
【0116】
最初のステップS1で、コンピュータすなわちCPUコア34(図2)は、図6に示す座標カウンタ記憶領域102に記憶されている座標カウンタ値をリセットする。
【0117】
ついで、ステップS3で、CPUコア34は、タッチオンされたか否か、つまり、タッチ入力が開始されたか否かを判断する。具体的には、CPUコア34は、タッチ入力データ記憶領域100に記憶されているタッチ入力データに基づいて、タッチ入力が開始されたか否かを判断する。そして、CPUコア34は、前回のタッチ入力データが、入力が行われていないことを示し、かつ、今回のタッチ入力データが、入力が行われたことを示した場合に、タッチ入力が開始されたと判断する。ステップS3で“YES”が判断された場合、つまり、タッチ入力が開始されたときには、ステップS5へ進む。すなわち、経路データの取得が開始される。一方、ステップS3で“NO”が判断された場合には、再度ステップS3の処理が実行される。
【0118】
なお、上述のように経路設定に際してはオブジェクト66の関連画像、実施例ではコリジョン68の画像上に最初にタッチしたとき経路設定のための操作をユーザがしようとしていると判断するので、ステップS3でCPUコア34は、そのコリジョン68の画像上の点にタッチしたとき、“YES”と判断する。したがって、ユーザがコリジョン68の画像以外の点にタッチしているときは、経路設定のための操作以外の操作がされていると判断し、ステップS3では“NO”と判断することになる。
【0119】
ステップS5で、コンピュータすなわちCPUコア34は、座標カウンタ記憶領域102に記憶されている座標カウンタ値が所定の閾値以下であるか否かを判断する。ステップS5で“YES”が判断された場合、つまり、経路データの座標数が上限を超えていないときには、CPUコア34は、ステップS7でタッチ入力データからタッチ位置の座標(タッチ座標)を検出する。
【0120】
続いて、ステップS9で、CPUコア34は、経路データとして前回記憶したタッチ座標と今回検出された現在のタッチ座標との間の距離を算出する。なお、たとえば、前回の座標の初期値を、タッチ座標として検出され得る座標から閾値を超える距離だけ離れた座標に設定しておくことによって、座標カウンタ値が初期値の場合、つまり、タッチ入力が開始されたときには、閾値を超える距離が算出されるようにする。
【0121】
そして、ステップS11で、コンピュータすなわちCPUコア34は、算出した2座標位置間の距離が所定の閾値以上であるか否かを判定する。この距離の閾値は手ぶれによる座標の変化を排除できるような所定値に設定されている。ステップS11で“YES”が判断された場合、つまり、今回検出された現在のタッチ座標がユーザの意図した経路設定座標であると看做せる場合には、CPUコア34は、ステップS13で座標カウンタをインクリメントして、座標カウント値を更新する。
【0122】
そして、ステップS15で、コンピュータすなわちCPUコア34は、「現在のタッチ座標に対応する仮想空間の座標」および座標カウンタ値を対応付けたデータを経路データ記憶領域104に追加的に記憶する。このようにして、図7に示したような経路データが記憶される。なお、経路データ記憶領域104に記憶する仮想空間の座標は、3次元座標でもよいが、本実施例では、コリジョン68の境界63からの入り込み量の判定やユーザが指定した経路の境界63からの入り込み量の判定を2次元的におこなうこととし、経路データ記憶領域104に記憶する仮想空間の座標は、2次元座標を記憶することとする。
【0123】
続いて、ステップS17で、コンピュータすなわちCPUコア34は、画像データおよび現在のタッチ座標データ等に基づいて、GPU50等を用いて、ゲーム空間上内において現在のタッチ座標に軌跡を示すためのドット画像を描画する。これによって、たとえば図3に示すように、ゲーム画面上にユーザが設定した経路70が描画される。
【0124】
ただし、図3の実施例では、開始点72Sから点位置722までの経路は「太く」、点位置722以降は「細く」描画されている。これは、オブジェクト66が実際に移動したかどうかで区別するためである。つまり、開始点72Sから点位置722までの経路は既にオブジェクト66が移動としたものとして太く、それ以降は未だ移動していないものとして細く図解している。実際には色を変更して描画することによって、移動済みかどうかを目視可能に表現している。
【0125】
その後、ステップS17に進み、CPUコア34は、タッチオフされたかどうか、つまり、タッチ入力を終了したかどうか判断する。具体的には、CPUコア34は、タッチ入力データ記憶領域100に記憶されているタッチ入力データが、入力が行われていないことを示しているか否かを判断することにより、タッチ入力を終了したかどうかを判断する。ただし、ステップS5で“NO”が判断された場合、ステップS11で“NO”が判断された場合には、直接このステップS17に進む。そして、ステップS17で“NO”が判断された場合、CPUコア34は、ステップS5に戻ってステップS5‐S17の動作を繰り返し、1表示フレーム(1/60秒)に一定数、たとえば4つの座標データを経路上の点位置のデータとして図7に示すように、図6の経路データ記憶領域104に記憶する。
【0126】
このようにしてオブジェクト66が移動する経路70をユーザが設定した後、コンピュータすなわちCPUコア34は、実際にその経路70に沿ってオブジェクト66を移動させるための動作処理を、オブジェクト制御プログラム90に従って実行する。
【0127】
図9の最初のステップS101において、コンピュータすなわちCPUコア34は、図6の経路データ記憶領域104に未移動の次の点位置があるかどうか判断する。これは、図7の経路データのテーブル中に移動済みか未移動かを示すフラグを追記することによって容易に判定できる。なお、経路データ記憶領域104に記憶されたタッチ座標は、座標カウンタ値の順番で利用される。オブジェクト66が移動すべき次の点位置がないときは、ステップS101で“NO”が判断され、コンピュータすなわちCPUコア34は、後述するステップS127を実行する。
【0128】
オブジェクト66が移動すべき次の点位置があるときは、ステップS101で“YES”が判断され、コンピュータすなわちCPUコア34は、次のステップS103を実行する。このステップS103では、CPUコア34は、オブジェクト66が当該次の点位置に移動したとすると、そのオブジェクト66に関連する所定領域、つまり、コリジョン68の外縁(図3においては点線)が第1領域62と第2領域64との境界63を越えて第2領域64内に入り込むのかどうか判定する。このステップS103は、具体的には、図6の2Dマップデータ98を利用して実行する。
【0129】
すなわち、越境判定をするための領域、つまり、コリジョン68の半径を図3に示すように「r」としたとき、前記次の点位置のX値からこの半径rを減算し、その減算結果「X−r」が境界63のX値(X63)より大きいかどうか判断すればよい。(X−r)がX63より大きいときは、次の点位置にオブジェクト66が移動してもコリジョン68の外縁が第2領域64に入り込むことがない。したがって、ステップS103で“NO”が判断されることになり、この場合には、次のステップS105に進み、当該「次の点位置」をオブジェクトが次に移動すべき目標位置として、目標位置設定レジスタ108に設定する。
【0130】
逆の場合、つまり(X−r)がX63より小さいか等しいときは、次の点位置にオブジェクト66が移動したとすると、コリジョン68の外縁が越境して第2領域64に入り込む結果になることを意味する。したがって、ステップS103で“YES”が判定されることになり、コンピュータすなわちCPUコア34は、次のステップS107において、当該次の点位置の境界63からの距離(X63−X)を計算する。
【0131】
そして、次のステップS109において、コンピュータすなわちCPUコア34は、次の点位置と境界63との間の距離が所定の閾値以下かどうか判断する。実施例では、当該次の点位置の境界63からの距離が小さいとき、つまり、第2領域64への入り込み量が小さいときには、そのような入り込みはユーザの意図しない設定、たとえば手振れなどによるものであると解釈して、その「次の点位置」を有効な設定位置として取り扱うようにしている。したがって、このステップS109では、第2領域64への入り込み量が許容値かどうかを判断することになる。
【0132】
なお、図3では、ゲーム空間においてXの負の方向に存在する壁について説明したが、Xの正の方向に存在する壁に対しては、X+rが境界63のX値より大きいときに、コリジョン68が第2領域64に入り込むと判断すればよいし、Yの正または負の方向に存在する壁に対しても、同様にして適宜処理内容を決めればよい。
【0133】
なお、このステップS109における「閾値」として、実施例のゲーム空間が仮想3次元ではあるけれども、平行カメラ74で表現しているため、次の点位置がゲーム空間のどこ(上側、下側、左側、右側)にあるかによって、異なる閾値を採用する必要があることは前述したとおりである。
【0134】
ステップS109で“YES”が判断された場合、コンピュータすなわちCPUコア34は、次のステップS111において、「次の点位置」を補正して目標位置を決定し、目標位置設定レジスタ108に格納する。
【0135】
ステップS111での目標位置の設定では、この実施例では、図3におけるコリジョン681あるいは682として示すように、コリジョン68が第2領域64の外縁に沿って第1領域62内を移動するような、目標位置を設定する。すなわち、オブジェクト66が境界63に沿って第1領域62内を移動するような目標位置が設定されることになる。たとえば、「次の点位置」が図3の点位置721であるとしたとき、その点位置721のX値は「X63−X1」である。X63は境界63のX値であり、X1は点位置721の境界63との間の距離である。したがって、半径rのコリジョン68(681)の左端が第2領域64の外縁に沿った位置にあるためには、そのコリジョン681の中心位置におけるX値を「X63+r」に設定する必要がある。つまり、ステップS111では、コンピュータすなわちCPUコア34は、次の点位置721の位置データのX値を補正して「X63+r」のX値を持つ座標位置を次の目標位置として算出して目標位置設定レジスタ108に設定する。この場合、点位置721のY値(図3のゲーム空間における奥行き方向、つまり図3の上下方向)を補正する必要はない。なぜなら、この位置721においてはX方向のみデータを差し替えれば、コリジョン68すなわちオブジェクト66が第1領域62内を移動できるようになるからである。したがって、上述の実施例では、目標位置は、境界63に垂直な方向に、かつ、第2領域64から第1領域62に向かう方向に補正されることになる。
【0136】
このようにして、ステップS111において、経路70上に設定された点位置を補正して目標位置を設定することによって、オブジェクト66がこの目標位置に移動することになる。つまり、次の点位置を補正して目標位置を設定することによって、結局、オブジェクト66がそれに沿って移動する経路を変更することになる。したがって、コンピュータないしCPUコア34とそれが実行するステップS111が経路補正手段を構成することになる。
【0137】
ただし、上述の実施例では、オブジェクト66が第2領域64の外縁に沿って第1領域62内を移動する、そのような目標位置をステップS111で設定した。しかしながら、単に第1領域62内を移動できればよく、必ずしも第2領域64の外縁(境界63)に沿って移動する必要はない。
【0138】
さらにまた、補正方法として次の点位置のX値だけを変更して目標位置データを算出したが、Y値も併せて変更する方法が採用されてもよい。あるいは、コリジョンの接線ベクトルを用いて補正する方法も考えられる。いずれにしても、次の点位置にオブジェクト66が移動したときそのオブジェクト66が第1領域62内にとどまる目標位置を設定すればよいだけである。
【0139】
なお、ステップS109で“NO”が判断された場合、つまり、次の点位置の第2領域64への入り込み量が許容値を超えていたときには、実施例では、そのように位置設定は、手振れによるものではなく、ユーザが意図した位置設定であると解釈して、ステップS105において、目標位置として、「次の点位置」をそのまま設定する。ステップS103で“NO”を判断したときと同様で、何も補正しない。
【0140】
ステップS105またはS111において目標位置を設定してタイマ110(図6)をスタートさせた後、コンピュータすなわちCPUコア34は、次のステップS113において、コリジョン68すなわちオブジェクト66をその目標位置に移動させる。具体的には、表示フレーム毎にオブジェクト位置データ記憶領域106におけるオブジェクト66の位置データを目標位置の方向に一定量だけ移動させることによってオブジェクト66を目標位置まで次第に移動させる。
【0141】
ステップS115において、コンピュータすなわちCPUコア34は、目標位置設定レジスタ108に格納されている目標位置とオブジェクト位置データ記憶領域106の更新された位置データとを参照して、オブジェクト66(コリジョン68)が目標位置まで実際に移動したかどうか判断する。
【0142】
ステップS115で“YES”が判断された場合、オブジェクト66の未到達を判定する必要がないので、ステップS117でタイマ110をリセットする。一方、“NO”が判断された場合には、オブジェクト66の目標位置への未到達を判定しなければならないので、ステップS119でタイマ110をインクリメントする。
【0143】
そして、ステップS121で、コンピュータすなわちCPUコア34は、タイマ110の設定時間(たとえば、30フレーム時間)が経過したかどうか判断する。ステップS121で“YES”が判断された場合、コンピュータすなわちCPUコア34は、後述するステップS127を実行する。このときタイマ110をリセットする。一方、ステップS121で“NO”が判断された場合、コンピュータすなわちCPUコア34は、次のステップS123において、目標位置設定レジスタ108に格納されている目標位置とオブジェクト位置データ領域106の更新された位置データとを参照して、目標位置へオブジェクト66が到達したかどうか判断する。
【0144】
ステップS123で“NO”が判断された場合、すなわち、オブジェクト66が目標位置に未到達のときには、コンピュータすなわちCPUコア34は、先のステップS113に戻ってステップS123までの処理を繰り返し実行する。
【0145】
ステップS123で“YES”が判断された場合、すなわち、オブジェクト66が目標位置へ到達したと判断したときには、コンピュータすなわちCPUコア34は、次のステップS125で、その目標位置または目標位置の基礎となった点位置(図3でいえば点位置721,722)までの経路の色を変更して描画する。つまり、ステップS103において“NO”が判断されたときには第1領域62内の「次の点位置」が目標位置として設定される(ステップS105)し、ステップS103において“YES”が判断されたときにはコリジョン68の少なくとも一部が第2領域64に入り込んでしまう「次の点位置」を補正して目標位置を設定する(ステップS111)ので、ステップS125では、その目標位置または目標位置の基礎となった点位置までの経路の色を変更して描画するのである。
【0146】
なお、ステップS109において“NO”が判断されたとき、コンピュータすなわちCPUコア34は、次のステップS105を実行して、コリジョン68の少なくとも一部が第2領域64に入り込んでしまう「次の点位置」を補正しないでそのまま目標位置として設定する。この場合、実施例では、オブジェクト66は該当の目標位置へは移動されないので、時間の経過とともにステップS121で結局“YES”が判断されてしまうことになる。したがって、その場合、ステップS127でオブジェクト66の移動を停止し、コンピュータすなわちCPUコア34は、オブジェクト66の動作処理を終了してメインルーチン(図示せず)にリターンする。
【0147】
ステップS127でオブジェクト66の移動を停止したとき、その位置から先の経路の色を変更することはしないで元の色のままにしておく。図3でいえば細いままにしておく。
【0148】
なお、上述の実施例では、オブジェクト66を次の点位置に移動してもよいかどうか判断するための「オブジェクトに相関する領域」としてコリジョン68を利用するようにしたが、このような「所定領域」は実施例のコリジョン68に限定されるものではなく、円形以外の矩形や多角形であってもよいし、オブジェクト66の輪郭をそのまま「所定領域」として利用するようにしてもよい。
【0149】
また、実施例では経路の設定のためにタッチパネル24とスティック26の組み合わせからなるポインティングデバイスを利用した。しかしながら、たとえばマウスなど他のポインティングデバイスが使用されてもよく、さらにはポインティングデバイスではなく、他の操作スイッチ、たとえばジョイスティックや十字キーのような方向入力手段やAボタンを用いて経路を設定することも可能である。
【0150】
上述の実施例によれば、仮に経路70上の点位置が第2領域64内に入り込むようにユーザが経路設定したとしても、オブジェクト66が第2領域64に入り込まず第1領域内62を移動できるので、ユーザはオブジェクト66の移動経路設定に余り神経質になる必要はなく、したがって、興趣をそがれることがなく、楽しくゲームをプレイできる。
【符号の説明】
【0151】
10 …ゲーム装置
12,14…LCD
20 …操作スイッチ
24 …タッチパネル
26 …スイティック
34 …CPUコア
40 …メモリマップ
60 …ゲーム空間
62 …第1領域
64 …第2領域
66 …オブジェクト
68 …コリジョン
70 …移動経路

【特許請求の範囲】
【請求項1】
ゲーム装置のコンピュータを、
第1領域と当該第1領域におけるオブジェクトの移動の連続性を遮断する第2領域とを含むゲーム空間を表示装置に表示させる表示制御手段、
前記ゲーム空間内においてユーザが指定する経路に沿って前記オブジェクトを移動させるオブジェクト移動制御手段、
前記経路上に沿って移動する前記オブジェクトに関連する所定領域が、前記第1領域と前記第2領域との境界を越えて当該第2領域に入るかどうかを判定する越境判定手段、および
前記越境判定手段によって前記所定領域が前記第2領域に入ると判定されたとき、前記オブジェクトが移動する経路を前記第1領域内に補正する経路補正手段として機能させる、ゲームプログラム。
【請求項2】
前記オブジェクト移動制御手段は、前記経路上の点位置を順次目標にして前記オブジェクトを移動させ、
前記越境判定手段は、次の前記経路上の点位置に前記オブジェクトが移動したとする場合の前記所定領域が、前記第1領域と前記第2領域との境界を越えて前記第2領域に入るかどうかを判定する、請求項1記載のゲームプログラム。
【請求項3】
前記経路補正手段は、前記越境判定手段によって前記次の点位置において前記所定領域が前記第2領域に入ると判定されなかったとき、前記次の点位置を目標位置として設定し、前記越境判定手段によって前記次の点位置において前記所定領域が前記第2領域に入ると判定されたときには、前記次の点位置を補正して前記第1領域内の目標位置を設定する目標位置設定手段を含み、
前記オブジェクト移動制御手段は、前記オブジェクトを前記目標位置に移動させる、請求項2記載のゲームプログラム。
【請求項4】
前記経路補正手段は、前記越境判定手段によって前記次の点位置において前記所定領域が前記境界を越えて前記第2領域に入ると判定したとき、前記次の点位置の前記境界からの距離が閾値以下かどうか判断する判断手段を含み、
前記判断手段によって前記距離が前記閾値以下であると判断したとき、前記目標位置設定手段は、前記次の点位置を補正して前記第1領域内の目標位置を設定する、請求項3記載のゲームプログラム。
【請求項5】
前記目標位置設定手段は、前記判断手段によって前記距離が前記閾値以下であると判断されなかったとき、前記次の点位置を目標位置として設定する、請求項4記載のゲームプログラム。
【請求項6】
前記ゲーム空間を表現する仮想カメラは平行カメラであり、前記閾値は前記次の点位置が前記ゲーム空間の上側または下側もしくは左側あるいは右側にあることに応じて異なる値として設定される、請求項4または5記載のゲームプログラム。
【請求項7】
前記閾値は、前記上側において比較的大きい値として設定され、前記下側において比較的小さい値として設定され、前記左側あるいは右側においてそれらの間の値として設定される、請求項6記載のゲームプログラム。
【請求項8】
前記コンピュータを
前記オブジェクトが所定時間内に前記目標位置に到達したかどうか判定する到達判定手段、および
前記到達判定手段によって前記オブジェクトが所定時間内に前記目標位置に到達したと判定されなかったとき、前記オブジェクト移動制御手段による前記オブジェクトの移動を停止する停止手段としてさらに機能させる、請求項3ないし7のいずれかに記載のゲームプログラム。
【請求項9】
前記経路補正手段は、前記越境判定手段によって前記所定領域が前記境界を越えて前記第2領域に入ると判定したとき、前記境界に沿って前記第1領域内を前記オブジェクトが移動するように、前記オブジェクトが移動する経路を前記第1領域内に補正する、請求項1記載のゲームプログラム。
【請求項10】
前記コンピュータを
前記経路を前記表示装置に表示させる第1表示手段、および
前記第1表示手段によって表示された経路のうち前記移動手段によって移動したオブジェクトの前記ゲーム空間内の位置に対応する経路を、前記第1表示手段によって表示された経路とは異なる態様で表示する第2表示手段としてさらに機能させる、請求項1ないし9のいずれかに記載のゲームプログラム。
【請求項11】
前記コンピュータを
ユーザが指定する前記ゲーム空間内の位置を検出する位置検出手段、
前記位置検出手段によって今回検出された位置と前回検出された位置とが所定の閾値を超えているときに、前回までに検出された位置と今回検出された位置に基づいて、前記経路を生成する経路生成手段としてさらに機能させる、請求項1ないし10のいずれかに記載のゲームプログラム。
【請求項12】
前記表示制御手段は、前記オブジェクトとともに当該オブジェクトに関連する関連画像を前記表示装置に表示させ、
前記コンピュータを、
ユーザが指定する指定位置が前記関連画像に位置する場合に、当該指定に後続するユーザの指定により示される指定位置に基づいて、前記経路を生成する経路生成手段としてさらに機能させる、請求項1ないし10のいずれかに記載のゲームプログラム。
【請求項13】
前記コンピュータを、
前記関連画像を基準に前記所定領域を設定する所定領域設定手段としてさらに機能させる、請求項12記載のゲームプログラム。
【請求項14】
第1領域と当該第1領域におけるオブジェクトの移動の連続性を遮断する第2領域とを含むゲーム空間を表示する表示制御手段、
前記ゲーム空間内においてユーザが指定する経路に沿って前記オブジェクトを移動させるオブジェクト移動制御手段、
前記経路上に沿って移動する前記オブジェクトに関連する所定領域が、前記第1領域と前記第2領域との境界を越えて前記第2領域に入るかどうかを判定する越境判定手段、および
前記越境判定手段によって前記所定領域が前記第2領域に入ると判定されたとき、前記オブジェクトが移動する経路を前記第1領域内に補正する経路補正手段を備える、ゲーム装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate