図1を参照して、この発明の一実施例であるゲーム装置10は、第1の液晶表示器(LCD)12および第2のLCD14を含む。このLCD12およびLCD14は、所定の配置位置となるようにハウジング16に収納される。この実施例では、ハウジング16は、上側ハウジング16aと下側ハウジング16bとによって構成され、LCD12は上側ハウジング16aに収納され、LCD14は下側ハウジング16bに収納される。したがって、LCD12とLCD14とは縦(上下)に並ぶように近接して配置される。
なお、この実施例では、表示器としてLCDを用いるようにしてあるが、LCDに代えて、EL(Electronic Luminescence)ディスプレイやプラズマディスプレイを用いるようにしてもよい。
図1からも分かるように、上側ハウジング16aは、LCD12の平面形状よりも少し大きな平面形状を有し、一方主面からLCD12の表示面を露出するように開口部が形成される。一方、下側ハウジング16bは、その平面形状が上側ハウジング16aよりも横長に選ばれ、横方向の略中央部にLCD14の表示面を露出するように開口部が形成される。また、下側ハウジング16bには、音抜き孔18が形成されるとともに、操作スイッチ20(20a,20b,20c,20d,20e,20Lおよび20R)が設けられる。
また、上側ハウジング16aと下側ハウジング16bとは、上側ハウジング16aの下辺(下端)と下側ハウジング16bの上辺(上端)の一部とが回動可能に連結されている。したがって、たとえば、ゲームをプレイしない場合には、LCD12の表示面とLCD14の表示面とが対面するように、上側ハウジング16aを回動させて折りたたんでおけば、LCD12の表示面およびLCD14の表示面に傷がつくなどの破損を防止することができる。ただし、上側ハウジング16aと下側ハウジング16bとは、回動可能に連結せずに、それらを一体的(固定的)に設けたハウジング16を形成するようにしてもよい。
操作スイッチ20は、方向指示スイッチ(十字スイッチ)20a,スタートスイッチ20b、セレクトスイッチ20c、動作スイッチ(Aボタン)20d、動作スイッチ(Bボタン)20e、動作スイッチ(Lボタン)20Lおよび動作スイッチ(Rボタン)20Rを含む。スイッチ20a,20bおよび20cは、下側ハウジング16bの一方主面であり、LCD14の左側に配置される。また、スイッチ20dおよび20eは、下側ハウジング16bの一方主面であり、LCD14の右側に配置される。さらに、スイッチ20Lおよびスイッチ20Rは、それぞれ、下側ハウジング16bの上端(天面)の一部であり、上側ハウジング16aとの連結部以外に当該連結部を挟むように、左右に配置される。
方向指示スイッチ20aは、ディジタルジョイスティックとして機能し、4つの押圧部の1つを操作することによって、プレイヤによって操作可能なプレイヤキャラクタ(またはプレイヤオブジェクト)の移動方向を指示したり、カーソルの移動方向を指示したりする等に用いられる。スタートスイッチ20bは、プッシュボタンで構成され、ゲームを開始(再開)したり、一時停止(Pause)したりする等に用いられる。セレクトスイッチ20cは、プッシュボタンで構成され、ゲームモードの選択等に用いられる。
動作スイッチ20dすなわちAボタンは、プッシュボタンで構成され、方向指示以外の動作、すなわち、プレイヤキャラクタに打つ(パンチ)、投げる、つかむ(取得)、乗る、ジャンプするなどの任意のアクションをさせることができる。たとえば、アクションゲームにおいては、ジャンプ、パンチ、武器を動かす等を指示することができる。また、ロールプレイングゲーム(RPG)やシミュレーションRPGにおいては、アイテムの取得、武器やコマンドの選択および決定等を指示することができる。動作スイッチ20eすなわちBボタンは、プッシュボタンで構成され、セレクトスイッチ20cで選択したゲームモードの変更やAボタン20dで決定したアクションの取り消し等のために用いられる。
動作スイッチ(左押しボタン)20Lおよび動作スイッチ(右押しボタン)20Rは、プッシュボタンで構成され、左押しボタン(Lボタン)20Lおよび右押しボタン(Rボタン)20Rは、Aボタン20dおよびBボタン20eと同様の操作に用いることができ、また、Aボタン20dおよびBボタン20eの補助的な操作に用いることができる。
また、LCD14の上面には、タッチパネル22が装着される。タッチパネル22としては、たとえば、抵抗膜方式、光学式(赤外線方式)および静電容量結合式のいずれかの種類のものを用いることができる。また、タッチパネル22は、その上面(検出面)をスティック24ないしはペン(スタイラスペン)或いは指(以下、これらを「スティック24等」という場合がある。)で、押圧したり、撫でたり、触れたりすることにより操作すると、スティック24等の操作位置の座標を検出して、検出した座標(検出座標)に対応する座標データを出力する。
この実施例では、LCD14(LCD12も同じ、または略同じ。)の表示面の解像度は256dot×192dotであり、タッチパネル22の検出面の検出精度もその解像度に対応して256dot×192dotとしてある。ただし、タッチパネル22の検出面の検出精度は、LCD14の表示面の解像度よりも低くてもよく、高くてもよい。
なお、以下の説明では、タッチパネル22の検出座標は、左上隅を原点(0,0)とし、右水平方向をX軸の正方向とし、下垂直方向をY軸の正方向として説明する(LCDの座標系も同様)。また、3次元の仮想ゲーム空間(仮想ゲーム世界)は、水平面にXY座標があり、その水平面に対して鉛直な方向にZ軸があるとして説明する。
LCD12およびLCD14には異なるゲーム画像(ゲーム画面)を表示することができる。たとえば、一方のLCD(たとえば、LCD12)にゲームをプレイするためのゲーム画面を表示し、他方のLCD(たとえば、LCD14)に当該ゲームを操作するための文字情報を入力したり、アイコンを指示したりするためのゲーム画面(操作画面)を表示することができる。したがって、プレイヤはスティック24等でタッチパネル22を操作することにより、LCD14の画面上で、文字情報(コマンド)を入力したり、アイコン(或いは所定の画像)を指示したりすることができる。
このように、ゲーム装置10は、2画面分の表示部となるLCD12およびLCD14を有し、いずれか一方(この実施例では、LCD14)の上面にタッチパネル22が設けられるので、2画面(12,14)と2系統の操作部(20,22)とを有する構成になっている。
また、この実施例では、スティック24は、たとえば上側ハウジング16aの側面(右側面)近傍に設けられる収納部(収納穴)26に収納することができ、必要に応じて取り出される。ただし、スティック24を設けない場合には、収納部26を設ける必要もない。
さらに、ゲーム装置10はメモリカード(またはゲームカートリッジ)28を含み、このメモリカード28は着脱自在であり、下側ハウジング16bの裏面ないしは下端(底面)に設けられる挿入口30から挿入される。図1では省略するが、挿入口30の奥部には、メモリカード28の挿入方向先端部に設けられるコネクタ(図示せず)と接合するためのコネクタ46(図2参照)が設けられており、したがって、メモリカード28が挿入口30に挿入されると、コネクタ同士が接合され、ゲーム装置10のCPUコア42(図2参照)がメモリカード28にアクセス可能となる。
なお、図1では表現できないが、下側ハウジング16bの音抜き孔18と対応する位置であり、この下側ハウジング16bの内部にはスピーカ32(図2参照)が設けられる。
また、図1では省略するが、たとえば、下側ハウジング16bの裏面側には、電池収容ボックスが設けられ、また、下側ハウジング16bの底面側には、電源スイッチ、音量スイッチ、外部拡張コネクタおよびイヤフォンジャックなどが設けられる。
図2はゲーム装置10の電気的な構成を示すブロック図である。図2を参照して、ゲーム装置10は電子回路基板40を含み、この電子回路基板40にはCPUコア42等の回路コンポーネントが実装される。CPUコア42は、バス44を介してコネクタ46に接続されるととともに、RAM48、第1のグラフィック処理ユニット(GPU)50、第2のGPU52、入出カインターフエース回路(以下、「I/F回路」という。)54およびLCDコントローラ60が接続される。
コネクタ46には、上述したように、メモリカード28が着脱自在に接続される。メモリカード28は、ROM28aおよびRAM28bを含み、図示は省略するが、ROM28aおよびRAM28bは、互いにバスで接続され、さらに、コネクタ46と接合されるコネクタ(図示せず)に接続される。したがって、上述したように、CPUコア42は、ROM28aおよびRAM28bにアクセスすることができるのである。
ROM28aは、ゲーム装置10で実行すべきゲーム(仮想ゲーム)のためのゲームプログラム、画像(キャラクタ画像、背景画像、アイテム画像、アイコン(ボタン)画像、メッセージ画像など)データおよびゲームに必要な音(音楽)のデータ(音データ)等を予め記憶する。RAM(バックアップRAM)28bは、そのゲームの途中データやゲームの結果データを記憶(セーブ)する。
RAM48は、バッファメモリないしはワーキングメモリとして使用される。つまり、CPUコア42は、メモリカード28のROM28aに記憶されたゲームプログラム、画像データおよび音データ等をRAM48にロードし、ロードしたゲームプログラムを実行する。また、CPUコア42は、ゲームの進行に応じて一時的に発生するデータ(ゲームデータやフラグデータ)をRAM48に記憶しつつゲーム処理を実行する。
なお、ゲームプログラム、画像データおよび音データ等は、ROM28aから一度に全部、または部分的かつ順次的に読み出され、RAM48に記憶(ロード)される。
GPU50およびGPU52は、それぞれ、描画手段の一部を形成し、たとえばシングルチップASICで構成され、CPUコア42からのグラフィックスコマンド(graphics command :作画命令)を受け、そのグラフィックスコマンドに従ってゲーム画像データを生成する。ただし、CPUコア42は、グラフィックスコマンドに加えて、ゲーム画像データの生成に必要な画像生成プログラム(ゲームプログラムに含まれる。)をGPU50およびGPU52のそれぞれに与える。
また、GPU50には、第1のビデオRAM(以下、「VRAM」という。)56が接続され、GPU52には、第2のVRAM58が接続される。GPU50およびGPU52が作画コマンドを実行するにあたって必要なデータ(画像データ:キャラクタデータやテクスチャ等のデータ)は、GPU50およびGPU52が、それぞれ、第1のVRAM56および第2のVRAM58にアクセスして取得する。なお、CPUコア42は、描画に必要な画像データをGPU50およびGPU52を介して第1のVRAM56および第2のVRAM58に書き込む。GPU50はVRAM56にアクセスして描画のためのゲーム画像データを作成し、GPU52はVRAM58にアクセスして描画のためのゲーム画像データを作成する。
VRAM56およびVRAM58は、LCDコントローラ60に接続される。LCDコントローラ60はレジスタ62を含み、レジスタ62はたとえば1ビットで構成され、CPUコア42の指示によって「0」または「1」の値(データ値)を記憶する。LCDコントローラ60は、レジスタ62のデータ値が「0」である場合には、GPU50によって作成されたゲーム画像データをLCD12に出力し、GPU52によって作成されたゲーム画像データをLCD14に出力する。また、LCDコントローラ60は、レジスタ62のデータ値が「1」である場合には、GPU50によって作成されたゲーム画像データをLCD14に出力し、GPU52によって作成されたゲーム画像データをLCD12に出力する。
なお、LCDコントローラ60は、VRAM56およびVRAM58から直接ゲーム画像データを読み出したり、GPU50およびGPU52を介してVRAM56およびVRAM58からゲーム画像データを読み出したりする。
また、この実施例では、主として、LCD12(上画面)に仮想ゲーム世界の比較的広い範囲についての2次元の静止画像やプレイヤに操作方法を説明するための説明画面を表示し、LCD14(下画面)に仮想ゲーム世界の比較的狭い範囲についての3次元の動画像(アニメーション)を表示するようにしてある。
I/F回路54には、操作スイッチ20,タッチパネル22およびスピーカ32が接続される。ここで、操作スイッチ20は、上述したスイッチ20a,20b,20c,20d,20e,20Lおよび20Rであり、操作スイッチ20が操作されると、対応する操作信号(操作データ)がI/F回路54を介してCPUコア42に入力される。また、タッチパネル22からの座標データがI/F回路54を介してCPUコア42に入力される。さらに、CPUコア42は、ゲーム音楽(BGM)、効果音またはゲームキャラクタの音声(擬制音)などのゲームに必要な音データをRAM48から読み出し、I/F回路54を介してスピーカ32から出力する。
このような構成のゲーム装置10では、たとえば、アメリカンフットボールのようなスポーツアクションゲームを実行することができる。図示は省略するが、ハドル(作戦)モードでは、攻撃の種類(ラン・パス・キック(パント)など)およびランやパスする選手(オブジェクト)を選択するための画面がLCD14に表示される。簡単に説明すると、この画面では、プレイヤが操作するチーム(以下、「自チーム」という。)が攻撃側である場合、まず、攻撃の種類を示す複数のタッチスイッチが表示され、どのタッチスイッチをタッチするかに応じて攻撃の種類が決定される。次に、選手を示す複数のタッチスイッチが表示され、どのタッチスイッチをタッチするかに応じて選手が選択される。また、同様にして、自チームのフォーメーションが選択される。自チームが守備側である場合は、攻撃の種類を示す複数のタッチスイッチが表示され、プレイヤは対戦相手(他のプレイヤまたはコンピュータ(CPUコア42))が操作するチーム(以下、「敵チーム」という。)がどの種類の攻撃をするかを予想していずれかのタッチスイッチがタッチする。次に、選手を示す複数のタッチスイッチが表示され、敵チームがどの選手を選択するかを予想していずれかのタッチスイッチをタッチする。
一方、自チームが攻撃側である場合に、守備側における攻撃予想や選手予想の処理は、他のプレイヤが操作する他のゲーム装置10´(図示せず)において上述と同様に行われるか、または、コンピュータによって自動的にランダムまたは所定のアルゴリズムにより行われる。また、自チームが守備側である場合に、攻撃側における攻撃種類決定や選手選択の処理は、他のプレイヤが操作する他のゲーム装置10´において、上述と同様に行われるか、または、コンピュータによって自動的にランダムまたは所定のアルゴリズムにより行われる。後述するように、攻撃側における攻撃の種類や選手の選択内容と、守備側における攻撃予想や選手予想の内容との一致度に応じて、ディフェンスのエンカウントの内容が決定される。
このようにして攻撃の種類や選手が選択され、また、守備側における攻撃予想や選手予想の処理がおこなわれるとセットモードが設定され、図3に示すようなゲーム画面100およびゲーム画面120が表示される。なお、図3では省略するが、上述したように、LCD14上にはタッチパネル22が設けられる。
簡単に説明すると、ゲーム画面100は、スクリメージ状態を2次元(2D)で簡単に表示したものである。具体的には、フォーメーションデータによる2次元ゲーム空間の配置データ(2次元座標)に基づいて、プレイヤが操作するチーム(以下、「自チーム」という。)のオフェンスフォーメーションおよび対戦相手(他のプレイヤまたはコンピュータ(CPUコア42))が操作するチーム(以下、「敵チーム」という。)のディフェンスフォーメーションがスクリメージラインを挟んで示される。具体的には、スクリメージラインの下側に自チームがオフェンスフォーメーションで示され、スクリメージラインの上側に敵チームがディフェンスフォーメーションで示される。
なお、図3では、スクリメージラインを点線で示してあるが、実際のゲーム画面100においては、表示しなくてもよい。
また、図3に示す例では、オフェンスフォーメーションとしてTフォーメーションが示され、ディフェンスフォーメーションとして4−3フォーメーションが示される。ただし、後述するように、この実施例では、各チームのフォーメーションは予め決定されている。もちろん、各チームのフォーメーションを複数から選択可能にしてもよい。
図3からも分かるように、この実施例では、分かり易くするために、LCD12に表示されるゲーム画面100では、自チームのオブジェクトと敵チームのオブジェクトとを、異なる種類の顔画像で表示するようにしてある。また、ゲーム画面100では、スクリメージラインを基準とした比較的広範囲のゲーム世界が表示される。たとえば、2次元のゲーム世界に後述するフォーメーションデータに従って配置された各オブジェクトのほぼ全体が表示されるようにすることができる。
また、ゲーム画面120には、スクリメージ状態を、自チームのクォーターバック(QB)の斜め後方から見た場合の3次元(3D)の映像(アニメーション)が表示される。ただし、各オブジェクトは、2次元ゲーム世界の配置データに基づいて、3次元ゲーム世界に配置される。具体的には、各オブジェクトの3次元座標は、フォーメーションデータが示す各オブジェクト(ポジション)の2次元座標に基づいて算出される。たとえば、各オブジェクトの2次元座標(x,y)に、各々のオブジェクトの身長に応じた高さ方向の座標(z)が付加され、各オブジェクトの3次元座標(x,y,z)が得られる。そして、ここでは、仮想カメラの配置位置(位置座標)が、前述のようにして得られたQBの3次元座標の斜め後方に決定され、仮想カメラの向き(注視点)がQBの視線方向(スクリメージラインに対して垂直な相手ゴールの方向)に決定される。
ただし、QBの斜め後方から見た場合のアニメーションに限定される必要はなく、スクリメージ状態を俯瞰的に見た場合やスクリメージ状態をQBの視線で見た場合のアニメーションを表示するようにしてもよい。つまり、仮想カメラの位置および向きは限定される必要はない。
また、図面ではゲーム画面120(アニメーション)の或る時点における静止画像が表示される。以下、アニメーション(動画像)を表示する場合について同様である。
たとえば、スクリメージ状態で、QBが「ハット!」と叫ぶ処理がされ、その後、プレイヤの所望のタイミングでQB(別の選手でも良い)をクリック(比較的短い時間で、タッチオン−タッチオフ)することにより、攻撃処理が開始される。ただし、QBの声は、音声で出力してもよいし、単にゲーム画面120(またはゲーム画面100)にテキスト表示してもよいし、それら両方を実行するようにしてもよい。
攻撃処理が開示された後、ハドルモードでランが選択されていた場合には、プレイヤが何ら操作をしなくても、各オブジェクトの2次元座標(2次元位置)が一定時間(1フレーム:画面更新単位時間)毎に自動的に更新され、図4に示すように、ゲーム画面100では、更新された2次元位置に各オブジェクトの顔画像が表示される。つまり、各オブジェクトの顔画像が移動表示される。また、ゲーム世界のうち適切な領域が表示される。たとえば、RBの移動に応じてRBの周辺領域が表示される(スクロール表示される)。したがって、プレイヤは、ゲーム画面100において、変化するオブジェクトの配置状況など、現在のフィールドの様子を知ることができる。ただし、この実施例では、後述するように、QBおよびランニングバック(RB)は、当初はフォーメーションに応じて予め決定されたルートを移動するように、その位置が更新される。一方、後述するエンカウントのディフェンス(DF)は、RBに近づくように移動される。また、オフェンスラインのオブジェクトは、ディフェンスラインの一番近いオブジェクトの方に向けて移動するように、その位置が更新される。したがって、図4に示すゲーム画面100では、オフェンスラインのオブジェクトとディフェンスラインのオブジェクトとがぶつかり合う様子も示される。
なお、図4からも分かるように、この実施例では、ランプレイが開始された後では、QB(図4では省略)、RB、エンカウントのDF、オフェンスラインのオブジェクトおよびディフェンスラインのオブジェクト以外のオブジェクト(以下、「他のオブジェクト」と言うことがある。)は、ゲーム画面100に表示しないようにしてある。このため、当該他のオブジェクトについての2次元座標は更新されない。
一方、図示は省略するが、攻撃処理が開示された一定時間後、ゲーム画面120では、QBがRBにボールをハンドオフし、ボールを受け取ったRBが走り始める様子のアニメーションが表示される。なお、このとき、ゲーム画面100では、同様の様子が2次元画像で表示される。その後、図4に示すように、たとえば、RBが走る様子のアニメーションの画像(動画像)に矢印の画像122が重ねて表示された画像がゲーム画面120として表示される。なお、矢印の画像122は静止画像である。詳細な説明は省略するが、矢印の画像122は、ゲーム画面100(フィールド)上を移動(走行)するRBの方向を指しており、プレイヤは、当該方向にゲーム画面120(タッチパネル22)上でスクラッチ操作することにより、RBのゲーム世界における移動速度を速くすることができる。つまり、ゲインを大きくする(距離を稼ぐ)ことができる。
なお、この実施例では、矢印の画像122を表示し、スクラッチ操作を受け付けて、RBの移動速度を速くするようにしたが、この操作等は無くてもよい。かかる場合には、矢印の画像122を表示する必要もない。
そして、ルート上を移動するRBがスクリメージラインに一定距離(たとえば、一定距離A)以内に近づいたとき、エンカウントするDFが配置される。
なお、エンカウントするDFが配置されるのは、初回は、RBがスクリメージラインに一定距離A以内に近づいたときであり、2回目以降は、前回のエンカウントのDFを抜いてからRBがゲーム世界内を移動した距離が一定距離(たとえば、一定距離D)を超えると、次にエンカウントするDFが配置される。
なお、一定距離Aと一定距離Dとは、説明の便宜上、異なる文字を付してあるが、同じ値が設定されてもよく、異なる値が設定されてもよい。
たとえば、図4に示すように、エンカウントのDFは、現在のRBの位置からRBの進行方向に存在する位置であって、ゲーム世界のうちゲーム画面100に表示される領域の外縁付近(領域外であって領域に接する位置、領域外であって領域から所定距離離れた位置、または、領域内であって領域に接する位置)に配置される。したがって、図5に示すように、RBがフィールドを右斜め上方に移動している場合に、エンカウントするためのDFは、ゲーム世界のうち表示領域の外縁の右隅に当たる付近に配置される。つまり、エンカウントするためのDFは、ゲーム画面100の表示領域の外縁付近であり、RBの進行を妨げる位置に配置される。また、エンカウントするDFは、攻撃開始時において、表示されないDF(QB、RB、エンカウントのDF、オフェンスラインのオブジェクトおよびディフェンスラインのオブジェクト以外のオブジェクト)の中から選択される(ラインバッカ(LB),ディフェンスバック(DB),コーナーバック(CB),セーフティ(S)など)。この選択は予め決定してある優先順位に従って、或いはランダムに選択される。なお、一旦エンカウント配置され、RBに抜かれたDFは選択されない。
図5からも分かるように、エンカウントするDFは、ゲーム世界における現在位置に関係なく強制的にエンカウント位置に配置される。これは、上述したように、ランプレイが開始された後では、QB、RB、オフェンスライン、ディフェンスライン以外のオブジェクトは、ゲーム画面100に表示されず、また、2次元座標が更新されないためである。
なお、RBが予め決められたルート上を移動したり、所定のアルゴリズムで移動したりするようになっている場合、RBの移動先を予測処理して、その位置にDFをエンカウント配置するようにしてもよい。
なお、後で詳細に説明するように、エンカウントの回数および各回においてエンカウントするDFの人数は、ハドルモードでオフェンスが攻撃内容を決定し、これに対してディフェンスがオフェンスの攻撃内容を予想した時点で決定される。
このようにして、エンカウントするためのDFが配置され、さらに、オブジェクトの2次元座標が更新される。つまり、RBはゲーム画面100の予め決められたアルゴリズムで上方向に移動するように自動的に走行し、エンカウントするDFはRBに近づくようにゲーム画面100の下方向に移動するように走行する。そして、図6に示すゲーム画面100から分かるように、RBの位置とエンカウントのDFの位置とが一定距離(ここでは、一定距離B<一定距離A)以内になると、エンカウントモードになる。
エンカウントモードでは、各オブジェクトの2次元座標に基づいて各オブジェクトの3次元座標が計算される。3次元座標の算出方法は、上述したセットモードの場合と同じであるが、エンカウントモードでは、RBとエンカウントのDFのみ(以下、「エンカウントに関するオブジェクト」と言うことがある。)の3次元座標が算出される。つまり、後述するように、エンカウントに関するオブジェクトのみが3次元ゲーム世界に配置されるのである。エンカウントに関するオブジェクトの3次元座標が計算されると、当該3次元座標にエンカウントに関するオブジェクトがモデリングされる。また、仮想カメラの位置がRBの3次元座標(目の位置)に設定され、さらに、仮想カメラの方向が、エンカウントのDFの3次元座標の方向に決定される。ただし、エンカウントのDFが複数存在するときは、そのうち1つの(たとえば、中心の)DFの3次元座標に向かう方向、または、平均した3次元座標に向かう方向に決定される。したがって、図7に示すように、ゲーム画面120では、エンカウントのDFが次第に近づいて来るようなアニメーション(3次元画像)が表示される。
なお、仮想カメラの方向は、2次元ゲーム世界におけるRBの移動方向に対応する3次元ゲーム世界の方向(上下方向は一定の方向)としてもよいし、2次元ゲーム世界においてRBの向きが設定される場合には、当該向きに対応する3次元ゲーム世界の方向としてもよい。
また、この実施例では、エンカウトするDFを分かり易く表示するために、仮想カメラの位置をRBの3次元座標に基づいて決定し、カメラの向きをRBから当該エンカウントするDFを見る方向に決定するようにしてある。しかし、仮想カメラの位置および向きはこれに限定される必要はない。
たとえば、RBの2次元座標に基づいて決定することもできる。また、たとえば、仮想カメラの位置は、エンカウントするDF(複数の場合には、いずれか1のDFまたはいずれか2以上のDF)の3次元座標(2次元座標でもよい。)に基づいて決定することもできる。または、仮想カメラの位置は、RBおよびエンカウントするDFの3次元座標(2次元座標でもよい。)に基づいて決定することもできる。
また、仮想カメラの向きは、RBとエンカウトするDFとの両方がゲーム画面120に表示されるように設定することもできる。たとえば、仮想カメラの位置をRBの後ろに設定して、RBおよびエンカウトするDFを撮影可能な方向(RBの顔の向きや進行方向)に設定することができる。この場合には、RBの主観的なゲーム画像120が表示される。また、たとえば、RBとエンカウトするDFの間(中間)であり、水平(並行)に移動した位置からRBおよびエンカウトするDFを撮影可能な方向(RBおよびDFの顔の向き(進行方向)と直交する方向)に設定することもできる。この場合には、RBとDFとが接近したり、ぶつかり合ったりする様子を横から見たゲーム画面120が表示される。
また、図7に示すゲーム画面120には、複数のマーク画像124が表示される。マーク画像124の表示位置は、エンカウントのDF(オブジェクト)の3次元座標に基づいて算出される。まず、エンカウントのDFの3次元座標からマーク画像に係る3次元座標が算出される。そして、算出された3次元座標がスクリーン座標に変換(投影変換)され、計算されたスクリーン座標にマーク画像124が配置される。したがって、マーク画像124が3次元表示されるゲーム画像に合成される(重ねられる)。
一方、LCD12には、エンカウントモードにおける操作方法を説明する内容がゲーム画面100として表示される。たとえば、マーク画像124の中心をタッチすべき旨のメッセージが表示されるとともに、タッチが正確である場合にDFを抜くことができる旨のメッセージが表示される。
ここで、プレイヤが、ゲーム画面120のマーク画像124をタッチすると、タッチの良否(成功/失敗)が判断される。マーク画像124の中心部がタッチされた場合には、マーク画像124へのタッチが成功であると判断する。しかし、マーク画像124の中心部から離れた位置やマーク画像124以外がタッチされた場合には、マーク画像124へのタッチが失敗であると判断する。
さらに、マーク画像124へのタッチが成功である場合には、タッチの素早さとタッチ(タッチ位置)の正確さに応じて、攻撃の成功/失敗が判断される。具体的には、タッチの素早さとタッチ(タッチ位置)の正確さに応じて、RBの移動距離(エンカウントのDFを抜く行為における移動距離)が決定される。たとえば、マーク画像124が表示されてからタッチするまでの時間が短い程、または、マーク画像124の中心に近い程、移動距離が長くなる。したがって、マーク画像124の中心を素早く上手にタッチすると、DFを超えた位置までの距離を得ることができ、DFを抜くことができる。一方、マーク画像124がタッチするまでの時間が長い場合、または、マーク画像124の中心から比較的外れた位置をタッチした場合、さらに、上述したように、マーク画像124へのタッチが失敗である場合には、RBはDFに捕まえられたり、DFにタックルされたりして、攻撃を失敗してしまう。このように、エンカウントモードでは、プレイヤのタッチ操作によるミニゲームが実行され、タッチ操作の結果(ミニゲームの結果)に応じてアメリカンフットボールのゲーム展開(ゲームの状況)が変化される。
ここで、マーク画像124の配置位置について具体的に説明する。エンカウントするDFが3人存在する場合には、隣り合う2人のDFの間にマーク画像124が表示され、両端のDFでは、さらにその外側に仮想のDFを配置して、仮想のDFとエンカウントのDFとの間にマーク画像124が表示される。マーク画像124は、隣接する2人のDF(仮想のDFを含む。)の中間位置(中点)に表示され、その大きさは隣接するDF間の距離、およびRBとDFとの距離に応じて決定される。これは、実際のアメリカンフットボールにおいて、RBがDFを抜く場合の抜き易さを考慮したためである。たとえば、隣接する2人のDF間の距離が長ければ、RBがその間を抜いて行くのは比較的簡単である。また、RBとDFとの距離が離れている場合には、RBはDFにタックルされ難く、また、RBはDFにつかまれ難い。したがって、隣接する2人のDF間の距離やRBとDFとの距離が長い場合には、マーク画像124の大きさは大きくされ、逆に、それらの距離が短い場合には、マーク画像124の大きさは小さくされる。たとえば、距離の大きさに応じてマーク画像124の半径(直径)を線形的に(または、段階的に)決定するようにすればよい。このようにして、DFの抜き易さ(または抜き難さ)が、タッチのし易さ(またはし難さ)で表現される。なお、エンカウントのDFの能力パラメータに応じてマーク画像の大きさを決定しても良い。
具体的には、DFおよび仮想のDFの位置関係は図8(B)の場合、図8(A)に示すようなゲーム画面120が表示される。なお、図8(A)では、DFを平面的で簡単に記載してあるが、実際には、図7に示したような3次元のゲーム画面120が表示される。また、図8(B)では、簡単のため、2次元でオブジェクト(RB,DF)の位置関係を表わしてある。図8(B)に示すように、仮想のDFは、配置ライン上であり、両端のDFと水平に(RBの移動方向に対して垂直な方向に)並ぶ位置に配置される。図8(B)からも分かるように、配置ラインは、DFとRBとの距離が近くなるにつれて、仮想のDFがRBに近づくように斜めに設けられる。これは、DFはRBに近づく方向に移動され、DFがRBに近づいたときにマーク画像124を比較的小さく表示するためである。つまり、図8(B)の実線で示すように、2本の配置ラインを並行に設けた場合には、DFがRBに近づくに従って図8(A)に示す両端のマーク画像124が大きくなってしまうのである。
さらに、図面では表現できないが、RBの能力値(スピード,パワー,テクニック)とDFの能力値との差(大小)に基づいてマーク画像124は振動表示される。たとえば、RBの能力値よりもDFの能力値の方が大きい場合、ゲーム画面120が更新される度に、マーク画像124の表示位置が左右に移動される。具体的には、1フレーム毎に、マーク画像124の位置座標のX座標(ゲーム画面120の横方向の座標)の値が変化される。ただし、上述したように、マーク画像124は隣接する2人のDFの中点に表示するようにしてあるため、いずれかのDFの能力値がRBの能力値よりも大きい場合に、当該マーク画像124は振動される。
詳細な説明は省略するが、能力値の大小は、各パラメータで比較判断するようにしてもよく、すべてのパラメータの合計値を算出して比較判断するようにしてもよい。この比較判断の方法は、ゲームの開発者やプログラマが設定する事項である。
なお、図示は省略するが、この実施例では、マーク画像124をゲーム画面120の左右(横)方向に振動表示することにより、タッチ操作を困難にする、すなわち能力値の高いDFを抜くのを難しくするようにしてある。しかし、これに限定される必要はなく、マーク画像124をゲーム画面120の上下(縦)方向に振動表示したり、マーク画像124を点滅表示したり、マーク画像124を半透明で表示したりするようにしてもよい。
また、ハドルモードでは、パスやパントを選択することもできるが、以下では、パスが選択された場合について簡単に説明し、パントが選択された場合については説明を省略することにする。
ハドルモードでパスが選択され、図3に示したように、スクリメージ状態において、ゲーム画面120上のQBをクリックすると、攻撃が開始され、パスモードが設定される。図示は省略するが、パス可能なレシーバのオブジェクトの3次元画像に重なるように、マーク画像が表示されたゲーム画面120が表示される。たとえば、マーク画像は、レシーバとDFとの位置関係に応じて、位置や大きさが変化する。タッチ位置が、マーク画像の中心部に近いほど、パスの成功率が上がる。プレイヤは、QBが所望のレシーバにボールをパスするように、当該所望のレシーバに重なるように表示されたマーク画像をタッチする。すると、QBがレシーバにボールをパスする(投げる)。
また、QBがレシーバに向けてボールをパスすると、レシーブモードが設定される。このレシーブモードでは、プレイヤは、ボールのキャッチに有利な場所を占めるような操作をする。図示は省略するが、ゲーム画面120にはスクラッチエリアが設けられ、このスクラッチエリアを素早く擦る(スクラッチする)ことにより、ゲージを上昇させる。ゲージの値に応じてキャッチの有利さが決定される。
ボールがレシーバに十分近づくと、キャッチモードが設定される。このキャッチモードでは、プレイヤは、パスモードで選択したレシーバの捕球動作を指示することになる。図示は省略するが、このレシーブモードでは、ボールに重ねてマーク画像が表示されたゲーム画面120が表示される。また、ゲーム画面120では、ボールがレシーバに近づくに従ってマーク画像が大きく表示される。ただし、マーク画像が大きくなるにつれてボールの移動速度が速くなるため、タイミングを計ってタッチする必要がある。なお、レシーバのキャッチ能力に応じてもマーク画像の大きさは変化される。マーク画像の中心部をクリックすることができれば、レシーバがボールをキャッチする。ただし、レシーブモードで、キャッチに有利な場所を占めることが出来なかった場合や敵のDFの能力値がレシーバの能力値よりも大きい場合には、ボールを取り損ねたり、パスカットされたり、インターセプトされたりする。
図9は、図2に示したRAM48のメモリマップの例を示す図解図である。この図9を参照して、RAM48は、プログラム記憶領域480およびデータ記憶領域482を含む。プログラム記憶領域480には、ゲームプログラムが記憶され、ゲームプログラムは、メイン処理プログラム480a、タッチ入力検出プログラム480b、タッチ位置検出プログラム480c、画像生成プログラム480d、画像表示プログラム480e、エンカウント決定プログラム480f、オブジェクト移動制御プログラム480g、マーク画像表示制御プログラム480hおよびカメラ制御プログラムなどによって構成される。
メイン処理プログラム480aは、ゲーム(この実施例では、アメリカンフットボールゲーム)のメインルーチンを処理するためのプログラムである。タッチ入力検出プログラム480b、タッチ入力を検出するためのプログラムである。具体的には、CPUコア42は、タッチ入力検出プログラム480bを実行すると、I/F回路54に設けられる座標データバッファ(図示せず)に記憶された座標データの読み出し処理を実行する。ここで、座標データが記憶されておらず、読み出すことができない場合には、タッチ入力が無いと判断する。一方、座標データが記憶されている場合には、座標データを読み出し、タッチ入力が有ると判断して、読み出した座標データをデータ記憶領域482に記憶する。
タッチ位置検出プログラム480cは、タッチ入力が示す座標がゲーム画面120上のいずれの位置を示すかを検出するためのプログラムである。この実施例では、上述したように、LCD14の解像度とタッチパネル22の検出精度とは同じであり、座標系を同じに設定しているため、タッチ入力検出プログラム480bに従って検出された座標データが示す座標をそのまま用いてゲーム画面120上のいずれの位置であるかを容易に知ることができる。
画像生成プログラム480dは、画像データ(ボーンデータやポリゴンデータを含むモデルデータ,テクスチャデータなど)を用いて、ゲームに登場する動画オブジェクト(選手、ボールなど)やフィールドなどの背景オブジェクトの画像を生成するためのプログラムである。また、この実施例では、画像生成プログラム480dは、予め生成されたテクスチャ画像(顔画像)を貼り付けてゲーム画面100を生成する場合にも実行される。画像表示プログラム480eは、画像生成プログラム480dに従って生成された画像を表示するためのプログラムである。
エンカウント決定プログラム480fは、ハドルモードにおいてプレイヤが選択したオフェンスの攻撃内容とディフェンスの予想内容とから、後述するテーブルデータ482g(図12(C)参照)を用いて、エンカウントの回数および各回におけるエンカウントするDFの人数を決定するためのプログラムである。オブジェクト移動制御プログラム480gは、各オブジェクトの2次元座標を更新するためのプログラムである。たとえば、一部のオブジェクト(RB)は、予め決定されているルートデータ482f(図12(B)参照)に従って、その2次元座標が更新される。
マーク画像表示制御プログラム480hは、マーク画像124の表示位置および大きさを決定し、ゲーム画像に合成するためのプログラムである。カメラ制御プログラム480iは、2次元座標に従って配置されたRBの位置と敵のDFの位置とが所定の関係を満たすとき、RBの2次元座標に基づいて、仮想カメラの3次元位置および向きを制御するためのプログラムである。この実施例では、所定の関係は、RBとエンカウントのDFとの距離が一定距離B以内かどうかで、所定の関係を満たすか否かが判断される。
図示は省略するが、プログラム記憶領域480には、ゲーム音再生プログラムやバックアッププログラムなども記憶される。ゲーム音再生プログラムは、キャラクタの音声(音)、効果音、BGMなどのゲームに必要な音を生成し、出力するためのプログラムである。また、バックアッププログラムは、所定のイベントや所定の操作に従って、ゲーム中に発生するゲームデータ(途中データ,結果データ)を、メモリカード28のRAM28bに記憶(セーブ)するためのプログラムである。
データ記憶領域482は、CPUコア42の記憶領域、作業領域ないしバッファ領域として使用される。たとえば、図10に示すように、座標データ482a、カメラ設定データ482b、アニメーションデータ482c、モデルデータ482d、フォーメーションデータ482e、ルートデータ482f、テーブルデータ482g、選手パラメータ482h、エンカウント配置データ482i、マーク変位データ482j、オブジェクト2次元データ482k、オブジェクト3次元座標データ482m、マーク2次元座標データ482n、マーク3次元座標データ482pなどのデータが記憶される。また、データ記憶領域482には、エンカウント後経過カウンタ482qも設けられる。
座標データ482aは、タッチ座標の座標データであり、上述したタッチ入力検出プログラム480bに従って検出される。カメラ設定データ482bは、仮想カメラの配置位置(3次元位置)および向き(カメラ座標系の各軸との間で成す角度、または、注視点の3次元座標)についてのデータであり、複数種類用意されている。これは、同じシーン(アニメーション)であっても、仮想カメラの位置を変えたり、仮想カメラの向きを変えたりすることにより、ゲーム画面120のバリエーションを増やすためである。また、プレイヤが操作する自チームが攻撃側(攻撃ターン)である場合と守備側(守備ターン)である場合とで、ゲーム画面120を変化させる必要があるためでもある。具体的には、図11(A)に示すように、カメラ設定データ482bとして、設定Aデータ(位置a1,方向a2)、設定Bデータ(位置b1,方向b2)および設定Cデータ(位置c1,方向c2)などが記憶される。
アニメーションデータ482cは、オブジェクトに走る、倒されるなどの任意の動作をさせるためのデータであり、オブジェクトの各部位の動きや各関節の角度の変化が時系列に従って示される。具体的には、図11(B)に示すように、アニメーションデータ482cとしては、走る動作については、ボールを片手で持って走るアニメーションのAデータ、ボールを両手で持って走るアニメーションのBデータ、のろい選手が走るアニメーションのCデータなどが記憶される。また、倒される動作については、タックルで倒される1アニメーションのAデータ、タックルで倒される2アニメーションのBデータ、捕まえられて倒されるアニメーションのCデータなどが記憶される。なお、図示は省略するが、捕まえる動作、タックルをかわす動作など他の動作についてのアニメーションデータも記憶される。
モデルデータ482dは、オブジェクトの骨組み(ボーンとジョイント)およびオブジェクトのポリゴンについてのデータである。この骨組みとポリゴンとによって、身長や体型が変化される。たとえば、図11(C)に示すように、長身で細身の選手Aデータ、長身で普通体型の選手Bデータ、普通の身長および体型の選手Cデータなどが記憶される。図示は省略するが、身長が低いオブジェクトや太っているオブジェクトなどのデータも記憶される。
フォーメーションデータ482eは、チーム毎に予め決定されるフォーメーション(オフェンスフォーメーションおよびディフェンスフォーメーション)における各オブジェクト(ポジション)についての2次元ゲーム世界における座標データである。たとえば、オフェンスフォーメーションとしては、Iフォーメーション,Tフォーメーション、ウィッシュボーンフォーメーション、ショットガンフォーメーションなどがある。また、ディフェンスフォーメーションとしては、4−3フォーメーション、4−4フォーメーション、5−2フォーメーション、3−4フォーメーションなどがある。具体的には、図12(A)に示すように、チームAデータ、チームBデータ、チームCデータおよびチームDデータなどのように、チーム毎にフォーメーションデータ482eが記憶される。
ルートデータ482fは、各フォーメーションにおけるRB(2人)とQB(1人)との2次元の移動経路を示すデータである。たとえば、攻撃開始から各フレームの2次元座標が時系列に従って記述される。具体的には、図12(B)に示すように、フォーメーションAデータ、フォーメーションBデータおよびフォーメーションCデータなどのように、各フォーメーションについて設定される。
テーブルデータ482gは、ランプレイにおけるエンカウントの回数および各回でエンカウントするDFの人数を決定するためのテーブルデータである。上述したように、ハドルモードでは、攻撃側のチームのプレイヤがプレイの内容を選択するとももに、ランプレイを選択した場合には、さらに、ランする経路(右,中,左)を選択するとともに、ランするRBを選択する。一方、守備側のチームのプレイヤは、攻撃側のチームのプレイヤとほぼ同様の操作をすることにより、攻撃側が選択したプレイの内容を予想する。具体的には、ランプレイの場合には、ランする経路(右,中,左)を予想するともに、ランするRBを予想する。また、パスプレイの場合には、ボールを投げる方向(右,中,左)を予想するとともに、ボールをレシーブするレシーバを予想する。
図12(C)に示すように、テーブルデータ482gでは、攻撃側のチームが選択したランの経路と守備側のチームが予想したランの経路とに応じて、エンカウントの回数および各回のDFの人数が記述される。たとえば、攻撃側のチームが選択したランの経路が「左」であり、守備側のチームが予想したランの経路が「右」である場合、つまり守備側のチームの予想が逆の場合には、エンカウントの回数は「3」であり、1回目にエンカウントするDFの人数は「1」であり、2回目にエンカウントするDFの人数は「2」であり、3回目にエンカウントするDFの人数は「3」である。また、攻撃側のチームが選択したランの経路が「左」であり、守備側の推測したランの経路が「左」である場合、つまり守備側のチームの予想が的中した場合には、エンカウントの回数は「1」であり、エンカウントする人数は「3」である。さらに、攻撃側のチームが選択したランの経路が「中」であり、守備側のチームが予想したランの経路が「右」または「左」である場合、つまり守備側のチームの予想が逆ではないが外れている場合には、エンカウントの回数は「2」であり、1回目にエンカウントするDFの人数は「2」であり、2回目にエンカウントするDFの人数は「3」である。
つまり、守備側の予想が的中した場合に、エンカウントの回数が最小値となり、守備側の予想が逆である場合に、エンカウントの回数が最大値となり、そして、守備側の予想が逆ではないが外れた場合に、エンカウントの回数は最大値と最小値との中間の値となる。これは、予想が外れた場合に、攻撃側のゲインをより多くするためである。つまり、この実施例では、後述するように、エンカウントが終了すると、RBがDFに倒されるようにしてあるため、エンカウントの回数が多い程、RBが走行する距離を延ばす機会が増えるのである。したがって、プレイヤの操作によっては、エンカウントの回数が多くても、エンカウントのDFによって倒されてしまうことがあり、かかる場合には、RBの走行する距離すなわちゲインを稼ぐことができない。また、ランする選手の予想が的中した場合には、エンカウントの回数を1つ減らすようにしてある。つまり、RBの走行する距離を延ばす機会が少なくされる。
選手パラメータ482hは、各選手(オブジェクト)の能力値(この実施例では、スピード、パワー、テクニック)についてのデータである。たとえば、スピード、パワー、テクニックは、それぞれ、レベルを表わす数値やアルファベットなどで表わされ、そのデータが選手パラメータ482hとして記憶される。
エンカウント配置データ482iは、図5を用いて説明したように、エンカウントするDFを準備する場合に、各DFの配置位置を決定するための2次元座標データである。エンカウントするDFが1人の場合には、その配置位置のみを決定するだけであるが、エンカウントするDFが2人または3人の場合には、単にDFが水平(横)に並ぶのみならず、2人または3人のDFでフォーメーションを作ることができる。たとえば、エンカウントするDFが2人である場合には、各DFの配置位置をずらすことにより、斜めに並んだフォーメーションを構成することができる。また、エンカウントするDFが3人である場合には、各DFの配置位置をずらすことにより、斜めに並んだフォーメーション、山型のフォーメーション、谷型のフォーメーションを構成することができる。このようなフォー
メーション毎にデータが記憶されるのである。具体的には、図13(A)に示すように、エンカウント配置データ482iには、エンカウントするDFの人数に応じて、配置Aデータ、配置Bデータ、配置Cデータ、配置Dデータ、配置Eデータおよび配置Fデータなどのデータが記憶される。
マーク変位データ482jは、RBとDFとの能力値の違いにより、マーク画像124を振動表示する場合のマーク画像124の表示位置(DFの中点)からの変位量(差分)を示すデータである。この実施例では、マーク画像124をゲーム画面120の横方向(X軸方向)に振動させるため、X軸方向の変位量が各フレームに従って記述される。具体的には、図13(B)に示すように、マーク変位データ482jは、変位データA、変位データB、変位データC、変位データD、変位データE、変位データF、変位データG、…ように複数種類記憶されている。これは、能力値の差に応じて異なる振動表示をするためである。たとえば、能力値の差が大きい程、変位量が大きくされる。逆に、能力値の差が大きい程、変位量を小さくしてもよい。ただし、マーク変位データ482jでは、エンカウントモードが設定されてからのフレーム数が示され、そのフレーム数は後述するエンカウント後経過カウンタ482qによってカウントされる。
オブジェクト2次元座標データ482kは、各オブジェクトの2次元ゲーム世界における現在座標についての座標データである。この座標データは、1フレーム毎に更新される。オブジェクト3次元座標データ482mは、オブジェクト2次元座標データ482kに基づいて算出される各オブジェクトの2次元ゲーム世界における座標についてのデータ(座標データ)である。たとえば、3次元座標の座標データは、特定のアニメーション(スクリメージ状態、タッチダウン、タックル、パスカット、インターセプトなど)を表示する場合や、エンカウントモードにおいてミニゲームのための画像を表示する場合に算出される。
マーク2次元座標データ482nは、後述するマーク3次元座標データ482pが示す座標(3次元座標)を投影変換することにより算出されたマーク画像124の2次元座標の座標データである。マーク3次元座標データ482pは、マーク画像124の3次元座標の座標データである。上述したように、マーク画像124の3次元座標は、エンカウントのDFの3次元座標に基づいて算出される。また、上述したように、エンカウントのDFの配置位置は1フレーム毎に更新されるため、マーカ124の3次元位置(3次元座標)も1フレーム毎に更新される。したがって、上述したマーカ2次元座標データ482nも1フレーム毎に更新される。
エンカウント後経過カウンタ482qは、エンカウントモードになると、リセットおよびスタートされ、エンカウントが開始されてからの経過時間(フレーム数)をカウントする。
なお、図示は省略するが、データ記憶領域482には、ゲームデータ(途中データや結果データ)、サウンドデータ、画像データのようなデータが記憶されるともに、フラグや他のカウンタなども設けられる。
具体的には、図2に示したCPUコア42が図14〜図20に示すフロー図に従って攻撃処理を実行する。ただし、簡単のため、プレイヤが操作する自チームが攻撃側であり、守備側のチームはコンピュータ(CPUコア42)が操作している場合について説明する。図14に示すように、CPUコア42が攻撃処理を開始すると、ハドルモードを設定し、ステップS1で、ランのコマンドが選択されたかどうかを判断する。つまり、プレイヤがランプレイを選択したかどうかを判断する。ステップS1で“NO”であれば、つまりランのコマンドが選択されていなければ、ステップS3で、他のコマンドが選択されたか
どうかを判断する。ステップS3で“NO”であれば、何らコマンドが選択されていないと判断して、ステップS1に戻る。しかし、ステップS3で“YES”であれば、つまりパスやパントのような他のコマンドが選択された場合には、ステップS5で、当該他のコマンドに従った処理を実行し、攻撃処理を終了する。
また、ステップS1で“YES”であれば、つまりランのコマンドが選択されれば、ステップS7で、テーブルデータ482gを読み出し、ステップS9で、守備側の予想をランダムに決定する。具体的には、ランするRBおよびランの経路がランダムに選択(決定)される。つまり、守備側のチームが攻撃側のチームの攻撃を予想するのである。
続くステップS11では、テーブルデータ482gに従ってエンカウントの回数および各回のエンカウントするDFの人数を決定する。続くステップS13では、選手予想が的中かどうかを判断する。つまり、守備側のチームが予想したRBが、攻撃側のチームが選択したRBと一致するかどうかを判断する。ステップS13で“NO”であれば、つまり選手予想が外れていれば、そのままステップS17に進む。しかし、ステップS13で“YES”であれば、つまり選手予想が的中していれば、ステップS15で、エンカウント回数を減算してから、ステップS17に進む。
ステップS17では、フォーメーションに従ってオブジェクトの2次元座標を設定する。つまり、セットモードが設定され、チーム毎に決定されるフォーメーションデータ482eに従って、攻撃側のチームの各ポジションについて決定された2次元座標にオブジェクトが配置され、守備側のチームの各ポジションについて決定された2次元座標にオブジェクトが配置される。次のステップS19では、スクリメージ状態を2次元の静止画で表示する。つまり、図3に示したようなゲーム画面100をLCD12に表示する。続いて、ステップS21では、スクリメージ状態を3次元の動画で表示する。ここでは、オブジェクト2次元座標データ482kが示す2次元座標に基づいて3次元座標が算出され、算出された3次元座標にモデルデータ482d等を用いて生成されたオブジェクトが配置(モデリング)され、その様子が、選択されたカメラ設定データ482bが示す3次元位置および向きの仮想カメラで撮影され、スクリメージ状態のゲーム画面120が表示される。したがって、たとえば、図3に示したようなゲーム画面120を表示することができる。
続くステップS23では、攻撃開始指示があるかどうかを判断する。つまり、プレイヤが、ゲーム画面120に表示されるQBをクリックしたかどうかを判断する。ステップS23で“NO”であれば、つまり攻撃開始指示がなければ、そのままステップS23に戻り、攻撃開始指示があるのを待機する。しかし、ステップS23で“YES”であれば、つまり攻撃開始指示があれば、図15に示すステップS25で、オブジェクトの2次元座標を変更する。この実施例では、スクリメージ状態から攻撃を開始された後では、攻撃側のRB、QBの2次元座標をルートデータ482fに従って更新するとともに、攻撃側のガード(レフトガード(LG)、ライトガード(RG))やセンター(C)と守備側のディフェンスライン(レフトエンド(LE)、ライトエンド(RE)、ディフェンスタックル(DT))とが互いにぶつかり合うように2次元座標を更新する。ただし、他のオブジェクトは、ゲーム画面100に表示しないようにしてあるため、2次元座標を更新せずに、CPUコア42の処理負担を軽減してある。
次のステップS27では、更新された2次元座標に従ってオブジェクトを2次元表示する。つまり、更新された2次元位置に対応するオブジェクトの顔画像を貼り付けたゲーム画面100をLCD12に表示する。また、ステップS29では、RBが走っているアニメーションが3次元表示される。つまり、CPUコア42は、ステップS25で更新された2次元座標に基づいて、エンカウントに関するオブジェクトの3次元座標を算出する。
次に、算出した3次元座標に各オブジェクトをモデリングし、各々のオブジェクトをアニメーションデータ482cに従って動作させる。また、RBを撮影するように、仮想カメラの位置および向きを決定する。すなわち、RBを正面から撮影するためのカメラ設定データ482bを選択する。したがって、図4に示したように、RBが走っているアニメーションのゲーム画面120が表示される。なお、図示は省略するが、このとき、矢印の画像122がRBのアニメーションに重ねて表示される。以下、アニメーションのゲーム画面120を表示する場合には、同様の処理が実行される。
続くステップS31では、RBがスクリメージラインから一定距離A以内に存在するかどうかを判断する。ステップS31で“NO”であれば、つまりRBがスクリメージラインから一定距離A以内に存在しない場合には、そのままステップS25に戻る。しかし、ステップS31で“YES”であれば、つまりRBがスクリメージラインから一定距離A以内に存在する場合には、ステップS33で、LB,DB,CB,Sの中から、テーブルデータ482gに基づいて決定された数だけDFを選択する。ただし、既に(前回)RBに抜かれたDFは選択することができない。また、エンカウントのDFは、予め決定した優先順位に従って、または、ランダムで選択される。
続いて、ステップS35では、テーブルデータ482gに基づいて決定されるDFの人数に基づいて、エンカウント配置データ482iの1つを選択する。たとえば、エンカウント人数が「2」または「3」である場合には、複数の配置データから1つの配置データがランダムに選択される。そして、ステップS37では、選択された選手(オブジェクト)の2次元座標を、基準座標(RBのX座標,表示領域の上端Y座標−α)を基準として、ステップS35で選択されたエンカウント配置データ482iに基づいて、再配置する。ただし、αは2〜3dotに設定される。たとえば、3人のDFを配置する場合には、中央に位置するDFが基準座標に配置され、当該中央のDFを中心に、エンカウント配置データ482iに従って他の2人のDFが配置され、エンカウントするDFによってフォーメーションが形成される。
図16に示すように、次のステップS39では、RBとエンカウントするDFとの距離が一定距離B以内であるかどうかを判断する。ただし、エンカウントするDFが複数である場合には、各DFとの距離が一定距離B以内であるか否かが判断される。ステップS39で“NO”であれば、つまりRBとエンカウントするDFとの距離が一定距離B以内でなければ、RBを所定のアルゴリズム(説明の便宜上、「アルゴリズムA」という。)で移動させる。上述したように、RBの位置(2次元座標)はルートデータ48fに従って更新される。しかし、RBの位置が或る程度更新された後では、アルゴリズムAに従って更新される。たとえば、アルゴリズムAは、RBの位置を示す2次元座標のY座標を2〜3dot減算する演算処理である。したがって、RBがゲーム画面100の真上方向に移動するように、RBが配置される2次元座標が更新される。ただし、これに限定される必要はなく、RBの位置を示す2次元座標のX座標およびY座標の両方を変化させることにより、斜め上方向にRBを移動させるようにすることも可能である。
続くステップS43では、エンカウントするDFをRBに近づくように移動させる。具体的には、ステップS41で更新されたRBが配置される2次元座標に近づくように、DFが配置される2次元座標の少なくとも一方の成分が更新される。次にステップS45では、更新された2次元座標に従って、エンカウントに関するオブジェクトを2次元表示する。つまり、図4または図5に示したように、更新したゲーム画面100をLCD12に表示する。そして、ステップS47で、RBが走っているアニメーションを3次元表示して、つまり更新したゲーム画面120をLCD14に表示して、ステップS39に戻る。
また、ステップS39で“YES”であれば、つまりRBとエンカウントするDFとの距離が一定距離B以内であれば、ステップS49で、エンカウントするDFを3次元空間に配置する。ここでは、エンカウントに関するオブジェクトの3次元座標が、該当するオブジェクトの2次元座標に基づいて算出され、算出された3次元座標に各々のオブジェクトがモデリングされる。そして、アニメーションデータ482cに従って走る動作が実行される。続くステップS51では、エンカウント後経過カウンタ482qをリセット(カウント値=0)し、ステップS53では、操作説明を表示する。つまり、図6に示したように、操作方法を説明するためのゲーム画面100をLCD12に表示する。
続いて、図17に示すステップS55で、仮想カメラの位置および向きを制御する。ここでは、ステップS49においてモデリングされたQBの頭部の位置に仮想カメラの配置位置が決定され、さらに、QBの視線方向に仮想カメラの向きが決定される。ただし、視線方向すなわち仮想カメラの向きは、エンカウントするDFが1人の場合には、当該1人のDFに決定される。また、エンカウントするDFが2人の場合には、仮想カメラの向きは、当該2人のDFの間(中央)に決定される。さらに、エンカウントするDFが3人の場合には、仮想カメラの向きは、が3奇数(この実施例では、3)である場合には、中央のDFに決定される。一般的に言うと、仮想カメラの向きは、(1)エンカウントするDFが1人の場合には当該DFに決定され、エンカウントするDFが2人以上であれば、(2)DFの人数が奇数の場合には中央のDFに決定され、(3)DFの人数が偶数の場合には中央のDFの間に決定される。
そして、ステップS57で、仮想カメラで3次元空間を撮影したゲーム空間画像を生成する。つまり、仮想カメラで撮影された映画(画像)が投影変換され、2次元画像が生成される。次のステップS59では、後述するマーク表示処理(図20参照)を実行する。したがって、エンカウントのDFがRBに近づいてくるアニメーションが表示され、エンカウントのDFの間にマーク画像124が表示されたゲーム画面120がLCD14に表示される。
続くステップS61では、タッチ入力が有るかどうかを判断する。ここでは、CPUコア42は、I/F回路54に設けられたバッファ(図示せず)を参照し、タッチパネル22から入力された座標データが記憶されているかどうかを検出する。座標データが記憶されている場合には、タッチ入力が有ると判断し、ステップS61で“YES”となり、ステップS63で、タッチ判定処理を実行する。ただし、図示は省略するが、CPUコア42は、座標データを検出すると、タッチ判定処理のために、検出した座標データをRAM48に記憶する。ステップS63におけるタッチ判定処理では、座標データに対応する座標(以下、「タッチ座標」という。)がマーカ124を指示しているかどうかを判定する。さらに、タッチ座標がマーカ124を指示している場合には、マーカ124の中心からの距離を検出し、つまりタッチの正確さを判定する。
そして、ステップS65では、タッチ成功かどうかを判断する。ここでは、タッチ座標がマーク画像124の中心またはその近傍であるかどうかを判断する。ステップS65で“YES”であれば、図18に示すステップS79に進む。しかし、ステップS65で“NO”であれば、つまりタッチ失敗であれば、ステップS69で、RBがエンカウントのディフェンスにタックルされるなどして倒されるアニメーションを3次元表示して、つまりRBが倒される様子のゲーム画面120をLCD14に表示して、攻撃処理を終了する。
また、ステップS61で“NO”であれば、つまり座標データがバッファに記憶されていない場合には、タッチ入力が無いと判断し、ステップS67で、RBとエンカウントするDFとの距離が一定距離C(<一定距離B)以内であるかどうかを判断する。具体的には、エンカウントのDFが、RBを捕まえたり、RBにタックルしたりすることが可能な
距離に近づいたかどうかを判断する。
ステップS67で“YES”であれば、つまりRBとエンカウントするDFとの距離が一定距離C以内であれば、ステップS69に進む。一方、ステップS67で“NO”であれば、つまりRBとエンカウントするDFとの距離が一定距離C以内でなければ、ステップS71で、RBの2次元座標をアルゴリズムAに従って更新し、ステップS73で、エンカウントするDFの2次元座標をRBに近づくように更新し、ステップS75で、エンカウントに関するオブジェクトすなわちRBおよびエンカウントするDFの3次元座標を更新する。そして、ステップS77で、エンカウント後経過カウンタ482qをインクリメントして、ステップS55に戻る。
上述したように、マーク画像124のタッチに成功し、ステップS65で“YES”と判断すると、図18に示すように、ステップS79で、RBがエンカウントのDFを抜くアニメーションを3次元表示する。つまり、RBがエンカウントのDFを抜くアニメーションのゲーム画面120をLCD14に表示する。続くステップS81では、RBの2次元座標をアルゴリズムAで決まる移動方向で、DFを超えた位置に更新する。次のステップS83では、エンカウント後経過カウンタ482qのカウント値、およびタッチ位置とマーク画像124の中心位置との距離に応じて、RBの2次元座標をさらに更新する。つまり、素早くタッチし、タッチ位置が正確であるほど、RBの2次元座標は走行方向(ゲーム画面100の上方向)に更新され、ゲインを稼ぐことができるのである。
そして、ステップS85では、エンカウント数をデクリメントし、ステップS87で、抜いたDFを記憶して、図19に示すステップS89に進む。ただし、ステップS87では、2人のDFの間に表示されたマーカ124のタッチに成功した場合には、当該2人のDFを抜いたことになり、かかる場合には、当該2人のDFが記憶される。
図19に示すように、ステップS89では、RBはDFを抜いてから一定距離D移動したかどうかを判断する。一定距離Dは、次のエンカウントのDFを準備するか否かを判断するための距離であり、一定距離Bや一定距離Cよりも長く設定される。たとえば、一定距離Dは、一定距離Aと同じ或いはほぼ同じに設定される。ステップS89で“YES”であれば、つまりRBはDFを抜いてから一定距離D移動すれば、ステップS91で、エンカウント数が0以下であるかどうかを判断する。
ステップS91で“NO”であれば、つまりエンカウント数が1以上であれば、図15に示したステップS33に戻る。すなわち、次のエンカウントを準備にする。一方、ステップS91で“YES”であれば、つまりエンカウント数が0以下であれば、ステップS93で、RBが倒されるアニメーションを3次元表示して、攻撃処理を終了する。つまり、ステップS93では、RBがDFにタックされたり、捕まえられたりするなどして、倒されるアニメーションのゲーム画面120がLCD14に表示される。
また、ステップS89で“NO”であれば、つまりRBがDFを抜いてから一定距離D移動していなければ、ステップS95で、RBの2次元座標をアルゴリズムAに従って更新する。次のステップS97では、2次元座標に従ってオブジェクトを2次元表示する。つまり、オフェンスラインとディフェンスラインのオブジェクトおよびRBの顔画像を、各々の2次元座標に貼り付けたゲーム画面100をLCD12に表示するのである。また、ステップS99では、RBが走っているアニメーションを3次元表示する。つまり、RBが走っている様子を示すゲーム画面120がLCD14に表示されるのである。
そして、ステップS101では、タッチダウンかどうかを判断する。具体的には、ボールを持ったRBの2次元座標のY座標が、敵陣のエンドラインのY座標よりも小さくなったかどうかを判断する。ステップS101で“NO”であれば、つまりタッチダウンでなければ、そのままステップS89に戻る。しかし、ステップS101で“YES”であれば、つまりタッチダウンであれば、ステップS103で、タッチダウンのアニメーションを3次元表示して、攻撃処理を終了する。つまり、ボールを持ったRBがエンドゾーンに走り込む様子のゲーム画面120が表示される。ただし、RBがタッチダウンする様子のゲーム画面120に続けて、RBがボールを地面(フィールド)に叩き付け、当該RBや攻撃側の他の選手(オブジェクト)が歓喜する様子のゲーム画面120を表示してもよい。
図20は、図17に示したステップS59のマーク表示処理を示すフロー図である。この図20を参照して、CPUコア42は、マーク表示処理を開始すると、ステップS201で、エンカウントするDFの各3次元座標を検出する。ここでは、ステップS49において算出した3次元座標からエンカウントするDFの各3次元座標を取得する。続くステップS203では、隣り合うDFの3次元座標に応じて、マーク画像124の3次元座標および大きさを決定(算出)する。この決定(算出)方法は上述したとおりである。続くステップS205では、マーク画像124の3次元座標を投影面上の2次元座標に変換する。具体的には、投影変換の行列式を用いて、マーク画像124の3次元座標から2次元座標を求められ、求めた2次元座標にマーク画像124の画像(2次元画像)がステップS203で決定された大きさで貼り付けられる。つまり、2次元のマーク画面が生成される。
続くステップS207では、隣り合うDFの能力値のうち、大きい方が、RBの能力値よりも大きいかどうかを判断する。ここでは、能力値の各パラメータを比較し、数値の大きいパラメータの数が多い方の能力値が高いと判断するようにしてある。ただし、各パラメータの数値の合計した値を比較するようにしてもよい。ステップS207で“NO”であれば、つまり隣り合うDFの能力値のうち大きい方がRBの能力値以下である場合には、そのままステップS213に進む。
しかし、ステップS207で“YES”であれば、つまり隣り合うDFの能力値のうち大きい方がRBの能力値よりも大きい場合には、ステップS209で、隣り合うDFの能力値のうち大きい方の値に応じて、マーク変位データ482jを選択する。次のステップS211では、選択したマーク変位データ482jとエンカウント後経過カウンタ482qのカウント値とに基づいて、マーク画像124の2次元座標を変位させて、ステップS213に進む。つまり、マーク変位データ482jを参照して、エンカウント後経過カウンタ482qのカウント値が示すフレームの変位量を取得し、取得した変位量をマーク画像124の現在の2次元座標に加算する。
なお、図示は省略するが、ステップS207〜S211の処理は、各マーク画像124について実行される。
そして、ステップS213では、ゲーム空間画像すなわちエンカウントのDFがRBに近づいてくるアニメーションの3次元画像に、2次元のマーク画面が合成されたゲーム画面120をLCD14に表示して、マーク表示処理をリターンする。
なお、マーク表示処理は、単位時間(1フレーム)毎に実行されるため、したがって、マーク画像124の表示位置および大きさも1フレーム毎に更新される。
この実施例によれば、オブジェクトの2次元座標を更新し、必要に応じて、2次元座標から3次元座標を算出し、3次元のゲーム画面を表示するようにしてあるため、ゲームの進行に応じて適切なゲーム画面を表示することができる。
また、この実施例では、エンカウントモードになると、プレイヤはマーカをタッチするだけで、RBがDFを抜いたり、RBがDFに倒されたりするので、簡単な操作でゲームを楽しむことができる。
さらに、この実施例では、マーカの表示位置や大きさは、複数のDFの3次元座標に応じて決定され、マーカの指示の良否に応じてゲーム展開が変化するため、ゲームの進行に応じた座標位置の指示を誘導することができる。
なお、この実施例では、LCD12に2次元画像のゲーム画面100を表示するようにしたが、これに限定されず、俯瞰画像や3次元座標のゲーム画面100を表示するようにしてもよい。かかる場合には、たとえば、オブジェクトの3次元座標に基づいてエンカウントモードに移行するか否かを判断する。
また、この実施例では、オブジェクトの2次元位置に応じて3次元画像のアニメーションを表示するか否かを判断するようにしたが、これに限定される必要はない。たとえば、オブジェクトが所定の動作を行った場合に、3次元画像のアニメーションを表示するようにしてもよい。
さらに、この実施例では、ポインティングデバイスとして、タッチパネルを用いるようにしたが、コンピュータマウス、タッチパッド、タブレットのような他のポインティングデバイスを用いるようにしてもよい。かかる場合には、ゲーム画面120にマウスポインタやカーソルのような指示画像を表示して、当該指示画像をコンピュータマウス等により操作する必要がある。
さらにまた、この実施例では、2つのLCDを設けて2つのゲーム画面を表示する場合について説明したが、1つのLCDを設けて、これに対応してタッチパネルを設けておき、当該LCDに1つのゲーム画面を表示するようにしてもよい。
また、この実施例では、2つのLCDを設けたゲーム装置について説明したが、1つのLCDの表示領域を2つに分割し、少なくともいずれか一方の表示領域に対応してタッチパネルを設けるようにしてもよい。この場合、縦長のLCDを設ける場合には、縦に2つ表示領域が並ぶようにLCDの表示領域を分割し、横長のLCDを設ける場合には、横に2つの表示領域が並ぶようにLCDの表示領域を分割するようにすればよい。