ゲームプログラムおよびゲーム装置
【構成】 ゲーム装置(10)のCPUコア(34)は、第1フィールドでのゲーム中に回転指示があったとき(S51)、ステップS53およびS55で、回転後の第2フィールドの中心座標やプレイヤオブジェクトおよびBGオブジェクトの座標(中心座標)を取得する。そして、ステップS57-S61で回転処理を、たとえばハードウェア計算回路で実行する。ステップS63で回転終了を検知すると、CPUコア(34)はステップS65で、マップ切り換え処理を実行する。そのマップ切り換え処理では、図17に示すように第2エリアデータに従って、第2フィールドを生成する。そして、第2フィールドが生成された後には、たとえば図10のステップS7では、第2エリアデータに従って当たり判定を行う。
【効果】 複雑な処理なしに、フィールドを回転させた後の当たり判定を正しく行なえる。
【効果】 複雑な処理なしに、フィールドを回転させた後の当たり判定を正しく行なえる。
【発明の詳細な説明】
【技術分野】
【0001】
この発明はゲームプログラムおよびゲーム装置に関し、より特定的には、表示装置上のゲーム画面(フィールド)を回転させることができる、ゲームプログラムおよびゲーム装置に関する。
【背景技術】
【0002】
従来、表示装置上のゲーム画面(フィールド)を回転して表示させるゲームとして非特許文献1のようなものがある。非特許文献1では、所定の位置へプレイヤオブジェクトを移動させるとフィールド全体が回転する。このフィールドの回転により、今まで進むことができなかった次フィールドに進むことを可能にしていた。具体的には、次フィールドへの入口が現フィールドの上側に設けられている。プレイヤオブジェクトがある地点に来たとき、現フィールドが時計回り、もしくは反時計回りに90度回転し、次フィールドへの入口が現フィールドの右側、もしくは左側にくる。その後、プレイヤオブジェクトを現フィールドの右側、もしくは左側まで導くことによって次フィールドへ進めていた。
【非特許文献1】ゲームソフト 「超魔界村R」(ゲームボーイアドバンス用カートリッジ、株式会社カプコン、2002年7月19日発売)
【発明の開示】
【発明が解決しようとする課題】
【0003】
しかしながら、従来はフィールド全体を単に回転させただけだったので、そのフィールド内に配置された或るオブジェクトに複雑な当たり判定をさせることができないという問題があった。たとえば、プレイヤオブジェクトが或るオブジェクトに下から当たったときにはその或るオブジェクトを貫通し、上から当たった場合にはその或るオブジェクトに乗ることができるように定義されたオブジェクトが設定されている場合に、フィールド全体が180度回転した後には、プレイヤオブジェクトがその或るオブジェクトに下から当たったときにはその或るオブジェクトにぶつかり、上から当たった場合にはその或るオブジェクトを貫通するといったように、オブジェクトに対するプレイヤオブジェクトの作用が逆になってしまうという問題があった。
【0004】
この問題を回避するためには、回転前後でオブジェクト毎に当たり判定を変えればよいが、この場合、オブジェクト毎に回転前後を区別して当たり判定を行なわなければならず、その判定処理が複雑になるという別の問題を生じる。
【0005】
それゆえに、この発明の主たる目的は、ゲーム画面(フィールド)を回転させる、新規なゲーム装置およびゲームプログラムを提供することである。
【0006】
この発明の他の目的は、複雑な処理なしに、フィールドを回転させた後の当たり判定を正しく行なえる、ゲーム装置およびゲームプログラムを提供することである。
【課題を解決するための手段】
【0007】
請求項1の発明は、プレイヤによって操作可能なプレイヤキャラクタが配置されたフィールドが回転する様子を表示装置に表示させるゲーム装置のコンピュータにおいて実行されるゲームプログラムであって、複数のオブジェクトによって構成される第1フィールド内にプレイヤキャラクタを配置し、少なくとも当該プレイヤオブジェクト含む第1フィールド内の様子を表示装置に表示させる第1表示ステップ、所定の条件を満たしたときに、第1フィールドを所定角度まで回転させ、この回転する様子を表示装置に表示させる回転表示処理ステップ、および回転表示処理ステップで第1フィールドの回転処理が終了したとき、第1フィールドに配置されているプレイヤキャラクタを、所定角度まで回転させた第1フィールドと同じ表示態様となるように複数のオブジェクトで予め構成された第2フィールド内に配置し直し、少なくとも当該プレイヤオブジェクトを含む第2フィールド内の様子を表示装置に表示させる第2表示ステップ、をコンピュータに実行させるゲームプログラムである。
【0008】
請求項1の発明では、ゲーム装置(10:実施例で相当する部分を例示したとえばゲーム機の参照番号。以下同じ。)では、オブジェクト(実施例に示すBGオブジェクト)プレイヤオブジェクトが存在するフィールドを回転させることができる。オブジェクトは、第1属性を有する第1オブジェクト(実施例で示すBGオブジェクト3および5)および第1オブジェクトを回転させた後の属性と同じ属性の第2属性を有する第2オブジェクト(実施例で示すBGオブジェクト4および6)を含む。ゲーム装置は、記憶手段(42)を含み、この記憶手段には、第1エリアデータ、第2エリアデータ、プレイヤオブジェクトの属性、および第1オブジェクトと第1属性および第2オブジェクトと第2属性を含むオブジェクトデータを記憶する。
【0009】
そして、コンピュータまたはCPUコア(34)は、第1表示ステップを形成するたとえばステップS1およびS11(図10)において、第1エリアデータ(AD1)に基づいて第1フィールド(F1)を生成し、表示する。
【0010】
たとえば、プレイヤオブジェクトが所定の位置に移動したり、特定のオブジェクトに作用したりすることによって、所定の条件が充足される。そのとき、回転処理ステップ(S13)では第1フィールドを回転させる。
【0011】
CPUコア(34)は、第2表示ステップを形成するたとえばS83およびS85で、第2エリアデータに基づいて第2フィールドを生成し、表示する。
【0012】
請求項1の発明によれば、ゲームフィールドが回転した後にはエリアデータを差し替えて、第2フィールドを生成して表示したり、当たり判定を行うので、ゲームフィールドを回転させた後の当たり判定などが簡単に行なえる。
【0013】
請求項2の発明は、ゲームプログラムは、第1表示ステップにて第1フィールドが表示されているときには、当該第1フィールドを構成するオブジェクトとプレイヤオブジェクトとで接触判定を行う第1接触判定ステップ、をコンピュータに実行させ、第2表示ステップにて第2フィールドが表示されているときには、当該第2フィールドを構成するオブジェクトとプレイヤオブジェクトとで接触判定を行う第2接触判定ステップ、をコンピュータに実行させる、請求項1記載のゲームプログラムである。
【0014】
請求項2の発明では、第1接触判定ステップを形成するたとえばステップS7(図10)において、コンピュータまたはCPUコア(34)は、第1エリアデータに基づいて第1フィールドでプレイヤオブジェクトの第1オブジェクトに対する当たり判定を行う。そして、第2接触判定ステップを形成するたとえばステップS7(図10)で、CPUコア(34)は、第2エリアデータに基づいて第2フィールドでプレイヤオブジェクトの第2オブジェクトに対する当たり判定を行う。したがって、接触判定が簡単に行なえる。
【0015】
請求項3の発明は、オブジェクトには予め、プレイヤオブジェクトと接触した際に行う処理の定義が設定されており、第1接触判定ステップおよび第2接触判定ステップで、プレイヤオブジェクトとオブジェクトの接触が判定されたときに、当該オブジェクトに予め設定された定義に基づいて接触処理を行う第1接触処理ステップ、をさらにコンピュータに実行させる、請求項2記載のゲームプログラムである。
【0016】
請求項3の発明では、CPUコア(34)は、第1接触判定ステップおよび第2接触判定ステップで、プレイヤオブジェクトとオブジェクトの接触が判定されたときには、その予め設定された定義に基づいて接触処理を実行する。したがって、接触後の処理が簡単に行なえる。
【0017】
請求項4の発明は、プレイヤオブジェクトには予め複数の接触判定点が設定されており、第1接触判定ステップおよび第2接触判定ステップは、複数の接触判定点とオブジェクトとの接触状態によって、プレイヤオブジェクトがどの方向から当該オブジェクトに接触したかを算出する接触方向算出ステップを含む、請求項2記載のゲームプログラムである。
【0018】
請求項4の発明では、プレイヤオブジェクトには実施例では5つの接触判定点が設定されていて、接触判定ステップでは、CPUコア(34)は、それらの判定点とオブジェクトとの接触(当たり)状態によって、接触方向を判別する。したがって、接触方向の判定が簡単に行なえる。
【0019】
請求項5の発明は、オブジェクトには予め、プレイヤオブジェクトと接触した際に行う処理の定義が接触方向ごとに設定されており、第1接触判定ステップおよび第2接触判定ステップで、プレイヤオブジェクトとオブジェクトの接触が判定されたときに、当該オブジェクトに予め設定された接触方向算出ステップで算出された接触方向に対する定義に基づいて接触処理を行う第2接触処理ステップ、をさらにコンピュータに実行させる、請求項4記載のゲームプログラムである。
【0020】
請求項5の発明では、CPUコア(34)は、プレイヤオブジェクトとオブジェクトの接触を判定したときに、そのオブジェクトに予め設定された接触方向に対する定義に基づいて接触処理を行う。したがって、第1属性および第2属性としてそれぞれ接触方向定義が設定されているので、ゲームフィールドを回転した後も接触方向処理が複雑になることはない。
【0021】
請求項6の発明は、所定の条件とは、第1フィールドでプレイヤオブジェクトが所定の位置へ移動したときである、請求項1記載のゲームプログラムである。
【0022】
請求項7の発明は、所定の条件とは、第1フィールドでプレイヤオブジェクトが所定のオブジェクトに接触したときである、請求項1記載のゲームプログラムである。
【0023】
請求項8の発明は、所定の条件とは、第1表示ステップにて第1フィールド内の様子を表示装置に表示させてから所定の時間が経過したときである、請求項1記載のゲームプログラムである。
【0024】
請求項6−8のそれぞれの発明では、プレイヤオブジェクトが規定される条件を充足したとき、CPUコア(34)は第2表示ステップを実行する。
【0025】
請求項9の発明は、回転表示処理ステップでは、プレイヤオブジェクトもオブジェクトと同様に回転表示される、請求項1記載のゲームプログラムである。
【0026】
請求項10の発明は、回転表示処理ステップでは、プレイヤオブジェクトの表示方向は変更せず、オブジェクトと同様に回転表示される、請求項1記載のゲームプログラムである。
【0027】
請求項11の発明は、回転表示処理ステップでは、プレイヤオブジェクトはオブジェクトと同様に回転表示されない、請求項1記載のゲームプログラムである。
【0028】
回転表示処理ステップにおいては、CPUコア(34)は、プレイヤオブジェクトをオブジェクトと同様に回転させ(請求項9)、またはプレイヤオブジェクトの表示方向は変更せずにオブジェクトと同様に回転され(請求項10)、あるいはプレイヤオブジェクトはオブジェクトと同様に回転表示されない(請求項11)のような回転態様で回転表示させることが可能である。
【0029】
請求項12の発明は、プレイヤによって操作可能なプレイヤキャラクタが配置されたフィールドが回転する様子を表示装置に表示させるゲーム装置であって、複数のオブジェクトによって構成される第1フィールド内にプレイヤキャラクタを配置し、少なくとも当該プレイヤオブジェクト含む第1フィールド内の様子を表示装置に表示させる第1表示手段、所定の条件を満たしたときに、第1フィールドを所定角度まで回転させ、この回転する様子を表示装置に表示させる回転表示処理手段、および回転表示処理手段にる第1フィールドの回転処理が終了したとき、第1フィールドに配置されているプレイヤキャラクタを、所定角度まで回転させた第1フィールドと同じ表示態様となるように複数のオブジェクトで予め構成された第2フィールド内に配置し直し、少なくとも当該プレイヤオブジェクトを含む第2フィールド内の様子を表示装置に表示させる第2表示手段を備える、ゲーム装置である。
【0030】
請求項12の発明でも請求項1の発明と同様の効果が期待できる。
【発明の効果】
【0031】
この発明によれば、フィールドの回転前後でマップ(エリアデータ)を差し替え、回転前なら第1エリアデータに基づいて第1フィールドを生成し表示するとともに、回転後は第2エリアデータに基づいて第2フィールドを生成して表示する。したがって、回転前後のフィールド生成処理が簡単である。そして、第1フィールドの第1エリアデータまたは第2フィールドの第2エリアデータに基づいてプレイヤオブジェクトのオブジェクトへの当たり(接触)判定を行うようにすれば、複雑な処理なしに、オブジェクトに対するプレイヤオブジェクトの当たり判定が行なえる。
【0032】
この発明の上述の目的,その他の目的,特徴および利点は、図面を参照して行う以下の実施例の詳細な説明から一層明らかとなろう。
【発明を実施するための最良の形態】
【0033】
図1を参照して、この発明の実施例であるゲーム装置10は、第1の液晶表示器(LCD)12および第2のLCD14を含む。LCD12およびLCD14は、所定の配置位置となるようにハウジング16に収納される。この実施例では、ハウジング16は、上側ハウジング16aと下側ハウジング16bとによって構成され、LCD12は上側ハウジング16aに収納され、LCD14は下側ハウジング16bに収納される。したがって、LCD12とLCD14とは縦(上下)に並ぶように近接して配置される。
【0034】
なお、この実施例では、表示器としてLCDを用いるようにしてあるが、LCDに代えて、EL(Electronic Luminescence)ディスプレイやプラズマディスプレイを用いるようにしてもよい。
【0035】
図1からも分かるように、上側ハウジング16aは、LCD12の平面形状よりも少し大きな平面形状を有し、一方主面からLCD12の表示面を露出するように開口部が形成される。一方、下側ハウジング16bは、その平面形状が上側ハウジング16aよりも横長に選ばれ、横方向の略中央部にLCD14の表示面を露出するように開口部が形成される。下側ハウジング16bのLCD14の左方には電源スイッチ18が設けられる。
【0036】
また、上側ハウジング16aには、LCD12を挟んで左右に、スピーカ36aおよび36b(図2)のための音抜き孔20aおよび20bが形成される。そして、下側ハウジング16bには、マイク(図示せず)のためのマイク孔20cが形成されるとともに、操作スイッチ22(22a,22b,22c,22d,22e,22Lおよび22R)が設けられる。
【0037】
また、上側ハウジング16aと下側ハウジング16bとは、上側ハウジング16aの下辺(下端)と下側ハウジング16bの上辺(上端)の一部とが回動可能に連結されている。したがって、たとえば、ゲームをプレイしない場合には、LCD12の表示面とLCD14の表示面とが対面するように、上側ハウジング16aを回動させて折りたたんでおけば、LCD12の表示面およびLCD14の表示面に傷がつくなどの破損を防止することができる。ただし、上側ハウジング16aと下側ハウジング16bとは、回動可能に連結せずに、それらを一体的(固定的)に設けたハウジング16を形成するようにしてもよい。
【0038】
操作スイッチ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の上側面の左右角部に配置される。
【0039】
方向指示スイッチ22aは、ディジタルジョイスティックとして機能し、4つの押圧部の1つを操作することによって、ユーザないしプレイヤによって操作可能なプレイヤキャラクタ(またはプレイヤオブジェクト)の移動方向を指示したり、カーソルの移動方向を指示したりする等に用いられる。また、各押圧部には、特定の役割(この実施例では、ギターのコード)を割り当てることができ、4つの押圧部の1つを操作することによって、割り当てられた役割を指示(指定)することができる。
【0040】
スタートスイッチ22bは、プッシュボタンで構成され、ゲームを開始(再開)したり、一時停止(Pause)したりする等に用いられる。また、セレクトスイッチ22cは、プッシュボタンで構成され、ゲームモードの選択等に用いられる。
【0041】
動作スイッチ22dすなわちAボタンは、プッシュボタンで構成され、方向指示以外の動作、すなわち、プレイヤキャラクタに打つ(パンチ)、投げる、つかむ(取得)、乗る、ジャンプするなどの任意のアクションをさせることができる。たとえば、アクションゲームにおいては、ジャンプ、パンチ、武器を動かす等を指示することができる。また、ロールプレイングゲーム(RPG)やシミュレーションRPGにおいては、アイテムの取得、武器やコマンドの選択および決定等を指示することができる。動作スイッチ22eすなわちBボタンは、プッシュボタンで構成され、セレクトスイッチ22cで選択したゲームモードの変更やAボタン22dで決定したアクションの取り消し等のために用いられる。
【0042】
動作スイッチ22fすなわちXボタン、および動作スイッチ22gすなわちYボタンは、プッシュボタンで構成され、Aボタン22dとBボタン22eだけでは、ゲーム進行ができないときに、補助的な操作に用いられる。ただし、Xボタン22fおよびYボタン22gは、Aボタン22dおよびBボタン22eと同様の操作に用いることも可能である。もちろん、ゲームプレイにおいてXボタン22fとYボタン22gとを必ずしも使用しなくてよい。
【0043】
動作スイッチ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に割り当てられたコードが他のコードに変更される。
【0044】
また、LCD14の上面には、タッチパネル24が装着される。タッチパネル24としては、たとえば、抵抗膜方式、光学式(赤外線方式)および静電容量結合式のいずれかの種類のものを用いることができる。また、タッチパネル24は、その上面をスティック26ないしはペン(スタイラスペン)或いは指(以下、これらを「スティック26等」という場合がある。)で、押圧したり、撫でたり、触れたりすることにより操作(タッチ入力)すると、スティック26等の操作位置の座標を検出して、検出した座標(検出座標)に対応する座標データを出力する。
【0045】
なお、この実施例では、LCD14(LCD12も同じ、または略同じ。)の表示面の解像度は256dot×192dotであり、タッチパネル24の検出精度も表示画面に対応して256dot×192dotとしてあるが、タッチパネル24の検出精度は表示画面の解像度よりも低くてもよく、高くてもよい。
【0046】
LCD12およびLCD14には異なるゲーム画面が表示される。たとえば、レースゲームでは一方のLCDに運転席からの視点による画面を表示し、他方のLCDにレース(コース)全体の画面を表示することができる。また、RPGでは、一方のLCDにマップやプレイヤキャラクタ等のキャラクタを表示し、他方のLCDにプレイヤキャラクタが所有するアイテムを表示することができる。さらに、一方のLCD(この実施例では、LCD12)にゲームのプレイ画面を表示し、他方のLCD(この実施例では、LCD14)に当該ゲームを操作するための線や図形(アイコンを含む。)などの操作オブジェクトを含むゲーム画面(操作画面)を表示することができる。さらには、2つのLCD12およびLCD14を合わせて1つの画面として用いることにより、プレイヤキャラクタが倒さなければならない巨大な怪物(敵キャラクタ)を表示することもできる。
【0047】
したがって、プレイヤはスティック26等でタッチパネル24を操作することにより、LCD14の画面に表示されるプレイヤキャラクタ、敵キャラクタ、アイテムキャラクタ、操作オブジェクトなどの画像を指示(操作)したり、コマンドを選択(入力)したりすることができる。また、3次元ゲーム空間に設けられる仮想カメラ(視点)の方向を変化させたり、ゲーム画面(マップ)のスクロール(徐々に移動表示)方向を指示したりすることもできる。
【0048】
なお、ゲームの種類によっては、タッチパネル24を用いることにより、その他の入力指示も可能である。たとえば、座標入力指示を入力したり、LCD14において文字,数字,記号等を手書き入力したりすることができる。
【0049】
このように、ゲーム装置10は、2画面分の表示部となるLCD12およびLCD14を有し、いずれか一方(この実施例では、LCD14)の上面にタッチパネル24が設けられるので、2画面(12,14)と2系統の操作部(22,24)とを有する構成になっている。
【0050】
また、この実施例では、スティック26は、たとえば下側ハウジング16bに設けられる収納部(図1では点線で示す)に収納することができ、必要に応じて取り出される。ただし、スティック26を設けない場合には、その収納部も設ける必要はない。
【0051】
さらに、ゲーム装置10はメモリカード(またはカートリッジ)28を含み、このメモリカード28は着脱自在であり、下側ハウジング16bの裏面ないしは下端(底面)に設けられる挿入口30(図1では点線で示す)に挿入される。図1では省略するが、挿入部30の奥部には、メモリカード28の挿入方向先端部に設けられるコネクタ(図示せず)と接合するためのコネクタ32(図2参照)が設けられており、したがって、メモリカード28が挿入部30に挿入されると、コネクタ同士が接合され、ゲーム装置10のCPUコア34(図2参照)がメモリカード28にアクセス可能となる。
【0052】
なお、図1では表現できないが、上側ハウジング16aの音抜き孔20aおよび20bと対応する位置であり、この上側ハウジング16aの内部にはスピーカ36aおよび36b(図2参照)が設けられる。
【0053】
また、図1では省略するが、たとえば、下側ハウジング16bの裏面側には、電池収容ボックスが設けられ、また、下側ハウジング16bの底面側には、音量スイッチ、外部拡張コネクタおよびイヤフォンジャックなどが設けられる。
【0054】
図2はゲーム装置10の電気的な構成を示すブロック図である。図2を参照して、ゲーム装置10は電子回路基板38を含み、この電子回路基板38には上述のCPUコア34等の回路コンポーネントが実装される。CPUコア34は、バス40を介して前述のコネクタ32に接続されるととともに、RAM42、第1のグラフィック処理ユニット(GPU)44、第2のGPU46、入出カインターフエース回路(以下、「I/F回路」という。)48およびLCDコントローラ50が接続される。
【0055】
コネクタ32には、上述したように、メモリカード28が着脱自在に接続される。メモリカード28は、ROM28aおよびRAM28bを含み、図示は省略するが、ROM28aおよびRAM28bは、互いにバスで接続され、さらに、コネクタ32と接合されるコネクタ(図示せず)に接続される。したがって、上述したように、CPUコア34は、ROM28aおよびRAM28bにアクセスすることができるのである。
【0056】
ROM28aは、ゲーム装置10で実行すべきゲームのためのゲームプログラム、画像データ(文字やキャラクタの画像、背景(BG)画像、アイテム画像、アイコン(ボタン)画像、メッセージ画像など)およびゲームに必要な音(音楽)のデータ(音データ)等を予め記憶する。RAM(バックアップRAM)28bは、そのゲームの途中データやゲームの結果データなどを記憶(セーブ)する。
【0057】
RAM42は、バッファメモリないしはワーキングメモリとして使用される。つまり、CPUコア34は、メモリカード28のROM28aに記憶されたプログラム、画像データおよび音データ等をRAM42にロードし、ロードしたプログラムを実行する。また、CPUコア34は、ゲームの進行に応じて一時的に発生するデータ(ゲームデータやフラグデータ)をRAM42に記憶しつつゲーム処理を実行する。
【0058】
なお、ゲームプログラム、画像データおよび音データ等は、ROM28aから一度に全部、または部分的かつ順次的に読み出され、RAM42に記憶(ロード)される。
【0059】
ただし、メモリカード28のROM28aには、ゲーム以外の他のアプリケーションについてのプログラムおよび当該アプリケーションの実行に必要な画像データが記憶される。また、必要に応じて、音(音楽)データが記憶されてもよい。かかる場合には、ゲーム装置10では、当該アプリケーションが実行される。
【0060】
GPU44およびGPU46は、それぞれ、描画手段の一部を形成し、たとえばシングルチップASICで構成され、CPUコア34からのグラフィックスコマンド(graphics command :作画命令)を受け、そのグラフィックスコマンドに従って画像データを生成する。ただし、CPUコア34は、グラフィックスコマンドに加えて、画像データの生成に必要な画像生成プログラム(ゲームプログラムに含まれる。)をGPU44およびGPU46のそれぞれに与える。
【0061】
また、GPU44には、第1のビデオRAM(以下、「VRAM」という。)52が接続され、GPU46には、第2のVRAM54が接続される。GPU44およびGPU46が作画コマンドを実行するにあたって必要なデータ(画像データ:キャラクタデータやテクスチャ等のデータ)は、GPU44およびGPU46が、それぞれ、第1のVRAM52および第2のVRAM54にアクセスして取得する。
【0062】
なお、CPUコア34は、描画に必要な画像データをGPU44およびGPU46を介して第1のVRAM52および第2のVRAM54に書き込む。GPU44はVRAM52にアクセスして描画のための画像データを作成し、GPU46はVRAM54にアクセスして描画のための画像データを作成する。
【0063】
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に出力する。
【0064】
なお、LCDコントローラ50は、VRAM52およびVRAM54から直接画像データを読み出したり、GPU44およびGPU46を介してVRAM52およびVRAM54から画像データを読み出したりする。
【0065】
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から出力する。
【0066】
図3を参照して、RAM42にはプログラム記憶領域58が形成されていて、このプログラム記憶領域58にはゲームプログラム60が記憶される。このゲームプログラム60は、前述のROM28aから一度に全部読み出されて、もしくは必要な部分が部分的に読み出されて、このプログラム記憶領域58に記憶される。
【0067】
ゲームプログラム60には、典型的には、初期設定プログラム62,オブジェクト操作プログラム64,当たり判定プログラム66,スクロールプログラム68,回転処理プログラム70などを含む。
【0068】
初期設定プログラム62は、具体的には後述の図11に示すが、指定されたフィールド番号(これは、後述のエリアフラグ80に設定される)のフィールドにプレイヤオブジェクトやBGオブジェクトを描画するためのプログラムである。
【0069】
オブジェクト操作プログラム64は、プレイヤによるコントローラ22の操作手段26の操作に応じて入力される操作信号に従ってプレイヤオブジェクトの移動や動作(ジャンプ、歩行、格闘など)を制御する。
【0070】
当たり判定プログラム66は、具体的には後述の図12に示されるが、プレイヤオブジェクトのBGオブジェクトに対する当たり(接触、衝突)の有無を判断するとともに、両者が当たり状態にあるときには、プレイヤオブジェクトのBGオブジェクトに対する接触方向(どの方向からBGオブジェクトに接触したか)を判定し、さらにその接触方向に応じて予め設定されている処理をプレイヤオブジェクトおよび/またはBGオブジェクトに施す。
【0071】
スクロールプログラム68は、具体的には後述の図15に示されるが、スクロール指示に応じてゲーム画面またはフィールドをスクロールさせるプログラムである。
【0072】
回転処理プログラム70は、具体的には後述の図16に示されるが、回転指示に応答してゲーム画面すなわちフィールドを回転させるプログラムである。
【0073】
RAM42にはさらに、データ記憶領域72が設定されていて、このデータ記憶領域72には、オブジェクトデータ記憶領域74が設けられる。オブジェクトデータ記憶領域74には、プレイヤオブジェクトデータとBGオブジェクトデータとが記憶される。
【0074】
プレイヤオブジェクトは上述のように、ゲームプレイヤがコントローラ22の操作によってそれぞれの移動や動作を制御できるオブジェクトであり、プレイヤオブジェクトデータには、そのようなプレイヤオブジェクトの画像データ、および図4に示す、そのプレイヤオブジェクトに予め決められている複数(実施例では5つ)の当たり判定点A1−A5や基準点Bを含む属性データが含まれる。
【0075】
BGオブジェクトは、ゲームプレイヤが操作または制御できないオブジェクトであり、たとえば静止画である背景(BG)画像を構成する。そのようなBGオブジェクトの一例が図5に示される。ただし、この図5に示すBGオブジェクトは単なる例示に過ぎないことはいうまでもない。なお、このようなBGオブジェクトは、場合によっては、BGデータと呼ばれることがある。
【0076】
図5に示すBGオブジェクト1は、壁ブロックであり、この壁ブロックはプレイヤオブジェクトに対して何もダメージを与えるものではなく、プレイヤオブジェクトは壁ブロックに当たるとそれ以上は進めないので、プレイヤオブジェクトの移動可能範囲を制限する。また、プレイヤオブジェクトが下方向より接触することにより壁ブロックへ振動を与えることができ、壁ブロックにアイテム等が隠されている場合には、そのアイテム等を出現させることができる。図5に示すBGオブジェクト2は、固定ブロックであり、この固定ブロックはプレイヤオブジェクトに対して何もダメージを与えるものではなく、プレイヤオブジェクトは固定ブロックに当たるとそれ以上は進めなという点で、プレイヤオブジェクトの移動可能範囲を制限する点では壁ブロックと同様である。ただし、壁ブロックのようにプレイヤオブジェクトが下方向より振動を与えることはできず、アイテム等が隠されていることもない。
【0077】
これに対して、図5に示すBGオブジェクト3(4)および5(6)については、BGオブジェクト3が回転するとBGオブジェクト4となり、またはその逆となる。BGオブジェクト5が回転するとBGオブジェクト6となり、またはその逆となる。BGオブジェクト3は実施例では「とげ」と呼び、BGオブジェクト4は「つらら」と呼ぶ。BGオブジェクト5は実施例では「坂道」と呼び、BGオブジェクト6は「天井」と呼ぶ。
【0078】
例えばBGオブジェクト3(4)および5(6)の属性が、次表1−4に示すように具体的に決められている。
【0079】
表1を実施例に上げて属性を説明すると、このBGオブジェクト3である「とげ」は、それにプレイヤオブジェクトが上方向から接触したときは、その上面には「とげ」が形成されているため、プレイヤオブジェクトにダメージを与えるが、それ以外の方向、下方向、左方向、右方向から当たてもダメージは受けず、その面に引っかかるだけである。そして、このBGオブジェクト1は、自身は移動できるものではなく、固定物として表現される。
【0080】
BGオブジェクト4は、図5からよく分るように、画像としては、BGオブジェクト3の「とげ」を180°回転させた画像と同じである。したがって、その或るBGオブジェクトの回転後の画像は、たとえば、ビットマップ画像(VRAMに展開した)の各ドットを計算によって回転させることによって表示できる。そのため、従来は、或るBGオブジェクトの回転画像と同一の画像を有するBGオブジェクトについては、回転後のBGオブジェクトとして特別に準備することはしていなかった。したがって、BGオブジェクトにプレイヤオブジェクトが接触したときには、その都度、そのときのBGオブジェクトが回転している状態なのかどうかを判断するとともに、もし回転後の状態にあるなら、どの方向からの接触がプレイヤオブジェクトにダメージを与えるのかなどを計算して、当たり属性を変換しなければならず、コンピュータないしCPUの負荷が大きかった。
【0081】
これに対して、この実施例では、BGオブジェクトの回転後と同じ画像となるBGオブジェクト4についてもオブジェクトデータを準備しておき、そのオブジェクトデータの中に、BGオブジェクト4に固有の当たり属性を回転前の状態であるBGオブジェクト3の当たり属性に対応するように予め設定されている。たとえば、BGオブジェクト3では「とげ」が上面に形成されているので、プレイヤオブジェクトがBGオブジェクト3の上面に接触すると、プレイヤオブジェクトはダメージを受けた。これに対して、BGオブジェクト4では「とげ」は下面に形成されることになるので、その属性も、表2に示すように、下方向から接触したときプレイヤオブジェクトにダメージを与えるように設定している。
【0082】
ただし、この実施例では、BGオブジェクト3は「とげ」であり固定表示されるものとし、BGオブジェクト4は「つらら」として落下もできるものとしているが、これは当たり属性ではなく、動作属性に該当するので、必ずしも、回転後のBGオブジェクト4の動作属性を回転前の状態であるBGオブジェクト3の動作属性と同じに、もしくは対応するように設定する必要はない。
【0083】
このように、回転後のBGオブジェクトであるBGオブジェクト4の当たり属性は、回転前の同じBGオブジェクトであるBGオブジェクト3の当たり属性に対応するように予め設定されているので、ゲームフィールドが回転された後には、プレイヤオブジェクトの当たり判定はBGオブジェクト4の当たり属性をそのまま用いて行えばよく、従来技術ではCPUの負担を増大させていた回転処理がより簡単に行える。
【0084】
表3に示すBGオブジェクト5「坂道」と表4に示すBGオブジェクト6「天井」との間にも同じことがいえる。BGオブジェクト5が回転前の画像と当たり属性を有し、BGオブジェクト6が、回転後の画像と当たり属性を有する。簡単にいえば、BGオブジェクト5は「坂道」であるので、それにプレイヤオブジェクトが左方向から接触したとき、プレイヤオブジェクトには斜面を登るような当たり処理が施され、上方向からプレイヤオブジェクトが接触すると、プレイヤオブジェクトが面で引っかかる(45°の斜面に対する判定)ような当たり処理を施される。これに対して、BGオブジェクト6は「天井」であるので、それにプレイヤオブジェクトが右方向または下方向のいずれの方向から接触したときでも、プレイヤオブジェクトが面で引っかかる(45°の斜面に対する判定)ような当たり処理を施される。
【0085】
【表1】
【0086】
【表2】
【0087】
【表3】
【0088】
【表4】
【0089】
図3に戻って、データ記憶領域72にはさらに、フィールドメモリ領域76が設定される。フィールドメモリ領域76は、スクリーンメモリ領域とも呼ばれ、ゲームフィールド内のBGオブジェクトの配置を示すエリアデータを記憶または設定しておくための領域であり、回転前の配置である第1エリアデータと、回転後の配置である第2エリアデータとを有する。
【0090】
図6は第1エリアデータAD1の一例を図解している。この図6では、ゲーム画面(フィールド)全体に、たとえば8(縦)×11(横)のBGオブジェクトを配置、表示できると想定されている。そして、この図6の左上角を原点として、第1行(横方向)には全列BGオブジェクト1すなわち壁ブロックが配置される。同じ壁ブックが、第2行の第5列および第6列、第3行第2列、第5行の第6列および第8列、第7行の第3列および第4列、そして第2列、第7列、第8列を除く第8行の各列にも配置される。ただし、第2行第7列にはBGオブジェクト6である「天井」が配置され、第5行第7列および第8行第2列にはBGオブジェクト2すなわち固定ブロックが配置される。また、第7行第2列、第8行第7列および第8列にそれぞれBGオブジェクト3すなわち「とげ」が配置される。BGオブジェクト5である「坂道」は第7行第11列に設定される。このように、ゲーム画面のどの位置にどのようなBGオブジェクトを表示させるかを示すデータをエリアデータ(AD)と呼び、そのようなエリアデータを記憶しておく場所がフィールドメモリ領域76である。
【0091】
図6のエリアデータは、回転前のフィールドを現しているので、第1エリアデータであるが、この第1エリアデータAD1に従ったゲーム画面、すなわち第1フィールド描画イメージF1は、たとえば図7に示すようなものとなる。図7のゲーム画像F1では、図6において第1エリアデータとして「1」が設定されている場所にはBGオブジェクト1(壁ブロック)が、第1エリアデータとして「2」が設定されている場所にはBGオブジェクト2(固定ブロック)が、第1エリアデータとして「3」が設定されている場所にはBGオブジェクト3(とげ)が、第1エリアデータとして「5」が設定されている場所にはBGオブジェクト5(坂道)が、そして第1エリアデータとして「6」が設定されている場所にはBGオブジェクト6(天井)が、それぞれ描画され表示される。
【0092】
第2エリアデータAD2の一例が図8に図解される。この図8でも同じ8(縦)×11(横)の場所にBGオブジェクトを配置、表示できる。図6ではその左上角が原点であったが、図8では、図6での原点位置は右下角に相当する。つまり、第1フィールドを回転させた第2フィールドとは、第1フィールドを180°回転されたフィールドである。
【0093】
したがって、この第2エリアデータAD2では、参考までに図8に付記している丸付き数字で示す図6の行列番号を反転した行列番号が各表示場所に設定される。つまり、図8のフィールドメモリの右下角を原点として、そこから上に順に大きくなる行番号が設定され、左に順に大きくなる列番号が設定される。たとえば、図6の第1行が、図8の第8行として表わされ、図6の第11列が図8では第1列として表わされる。
【0094】
図6の第1フィールドを回転したものが図8の第2フィールドであるので、図8では、図6と同じ行列番号で示される場所に図6と同様のBGオブジェクトが配置されるように、第2エリアデータAD2が設定される。
【0095】
図8の第1行には全列BGオブジェクト1(壁ブロック)が配置される。同じ壁ブックが、図8の第2行の第5列および第6列、第3行第2列、第5行の第6列および第8列、第7行の第3列および第4列、そして第2列、第7列、第8列を除く第8行の各列にも配置される。ただし、第2行第7列にはBGオブジェクト5である「坂道」が配置される。図6の第1エリアデータではこの場所にはBGオブジェクト6「天井」が配置されていたが、図8は図6を回転した後のフィールドであるので、回転可能BGオブジェクトであるBGオブジェクト6は、回転後のBGオブジェクトであるBGオブジェクト5(坂道)に置き換えられる。
【0096】
また、図8の第5行第7列および第8行第2列には固定ブロックであるBGオブジェクト2が配置される。
【0097】
さらに、図8の第7行第2列、第8行第7列および第8列にそれぞれBGオブジェクト4すなわち「つらら」が配置される。図6の第1エリアデータではこれらの場所にはBGオブジェクト3「とげ」が配置されていたが、図8の第2エリアデータは図6を回転した後のフィールドの配置であるので、回転可能BGオブジェクトであるBGオブジェクト3は、回転後のBGオブジェクトであるBGオブジェクト4に置き換えられる。
【0098】
図8の第7行第11列にはBGオブジェクト6である「天井」が配置される。図6の第1エリアデータではこの場所にはBGオブジェクト5「坂道」が配置されていたが、図8は図6を回転した後のフィールドであるので、回転可能BGオブジェクトであるBGオブジェクト5は、回転後のBGオブジェクトであるBGオブジェクト6に置き換えられる。
【0099】
図8のエリアデータは、回転後のフィールドを現しているので、第2エリアデータであるが、この第2エリアデータAD2に従ったゲーム画面、すなわち第2フィールド描画イメージF2は、たとえば図9に示すようなものとなる。図9のゲーム画像F2では、図8において第2エリアデータとして「1」が設定されている場所にはBGオブジェクト1(壁ブロック)が、第2エリアデータとして「2」が設定されている場所にはBGオブジェクト2(固定ブロック)が、第2エリアデータとして「4」が設定されている場所にはBGオブジェクト4(つらら)が、第2エリアデータとして「5」が設定されている場所にはBGオブジェクト5(坂道)が、そして第1エリアデータとして「6」が設定されている場所にはBGオブジェクト6(天井)が、それぞれ表示されることになるが、図8の第2エリアデータAD2は、回転後の第2フィールドの生成に使用されるとともに、当たり判定にも利用される。
【0100】
ただし、図7のゲーム画像F1を回転した図9のゲーム画像F2を表示するためには、専用のハードウェアを用いた回転計算によって、回転後のドットまたはピクセルの位置を求め、そのドット位置に図7の該当するドット表示を行うだけである。ただし、そのような回転描画の手法としては任意の手法が用いられ得る。
【0101】
図3に再び戻って、データ記憶領域72にはフラグ領域78が形成され、このフラグ領域78には、エリアフラグ80が設定される。エリアフラグ80は、現在描画中のエリア番号を設定するレジスタである。
【0102】
図10はこの実施例の動作を示すメインフローチャートであり、このメインフローチャートは、ゲーム機12の1フレーム毎、もしくは数フレーム毎に繰り返し実行される、ということに予め留意されたい。
【0103】
図10の最初のステップS1では、CPUコア34は、初期設定処理を実行する。この初期設定処理は具体的には図11に示される。図11のステップS21では、CPUコア34は、エリアフラグ80(図3)に初期値、つまり描画するエリア番号を設定する。続くステップS23において、CPUコア34は、そのエリアフラグ80に設定されたエリア番号に対応するフィールドのエリアデータ(たとえば図6に示すAD1)を図3のフィールドメモリ領域76に読み込む。そして、ステップS25で、CPUコア34は、GPU44に描画指示を送り、フィールドの描画領域に、そのエリアデータに従ってBGオブジェクトを描画させる。その結果、たとえば図7に示すゲーム画像F1が表示される。続くステップS27で、CPUコア34は、同様にGPU44に描画指示を与え、上述のようにしてステップS25でBGオブジェクトを描画した同じゲームフィールドに、プレイヤオブジェクトをそのプレイヤオブジェクト初期位置へ描画させる。したがって、この初期設定処理によって、第1ゲームフィールドF1が生成され、図10の次のステップS3にリターンする。
【0104】
図10のステップS3では、CPUコア34は、I/F回路48から入力される操作スイッチ22の操作信号を取り込み、ステップS5で、その操作信号に従って、第1ゲームフィールドF1に表示されているプレイヤオブジェクトを移動または制御する。
【0105】
その後、CPUコア34は、図10のステップS7において、当たり判定処理を実行する。この当たり判定処理ステップは、具体的には、図12に詳細に示される。この図12の最初のステップS31で、CPUコア34は、プレイヤオブジェクトの各当たり判定点と接触しているBGオブジェクトを判定する。先に図4を参照して説明したように、プレイヤオブジェクトにはたとえば5つの当たり判定点A1-A5が設定されているが、このステップS31では、これらの当たり判定点A1-A5のどれかと接触しているBGオブジェクトを検出する。この接触判定すなわち当たり判定は、たとえば図13に示すように、当たり判定点A1-A5とBGオブジェクトとの重なりを監視することによって行う。当たり判定点A1-A5とBGオブジェクトとの重なりは、図13の点線で示すように、BGオブジェクトの形状自体とではなく、ブロック形状のBGオブジェクトの描画領域とで判定する。BGオブジェクトには様々な形状のものがあり、それらの形状に応じて重なり判定の部位を設定するとすれば、プログラムが複雑になり、CPUコア34の負担が過大になるからである。
【0106】
続くステップS33で、CPUコア34は、プレイヤオブジェクトの当たり判定点A1-A5とBGオブジェクトとの接触方向を判定する。この接触方向は、プレイヤオブジェクトのどの当たり判定点がBGオブジェクトと重なったかを検出することによって、判定する。図14は、プレイヤオブジェクトの当たり判定点A1がBGオブジェクトと重なった例を示し、この実施例の場合、CPUコア34はプレイヤオブジェクトが、BGオブジェクト4に対して下方向から接触したと判定する。なぜなら、判定点A1は図4からよく分かるように、プレイヤオブジェクトの頭部に相当していて、頭部が接触できるのはBGオブジェクトの下面しかないという理由による。この実施例の場合も含めて、表5に接触方向の判定手法が具体的に示される。
【0107】
【表5】
【0108】
そして、次のステップS35では、CPUコア34は、ステップS33で判定した接触方向に応じた処理を実行する。図3のオブジェクトデータ領域74には、先に表1-表4を用いて例示的に説明したように、BGオブジェクト毎に、プレイヤオブジェクトの接触方向によってプレイヤオブジェクトにどのような制御をなすべきかが定義されているので、CPUコア34はその定義に従って、プレイヤオブジェクトを制御する。たとえば、図14の例では、プレイヤオブジェクトはBGオブジェクト4に下方向から接触したのであり、表2を参照すれば、この場合、CPUコア34はプレイヤオブジェクトにダメージを与える処理を実行することになる。
【0109】
このようにして、ステップS7でプレイヤオブジェクトとBGオブジェクトとの当たり判定が終了すると、次のステップS9で、スクロール処理を実行する。このスクロール処理は具体的には図15に示される。すなわち、スクロール処理では、まず、図15のステップS41ではCPUコア34はスクロール指示があったかどうか判断し、“YES”なら、ステップS43で、フィールドの移動先に設定されたBGオブジェクトを描画し、“NO”なら、ステップS45で、現在設定されているBGオブジェクトを再描画する。
【0110】
図10の次のステップS11では、先のステップS5で移動制御し、ステップS7で当たり判定した結果に基づいて、プレイヤオブジェクトを描画する。したがって、たとえば、プレイヤオブジェクトがBGオブジェクトに接触したことによってダメージを受けるなどの画像表示がこのステップS11でなされる。
【0111】
図10の次のステップS13では、CPUコア34は、回転処理を実行する。そして、その後ステップS15でゲームが終了したかどうか判断し、“YES”なら終了して、“NO”なら、先のステップS3に戻って処理を続行する。
【0112】
ステップS13の回転処理ステップは具体的には、図16に詳細に示される。図16の最初に、ステップS51で、CPUコア34は、回転指示があったかどうか判断する。実施例においてゲームフィールドを回転させるには、たとえば所定のアイテムに接触させる。プレイヤオブジェクトが壁ブロックに下方向より接触することにより壁ブロックへ振動を与えることができ、壁ブロックに隠されているアイテムを出現させることができる。プレイヤオブジェクトがそのアイテムに接触するとその接触に応じて回転指示をCPUコア34に与えると、回転指示が入力され、ステップS51で“YES”が判断される。
【0113】
ただし、回転指示は、これ以外に、プレイヤが操作スイッチ22を操作することによって入力することもできる。また、プレイヤオブジェクトを所定の位置へ移動させることにより回転指示を与えることもできる。また、プレイヤオブジェクトをアイテムだけではなく、所定のオブジェクトと接触させることにより回転指示を与えることもできる。さらに、プレイヤオブジェクトが所定時間以上継続して第1ゲームフィールドに存在したことを条件として回転指示を与えるようにすることも考えられる。いずれの条件で回転指示を出すかは、ゲームの仕様に依る。
【0114】
ステップS51で“YES”が判断されると、CPUコア34は、次のステップS53で、エリアフラグに対応するフィールド(回転前フィールド)の描画領域の中心座標を取得する。図18がフィールド回転の一例を図解しているが、第1エリアデータとあるのが回転前のフィールド(第1フィールド)であり、第2エリアデータとしているのが回転後のフィールド(第2フィールド)である。この図18の実施例の場合、マップの左上が絶対座標の原点として設定され、その原点からx1,y1の座標値が第1フィールドの中心座標として設定される。したがって、ステップS53では、この中心座標x1,y1を取得する。
【0115】
続くステップS55で、CPUコア34は、上記絶対座標における第1フィールドのプレイヤオブジェクトの座標値(中心座標)を取得する。図18でエリアフラグ=1と設定されている第1フィールドでプレイヤオブジェクトの位置(中心座標)をみると、原点からx2,y2の座標値で示されている。ステップS55では、たとえばこのようなプレイヤオブジェクトの中心座標の座標値データを取得する。このような中心座標の座標値データは、ビットマップデータから容易に取得できる。
【0116】
その後、ステップS57で、CPUコア34によってではなく、別途設けたハードウェアの計算回路(たとえば、DSP)によって、描画領域の中心座標を中心にして、第1フィールドを指定角度(例えばフレーム単位に回転指示された回転角度)ずつ回転させて描画を行う。ステップS59では、プレイヤオブジェクトをステップS57での指定角度の位置に、表示の向きは回転させずに表示する。プレイヤオブジェクトの表示の向きも回転させると、プレイヤオブジェクトの回転に対する描画もハードウェアの計算回路で行うことができ処理負荷を軽減できるが、回転処理終了後にプレイヤオブジェクトの表示の向きが異なっている状態から急に元の表示の向きへ切り替えると不自然な表示になってしまう為に当該処理を行っている。
【0117】
そして、CPUコア34がその計算回路から計算終了信号を受けると、次のステップS63において、“YES”が判断される。CPUコア34がステップS63で回転終了を検知するまで、ステップS57-S59が計算回路によって繰り返し実行されることにより、第2フィールド(回転後のフィールド)に対応する角度に達するまで回転処理を繰り返す。
【0118】
なお、図18の例では、回転前後で対応する第1ゲームフィールドおよび第2ゲームフィールドの中心座標は、他とフィールドメモリ86(図3)に予め定義されているものとし、また、ゲームフィールドの中心座標からゲームフィールドの左上の座標までのオフセット値は固定的に設定されているものとする。
【0119】
また、ゲームフィールドの中心座標からプレイヤキャラクタまでのオフセット値を利用することにより、プレイヤキャラクタのみをゲームフィールド内での表示座標を変更せずに回転処理を行うこともできる。
【0120】
回転計算は他の計算方法としては、図18の場合のように描画領域の中心座標と絶対座標とを利用して計算する方法の他、描画領域の中心座標と原点からのオフセット値とを利用して計算する方法、そして、プレイヤオブジェクトの座標(回転中心座標)を絶対座標で保持し、そこからのオフセット値を利用して計算する方法などがある。ただし、この発明の要部ではないので、これ以上の説明はしない。
【0121】
図16のステップS63で“YES”を判断すると、CPUコア34は、次のステップS65で、マップ切り換え処理を実行する。このマップ切り換え処理とは、ステップS57-S59での回転計算の終了に伴って、回転後のフィールドでの当たり判定に備えて、マップデータすなわちエリアデータを切り換えるための処理である。
【0122】
図17を参照して、最初のステップS71でCPUコア34は、そのときのエリアフラグ(エリア番号)を旧エリアフラグとして待避させた後、図3のエリアフラグ80に新しいエリア番号(回転後のエリア番号)を設定することによって、エリアフラグを更新する(ステップS73)。
【0123】
その後、ステップS75で、CPUコア34は、図18のようにして、旧エリアフラグに対応するフィールド(第1フィールド(回転前フィールド))における描画領域の中心座標よりエリアフラグに対応するフィールド(第2フィールド(回転後フィールド))における描画領域の中心座標を数1に従って算出する。
【0124】
[数1]
第2フィールドの中心座標=x_max-x1、y_max-y1
ただし、x_max:マップデータX座標最大値、y_max:マップデータY座標最大値である。
【0125】
そして、続くステップS77で、CPUコア34は、第1フィールドにおけるプレイヤオブジェクトの座標より第2フィールドのプレイヤオブジェクト座標位置を数2に従って算出する。
【0126】
[数2]
プレイヤオブジェクトの中心座標=x_max-x2、y_max-y2
ただし、x_max:マップデータX座標最大値、y_max:マップデータY座標最大値である。
【0127】
このようなプレイヤオブジェクトの座標位置とは中心座標のことであり、図18のような絶対座標でも、その他の相対座標でもどちらでもよい。
【0128】
そして、続くステップS81で、先に説明した図8に示すような、回転後の第2フィールドのための第2エリアデータAD2を図3のフィールドメモリ領域76に読み込む。これでマップ切り換えが行なわれたことになり、それ以後回転後のゲームフィールドすなわち第2フィールドを表示するためには、この第2エリアデータを用いる。つまり、CPUコア34は、ステップS83およびS85で、GPU44に指令を与え、第2エリアデータに従ってBGオブジェクトを描画し、ステップS77で検出した座標位置にプレイヤオブジェクトを描画させる。
【0129】
回転後のゲームフィールドでゲームする限り、それ以後、ゲームフィールドは第2エリアデータによって描画(ステップS11)されるとともに、第2エリアデータに従って当たり判定(ステップS7)やスクロール処理(ステップS9)される。つまり、一旦ゲームフィールドが回転された後は、回転前の第1エリアデータが回転後の第2エリアデータに切り換えられてゲーム処理が実行される。
【0130】
なお、上述の実施例では、第1フィールドが時計方向に180°回転されて第2フィールドに第2なるように説明したが、この回転角度または回転の程度や方向は適宜決めることができ、たとえば第1フィールドを時計回り、もしくは反時計回りに90°回転させたものを第2フィールドとするようにしてもよい。
【図面の簡単な説明】
【0131】
【図1】図1はこの発明の一実施例のゲームシステムを示す図解図である。
【図2】図2は図1実施例のゲーム装置を詳細に示すブロック図である。
【図3】図3は図2におけるRAMのメモリマップの一例を示す図解図である。
【図4】図4は図1実施例のプレイヤオブジェクトとそれの属性(当たり判定点)を示す図解図である。
【図5】図5は図1実施例における異なる種類のBGオブジェクトを例示する図解図である。
【図6】図6は図1実施例における回転前の第1フィールドのための第1エリアデータの一例を示す図解図である。
【図7】図7は図6の第1エリアデータに従った第1フィールド描画イメージの一例を示す図解図である。
【図8】図8は図1実施例における回転後の第2フィールドのための第2エリアデータの一例を示す図解図である。
【図9】図9は図8の第2エリアデータに従った第2フィールド描画イメージの一例を示す図解図である。
【図10】図10は図1実施例の動作を示すメインフロー図である。
【図11】図10に示す初期設定処理を詳細に示すフロー図である。
【図12】図10に示す当たり判定処理を詳細に示すフロー図である。
【図13】図12に示す当たり判定の一例を示す図解図である。
【図14】図12に示す接触方向判定の一例を示す図解図である。
【図15】図10に示すスクロール処理を詳細に示すフロー図である。
【図16】図10に示す回転処理を詳細に示すフロー図である。
【図17】図16に示すマップ切り換え処理を詳細に示すフロー図である。
【図18】図16における回転計算の一例を示す図解図である。
【符号の説明】
【0132】
10 …ゲーム装置
22 …操作スイッチ
34 …CPUコア
42 …RAM
58 …プログラム記憶領域
72 …データ記憶領域
74 …オブジェクトデータ記憶領域
76 …フィールドメモリ領域
【技術分野】
【0001】
この発明はゲームプログラムおよびゲーム装置に関し、より特定的には、表示装置上のゲーム画面(フィールド)を回転させることができる、ゲームプログラムおよびゲーム装置に関する。
【背景技術】
【0002】
従来、表示装置上のゲーム画面(フィールド)を回転して表示させるゲームとして非特許文献1のようなものがある。非特許文献1では、所定の位置へプレイヤオブジェクトを移動させるとフィールド全体が回転する。このフィールドの回転により、今まで進むことができなかった次フィールドに進むことを可能にしていた。具体的には、次フィールドへの入口が現フィールドの上側に設けられている。プレイヤオブジェクトがある地点に来たとき、現フィールドが時計回り、もしくは反時計回りに90度回転し、次フィールドへの入口が現フィールドの右側、もしくは左側にくる。その後、プレイヤオブジェクトを現フィールドの右側、もしくは左側まで導くことによって次フィールドへ進めていた。
【非特許文献1】ゲームソフト 「超魔界村R」(ゲームボーイアドバンス用カートリッジ、株式会社カプコン、2002年7月19日発売)
【発明の開示】
【発明が解決しようとする課題】
【0003】
しかしながら、従来はフィールド全体を単に回転させただけだったので、そのフィールド内に配置された或るオブジェクトに複雑な当たり判定をさせることができないという問題があった。たとえば、プレイヤオブジェクトが或るオブジェクトに下から当たったときにはその或るオブジェクトを貫通し、上から当たった場合にはその或るオブジェクトに乗ることができるように定義されたオブジェクトが設定されている場合に、フィールド全体が180度回転した後には、プレイヤオブジェクトがその或るオブジェクトに下から当たったときにはその或るオブジェクトにぶつかり、上から当たった場合にはその或るオブジェクトを貫通するといったように、オブジェクトに対するプレイヤオブジェクトの作用が逆になってしまうという問題があった。
【0004】
この問題を回避するためには、回転前後でオブジェクト毎に当たり判定を変えればよいが、この場合、オブジェクト毎に回転前後を区別して当たり判定を行なわなければならず、その判定処理が複雑になるという別の問題を生じる。
【0005】
それゆえに、この発明の主たる目的は、ゲーム画面(フィールド)を回転させる、新規なゲーム装置およびゲームプログラムを提供することである。
【0006】
この発明の他の目的は、複雑な処理なしに、フィールドを回転させた後の当たり判定を正しく行なえる、ゲーム装置およびゲームプログラムを提供することである。
【課題を解決するための手段】
【0007】
請求項1の発明は、プレイヤによって操作可能なプレイヤキャラクタが配置されたフィールドが回転する様子を表示装置に表示させるゲーム装置のコンピュータにおいて実行されるゲームプログラムであって、複数のオブジェクトによって構成される第1フィールド内にプレイヤキャラクタを配置し、少なくとも当該プレイヤオブジェクト含む第1フィールド内の様子を表示装置に表示させる第1表示ステップ、所定の条件を満たしたときに、第1フィールドを所定角度まで回転させ、この回転する様子を表示装置に表示させる回転表示処理ステップ、および回転表示処理ステップで第1フィールドの回転処理が終了したとき、第1フィールドに配置されているプレイヤキャラクタを、所定角度まで回転させた第1フィールドと同じ表示態様となるように複数のオブジェクトで予め構成された第2フィールド内に配置し直し、少なくとも当該プレイヤオブジェクトを含む第2フィールド内の様子を表示装置に表示させる第2表示ステップ、をコンピュータに実行させるゲームプログラムである。
【0008】
請求項1の発明では、ゲーム装置(10:実施例で相当する部分を例示したとえばゲーム機の参照番号。以下同じ。)では、オブジェクト(実施例に示すBGオブジェクト)プレイヤオブジェクトが存在するフィールドを回転させることができる。オブジェクトは、第1属性を有する第1オブジェクト(実施例で示すBGオブジェクト3および5)および第1オブジェクトを回転させた後の属性と同じ属性の第2属性を有する第2オブジェクト(実施例で示すBGオブジェクト4および6)を含む。ゲーム装置は、記憶手段(42)を含み、この記憶手段には、第1エリアデータ、第2エリアデータ、プレイヤオブジェクトの属性、および第1オブジェクトと第1属性および第2オブジェクトと第2属性を含むオブジェクトデータを記憶する。
【0009】
そして、コンピュータまたはCPUコア(34)は、第1表示ステップを形成するたとえばステップS1およびS11(図10)において、第1エリアデータ(AD1)に基づいて第1フィールド(F1)を生成し、表示する。
【0010】
たとえば、プレイヤオブジェクトが所定の位置に移動したり、特定のオブジェクトに作用したりすることによって、所定の条件が充足される。そのとき、回転処理ステップ(S13)では第1フィールドを回転させる。
【0011】
CPUコア(34)は、第2表示ステップを形成するたとえばS83およびS85で、第2エリアデータに基づいて第2フィールドを生成し、表示する。
【0012】
請求項1の発明によれば、ゲームフィールドが回転した後にはエリアデータを差し替えて、第2フィールドを生成して表示したり、当たり判定を行うので、ゲームフィールドを回転させた後の当たり判定などが簡単に行なえる。
【0013】
請求項2の発明は、ゲームプログラムは、第1表示ステップにて第1フィールドが表示されているときには、当該第1フィールドを構成するオブジェクトとプレイヤオブジェクトとで接触判定を行う第1接触判定ステップ、をコンピュータに実行させ、第2表示ステップにて第2フィールドが表示されているときには、当該第2フィールドを構成するオブジェクトとプレイヤオブジェクトとで接触判定を行う第2接触判定ステップ、をコンピュータに実行させる、請求項1記載のゲームプログラムである。
【0014】
請求項2の発明では、第1接触判定ステップを形成するたとえばステップS7(図10)において、コンピュータまたはCPUコア(34)は、第1エリアデータに基づいて第1フィールドでプレイヤオブジェクトの第1オブジェクトに対する当たり判定を行う。そして、第2接触判定ステップを形成するたとえばステップS7(図10)で、CPUコア(34)は、第2エリアデータに基づいて第2フィールドでプレイヤオブジェクトの第2オブジェクトに対する当たり判定を行う。したがって、接触判定が簡単に行なえる。
【0015】
請求項3の発明は、オブジェクトには予め、プレイヤオブジェクトと接触した際に行う処理の定義が設定されており、第1接触判定ステップおよび第2接触判定ステップで、プレイヤオブジェクトとオブジェクトの接触が判定されたときに、当該オブジェクトに予め設定された定義に基づいて接触処理を行う第1接触処理ステップ、をさらにコンピュータに実行させる、請求項2記載のゲームプログラムである。
【0016】
請求項3の発明では、CPUコア(34)は、第1接触判定ステップおよび第2接触判定ステップで、プレイヤオブジェクトとオブジェクトの接触が判定されたときには、その予め設定された定義に基づいて接触処理を実行する。したがって、接触後の処理が簡単に行なえる。
【0017】
請求項4の発明は、プレイヤオブジェクトには予め複数の接触判定点が設定されており、第1接触判定ステップおよび第2接触判定ステップは、複数の接触判定点とオブジェクトとの接触状態によって、プレイヤオブジェクトがどの方向から当該オブジェクトに接触したかを算出する接触方向算出ステップを含む、請求項2記載のゲームプログラムである。
【0018】
請求項4の発明では、プレイヤオブジェクトには実施例では5つの接触判定点が設定されていて、接触判定ステップでは、CPUコア(34)は、それらの判定点とオブジェクトとの接触(当たり)状態によって、接触方向を判別する。したがって、接触方向の判定が簡単に行なえる。
【0019】
請求項5の発明は、オブジェクトには予め、プレイヤオブジェクトと接触した際に行う処理の定義が接触方向ごとに設定されており、第1接触判定ステップおよび第2接触判定ステップで、プレイヤオブジェクトとオブジェクトの接触が判定されたときに、当該オブジェクトに予め設定された接触方向算出ステップで算出された接触方向に対する定義に基づいて接触処理を行う第2接触処理ステップ、をさらにコンピュータに実行させる、請求項4記載のゲームプログラムである。
【0020】
請求項5の発明では、CPUコア(34)は、プレイヤオブジェクトとオブジェクトの接触を判定したときに、そのオブジェクトに予め設定された接触方向に対する定義に基づいて接触処理を行う。したがって、第1属性および第2属性としてそれぞれ接触方向定義が設定されているので、ゲームフィールドを回転した後も接触方向処理が複雑になることはない。
【0021】
請求項6の発明は、所定の条件とは、第1フィールドでプレイヤオブジェクトが所定の位置へ移動したときである、請求項1記載のゲームプログラムである。
【0022】
請求項7の発明は、所定の条件とは、第1フィールドでプレイヤオブジェクトが所定のオブジェクトに接触したときである、請求項1記載のゲームプログラムである。
【0023】
請求項8の発明は、所定の条件とは、第1表示ステップにて第1フィールド内の様子を表示装置に表示させてから所定の時間が経過したときである、請求項1記載のゲームプログラムである。
【0024】
請求項6−8のそれぞれの発明では、プレイヤオブジェクトが規定される条件を充足したとき、CPUコア(34)は第2表示ステップを実行する。
【0025】
請求項9の発明は、回転表示処理ステップでは、プレイヤオブジェクトもオブジェクトと同様に回転表示される、請求項1記載のゲームプログラムである。
【0026】
請求項10の発明は、回転表示処理ステップでは、プレイヤオブジェクトの表示方向は変更せず、オブジェクトと同様に回転表示される、請求項1記載のゲームプログラムである。
【0027】
請求項11の発明は、回転表示処理ステップでは、プレイヤオブジェクトはオブジェクトと同様に回転表示されない、請求項1記載のゲームプログラムである。
【0028】
回転表示処理ステップにおいては、CPUコア(34)は、プレイヤオブジェクトをオブジェクトと同様に回転させ(請求項9)、またはプレイヤオブジェクトの表示方向は変更せずにオブジェクトと同様に回転され(請求項10)、あるいはプレイヤオブジェクトはオブジェクトと同様に回転表示されない(請求項11)のような回転態様で回転表示させることが可能である。
【0029】
請求項12の発明は、プレイヤによって操作可能なプレイヤキャラクタが配置されたフィールドが回転する様子を表示装置に表示させるゲーム装置であって、複数のオブジェクトによって構成される第1フィールド内にプレイヤキャラクタを配置し、少なくとも当該プレイヤオブジェクト含む第1フィールド内の様子を表示装置に表示させる第1表示手段、所定の条件を満たしたときに、第1フィールドを所定角度まで回転させ、この回転する様子を表示装置に表示させる回転表示処理手段、および回転表示処理手段にる第1フィールドの回転処理が終了したとき、第1フィールドに配置されているプレイヤキャラクタを、所定角度まで回転させた第1フィールドと同じ表示態様となるように複数のオブジェクトで予め構成された第2フィールド内に配置し直し、少なくとも当該プレイヤオブジェクトを含む第2フィールド内の様子を表示装置に表示させる第2表示手段を備える、ゲーム装置である。
【0030】
請求項12の発明でも請求項1の発明と同様の効果が期待できる。
【発明の効果】
【0031】
この発明によれば、フィールドの回転前後でマップ(エリアデータ)を差し替え、回転前なら第1エリアデータに基づいて第1フィールドを生成し表示するとともに、回転後は第2エリアデータに基づいて第2フィールドを生成して表示する。したがって、回転前後のフィールド生成処理が簡単である。そして、第1フィールドの第1エリアデータまたは第2フィールドの第2エリアデータに基づいてプレイヤオブジェクトのオブジェクトへの当たり(接触)判定を行うようにすれば、複雑な処理なしに、オブジェクトに対するプレイヤオブジェクトの当たり判定が行なえる。
【0032】
この発明の上述の目的,その他の目的,特徴および利点は、図面を参照して行う以下の実施例の詳細な説明から一層明らかとなろう。
【発明を実施するための最良の形態】
【0033】
図1を参照して、この発明の実施例であるゲーム装置10は、第1の液晶表示器(LCD)12および第2のLCD14を含む。LCD12およびLCD14は、所定の配置位置となるようにハウジング16に収納される。この実施例では、ハウジング16は、上側ハウジング16aと下側ハウジング16bとによって構成され、LCD12は上側ハウジング16aに収納され、LCD14は下側ハウジング16bに収納される。したがって、LCD12とLCD14とは縦(上下)に並ぶように近接して配置される。
【0034】
なお、この実施例では、表示器としてLCDを用いるようにしてあるが、LCDに代えて、EL(Electronic Luminescence)ディスプレイやプラズマディスプレイを用いるようにしてもよい。
【0035】
図1からも分かるように、上側ハウジング16aは、LCD12の平面形状よりも少し大きな平面形状を有し、一方主面からLCD12の表示面を露出するように開口部が形成される。一方、下側ハウジング16bは、その平面形状が上側ハウジング16aよりも横長に選ばれ、横方向の略中央部にLCD14の表示面を露出するように開口部が形成される。下側ハウジング16bのLCD14の左方には電源スイッチ18が設けられる。
【0036】
また、上側ハウジング16aには、LCD12を挟んで左右に、スピーカ36aおよび36b(図2)のための音抜き孔20aおよび20bが形成される。そして、下側ハウジング16bには、マイク(図示せず)のためのマイク孔20cが形成されるとともに、操作スイッチ22(22a,22b,22c,22d,22e,22Lおよび22R)が設けられる。
【0037】
また、上側ハウジング16aと下側ハウジング16bとは、上側ハウジング16aの下辺(下端)と下側ハウジング16bの上辺(上端)の一部とが回動可能に連結されている。したがって、たとえば、ゲームをプレイしない場合には、LCD12の表示面とLCD14の表示面とが対面するように、上側ハウジング16aを回動させて折りたたんでおけば、LCD12の表示面およびLCD14の表示面に傷がつくなどの破損を防止することができる。ただし、上側ハウジング16aと下側ハウジング16bとは、回動可能に連結せずに、それらを一体的(固定的)に設けたハウジング16を形成するようにしてもよい。
【0038】
操作スイッチ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の上側面の左右角部に配置される。
【0039】
方向指示スイッチ22aは、ディジタルジョイスティックとして機能し、4つの押圧部の1つを操作することによって、ユーザないしプレイヤによって操作可能なプレイヤキャラクタ(またはプレイヤオブジェクト)の移動方向を指示したり、カーソルの移動方向を指示したりする等に用いられる。また、各押圧部には、特定の役割(この実施例では、ギターのコード)を割り当てることができ、4つの押圧部の1つを操作することによって、割り当てられた役割を指示(指定)することができる。
【0040】
スタートスイッチ22bは、プッシュボタンで構成され、ゲームを開始(再開)したり、一時停止(Pause)したりする等に用いられる。また、セレクトスイッチ22cは、プッシュボタンで構成され、ゲームモードの選択等に用いられる。
【0041】
動作スイッチ22dすなわちAボタンは、プッシュボタンで構成され、方向指示以外の動作、すなわち、プレイヤキャラクタに打つ(パンチ)、投げる、つかむ(取得)、乗る、ジャンプするなどの任意のアクションをさせることができる。たとえば、アクションゲームにおいては、ジャンプ、パンチ、武器を動かす等を指示することができる。また、ロールプレイングゲーム(RPG)やシミュレーションRPGにおいては、アイテムの取得、武器やコマンドの選択および決定等を指示することができる。動作スイッチ22eすなわちBボタンは、プッシュボタンで構成され、セレクトスイッチ22cで選択したゲームモードの変更やAボタン22dで決定したアクションの取り消し等のために用いられる。
【0042】
動作スイッチ22fすなわちXボタン、および動作スイッチ22gすなわちYボタンは、プッシュボタンで構成され、Aボタン22dとBボタン22eだけでは、ゲーム進行ができないときに、補助的な操作に用いられる。ただし、Xボタン22fおよびYボタン22gは、Aボタン22dおよびBボタン22eと同様の操作に用いることも可能である。もちろん、ゲームプレイにおいてXボタン22fとYボタン22gとを必ずしも使用しなくてよい。
【0043】
動作スイッチ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に割り当てられたコードが他のコードに変更される。
【0044】
また、LCD14の上面には、タッチパネル24が装着される。タッチパネル24としては、たとえば、抵抗膜方式、光学式(赤外線方式)および静電容量結合式のいずれかの種類のものを用いることができる。また、タッチパネル24は、その上面をスティック26ないしはペン(スタイラスペン)或いは指(以下、これらを「スティック26等」という場合がある。)で、押圧したり、撫でたり、触れたりすることにより操作(タッチ入力)すると、スティック26等の操作位置の座標を検出して、検出した座標(検出座標)に対応する座標データを出力する。
【0045】
なお、この実施例では、LCD14(LCD12も同じ、または略同じ。)の表示面の解像度は256dot×192dotであり、タッチパネル24の検出精度も表示画面に対応して256dot×192dotとしてあるが、タッチパネル24の検出精度は表示画面の解像度よりも低くてもよく、高くてもよい。
【0046】
LCD12およびLCD14には異なるゲーム画面が表示される。たとえば、レースゲームでは一方のLCDに運転席からの視点による画面を表示し、他方のLCDにレース(コース)全体の画面を表示することができる。また、RPGでは、一方のLCDにマップやプレイヤキャラクタ等のキャラクタを表示し、他方のLCDにプレイヤキャラクタが所有するアイテムを表示することができる。さらに、一方のLCD(この実施例では、LCD12)にゲームのプレイ画面を表示し、他方のLCD(この実施例では、LCD14)に当該ゲームを操作するための線や図形(アイコンを含む。)などの操作オブジェクトを含むゲーム画面(操作画面)を表示することができる。さらには、2つのLCD12およびLCD14を合わせて1つの画面として用いることにより、プレイヤキャラクタが倒さなければならない巨大な怪物(敵キャラクタ)を表示することもできる。
【0047】
したがって、プレイヤはスティック26等でタッチパネル24を操作することにより、LCD14の画面に表示されるプレイヤキャラクタ、敵キャラクタ、アイテムキャラクタ、操作オブジェクトなどの画像を指示(操作)したり、コマンドを選択(入力)したりすることができる。また、3次元ゲーム空間に設けられる仮想カメラ(視点)の方向を変化させたり、ゲーム画面(マップ)のスクロール(徐々に移動表示)方向を指示したりすることもできる。
【0048】
なお、ゲームの種類によっては、タッチパネル24を用いることにより、その他の入力指示も可能である。たとえば、座標入力指示を入力したり、LCD14において文字,数字,記号等を手書き入力したりすることができる。
【0049】
このように、ゲーム装置10は、2画面分の表示部となるLCD12およびLCD14を有し、いずれか一方(この実施例では、LCD14)の上面にタッチパネル24が設けられるので、2画面(12,14)と2系統の操作部(22,24)とを有する構成になっている。
【0050】
また、この実施例では、スティック26は、たとえば下側ハウジング16bに設けられる収納部(図1では点線で示す)に収納することができ、必要に応じて取り出される。ただし、スティック26を設けない場合には、その収納部も設ける必要はない。
【0051】
さらに、ゲーム装置10はメモリカード(またはカートリッジ)28を含み、このメモリカード28は着脱自在であり、下側ハウジング16bの裏面ないしは下端(底面)に設けられる挿入口30(図1では点線で示す)に挿入される。図1では省略するが、挿入部30の奥部には、メモリカード28の挿入方向先端部に設けられるコネクタ(図示せず)と接合するためのコネクタ32(図2参照)が設けられており、したがって、メモリカード28が挿入部30に挿入されると、コネクタ同士が接合され、ゲーム装置10のCPUコア34(図2参照)がメモリカード28にアクセス可能となる。
【0052】
なお、図1では表現できないが、上側ハウジング16aの音抜き孔20aおよび20bと対応する位置であり、この上側ハウジング16aの内部にはスピーカ36aおよび36b(図2参照)が設けられる。
【0053】
また、図1では省略するが、たとえば、下側ハウジング16bの裏面側には、電池収容ボックスが設けられ、また、下側ハウジング16bの底面側には、音量スイッチ、外部拡張コネクタおよびイヤフォンジャックなどが設けられる。
【0054】
図2はゲーム装置10の電気的な構成を示すブロック図である。図2を参照して、ゲーム装置10は電子回路基板38を含み、この電子回路基板38には上述のCPUコア34等の回路コンポーネントが実装される。CPUコア34は、バス40を介して前述のコネクタ32に接続されるととともに、RAM42、第1のグラフィック処理ユニット(GPU)44、第2のGPU46、入出カインターフエース回路(以下、「I/F回路」という。)48およびLCDコントローラ50が接続される。
【0055】
コネクタ32には、上述したように、メモリカード28が着脱自在に接続される。メモリカード28は、ROM28aおよびRAM28bを含み、図示は省略するが、ROM28aおよびRAM28bは、互いにバスで接続され、さらに、コネクタ32と接合されるコネクタ(図示せず)に接続される。したがって、上述したように、CPUコア34は、ROM28aおよびRAM28bにアクセスすることができるのである。
【0056】
ROM28aは、ゲーム装置10で実行すべきゲームのためのゲームプログラム、画像データ(文字やキャラクタの画像、背景(BG)画像、アイテム画像、アイコン(ボタン)画像、メッセージ画像など)およびゲームに必要な音(音楽)のデータ(音データ)等を予め記憶する。RAM(バックアップRAM)28bは、そのゲームの途中データやゲームの結果データなどを記憶(セーブ)する。
【0057】
RAM42は、バッファメモリないしはワーキングメモリとして使用される。つまり、CPUコア34は、メモリカード28のROM28aに記憶されたプログラム、画像データおよび音データ等をRAM42にロードし、ロードしたプログラムを実行する。また、CPUコア34は、ゲームの進行に応じて一時的に発生するデータ(ゲームデータやフラグデータ)をRAM42に記憶しつつゲーム処理を実行する。
【0058】
なお、ゲームプログラム、画像データおよび音データ等は、ROM28aから一度に全部、または部分的かつ順次的に読み出され、RAM42に記憶(ロード)される。
【0059】
ただし、メモリカード28のROM28aには、ゲーム以外の他のアプリケーションについてのプログラムおよび当該アプリケーションの実行に必要な画像データが記憶される。また、必要に応じて、音(音楽)データが記憶されてもよい。かかる場合には、ゲーム装置10では、当該アプリケーションが実行される。
【0060】
GPU44およびGPU46は、それぞれ、描画手段の一部を形成し、たとえばシングルチップASICで構成され、CPUコア34からのグラフィックスコマンド(graphics command :作画命令)を受け、そのグラフィックスコマンドに従って画像データを生成する。ただし、CPUコア34は、グラフィックスコマンドに加えて、画像データの生成に必要な画像生成プログラム(ゲームプログラムに含まれる。)をGPU44およびGPU46のそれぞれに与える。
【0061】
また、GPU44には、第1のビデオRAM(以下、「VRAM」という。)52が接続され、GPU46には、第2のVRAM54が接続される。GPU44およびGPU46が作画コマンドを実行するにあたって必要なデータ(画像データ:キャラクタデータやテクスチャ等のデータ)は、GPU44およびGPU46が、それぞれ、第1のVRAM52および第2のVRAM54にアクセスして取得する。
【0062】
なお、CPUコア34は、描画に必要な画像データをGPU44およびGPU46を介して第1のVRAM52および第2のVRAM54に書き込む。GPU44はVRAM52にアクセスして描画のための画像データを作成し、GPU46はVRAM54にアクセスして描画のための画像データを作成する。
【0063】
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に出力する。
【0064】
なお、LCDコントローラ50は、VRAM52およびVRAM54から直接画像データを読み出したり、GPU44およびGPU46を介してVRAM52およびVRAM54から画像データを読み出したりする。
【0065】
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から出力する。
【0066】
図3を参照して、RAM42にはプログラム記憶領域58が形成されていて、このプログラム記憶領域58にはゲームプログラム60が記憶される。このゲームプログラム60は、前述のROM28aから一度に全部読み出されて、もしくは必要な部分が部分的に読み出されて、このプログラム記憶領域58に記憶される。
【0067】
ゲームプログラム60には、典型的には、初期設定プログラム62,オブジェクト操作プログラム64,当たり判定プログラム66,スクロールプログラム68,回転処理プログラム70などを含む。
【0068】
初期設定プログラム62は、具体的には後述の図11に示すが、指定されたフィールド番号(これは、後述のエリアフラグ80に設定される)のフィールドにプレイヤオブジェクトやBGオブジェクトを描画するためのプログラムである。
【0069】
オブジェクト操作プログラム64は、プレイヤによるコントローラ22の操作手段26の操作に応じて入力される操作信号に従ってプレイヤオブジェクトの移動や動作(ジャンプ、歩行、格闘など)を制御する。
【0070】
当たり判定プログラム66は、具体的には後述の図12に示されるが、プレイヤオブジェクトのBGオブジェクトに対する当たり(接触、衝突)の有無を判断するとともに、両者が当たり状態にあるときには、プレイヤオブジェクトのBGオブジェクトに対する接触方向(どの方向からBGオブジェクトに接触したか)を判定し、さらにその接触方向に応じて予め設定されている処理をプレイヤオブジェクトおよび/またはBGオブジェクトに施す。
【0071】
スクロールプログラム68は、具体的には後述の図15に示されるが、スクロール指示に応じてゲーム画面またはフィールドをスクロールさせるプログラムである。
【0072】
回転処理プログラム70は、具体的には後述の図16に示されるが、回転指示に応答してゲーム画面すなわちフィールドを回転させるプログラムである。
【0073】
RAM42にはさらに、データ記憶領域72が設定されていて、このデータ記憶領域72には、オブジェクトデータ記憶領域74が設けられる。オブジェクトデータ記憶領域74には、プレイヤオブジェクトデータとBGオブジェクトデータとが記憶される。
【0074】
プレイヤオブジェクトは上述のように、ゲームプレイヤがコントローラ22の操作によってそれぞれの移動や動作を制御できるオブジェクトであり、プレイヤオブジェクトデータには、そのようなプレイヤオブジェクトの画像データ、および図4に示す、そのプレイヤオブジェクトに予め決められている複数(実施例では5つ)の当たり判定点A1−A5や基準点Bを含む属性データが含まれる。
【0075】
BGオブジェクトは、ゲームプレイヤが操作または制御できないオブジェクトであり、たとえば静止画である背景(BG)画像を構成する。そのようなBGオブジェクトの一例が図5に示される。ただし、この図5に示すBGオブジェクトは単なる例示に過ぎないことはいうまでもない。なお、このようなBGオブジェクトは、場合によっては、BGデータと呼ばれることがある。
【0076】
図5に示すBGオブジェクト1は、壁ブロックであり、この壁ブロックはプレイヤオブジェクトに対して何もダメージを与えるものではなく、プレイヤオブジェクトは壁ブロックに当たるとそれ以上は進めないので、プレイヤオブジェクトの移動可能範囲を制限する。また、プレイヤオブジェクトが下方向より接触することにより壁ブロックへ振動を与えることができ、壁ブロックにアイテム等が隠されている場合には、そのアイテム等を出現させることができる。図5に示すBGオブジェクト2は、固定ブロックであり、この固定ブロックはプレイヤオブジェクトに対して何もダメージを与えるものではなく、プレイヤオブジェクトは固定ブロックに当たるとそれ以上は進めなという点で、プレイヤオブジェクトの移動可能範囲を制限する点では壁ブロックと同様である。ただし、壁ブロックのようにプレイヤオブジェクトが下方向より振動を与えることはできず、アイテム等が隠されていることもない。
【0077】
これに対して、図5に示すBGオブジェクト3(4)および5(6)については、BGオブジェクト3が回転するとBGオブジェクト4となり、またはその逆となる。BGオブジェクト5が回転するとBGオブジェクト6となり、またはその逆となる。BGオブジェクト3は実施例では「とげ」と呼び、BGオブジェクト4は「つらら」と呼ぶ。BGオブジェクト5は実施例では「坂道」と呼び、BGオブジェクト6は「天井」と呼ぶ。
【0078】
例えばBGオブジェクト3(4)および5(6)の属性が、次表1−4に示すように具体的に決められている。
【0079】
表1を実施例に上げて属性を説明すると、このBGオブジェクト3である「とげ」は、それにプレイヤオブジェクトが上方向から接触したときは、その上面には「とげ」が形成されているため、プレイヤオブジェクトにダメージを与えるが、それ以外の方向、下方向、左方向、右方向から当たてもダメージは受けず、その面に引っかかるだけである。そして、このBGオブジェクト1は、自身は移動できるものではなく、固定物として表現される。
【0080】
BGオブジェクト4は、図5からよく分るように、画像としては、BGオブジェクト3の「とげ」を180°回転させた画像と同じである。したがって、その或るBGオブジェクトの回転後の画像は、たとえば、ビットマップ画像(VRAMに展開した)の各ドットを計算によって回転させることによって表示できる。そのため、従来は、或るBGオブジェクトの回転画像と同一の画像を有するBGオブジェクトについては、回転後のBGオブジェクトとして特別に準備することはしていなかった。したがって、BGオブジェクトにプレイヤオブジェクトが接触したときには、その都度、そのときのBGオブジェクトが回転している状態なのかどうかを判断するとともに、もし回転後の状態にあるなら、どの方向からの接触がプレイヤオブジェクトにダメージを与えるのかなどを計算して、当たり属性を変換しなければならず、コンピュータないしCPUの負荷が大きかった。
【0081】
これに対して、この実施例では、BGオブジェクトの回転後と同じ画像となるBGオブジェクト4についてもオブジェクトデータを準備しておき、そのオブジェクトデータの中に、BGオブジェクト4に固有の当たり属性を回転前の状態であるBGオブジェクト3の当たり属性に対応するように予め設定されている。たとえば、BGオブジェクト3では「とげ」が上面に形成されているので、プレイヤオブジェクトがBGオブジェクト3の上面に接触すると、プレイヤオブジェクトはダメージを受けた。これに対して、BGオブジェクト4では「とげ」は下面に形成されることになるので、その属性も、表2に示すように、下方向から接触したときプレイヤオブジェクトにダメージを与えるように設定している。
【0082】
ただし、この実施例では、BGオブジェクト3は「とげ」であり固定表示されるものとし、BGオブジェクト4は「つらら」として落下もできるものとしているが、これは当たり属性ではなく、動作属性に該当するので、必ずしも、回転後のBGオブジェクト4の動作属性を回転前の状態であるBGオブジェクト3の動作属性と同じに、もしくは対応するように設定する必要はない。
【0083】
このように、回転後のBGオブジェクトであるBGオブジェクト4の当たり属性は、回転前の同じBGオブジェクトであるBGオブジェクト3の当たり属性に対応するように予め設定されているので、ゲームフィールドが回転された後には、プレイヤオブジェクトの当たり判定はBGオブジェクト4の当たり属性をそのまま用いて行えばよく、従来技術ではCPUの負担を増大させていた回転処理がより簡単に行える。
【0084】
表3に示すBGオブジェクト5「坂道」と表4に示すBGオブジェクト6「天井」との間にも同じことがいえる。BGオブジェクト5が回転前の画像と当たり属性を有し、BGオブジェクト6が、回転後の画像と当たり属性を有する。簡単にいえば、BGオブジェクト5は「坂道」であるので、それにプレイヤオブジェクトが左方向から接触したとき、プレイヤオブジェクトには斜面を登るような当たり処理が施され、上方向からプレイヤオブジェクトが接触すると、プレイヤオブジェクトが面で引っかかる(45°の斜面に対する判定)ような当たり処理を施される。これに対して、BGオブジェクト6は「天井」であるので、それにプレイヤオブジェクトが右方向または下方向のいずれの方向から接触したときでも、プレイヤオブジェクトが面で引っかかる(45°の斜面に対する判定)ような当たり処理を施される。
【0085】
【表1】
【0086】
【表2】
【0087】
【表3】
【0088】
【表4】
【0089】
図3に戻って、データ記憶領域72にはさらに、フィールドメモリ領域76が設定される。フィールドメモリ領域76は、スクリーンメモリ領域とも呼ばれ、ゲームフィールド内のBGオブジェクトの配置を示すエリアデータを記憶または設定しておくための領域であり、回転前の配置である第1エリアデータと、回転後の配置である第2エリアデータとを有する。
【0090】
図6は第1エリアデータAD1の一例を図解している。この図6では、ゲーム画面(フィールド)全体に、たとえば8(縦)×11(横)のBGオブジェクトを配置、表示できると想定されている。そして、この図6の左上角を原点として、第1行(横方向)には全列BGオブジェクト1すなわち壁ブロックが配置される。同じ壁ブックが、第2行の第5列および第6列、第3行第2列、第5行の第6列および第8列、第7行の第3列および第4列、そして第2列、第7列、第8列を除く第8行の各列にも配置される。ただし、第2行第7列にはBGオブジェクト6である「天井」が配置され、第5行第7列および第8行第2列にはBGオブジェクト2すなわち固定ブロックが配置される。また、第7行第2列、第8行第7列および第8列にそれぞれBGオブジェクト3すなわち「とげ」が配置される。BGオブジェクト5である「坂道」は第7行第11列に設定される。このように、ゲーム画面のどの位置にどのようなBGオブジェクトを表示させるかを示すデータをエリアデータ(AD)と呼び、そのようなエリアデータを記憶しておく場所がフィールドメモリ領域76である。
【0091】
図6のエリアデータは、回転前のフィールドを現しているので、第1エリアデータであるが、この第1エリアデータAD1に従ったゲーム画面、すなわち第1フィールド描画イメージF1は、たとえば図7に示すようなものとなる。図7のゲーム画像F1では、図6において第1エリアデータとして「1」が設定されている場所にはBGオブジェクト1(壁ブロック)が、第1エリアデータとして「2」が設定されている場所にはBGオブジェクト2(固定ブロック)が、第1エリアデータとして「3」が設定されている場所にはBGオブジェクト3(とげ)が、第1エリアデータとして「5」が設定されている場所にはBGオブジェクト5(坂道)が、そして第1エリアデータとして「6」が設定されている場所にはBGオブジェクト6(天井)が、それぞれ描画され表示される。
【0092】
第2エリアデータAD2の一例が図8に図解される。この図8でも同じ8(縦)×11(横)の場所にBGオブジェクトを配置、表示できる。図6ではその左上角が原点であったが、図8では、図6での原点位置は右下角に相当する。つまり、第1フィールドを回転させた第2フィールドとは、第1フィールドを180°回転されたフィールドである。
【0093】
したがって、この第2エリアデータAD2では、参考までに図8に付記している丸付き数字で示す図6の行列番号を反転した行列番号が各表示場所に設定される。つまり、図8のフィールドメモリの右下角を原点として、そこから上に順に大きくなる行番号が設定され、左に順に大きくなる列番号が設定される。たとえば、図6の第1行が、図8の第8行として表わされ、図6の第11列が図8では第1列として表わされる。
【0094】
図6の第1フィールドを回転したものが図8の第2フィールドであるので、図8では、図6と同じ行列番号で示される場所に図6と同様のBGオブジェクトが配置されるように、第2エリアデータAD2が設定される。
【0095】
図8の第1行には全列BGオブジェクト1(壁ブロック)が配置される。同じ壁ブックが、図8の第2行の第5列および第6列、第3行第2列、第5行の第6列および第8列、第7行の第3列および第4列、そして第2列、第7列、第8列を除く第8行の各列にも配置される。ただし、第2行第7列にはBGオブジェクト5である「坂道」が配置される。図6の第1エリアデータではこの場所にはBGオブジェクト6「天井」が配置されていたが、図8は図6を回転した後のフィールドであるので、回転可能BGオブジェクトであるBGオブジェクト6は、回転後のBGオブジェクトであるBGオブジェクト5(坂道)に置き換えられる。
【0096】
また、図8の第5行第7列および第8行第2列には固定ブロックであるBGオブジェクト2が配置される。
【0097】
さらに、図8の第7行第2列、第8行第7列および第8列にそれぞれBGオブジェクト4すなわち「つらら」が配置される。図6の第1エリアデータではこれらの場所にはBGオブジェクト3「とげ」が配置されていたが、図8の第2エリアデータは図6を回転した後のフィールドの配置であるので、回転可能BGオブジェクトであるBGオブジェクト3は、回転後のBGオブジェクトであるBGオブジェクト4に置き換えられる。
【0098】
図8の第7行第11列にはBGオブジェクト6である「天井」が配置される。図6の第1エリアデータではこの場所にはBGオブジェクト5「坂道」が配置されていたが、図8は図6を回転した後のフィールドであるので、回転可能BGオブジェクトであるBGオブジェクト5は、回転後のBGオブジェクトであるBGオブジェクト6に置き換えられる。
【0099】
図8のエリアデータは、回転後のフィールドを現しているので、第2エリアデータであるが、この第2エリアデータAD2に従ったゲーム画面、すなわち第2フィールド描画イメージF2は、たとえば図9に示すようなものとなる。図9のゲーム画像F2では、図8において第2エリアデータとして「1」が設定されている場所にはBGオブジェクト1(壁ブロック)が、第2エリアデータとして「2」が設定されている場所にはBGオブジェクト2(固定ブロック)が、第2エリアデータとして「4」が設定されている場所にはBGオブジェクト4(つらら)が、第2エリアデータとして「5」が設定されている場所にはBGオブジェクト5(坂道)が、そして第1エリアデータとして「6」が設定されている場所にはBGオブジェクト6(天井)が、それぞれ表示されることになるが、図8の第2エリアデータAD2は、回転後の第2フィールドの生成に使用されるとともに、当たり判定にも利用される。
【0100】
ただし、図7のゲーム画像F1を回転した図9のゲーム画像F2を表示するためには、専用のハードウェアを用いた回転計算によって、回転後のドットまたはピクセルの位置を求め、そのドット位置に図7の該当するドット表示を行うだけである。ただし、そのような回転描画の手法としては任意の手法が用いられ得る。
【0101】
図3に再び戻って、データ記憶領域72にはフラグ領域78が形成され、このフラグ領域78には、エリアフラグ80が設定される。エリアフラグ80は、現在描画中のエリア番号を設定するレジスタである。
【0102】
図10はこの実施例の動作を示すメインフローチャートであり、このメインフローチャートは、ゲーム機12の1フレーム毎、もしくは数フレーム毎に繰り返し実行される、ということに予め留意されたい。
【0103】
図10の最初のステップS1では、CPUコア34は、初期設定処理を実行する。この初期設定処理は具体的には図11に示される。図11のステップS21では、CPUコア34は、エリアフラグ80(図3)に初期値、つまり描画するエリア番号を設定する。続くステップS23において、CPUコア34は、そのエリアフラグ80に設定されたエリア番号に対応するフィールドのエリアデータ(たとえば図6に示すAD1)を図3のフィールドメモリ領域76に読み込む。そして、ステップS25で、CPUコア34は、GPU44に描画指示を送り、フィールドの描画領域に、そのエリアデータに従ってBGオブジェクトを描画させる。その結果、たとえば図7に示すゲーム画像F1が表示される。続くステップS27で、CPUコア34は、同様にGPU44に描画指示を与え、上述のようにしてステップS25でBGオブジェクトを描画した同じゲームフィールドに、プレイヤオブジェクトをそのプレイヤオブジェクト初期位置へ描画させる。したがって、この初期設定処理によって、第1ゲームフィールドF1が生成され、図10の次のステップS3にリターンする。
【0104】
図10のステップS3では、CPUコア34は、I/F回路48から入力される操作スイッチ22の操作信号を取り込み、ステップS5で、その操作信号に従って、第1ゲームフィールドF1に表示されているプレイヤオブジェクトを移動または制御する。
【0105】
その後、CPUコア34は、図10のステップS7において、当たり判定処理を実行する。この当たり判定処理ステップは、具体的には、図12に詳細に示される。この図12の最初のステップS31で、CPUコア34は、プレイヤオブジェクトの各当たり判定点と接触しているBGオブジェクトを判定する。先に図4を参照して説明したように、プレイヤオブジェクトにはたとえば5つの当たり判定点A1-A5が設定されているが、このステップS31では、これらの当たり判定点A1-A5のどれかと接触しているBGオブジェクトを検出する。この接触判定すなわち当たり判定は、たとえば図13に示すように、当たり判定点A1-A5とBGオブジェクトとの重なりを監視することによって行う。当たり判定点A1-A5とBGオブジェクトとの重なりは、図13の点線で示すように、BGオブジェクトの形状自体とではなく、ブロック形状のBGオブジェクトの描画領域とで判定する。BGオブジェクトには様々な形状のものがあり、それらの形状に応じて重なり判定の部位を設定するとすれば、プログラムが複雑になり、CPUコア34の負担が過大になるからである。
【0106】
続くステップS33で、CPUコア34は、プレイヤオブジェクトの当たり判定点A1-A5とBGオブジェクトとの接触方向を判定する。この接触方向は、プレイヤオブジェクトのどの当たり判定点がBGオブジェクトと重なったかを検出することによって、判定する。図14は、プレイヤオブジェクトの当たり判定点A1がBGオブジェクトと重なった例を示し、この実施例の場合、CPUコア34はプレイヤオブジェクトが、BGオブジェクト4に対して下方向から接触したと判定する。なぜなら、判定点A1は図4からよく分かるように、プレイヤオブジェクトの頭部に相当していて、頭部が接触できるのはBGオブジェクトの下面しかないという理由による。この実施例の場合も含めて、表5に接触方向の判定手法が具体的に示される。
【0107】
【表5】
【0108】
そして、次のステップS35では、CPUコア34は、ステップS33で判定した接触方向に応じた処理を実行する。図3のオブジェクトデータ領域74には、先に表1-表4を用いて例示的に説明したように、BGオブジェクト毎に、プレイヤオブジェクトの接触方向によってプレイヤオブジェクトにどのような制御をなすべきかが定義されているので、CPUコア34はその定義に従って、プレイヤオブジェクトを制御する。たとえば、図14の例では、プレイヤオブジェクトはBGオブジェクト4に下方向から接触したのであり、表2を参照すれば、この場合、CPUコア34はプレイヤオブジェクトにダメージを与える処理を実行することになる。
【0109】
このようにして、ステップS7でプレイヤオブジェクトとBGオブジェクトとの当たり判定が終了すると、次のステップS9で、スクロール処理を実行する。このスクロール処理は具体的には図15に示される。すなわち、スクロール処理では、まず、図15のステップS41ではCPUコア34はスクロール指示があったかどうか判断し、“YES”なら、ステップS43で、フィールドの移動先に設定されたBGオブジェクトを描画し、“NO”なら、ステップS45で、現在設定されているBGオブジェクトを再描画する。
【0110】
図10の次のステップS11では、先のステップS5で移動制御し、ステップS7で当たり判定した結果に基づいて、プレイヤオブジェクトを描画する。したがって、たとえば、プレイヤオブジェクトがBGオブジェクトに接触したことによってダメージを受けるなどの画像表示がこのステップS11でなされる。
【0111】
図10の次のステップS13では、CPUコア34は、回転処理を実行する。そして、その後ステップS15でゲームが終了したかどうか判断し、“YES”なら終了して、“NO”なら、先のステップS3に戻って処理を続行する。
【0112】
ステップS13の回転処理ステップは具体的には、図16に詳細に示される。図16の最初に、ステップS51で、CPUコア34は、回転指示があったかどうか判断する。実施例においてゲームフィールドを回転させるには、たとえば所定のアイテムに接触させる。プレイヤオブジェクトが壁ブロックに下方向より接触することにより壁ブロックへ振動を与えることができ、壁ブロックに隠されているアイテムを出現させることができる。プレイヤオブジェクトがそのアイテムに接触するとその接触に応じて回転指示をCPUコア34に与えると、回転指示が入力され、ステップS51で“YES”が判断される。
【0113】
ただし、回転指示は、これ以外に、プレイヤが操作スイッチ22を操作することによって入力することもできる。また、プレイヤオブジェクトを所定の位置へ移動させることにより回転指示を与えることもできる。また、プレイヤオブジェクトをアイテムだけではなく、所定のオブジェクトと接触させることにより回転指示を与えることもできる。さらに、プレイヤオブジェクトが所定時間以上継続して第1ゲームフィールドに存在したことを条件として回転指示を与えるようにすることも考えられる。いずれの条件で回転指示を出すかは、ゲームの仕様に依る。
【0114】
ステップS51で“YES”が判断されると、CPUコア34は、次のステップS53で、エリアフラグに対応するフィールド(回転前フィールド)の描画領域の中心座標を取得する。図18がフィールド回転の一例を図解しているが、第1エリアデータとあるのが回転前のフィールド(第1フィールド)であり、第2エリアデータとしているのが回転後のフィールド(第2フィールド)である。この図18の実施例の場合、マップの左上が絶対座標の原点として設定され、その原点からx1,y1の座標値が第1フィールドの中心座標として設定される。したがって、ステップS53では、この中心座標x1,y1を取得する。
【0115】
続くステップS55で、CPUコア34は、上記絶対座標における第1フィールドのプレイヤオブジェクトの座標値(中心座標)を取得する。図18でエリアフラグ=1と設定されている第1フィールドでプレイヤオブジェクトの位置(中心座標)をみると、原点からx2,y2の座標値で示されている。ステップS55では、たとえばこのようなプレイヤオブジェクトの中心座標の座標値データを取得する。このような中心座標の座標値データは、ビットマップデータから容易に取得できる。
【0116】
その後、ステップS57で、CPUコア34によってではなく、別途設けたハードウェアの計算回路(たとえば、DSP)によって、描画領域の中心座標を中心にして、第1フィールドを指定角度(例えばフレーム単位に回転指示された回転角度)ずつ回転させて描画を行う。ステップS59では、プレイヤオブジェクトをステップS57での指定角度の位置に、表示の向きは回転させずに表示する。プレイヤオブジェクトの表示の向きも回転させると、プレイヤオブジェクトの回転に対する描画もハードウェアの計算回路で行うことができ処理負荷を軽減できるが、回転処理終了後にプレイヤオブジェクトの表示の向きが異なっている状態から急に元の表示の向きへ切り替えると不自然な表示になってしまう為に当該処理を行っている。
【0117】
そして、CPUコア34がその計算回路から計算終了信号を受けると、次のステップS63において、“YES”が判断される。CPUコア34がステップS63で回転終了を検知するまで、ステップS57-S59が計算回路によって繰り返し実行されることにより、第2フィールド(回転後のフィールド)に対応する角度に達するまで回転処理を繰り返す。
【0118】
なお、図18の例では、回転前後で対応する第1ゲームフィールドおよび第2ゲームフィールドの中心座標は、他とフィールドメモリ86(図3)に予め定義されているものとし、また、ゲームフィールドの中心座標からゲームフィールドの左上の座標までのオフセット値は固定的に設定されているものとする。
【0119】
また、ゲームフィールドの中心座標からプレイヤキャラクタまでのオフセット値を利用することにより、プレイヤキャラクタのみをゲームフィールド内での表示座標を変更せずに回転処理を行うこともできる。
【0120】
回転計算は他の計算方法としては、図18の場合のように描画領域の中心座標と絶対座標とを利用して計算する方法の他、描画領域の中心座標と原点からのオフセット値とを利用して計算する方法、そして、プレイヤオブジェクトの座標(回転中心座標)を絶対座標で保持し、そこからのオフセット値を利用して計算する方法などがある。ただし、この発明の要部ではないので、これ以上の説明はしない。
【0121】
図16のステップS63で“YES”を判断すると、CPUコア34は、次のステップS65で、マップ切り換え処理を実行する。このマップ切り換え処理とは、ステップS57-S59での回転計算の終了に伴って、回転後のフィールドでの当たり判定に備えて、マップデータすなわちエリアデータを切り換えるための処理である。
【0122】
図17を参照して、最初のステップS71でCPUコア34は、そのときのエリアフラグ(エリア番号)を旧エリアフラグとして待避させた後、図3のエリアフラグ80に新しいエリア番号(回転後のエリア番号)を設定することによって、エリアフラグを更新する(ステップS73)。
【0123】
その後、ステップS75で、CPUコア34は、図18のようにして、旧エリアフラグに対応するフィールド(第1フィールド(回転前フィールド))における描画領域の中心座標よりエリアフラグに対応するフィールド(第2フィールド(回転後フィールド))における描画領域の中心座標を数1に従って算出する。
【0124】
[数1]
第2フィールドの中心座標=x_max-x1、y_max-y1
ただし、x_max:マップデータX座標最大値、y_max:マップデータY座標最大値である。
【0125】
そして、続くステップS77で、CPUコア34は、第1フィールドにおけるプレイヤオブジェクトの座標より第2フィールドのプレイヤオブジェクト座標位置を数2に従って算出する。
【0126】
[数2]
プレイヤオブジェクトの中心座標=x_max-x2、y_max-y2
ただし、x_max:マップデータX座標最大値、y_max:マップデータY座標最大値である。
【0127】
このようなプレイヤオブジェクトの座標位置とは中心座標のことであり、図18のような絶対座標でも、その他の相対座標でもどちらでもよい。
【0128】
そして、続くステップS81で、先に説明した図8に示すような、回転後の第2フィールドのための第2エリアデータAD2を図3のフィールドメモリ領域76に読み込む。これでマップ切り換えが行なわれたことになり、それ以後回転後のゲームフィールドすなわち第2フィールドを表示するためには、この第2エリアデータを用いる。つまり、CPUコア34は、ステップS83およびS85で、GPU44に指令を与え、第2エリアデータに従ってBGオブジェクトを描画し、ステップS77で検出した座標位置にプレイヤオブジェクトを描画させる。
【0129】
回転後のゲームフィールドでゲームする限り、それ以後、ゲームフィールドは第2エリアデータによって描画(ステップS11)されるとともに、第2エリアデータに従って当たり判定(ステップS7)やスクロール処理(ステップS9)される。つまり、一旦ゲームフィールドが回転された後は、回転前の第1エリアデータが回転後の第2エリアデータに切り換えられてゲーム処理が実行される。
【0130】
なお、上述の実施例では、第1フィールドが時計方向に180°回転されて第2フィールドに第2なるように説明したが、この回転角度または回転の程度や方向は適宜決めることができ、たとえば第1フィールドを時計回り、もしくは反時計回りに90°回転させたものを第2フィールドとするようにしてもよい。
【図面の簡単な説明】
【0131】
【図1】図1はこの発明の一実施例のゲームシステムを示す図解図である。
【図2】図2は図1実施例のゲーム装置を詳細に示すブロック図である。
【図3】図3は図2におけるRAMのメモリマップの一例を示す図解図である。
【図4】図4は図1実施例のプレイヤオブジェクトとそれの属性(当たり判定点)を示す図解図である。
【図5】図5は図1実施例における異なる種類のBGオブジェクトを例示する図解図である。
【図6】図6は図1実施例における回転前の第1フィールドのための第1エリアデータの一例を示す図解図である。
【図7】図7は図6の第1エリアデータに従った第1フィールド描画イメージの一例を示す図解図である。
【図8】図8は図1実施例における回転後の第2フィールドのための第2エリアデータの一例を示す図解図である。
【図9】図9は図8の第2エリアデータに従った第2フィールド描画イメージの一例を示す図解図である。
【図10】図10は図1実施例の動作を示すメインフロー図である。
【図11】図10に示す初期設定処理を詳細に示すフロー図である。
【図12】図10に示す当たり判定処理を詳細に示すフロー図である。
【図13】図12に示す当たり判定の一例を示す図解図である。
【図14】図12に示す接触方向判定の一例を示す図解図である。
【図15】図10に示すスクロール処理を詳細に示すフロー図である。
【図16】図10に示す回転処理を詳細に示すフロー図である。
【図17】図16に示すマップ切り換え処理を詳細に示すフロー図である。
【図18】図16における回転計算の一例を示す図解図である。
【符号の説明】
【0132】
10 …ゲーム装置
22 …操作スイッチ
34 …CPUコア
42 …RAM
58 …プログラム記憶領域
72 …データ記憶領域
74 …オブジェクトデータ記憶領域
76 …フィールドメモリ領域
【特許請求の範囲】
【請求項1】
プレイヤによって操作可能なプレイヤキャラクタが配置されたフィールドが回転する様子を表示装置に表示させるゲーム装置のコンピュータにおいて実行されるゲームプログラムであって、
複数のオブジェクトによって構成される第1フィールド内に前記プレイヤキャラクタを配置し、少なくとも当該プレイヤオブジェクト含む第1フィールド内の様子を前記表示装置に表示させる第1表示ステップ、
所定の条件を満たしたときに、前記第1フィールドを所定角度まで回転させ、この回転する様子を前記表示装置に表示させる回転表示処理ステップ、および
前記回転表示処理ステップで前記第1フィールドの回転処理が終了したとき、前記第1フィールドに配置されているプレイヤキャラクタを、前記所定角度まで回転させた第1フィールドと同じ表示態様となるように複数のオブジェクトで予め構成された第2フィールド内に配置し直し、少なくとも当該プレイヤオブジェクトを含む第2フィールド内の様子を前記表示装置に表示させる第2表示ステップ、
を前記コンピュータに実行させるゲームプログラム。
【請求項2】
前記ゲームプログラムは、
前記第1表示ステップにて前記第1フィールドが表示されているときには、当該第1フィールドを構成するオブジェクトと前記プレイヤオブジェクトとで接触判定を行う第1接触判定ステップ、を前記コンピュータに実行させ
前記第2表示ステップにて前記第2フィールドが表示されているときには、当該第2フィールドを構成するオブジェクトと前記プレイヤオブジェクトとで接触判定を行う第2接触判定ステップ、を前記コンピュータに実行させる、請求項1記載のゲームプログラム。
【請求項3】
前記オブジェクトには予め、前記プレイヤオブジェクトと接触した際に行う処理の定義が設定されており、
前記第1接触判定ステップおよび前記第2接触判定ステップで、前記プレイヤオブジェクトと前記オブジェクトの接触が判定されたときに、当該オブジェクトに予め設定された定義に基づいて接触処理を行う第1接触処理ステップ、をさらに前記コンピュータに実行させる、請求項2記載のゲームプログラム。
【請求項4】
前記プレイヤオブジェクトには予め複数の接触判定点が設定されており、
前記第1接触判定ステップおよび前記第2接触判定ステップは、前記複数の接触判定点と前記オブジェクトとの接触状態によって、前記プレイヤオブジェクトがどの方向から当該オブジェクトに接触したかを算出する接触方向算出ステップを含む、請求項2記載のゲームプログラム。
【請求項5】
前記オブジェクトには予め、前記プレイヤオブジェクトと接触した際に行う処理の定義が接触方向ごとに設定されており、
前記第1接触判定ステップおよび前記第2接触判定ステップで、前記プレイヤオブジェクトと前記オブジェクトの接触が判定されたときに、当該オブジェクトに予め設定された前記接触方向算出ステップで算出された接触方向に対する定義に基づいて接触処理を行う第2接触処理ステップ、をさらに前記コンピュータに実行させる、請求項4記載のゲームプログラム。
【請求項6】
前記所定の条件とは、前記第1フィールドで前記プレイヤオブジェクトが所定の位置へ移動したときである、請求項1記載のゲームプログラム。
【請求項7】
前記所定の条件とは、前記第1フィールドで前記プレイヤオブジェクトが所定のオブジェクトに接触したときである、請求項1記載のゲームプログラム。
【請求項8】
前記所定の条件とは、前記第1表示ステップにて前記第1フィールド内の様子を前記表示装置に表示させてから所定の時間が経過したときである、請求項1記載のゲームプログラム。
【請求項9】
前記回転表示処理ステップでは、前記プレイヤオブジェクトも前記オブジェクトと同様に回転表示される、請求項1記載のゲームプログラム。
【請求項10】
前記回転表示処理ステップでは、前記プレイヤオブジェクトの表示方向は変更せず、前記オブジェクトと同様に回転表示される、請求項1記載のゲームプログラム。
【請求項11】
前記回転表示処理ステップでは、前記プレイヤオブジェクトは前記オブジェクトと同様に回転表示されない、請求項1記載のゲームプログラム。
【請求項12】
プレイヤによって操作可能なプレイヤキャラクタが配置されたフィールドが回転する様子を表示装置に表示させるゲーム装置であって、
複数のオブジェクトによって構成される第1フィールド内に前記プレイヤキャラクタを配置し、少なくとも当該プレイヤオブジェクト含む第1フィールド内の様子を前記表示装置に表示させる第1表示手段、
所定の条件を満たしたときに、前記第1フィールドを所定角度まで回転させ、この回転する様子を前記表示装置に表示させる回転表示処理手段、および
前記回転表示処理手段にる前記第1フィールドの回転処理が終了したとき、前記第1フィールドに配置されているプレイヤキャラクタを、前記所定角度まで回転させた第1フィールドと同じ表示態様となるように複数のオブジェクトで予め構成された第2フィールド内に配置し直し、少なくとも当該プレイヤオブジェクトを含む第2フィールド内の様子を前記表示装置に表示させる第2表示手段を備える、ゲーム装置。
【請求項1】
プレイヤによって操作可能なプレイヤキャラクタが配置されたフィールドが回転する様子を表示装置に表示させるゲーム装置のコンピュータにおいて実行されるゲームプログラムであって、
複数のオブジェクトによって構成される第1フィールド内に前記プレイヤキャラクタを配置し、少なくとも当該プレイヤオブジェクト含む第1フィールド内の様子を前記表示装置に表示させる第1表示ステップ、
所定の条件を満たしたときに、前記第1フィールドを所定角度まで回転させ、この回転する様子を前記表示装置に表示させる回転表示処理ステップ、および
前記回転表示処理ステップで前記第1フィールドの回転処理が終了したとき、前記第1フィールドに配置されているプレイヤキャラクタを、前記所定角度まで回転させた第1フィールドと同じ表示態様となるように複数のオブジェクトで予め構成された第2フィールド内に配置し直し、少なくとも当該プレイヤオブジェクトを含む第2フィールド内の様子を前記表示装置に表示させる第2表示ステップ、
を前記コンピュータに実行させるゲームプログラム。
【請求項2】
前記ゲームプログラムは、
前記第1表示ステップにて前記第1フィールドが表示されているときには、当該第1フィールドを構成するオブジェクトと前記プレイヤオブジェクトとで接触判定を行う第1接触判定ステップ、を前記コンピュータに実行させ
前記第2表示ステップにて前記第2フィールドが表示されているときには、当該第2フィールドを構成するオブジェクトと前記プレイヤオブジェクトとで接触判定を行う第2接触判定ステップ、を前記コンピュータに実行させる、請求項1記載のゲームプログラム。
【請求項3】
前記オブジェクトには予め、前記プレイヤオブジェクトと接触した際に行う処理の定義が設定されており、
前記第1接触判定ステップおよび前記第2接触判定ステップで、前記プレイヤオブジェクトと前記オブジェクトの接触が判定されたときに、当該オブジェクトに予め設定された定義に基づいて接触処理を行う第1接触処理ステップ、をさらに前記コンピュータに実行させる、請求項2記載のゲームプログラム。
【請求項4】
前記プレイヤオブジェクトには予め複数の接触判定点が設定されており、
前記第1接触判定ステップおよび前記第2接触判定ステップは、前記複数の接触判定点と前記オブジェクトとの接触状態によって、前記プレイヤオブジェクトがどの方向から当該オブジェクトに接触したかを算出する接触方向算出ステップを含む、請求項2記載のゲームプログラム。
【請求項5】
前記オブジェクトには予め、前記プレイヤオブジェクトと接触した際に行う処理の定義が接触方向ごとに設定されており、
前記第1接触判定ステップおよび前記第2接触判定ステップで、前記プレイヤオブジェクトと前記オブジェクトの接触が判定されたときに、当該オブジェクトに予め設定された前記接触方向算出ステップで算出された接触方向に対する定義に基づいて接触処理を行う第2接触処理ステップ、をさらに前記コンピュータに実行させる、請求項4記載のゲームプログラム。
【請求項6】
前記所定の条件とは、前記第1フィールドで前記プレイヤオブジェクトが所定の位置へ移動したときである、請求項1記載のゲームプログラム。
【請求項7】
前記所定の条件とは、前記第1フィールドで前記プレイヤオブジェクトが所定のオブジェクトに接触したときである、請求項1記載のゲームプログラム。
【請求項8】
前記所定の条件とは、前記第1表示ステップにて前記第1フィールド内の様子を前記表示装置に表示させてから所定の時間が経過したときである、請求項1記載のゲームプログラム。
【請求項9】
前記回転表示処理ステップでは、前記プレイヤオブジェクトも前記オブジェクトと同様に回転表示される、請求項1記載のゲームプログラム。
【請求項10】
前記回転表示処理ステップでは、前記プレイヤオブジェクトの表示方向は変更せず、前記オブジェクトと同様に回転表示される、請求項1記載のゲームプログラム。
【請求項11】
前記回転表示処理ステップでは、前記プレイヤオブジェクトは前記オブジェクトと同様に回転表示されない、請求項1記載のゲームプログラム。
【請求項12】
プレイヤによって操作可能なプレイヤキャラクタが配置されたフィールドが回転する様子を表示装置に表示させるゲーム装置であって、
複数のオブジェクトによって構成される第1フィールド内に前記プレイヤキャラクタを配置し、少なくとも当該プレイヤオブジェクト含む第1フィールド内の様子を前記表示装置に表示させる第1表示手段、
所定の条件を満たしたときに、前記第1フィールドを所定角度まで回転させ、この回転する様子を前記表示装置に表示させる回転表示処理手段、および
前記回転表示処理手段にる前記第1フィールドの回転処理が終了したとき、前記第1フィールドに配置されているプレイヤキャラクタを、前記所定角度まで回転させた第1フィールドと同じ表示態様となるように複数のオブジェクトで予め構成された第2フィールド内に配置し直し、少なくとも当該プレイヤオブジェクトを含む第2フィールド内の様子を前記表示装置に表示させる第2表示手段を備える、ゲーム装置。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【公開番号】特開2007−301020(P2007−301020A)
【公開日】平成19年11月22日(2007.11.22)
【国際特許分類】
【出願番号】特願2006−130474(P2006−130474)
【出願日】平成18年5月9日(2006.5.9)
【出願人】(000233778)任天堂株式会社 (1,115)
【Fターム(参考)】
【公開日】平成19年11月22日(2007.11.22)
【国際特許分類】
【出願日】平成18年5月9日(2006.5.9)
【出願人】(000233778)任天堂株式会社 (1,115)
【Fターム(参考)】
[ Back to top ]