ゲームプログラムおよびゲーム装置
【構成】 ゲーム装置10はLCD14を含み、このLCD14上にはタッチパネル24が設けられる。LCD14には、種類の異なるオブジェクトが格子状に並んで配置されるゲーム画面が表示される。プレイヤが所望のオブジェクトをタッチすると、当該オブジェクトの3次元位置が仮想カメラの注視点に設定される。続けて、プレイヤがタッチ位置を移動させると、それに従って仮想カメラ(視点)の位置が変更される。仮想空間では、オブジェクトの種類毎に異なるレイヤーが設けられ、各オブジェクトは、他のレイヤーに配置されたオブジェクトとは重ならない位置に配置される。視点が確定され、種類の異なるオブジェクトが視線やこれに平行な線と交差する複数のオブジェクトが所定の条件を満たすとき、当該オブジェクトは消去される。
【効果】 今までにないパズルゲームを提供することができる。
【効果】 今までにないパズルゲームを提供することができる。
【発明の詳細な説明】
【技術分野】
【0001】
この発明はゲームプログラムおよびゲーム装置に関し、特にたとえば、パズルゲームをプレイするための、ゲームプログラムおよびゲーム装置に関する。
【背景技術】
【0002】
一般的に落ちものゲームとして良く知られているパズルゲームでは、複数の隣り合うオブジェクトの属性が所定条件を満たしたとき、これらのオブジェクトが消去される。たとえば、特許文献1に開示される3次元パズルゲーム装置では、円筒状のゲームフィールド上に種類の異なる複数のパネルが配置され、プレイヤは、円筒状の所望の面を表示させながら、隣り合うパネルを入れ替えて、ゲームをプレイする。そして、同一種類のパネルを縦または横方向に所定数以上揃えると、種類の揃ったパネルが消去される。
【0003】
また、3次元仮想空間で展開されるゲームを、プレイヤの操作に従って、プレイヤが当該3次元仮想空間のどの視点から見るかを定めて、2次元のゲーム画面として表示することは既に周知となっている。たとえば、特許文献2によれば、遊戯者はゲーム装置本体に対するコントロールパッドを操作して、仮想空間内に配置されたプレイヤキャラクタを所望の方向に向けて移動させる。また、プレイヤキャラクタを停止させると、仮想カメラの視点が遊戯者の操作に従って移動可能となる。その仮想カメラの視点の挙動を改良した技術が開示される。
【特許文献1】特開2001−38047
【特許文献2】特開平11−137842
【発明の開示】
【発明が解決しようとする課題】
【0004】
しかし、特許文献1に開示されるような落ちものゲームは、既にアイデアが出尽くした感があり、新しい落ちものゲームが登場しても、プレイヤにとっては新鮮味に欠ける状況になっていると言える。また、特許文献2の技術では、画面中に見えていないオブジェクトを見つけるなど、専らゲームの操作のために仮想カメラの視点を移動させるのであって、仮想カメラの視点の移動そのものをゲームの操作として楽しむものではない。
【0005】
また、これらの背景技術を組み合わせたとしても、たとえば、落ちものゲームにおいて、ゲーム画面を見易くするか、見えていないオブジェクトを見えるようにするために視点を移動させるに留まり、新しいゲームを提供することはできない。
【0006】
それゆえに、この発明の主たる目的は、新規な、ゲームプログラムおよびゲーム装置を提供することである。
【0007】
また、この発明の他の目的は、新規なパズルゲームをプレイできる、ゲームプログラムおよびゲーム装置を提供することである。
【課題を解決するための手段】
【0008】
本発明は、上記の課題を解決するために、以下の構成を採用した。なお、括弧内の参照符号および補足説明等は、本発明の理解を助けるために後述する実施の形態との対応関係を示したものであって、本発明を何ら限定するものではない。
【0009】
請求項1の発明は、表示手段と、操作手段と、記憶手段とを備えたゲーム装置で実行されるゲームプログラムであって、ゲーム装置のコンピュータに、オブジェクト配置ステップ、注視点設定ステップ、視点設定ステップ、ゲーム画像表示ステップ、視線算出ステップ、判断ステップ、および消去ステップを実行させる。オブジェクト配置ステップは、所定数の属性のうちのいずれか1つを有する複数のオブジェクトを記憶手段に記憶されたオブジェクトデータに基づいて3次元空間に配置する。注視点設定ステップは、操作手段の入力に基づいて注視点を設定する。視点設定ステップは、注視点設定ステップによって注視点が設定された後、操作手段の入力に基づいて3次元仮想空間内における視点を設定する。ゲーム画像表示ステップは、注視点設定ステップによって設定された注視点と視点設定ステップによって設定された視点とに基づいて表示手段にゲーム画像を表示する。視線算出ステップは、注視点設定ステップによって設定された注視点と視点設定ステップによって設定された視点とに基づいて視線および当該視線に平行な直線を算出する。判断ステップは、視線算出ステップによって算出された視線または当該視線に平行な直線と交差する複数のオブジェクトの属性が所定の条件を満たすかどうかを判断する。そして、消去ステップは、判断ステップによって所定の条件を満たすことが判断されたとき、当該所定の条件を満たすオブジェクトを消去する。
【0010】
請求項1の発明では、ゲーム装置(10)は、表示手段(14)と、操作手段(22,24)と、記憶手段(72)とを備える。ゲームプログラムは、ゲーム装置のコンピュータ(34を含む。)に、オブジェクト配置ステップ(S1)、注視点設定ステップ(S11)、視点設定ステップ(S13)、ゲーム画像表示ステップ(S3,S15)、視線算出ステップ(S19)、判断ステップ(S55)、および消去ステップ(S57)を実行させる。オブジェクト配置ステップは、所定数の属性のうちのいずれか1つを有する複数のオブジェクトを記憶手段に記憶されたオブジェクトデータ(72d,730〜73n)に基づいて3次元空間(ゲーム空間)に配置する。注視点設定ステップは、操作手段の入力に基づいて注視点を設定する。たとえば、プレイヤが指示したオブジェクトの位置座標が注視点に設定される。視点設定ステップは、注視点設定ステップによって注視点が設定された後、操作手段の入力に基づいて3次元仮想空間内における視点を設定する。つまり、3次元仮想空間における仮想カメラの位置が移動(設定)される。ゲーム画像表示ステップは、注視点設定ステップによって設定された注視点と視点設定ステップによって設定された視点とに基づいて表示手段にゲーム画像を表示する。ここでは、仮想カメラ(視点)から注視点の方向を見た場合の3次元のゲーム画像が仮想スクリーンに投影され、したがって、2次元のゲーム画像が表示手段に表示される。視線算出ステップは、注視点設定ステップによって設定された注視点と視点設定ステップによって設定された視点とに基づいて視線(V)および当該視線に平行な直線(L)を算出する。判断ステップは、視線算出ステップによって算出された視線または当該視線に平行な直線と交差する複数のオブジェクトの属性が所定の条件を満たすかどうかを判断する。消去ステップは、判断ステップによって所定の条件を満たすことが判断されたとき(S55で“YES”)、当該所定の条件を満たすオブジェクトを消去する。
【0011】
請求項1の発明によれば、視点および視線をプレイヤが設定することにより、視線およびそれに平行な直線と交差する複数のオブジェクトが所定の条件を満たすとき、当該オブジェクトを消去するので、オブジェクトの配列と視線またはこれに平行な直線との関係を解くような、今までにないパズルゲームを提供することができる。
【0012】
請求項2の発明は請求項1に従属し、オブジェクト配置ステップは、所定数の互いに平行な層上に、それぞれの層に固有のオブジェクトを、互いに他の層のオブジェクトと重ならない位置に配置する。
【0013】
請求項2の発明では、オブジェクト配置ステップは、所定数の互いに3次元空間における平行な層上に、それぞれの層に固有のオブジェクトを配置する。このとき、各オブジェクトは、互いに他の層のオブジェクトと重ならない位置に配置する。たとえば、各層は、同じ分割の仕方により所定数の領域に分割されており、同じ位置に対応する他の層における描画領域に複数のオブジェクトが配置されないようにするのである。
【0014】
請求項2の発明によれば、オブジェクトの3次元空間における配置に規則性を持たせるので、プレイヤがオブジェクトの配置を想像するときの指標を与えることができる。
【0015】
請求項3の発明は請求項2に従属し、ゲーム画像表示ステップは、少なくとも注視点設定ステップによって注視点が設定されるまで、所定数の互いに平行な層を垂直方向から俯瞰した画像をゲーム画像として表示する。
【0016】
請求項3の発明では、少なくとも注視点設定ステップによって3次元空間における注視点が設定されるまでは、たとえば、デフォルト設定の位置および方向に視点は設定される。このとき、所定数の互いに平行な層を垂直方向から俯瞰した画像がゲーム画像として表示手段に表示される。つまり、視点の設定を行う前では、各オブジェクトが格子状に配列された状態の2次元のゲーム画像が表示される。
【0017】
請求項3の発明によれば、視点の設定を行う前では、2次元のゲーム画像が表示されるため、プレイヤは、オブジェクトの2次元の配列を見て、その3次元仮想空間における配列を想像することができる。
【0018】
請求項4の発明は請求項2または3に従属し、それぞれの層に固有のオブジェクトは、3次元空間を俯瞰した画像をゲーム画像として表示するときの、最上層において大きさの最も大きい属性であり、最下層において大きさの最も小さい属性である。
【0019】
請求項4の発明では、それぞれの層に固有のオブジェクトは、大きさの異なる属性である。大きさのみが異なる場合や相似形である場合が含まれる。3次元空間を俯瞰した画像をゲーム画像として表示するときの、つまり視点側から注視点側を見るときの、最上層においてオブジェクトは大きさが最も大きい属性であり、最下層においてオブジェクトは大きさが最も小さい属性である。
【0020】
請求項4の発明によれば、3次元仮想空間における配置に更なる規則性を持たせるので、3次元空間におけるオブジェクトの配列を把握し易くすることができる。
【0021】
請求項5の発明は請求項2ないし4のいずれかに従属し、消去ステップは、隣接する層において、視線または直線と交差するオブジェクトの大きさが、視点側から注視点側に向かうに従って小さくなり、かつ所定数並んでいるとき、当該オブジェクトを消去する。
【0022】
請求項5の発明では、隣接する層において、視線または直線と交差するオブジェクトの大きさが、視点側から注視点側に向かうに従って小さくなり、かつ所定数並んでいるとき、つまり複数のオブジェクトが所定の順番で並ぶとき、所定の条件を満たすことが判断される。そして、消去ステップは、所定の条件を満たすオブジェクトを消去する。
【0023】
請求項5の発明によれば、オブジェクトの配列が、3次元空間において視点側から注視点側に向かうに従ってオブジェクトの大きさが小さくなるような場合に、当該オブジェクトを消去するので、プレイヤに3次元空間におけるオブジェクトの配列を想像させることができる。新しいゲームの面白さを提供することができる。
【0024】
請求項6の発明は請求項2ないし5のいずれかに従属し、オブジェクト配置ステップは、記憶手段に記憶された、層に垂直な方向について内部が中空で外縁を有するオブジェクトをオブジェクトデータに基づいて配置する。
【0025】
請求項6の発明では、オブジェクトは、3次元空間においてオブジェクトが配置される各層に垂直な方向について内部が中空で外縁を有するオブジェクトである。したがって、各層で大きさの異なる複数のオブジェクトが視点側から注視点側に向かう順番で並ぶとき、当該複数のオブジェクトによってトンネルが形成されるようなゲーム画像が表示される。
【0026】
請求項6の発明によれば、プレイヤは複数のオブジェクトによってトンネルが形成されるように、視点を移動させるので、プレイヤにパズルが解けたときの達成感を味わわせることができる。
【0027】
請求項7の発明は、表示手段と、操作手段と、記憶手段とを備えたゲーム装置であって、オブジェクト配置手段、注視点設定手段、視点設定手段、ゲーム画像表示手段、視線算出手段、判断手段、および消去手段を備える。オブジェクト配置手段は、所定数の属性のうちのいずれか1つを有する複数のオブジェクトを記憶手段に記憶されたオブジェクトデータに基づいて3次元空間に配置する。注視点設定手段は、操作手段の入力に基づいて注視点を設定する。視点設定手段は、注視点設定手段によって注視点が設定された後、操作手段の入力に基づいて3次元仮想空間内における視点を設定する。ゲーム画像表示手段は、注視点設定手段によって設定された注視点と視点設定手段によって設定された視点とに基づいて表示手段にゲーム画像を表示する。視線算出手段は、注視点設定手段によって設定された注視点と視点設定手段によって設定された視点とに基づいて視線および当該視線に平行な直線を算出する。判断手段は、視線算出手段によって算出された視線または当該視線に平行な直線と交差する複数のオブジェクトの属性が所定の条件を満たすかどうかを判断する。そして、消去手段は、判断手段によって所定の条件を満たすことが判断されたとき、当該所定の条件を満たすオブジェクトを消去する。
【0028】
請求項7の発明においても、請求項1の発明と同様に、今までにないパズルゲームを提供することができる。
【発明の効果】
【0029】
この発明によれば、3次元仮想空間におけるオブジェクトの配置をプレイヤに想像させ、その視線やそれに平行な直線との関係を解くことにより、ゲームを進行させるような新しいパズルゲームをプレイすることができる。
【0030】
この発明の上述の目的,その他の目的,特徴および利点は、図面を参照して行う以下の実施例の詳細な説明から一層明らかとなろう。
【発明を実施するための最良の形態】
【0031】
図1を参照して、この発明の実施例であるゲーム装置10は、第1の液晶表示器(LCD)12および第2のLCD14を含む。LCD12およびLCD14は、所定の配置位置となるようにハウジング16に収納される。この実施例では、ハウジング16は、上側ハウジング16aと下側ハウジング16bとによって構成され、LCD12は上側ハウジング16aに収納され、LCD14は下側ハウジング16bに収納される。したがって、LCD12とLCD14とは縦(上下)に並ぶように近接して配置される。
【0032】
なお、この実施例では、表示器としてLCDを用いるようにしてあるが、LCDに代えて、EL(Electronic Luminescence)ディスプレイやプラズマディスプレイを用いるようにしてもよい。
【0033】
図1からも分かるように、上側ハウジング16aは、LCD12の平面形状よりも少し大きな平面形状を有し、一方主面からLCD12の表示面を露出するように開口部が形成される。一方、下側ハウジング16bは、その平面形状が上側ハウジング16aよりも横長に選ばれ、横方向の略中央部にLCD14の表示面を露出するように開口部が形成される。下側ハウジング16bのLCD14の左方には電源スイッチ18が設けられる。
【0034】
また、上側ハウジング16aには、LCD12を挟んで左右に、スピーカ36aおよび36b(図2)のための音抜き孔20aおよび20bが形成される。そして、下側ハウジング16bには、マイク(図示せず)のためのマイク孔20cが形成されるとともに、操作スイッチ22(22a,22b,22c,22d,22e,22Lおよび22R)が設けられる。
【0035】
また、上側ハウジング16aと下側ハウジング16bとは、上側ハウジング16aの下辺(下端)と下側ハウジング16bの上辺(上端)の一部とが回動可能に連結されている。したがって、たとえば、ゲームをプレイしない場合には、LCD12の表示面とLCD14の表示面とが対面するように、上側ハウジング16aを回動させて折りたたんでおけば、LCD12の表示面およびLCD14の表示面に傷がつくなどの破損を防止することができる。ただし、上側ハウジング16aと下側ハウジング16bとは、回動可能に連結せずに、それらを一体的(固定的)に設けたハウジング16を形成するようにしてもよい。
【0036】
操作スイッチ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の上側面の左右角部に配置される。
【0037】
方向指示スイッチ22aは、ディジタルジョイスティックとして機能し、4つの押圧部の1つを操作することによって、ユーザないしプレイヤによって操作可能なプレイヤキャラクタ(またはプレイヤオブジェクト)の移動方向を指示したり、カーソルの移動方向を指示したりする等に用いられる。また、各押圧部には、特定の役割を割り当てることができ、4つの押圧部の1つを操作することによって、割り当てられた役割を指示(指定)することができる。
【0038】
スタートスイッチ22bは、プッシュボタンで構成され、ゲームを開始(再開)したり、一時停止(Pause)したりする等に用いられる。また、セレクトスイッチ22cは、プッシュボタンで構成され、ゲームモードの選択等に用いられる。
【0039】
動作スイッチ22dすなわちAボタンは、プッシュボタンで構成され、方向指示以外の動作、すなわち、プレイヤキャラクタに打つ(パンチ)、投げる、つかむ(取得)、乗る、ジャンプするなどの任意のアクションをさせることができる。たとえば、アクションゲームにおいては、ジャンプ、パンチ、武器を動かす等を指示することができる。また、ロールプレイングゲーム(RPG)やシミュレーションRPGにおいては、アイテムの取得、武器やコマンドの選択および決定等を指示することができる。動作スイッチ22eすなわちBボタンは、プッシュボタンで構成され、セレクトスイッチ22cで選択したゲームモードの変更やAボタン22dで決定したアクションの取り消し等のために用いられる。
【0040】
動作スイッチ22fすなわちXボタン、および動作スイッチ22gすなわちYボタンは、プッシュボタンで構成され、Aボタン22dとBボタン22eだけでは、ゲーム進行ができないときに、補助的な操作に用いられる。ただし、Xボタン22fおよびYボタン22gは、Aボタン22dおよびBボタン22eと同様の操作に用いることも可能である。もちろん、ゲームプレイにおいてXボタン22fとYボタン22gとを必ずしも使用しなくてよい。
【0041】
動作スイッチ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に割り当てられた役割を、他の役割に変更することができる。この実施例では、Lボタン22Lを押すと、方向スイッチ22aに割り当てられたコードが他のコードに変更される。
【0042】
また、LCD14の上面には、タッチパネル24が装着される。タッチパネル24としては、たとえば、抵抗膜方式、光学式(赤外線方式)および静電容量結合式のいずれかの種類のものを用いることができる。また、タッチパネル24は、その上面をスティック26ないしはペン(スタイラスペン)或いは指(以下、これらを「スティック26等」という場合がある。)で、押圧したり、撫でたり、触れたりすることにより操作(タッチ入力)すると、スティック26等の操作位置の座標を検出して、検出した座標(検出座標)に対応する座標データを出力する。
【0043】
なお、この実施例では、LCD14(LCD12も同じ、または略同じ。)の表示面の解像度は256dot×192dotであり、タッチパネル24の検出精度も表示画面に対応して256dot×192dotとしてあるが、タッチパネル24の検出精度は表示画面の解像度よりも低くてもよく、高くてもよい。
【0044】
LCD12およびLCD14には異なるゲーム画面が表示されてもよい。たとえば、レースゲームでは一方のLCDに運転席からの視点による画面を表示し、他方のLCDにレース(コース)全体の画面を表示することができる。また、RPGでは、一方のLCDにマップやプレイヤキャラクタ等のキャラクタを表示し、他方のLCDにプレイヤキャラクタが所有するアイテムを表示することができる。さらに、一方のLCD(この実施例では、LCD14)にゲームの操作画面(ゲーム画面)を表示し、他方のLCD(この実施例では、LCD12)に当該ゲームに関する情報(得点やレベルなど)を含む他のゲーム画面を表示することができる。さらには、2つのLCD12およびLCD14を合わせて1つの画面として用いることにより、プレイヤキャラクタが倒さなければならない巨大な怪物(敵キャラクタ)を表示することもできる。
【0045】
したがって、プレイヤはスティック26等でタッチパネル24を操作することにより、LCD14の画面に表示されるプレイヤキャラクタ、敵キャラクタ、アイテムキャラクタ、操作オブジェクトなどの画像を指示(操作)したり、コマンドを選択(入力)したりすることができる。また、3次元ゲーム空間に設けられる仮想カメラ(視点)の方向(視線の向き)を変化させたり、ゲーム画面(マップ)のスクロール(徐々に移動表示)方向を指示したりすることもできる。
【0046】
なお、ゲームの種類によっては、タッチパネル24を用いることにより、その他の入力指示も可能である。たとえば、座標入力指示を入力したり、LCD14において文字,数字,記号等を手書き入力したりすることができる。
【0047】
このように、ゲーム装置10は、2画面分の表示部となるLCD12およびLCD14を有し、いずれか一方(この実施例では、LCD14)の上面にタッチパネル24が設けられるので、2画面(12,14)と2系統の操作部(22,24)とを有する構成になっている。
【0048】
また、この実施例では、スティック26は、たとえば下側ハウジング16bに設けられる収納部(図1では点線で示す)に収納することができ、必要に応じて取り出される。ただし、スティック26を設けない場合には、その収納部も設ける必要はない。
【0049】
さらに、ゲーム装置10はメモリカード(またはカートリッジ)28を含み、このメモリカード28は着脱自在であり、下側ハウジング16bの裏面ないしは下端(底面)に設けられる挿入部30(図1では点線で示す)に挿入される。図1では省略するが、挿入部30の奥部には、メモリカード28の挿入方向先端部に設けられるコネクタ(図示せず)と接合するためのコネクタ32(図2参照)が設けられており、したがって、メモリカード28が挿入部30に挿入されると、コネクタ同士が接合され、ゲーム装置10のCPUコア34(図2参照)がメモリカード28にアクセス可能となる。
【0050】
なお、図1では表現できないが、上側ハウジング16aの音抜き孔20aおよび20bと対応する位置であり、この上側ハウジング16aの内部にはスピーカ36aおよび36b(図2参照)が設けられる。
【0051】
また、図1では省略するが、たとえば、下側ハウジング16bの裏面側には、電池収容ボックスが設けられ、また、下側ハウジング16bの底面側には、音量スイッチ、外部拡張コネクタおよびイヤフォンジャックなどが設けられる。
【0052】
図2はゲーム装置10の電気的な構成を示すブロック図である。図2を参照して、ゲーム装置10は電子回路基板38を含み、この電子回路基板38には上述のCPUコア34等の回路コンポーネントが実装される。CPUコア34は、バス40を介して前述のコネクタ32に接続されるととともに、RAM42、第1のグラフィック処理ユニット(GPU)44、第2のGPU46、入出カインターフエース回路(以下、「I/F回路」という。)48およびLCDコントローラ50が接続される。
【0053】
コネクタ32には、上述したように、メモリカード28が着脱自在に接続される。メモリカード28は、ROM28aおよびRAM28bを含み、図示は省略するが、ROM28aおよびRAM28bは、互いにバスで接続され、さらに、コネクタ32と接合されるコネクタ(図示せず)に接続される。したがって、上述したように、CPUコア34は、ROM28aおよびRAM28bにアクセスすることができるのである。
【0054】
ROM28aは、ゲーム装置10で実行すべきゲームのためのゲームプログラム、画像データ(文字やオブジェクトの画像、背景画像、アイテム画像、アイコン(ボタン)画像、メッセージ画像など)およびゲームに必要な音(音楽)のデータ(音データ)等を予め記憶する。RAM(バックアップRAM)28bは、そのゲームの途中データやゲームの結果データなどを記憶(セーブ)する。
【0055】
RAM42は、バッファメモリないしはワーキングメモリとして使用される。つまり、CPUコア34は、メモリカード28のROM28aに記憶されたプログラム、画像データおよび音データ等をRAM42にロードし、ロードしたプログラムを実行する。また、CPUコア34は、ゲームの進行に応じて一時的に発生するデータ(ゲームデータやフラグデータ)をRAM42に記憶しつつゲーム処理を実行する。
【0056】
なお、ゲームプログラム、画像データおよび音データ等は、ROM28aから一度に全部、または部分的かつ順次的に読み出され、RAM42に記憶(ロード)される。
【0057】
ただし、メモリカード28のROM28aには、ゲーム以外の他のアプリケーションについてのプログラムおよび当該アプリケーションの実行に必要な画像データが記憶される。また、必要に応じて、音(音楽)データが記憶されてもよい。かかる場合には、ゲーム装置10では、当該アプリケーションが実行される。
【0058】
GPU44およびGPU46は、それぞれ、描画手段の一部を形成し、たとえばシングルチップASICで構成され、CPUコア34からのグラフィックスコマンド(作画命令)を受け、そのグラフィックスコマンドに従って画像データを生成する。ただし、CPUコア34は、グラフィックスコマンドに加えて、画像データの生成に必要な画像生成プログラム(ゲームプログラムに含まれる。)をGPU44およびGPU46のそれぞれに与える。
【0059】
また、GPU44には、第1のビデオRAM(以下、「VRAM」という。)52が接続され、GPU46には、第2のVRAM54が接続される。GPU44およびGPU46が作画コマンドを実行するにあたって必要なデータ(画像データ:ポリゴンやテクスチャ等のデータ)は、GPU44およびGPU46が、それぞれ、第1のVRAM52および第2のVRAM54にアクセスして取得する。
【0060】
なお、CPUコア34は、描画に必要な画像データをGPU44およびGPU46を介して第1のVRAM52および第2のVRAM54に書き込む。GPU44はVRAM52にアクセスして描画のための画像データを作成し、GPU46はVRAM54にアクセスして描画のための画像データを作成する。
【0061】
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に出力する。
【0062】
なお、LCDコントローラ50は、VRAM52およびVRAM54から直接画像データを読み出したり、GPU44およびGPU46を介してVRAM52およびVRAM54から画像データを読み出したりする。
【0063】
I/F回路48には、操作スイッチ22,タッチパネル24およびスピーカ36a,36bが接続される。ここで、操作スイッチ22は、上述したスイッチ22a,22b,22c,22d,22e,22g,22Lおよび22Rであり、操作スイッチ22が操作されると、対応する操作信号(操作データ)がI/F回路48を介してCPUコア34に入力される。また、タッチパネル24からの座標データがI/F回路48を介してCPUコア34に入力される。さらに、CPUコア34は、ゲーム音楽(BGM)、効果音またはゲームキャラクタの音声(擬制音)などのゲームに必要な音データをRAM42から読み出し、I/F回路48を介してスピーカ36a,36bから出力する。
【0064】
図3は、図1および図2に示すゲーム装置10を用いて、この実施例の仮想ゲーム(パズルゲーム)をプレイする場合に、LCD14に表示されるゲーム画面100の一例を示す。このゲーム画面100は、ゲームの開始時または画面更新時に表示される初期画面である。初期画面100には、種類(属性)の異なる複数のオブジェクトが格子状に隙間無く並んで表示される。具体的には、大リングオブジェクト102、中リングオブジェクト104および小リングオブジェクト106が、不規則(ランダム)に、それらの中心が縦方向および横方向のそれぞれで一直線上に並ぶように、表示される。この実施例では、大リングオブジェクト102、中リングオブジェクト104および小リングオブジェクト106は、それぞれ、中空で外縁を有するリング状のオブジェクトである。つまり、大リングオブジェクト102、中リングオブジェクト104および小リングオブジェクト106は、相似形である。また、この実施例では、オブジェクトの属性は、リングの種類(大リングオブジェクト102,中リングオブジェクト104,小リングオブジェクト106の別、または、大きさ(半径))、描画(配置)されるレイヤー(層)の種類(後述する、最上層200a,中間層200b,最下層200c)および層における描画領域の番号(インデックス番号)を意味する。
【0065】
図4(A),(B),(C)に示すように、大リングオブジェクト102は最上層200aに配置され、中リングオブジェクト104は中間層200bに配置され、小リングオブジェクト106は最下層200cに配置される。各層は、同じ大きさ(面積)を有し、互いに平行であり、各層の基準点(たとえば、層の中心点や左上頂点)のワールド座標(3次元のゲーム空間の座標)のX座標およびY座標が一致するように配置される。ここで、図4(A)〜図4(C)に示すように、各層の横方向がワールド座標のX軸方向であり、各層の縦方向がワールド座標のY軸方向であり、そして、ワールド座標のX軸およびY軸に垂直な方向がワールド座標のZ軸に相当する。また、図4(A)〜図4(C)に示すように、右方向がワールド座標のX軸のプラス方向であり、上方向がワールド座標のY軸のプラス方向であり、そして、図面(紙面)に対して垂直上方向がワールド座標のZ軸のプラス方向である。ただし、最上層200aの配置されるワールド座標のZ座標が最大であり、最下層200cの配置されるワールド座標のZ座標が最小であり、中間層200bはそれらの間に配置される(図6参照)。
【0066】
また、図4(A)〜図4(C)を参照して分かるように、各層では、他の層に配置されたオブジェクト(102,104,106)と重ならないように、各オブジェクト(102,104,106)が配置される。つまり、XY平面において、同じ位置(X座標およびY座標)に複数のオブジェクト(102,104,106)が配置されることはない。一方で、XY平面に着目したとき、必ずいずれかの層にオブジェクトが配置される。具体的には、図5に示すように、各層には、複数の正方形の描画領域(4×5)が設定されており、異なる層で同じ位置(インデックス番号)の描画領域に、複数のオブジェクト(102,104,106)が配置されることはない。たとえば、最上層200aの描画領域[1]に大リングオブジェクト102が配置されている場合には、中間層200bおよび最下層200cの描画領域[1]には、中リングオブジェクト104および小リングオブジェクト106は配置されない。同様に、中間層200bの描画領域[2]に中リングオブジェクト104が配置されている場合には、最上層200aおよび最下層200cの描画領域[2]には、大リングオブジェクト102および小リングオブジェクト106は配置されない。さらに、最下層200cの描画領域[4]に小リングオブジェクト106が配置されている場合には、最上層200aおよび中間層200bの描画領域[4]には、大リングオブジェクト102および中リングオブジェクト104は配置されない。他の描画領域についても同様である。また、必ずいずれかの層で描画領域にオブジェクトが配置されるので、俯瞰して見たときに、隙間無くオブジェクトが配置されているように見える。
【0067】
また、図示は省略するが、オブジェクト(102,104,106)は、各層の描画領域の中心座標に、当該オブジェクト(102,104,106)のローカル座標(オブジェクトの形状を定義するための、オブジェクト固有の座標)の中心座標を置くように、配置される。
【0068】
なお、図5においては、各描画領域にインデックス番号を付して示してあるが、これに限定される必要はない。異なる層で同じ位置の描画領域に同じインデックス番号が付されていれば、層内におけるインデックス番号の並び順はランダムでも構わない。
【0069】
図示は省略するが、ゲーム100が表示(更新)された当初では、仮想カメラ(視点)210(図6参照)は、最上層200a側に配置され、その視線は各層(200a,200b,200c)を正面から見るように、各層(200a,200b,200c)の中心を通りZ軸に平行な直線上に設定される。つまり、図3に示す初期画面100が表示されるとき、仮想カメラ210の位置(視点)のX座標およびY座標は、各層の中心位置のX座標およびY座標と一致し、仮想カメラ210の注視点のX座標およびY座標も、各層の中心位置のX座標およびY座標と一致する。したがって、各層(200a,200b,200c)を俯瞰的に見るように、仮想カメラ210が設定される。このため、図3に示したような初期画面100が表示されるのである。以下、視点変更により、斜めから層を見た場合のゲーム画面100(3次元視点のゲーム画面100)と区別するために、図3に示すようなゲーム画面100を「俯瞰視点のゲーム画面100」ということがある。ただし、俯瞰視点のゲーム画面100を表示する場合の仮想カメラ210の位置(初期位置)および向き(注視点)は予め設定されている。
【0070】
たとえば、図6(A)に示すように、プレイヤがスティック26を用いて所望のオブジェクト(102,104,106)をタッチ(指示)すると、当該オブジェクト(102,104,106)が注視点として設定される。厳密に言うと、プレイヤが指示したオブジェクト(102,104,106)のワールド座標系における位置座標(中心座標)が、仮想カメラ210の注視点として設定されるのである。この実施例では、小リングオブジェクト106をタッチすると、注視点が設定される場合についてのみ説明するが、他のオブジェクト(102,104)についても同様である。続いて、図6(B)に示すように、プレイヤがスティック26をスライドさせると、そのスライド操作に従って仮想カメラ210の位置が移動される。つまり、視点が移動される。ただし、仮想カメラ210の注視点は、プレイヤが先に指示した小リングオブジェクト106の位置座標に固定されている。また、図示は省略するが、仮想カメラ210の視線の長さ(視点と注視点との距離)は、仮想カメラ210の初期位置と最下層200cとの直線距離(以下、「距離q」という。)に固定されており、したがって、仮想カメラ210は当該距離qを半径とする球面に沿うように3次元仮想空間内を移動される。
【0071】
このパズルゲームでは、プレイヤによって仮想カメラ210が移動され、その視線または視線に平行な直線と交差する複数のオブジェクト(102,104,106)が所定の条件を満たすとき、当該複数のオブジェクト(102,104,106)を消去する。この実施例では、図7に示すように、仮想カメラ(視点)210の視点が決定されたとき、仮想カメラ210側(視点側)から注視点側に向かって、大リングオブジェクト102,中リングオブジェクト104および小リングオブジェクト106の順で、オブジェクト(102,104,106)が視線または視線に平行な直線と交差するとき、所定の条件(消去条件)を満たすことが判定される。このとき、大リングオブジェクト102,中リングオブジェクト104および小リングオブジェクト106は、互いに重なる。ただし、この実施例では、大リングオブジェクト102の中に中リングオブジェクト104が表示され、さらに、中リングオブジェクト104の中に小リングオブジェクト106が表示されるとき、仮想カメラ210側から、大リングオブジェクト102,中リングオブジェクト104および小リングオブジェクト106の順でオブジェクト(102,104,106)が重なることを意味する。したがって、図6(B)では分かり難いが、オブジェクト(102,104,106)が上述の順番に従って重なるとき、ゲーム画面100では、点線の丸で囲む箇所のように、大リングオブジェクト102,中リングオブジェクト104および小リングオブジェクト106によってトンネルが形成されるように、表示される。
【0072】
そして、消去条件を満たしたオブジェクト(102,104,106)は、3次元仮想空間から消去される。したがって、図8(A)に示すように、一部のオブジェクト(102,104,106)が消去されたゲーム画面100が表示される。その後、渦巻状に(時計周りに)、各オブジェクト(102,104,106)を詰める(移動させる)とともに、消去したオブジェクト(102,104,106)の数(3)と同数の任意の大きさのオブジェクト(102,104,106)が追加される。したがって、図8(B)に示すように、ゲーム画面100が更新される。
【0073】
たとえば、この実施例のパズルゲームでは、第1の一定時間(たとえば、3分)以内に、所定数以上のオブジェクト(102,104,106)が消去された場合には、ゲームクリアとなる。一方、第1の一定時間以内に、所定数のオブジェクト(102,104,106)が消去されていない場合には、ゲームオーバとなる。ただし、ゲームクリアの条件やゲームオーバの条件は、これに限定される必要はなく、ゲームの開発者や設計者が任意に設定できる。
【0074】
なお、図示は省略するが、オブジェクト(102,104,106)が消去されない場合にも、ゲーム画面100は更新される。これは、オブジェクト(102,104,106)を消去することができない手詰まり状態を回避するためである。具体的には、ゲームを開始したり、ゲーム画面100を更新したりしてから、プレイヤが何ら操作せずに、第1の一定時間よりも短い第2の一定時間(たとえば、1分)が経過すると、ゲーム画面100が更新される。たとえば、ゲーム画面100の中央およびその近傍(ランダムでもよい。)に表示されている1または複数のオブジェクト(102,104,106)が消去され、消去されていないオブジェクト(102,104,106)が渦巻状に詰められるとともに、消去したオブジェクト(102,104,106)と同数の任意のオブジェクト(102,104,106)が追加される。
【0075】
ここで、大リングオブジェクト102、中リングオブジェクト104、小リングオブジェクト106の順番で重なっているか否かを判定(重なり判定)する方法について説明する。図9に示すように、重なり判定では、まず、視線のベクトル(視線ベクトル)Vが計算され、次に、この視線ベクトルVに平行であり、着目するオブジェクト(着目オブジェクト)の位置座標Pを始点とする半直線Lが計算される。ここで、着目オブジェクトは、最上層200aの或る描画領域に描画(配置)された大リングオブジェクト108を意味する。ただし、視線ベクトルVは、視点の座標を始点とし、注視点の座標を終点とするベクトルであり、注視点の座標から視点の座標を減算することにより、求められる。また、半直線L(ベクトル)は、視線ベクトルVに着目オブジェクトの位置座標Pを加算することにより、求められる。
【0076】
次に、着目するオブジェクトに重なるかどうかを判定する対象のオブジェクト(対象オブジェクト)の位置Qと半直線Lとの距離dを算出する。この実施例では、対象オブジェクトは、中間層200bの或る描画領域に配置された中リングオブジェクト104または最下層200cの或る描画領域に描画(配置)された小リングオブジェクト106を意味する。図9では、中オブジェクト104が対象オブジェクトである場合について示してある。ここで、図10に示すように、対象オブジェクトが着目オブジェクトに重なるためには、距離dに対象オブジェクト(図9では、中リングオブジェクト104)の半径rを加算した長さ(距離)Dが、着目オブジェクト(この実施例では、大リングオブジェクト102)の半径R以下であれば良いことが分かる。したがって、図9に示すような場合には、距離dは着目オブジェクトの半径Rを超えていることは明らかであり、対象オブジェクトは、着目オブジェクトに重ならないと判定される。
【0077】
ただし、重なり判定は、描画領域毎に行われる。この実施例では、図5に示したインデックス番号に従って重なり判定の処理(重なり判定処理)が実行される。たとえば、最上層200aにおいて、インデックス番号が1番から順に、描画領域に大リングオブジェクト102が描画されているかどうかが判断される。最上層200aの或る描画領域に、大リングオブジェクト102が描画されていない場合には、重なり判定処理を実行せずに、次のインデックス番号の描画領域に大リングオブジェクト102が描画されているかどうかが判断される。一方、最上層200aの或る描画領域に、大リングオブジェクト102が描画されている場合には、当該大リングオブジェクト102を着目オブジェクトとして、重なりの判定処理を実行する。重なり判定処理では、着目オブジェクトに、対象オブジェクトとしての中間層200bに描画された中リングオブジェクト104または最下層200cに描画された小リングオブジェクト106が重なるかどうかが判断される。中間層200bおよび最下層200cでは、インデックス番号の順番に従って、オブジェクト(104,106)が描画されているかどうかを判断し、描画されているオブジェクト(104,106)すなわち対象オブジェクトが着目オブジェクトに重なるか否かが判断される。このような重なり判定処理が、中間層200bおよび最下層200cのすべての描画領域(インデックス番号1〜20)について実行される。1の着目オブジェクトについて重なり判定処理を終えると、次の着目オブジェクトについて重なり判定処理が実行され、最上層200aのすべての描画領域(インデックス番号1〜20)について重なり判定処理が実行される。
【0078】
ただし、上述したように、異なる層の同じインデックス番号の描画領域には、複数のオブジェクト(102,104,106)は描画されないため、重なり判定処理では、着目オブジェクト(大リングオブジェクト102)が描画された描画領域については重なり判定処理を実行しない。また、同様の理由により、中間層200bの描画領域に対象オブジェクト(中リングオブジェクト104)が描画されている場合には、最下層200cの当該描画領域については重なり判定処理を実行しない。逆に、最下層200cの描画領域に対象オブジェクト(小リングオブジェクト106)が描画されている場合には、中間層200bの当該描画領域については重なり判定処理を実行しない。このように、無駄な処理を省いて、重なり判定処理の負荷が軽減される。
【0079】
図11は図2に示したRAM42のメモリマップの一例を示す図解図である。この図11を参照して、RAM42はプログラム記憶領域70およびデータ記憶領域72を含む。プログラム記憶領域70は、ゲームプログラムを記憶し、このゲームプログラムは、ゲームメイン処理プログラム70a,画像生成プログラム70b,画像表示プログラム70c,画像更新プログラム70d,指示位置検出プログラム70e,注視点設定プログラム70f,視点設定プログラム70g,視線計算プログラム70h、重なり判定プログラム70iおよび消去条件判定プログラム70jなどで構成される。
【0080】
ゲームメイン処理プログラム70aは、この実施例のパズルゲームのメインルーチンを処理するためのプログラムである。画像生成プログラム70bは、後述するオブジェクト配置データ72dおよび画像データ72hを用いて、ゲーム画像を生成するためのプログラムである。具体的には、まず、3次元仮想空間(ワールド座標)にそのZ軸方向に直交する方向に並べるように、最上層200a,中間層200b,最下層200cが配置される。次に、異なる層で同じ位置(インデックス番号)の描画領域に複数のオブジェクト(102,104,106)が描画されないように、各層にオブジェクト(102,104,106)が描画される。ただし、描画されるオブジェクト(102,104,106)の総数は、描画領域の総数(この実施例では、20)と一致する。また、図示は省略するが、LCD12に表示する他のゲーム画面についてのゲーム画像も生成される。たとえば、他のゲーム画面には、プレイヤのスコアやレベルなどの情報が表示される。
【0081】
画像表示プログラム70cは、画像生成プログラム70bによって生成されたゲーム画像をゲーム画面としてLCD12やLCD14に表示するためのプログラムである。ただし、LCD14に表示されるゲーム画面100は、後述する視点位置データ72cが示す視点位置から、後述する注視点位置データ72bが示す注視点を見た場合のゲーム画像である。画像更新プログラム70dは、ゲーム画像を更新するためのプログラムである。上述したように、プレイヤの操作によってオブジェクト(102,104,106)が消去された場合やプレイヤが何ら操作しない時間が第2の一定時間を経過した場合に、ゲーム画像が更新される。したがって、ゲーム画面100の表示が変更される。
【0082】
指示位置検出プログラム70eは、タッチパネル24からの座標データに基づいてLCD14上の指示位置を検出するためのプログラムである。この指示位置検出プログラム70eは、プレイヤがタッチパネル24にタッチを開始(タッチ開始)してからタッチを終了(タッチ終了)するまでに、1フレーム(フレーム:画面更新単位時間(1/60秒))毎に検出される座標データを、後述する操作データバッファ72aに記憶(一時記憶)する。上述したように、この実施例では、LCD14の解像度と、タッチパネル24の検出精度とを同じにしてあるため、それぞれの座標系を同じに設定しておけば、タッチパネル24から入力されるタッチ位置の座標データを、そのままLCD14上の(ゲーム画面100における)指示位置の座標データとして使用することができる。
【0083】
注視点設定プログラム70fは、指示位置検出プログラム70eによって検出されたタッチ開始位置の座標データが示す座標に表示されるオブジェクト(102,104,106)のワールド座標の位置座標を注視点に設定するためのプログラムである。ただし、ゲーム開始時やゲーム画像(ゲーム画面100)の更新時では、注視点は最下層200c(最上層200aまたは中間層200bでもよい。)の中心位置に設定される。視点設定プログラム70gは、指示位置検出プログラム70eによって検出されるタッチ位置の座標データに従って、仮想カメラ210(視点)のワールド座標の位置座標を設定するためのプログラムである。この実施例では、視点設定プログラム70gは、タッチパネル24から入力される座標データが示す2次元の位置座標(X座標およびY座標)に対応するワールド座標のX座標およびY座標を求める。たとえば、LCD14の座標系の原点と、タッチパネル24の座標系の原点と、各層の座標系(XY平面のみ)の原点とを同じ点(たとえば、左上頂点)に設定しておけば、タッチパネル24から入力される座標データが示すX座標およびY座標を、ワールド座標におけるX座標およびY座標として用いることができる。そして、視線の長さが距離qになるように、Z座標を求める。したがって、仮想カメラ210の位置座標が決定される。ただし、ゲーム開始時やゲーム画面100の更新時では、視点は初期位置に設定される。なお、上述したように、このとき、注視点は最下層200cの中心位置である。
【0084】
視線計算プログラム70hは、視点位置データ72cが示す視点の位置座標を始点とし、注視点位置データ72bが示す注視点の位置座標を終点とする視線ベクトルVを計算するためのプログラムである。重なり判定プログラム70iは、視線計算プログラム70hに従って算出された視線ベクトルVを用いて、対象オブジェクト(104,106)が着目オブジェクト(102)に重なるか否かを判定するためのプログラムである。言い換えると、重なり判定プログラム70iは、視線またはそれに平行な直線がオブジェクト(102,104,106)と交差するかどうかを判定するのである。
【0085】
消去条件判定プログラム70jは、重なり判定プログラム70iに従って重なることが判定されたオブジェクト(102,104,106)が消去条件を満たすかどうかを判定するためのプログラムである。この実施例では、大リングオブジェクト102,中リングオブジェクト104,小リングオブジェクト106が、視点側から注視点側に向かう順番で重なる場合に、消去条件が満たされる。それ以外では、消去条件は満たされない。
【0086】
なお、図示は省略するが、ゲームプログラムは、音出力プログラムやバックアッププログラムなども含む。音出力プログラムは、ゲームキャラクタの音声、効果音、音楽(BGM)のように、ゲームに必要な音を出力するためのプログラムである。バックアッププログラムは、プレイヤの指示やゲームイベントに従って、ゲームデータ(途中データ,結果データ)をメモリカード30にセーブするためのプログラムである。
【0087】
図12は図11に示したデータ記憶領域72の内容の一例を示す図解図である。図12を参照して、データ記憶領域72には、操作データバッファ72aが設けられる。また、データ記憶領域72には、注視点位置データ72b,視点位置データ72c,オブジェクト配置データ72d,消去候補データ72e,ゲームクリア条件データ72f,ゲームオーバ条件データ72g,画像データ72hおよびオブジェクト消去数データ72iが記憶される。さらに、データ記憶領域72には、画面更新タイマ72kおよびプレイ時間タイマ72jが設けられる。
【0088】
操作データバッファ72aは、上述したように、指示位置検出プログラム70eに従って検出された座標データを一時記憶するための領域である。注視点位置データ72bは、3次元仮想空間における注視点の位置座標についての座標データである。視点位置データ72cは、3次元仮想空間における視点すなわち仮想カメラ210の位置座標についての座標データである。
【0089】
オブジェクト配置データ72dは、各オブジェクト(102,104,106)を配置するためのデータであり、オブジェクト1データ730,オブジェクト2データ732,…,オブジェクトnデータ73nを含む。オブジェクト1データ730は、位置データ730aおよび属性データ730bを含む。位置データ730aは、当該オブジェクト1が配置される層における位置座標(XY座標)についての座標データである。また、属性データ730bは、当該オブジェクト1の種類(大リングオブジェクト102,中リングオブジェクト104,小リングオブジェクト106の別、または、大きさ(半径))、配置される層の種類(最上層200a,中間層200b,最下層200c)および配置位置(インデックス番号)についてのデータである。ただし、この実施例では、オブジェクト1はインデックス番号「1」に描画されるオブジェクト(102,104,106)を意味する。つまり、図中の数値nはインデックス番号(n=1,2,3,…,20)を意味する。
【0090】
なお、詳細な説明は省略するが、他のオブジェクト2データ732,…,オブジェクトnデータ73nについても同様である。
【0091】
消去候補データ72eは、消去候補のオブジェクト(102,104,106)に関するデータである。この実施例では、着目オブジェクト(102)に重なることが判定された対象オブジェクト(104,106)の識別情報(たとえば、オブジェクト1データ730,…,オブジェクトnデータ72nのポインタ。以下、同じ。)が、当該着目オブジェクトの識別情報に対応づけられたデータが消去候補データ72eとして記憶される。
【0092】
ゲームクリア条件データ72fは、ゲームクリアを判定するための条件であり、この実施例では、第1の一定時間(3分)内に、一定数以上のオブジェクト(102,104,106)が消去されることがゲームクリアの条件である。ゲームオーバ条件データ72gは、ゲームオーバを判定するための条件であり、この実施例では、第1の一定時間内に、一定数以上のオブジェクト(102,104,106)が消去されていないことがゲームオーバの条件である。画像データ72hは、ゲーム画像を生成するためのポリゴンデータやテクスチャデータなどである。オブジェクト消去数データ72jは、後述するプレイ時間タイマ72jによって第1の一定時間(3分)がカウントされる間に、消去されたオブジェクト(102,104,106)の数(消去数k)を示す数値データである。
【0093】
なお、ゲームクリアの条件やゲームオーバの条件は、単なる例示であり、これに限定される必要はない。これらは、ゲームの開発者や設計者が適宜設定する条件である。また、これらの条件は固定される必要もなく、ゲームの(プレイヤの)レベル等に応じて適宜変更されてもよい。
【0094】
プレイ時間タイマ72jは、プレイヤがパズルゲームをプレイしている時間(第1の一定時間)をカウントするためのタイマである。このプレイ時間タイマ72jは、ゲーム開始時にリセットおよびスタートされる。また、画面更新タイマ72kは、画面更新時間(第2の一定時間(1分))をカウントするためのタイマである。この画面更新タイマ72kは、ゲームの開始時またはゲーム画面100が更新された時に、リセットおよびスタートされる。
【0095】
なお、図示は省略するが、データ記憶領域72には、音データやゲームデータなどが記憶されるとともに、ゲーム処理に必要な他のタイマ(カウンタ)或いはレジスタまたはフラグなども設けられる。
【0096】
具体的には、図2に示したCPUコア34が図13ないし図16に示すフロー図に従ってゲーム全体処理(メインルーチン)を実行する。図13に示すように、CPUコア34はゲーム全体処理を開始すると、ステップS1で、初期設定を実行する。ここでは、たとえば、操作データバッファ72aなどのバッファをクリアしたり、プレイ時間タイマ72jや画面更新タイマ72kなどのタイマ(カウンタ)或いはレジスタまたはフラグなどをリセットしたりする。図示は省略するが、ここでは、オブジェクト消去数データ72iがリセットされる(消去数k=0)。また、同様に、図示は省略するが、プレイ時間タイマ72jおよび画面更新タイマ72kはリセットされた後にスタートされる。さらに、ゲーム画面100(初期画面)を表示するためのオブジェクト配置データ72dの初期値が設定される。ただし、前回の続きからゲームを開始する場合には、レジスタやフラグには、メモリカード30に記憶されたゲームデータに従う値が設定される。
【0097】
次のステップS3では、図3に示したような、俯瞰視点のゲーム画面100(初期画面)を表示する。続いて、ステップS5では、操作入力が有るかどうかを判断する。つまり、タッチパネル24から座標データが入力されたかどうかを判断する。ただし、このステップS5の処理は、プレイヤがタッチを開始したかどうかの判断である。ステップS5で“NO”であれば、つまり操作入力が無ければ、ステップS7で、画面更新タイマ72kのカウント値を参照して、第2の一定時間(1分)が経過したかどうかを判断する。
【0098】
ステップS7で“NO”であれば、つまり第2の一定時間が経過していなければ、そのままステップS3に戻る。一方、ステップS7で“YES”であれば、つまり第2の一定時間が経過していれば、ステップS9で、オブジェクト(102,104,106)の配置を更新して、ステップS5に戻る。つまり、ステップS9の処理によって、ゲーム画像(ゲーム画面100)が更新される。図示は省略するが、ステップS9の処理を実行した後、画面更新タイマ72kは、リセットおよびスタートされる。
【0099】
また、ステップS5で“YES”であれば、つまり操作入力があれば、ステップS11で、注視点を検出し、設定する。この実施例では、タッチ開始位置が示すオブジェクト(102,104,106)の位置座標が注視点として設定され、その注視点の位置座標の座標データが注視点位置データ72bとしてデータ記憶領域72に記憶される。続いて、ステップS13では、操作入力に応じて視点を設定する。ここでは、タッチパネル24から入力される座標データが操作データバッファ72aに順次記憶され、上述したように、この座標データが示すタッチ位置(位置座標)に対応する3次元仮想空間(ゲーム空間)の指示位置を算出し、当該指示位置を視点の位置座標に設定する。つまり、3次元仮想空間の指示位置の位置座標の座標データが視点位置データ72cとしてデータ記憶領域72に記憶される。したがって、タッチ位置が変化すると、視点(視点位置データ72c)も更新される。
【0100】
次のステップS15では、図6(B)に示したような、3D視点のゲーム画面100を表示する。つまり、仮想カメラ210は、その向きが注視点位置データ72bの示す注視点の方向に設定されたままで、視点位置データ72cが示す視点(仮想カメラ210)の位置に配置(移動)される。そして、仮想カメラ210で撮影される3次元仮想空間の様子が2次元のゲーム画面100で表示される。つまり、仮想カメラ210から見た3次元のゲーム画像が投影変換(仮想スクリーンに投影)され、投影変換された2次元のゲーム画像がゲーム画面100として表示されるのである。
【0101】
続いて、ステップS17では、視点が確定したかどうかを判断する。つまり、タッチを終了したかどうかを判断する。なお、タッチパネル24からの座標データが無くなったとき、タッチを終了したと判断する。ステップS17で“NO”であれば、つまり視点が確定していなければ、視点の変更中であると判断して、そのままステップS13に戻る。一方、ステップS17で“YES”であれば、つまり視点が確定すれば、ステップS19で、視線を計算する。ここでは、CPUコア34は、注視点位置データ72bおよび視点位置データ72cを参照して、視点の位置座標を始点とし、注視点の位置座標を終点とする視線ベクトルVを計算する。
【0102】
図14に示すように、次のステップS21では、変数iに初期値を設定し(i=1),変数Vに視線ベクトルVを設定し、変数numにオブジェクト(102,104,106)の総数(20)を設定する。ここで、変数iは、最上層200aの描画領域のインデックス番号に相当する。この実施例では、最上層200aの描画領域は、area[1][i]で示される。また、後述するように、中間層200bの描画領域はarea[2][j]で示され、最下層200cの描画領域はarea[3][j]で示される。
【0103】
続いて、ステップS23では、変数iが変数numよりも大きいかどうかを判断する。つまり、重なり判定処理を終了したかどうかを判断する。ステップS23で“YES”であれば、つまり変数iが変数numよりも大きければ、重なり判定処理を終了したと判断して、図16に示すステップS55に進む。
【0104】
しかし、ステップS23で“NO”であれば、つまり変数iが変数num以下であれば、重なり判定処理を終了していないと判断し、ステップS25で、描画領域area[1][i]に大リングオブジェクト102が描画されているかどうかを判断する。ここでは、CPUコア34は、オブジェクト1データ730〜オブジェクトnデータ73nに含まれる属性データを参照して、その判断処理を実行する。以下、各描画領域に描画されたオブジェクト(102,104,106)を判断する場合について、同様である。
【0105】
ステップS25で“NO”であれば、つまり描画領域area[1][i]に大リングオブジェクト102が描画されていなければ、次の描画領域area[1][i]について重なり判定処理を実行するべく、ステップS31に進む。つまり、描画領域area[1][i]に大リングオブジェクト102が描画されていない場合には、この描画領域area[1][i]については、重なり判定処理を実行しない。これによって、CPU34の計算負荷が軽減される。
【0106】
一方、ステップS25で“YES”であれば、つまり描画領域area[1][i]に大リングオブジェクト102が描画されていれば、ステップS27で、変数Rに大リングオブジェクト102の半径を設定し、視線ベクトルVの始点が描画領域area[1][i]に描画された大リングオブジェクト102(着目オブジェクト)の位置座標と一致するように移動した半直線Lを設定し(L=着目オブジェクトの位置+V)、そして、変数jに初期値を設定する(j=1)。
【0107】
続くステップS29では、変数jが変数numよりも大きいかどうかを判断する。つまり、描画領域area[2][j]および描画領域[3][j]のすべてについて、重なり判定処理を終了したかどうかを判断する。ステップS29で“YES”であれば、つまり変数jが変数numよりも大きければ、描画領域area[2][j]および描画領域[3][j]のすべてについて、重なり判定処理を終了したと判断して、次の描画領域area[1][i]について重なり判定処理を実行するべく、ステップS31で、変数iをインクリメントして(i=i+1)、ステップS23に戻る。
【0108】
しかし、ステップS29で“NO”であれば、つまり変数jが変数num以下であれば、描画領域area[2][j]および描画領域[3][j]のすべてについて、重なり判定処理を終了していないと判断して、ステップS33で、変数iと変数jとが等しいかどうかを判断する。これは、着目オブジェクトとしての大リングオブジェクト102が描画された描画領域と同じ位置(インデックス番号)の中間層200bおよび最下層200cの描画領域については、重なり判定処理を実行しないためである。
【0109】
ステップS33で“YES”であれば、つまり変数iと変数jとが等しければ、図15に示すステップS53に進む。一方、ステップS33で“NO”であれば、つまり変数iと変数jとが等しくなければ、ステップS35で、描画領域[2][j]に中リングオブジェクト104が描画されているかどうかを判断する。ステップS35で“YES”であれば、つまり描画領域[2][j]に中リングオブジェクト104が描画されていれば、当該中リングオブジェクト104を対象オブジェクトとして重なり判定を行うべく、図15のステップS37に進む。一方、ステップ35で“NO”であれば、つまり、描画領域には俯瞰画面から見たときに隙間無くオブジェクトが描画されるので、描画領域[3][j]に小リングオブジェクトが描画されていることになり、当該小リングオブジェクト106を対象オブジェクトとして重なり判定を行うべく、図15に示すステップS41に進む。
【0110】
図15に示すように、ステップS37では、変数rに中リングオブジェクト104の半径を設定し、ステップS39で、描画領域[2][j]に描画された中リングオブジェクト104の位置P(位置座標)を取得して、ステップS45に進む。また、ステップS41では、変数rに小リングオブジェクト106の半径を設定し、ステップS43で、描画領域[3][j]に描画された小リングオブジェクト106の位置Pを取得して、ステップS45に進む。
【0111】
ステップS45では、半直線Lと位置Pとの距離dを算出し、ステップS47で、距離dと変数rとを加算することにより、距離Dを算出する(D=d+r)。そして、ステップS49で、距離Dが変数R以下であるかどうかを判断する。つまり、対象オブジェクトが着目オブジェクトに重なるかどうかを判断する。ステップS49で“NO”であれば、つまり距離Dが変数Rよりも大きければ、対象オブジェクトが着目オブジェクトに重ならないと判断して、ステップS53で、変数jをインクリメントして(j=j+1)、図14に示したステップS29に戻る。
【0112】
また、ステップS49で“YES”であれば、つまり距離Dが変数R以下であれば、対象オブジェクトが着目オブジェクトに重なると判断し、ステップS51で、今回重なりを判定した、描画領域area[2][j]に描画された中リングオブジェクト104、または、描画領域area[3][j]に描画された小リングオブジェクト106を、描画領域area[1][i]に関連付けて消去候補として設定して、ステップS53に進む。つまり、着目オブジェクトの識別情報と対象オブジェクトの識別情報とが関連付けられた消去候補データ72eがデータ記憶領域72に記憶される。
【0113】
上述したように、重なり判定処理を終了すると、ステップS23で“YES”となり、図16に示すステップS55で、消去条件を満たすオブジェクト(102,104,106)があるかどうかを判断する。ここでは、CPUコア34は、消去候補データ72eを参照して、同一の大リングオブジェクト102に関連づけられた中リングオブジェクト104と小リングオブジェクト106とが存在するかどうかを判断する。そして、CPUコア34は、同一の大リング102に関連づけられた中リングオブジェクト104と小リングオブジェクト106とが存在する場合には、消去条件を満たすと判断する。一方、CPUコア34は、中リングオブジェクト104と小リングオブジェクト106とが異なる大リングオブジェクト102に関連付けられている場合、2つの中リングオブジェクト104が同一の大リングオブジェクト102に関連づけられている場合、2つの小リングオブジェクト106が同一の大リングオブジェクト102に関連づけられている場合には、消去条件を満たさないと判断する。
【0114】
ステップS55で“NO”であれば、つまり消去条件を満たすオブジェクト(102,104,106)が存在しなければ、図13に示したステップS3に戻る。一方、ステップS55で“YES”であれば、つまり消去条件を満たすオブジェクト(102,104,106)が存在すれば、ステップS57で、オブジェクトの消去処理を実行する。ここでは、消去条件を満たす大リングオブジェクト102,中リングオブジェクト104および小リングオブジェクト106の組を消去する。複数の組が存在する場合には、当該複数の組のオブジェクト(102,104,106)が消去される。具体的には、消去すべきオブジェクト(102,104,106)についてのオブジェクト1データ730〜オブジェクトnデータ73nをデータ記憶領域72から消去する。
【0115】
次のステップS59では、スコアをカウントアップする。つまり、得点が加算される。続く、ステップS61では、消去数kを加算する。ここでは、ステップS57のオブジェクト消去処理において消去されたオブジェクトの数が加算される。続いて、ステップS63では、オブジェクトの配置を更新する。つまり、消去処理によってオブジェクトが消去された描画領域にオブジェクト(102,104,106)を配置するべく、渦巻状にオブジェクト(102,104,106)を移動させる。そして、消去されたオブジェクト(102,104,106)の数だけ、新しいオブジェクト(102,104,106)が追加される。追加されるオブジェクト(102,104,106)の種類(大きさ)はランダムに設定される。
【0116】
そして、ステップS65では、ゲームクリアかどうかを判断する。この実施例では、CPUコア34は、ゲームクリア条件データ72fを参照して、ゲームクリアの条件を取得する。また、CPUコア34は、オブジェクト消去数データ72iを参照して、消去数kを検出するとともに、プレイ時間タイマ72jを参照して、パズルゲームのプレイ時間を取得する。そして、CPUコア34は、ゲームクリアの条件を満たすかどうかを判断する。具体的には、CPUコア34は、第1の一定時間(3分)以内に所定数以上のオブジェクト(102,104,106)が消去されたかどうかを判断する。ステップS65で“YES”であれば、つまりゲームクリアであれば、ステップS67で、ゲームクリア処理を実行し、ゲーム全体処理を終了する。ステップS67では、CPUコア34は、たとえば、ゲームクリアをしたことを示すゲーム画面100を表示し、ゲームレベルや面(ステージ)を更新し、ゲームデータをセーブする。
【0117】
一方、ステップS65で“NO”であれば、つまりゲームクリアでなければ、ステップS69で、ゲームオーバかどうかを判断する。この実施例では、CPUコア34は、ゲームクリアの判定と同様に、ゲームオーバ条件データ72g,オブジェクト消去数データ72iおよびプレイ時間タイマ72jを参照して、第1の一定時間以内に所定数のオブジェクト(102,104,106)が消去されていないかどうかを判断する。ステップS69で“NO”であれば、つまりゲームオーバでなければ、そのままステップS3に戻る。一方、ステップS69で“YES”であれば、つまりゲームオーバであれば、ステップS71で、ゲームオーバ処理を実行して、ゲーム全体処理を終了する。ステップS71では、CPUコア34は、たとえば、ゲームオーバを示すゲーム画面100を表示する。
【0118】
この実施例によれば、プレイヤの操作に応じて、注視点を設定し、さらに視点を変更させることにより、リング状のオブジェクトが所定の条件を満たしたときに、所定の条件を満たしたオブジェクトを消去するので、新しいパズルゲームを提供することができる。
【0119】
なお、この実施例では、各層でリングの大きさの異なるオブジェクトすなわち相似形のオブジェクトを配置するようにしたが、各層で色や形或いはその両方が異なるオブジェクトを配置するようにしてもよい。
【0120】
また、この実施例では、大リングオブジェクトに収まるように、中リングオブジェクトや小リングオブジェクトが重なる場合に、消去条件を満たすようにしたが、これに限定される必要はなく、少なくとも一部が重なる場合に、消去条件を満たすようにしてもよい。
【0121】
さらに、この実施例では、3つの層を設け、各層の描画領域の個数を20(4×5)に設定したが、層は2つ以上であればよく、4つ以上設けることも可能であり、描画領域は層の数やゲームの難易度等に応じて適宜変更可能である。
【0122】
さらにまた、この実施例では、小リングオブジェクトをタッチして、注視点を設定するようにしたが、中リングオブジェクトや大リングオブジェクトをタッチして注視点を設定するようにしてもよい。いずれの場合であっても、注視点は、タッチされたオブジェクトの配置位置(中心座標)に設定され、視点を移動する場合に、視点と注視点との距離が一定に保たれる。ただし、場合によっては、半直線の長さを延ばす必要がある。
【0123】
また、この実施例では、3次元仮想空間において、視線に基づいて、オブジェクトが重なるかどうかを判断するようにしたが、これに限定される必要はない。たとえば、レンダリングにより生成した2次元のゲーム画像に基づいて、重なりを判定することもできる。簡単に説明すると、かかる場合には、すべてのオブジェクトに固有の識別情報(ID)が割り当てられる。また、ポリゴンID用のバッファを別途設けておき、このバッファに、奥のレイヤー(最下層)のオブジェクトから順番に、オブジェクトと同じ半径のサークルをレンダリングする。このとき、既にIDが書き込まれた場所(ピクセル)には、上書きしない。そして、すべてのオブジェクトに対応するサークルをレンダリングした後に、或るIDの領域が別のIDの領域に囲まれているかどうかを、ピクセル単位で調べる。或るIDの領域が別のIDの領域に囲まれている場合には、それらのIDに対応するオブジェクト同士が重なっていることを示す。
【0124】
なお、この実施例では、ポインティングデバイスとして、タッチパネルを用いるようにしたが、ペンタブレット、タッチパッド、コンピュータマウスのような他のポインティングデバイスを用いることも可能である。当然のことながら、従来の操作スイッチを用いることも可能である。ただし、他のポインティングデバイスや操作スイッチを用いる場合には、画面上の指示位置を示すためのマウスポインタのような指示画像を表示する必要がある。
【0125】
また、ゲーム装置の構成は、上述の実施例の構成に限定されるべきでない。たとえば、LCDは1つでもよく、タッチパネルは2つのLCDのそれぞれに設けるようにしてもよい。
【図面の簡単な説明】
【0126】
【図1】図1はこの発明のゲーム装置の一実施例を示す図解図である。
【図2】図2は図1に示すゲーム装置の電気的な構成を示すブロック図である。
【図3】図3は図1に示すゲーム装置の第2のLCDに表示されるゲーム画面の一例を示す図解図である。
【図4】図4は3次元仮想空間に配置されるレイヤー(層)および各層に配置されるオブジェクトを示す図解図である。
【図5】図5は各層に設定されるオブジェクトの描画領域を説明するための図解図である。
【図6】図6は図1に示すゲーム装置の第2のLCDに表示されるゲーム画面の他の例を示す図解図である。
【図7】図7は3次元仮想空間における各層および仮想カメラの位置関係を示す図解図である。
【図8】図8は図1に示すゲーム装置の第2のLCDに表示されるゲーム画面の更新方法を説明するための図解図である。
【図9】図9は3次元仮想空間において各層のオブジェクトが重なるかどうかの重なり判定の方法を説明するための図解図である。
【図10】図10は重なり判定においてオブジェクト同士が重なる条件を説明するための図解図である。
【図11】図11は図2に示すRAMのメモリマップの一例を示す図解図である。
【図12】図12は図11に示すデータ記憶領域の具体的な内容を示す図解図である。
【図13】図13は図2に示すCPUコアのゲーム全体処理の一部を示すフロー図である。
【図14】図14は図2に示すCPUコアのゲーム全体処理の他の一部であって、図13に後続するフロー図である。
【図15】図15は図2に示すCPUコアのゲーム全体処理のその他の一部であって、図13および図14に後続するフロー図である。
【図16】図16は図2に示すCPUコアのゲーム全体処理のさらに他の一部であって、図13ないし図15に後続するフロー図である。
【符号の説明】
【0127】
10 …ゲーム装置
12,14 …LCD
16,16a,16b …ハウジング
22 …操作スイッチ
24 …タッチパネル
26 …スティック
28 …メモリカード
28a …ROM
28b,42 …RAM
34 …CPUコア
36a,36b …スピーカ
44,46 …GPU
48 …I/F回路
50 …LCDコントローラ
52,54 …VRAM
【技術分野】
【0001】
この発明はゲームプログラムおよびゲーム装置に関し、特にたとえば、パズルゲームをプレイするための、ゲームプログラムおよびゲーム装置に関する。
【背景技術】
【0002】
一般的に落ちものゲームとして良く知られているパズルゲームでは、複数の隣り合うオブジェクトの属性が所定条件を満たしたとき、これらのオブジェクトが消去される。たとえば、特許文献1に開示される3次元パズルゲーム装置では、円筒状のゲームフィールド上に種類の異なる複数のパネルが配置され、プレイヤは、円筒状の所望の面を表示させながら、隣り合うパネルを入れ替えて、ゲームをプレイする。そして、同一種類のパネルを縦または横方向に所定数以上揃えると、種類の揃ったパネルが消去される。
【0003】
また、3次元仮想空間で展開されるゲームを、プレイヤの操作に従って、プレイヤが当該3次元仮想空間のどの視点から見るかを定めて、2次元のゲーム画面として表示することは既に周知となっている。たとえば、特許文献2によれば、遊戯者はゲーム装置本体に対するコントロールパッドを操作して、仮想空間内に配置されたプレイヤキャラクタを所望の方向に向けて移動させる。また、プレイヤキャラクタを停止させると、仮想カメラの視点が遊戯者の操作に従って移動可能となる。その仮想カメラの視点の挙動を改良した技術が開示される。
【特許文献1】特開2001−38047
【特許文献2】特開平11−137842
【発明の開示】
【発明が解決しようとする課題】
【0004】
しかし、特許文献1に開示されるような落ちものゲームは、既にアイデアが出尽くした感があり、新しい落ちものゲームが登場しても、プレイヤにとっては新鮮味に欠ける状況になっていると言える。また、特許文献2の技術では、画面中に見えていないオブジェクトを見つけるなど、専らゲームの操作のために仮想カメラの視点を移動させるのであって、仮想カメラの視点の移動そのものをゲームの操作として楽しむものではない。
【0005】
また、これらの背景技術を組み合わせたとしても、たとえば、落ちものゲームにおいて、ゲーム画面を見易くするか、見えていないオブジェクトを見えるようにするために視点を移動させるに留まり、新しいゲームを提供することはできない。
【0006】
それゆえに、この発明の主たる目的は、新規な、ゲームプログラムおよびゲーム装置を提供することである。
【0007】
また、この発明の他の目的は、新規なパズルゲームをプレイできる、ゲームプログラムおよびゲーム装置を提供することである。
【課題を解決するための手段】
【0008】
本発明は、上記の課題を解決するために、以下の構成を採用した。なお、括弧内の参照符号および補足説明等は、本発明の理解を助けるために後述する実施の形態との対応関係を示したものであって、本発明を何ら限定するものではない。
【0009】
請求項1の発明は、表示手段と、操作手段と、記憶手段とを備えたゲーム装置で実行されるゲームプログラムであって、ゲーム装置のコンピュータに、オブジェクト配置ステップ、注視点設定ステップ、視点設定ステップ、ゲーム画像表示ステップ、視線算出ステップ、判断ステップ、および消去ステップを実行させる。オブジェクト配置ステップは、所定数の属性のうちのいずれか1つを有する複数のオブジェクトを記憶手段に記憶されたオブジェクトデータに基づいて3次元空間に配置する。注視点設定ステップは、操作手段の入力に基づいて注視点を設定する。視点設定ステップは、注視点設定ステップによって注視点が設定された後、操作手段の入力に基づいて3次元仮想空間内における視点を設定する。ゲーム画像表示ステップは、注視点設定ステップによって設定された注視点と視点設定ステップによって設定された視点とに基づいて表示手段にゲーム画像を表示する。視線算出ステップは、注視点設定ステップによって設定された注視点と視点設定ステップによって設定された視点とに基づいて視線および当該視線に平行な直線を算出する。判断ステップは、視線算出ステップによって算出された視線または当該視線に平行な直線と交差する複数のオブジェクトの属性が所定の条件を満たすかどうかを判断する。そして、消去ステップは、判断ステップによって所定の条件を満たすことが判断されたとき、当該所定の条件を満たすオブジェクトを消去する。
【0010】
請求項1の発明では、ゲーム装置(10)は、表示手段(14)と、操作手段(22,24)と、記憶手段(72)とを備える。ゲームプログラムは、ゲーム装置のコンピュータ(34を含む。)に、オブジェクト配置ステップ(S1)、注視点設定ステップ(S11)、視点設定ステップ(S13)、ゲーム画像表示ステップ(S3,S15)、視線算出ステップ(S19)、判断ステップ(S55)、および消去ステップ(S57)を実行させる。オブジェクト配置ステップは、所定数の属性のうちのいずれか1つを有する複数のオブジェクトを記憶手段に記憶されたオブジェクトデータ(72d,730〜73n)に基づいて3次元空間(ゲーム空間)に配置する。注視点設定ステップは、操作手段の入力に基づいて注視点を設定する。たとえば、プレイヤが指示したオブジェクトの位置座標が注視点に設定される。視点設定ステップは、注視点設定ステップによって注視点が設定された後、操作手段の入力に基づいて3次元仮想空間内における視点を設定する。つまり、3次元仮想空間における仮想カメラの位置が移動(設定)される。ゲーム画像表示ステップは、注視点設定ステップによって設定された注視点と視点設定ステップによって設定された視点とに基づいて表示手段にゲーム画像を表示する。ここでは、仮想カメラ(視点)から注視点の方向を見た場合の3次元のゲーム画像が仮想スクリーンに投影され、したがって、2次元のゲーム画像が表示手段に表示される。視線算出ステップは、注視点設定ステップによって設定された注視点と視点設定ステップによって設定された視点とに基づいて視線(V)および当該視線に平行な直線(L)を算出する。判断ステップは、視線算出ステップによって算出された視線または当該視線に平行な直線と交差する複数のオブジェクトの属性が所定の条件を満たすかどうかを判断する。消去ステップは、判断ステップによって所定の条件を満たすことが判断されたとき(S55で“YES”)、当該所定の条件を満たすオブジェクトを消去する。
【0011】
請求項1の発明によれば、視点および視線をプレイヤが設定することにより、視線およびそれに平行な直線と交差する複数のオブジェクトが所定の条件を満たすとき、当該オブジェクトを消去するので、オブジェクトの配列と視線またはこれに平行な直線との関係を解くような、今までにないパズルゲームを提供することができる。
【0012】
請求項2の発明は請求項1に従属し、オブジェクト配置ステップは、所定数の互いに平行な層上に、それぞれの層に固有のオブジェクトを、互いに他の層のオブジェクトと重ならない位置に配置する。
【0013】
請求項2の発明では、オブジェクト配置ステップは、所定数の互いに3次元空間における平行な層上に、それぞれの層に固有のオブジェクトを配置する。このとき、各オブジェクトは、互いに他の層のオブジェクトと重ならない位置に配置する。たとえば、各層は、同じ分割の仕方により所定数の領域に分割されており、同じ位置に対応する他の層における描画領域に複数のオブジェクトが配置されないようにするのである。
【0014】
請求項2の発明によれば、オブジェクトの3次元空間における配置に規則性を持たせるので、プレイヤがオブジェクトの配置を想像するときの指標を与えることができる。
【0015】
請求項3の発明は請求項2に従属し、ゲーム画像表示ステップは、少なくとも注視点設定ステップによって注視点が設定されるまで、所定数の互いに平行な層を垂直方向から俯瞰した画像をゲーム画像として表示する。
【0016】
請求項3の発明では、少なくとも注視点設定ステップによって3次元空間における注視点が設定されるまでは、たとえば、デフォルト設定の位置および方向に視点は設定される。このとき、所定数の互いに平行な層を垂直方向から俯瞰した画像がゲーム画像として表示手段に表示される。つまり、視点の設定を行う前では、各オブジェクトが格子状に配列された状態の2次元のゲーム画像が表示される。
【0017】
請求項3の発明によれば、視点の設定を行う前では、2次元のゲーム画像が表示されるため、プレイヤは、オブジェクトの2次元の配列を見て、その3次元仮想空間における配列を想像することができる。
【0018】
請求項4の発明は請求項2または3に従属し、それぞれの層に固有のオブジェクトは、3次元空間を俯瞰した画像をゲーム画像として表示するときの、最上層において大きさの最も大きい属性であり、最下層において大きさの最も小さい属性である。
【0019】
請求項4の発明では、それぞれの層に固有のオブジェクトは、大きさの異なる属性である。大きさのみが異なる場合や相似形である場合が含まれる。3次元空間を俯瞰した画像をゲーム画像として表示するときの、つまり視点側から注視点側を見るときの、最上層においてオブジェクトは大きさが最も大きい属性であり、最下層においてオブジェクトは大きさが最も小さい属性である。
【0020】
請求項4の発明によれば、3次元仮想空間における配置に更なる規則性を持たせるので、3次元空間におけるオブジェクトの配列を把握し易くすることができる。
【0021】
請求項5の発明は請求項2ないし4のいずれかに従属し、消去ステップは、隣接する層において、視線または直線と交差するオブジェクトの大きさが、視点側から注視点側に向かうに従って小さくなり、かつ所定数並んでいるとき、当該オブジェクトを消去する。
【0022】
請求項5の発明では、隣接する層において、視線または直線と交差するオブジェクトの大きさが、視点側から注視点側に向かうに従って小さくなり、かつ所定数並んでいるとき、つまり複数のオブジェクトが所定の順番で並ぶとき、所定の条件を満たすことが判断される。そして、消去ステップは、所定の条件を満たすオブジェクトを消去する。
【0023】
請求項5の発明によれば、オブジェクトの配列が、3次元空間において視点側から注視点側に向かうに従ってオブジェクトの大きさが小さくなるような場合に、当該オブジェクトを消去するので、プレイヤに3次元空間におけるオブジェクトの配列を想像させることができる。新しいゲームの面白さを提供することができる。
【0024】
請求項6の発明は請求項2ないし5のいずれかに従属し、オブジェクト配置ステップは、記憶手段に記憶された、層に垂直な方向について内部が中空で外縁を有するオブジェクトをオブジェクトデータに基づいて配置する。
【0025】
請求項6の発明では、オブジェクトは、3次元空間においてオブジェクトが配置される各層に垂直な方向について内部が中空で外縁を有するオブジェクトである。したがって、各層で大きさの異なる複数のオブジェクトが視点側から注視点側に向かう順番で並ぶとき、当該複数のオブジェクトによってトンネルが形成されるようなゲーム画像が表示される。
【0026】
請求項6の発明によれば、プレイヤは複数のオブジェクトによってトンネルが形成されるように、視点を移動させるので、プレイヤにパズルが解けたときの達成感を味わわせることができる。
【0027】
請求項7の発明は、表示手段と、操作手段と、記憶手段とを備えたゲーム装置であって、オブジェクト配置手段、注視点設定手段、視点設定手段、ゲーム画像表示手段、視線算出手段、判断手段、および消去手段を備える。オブジェクト配置手段は、所定数の属性のうちのいずれか1つを有する複数のオブジェクトを記憶手段に記憶されたオブジェクトデータに基づいて3次元空間に配置する。注視点設定手段は、操作手段の入力に基づいて注視点を設定する。視点設定手段は、注視点設定手段によって注視点が設定された後、操作手段の入力に基づいて3次元仮想空間内における視点を設定する。ゲーム画像表示手段は、注視点設定手段によって設定された注視点と視点設定手段によって設定された視点とに基づいて表示手段にゲーム画像を表示する。視線算出手段は、注視点設定手段によって設定された注視点と視点設定手段によって設定された視点とに基づいて視線および当該視線に平行な直線を算出する。判断手段は、視線算出手段によって算出された視線または当該視線に平行な直線と交差する複数のオブジェクトの属性が所定の条件を満たすかどうかを判断する。そして、消去手段は、判断手段によって所定の条件を満たすことが判断されたとき、当該所定の条件を満たすオブジェクトを消去する。
【0028】
請求項7の発明においても、請求項1の発明と同様に、今までにないパズルゲームを提供することができる。
【発明の効果】
【0029】
この発明によれば、3次元仮想空間におけるオブジェクトの配置をプレイヤに想像させ、その視線やそれに平行な直線との関係を解くことにより、ゲームを進行させるような新しいパズルゲームをプレイすることができる。
【0030】
この発明の上述の目的,その他の目的,特徴および利点は、図面を参照して行う以下の実施例の詳細な説明から一層明らかとなろう。
【発明を実施するための最良の形態】
【0031】
図1を参照して、この発明の実施例であるゲーム装置10は、第1の液晶表示器(LCD)12および第2のLCD14を含む。LCD12およびLCD14は、所定の配置位置となるようにハウジング16に収納される。この実施例では、ハウジング16は、上側ハウジング16aと下側ハウジング16bとによって構成され、LCD12は上側ハウジング16aに収納され、LCD14は下側ハウジング16bに収納される。したがって、LCD12とLCD14とは縦(上下)に並ぶように近接して配置される。
【0032】
なお、この実施例では、表示器としてLCDを用いるようにしてあるが、LCDに代えて、EL(Electronic Luminescence)ディスプレイやプラズマディスプレイを用いるようにしてもよい。
【0033】
図1からも分かるように、上側ハウジング16aは、LCD12の平面形状よりも少し大きな平面形状を有し、一方主面からLCD12の表示面を露出するように開口部が形成される。一方、下側ハウジング16bは、その平面形状が上側ハウジング16aよりも横長に選ばれ、横方向の略中央部にLCD14の表示面を露出するように開口部が形成される。下側ハウジング16bのLCD14の左方には電源スイッチ18が設けられる。
【0034】
また、上側ハウジング16aには、LCD12を挟んで左右に、スピーカ36aおよび36b(図2)のための音抜き孔20aおよび20bが形成される。そして、下側ハウジング16bには、マイク(図示せず)のためのマイク孔20cが形成されるとともに、操作スイッチ22(22a,22b,22c,22d,22e,22Lおよび22R)が設けられる。
【0035】
また、上側ハウジング16aと下側ハウジング16bとは、上側ハウジング16aの下辺(下端)と下側ハウジング16bの上辺(上端)の一部とが回動可能に連結されている。したがって、たとえば、ゲームをプレイしない場合には、LCD12の表示面とLCD14の表示面とが対面するように、上側ハウジング16aを回動させて折りたたんでおけば、LCD12の表示面およびLCD14の表示面に傷がつくなどの破損を防止することができる。ただし、上側ハウジング16aと下側ハウジング16bとは、回動可能に連結せずに、それらを一体的(固定的)に設けたハウジング16を形成するようにしてもよい。
【0036】
操作スイッチ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の上側面の左右角部に配置される。
【0037】
方向指示スイッチ22aは、ディジタルジョイスティックとして機能し、4つの押圧部の1つを操作することによって、ユーザないしプレイヤによって操作可能なプレイヤキャラクタ(またはプレイヤオブジェクト)の移動方向を指示したり、カーソルの移動方向を指示したりする等に用いられる。また、各押圧部には、特定の役割を割り当てることができ、4つの押圧部の1つを操作することによって、割り当てられた役割を指示(指定)することができる。
【0038】
スタートスイッチ22bは、プッシュボタンで構成され、ゲームを開始(再開)したり、一時停止(Pause)したりする等に用いられる。また、セレクトスイッチ22cは、プッシュボタンで構成され、ゲームモードの選択等に用いられる。
【0039】
動作スイッチ22dすなわちAボタンは、プッシュボタンで構成され、方向指示以外の動作、すなわち、プレイヤキャラクタに打つ(パンチ)、投げる、つかむ(取得)、乗る、ジャンプするなどの任意のアクションをさせることができる。たとえば、アクションゲームにおいては、ジャンプ、パンチ、武器を動かす等を指示することができる。また、ロールプレイングゲーム(RPG)やシミュレーションRPGにおいては、アイテムの取得、武器やコマンドの選択および決定等を指示することができる。動作スイッチ22eすなわちBボタンは、プッシュボタンで構成され、セレクトスイッチ22cで選択したゲームモードの変更やAボタン22dで決定したアクションの取り消し等のために用いられる。
【0040】
動作スイッチ22fすなわちXボタン、および動作スイッチ22gすなわちYボタンは、プッシュボタンで構成され、Aボタン22dとBボタン22eだけでは、ゲーム進行ができないときに、補助的な操作に用いられる。ただし、Xボタン22fおよびYボタン22gは、Aボタン22dおよびBボタン22eと同様の操作に用いることも可能である。もちろん、ゲームプレイにおいてXボタン22fとYボタン22gとを必ずしも使用しなくてよい。
【0041】
動作スイッチ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に割り当てられた役割を、他の役割に変更することができる。この実施例では、Lボタン22Lを押すと、方向スイッチ22aに割り当てられたコードが他のコードに変更される。
【0042】
また、LCD14の上面には、タッチパネル24が装着される。タッチパネル24としては、たとえば、抵抗膜方式、光学式(赤外線方式)および静電容量結合式のいずれかの種類のものを用いることができる。また、タッチパネル24は、その上面をスティック26ないしはペン(スタイラスペン)或いは指(以下、これらを「スティック26等」という場合がある。)で、押圧したり、撫でたり、触れたりすることにより操作(タッチ入力)すると、スティック26等の操作位置の座標を検出して、検出した座標(検出座標)に対応する座標データを出力する。
【0043】
なお、この実施例では、LCD14(LCD12も同じ、または略同じ。)の表示面の解像度は256dot×192dotであり、タッチパネル24の検出精度も表示画面に対応して256dot×192dotとしてあるが、タッチパネル24の検出精度は表示画面の解像度よりも低くてもよく、高くてもよい。
【0044】
LCD12およびLCD14には異なるゲーム画面が表示されてもよい。たとえば、レースゲームでは一方のLCDに運転席からの視点による画面を表示し、他方のLCDにレース(コース)全体の画面を表示することができる。また、RPGでは、一方のLCDにマップやプレイヤキャラクタ等のキャラクタを表示し、他方のLCDにプレイヤキャラクタが所有するアイテムを表示することができる。さらに、一方のLCD(この実施例では、LCD14)にゲームの操作画面(ゲーム画面)を表示し、他方のLCD(この実施例では、LCD12)に当該ゲームに関する情報(得点やレベルなど)を含む他のゲーム画面を表示することができる。さらには、2つのLCD12およびLCD14を合わせて1つの画面として用いることにより、プレイヤキャラクタが倒さなければならない巨大な怪物(敵キャラクタ)を表示することもできる。
【0045】
したがって、プレイヤはスティック26等でタッチパネル24を操作することにより、LCD14の画面に表示されるプレイヤキャラクタ、敵キャラクタ、アイテムキャラクタ、操作オブジェクトなどの画像を指示(操作)したり、コマンドを選択(入力)したりすることができる。また、3次元ゲーム空間に設けられる仮想カメラ(視点)の方向(視線の向き)を変化させたり、ゲーム画面(マップ)のスクロール(徐々に移動表示)方向を指示したりすることもできる。
【0046】
なお、ゲームの種類によっては、タッチパネル24を用いることにより、その他の入力指示も可能である。たとえば、座標入力指示を入力したり、LCD14において文字,数字,記号等を手書き入力したりすることができる。
【0047】
このように、ゲーム装置10は、2画面分の表示部となるLCD12およびLCD14を有し、いずれか一方(この実施例では、LCD14)の上面にタッチパネル24が設けられるので、2画面(12,14)と2系統の操作部(22,24)とを有する構成になっている。
【0048】
また、この実施例では、スティック26は、たとえば下側ハウジング16bに設けられる収納部(図1では点線で示す)に収納することができ、必要に応じて取り出される。ただし、スティック26を設けない場合には、その収納部も設ける必要はない。
【0049】
さらに、ゲーム装置10はメモリカード(またはカートリッジ)28を含み、このメモリカード28は着脱自在であり、下側ハウジング16bの裏面ないしは下端(底面)に設けられる挿入部30(図1では点線で示す)に挿入される。図1では省略するが、挿入部30の奥部には、メモリカード28の挿入方向先端部に設けられるコネクタ(図示せず)と接合するためのコネクタ32(図2参照)が設けられており、したがって、メモリカード28が挿入部30に挿入されると、コネクタ同士が接合され、ゲーム装置10のCPUコア34(図2参照)がメモリカード28にアクセス可能となる。
【0050】
なお、図1では表現できないが、上側ハウジング16aの音抜き孔20aおよび20bと対応する位置であり、この上側ハウジング16aの内部にはスピーカ36aおよび36b(図2参照)が設けられる。
【0051】
また、図1では省略するが、たとえば、下側ハウジング16bの裏面側には、電池収容ボックスが設けられ、また、下側ハウジング16bの底面側には、音量スイッチ、外部拡張コネクタおよびイヤフォンジャックなどが設けられる。
【0052】
図2はゲーム装置10の電気的な構成を示すブロック図である。図2を参照して、ゲーム装置10は電子回路基板38を含み、この電子回路基板38には上述のCPUコア34等の回路コンポーネントが実装される。CPUコア34は、バス40を介して前述のコネクタ32に接続されるととともに、RAM42、第1のグラフィック処理ユニット(GPU)44、第2のGPU46、入出カインターフエース回路(以下、「I/F回路」という。)48およびLCDコントローラ50が接続される。
【0053】
コネクタ32には、上述したように、メモリカード28が着脱自在に接続される。メモリカード28は、ROM28aおよびRAM28bを含み、図示は省略するが、ROM28aおよびRAM28bは、互いにバスで接続され、さらに、コネクタ32と接合されるコネクタ(図示せず)に接続される。したがって、上述したように、CPUコア34は、ROM28aおよびRAM28bにアクセスすることができるのである。
【0054】
ROM28aは、ゲーム装置10で実行すべきゲームのためのゲームプログラム、画像データ(文字やオブジェクトの画像、背景画像、アイテム画像、アイコン(ボタン)画像、メッセージ画像など)およびゲームに必要な音(音楽)のデータ(音データ)等を予め記憶する。RAM(バックアップRAM)28bは、そのゲームの途中データやゲームの結果データなどを記憶(セーブ)する。
【0055】
RAM42は、バッファメモリないしはワーキングメモリとして使用される。つまり、CPUコア34は、メモリカード28のROM28aに記憶されたプログラム、画像データおよび音データ等をRAM42にロードし、ロードしたプログラムを実行する。また、CPUコア34は、ゲームの進行に応じて一時的に発生するデータ(ゲームデータやフラグデータ)をRAM42に記憶しつつゲーム処理を実行する。
【0056】
なお、ゲームプログラム、画像データおよび音データ等は、ROM28aから一度に全部、または部分的かつ順次的に読み出され、RAM42に記憶(ロード)される。
【0057】
ただし、メモリカード28のROM28aには、ゲーム以外の他のアプリケーションについてのプログラムおよび当該アプリケーションの実行に必要な画像データが記憶される。また、必要に応じて、音(音楽)データが記憶されてもよい。かかる場合には、ゲーム装置10では、当該アプリケーションが実行される。
【0058】
GPU44およびGPU46は、それぞれ、描画手段の一部を形成し、たとえばシングルチップASICで構成され、CPUコア34からのグラフィックスコマンド(作画命令)を受け、そのグラフィックスコマンドに従って画像データを生成する。ただし、CPUコア34は、グラフィックスコマンドに加えて、画像データの生成に必要な画像生成プログラム(ゲームプログラムに含まれる。)をGPU44およびGPU46のそれぞれに与える。
【0059】
また、GPU44には、第1のビデオRAM(以下、「VRAM」という。)52が接続され、GPU46には、第2のVRAM54が接続される。GPU44およびGPU46が作画コマンドを実行するにあたって必要なデータ(画像データ:ポリゴンやテクスチャ等のデータ)は、GPU44およびGPU46が、それぞれ、第1のVRAM52および第2のVRAM54にアクセスして取得する。
【0060】
なお、CPUコア34は、描画に必要な画像データをGPU44およびGPU46を介して第1のVRAM52および第2のVRAM54に書き込む。GPU44はVRAM52にアクセスして描画のための画像データを作成し、GPU46はVRAM54にアクセスして描画のための画像データを作成する。
【0061】
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に出力する。
【0062】
なお、LCDコントローラ50は、VRAM52およびVRAM54から直接画像データを読み出したり、GPU44およびGPU46を介してVRAM52およびVRAM54から画像データを読み出したりする。
【0063】
I/F回路48には、操作スイッチ22,タッチパネル24およびスピーカ36a,36bが接続される。ここで、操作スイッチ22は、上述したスイッチ22a,22b,22c,22d,22e,22g,22Lおよび22Rであり、操作スイッチ22が操作されると、対応する操作信号(操作データ)がI/F回路48を介してCPUコア34に入力される。また、タッチパネル24からの座標データがI/F回路48を介してCPUコア34に入力される。さらに、CPUコア34は、ゲーム音楽(BGM)、効果音またはゲームキャラクタの音声(擬制音)などのゲームに必要な音データをRAM42から読み出し、I/F回路48を介してスピーカ36a,36bから出力する。
【0064】
図3は、図1および図2に示すゲーム装置10を用いて、この実施例の仮想ゲーム(パズルゲーム)をプレイする場合に、LCD14に表示されるゲーム画面100の一例を示す。このゲーム画面100は、ゲームの開始時または画面更新時に表示される初期画面である。初期画面100には、種類(属性)の異なる複数のオブジェクトが格子状に隙間無く並んで表示される。具体的には、大リングオブジェクト102、中リングオブジェクト104および小リングオブジェクト106が、不規則(ランダム)に、それらの中心が縦方向および横方向のそれぞれで一直線上に並ぶように、表示される。この実施例では、大リングオブジェクト102、中リングオブジェクト104および小リングオブジェクト106は、それぞれ、中空で外縁を有するリング状のオブジェクトである。つまり、大リングオブジェクト102、中リングオブジェクト104および小リングオブジェクト106は、相似形である。また、この実施例では、オブジェクトの属性は、リングの種類(大リングオブジェクト102,中リングオブジェクト104,小リングオブジェクト106の別、または、大きさ(半径))、描画(配置)されるレイヤー(層)の種類(後述する、最上層200a,中間層200b,最下層200c)および層における描画領域の番号(インデックス番号)を意味する。
【0065】
図4(A),(B),(C)に示すように、大リングオブジェクト102は最上層200aに配置され、中リングオブジェクト104は中間層200bに配置され、小リングオブジェクト106は最下層200cに配置される。各層は、同じ大きさ(面積)を有し、互いに平行であり、各層の基準点(たとえば、層の中心点や左上頂点)のワールド座標(3次元のゲーム空間の座標)のX座標およびY座標が一致するように配置される。ここで、図4(A)〜図4(C)に示すように、各層の横方向がワールド座標のX軸方向であり、各層の縦方向がワールド座標のY軸方向であり、そして、ワールド座標のX軸およびY軸に垂直な方向がワールド座標のZ軸に相当する。また、図4(A)〜図4(C)に示すように、右方向がワールド座標のX軸のプラス方向であり、上方向がワールド座標のY軸のプラス方向であり、そして、図面(紙面)に対して垂直上方向がワールド座標のZ軸のプラス方向である。ただし、最上層200aの配置されるワールド座標のZ座標が最大であり、最下層200cの配置されるワールド座標のZ座標が最小であり、中間層200bはそれらの間に配置される(図6参照)。
【0066】
また、図4(A)〜図4(C)を参照して分かるように、各層では、他の層に配置されたオブジェクト(102,104,106)と重ならないように、各オブジェクト(102,104,106)が配置される。つまり、XY平面において、同じ位置(X座標およびY座標)に複数のオブジェクト(102,104,106)が配置されることはない。一方で、XY平面に着目したとき、必ずいずれかの層にオブジェクトが配置される。具体的には、図5に示すように、各層には、複数の正方形の描画領域(4×5)が設定されており、異なる層で同じ位置(インデックス番号)の描画領域に、複数のオブジェクト(102,104,106)が配置されることはない。たとえば、最上層200aの描画領域[1]に大リングオブジェクト102が配置されている場合には、中間層200bおよび最下層200cの描画領域[1]には、中リングオブジェクト104および小リングオブジェクト106は配置されない。同様に、中間層200bの描画領域[2]に中リングオブジェクト104が配置されている場合には、最上層200aおよび最下層200cの描画領域[2]には、大リングオブジェクト102および小リングオブジェクト106は配置されない。さらに、最下層200cの描画領域[4]に小リングオブジェクト106が配置されている場合には、最上層200aおよび中間層200bの描画領域[4]には、大リングオブジェクト102および中リングオブジェクト104は配置されない。他の描画領域についても同様である。また、必ずいずれかの層で描画領域にオブジェクトが配置されるので、俯瞰して見たときに、隙間無くオブジェクトが配置されているように見える。
【0067】
また、図示は省略するが、オブジェクト(102,104,106)は、各層の描画領域の中心座標に、当該オブジェクト(102,104,106)のローカル座標(オブジェクトの形状を定義するための、オブジェクト固有の座標)の中心座標を置くように、配置される。
【0068】
なお、図5においては、各描画領域にインデックス番号を付して示してあるが、これに限定される必要はない。異なる層で同じ位置の描画領域に同じインデックス番号が付されていれば、層内におけるインデックス番号の並び順はランダムでも構わない。
【0069】
図示は省略するが、ゲーム100が表示(更新)された当初では、仮想カメラ(視点)210(図6参照)は、最上層200a側に配置され、その視線は各層(200a,200b,200c)を正面から見るように、各層(200a,200b,200c)の中心を通りZ軸に平行な直線上に設定される。つまり、図3に示す初期画面100が表示されるとき、仮想カメラ210の位置(視点)のX座標およびY座標は、各層の中心位置のX座標およびY座標と一致し、仮想カメラ210の注視点のX座標およびY座標も、各層の中心位置のX座標およびY座標と一致する。したがって、各層(200a,200b,200c)を俯瞰的に見るように、仮想カメラ210が設定される。このため、図3に示したような初期画面100が表示されるのである。以下、視点変更により、斜めから層を見た場合のゲーム画面100(3次元視点のゲーム画面100)と区別するために、図3に示すようなゲーム画面100を「俯瞰視点のゲーム画面100」ということがある。ただし、俯瞰視点のゲーム画面100を表示する場合の仮想カメラ210の位置(初期位置)および向き(注視点)は予め設定されている。
【0070】
たとえば、図6(A)に示すように、プレイヤがスティック26を用いて所望のオブジェクト(102,104,106)をタッチ(指示)すると、当該オブジェクト(102,104,106)が注視点として設定される。厳密に言うと、プレイヤが指示したオブジェクト(102,104,106)のワールド座標系における位置座標(中心座標)が、仮想カメラ210の注視点として設定されるのである。この実施例では、小リングオブジェクト106をタッチすると、注視点が設定される場合についてのみ説明するが、他のオブジェクト(102,104)についても同様である。続いて、図6(B)に示すように、プレイヤがスティック26をスライドさせると、そのスライド操作に従って仮想カメラ210の位置が移動される。つまり、視点が移動される。ただし、仮想カメラ210の注視点は、プレイヤが先に指示した小リングオブジェクト106の位置座標に固定されている。また、図示は省略するが、仮想カメラ210の視線の長さ(視点と注視点との距離)は、仮想カメラ210の初期位置と最下層200cとの直線距離(以下、「距離q」という。)に固定されており、したがって、仮想カメラ210は当該距離qを半径とする球面に沿うように3次元仮想空間内を移動される。
【0071】
このパズルゲームでは、プレイヤによって仮想カメラ210が移動され、その視線または視線に平行な直線と交差する複数のオブジェクト(102,104,106)が所定の条件を満たすとき、当該複数のオブジェクト(102,104,106)を消去する。この実施例では、図7に示すように、仮想カメラ(視点)210の視点が決定されたとき、仮想カメラ210側(視点側)から注視点側に向かって、大リングオブジェクト102,中リングオブジェクト104および小リングオブジェクト106の順で、オブジェクト(102,104,106)が視線または視線に平行な直線と交差するとき、所定の条件(消去条件)を満たすことが判定される。このとき、大リングオブジェクト102,中リングオブジェクト104および小リングオブジェクト106は、互いに重なる。ただし、この実施例では、大リングオブジェクト102の中に中リングオブジェクト104が表示され、さらに、中リングオブジェクト104の中に小リングオブジェクト106が表示されるとき、仮想カメラ210側から、大リングオブジェクト102,中リングオブジェクト104および小リングオブジェクト106の順でオブジェクト(102,104,106)が重なることを意味する。したがって、図6(B)では分かり難いが、オブジェクト(102,104,106)が上述の順番に従って重なるとき、ゲーム画面100では、点線の丸で囲む箇所のように、大リングオブジェクト102,中リングオブジェクト104および小リングオブジェクト106によってトンネルが形成されるように、表示される。
【0072】
そして、消去条件を満たしたオブジェクト(102,104,106)は、3次元仮想空間から消去される。したがって、図8(A)に示すように、一部のオブジェクト(102,104,106)が消去されたゲーム画面100が表示される。その後、渦巻状に(時計周りに)、各オブジェクト(102,104,106)を詰める(移動させる)とともに、消去したオブジェクト(102,104,106)の数(3)と同数の任意の大きさのオブジェクト(102,104,106)が追加される。したがって、図8(B)に示すように、ゲーム画面100が更新される。
【0073】
たとえば、この実施例のパズルゲームでは、第1の一定時間(たとえば、3分)以内に、所定数以上のオブジェクト(102,104,106)が消去された場合には、ゲームクリアとなる。一方、第1の一定時間以内に、所定数のオブジェクト(102,104,106)が消去されていない場合には、ゲームオーバとなる。ただし、ゲームクリアの条件やゲームオーバの条件は、これに限定される必要はなく、ゲームの開発者や設計者が任意に設定できる。
【0074】
なお、図示は省略するが、オブジェクト(102,104,106)が消去されない場合にも、ゲーム画面100は更新される。これは、オブジェクト(102,104,106)を消去することができない手詰まり状態を回避するためである。具体的には、ゲームを開始したり、ゲーム画面100を更新したりしてから、プレイヤが何ら操作せずに、第1の一定時間よりも短い第2の一定時間(たとえば、1分)が経過すると、ゲーム画面100が更新される。たとえば、ゲーム画面100の中央およびその近傍(ランダムでもよい。)に表示されている1または複数のオブジェクト(102,104,106)が消去され、消去されていないオブジェクト(102,104,106)が渦巻状に詰められるとともに、消去したオブジェクト(102,104,106)と同数の任意のオブジェクト(102,104,106)が追加される。
【0075】
ここで、大リングオブジェクト102、中リングオブジェクト104、小リングオブジェクト106の順番で重なっているか否かを判定(重なり判定)する方法について説明する。図9に示すように、重なり判定では、まず、視線のベクトル(視線ベクトル)Vが計算され、次に、この視線ベクトルVに平行であり、着目するオブジェクト(着目オブジェクト)の位置座標Pを始点とする半直線Lが計算される。ここで、着目オブジェクトは、最上層200aの或る描画領域に描画(配置)された大リングオブジェクト108を意味する。ただし、視線ベクトルVは、視点の座標を始点とし、注視点の座標を終点とするベクトルであり、注視点の座標から視点の座標を減算することにより、求められる。また、半直線L(ベクトル)は、視線ベクトルVに着目オブジェクトの位置座標Pを加算することにより、求められる。
【0076】
次に、着目するオブジェクトに重なるかどうかを判定する対象のオブジェクト(対象オブジェクト)の位置Qと半直線Lとの距離dを算出する。この実施例では、対象オブジェクトは、中間層200bの或る描画領域に配置された中リングオブジェクト104または最下層200cの或る描画領域に描画(配置)された小リングオブジェクト106を意味する。図9では、中オブジェクト104が対象オブジェクトである場合について示してある。ここで、図10に示すように、対象オブジェクトが着目オブジェクトに重なるためには、距離dに対象オブジェクト(図9では、中リングオブジェクト104)の半径rを加算した長さ(距離)Dが、着目オブジェクト(この実施例では、大リングオブジェクト102)の半径R以下であれば良いことが分かる。したがって、図9に示すような場合には、距離dは着目オブジェクトの半径Rを超えていることは明らかであり、対象オブジェクトは、着目オブジェクトに重ならないと判定される。
【0077】
ただし、重なり判定は、描画領域毎に行われる。この実施例では、図5に示したインデックス番号に従って重なり判定の処理(重なり判定処理)が実行される。たとえば、最上層200aにおいて、インデックス番号が1番から順に、描画領域に大リングオブジェクト102が描画されているかどうかが判断される。最上層200aの或る描画領域に、大リングオブジェクト102が描画されていない場合には、重なり判定処理を実行せずに、次のインデックス番号の描画領域に大リングオブジェクト102が描画されているかどうかが判断される。一方、最上層200aの或る描画領域に、大リングオブジェクト102が描画されている場合には、当該大リングオブジェクト102を着目オブジェクトとして、重なりの判定処理を実行する。重なり判定処理では、着目オブジェクトに、対象オブジェクトとしての中間層200bに描画された中リングオブジェクト104または最下層200cに描画された小リングオブジェクト106が重なるかどうかが判断される。中間層200bおよび最下層200cでは、インデックス番号の順番に従って、オブジェクト(104,106)が描画されているかどうかを判断し、描画されているオブジェクト(104,106)すなわち対象オブジェクトが着目オブジェクトに重なるか否かが判断される。このような重なり判定処理が、中間層200bおよび最下層200cのすべての描画領域(インデックス番号1〜20)について実行される。1の着目オブジェクトについて重なり判定処理を終えると、次の着目オブジェクトについて重なり判定処理が実行され、最上層200aのすべての描画領域(インデックス番号1〜20)について重なり判定処理が実行される。
【0078】
ただし、上述したように、異なる層の同じインデックス番号の描画領域には、複数のオブジェクト(102,104,106)は描画されないため、重なり判定処理では、着目オブジェクト(大リングオブジェクト102)が描画された描画領域については重なり判定処理を実行しない。また、同様の理由により、中間層200bの描画領域に対象オブジェクト(中リングオブジェクト104)が描画されている場合には、最下層200cの当該描画領域については重なり判定処理を実行しない。逆に、最下層200cの描画領域に対象オブジェクト(小リングオブジェクト106)が描画されている場合には、中間層200bの当該描画領域については重なり判定処理を実行しない。このように、無駄な処理を省いて、重なり判定処理の負荷が軽減される。
【0079】
図11は図2に示したRAM42のメモリマップの一例を示す図解図である。この図11を参照して、RAM42はプログラム記憶領域70およびデータ記憶領域72を含む。プログラム記憶領域70は、ゲームプログラムを記憶し、このゲームプログラムは、ゲームメイン処理プログラム70a,画像生成プログラム70b,画像表示プログラム70c,画像更新プログラム70d,指示位置検出プログラム70e,注視点設定プログラム70f,視点設定プログラム70g,視線計算プログラム70h、重なり判定プログラム70iおよび消去条件判定プログラム70jなどで構成される。
【0080】
ゲームメイン処理プログラム70aは、この実施例のパズルゲームのメインルーチンを処理するためのプログラムである。画像生成プログラム70bは、後述するオブジェクト配置データ72dおよび画像データ72hを用いて、ゲーム画像を生成するためのプログラムである。具体的には、まず、3次元仮想空間(ワールド座標)にそのZ軸方向に直交する方向に並べるように、最上層200a,中間層200b,最下層200cが配置される。次に、異なる層で同じ位置(インデックス番号)の描画領域に複数のオブジェクト(102,104,106)が描画されないように、各層にオブジェクト(102,104,106)が描画される。ただし、描画されるオブジェクト(102,104,106)の総数は、描画領域の総数(この実施例では、20)と一致する。また、図示は省略するが、LCD12に表示する他のゲーム画面についてのゲーム画像も生成される。たとえば、他のゲーム画面には、プレイヤのスコアやレベルなどの情報が表示される。
【0081】
画像表示プログラム70cは、画像生成プログラム70bによって生成されたゲーム画像をゲーム画面としてLCD12やLCD14に表示するためのプログラムである。ただし、LCD14に表示されるゲーム画面100は、後述する視点位置データ72cが示す視点位置から、後述する注視点位置データ72bが示す注視点を見た場合のゲーム画像である。画像更新プログラム70dは、ゲーム画像を更新するためのプログラムである。上述したように、プレイヤの操作によってオブジェクト(102,104,106)が消去された場合やプレイヤが何ら操作しない時間が第2の一定時間を経過した場合に、ゲーム画像が更新される。したがって、ゲーム画面100の表示が変更される。
【0082】
指示位置検出プログラム70eは、タッチパネル24からの座標データに基づいてLCD14上の指示位置を検出するためのプログラムである。この指示位置検出プログラム70eは、プレイヤがタッチパネル24にタッチを開始(タッチ開始)してからタッチを終了(タッチ終了)するまでに、1フレーム(フレーム:画面更新単位時間(1/60秒))毎に検出される座標データを、後述する操作データバッファ72aに記憶(一時記憶)する。上述したように、この実施例では、LCD14の解像度と、タッチパネル24の検出精度とを同じにしてあるため、それぞれの座標系を同じに設定しておけば、タッチパネル24から入力されるタッチ位置の座標データを、そのままLCD14上の(ゲーム画面100における)指示位置の座標データとして使用することができる。
【0083】
注視点設定プログラム70fは、指示位置検出プログラム70eによって検出されたタッチ開始位置の座標データが示す座標に表示されるオブジェクト(102,104,106)のワールド座標の位置座標を注視点に設定するためのプログラムである。ただし、ゲーム開始時やゲーム画像(ゲーム画面100)の更新時では、注視点は最下層200c(最上層200aまたは中間層200bでもよい。)の中心位置に設定される。視点設定プログラム70gは、指示位置検出プログラム70eによって検出されるタッチ位置の座標データに従って、仮想カメラ210(視点)のワールド座標の位置座標を設定するためのプログラムである。この実施例では、視点設定プログラム70gは、タッチパネル24から入力される座標データが示す2次元の位置座標(X座標およびY座標)に対応するワールド座標のX座標およびY座標を求める。たとえば、LCD14の座標系の原点と、タッチパネル24の座標系の原点と、各層の座標系(XY平面のみ)の原点とを同じ点(たとえば、左上頂点)に設定しておけば、タッチパネル24から入力される座標データが示すX座標およびY座標を、ワールド座標におけるX座標およびY座標として用いることができる。そして、視線の長さが距離qになるように、Z座標を求める。したがって、仮想カメラ210の位置座標が決定される。ただし、ゲーム開始時やゲーム画面100の更新時では、視点は初期位置に設定される。なお、上述したように、このとき、注視点は最下層200cの中心位置である。
【0084】
視線計算プログラム70hは、視点位置データ72cが示す視点の位置座標を始点とし、注視点位置データ72bが示す注視点の位置座標を終点とする視線ベクトルVを計算するためのプログラムである。重なり判定プログラム70iは、視線計算プログラム70hに従って算出された視線ベクトルVを用いて、対象オブジェクト(104,106)が着目オブジェクト(102)に重なるか否かを判定するためのプログラムである。言い換えると、重なり判定プログラム70iは、視線またはそれに平行な直線がオブジェクト(102,104,106)と交差するかどうかを判定するのである。
【0085】
消去条件判定プログラム70jは、重なり判定プログラム70iに従って重なることが判定されたオブジェクト(102,104,106)が消去条件を満たすかどうかを判定するためのプログラムである。この実施例では、大リングオブジェクト102,中リングオブジェクト104,小リングオブジェクト106が、視点側から注視点側に向かう順番で重なる場合に、消去条件が満たされる。それ以外では、消去条件は満たされない。
【0086】
なお、図示は省略するが、ゲームプログラムは、音出力プログラムやバックアッププログラムなども含む。音出力プログラムは、ゲームキャラクタの音声、効果音、音楽(BGM)のように、ゲームに必要な音を出力するためのプログラムである。バックアッププログラムは、プレイヤの指示やゲームイベントに従って、ゲームデータ(途中データ,結果データ)をメモリカード30にセーブするためのプログラムである。
【0087】
図12は図11に示したデータ記憶領域72の内容の一例を示す図解図である。図12を参照して、データ記憶領域72には、操作データバッファ72aが設けられる。また、データ記憶領域72には、注視点位置データ72b,視点位置データ72c,オブジェクト配置データ72d,消去候補データ72e,ゲームクリア条件データ72f,ゲームオーバ条件データ72g,画像データ72hおよびオブジェクト消去数データ72iが記憶される。さらに、データ記憶領域72には、画面更新タイマ72kおよびプレイ時間タイマ72jが設けられる。
【0088】
操作データバッファ72aは、上述したように、指示位置検出プログラム70eに従って検出された座標データを一時記憶するための領域である。注視点位置データ72bは、3次元仮想空間における注視点の位置座標についての座標データである。視点位置データ72cは、3次元仮想空間における視点すなわち仮想カメラ210の位置座標についての座標データである。
【0089】
オブジェクト配置データ72dは、各オブジェクト(102,104,106)を配置するためのデータであり、オブジェクト1データ730,オブジェクト2データ732,…,オブジェクトnデータ73nを含む。オブジェクト1データ730は、位置データ730aおよび属性データ730bを含む。位置データ730aは、当該オブジェクト1が配置される層における位置座標(XY座標)についての座標データである。また、属性データ730bは、当該オブジェクト1の種類(大リングオブジェクト102,中リングオブジェクト104,小リングオブジェクト106の別、または、大きさ(半径))、配置される層の種類(最上層200a,中間層200b,最下層200c)および配置位置(インデックス番号)についてのデータである。ただし、この実施例では、オブジェクト1はインデックス番号「1」に描画されるオブジェクト(102,104,106)を意味する。つまり、図中の数値nはインデックス番号(n=1,2,3,…,20)を意味する。
【0090】
なお、詳細な説明は省略するが、他のオブジェクト2データ732,…,オブジェクトnデータ73nについても同様である。
【0091】
消去候補データ72eは、消去候補のオブジェクト(102,104,106)に関するデータである。この実施例では、着目オブジェクト(102)に重なることが判定された対象オブジェクト(104,106)の識別情報(たとえば、オブジェクト1データ730,…,オブジェクトnデータ72nのポインタ。以下、同じ。)が、当該着目オブジェクトの識別情報に対応づけられたデータが消去候補データ72eとして記憶される。
【0092】
ゲームクリア条件データ72fは、ゲームクリアを判定するための条件であり、この実施例では、第1の一定時間(3分)内に、一定数以上のオブジェクト(102,104,106)が消去されることがゲームクリアの条件である。ゲームオーバ条件データ72gは、ゲームオーバを判定するための条件であり、この実施例では、第1の一定時間内に、一定数以上のオブジェクト(102,104,106)が消去されていないことがゲームオーバの条件である。画像データ72hは、ゲーム画像を生成するためのポリゴンデータやテクスチャデータなどである。オブジェクト消去数データ72jは、後述するプレイ時間タイマ72jによって第1の一定時間(3分)がカウントされる間に、消去されたオブジェクト(102,104,106)の数(消去数k)を示す数値データである。
【0093】
なお、ゲームクリアの条件やゲームオーバの条件は、単なる例示であり、これに限定される必要はない。これらは、ゲームの開発者や設計者が適宜設定する条件である。また、これらの条件は固定される必要もなく、ゲームの(プレイヤの)レベル等に応じて適宜変更されてもよい。
【0094】
プレイ時間タイマ72jは、プレイヤがパズルゲームをプレイしている時間(第1の一定時間)をカウントするためのタイマである。このプレイ時間タイマ72jは、ゲーム開始時にリセットおよびスタートされる。また、画面更新タイマ72kは、画面更新時間(第2の一定時間(1分))をカウントするためのタイマである。この画面更新タイマ72kは、ゲームの開始時またはゲーム画面100が更新された時に、リセットおよびスタートされる。
【0095】
なお、図示は省略するが、データ記憶領域72には、音データやゲームデータなどが記憶されるとともに、ゲーム処理に必要な他のタイマ(カウンタ)或いはレジスタまたはフラグなども設けられる。
【0096】
具体的には、図2に示したCPUコア34が図13ないし図16に示すフロー図に従ってゲーム全体処理(メインルーチン)を実行する。図13に示すように、CPUコア34はゲーム全体処理を開始すると、ステップS1で、初期設定を実行する。ここでは、たとえば、操作データバッファ72aなどのバッファをクリアしたり、プレイ時間タイマ72jや画面更新タイマ72kなどのタイマ(カウンタ)或いはレジスタまたはフラグなどをリセットしたりする。図示は省略するが、ここでは、オブジェクト消去数データ72iがリセットされる(消去数k=0)。また、同様に、図示は省略するが、プレイ時間タイマ72jおよび画面更新タイマ72kはリセットされた後にスタートされる。さらに、ゲーム画面100(初期画面)を表示するためのオブジェクト配置データ72dの初期値が設定される。ただし、前回の続きからゲームを開始する場合には、レジスタやフラグには、メモリカード30に記憶されたゲームデータに従う値が設定される。
【0097】
次のステップS3では、図3に示したような、俯瞰視点のゲーム画面100(初期画面)を表示する。続いて、ステップS5では、操作入力が有るかどうかを判断する。つまり、タッチパネル24から座標データが入力されたかどうかを判断する。ただし、このステップS5の処理は、プレイヤがタッチを開始したかどうかの判断である。ステップS5で“NO”であれば、つまり操作入力が無ければ、ステップS7で、画面更新タイマ72kのカウント値を参照して、第2の一定時間(1分)が経過したかどうかを判断する。
【0098】
ステップS7で“NO”であれば、つまり第2の一定時間が経過していなければ、そのままステップS3に戻る。一方、ステップS7で“YES”であれば、つまり第2の一定時間が経過していれば、ステップS9で、オブジェクト(102,104,106)の配置を更新して、ステップS5に戻る。つまり、ステップS9の処理によって、ゲーム画像(ゲーム画面100)が更新される。図示は省略するが、ステップS9の処理を実行した後、画面更新タイマ72kは、リセットおよびスタートされる。
【0099】
また、ステップS5で“YES”であれば、つまり操作入力があれば、ステップS11で、注視点を検出し、設定する。この実施例では、タッチ開始位置が示すオブジェクト(102,104,106)の位置座標が注視点として設定され、その注視点の位置座標の座標データが注視点位置データ72bとしてデータ記憶領域72に記憶される。続いて、ステップS13では、操作入力に応じて視点を設定する。ここでは、タッチパネル24から入力される座標データが操作データバッファ72aに順次記憶され、上述したように、この座標データが示すタッチ位置(位置座標)に対応する3次元仮想空間(ゲーム空間)の指示位置を算出し、当該指示位置を視点の位置座標に設定する。つまり、3次元仮想空間の指示位置の位置座標の座標データが視点位置データ72cとしてデータ記憶領域72に記憶される。したがって、タッチ位置が変化すると、視点(視点位置データ72c)も更新される。
【0100】
次のステップS15では、図6(B)に示したような、3D視点のゲーム画面100を表示する。つまり、仮想カメラ210は、その向きが注視点位置データ72bの示す注視点の方向に設定されたままで、視点位置データ72cが示す視点(仮想カメラ210)の位置に配置(移動)される。そして、仮想カメラ210で撮影される3次元仮想空間の様子が2次元のゲーム画面100で表示される。つまり、仮想カメラ210から見た3次元のゲーム画像が投影変換(仮想スクリーンに投影)され、投影変換された2次元のゲーム画像がゲーム画面100として表示されるのである。
【0101】
続いて、ステップS17では、視点が確定したかどうかを判断する。つまり、タッチを終了したかどうかを判断する。なお、タッチパネル24からの座標データが無くなったとき、タッチを終了したと判断する。ステップS17で“NO”であれば、つまり視点が確定していなければ、視点の変更中であると判断して、そのままステップS13に戻る。一方、ステップS17で“YES”であれば、つまり視点が確定すれば、ステップS19で、視線を計算する。ここでは、CPUコア34は、注視点位置データ72bおよび視点位置データ72cを参照して、視点の位置座標を始点とし、注視点の位置座標を終点とする視線ベクトルVを計算する。
【0102】
図14に示すように、次のステップS21では、変数iに初期値を設定し(i=1),変数Vに視線ベクトルVを設定し、変数numにオブジェクト(102,104,106)の総数(20)を設定する。ここで、変数iは、最上層200aの描画領域のインデックス番号に相当する。この実施例では、最上層200aの描画領域は、area[1][i]で示される。また、後述するように、中間層200bの描画領域はarea[2][j]で示され、最下層200cの描画領域はarea[3][j]で示される。
【0103】
続いて、ステップS23では、変数iが変数numよりも大きいかどうかを判断する。つまり、重なり判定処理を終了したかどうかを判断する。ステップS23で“YES”であれば、つまり変数iが変数numよりも大きければ、重なり判定処理を終了したと判断して、図16に示すステップS55に進む。
【0104】
しかし、ステップS23で“NO”であれば、つまり変数iが変数num以下であれば、重なり判定処理を終了していないと判断し、ステップS25で、描画領域area[1][i]に大リングオブジェクト102が描画されているかどうかを判断する。ここでは、CPUコア34は、オブジェクト1データ730〜オブジェクトnデータ73nに含まれる属性データを参照して、その判断処理を実行する。以下、各描画領域に描画されたオブジェクト(102,104,106)を判断する場合について、同様である。
【0105】
ステップS25で“NO”であれば、つまり描画領域area[1][i]に大リングオブジェクト102が描画されていなければ、次の描画領域area[1][i]について重なり判定処理を実行するべく、ステップS31に進む。つまり、描画領域area[1][i]に大リングオブジェクト102が描画されていない場合には、この描画領域area[1][i]については、重なり判定処理を実行しない。これによって、CPU34の計算負荷が軽減される。
【0106】
一方、ステップS25で“YES”であれば、つまり描画領域area[1][i]に大リングオブジェクト102が描画されていれば、ステップS27で、変数Rに大リングオブジェクト102の半径を設定し、視線ベクトルVの始点が描画領域area[1][i]に描画された大リングオブジェクト102(着目オブジェクト)の位置座標と一致するように移動した半直線Lを設定し(L=着目オブジェクトの位置+V)、そして、変数jに初期値を設定する(j=1)。
【0107】
続くステップS29では、変数jが変数numよりも大きいかどうかを判断する。つまり、描画領域area[2][j]および描画領域[3][j]のすべてについて、重なり判定処理を終了したかどうかを判断する。ステップS29で“YES”であれば、つまり変数jが変数numよりも大きければ、描画領域area[2][j]および描画領域[3][j]のすべてについて、重なり判定処理を終了したと判断して、次の描画領域area[1][i]について重なり判定処理を実行するべく、ステップS31で、変数iをインクリメントして(i=i+1)、ステップS23に戻る。
【0108】
しかし、ステップS29で“NO”であれば、つまり変数jが変数num以下であれば、描画領域area[2][j]および描画領域[3][j]のすべてについて、重なり判定処理を終了していないと判断して、ステップS33で、変数iと変数jとが等しいかどうかを判断する。これは、着目オブジェクトとしての大リングオブジェクト102が描画された描画領域と同じ位置(インデックス番号)の中間層200bおよび最下層200cの描画領域については、重なり判定処理を実行しないためである。
【0109】
ステップS33で“YES”であれば、つまり変数iと変数jとが等しければ、図15に示すステップS53に進む。一方、ステップS33で“NO”であれば、つまり変数iと変数jとが等しくなければ、ステップS35で、描画領域[2][j]に中リングオブジェクト104が描画されているかどうかを判断する。ステップS35で“YES”であれば、つまり描画領域[2][j]に中リングオブジェクト104が描画されていれば、当該中リングオブジェクト104を対象オブジェクトとして重なり判定を行うべく、図15のステップS37に進む。一方、ステップ35で“NO”であれば、つまり、描画領域には俯瞰画面から見たときに隙間無くオブジェクトが描画されるので、描画領域[3][j]に小リングオブジェクトが描画されていることになり、当該小リングオブジェクト106を対象オブジェクトとして重なり判定を行うべく、図15に示すステップS41に進む。
【0110】
図15に示すように、ステップS37では、変数rに中リングオブジェクト104の半径を設定し、ステップS39で、描画領域[2][j]に描画された中リングオブジェクト104の位置P(位置座標)を取得して、ステップS45に進む。また、ステップS41では、変数rに小リングオブジェクト106の半径を設定し、ステップS43で、描画領域[3][j]に描画された小リングオブジェクト106の位置Pを取得して、ステップS45に進む。
【0111】
ステップS45では、半直線Lと位置Pとの距離dを算出し、ステップS47で、距離dと変数rとを加算することにより、距離Dを算出する(D=d+r)。そして、ステップS49で、距離Dが変数R以下であるかどうかを判断する。つまり、対象オブジェクトが着目オブジェクトに重なるかどうかを判断する。ステップS49で“NO”であれば、つまり距離Dが変数Rよりも大きければ、対象オブジェクトが着目オブジェクトに重ならないと判断して、ステップS53で、変数jをインクリメントして(j=j+1)、図14に示したステップS29に戻る。
【0112】
また、ステップS49で“YES”であれば、つまり距離Dが変数R以下であれば、対象オブジェクトが着目オブジェクトに重なると判断し、ステップS51で、今回重なりを判定した、描画領域area[2][j]に描画された中リングオブジェクト104、または、描画領域area[3][j]に描画された小リングオブジェクト106を、描画領域area[1][i]に関連付けて消去候補として設定して、ステップS53に進む。つまり、着目オブジェクトの識別情報と対象オブジェクトの識別情報とが関連付けられた消去候補データ72eがデータ記憶領域72に記憶される。
【0113】
上述したように、重なり判定処理を終了すると、ステップS23で“YES”となり、図16に示すステップS55で、消去条件を満たすオブジェクト(102,104,106)があるかどうかを判断する。ここでは、CPUコア34は、消去候補データ72eを参照して、同一の大リングオブジェクト102に関連づけられた中リングオブジェクト104と小リングオブジェクト106とが存在するかどうかを判断する。そして、CPUコア34は、同一の大リング102に関連づけられた中リングオブジェクト104と小リングオブジェクト106とが存在する場合には、消去条件を満たすと判断する。一方、CPUコア34は、中リングオブジェクト104と小リングオブジェクト106とが異なる大リングオブジェクト102に関連付けられている場合、2つの中リングオブジェクト104が同一の大リングオブジェクト102に関連づけられている場合、2つの小リングオブジェクト106が同一の大リングオブジェクト102に関連づけられている場合には、消去条件を満たさないと判断する。
【0114】
ステップS55で“NO”であれば、つまり消去条件を満たすオブジェクト(102,104,106)が存在しなければ、図13に示したステップS3に戻る。一方、ステップS55で“YES”であれば、つまり消去条件を満たすオブジェクト(102,104,106)が存在すれば、ステップS57で、オブジェクトの消去処理を実行する。ここでは、消去条件を満たす大リングオブジェクト102,中リングオブジェクト104および小リングオブジェクト106の組を消去する。複数の組が存在する場合には、当該複数の組のオブジェクト(102,104,106)が消去される。具体的には、消去すべきオブジェクト(102,104,106)についてのオブジェクト1データ730〜オブジェクトnデータ73nをデータ記憶領域72から消去する。
【0115】
次のステップS59では、スコアをカウントアップする。つまり、得点が加算される。続く、ステップS61では、消去数kを加算する。ここでは、ステップS57のオブジェクト消去処理において消去されたオブジェクトの数が加算される。続いて、ステップS63では、オブジェクトの配置を更新する。つまり、消去処理によってオブジェクトが消去された描画領域にオブジェクト(102,104,106)を配置するべく、渦巻状にオブジェクト(102,104,106)を移動させる。そして、消去されたオブジェクト(102,104,106)の数だけ、新しいオブジェクト(102,104,106)が追加される。追加されるオブジェクト(102,104,106)の種類(大きさ)はランダムに設定される。
【0116】
そして、ステップS65では、ゲームクリアかどうかを判断する。この実施例では、CPUコア34は、ゲームクリア条件データ72fを参照して、ゲームクリアの条件を取得する。また、CPUコア34は、オブジェクト消去数データ72iを参照して、消去数kを検出するとともに、プレイ時間タイマ72jを参照して、パズルゲームのプレイ時間を取得する。そして、CPUコア34は、ゲームクリアの条件を満たすかどうかを判断する。具体的には、CPUコア34は、第1の一定時間(3分)以内に所定数以上のオブジェクト(102,104,106)が消去されたかどうかを判断する。ステップS65で“YES”であれば、つまりゲームクリアであれば、ステップS67で、ゲームクリア処理を実行し、ゲーム全体処理を終了する。ステップS67では、CPUコア34は、たとえば、ゲームクリアをしたことを示すゲーム画面100を表示し、ゲームレベルや面(ステージ)を更新し、ゲームデータをセーブする。
【0117】
一方、ステップS65で“NO”であれば、つまりゲームクリアでなければ、ステップS69で、ゲームオーバかどうかを判断する。この実施例では、CPUコア34は、ゲームクリアの判定と同様に、ゲームオーバ条件データ72g,オブジェクト消去数データ72iおよびプレイ時間タイマ72jを参照して、第1の一定時間以内に所定数のオブジェクト(102,104,106)が消去されていないかどうかを判断する。ステップS69で“NO”であれば、つまりゲームオーバでなければ、そのままステップS3に戻る。一方、ステップS69で“YES”であれば、つまりゲームオーバであれば、ステップS71で、ゲームオーバ処理を実行して、ゲーム全体処理を終了する。ステップS71では、CPUコア34は、たとえば、ゲームオーバを示すゲーム画面100を表示する。
【0118】
この実施例によれば、プレイヤの操作に応じて、注視点を設定し、さらに視点を変更させることにより、リング状のオブジェクトが所定の条件を満たしたときに、所定の条件を満たしたオブジェクトを消去するので、新しいパズルゲームを提供することができる。
【0119】
なお、この実施例では、各層でリングの大きさの異なるオブジェクトすなわち相似形のオブジェクトを配置するようにしたが、各層で色や形或いはその両方が異なるオブジェクトを配置するようにしてもよい。
【0120】
また、この実施例では、大リングオブジェクトに収まるように、中リングオブジェクトや小リングオブジェクトが重なる場合に、消去条件を満たすようにしたが、これに限定される必要はなく、少なくとも一部が重なる場合に、消去条件を満たすようにしてもよい。
【0121】
さらに、この実施例では、3つの層を設け、各層の描画領域の個数を20(4×5)に設定したが、層は2つ以上であればよく、4つ以上設けることも可能であり、描画領域は層の数やゲームの難易度等に応じて適宜変更可能である。
【0122】
さらにまた、この実施例では、小リングオブジェクトをタッチして、注視点を設定するようにしたが、中リングオブジェクトや大リングオブジェクトをタッチして注視点を設定するようにしてもよい。いずれの場合であっても、注視点は、タッチされたオブジェクトの配置位置(中心座標)に設定され、視点を移動する場合に、視点と注視点との距離が一定に保たれる。ただし、場合によっては、半直線の長さを延ばす必要がある。
【0123】
また、この実施例では、3次元仮想空間において、視線に基づいて、オブジェクトが重なるかどうかを判断するようにしたが、これに限定される必要はない。たとえば、レンダリングにより生成した2次元のゲーム画像に基づいて、重なりを判定することもできる。簡単に説明すると、かかる場合には、すべてのオブジェクトに固有の識別情報(ID)が割り当てられる。また、ポリゴンID用のバッファを別途設けておき、このバッファに、奥のレイヤー(最下層)のオブジェクトから順番に、オブジェクトと同じ半径のサークルをレンダリングする。このとき、既にIDが書き込まれた場所(ピクセル)には、上書きしない。そして、すべてのオブジェクトに対応するサークルをレンダリングした後に、或るIDの領域が別のIDの領域に囲まれているかどうかを、ピクセル単位で調べる。或るIDの領域が別のIDの領域に囲まれている場合には、それらのIDに対応するオブジェクト同士が重なっていることを示す。
【0124】
なお、この実施例では、ポインティングデバイスとして、タッチパネルを用いるようにしたが、ペンタブレット、タッチパッド、コンピュータマウスのような他のポインティングデバイスを用いることも可能である。当然のことながら、従来の操作スイッチを用いることも可能である。ただし、他のポインティングデバイスや操作スイッチを用いる場合には、画面上の指示位置を示すためのマウスポインタのような指示画像を表示する必要がある。
【0125】
また、ゲーム装置の構成は、上述の実施例の構成に限定されるべきでない。たとえば、LCDは1つでもよく、タッチパネルは2つのLCDのそれぞれに設けるようにしてもよい。
【図面の簡単な説明】
【0126】
【図1】図1はこの発明のゲーム装置の一実施例を示す図解図である。
【図2】図2は図1に示すゲーム装置の電気的な構成を示すブロック図である。
【図3】図3は図1に示すゲーム装置の第2のLCDに表示されるゲーム画面の一例を示す図解図である。
【図4】図4は3次元仮想空間に配置されるレイヤー(層)および各層に配置されるオブジェクトを示す図解図である。
【図5】図5は各層に設定されるオブジェクトの描画領域を説明するための図解図である。
【図6】図6は図1に示すゲーム装置の第2のLCDに表示されるゲーム画面の他の例を示す図解図である。
【図7】図7は3次元仮想空間における各層および仮想カメラの位置関係を示す図解図である。
【図8】図8は図1に示すゲーム装置の第2のLCDに表示されるゲーム画面の更新方法を説明するための図解図である。
【図9】図9は3次元仮想空間において各層のオブジェクトが重なるかどうかの重なり判定の方法を説明するための図解図である。
【図10】図10は重なり判定においてオブジェクト同士が重なる条件を説明するための図解図である。
【図11】図11は図2に示すRAMのメモリマップの一例を示す図解図である。
【図12】図12は図11に示すデータ記憶領域の具体的な内容を示す図解図である。
【図13】図13は図2に示すCPUコアのゲーム全体処理の一部を示すフロー図である。
【図14】図14は図2に示すCPUコアのゲーム全体処理の他の一部であって、図13に後続するフロー図である。
【図15】図15は図2に示すCPUコアのゲーム全体処理のその他の一部であって、図13および図14に後続するフロー図である。
【図16】図16は図2に示すCPUコアのゲーム全体処理のさらに他の一部であって、図13ないし図15に後続するフロー図である。
【符号の説明】
【0127】
10 …ゲーム装置
12,14 …LCD
16,16a,16b …ハウジング
22 …操作スイッチ
24 …タッチパネル
26 …スティック
28 …メモリカード
28a …ROM
28b,42 …RAM
34 …CPUコア
36a,36b …スピーカ
44,46 …GPU
48 …I/F回路
50 …LCDコントローラ
52,54 …VRAM
【特許請求の範囲】
【請求項1】
表示手段と、操作手段と、記憶手段とを備えたゲーム装置で実行されるゲームプログラムであって、
前記ゲーム装置のコンピュータに、
所定数の属性のうちのいずれか1つを有する複数のオブジェクトを前記記憶手段に記憶されたオブジェクトデータに基づいて3次元空間に配置する、オブジェクト配置ステップ、
前記操作手段の入力に基づいて注視点を設定する、注視点設定ステップ、
前記注視点設定ステップによって注視点が設定された後、前記操作手段の入力に基づいて前記3次元仮想空間内における視点を設定する、視点設定ステップ、
前記注視点設定ステップによって設定された注視点と前記視点設定ステップによって設定された視点とに基づいて前記表示手段にゲーム画像を表示する、ゲーム画像表示ステップ、
前記注視点設定ステップによって設定された注視点と前記視点設定ステップによって設定された視点とに基づいて視線および当該視線に平行な直線を算出する、視線算出ステップ、
前記視線算出ステップによって算出された視線または当該視線に平行な直線と交差する前記複数のオブジェクトの属性が所定の条件を満たすかどうかを判断する、判断ステップ、および
前記判断ステップによって所定の条件を満たすことが判断されたとき、当該所定の条件を満たすオブジェクトを消去する、消去ステップを実行させる、ゲームプログラム。
【請求項2】
前記オブジェクト配置ステップは、所定数の互いに平行な層上に、それぞれの層に固有のオブジェクトを、互いに他の層のオブジェクトと重ならない位置に配置する、請求項1記載のゲームプログラム。
【請求項3】
前記ゲーム画像表示ステップは、少なくとも前記注視点設定ステップによって注視点が設定されるまで、前記所定数の互いに平行な層を垂直方向から俯瞰した画像をゲーム画像として表示する、請求項2記載のゲームプログラム。
【請求項4】
前記それぞれの層に固有のオブジェクトは、前記俯瞰した画像をゲーム画像として表示するときの、最上層において大きさの最も大きい属性であり、最下層において大きさの最も小さい属性である、請求項2または3記載のゲームプログラム。
【請求項5】
前記消去ステップは、隣接する前記層において、前記視線または前記直線と交差するオブジェクトの大きさが、前記視点側から前記注視点側に向かうに従って小さくなり、かつ所定数並んでいるとき、当該オブジェクトを消去する、請求項2ないし4のいずれかに記載のゲームプログラム。
【請求項6】
前記オブジェクト配置ステップは、前記記憶手段に記憶された、前記層に垂直な方向について内部が中空で外縁を有するオブジェクトを前記オブジェクトデータに基づいて配置する、請求項2ないし5のいずれかに従属するゲームプログラム。
【請求項7】
表示手段と、操作手段と、記憶手段とを備えたゲーム装置であって、
所定数の属性のうちのいずれか1つを有する複数のオブジェクトを前記記憶手段に記憶されたオブジェクトデータに基づいて3次元空間に配置する、オブジェクト配置手段、
前記操作手段の入力に基づいて注視点を設定する、注視点設定手段、
前記注視点設定手段によって注視点が設定された後、前記操作手段の入力に基づいて前記3次元仮想空間内における視点を設定する、視点設定手段、
前記注視点設定手段によって設定された注視点と前記視点設定手段によって設定された視点とに基づいて前記表示手段にゲーム画像を表示する、ゲーム画像表示手段、
前記注視点設定手段によって設定された注視点と前記視点設定手段によって設定された視点とに基づいて視線および当該視線に平行な直線を算出する、視線算出手段、
前記視線算出手段によって算出された視線または当該視線に平行な直線と交差する前記複数のオブジェクトの属性が所定の条件を満たすかどうかを判断する、判断手段、および
前記判断手段によって所定の条件を満たすことが判断されたとき、当該所定の条件を満たすオブジェクトを消去する、消去手段を備える、ゲーム装置。
【請求項1】
表示手段と、操作手段と、記憶手段とを備えたゲーム装置で実行されるゲームプログラムであって、
前記ゲーム装置のコンピュータに、
所定数の属性のうちのいずれか1つを有する複数のオブジェクトを前記記憶手段に記憶されたオブジェクトデータに基づいて3次元空間に配置する、オブジェクト配置ステップ、
前記操作手段の入力に基づいて注視点を設定する、注視点設定ステップ、
前記注視点設定ステップによって注視点が設定された後、前記操作手段の入力に基づいて前記3次元仮想空間内における視点を設定する、視点設定ステップ、
前記注視点設定ステップによって設定された注視点と前記視点設定ステップによって設定された視点とに基づいて前記表示手段にゲーム画像を表示する、ゲーム画像表示ステップ、
前記注視点設定ステップによって設定された注視点と前記視点設定ステップによって設定された視点とに基づいて視線および当該視線に平行な直線を算出する、視線算出ステップ、
前記視線算出ステップによって算出された視線または当該視線に平行な直線と交差する前記複数のオブジェクトの属性が所定の条件を満たすかどうかを判断する、判断ステップ、および
前記判断ステップによって所定の条件を満たすことが判断されたとき、当該所定の条件を満たすオブジェクトを消去する、消去ステップを実行させる、ゲームプログラム。
【請求項2】
前記オブジェクト配置ステップは、所定数の互いに平行な層上に、それぞれの層に固有のオブジェクトを、互いに他の層のオブジェクトと重ならない位置に配置する、請求項1記載のゲームプログラム。
【請求項3】
前記ゲーム画像表示ステップは、少なくとも前記注視点設定ステップによって注視点が設定されるまで、前記所定数の互いに平行な層を垂直方向から俯瞰した画像をゲーム画像として表示する、請求項2記載のゲームプログラム。
【請求項4】
前記それぞれの層に固有のオブジェクトは、前記俯瞰した画像をゲーム画像として表示するときの、最上層において大きさの最も大きい属性であり、最下層において大きさの最も小さい属性である、請求項2または3記載のゲームプログラム。
【請求項5】
前記消去ステップは、隣接する前記層において、前記視線または前記直線と交差するオブジェクトの大きさが、前記視点側から前記注視点側に向かうに従って小さくなり、かつ所定数並んでいるとき、当該オブジェクトを消去する、請求項2ないし4のいずれかに記載のゲームプログラム。
【請求項6】
前記オブジェクト配置ステップは、前記記憶手段に記憶された、前記層に垂直な方向について内部が中空で外縁を有するオブジェクトを前記オブジェクトデータに基づいて配置する、請求項2ないし5のいずれかに従属するゲームプログラム。
【請求項7】
表示手段と、操作手段と、記憶手段とを備えたゲーム装置であって、
所定数の属性のうちのいずれか1つを有する複数のオブジェクトを前記記憶手段に記憶されたオブジェクトデータに基づいて3次元空間に配置する、オブジェクト配置手段、
前記操作手段の入力に基づいて注視点を設定する、注視点設定手段、
前記注視点設定手段によって注視点が設定された後、前記操作手段の入力に基づいて前記3次元仮想空間内における視点を設定する、視点設定手段、
前記注視点設定手段によって設定された注視点と前記視点設定手段によって設定された視点とに基づいて前記表示手段にゲーム画像を表示する、ゲーム画像表示手段、
前記注視点設定手段によって設定された注視点と前記視点設定手段によって設定された視点とに基づいて視線および当該視線に平行な直線を算出する、視線算出手段、
前記視線算出手段によって算出された視線または当該視線に平行な直線と交差する前記複数のオブジェクトの属性が所定の条件を満たすかどうかを判断する、判断手段、および
前記判断手段によって所定の条件を満たすことが判断されたとき、当該所定の条件を満たすオブジェクトを消去する、消去手段を備える、ゲーム装置。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【公開番号】特開2008−113762(P2008−113762A)
【公開日】平成20年5月22日(2008.5.22)
【国際特許分類】
【出願番号】特願2006−298201(P2006−298201)
【出願日】平成18年11月1日(2006.11.1)
【出願人】(000233778)任天堂株式会社 (1,115)
【Fターム(参考)】
【公開日】平成20年5月22日(2008.5.22)
【国際特許分類】
【出願日】平成18年11月1日(2006.11.1)
【出願人】(000233778)任天堂株式会社 (1,115)
【Fターム(参考)】
[ Back to top ]