JP2007058866A - ビデオゲームシステムおよびビデオゲーム用記憶媒体 - Google Patents

ビデオゲームシステムおよびビデオゲーム用記憶媒体 Download PDF

Info

Publication number
JP2007058866A
JP2007058866A JP2006257819A JP2006257819A JP2007058866A JP 2007058866 A JP2007058866 A JP 2007058866A JP 2006257819 A JP2006257819 A JP 2006257819A JP 2006257819 A JP2006257819 A JP 2006257819A JP 2007058866 A JP2007058866 A JP 2007058866A
Authority
JP
Japan
Prior art keywords
player object
player
image
display
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2006257819A
Other languages
English (en)
Other versions
JP4313810B2 (ja
Inventor
Shigeru Miyamoto
茂 宮本
Takao Shimizu
隆雄 清水
Takaya Imamura
孝矢 今村
Kazuaki Morita
和明 森田
Tsuyoshi Kihara
強 木原
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nintendo Co Ltd
Original Assignee
Nintendo Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nintendo Co Ltd filed Critical Nintendo Co Ltd
Priority to JP2006257819A priority Critical patent/JP4313810B2/ja
Publication of JP2007058866A publication Critical patent/JP2007058866A/ja
Application granted granted Critical
Publication of JP4313810B2 publication Critical patent/JP4313810B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Landscapes

  • Processing Or Creating Images (AREA)

Abstract

【課題】プレイヤオブジェクトの移動状態が多様に変化し、その変化に応じてプレイヤが操作手段を操作しなければならないことにより、プレイヤオブジェクトの動きがリアルで、変化に富み、興趣の優れたビデオゲームシステム及びビデオゲーム用記憶媒体を提供する。
【解決手段】プレイヤオブジェクトを複数の部分に分けて当たり判定し、ダメージを受けた部分によってプレイヤオブジェクトの表示状態を変化させ、プレイヤオブジェクトの分割部分毎の影響量に応じてプレイヤオブジェクトの移動状態を変化させる。
【選択図】図35

Description

この発明はビデオゲームシステムおよびビデオゲーム用記憶媒体に関し、特にプレイヤオブジェクトが移動表示しながら敵を倒すシューティングゲームのような、ビデオゲームシステムおよびビデオゲーム用記憶媒体に関する。
従来のビデオゲームは、当たり判定を1か所で行うプレイヤオブジェクトを移動表示させるビデオゲームが大部分であった。
当たり判定を1か所で行うプレイヤオブジェクトを用いると、プレイヤオブジェクトを影響を受けた部分毎に変化をつけて表示できなかった。そのため、変化に富んだプレイヤオブジェクトの表示が出来ず、画像表現に制限を受け、ゲームの面白さを一層高めることができなかった。
それゆえに、この発明の主たる目的は、プレイヤオブジェクトの移動状態が多様に変化し、その変化に応じてプレイヤが操作手段を操作しなければないことにより、プレイヤオブジェクトの動きがリアルで、変化に富み、興趣の優れたビデオゲームシステム及びビデオゲーム用記憶媒体を提供することである。この発明のその他の目的は、プレイヤオブジェクトの分割部分毎の影響量に応じてプレイヤオブジェクトの移動状態を変化させることにより、プレイヤオブジェクトの動きがリアルで、変化に富み、興趣の優れたビデオゲームシステム及びビデオゲーム用記憶媒体を提供することである。
この発明によれば、ビデオゲームにおける臨場感を高め、プレイヤの達成感を満たし、プレイヤのビゲオゲームに対する興趣を向上させることの可能な、ビデオゲームシステム及びビデオゲーム用記憶媒体が得られる。
また、プレイヤオブジェクトを複数の部分に分けて当たり判定し、ダメージを受けた部分によってプレイヤオブジェクトの表示状態を変化させることにより、変化に富み、興趣の優れたビデオゲームを実現可能である。
さらに、プレイヤオブジェクトの移動状態が多様に変化し、その変化に応じてプレイヤが操作手段を操作しなければないことにより、プレイヤオブジェクトの動きがリアルで、変化に富み、興趣の優れたビデオゲームを実現可能である。
さらに、プレイヤオブジェクトの分割部分毎の影響量に応じてプレイヤオブジェクトの移動状態を変化させることにより、プレイヤオブジェクトの動きがリアルで、変化に富み、興趣の優れたビデオゲームを実現可能である。
次に、この発明のビデオゲームシステムと、それに用いられるビデオゲーム用記憶媒体の構成を説明する。なお、以下の実施例では、ビデオゲーム機専用の場合を説明するが、画像処理装置の他の例として、パーソナルコンピュータ等に適用することもできる。また、操作手段としては、ゲーム専用コントローラの場合を説明するが、本願のビデオゲームシステムがパーソナルコンピュータ等の画像処理装置に適用される場合であれば、キーボードやマウス等の入力装置を用いてもよい。
図1はこの発明の一実施例のビデオゲームシステムの構成を示す外観図である。ビデオゲームシステムは、ビデオゲーム機本体10と、外部記憶装置の一例のROMカートリッジ20と、ビデオゲーム機本体10に接続される表示装置の一例のCRTディスプレイ30と、操作手段(又は操作入力手段)の一例のコントローラ40とを含んで構成される。コントローラ40には、必要に応じてRAMカートリッジ50(又は振動カートリッジ50A)が着脱自在に装着される。
コントローラ40は、両手又は片手で把持可能な形状のハウジング41に、複数のスイッチ又はボタンを設けて構成される。具体的には、コントローラ40は、ハウジング41の左右と中央のそれぞれの下部にハンドル41L,41C,41Rが設けられ、その上面を操作領域とする。操作領域には、中央下部にアナログ入力可能なジョイスティック45が設けられ、左側に十字形のディジタル方向スイッチ(以下「十字スイッチ」という)46が設けられ、右側に複数のボタンスイッチ47A〜47Zが設けられる。ジョイスティック45は、スティックの傾き量と方向によって、プレイヤオブジェクトの移動方向及び/又は移動速度(又は移動量)を指示したり入力するために用いられる。十字スイッチ46は、ジョイスティック45に代えてプレイヤオブジェクトの移動方向の指示入力のために用いられる。複数のボタンスイッチ47には、プレイヤオブジェクトの動作を指示するためのスイッチ47A,47B、カメラから見た画像の視点切換え等に用いられるスイッチ47C、スタートスイッチ47S、ハウジング41の左上部側面に設けられる動作スイッチ47L、ハウジング41の右上部側面に設けられる動作スイッチ47R、及びハンドル41Cの裏側に設けられるスイッチ47Zを含む。スイッチ47Cは、上下左右に4個のボタンスイッチ47Cu,47Cd,47Cl,47Crを配置して成り、カメラの視点切換え以外の用途として、シューティング又はアクションゲームにおいて移動速度のコントロール(例えば、加速,減速等)にも使用できる。これらの複数のボタンスイッチ47A〜47Zの機能は、ゲームプログラムによって定義することができる。
図2はこの発明の一実施例のビデオゲームシステムのブロック図である。ビデオゲーム機10には、中央処理ユニット(以下「CPU」と略称する)11及びコプロセッサ(リアリティ・コプロセッサ:以下「RCP」と略称する)12が内蔵される。RCP12には、バスの制御を行うためのバス制御回路121と、ポリゴンの座標変換や陰影処理等を行うための画像処理ユニット(リアリティー・シグナル・プロセッサ;以下「RSP」と略称する)122と、ポリゴンデータを表示すべき画像にラスタライズしかつフレームメモリに記憶可能なデータ形式(ドットデータ)に変換するための画像処理ユニット(リアリティー・ディスプレイ・プロセッサ;以下「RDP」と略称する)123とが含まれる。RCP12には、ROMカートリッジ20を着脱自在に装着するためのカートリッジ用コネクタ13と、ディスクドライブ26を着脱自在に装着するためのディスクドライブ用コネクタ14と、RAM15が接続される。また、RCP12には、CPU11によって処理された音声信号を出力するための音声信号発生回路16及び画像信号を出力するための画像信号発生回路17が接続される。さらに、RCP12には、1つ又は複数のコントローラ40A〜40Dの操作データ及び/又は拡張用RAMカートリッジ50のデータをシリアル転送するためのコントローラ制御回路18が接続される。
RCP12に含まれるバス制御回路121は、CPU11からバスを介してパラレル信号で与えられたコマンドをパラレル−シリアル変換して、シリアル信号としてコントローラ制御回路18に供給する。また、バス制御回路121は、コントローラ制御回路18から入力されたシリアル信号をパラレル信号に変換し、バスを介してCPU11へ出力する。コントローラ40A〜40Dから読み込まれた操作状態を示すデータは、CPU11によって処理されたり、RAM15に一時記憶される等の処理が行われる。換言すれば、RAM15は、CPU11によって処理されるデータを一時記憶する記憶領域を含み、バス制御回路121を介してデータの読出又は書込を円滑に行うことに利用される。
音声信号発生回路16には、ビデオゲーム機10の後面に設けられるコネクタ195が接続される。画像信号発生回路17には、ビデオゲーム機10の後面に設けられるコネクタ196が接続される。コネクタ195には、テレビのスピーカ等の音声発生装置32の接続部が着脱自在に接続される。コネクタ196には、テレビジョン受像機又はCRT等のディスプレイ31の接続部が着脱自在に接続される。
コントローラ制御回路18には、ビデオゲーム機10の前面に設けられるコントローラ用コネクタ(以下「コネクタ」と略称する)191〜194が接続される。コネクタ191〜194には、接続用ジャックを介してコントローラ40A〜40Dが着脱自在に接続される。このように、コネクタ191〜194にコントローラ40A〜40Dを接続することにより、コントローラ40A〜40Dがビデオゲーム機10と電気的に接続され、相互間のデータの送受信又は転送が可能とされる。
図3はコントローラ制御回路18の詳細な回路図である。コントローラ制御回路18は、RCP12とコントローラ用コネクタ191〜194との間でデータをシリアルで送受信するために用いられ、データ転送制御回路181,送信回路182,受信回路183及び送受信データを一時記憶するためのRAM184を含む。データ転送制御回路181は、データ転送時にデータフォーマットを変換するためにパラレル−シリアル変換回路とシリアル−パラレル変換回路を含み、さらにRAM184の書込み読出し制御を行う。シリアル−パラレル変換回路は、RCP12から供給されるシリアルデータをパラレルデータに変換してRAM184又は送信回路182に与える。パラレル−シリアル変換回路は、RAM184又は受信回路183から供給されるパラレルデータをシリアルデータに変換して、RCP12に与える。送信回路182は、データ転送制御回路181から供給されるコントローラ40の信号読込制御のためのコマンド及びRAMカートリッジ50への書込データ(パラレルデータ)をシリアルデータに変換して、複数のコントローラ40A〜40Dのそれぞれに対応するチャンネルCH1〜CH4へ送出する。受信回路183は、各コントローラ40A〜40Dに対応するチャンネルCH1〜CH4から入力される各コントローラ40A〜40Dの操作状態データ及びRAMカートリッジ50からの読出データをシリアルデータで受信し、パラレルデータに変換してデータ転送制御回路181に与える。データ転送制御回路181は、RCP12から転送されたデータ又は受信回路183で受信されたコントローラ40A〜40Dの操作状態データやRAMカートリッジ50の読出データをRAM184に書込み制御したり、RCP12からの命令に基づいてRAM184のデータを読出してRCP12へ転送するように働く。
RAM184は、図示を省略しているが、記憶エリア184a〜184hを含む。エリア184aには第1チャンネル用のコマンドが記憶され、エリア184bには第1チャンネル用の送信データ及び受信データが記憶される。同様に、エリア184cには第2チャンネル用のコマンド、エリア184dには第2チャンネル用の送信データ及び受信データがそれぞれ記憶される。エリア184eには第3チャンネル用のコマンド、エリア184fには第3チャンネル用の送信データ及び受信データがそれぞれ記憶される。エリア184gには第4チャンネル用のコマンド、エリア184hには第4チャンネル用の送信データ及び受信データがそれぞれ記憶される。
図4はコントローラ40及びRAMカートリッジ50の詳細な回路図である。コントローラ40のハウジングには、ジョイスティック45,各スイッチ46,47等の操作状態を検出しかつその検出データをコントローラ制御回路18へ転送するために、操作信号処理回路44等が内蔵される。操作信号処理回路44は、受信回路441,制御回路442,スイッチ信号検出回路443,カウンタ回路444,ジョイポート制御回路446,リセット回路447及びNORゲート448を含む。受信回路441は、コントローラ制御回路18から送信される制御信号やRAMカートリッジ50への書込データ等のシリアル信号をパラレル信号に変換して制御回路442に与える。制御回路442は、コントローラ制御回路18から送信される制御信号がジョイスティック45のX,Y座標のリセット信号であるとき、リセット信号を発生してNORゲート448を介してカウンタ444内のX軸用カウンタ444XとY軸用カウンタ444Yの計数値をリセット(0)させる。
ジョイステック45は、レバーの傾き方向のX軸方向とY軸方向に分解して傾き量に比例したパルス数を発生するように、X軸用とY軸用のフォトインタラプトを含み、それぞれのパルス信号をカウンタ444X及びカウンタ444Yに与える。カウンタ444Xは、ジョイスティック45がX軸方向に傾けられたとき、その傾き量に応じて発生されるパルス数を計数する。カウンタ444Yは、ジョイスティック45がY軸方向に傾けられたとき、その傾き量に応じて発生されるパルス数を計数する。従って、カウンタ444Xとカウンタ444Yとの計数値によって決まるX軸とY軸の合成ベクトルによって、プレイヤオブジェクト又は主人公キャラクタ若しくはカーソルの移動方向と座標位置が決定される。なお、カウンタ444X及びカウンタ444Yは、電源投入時にリセット信号発生回路447から与えられるリセット信号、又はプレイヤが所定の2つのスイッチを同時に押圧されたときにスイッチ信号検出回路443から与えられるリセット信号によっても、その計数値がリセットされる。
スイッチ信号検出回路443は、制御回路442から一定周期(例えばテレビジョンのフレーム周期である1/30秒間隔)で与えられるスイッチ状態の出力コマンドに応答して、十字スイッチ46,スイッチ47A〜47Zの押圧状態によって変化する信号を読込み、それを制御回路442へ与える。制御回路442は、コントローラ制御回路18からの操作状態データの読出指令信号に応答して、各スイッチ47A〜47Zの操作状態データ及びカウンタ444X,444Yの計数値を所定のデータフォーマットで送信回路445に与える。送信回路445は、制御回路442から出力されたパラレル信号をシリアル信号に変換して、変換回路43及び信号線42を介してコントローラ制御回路18へ転送する。制御回路442には、アドレスバス及びデータバス並びにポートコネクタ449を介してポート制御回路446が接続される。ポート制御回路446は、RAMカートリッジ50がポートコネクタ449に接続されているとき、CPU11の命令に従ってデータの入出力(又は送受信)制御を行う。
RAMカートリッジ50は、アドレスバス及びデータバスにRAM51を接続し、RAM51に電池52を接続して構成される。RAM51は、アドレスバスを用いてアクセス可能な最大メモリ容量の半分以下の容量(例えば256kビット)のRAMである。RAM51は、ゲームに関連するバックアップデータを記憶するものであり、RAMカートリッジ50がポートコネクタ449から抜き取られても電池52からの電力供給を受けてバックアップデータを保持する。なお、ゲームにおいて衝突又は爆発等の衝撃状態を画像表現したり音声出力する際に、そのような衝撃状態を一層現実に近づけたい場合は、振動発生回路53を内蔵したRAMカートリッジ50が用いられるか、RAM51を含まない振動発生回路52のみからなる振動カートリッジ50Aが用いられる。
ROMカートリッジ20は、外部ROM21を基板に実装し、その基板をハウジングに収納して構成される。外部ROM21は、ゲーム等の画像処理のための画像データやプログラムデータを記憶するとともに、必要に応じて音楽や効果音やメッセージ等の音声データを記憶するものである。
図5は外部ROM21のメモリ空間の全体を図解的に示したメモリマップであり、図6は外部ROM21のメモリ空間の一部(画像表示データ領域24)を詳細に示したメモリマップである。外部ROM21は、複数の記憶領域(以下には、「記憶領域」の前にデータの種類名を付ける場合は「領域」と略称する)、例えば図5に示すように、プログラム領域22,文字コード領域23,画像データ領域24及びサウンドメモリ領域25を含み、各種のプログラムを予め固定的に記憶している。
プログラム領域22は、ゲーム等の画像処理を行なうために必要なプログラム(後述の図15〜図31)に示す各フローチャートの機能を実現するためのプログラムや、ゲーム内容に応じたゲームデータ等)を記憶している。具体的には、プログラム領域22は、CPU11の動作プログラムを予め固定的に記憶するための記憶領域22a〜22pを含む。メインプログラム領域22aには、後述の図15に示すゲーム等のメインルーチンの処理プログラムが記憶される。コントロールパッドデータ(操作状態)判断プログラム領域22bには、コントローラ40の操作状態等を示すデータを処理するためのプログラムが記憶される。書込プログラム領域22cには、CPU11がRCP12に書込処理させるべきフレームメモリ及びZバッファへの書込プログラムが記憶される。例えば、書込プログラム領域22cには、1つの背景画面で表示すべき複数の移動ブジェクト又は背景オブジェクトのテクスチュアデータに基づく画像データとして、色データをRAM15のフレームメモリ領域(図7に示す152)に書き込むプログラムと、奥行データをZバッフ領域(図7に示す153)に書き込むプログラムがそれぞれ記憶される。移動プログラム領域22dには、CPU11がRCP12に作用して三次元空間中の移動物体の位置を変化させるための制御プログラムが記憶される。カメラ制御プログラム領域22eには、プレイヤオブシェクトを含む移動オブジェクトや背景オブジェクトを三次元空間中のどの位置でどの方向を撮影させるかを制御するためのカメラ制御プログラムが記憶される。コース選択プログラム領域22fには、後述の図16に示すコース選択サブルーチンプログラムが記憶される。モード切換プログラム領域22gには、後述の図17に示すモード切換サブルーチンプログラムが記憶される。記憶領域22gに記憶されるプログラムは、表示モードが一方向スクロールの場合と全方向(オールレンジ)スクロールの場合のスクロールモードを切り換えることによって、スクロール方向やスクロール可能な範囲を切り換えるものである。
通信処理プログラム領域22hには、後述の図19〜図21に示す通信処理サブルーチンのプログラムが記憶される。補給処理プログラム領域22iには、後述の図22〜図23に示す補給処理サブルーチンのプログラムが記憶される。プレイヤオブジェクトプログラム領域22jには、プレイヤによって操作されるオブジェクトの表示制御のためのプログラムが記憶される。仲間オブジェクトプログラム領域22kには、プレイヤオブジェクトと助け合ってゲームを進行させる仲間オブジェクトの表示制御のためのプログラム(図24〜図26参照)が記憶される。敵オブジェクトプログラム領域22lには、プレイヤオブジェクトに対して攻撃を加える敵オブジェクトの表示制御のためのプログラム(図27及び図28参照)が記憶される。背景プログラム領域22mには、CPU11がRCP12に作用して、三次元の背景画(又はコース)を作成させるための背景作成プログラム(図29参照)が記憶される。音声処理プログラム領域22nには、効果音や音楽や音声によるメッセージを発生するためのプログラム(図31参照)が記憶される。ゲームオーバー処理プログラム領域22oには、ゲームオーバーになった場合の処理、例えばゲームオーバー状態の検出やゲームオーバに達したときにそれまでのゲーム状態のバックアップデータの保存処理等のプログラムが記憶される。メッセージ処理プログラム領域22pには、プレイヤオブジェクトの居る場所又は環境等に適した操作をするのに役立つメッセージを文字による表示又は音声による出力を行うために、メッセージ処理(図19〜図21の通信処理、図22,図23の補給物資の供給処理等を含む処理)のサブルーチンプログラムが記憶される。
文字コード領域23は、複数種類の文字コードを記憶する領域であって、例えばコードに対応した複数種類の文字のドットデータを記憶している。文字コード領域23に記憶されている文字コードデータは、ゲームの進行においてプレイヤに説明文を表示するために利用される。この実施例では、プレイヤオブジェクトの居る周囲の環境(例えば、場所,障害物の種類,敵オブジェクトの種類)やプレイヤオブジェクトのおかれている状況に応じて適切な操作方法又は対応方法を適切なタイミングで文字によるメッセージ(又はセリフ)を表示するために使用される。
画像データ領域24は、図6に示すように、記憶領域24a〜24fを含む。画像データ領域24は、背景オブジェクト及び/又は移動オブジェクトの各オブジェクト毎に複数のポリゴンの座標データ及びテクスチュアデータ等の画像データをそれぞれ記憶するとともに、これらのオブジェクトを所定の位置に固定的に表示し又は移動表示させるための表示制御プログラムを記憶している。例えば、記憶領域24aには、プレイヤオブジェクトを表示するためのプログラムが記憶される。記憶領域24bには、複数の仲間オブジェクト1〜3を表示するための仲間オブジェクトプログラムが記憶される。記憶領域24cには、複数の背景(静止)オブジェクト1〜n1を表示するための背景オブジェクトプログラムが記憶される。記憶領域24dには、複数の敵オブジェクト1〜n2を表示するための敵オブジェクトプログラムが記憶される。記憶領域24eには、ボスオブジェクトを表示するためのボスオブジェクトプログラムが記憶される。記憶領域24fには、例えば後述の図12に示すセリフ又はメッセージを出力するためのデータが記憶される。
サウンドメモリ領域25には、場面毎に対応して、その場面に適した上記メッセージを音声で出力するためのセリフや効果音やゲーム音楽等のサウンドデータが記憶される。
なお、外部記憶装置は、ROMカートリッジ20に代えて又はROMカートリッジ20に加えて、CD−ROMや磁気ディスク等の各種記憶媒体を用いてもよい。その場合、CD−ROMや磁気ディスク等の光学式または磁気式等のディスク状記憶媒体からゲームのための各種データ(プログラムデータ及び画像表示のためのデータを含む)を読出し又は必要に応じて書込むために、ディスクドライブ(記録再生装置)26が設けられる。ディスクドライブ26は、ROM21と同様のプログラムデータが磁気的又は光学的に記憶された磁気ディスク又は光ディスクに記憶されたデータを読出し、そのデータをRAM15に転送する。
図7はRAM15のメモリ空間全体を図解的に示したメモリマップであり、図8はRAM15のメモリ空間の一部(画像表示データ領域154)を詳細に示したメモリマップである。RAM15は、各種の記憶領域150〜159を含む。例えば、RAM15には、表示リスト領域150と、プログラム領域151と、1フレーム分の画像データを一時記憶するフレームメモリ(又はイメージバッファメモリ)領域152と、フレームメモリ領域のドット毎の奥行データを記憶するZバッファ領域153と、画像データ領域154と、サウンドメモリ領域155と、コントロールパッドの操作状態データを記憶する領域156と、作業用(ワーキング)メモリ領域157と、仲間データ領域158と、レジスタ・フラグ領域159とが含まれる。各記憶領域151〜159は、CPU11がバス制御回路121を介して、又はRCP12が直接アクセスできるメモリ空間であって、使用されるゲームによって任意の容量(又はメモリ空間)に割り当てられる。また、プログラム領域151,画像データ領域154,サウンドメモリ領域155は、ROM21の記憶領域22,24,25に記憶されている1つのゲームの全場面(又はステージ)のゲームプログラムのうち一部のデータ、例えば或る1つのコース又はステージに必要なゲームプログラムが転送されたとき、対応するデータを一時記憶するものである。このように、ある場面に必要な各種プログラムデータの一部を各記憶領域151,154,155に記憶させておけば、CPU11が必要の生じる毎に直接ROM21から読み出して処理するよりも、CPU11の効率を高めることができ、画像処理速度を高速化できる。
具体的には、フレームメモリ領域152は、ディスプレイ30の画素(ピクセル又はドット)数x1画素当たりの色データのビット数に相当する記憶容量を有し、ディスプレイ30の画素に対応してドット毎の色データを記憶する。フレームメモリ領域152は、画像処理モードにおいて画像データ領域154に記憶されている1つの背景画面中に表示すべき静止オブジェクト及び/又は移動オブジェクトの1つ以上のオブジェクトを複数のポリゴンの集合体で表示するための三次元座標データに基づいて、視点位置から見える物体のドット毎の色データを一時記憶するとともに、表示モードにおいて画像データ領域154に記憶されているプレイヤオブジェクト,仲間オブジェクト,敵オブジェクト,ボスオブジェクト等の移動オブジェクトと背景(又は静止)オブジェクト等の各種オブジェクトを表示する際にドット毎の色データを一時記憶する。
Zバッファ領域153は、ディスプレイ30の画素(ピクセル又はドット)数x1画素当たりの奥行データのビット数に相当する記憶容量を有し、ディスプレイ30の各画素に対応してドット毎の奥行データを記憶するものである。Zバッファ領域153は、画像処理モードにおいて静止オブジェクト及び/又は移動オブジェクトの1つ以上のオブジェクトを複数のポリゴンの集合体で表示するための三次元座標データに基づいて視点位置から見える部分のオブジェクトのドット毎に奥行データを一時記憶するとともに、表示モードにおいて移動及び/又は静止の各オブジェクトのドット毎の奥行データを一時記憶する。
画像データ領域154は、ROM21に記憶されているゲーム表示のための静止及び/又は移動の各オブジェクト毎に複数の集合体で構成されるポリゴンの座標データおよびテクスチュアデータを記憶するものであって、画像処理動作に先立って少なくとも1コース又はステージ分のデータがROM21から転送される。画像データ領域154の記憶データの詳細は、図8を参照して説明する。
サウンドメモリ領域155は、ROM21の記憶領域に記憶されている音声データ(セリフ,音楽,効果音のデータ)の一部が転送され、音声発生装置32から発生される音声のデータとして一時記憶する。
コントロールパッドデータ(操作状態データ)記憶領域156は、コントローラ40から読み込まれた操作状態を示す操作状態データを一時記憶する。
作業用メモリ領域157は、CPU11がプログラムを実行中にパラメータ等のデータを一時記憶する。
仲間データ領域158は、記憶領域22kに記憶されている仲間オブシェクトの表示制御のためのデータを一時記憶する。
レジスタ・フラグ領域159は、複数のレジスタ領域159Rと複数のフラグ領域159Fを含む。レジスタ領域159Rは、プレイヤオブジェクトの本体,左翼(又は羽),右翼のそれぞれのダメージ量をロードするレジスタR1〜R3,仲間のダメージをロードするレジスタR4,敵(ボス)のダメージをロードするレジスタR5,プレイヤオブジェクト数をロードするレジスタR6,プレイヤのライフ数をロードするレジスタR7,1画面に表示される敵オブジェクト数をロードするレジスタR8,静止オブジェクト数をロードするレジスタR9,プレイ中のコースにおける得点をロードするレジスタR10,コース1〜nの得点をロードするレジスタR11〜R1n,合計点をロードするレジスタR20及び最高点をロードするレジスタR21等を含む。フラグ領域159Fは、ゲーム進行
中の状態を知るためのフラグを記憶する領域であり、例えば仲間フラグF1,表示範囲のモードを識別するモードフラグF2,セリフ1〜mの出力の要否を記憶するセリフフラグF31〜F3m,ゲームオーバーに達した条件の検出の有無を識別するゲームオーバーフラグF4及び当たり判定フラグF5等を含む。
図9はこの発明が適用される一例のゲームのコースを示す図であり、図10は図9に示すゲームのコース選択画面を示す図であり、図11はこの発明が適用される一例のゲーム内容を説明するためのゲームエリアマップを示した図であり、図12は図11のゲームにおける仲間との通信処理におけるメッセージ出力内容を図解的に示した図であり、図13は図11のゲームにおける仲間との通信処理に基づいて表現されるメッセージ出力の画面表示の一例を示す図であり、図14は図11のゲームにおけるボスキャラクタとの対戦状態の画面表示の一例を示す図である。
図9〜図14を参照して、この発明の特徴となるゲームの進行に役立つメッセージを出力する場合のビデオゲームの概要を説明する。ビデオゲームのゲーム内容は、ROM21に記憶されたプログラムによって決定されるが、実施例ではシューティングゲームの例を示す。ゲームの開始時は、図9に示すコースが表示される。図9において、四角形の外枠の内側は、ディスプレイ30に表示される映像を示す。コース表示領域80は、プレイヤが進むべきコースを示している。プレイヤは、まずコース1からゲームを始め、コース1をクリアした後にコース2へ進む。プレイヤは、コース2をクリアすると、コース3又はコース6を選択可能であり、希望のコースを選択する。このように、プレイヤは、行きたいコースを選択しながら、ゴールであるコース5をクリアするためにゲームを行う。また、例えば、コース3をクリアしたときのコース選択画面では、自動的に次のコースとしてコース4が選ばれている。しかし、後に説明するが、次のコースとしてコース4をコース7に変更することができる。クリアコース表示領域81a〜81eは、クリアしたコースを示す部分であり、四角の枠内にクリアしたコースを示す絵や数字等が表示される。図9の例では、クリアコース表示領域81a〜81cに表示物があり、クリアコース表示領域81d〜81eに表示物がないため、3つのコースをクリアしたことになる。コース点数表示領域82a〜82eは、各コース毎にプレイヤが取得した点数を表示する部分である。点数は、ゲーム中にプレイヤが撃破した敵オブジェクトの数や特定の課題を解決した時等に付与されるように定められる。図示では、1番目,2番目,3番目にクリアしたコースの点数がそれぞれ50,48,10の場合を示している。合計点数表示領域82は、コース毎の点数を合計した数を表示する領域であり、108(=50+48+10)が表示されている。ハイスコア表示領域73は、これまで行われたゲームの中での最高点を表示する部分である。機体数表示領域74は、使用可能なプレイヤオブジェクト60の数を表示する部分であり、あと2つのプレイヤオブジェクト60が使用可能であることを示している。
ゲームの開始当初は、コース1を選択すると、図11のスタート点の画面が図12のように表示される。図11に示すスタート点からモード切換地点までの長い距離(例えば奥行き座標の単位で10万;単位は任意)が一方向スクロールモードの表示領域に選ばれる。一方向スクロールモードの表示領域は、ディスプレイ30の表示画面31に表示可能な幅が画面サイズと同じに選ばれ、上から下方向へのスクロール表示に使用される。一方向スクロールモードの表示領域では、例えばコース上の背景又は静止物を表す建物,木,山,道路,空等の背景画を構成するオブジェクト(物体)71a〜71n(図12参照)が順次表示され、その途中の予め定める場所A〜Dにおいて複数の敵オブジェクト72a〜72nが出現してプレイヤオブジェクト60に攻撃を加えたり、プレイヤオブジェクト60の進行を妨げる。
一方向スクロールモードにおける表示領域の途中の場所A,B,C,Dのそれぞれは、敵オブジェクト72a〜72nを撃退したり、攻撃を上手く回避するために、プレイヤに適切な操作方法を知らせたり、プレイヤオブジェクト60を助けるためのメッセージ(又はセリフ)を表示又は音声によって出力する場所に決められている。そして、図12に示すように、メッセージが表示領域31aに表示され、メッセージを送っている仲間の顔が表示領域31bに表示され、プレイ中の得点が表示領域31cに表示され、プレイヤオブジェクトのライフ(ダメージに耐えられる量)が表示領域31dに表示される。
メッセージの具体例が図13に図解的に示される。複数のメッセージのうち場所に応じてプログラム的に設定されているメッセージが表示領域31aに表示される。このゲームの例では、人物又は登場キャラクタの種類と場所によって異なるセリフを音声と画像で出力し、セリフの発生に関連して仲間からその状況に適した操作方法を知らせるメッセージを表示する場合を示す。また、各セリフ1〜9には優先順位が決められているので、同じタイミングで複数のセリフを発生すべき条件が検出された場合は優先順位の高いセリフを発生する。メッセージの表示に関連して、メッセージを送っている仲間オブジェクト73の顔が表示される。メッセージは、例えばプレイヤオブジェクト60を戦闘機と想定した場合の操縦方法(減速を指示する「ブレーキでやりすごせ」のメーセージ)と、その操縦方法を行うためのコントローラ40のどのスイッチをどのように操作すべきかを知らせる操作方法が表示(47Cdボタンの押圧を指示する「Cボタン下」のメッセージ;好ましくは上下左右に4個ボタンを配置したうちの下のボタンの色表示を異ならせて表示)され、必要に応じてメッセージ表示に併せて音声出力(「ブレーキでやりすごせ」)も行われる。場所Cでは、スイッチ47Z又は47Rを2回押すことを知らせる「ZかRの2度押し」のメッセージが発生される。このように、メッセージの内容は、敵オブジェクトの形状や動きの相違により、場所A〜Dによって異なる。プレイヤは、ジョイスティク45を操作して、プレイヤオブジェクト60の位置又は方向を制御するとともに、スイッチ47A〜47Zのうちのメッセージ出力に従ったスイッチを操作すれば、スイッチの数が多くて瞬時に適切なスイッチの操作が困難である場合でも、適切な操作を行うことが容易となり、素早く指示された操作をして敵を攻撃したり危険を回避することが容易となり、熟練していないプレイヤでも先の場面まで進むことが容易となる。
プレイヤオブジェクト60がモード切換地点に到達すると、表示モードが全方向にスクロールの可能なオールレンジモードに切り換えられる。オールレンジモードでは、図14に示すように、ボスキャラクタ(ボスオブジェクト)を表示可能な範囲の中央に位置させ、プレイヤオブジェクト60がボスキャラクタ74の周囲を旋回しながらを攻撃することになる。プレイヤオブジェクト60が移動可能な範囲は、ボスキャラクタ74を中心にして上下左右に或る短い距離(例えば1万)に選ばれる。プレイヤオブジェクト60が移動範囲の境界に近づくと、プレイヤオブジェクト60を撮影しているカメラの向きを切り換えることにより、プレイヤオブジェクト60の移動方向が自動的に切り換えられる。このとき、プレイヤオブジェクト60の居る位置をプレイヤに分かりやすくするために、表示画面31の右下方のマップ表示領域31cに縮小したマップが表示される。マップには、ボスキャラクタ74とプレイヤオブジェクト60と仲間オブジェクト73の記号が表示される。
図15はこの発明の一実施例のビデオゲームシステムのメインフローチャートである。次に、図9〜図15を参照して、図15のメインフローチャートに沿ってこの発明の原理を簡単に説明する。
電源が投入されると、CPU11はスタートに際してビデオゲーム機10を所定の初期状態に設定する。例えば、CPU11は、ROM21のプログラム領域に記憶されているゲームプログラムのうちの立ち上げプログラムをRAM15のプログラム領域151に転送し、各パラメータを初期値に設定した後、図15のフローチャートの処理を順次実行する。
図15のフローの動作は、1フレーム(1/30秒)毎に行われるものであり、コースをクリアするまではステップ1(図示では「S」を付けて示す),ステップ2,ステップ3〜ステップ17の動作が行われた後、ステップ3〜ステップ17の動作が繰り返し行われる。コースクリアに成功することなくゲームオーバになると、ステップ18のゲームオーバ処理が行われる。コースクリアに成功するとステップ16からステップ1へ戻る。
すなわち、ステップ1においてゲームのコース画面及び/又はコース選択画面の表示が行われるが、電源投入後にゲームを開始する場合は図9に示すようなコース画面の表示が行われる。なお、図9に示すコース1をクリアしてコース2に進み、コース2もクリアした後は、図10に示すコース選択画面の表示が行われる。コース選択画面においてコース選択する場合は、図16に示すコース選択サブルーチンの動作(ステップ101〜116の動作)が行われるが、その詳細は後述する。
スタート直後はコース1のゲームが行われるので、ステップ2においてそのコースのゲーム開始処理が行われる。例えば、レジスタ領域159R及びフラグ領域159Fをクリア処理(レジスタR6,R7については初期値を設定)し、コース1(又は選択されたコース)のゲームを行うのに必要な各種データがROM21から読み出されて、RAM15の記憶領域151〜155に転送される。
ステップ3において、モード切換サブルーチン処理が行われる。ゲームを開始直後はプレイヤオブジェクト60が図11のスタート点にいるが、スタート点(Z座標=0)からモード切換地点(Z座標=−10万)までの期間が一方向スクロールモードであるため、図17のステップ121においてプレイヤオブジェクトがオールレンジモード位置にいないことが判断されて、ステップ122においてフラグF2をリセットして一方向スクロールモードに切り換えた後、次のステップ4へ進む。その詳細な動作は、図17を参照して後述する。
ステップ4において、コントローラ処理が行われる。この処理は、コントローラ40のジョイスティック45,十字スイッチ46,スイッチ47A〜47Zの何れが操作されたか否かを検出し、その操作状態の検出データ(コントローラデータ)を読み込み、読み込んだコントローラデータを書込むことによって行われる。その詳細な動作は、図18を参照して後述する。
ステップ5において、仲間との通信処理が行われる。この処理は、本願発明の特徴となる適切な操作方法を知らせるメッセージの表示又は音声出力として行われる。すなわち、図11に示す一方向スクロール期間における場所A〜Dにおいて、図13に示すようなメッセージ又はセリフを表示したり、音声で出力することにより、プレイヤに適切な操作方法を知らせる。その詳細な動作の一例は、図19〜図21を参照して後述する。なお、メッセージの内容や発生条件は、一例を示すに過ぎず、ゲームの内容又は種類によって異なるので、適宜変更して使用されることを指摘しておく。
ステップ6において、本部から物資の補給処理が行われる。この処理では、プレイヤオブジェクト60が敵から攻撃を受け、機体にダメージを受けて正常な飛行をできない場合でも、本部又は仲間からプレイヤを支援するためのアイテム(例えば戦闘機の翼を修理する部品や銃器やライフ等)が送られる。そのアイテムが画面に表示されたときに、プレイヤがそれを取得するための操作(アイテムに機体を重ねるか射撃によりアイテムに命中させる等)を行うと、ダメージを受けた部分を元の状態に回復させたり、敵を攻撃するのに有利なアイテムを取得できる。この場合、プレイヤの必要とするアイテムは、プレイヤオブジェクトのダメージ状態によって異なるので、アイテムの種類が予め定める優先順に自動的に決定される。その詳細な動作は、図22及び図23を参照して後述する。
ステップ7において、プレイヤオブジェクト60の表示のための処理が行われる。この処理は、プレイヤオブジェクト60が一方向スクロール領域とオールレンジ領域の何れに存在するかによって異なるが、基本的にはプレイヤの操作するジョイスティック45の操作状態と敵からの攻撃の有無に基づいてその向きや形状を変化させる処理である。例えば、プレイヤオブジェクト60の表示制御は、記憶領域22jから転送されたプログラムと記憶領域24aから転送されたプレイヤオブジェクトのポリゴンデータとジョイスティック45の操作状態とに基づいて、変化後のポリゴンデータを演算によって求める。その結果得られた複数のポリゴンで構成される複数の三角形の面に対応する記憶領域154aの各番地には、テクスチャデータによって指定される模様又は色紙を貼りつけるように、色データが書込まれる。
ステップ8において、カメラ処理が行われる。例えば、カメラのファインダーを通して見たときの視線又は視界がプレイヤの指定したアングルとなるように、各オブジェクトを見た角度の座標演算が行われる。
ステップ9において、仲間オブジャクトの処理が行われる。仲間オブジェクトは、一方向スクロール領域においてプレイヤオブジェクトと所定の位置関係となるように計算され、例えばプレイヤオブジェクト60の後方を飛んでいるときは表示せず、プレイヤオブジェクト60が減速したときは前方に飛んでいるように表示するための演算処理が行われる。また、オールレンジ領域においては、仲間オブジェクトがプレイヤオブジェクト60の前方を飛んでいるときは仲間の機体とともに縮小マップに記号で表示され、後方を飛んでいるときは縮小マップに記号のみが表示される。その詳細は、図24〜図26を参照して後述する。
ステップ10において、敵オブジェクトの処理が行われる。この処理は、記憶領域22l及び24dから一部転送されたプログラムに基づいて、プレイヤオブジェクト60の動きを判断しながらプレイヤオブジェクト60に攻撃を加えたり進行を妨げる動きとなるように、敵オブジェクト72a〜72nの表示位置及び/又はその形状をポリゴンデータの演算によって求めて、変化した画像が表示される。これによって、敵オブジェクトは、プレイヤオブジェクト60に対して何らかの影響を与えるように働く。その詳細は、図27及び図28を参照して後述する。
ステップ11において、背景(又は静止)オブジェクトの処理が行われる。この処理は、記憶領域22mから一部転送されたプログラムと記憶領域24cから転送された静止オブシェクトのポリゴンデータとに基づいて、静止オブジェクト71a〜71nの表示位置及びその形状を演算によって求める。その詳細は、図29を参照して後述する。
ステップ12において、RSP122が描画処理を行う。すなわち、RCP12は、CPU11の制御の下に、RAM15の画像データ領域154に記憶されている敵,プレイヤ,仲間等の移動オブジェクトや背景等の静止オブジェクトのそれぞれのテクスチュアデータに基づいて、移動オブジェクト及び静止オブジェクトの表示処理のための画像データの変換処理(座標変換処理及びフレームメモリ描画処理)を行う。具体的には、複数の移動オブジェクトや静止オブジェクト毎の複数のポリゴンによって構成される各三角形の面に対応する記憶領域154dの各番地には、各オブジェクト毎に決められたテクスチャデータで指定される色等を貼りつけるために、色データが書込まれる。その詳細は、図30を参照して後述する。
ステップ13において、RCP12がメッセージや音楽や効果音等の音声データに基づいて、音声処理を行なう。その詳細は、図31を参照して後述する。
ステップ14において、RCP12がステップ12において描画処理された結果によりフレームメモリ領域152に記憶されている画像データを読出し処理することにより、プレイヤオブジェクト,移動オブジェクト,静止オブジェクト,敵オブジェクト等が表示画面31上に表示される。
ステップ15において、RCP12がステップ13において音声処理した結果得られる音声データを読出すことにより、音楽,効果音又は会話等の音声を出力させる。
ステップ16において、コースをクリアしたか否かが判断(コースクリア検出)され、コースをクリアしていなければステップ17においてゲームオーバになったか否かが判断され、ゲームオーバでなければステップ3へ戻り、ゲームオーバの条件が検出されるまでステップ3〜17が繰り返される。そして、プレイヤに許容されているミス回数が所定の回数になるか、プレイヤオブジェクトのライフを所定数量使い切る等のゲームオーバ条件になったことが検出されると、続くステップ18においてゲームの継続又はバックアップデータの記憶の選択処理等のゲームオーバ処理が行われる。なお、ステップ16において、コースをクリアした条件(例えは、ボスを倒す等)が検出されると、ステップ19においてコースクリアの処理をした後、ステップ1へ戻る。ここで、コースクリア処理は、例えば得点レジスタに記憶されている直前にプレイしたコースの得点を対応するコース別得点レジスタにロードさせ、そのコース別得点を図11のコース別得点として表示させ、さらに複数のコースをクリアしている場合であればその合計得点を求めて表示する。なお、コース別得点の計算では、必要に応じてコースクリアした場合のボーナス得点を加算してもよい。以下には、各サブルーチンの詳細な動作を説明する。
図16を用いて、本願の特徴となるコース選択(メインルーチンのステップ1)の詳細を説明する。ステップ101において、CPU11は、図9のように、各コース毎にプレイヤが取得したRAM15のレジスタ領域159Rに記憶されているコース別得点をコース点数表示領域72a〜72eに表示するための表示処理を行う。具体的には、CPU11が点数を表すための画像データを表示リストに登録する。以下、特に記載がなければ、表示処理とは、画像データを表示リストに登録することをいう。ステップ102において、CPU11は、各コースの点数を合計して、合計点を合計点数表示領域72に表示するための表示処理を行う。ステップ103において、CPU11は、使用可能なプレイヤオブジェクト60の数を機体数表示領域74に表示するための表示処理を行う。
なお、図16には図示していないが、ステップ101,ステップ102およびステップ103の表示処理以外に、コース表示処理やハイスコア表示処理等が行われる。コース表示処理は、CPU11が図9のコース表示領域80に表示されているような画像データを表示リストに登録することである。
ステップ104において、CPU11は、スタートスイッチ47Sが押されているか否かを判断する。もし、スタートスイッチ47Sが押されていないならば、ステップ105に進む。
ステップ105において、CPU11は、ボタンスイッチ47Aが押されているか否かを判断する。もし、ボタンスイッチ47Aが押されていないならば、毎フレーム行われる画像処理や音声処理を行い、所定の画像をディスプレイ30に表示し、音声を出力した後、ステップ104に戻り、ボタンスイッチ47Aが押されているならば、ステップ110に進む。
一方、ステップ104において、スタートスイッチ47Sが押されているならば、ステップ106に進む。ステップ106において、CPU11は、図10のようなコース選択ウインドウ75の表示処理を行う。コース選択ウインドウ75には、「コースをすすめる」,「コースをかえる」,「コースをやりなおす」の3つの項目が表示され、どの項目を選択するかを指定するためのカーソル(指示手段)が移動可能に表示される。図10では、カーソルを矢印で表したが、選択項目の色を反転させたり、絵柄によって項目を指示できるようにしてもよい。
ステップ107において、CPU11は、指示手段を上下に移動する移動処理を行う。具体的には、CPU11は、ジョイスティック45が手前に引かれたか、反対に押されたかを検出し、引かれたら指示手段を下に移動させ、押されたら指示手段を上に移動させる。
ステップ108において、CPU11は、ボタンスイッチ47Aが押されているか否かを判断する。もし、ボタンスイッチ47Aが押されていないならば、毎フレーム行われる画像処理や音声処理を行い、所定の画像をディスプレイ30に表示し、音声を出力した後、ステップ107に戻り、ボタンスイッチ47Aが押されているならば、ステップ109に進む。
ステップ109において、CPU11は、ボタンスイッチ47Aが押されたときに、指示手段がどの項目を選択しているかを判断し、選択項目が「コースをすすめる」であるか否かを判断する。もし、選択項目が「コースをすすめる」であるならば、ステップ110に進む。
ステップ110において、CPU11は、全コースでの仲間オブジェクトのデータをRAM15の仲間データ記憶領域158に記憶する。仲間オブジェクトのデータは、前回クリアしたコースでの仲間オブジェクトの状態である。本願発明では、仲間オブジェクトは、戦闘中ダメージを多く受けると戦線を離脱するようになっている。仲間オブジェクトは、戦線を離脱した場合、ダメージが多いと次のコースに参加できなくなり、ダメージが少ないと次のコースに参加できる。この次のコースに参加できるか否かの状態が仲間オブジェクトの状態である。
ステップ111において、CPU11は、次のコースのための初期設定を行う。例えば、フラグのリセットや各種パラメータの設定や各種表示すべきオブジェクトデータのRAM15への読込等である。ステップ111が終了すると、メインルーチンに戻り、ステップ2に進む。
一方、ステップ109において、選択項目が「コースをすすめる」でなければ、ステップ112に進む。ステップ112において、CPU11は、選択項目が「コースをかえる」であるか否かを判断する。もし、「コースをかえる」が選択されると、ステップ113に進む。ステップ113において、CPU11は、図9で示されていた次に進むべきコースとは異なるコースを選択するように設定する。例えば、コース3からコース4に進むように設定されていたのを、コース3からコース7に進むように設定する等である。次に、ステップ104に戻る。
一方、ステップ112において、選択項目が「コースをかえる」でなければ、ステップ114に進む。ステップ114において、CPU11は、RAM15のレジスタ領域159Rに記憶されているプレイヤオブジェクト数を1つ減らす。ステップ115において、仲間オブジェクトのデータをRAMの仲間データ記憶領域158から読み出す。ステップ116において、前回クリアしたコースのための初期設定を行う。ステップ111が終了すると、元のルーチンに戻り、ステップ2に進む。
図17を参照して、モード切換処理(メインルーチンのステップ3)のサブルーチンの動作を説明する。プレイヤオブジェクトが図11のモード切換地点に到達すると、ステップ121においてオールレンジモード位置にいることが判断(又は検出)されて、ステップ123においてオールレンジモードのデモストレーション(以下「デモ」という)処理が終了したか否かが判断される。始めはデモ処理の終了していないことが判断され、ステップ124においてオールレンジモードのデモ表示のための画像処理が行われ、ステップ125においてオールレンジモードのデモ音声の発生のための音声処理が行われた後、前述のステップ12の描画処理へ進む。
一方、ステップ123において、デモ処理の終了したことが判断されると、ステップ126においてオールレンジモードへの切換処理(モードフラグF2をオールレンジモードに切換)が行われた後、メインルーチンへ戻る。
これによって、一方向スクロールモードからオールレンジモードに切換えられたときに、急に画面のスクロール方向が変化したような違和感を生じさせずに、スクロール範囲を切換えられる利点がある。また、スクロール範囲を切換えることにより、コースの全期間に渡ってスクロール範囲を全範囲とする場合に比べて一方向スクロール期間におけるCPUの負担を軽減でき、コースの全期間に渡って一方向スクロールとする場合に比べて変化に富んだスクロール表示が可能となり、多種多様なゲームの画像表現が可能となり、プレイヤの興趣を一層高められる利点がある。
図18を参照して、コントローラ処理(ステップ4)のサブルーチンの動作を説明する。ステップ131において、コントローラデータの読込要求コマンドがあったか否かが判断され、なければステップ131において読込要求コマンドが発生されるのを待つ。読込要求コマンドがあったことが判断されると、ステップ132においてコントローラ制御回路18にコマンドが供給される。これに応じて、コントローラ制御回路18が各コントローラ40A〜40Dの操作状態データを読込み処理を行う。ステップ133において、コントローラ制御回路18が全てのコントローラ40A〜40Dの操作状態データの読込みが終了したか否かが判断されるが、終了していなければするまで待つ。終了したことが検出されると、ステップ134において各コントローラ40A〜40Dの操作状態データがコントローラ制御回路18からバス制御回路121を介してRAM15の記憶領域156へ書き込まれる。
図19〜図21を参照して、仲間との通信処理(ステップ5)のサブルーチンの動作を説明する。ステップ141aにおいて、プレイヤオブジェクトが場所Aに達したか否かが判断され、場所Aに達していないことが判断されると、ステップ141b,141c,151a,151b,151c,151dの処理の後、メインルーチンへ戻る。そして、ステップ141aにおいて、プレイヤオブジェクトが場所Aに達したことが判断されると、ステップ142aにおいて仲間1が存在するか否かが判断される。第1の仲間が存在する場合は、ステップ143aにおいてセリフ又はメッセージを現在処理中か否かが判断される。セリフの処理中であることが判断されると、セリフフラグF31〜F3nのうちセリフに対応するフラグをオンさせるとともに、複数のセリフのうちの何れか1つを選択する必要があるため、ステップ144aにおいて優先順位の比較が行われる。ステップ145aにおいて、セリフ1の優先順位が現在処理中のセリフよりも高いか否かが判断され、高い場合はステップ146aへ進む。ステップ146aにおいてセリフ1の表示処理が行われる。例えば、セリフ1は第1の仲間からプレイヤオブジェクトに対して場所Aに出現する敵の攻撃を上手くかわすためのメッセージ(ブレーキでやり過ごせ)であって、その操作方法としてスイッチ47Cの下ボタン(スイッチ47Cd)を押すことを指示するメッセージが表示される。ステップ147aにおいて、セリフ1を音声により出力するための処理が行われる。なお、ステップ143aにおいてセリフの処理中でないことが判断されると、優先順位の判断を行う必要がないのでステップ146aへ進み、ステップ142aにおいて第1の仲間のいないこと又はステップ145aにおいて処理中のセリフがセリフ1よりも優先順位の低いことが判断されると、メインルーチンへ戻る。
一方、プレイヤオブジェクトの位置が場所Aではなく場所Bに居ることが判断されると、ステップ141b〜147bの動作が行われる。このステップ141b〜147bは、セリフ2を出力する動作であり、セリフが異なる点を除いてステップ141a〜147aの動作と同様であるので、対応するステップ番号の後に記号「a」に代えて記号「b」で示し、その詳細な説明を省略する。
また、セリフを出力する条件が時間に依存する場合、例えばボスを発見してからの時間Aに依存する場合は、ステップ141cにおいて時間Aであることが判断され、ステップ142cにおいて第2の仲間が近くにいることが判断されたとき、ステップ143c〜147cの動作が行われる。このステップ143c〜147cは、第2の仲間がボスの倒し方(攻撃方法)を教えるためのメッセージ(図13のセリフ3)を送る動作であり、仲間とセリフが異なる点を除いてステップ142a〜147aの動作と同様であるので、その詳細な説明を省略する。
また、セリフを出力する条件として、第3の仲間が敵から狙われている場合は、ステップ151aにおいてそのことが判断されて、ステップ152a〜156aの動作が行われる。ステップ152a〜156aは、仲間がボスの倒し方を教えるためのメッセージ(図13のセリフ5)を出力する動作であり、セリフが異なる点を除いてステップ142a〜146aの動作と同様である。
また、セリフを出力する条件が第3の仲間を助けた場合は、ステップ151bにおいてそのことが判断されて、ステップ152b〜156bの動作が行われる。ステップ152b〜156bは、第3の仲間を助けたときにセリフ6を発生する動作であり、セリフが異なる点を除いてステップ152a〜156aの動作と同様である。
さらに、セリフを出力する条件が敵からの攻撃を受けたプレイヤオブジェクトのセリフ8を出力する場合は、ステップ151cにおいてそのことが判断されて、ステップ152c〜156cの動作が行われる。セリフを出力する条件がボスを倒したときのセリフ9を出力する場合は、ステップ151dにおいてそのことが判断されて、ステップ152d〜156dの動作が行われる。
上述のように、プレイヤが適切な操作をするのを助けるためのメッセージ(図13の例ではセリフ1〜4)を表示又は音声で出力することにより、状況に応じて適切な操作方法のアドバイスを出力すれば、操作方法が難しくてもゲームの進行を容易にし、プレイヤに達成感や満足感を与えることができ、画面又はコースのクリアが容易となる。また、ゲームの場面又は状況に応じて適切なメッセージ(図13の例ではセリフ5〜9)を表示及び/又は音声による出力を行うことにより、ゲームの進行状況に応じて臨場感に富んだ表現ができ、ゲームの面白さを一層向上できる。
なお、プレイヤが適切な操作をするのを助けるためのメッセージや状況に応じて表示又は音声によって発生されるメッセージは、図13の実施例に限らず、ゲームの種類や内容によって適宜変更されるので、実施例の記載に限定されるものではない。例えば、各スイッチの操作方法は、説明の簡略化のために、多数のスイッチのうちの何れか1個を押す場合を説明したが、同じスイッチを複数回押すとか、複数のスイッチを予め定める組合せて押すように決めてもよい。
図22〜図23を参照して、物資補給処理(ステップ6)のサブルーチンの動作を説明する。プレイヤオブジェクトがアイテムを取得できる所定の場所又は位置に来るまでは、ステップ161においてプレイヤオブジェクトが場所に入っていないことが判断され、ステップ163においてアイテムを表示する時間(T1)が設定されていないこと(T1=0であること)が判断され、ステップ170においてアイテムを取得できる権利を有することを示すマーク(アイテムボックス)を表示する条件になっていないことが判断され、ステップ172においてアイテムがセットされていないことが判断された後、メインルーチンへ戻る。その後、メインルーチンの処理がフレーム周期で行われる。
そして、プレイヤオブジェクトがアイテムを取得できる場所に入ると、ステップ161においてそのことが判断される。ステップ162において、アイテムを取得できる条件であることを知らせるマークの表示時間として、タイマレジスタに一定時間(T1)がセットされる。ステップ163において、時間T1が0より大きいことが判断され、ステップ164において単位時間(例えば1秒)だけ減算(T1−1)される。ステップ165において、プレイヤがアイテムの表示要求スイッチ(例えば47Cr)を押せばアイテムを要求できることを示すマークを表示する。ステップ166において、アイテム要求のためのスイッチが押されたか否かが判断され、押されていないことが判断されると、ステップ170,172が行われた後、メインルーチンへ戻る。そして、フレーム周期毎にステップ161,163〜166,170,172が繰り返されることにより、スイッチ47Crが所定時間内に押されるのを待つ。
一方、前述の待機動作の繰り返し中に、ステップ166において、表示要求スイッチが押されたことを判断すると、ステップ167においてタイマレジスタに0がセット(リセット)され、ステップ168において仲間からアイテムの要求を受けたことを表すセリフの出力準備が行われる。このセリフは、ステップ14及び15において画像と音声で出力される。ステップ169において、アイテムを取得可能な条件を示すマーク(アイテムボックス)を表示するための処理(アイテムセット処理)が行われる。ステップ170において、アイテムボックスの表示が可能な条件であることが判断される。ステップ171において、アイテムボックスの表示を行うための処理が行われる。ステップ172においてアイテムボックスの表示が行われていることを判断したとき、次のステップ173におい
てプレイヤがアイテムボックスを取得するための操作(例えばアイテムボックスを射撃する操作又はプレイヤオブジェクトをアイテムボックスに重ねるように位置を決める操作等)が行われたか否かが判断される。アイテムボックスが取得されたことが判断されると、ステップ173〜180においてプレイヤオブジェクトの状態に応じて必要とするアイテムを供給するための処理が行われる。例えば、プレイヤオブジェクトがシューティングゲームの戦闘機の場合あれば、ステップ174において翼が所定の状態であるか否かが判断され、所定の翼がなければステップ175において補給アイテムとして翼が付与される。所定の翼の有る場合は、ステップ176においてライフ又はダメージに耐え得る量が一定値(128)以下か否かが判断される。以下であることが判断されると、ステップ177においてライフを回復させるアイテムが付与される。ライフが一定値(128)以下でなければ、ステップ178において2つのビーム砲(ツインビーム)があるか否かが判断される。ないことが判断されると、ステップ179においてツインビームが付与される。あることが判断されると、ステップ180において爆弾が付与される。
このようにして、プレイヤオブジェクトの状態に応じて、プレイヤがゲームを進める上で有効なアイテムが補給されるため、プレイヤはゲームを継続して先の場面又はコースクリアが容易となり、ゲームの達成感又は満足感を得ることが容易となる。また、プレイヤは、実際に戦闘機を操縦しながら指令を受けたり、援助を受けながら飛行をしているような感覚でプレイでき、ゲームの興趣を一層高めることができる。なお、補給されるアイテムは、ゲームの種類やゲーム内容によって異なり、ゲームソフトの開発者ならばこの実施例に記載の技術思想を参考に種々の変更が可能である。
次に、図32,図33,36,38,39及び42のフローチャートを参照して、プレイヤオブジェクト処理のサブルーチンを説明する。先ず、ステップ301において、CPU11は、コントロ−ルパッドデータ領域に記憶されているジョイスティックデータを読み出し、そのデータを補正する。具体的には、ジョイスティックの中心部分のデ−タを削除し、スティックが中心付近(例えば、半径10カウント)に来たときに、データが「0」になるようにする。この様にすれば、スティックの製造上の誤差やプレイヤの指が微妙に震えたときであっても、ジョイスティックデータを正確に「0」にすることができる。また、スティックが動作可能範囲の外周部分の所定範囲も補正している。具体的には、ゲームでは不要な部分のデータを出力しないように補正している。
ステップ302において、CPU11は、ゲーム中に使用するジョイスティックデータXj , Yj を求める。ステップ301で求められたデータは、カウンタ444のカウント値であるので、ゲームで処理し易い値に変換する。具体的に述べると、Xj は、スティックを傾けなかった時に「0」になり、−X軸方向(左方向)に最大に倒した時に「+60」になり、+X軸方向(右方向)に最大に倒した時に「−60」になる。Yj は、スティックを傾けなかった時に「0」になり、+Y軸方向(前方向)に最大に倒した時に「+60」になり、−Y軸方向(後方向)に最大に倒した時に「−60」になる。
ステップ303において、CPU11は、プレイヤオブジェクトの三次元のゲーム空間中の基本速度As0を設定する。As0は、1フレーム中にプレイヤオブジェクトが進むゲーム空間の距離である。このAs0は、そのコースや場面に応じて自由に設定可能である。
ステップ304において、CPU11は、コントロールパッドデータ領域に記憶されているボタンスイッチClのデータを読み出し、プレイヤがボタンスイッチClを押したか否かを判断する。このボタンスイッチClは、ゲーム中で、プレイヤオブジェクトの進行速度を速めるブーストスイッチとして用いられる。ボタンスイッチClが押されたときは、例えば、プレイヤオブジェクトが飛行機の場合、ジェット噴射が激しくなる等の画像処理が行われ、ジェット音が激しくなる。もし、プレイヤがボタンスイッチClを押していると判断したときは、ステップ305に進む。
ステップ305において、CPU11は、コントローラの振動発生回路53に振動発生の信号を与えるための処理を行う。その結果、ボタンスイッチClが押されているときにコントローラが振動し、ボタンスイッチClが押されていないときに振動がとまることとなる。このように、ブースト中にコントローラを振動させると、ゲームの臨場感が高まり、よりプレイヤの興味を引くことができる。
ステップ306において、CPU11はAs =As0 + Asαの計算を行う。As は、プレイヤオブジェクトの速度であり、Asαは、ブースト時のプレイヤオブジェクトの増加速度である。この計算をすることにより、プレイヤオブジェクトの次のフレームでの三次元位置の移動距離が増加することとなる。次に、ステップ310に進む。
一方、ステップ304において、もしプレイヤがボタンスイッチClを押していないと判断したときは、ステップ307に進む。ステップ307において、CPU11は、コントロールパッドデータ領域に記憶されているボタンスイッチ47Cdのデータを読み出し、プレイヤがボタンスイッチ47Cdを押したか否かを判断する。このボタンスイッチ47Cdは、ゲーム中にプレイヤオブジェクトの進行速度を遅くするブレーキスイッチとして用いられる。ボタンスイッチ47Cdが押されたときは、例えば、プレイヤオブジェクトが飛行機の場合、逆噴射をする等の画像処理が行われ、逆噴射音を発生させる。もし、プレイヤがボタンスイッチ47Cdを押していると判断したときは、ステップ308に進む。ステップ308において、CPU11はステップ305と同様に振動処理を行う。
ステップ309において、CPU11は、As =As0 - Asβの計算を行う。Asβは、ブレーキ時のプレイヤオブジェクトの減少速度である。この計算をすることにより、プレイヤオブジェクトの次のフレームでの三次元位置の移動距離が減少することとなる。次に、ステップ310に進む。
一方、ステップ307において、もし、プレイヤがボタンスイッチ47Cdを押していないと判断したときは、ステップ310に進む。ステップ310において、CPU11は、オールレンジモードか否かを判断する。具体的には、CPU11は、RAM15のフラグ領域159Fのオールレンジモードフラグがオン(セット)かオフ(リセット)であることを検出し、オールレンジモードフラグがセットされているなら現在のゲームモードがオールレンジモードであると判断し、オールレンジモードフラグがリセット状態であるなら現在のゲームモードが一方向スクロールモードであると判断する。もし、オールレンジモードでないと判断したらステップ320に進む。
ステップ320において、CPU11は次の各計算式の演算を行う。但し、本願明細書では乗算を「*」で表す。
θx1 = 0.68 * Xj
θy1 = 0.68 * Yj
Xs = - As * sin θx1
Zs = - As * cos θx1
Ys = - As * sin θy1
ここで、θx1,θy1,Xs ,Zs ,Ys の意味を図34を参照して具体的に説明する。θx1は、プレイヤオブジェクト60のXZ座標(プレイヤオブジェクト60を上部から平面視したときの平面の座標系)上におけるAs の方向ベクトルと−Z軸方向との角度であり、ジョイスティックのスティックを左に倒すと+方向に増加し、右に倒すと−方向に増加する値である。式よりθx1の値は、スティックの傾斜に比例して、- 40.8 (0.68 * 60) 〜 40.8 (0.68 * (-60))に増減する。プレイヤオブジェクト60は、As の方向に向かって進行するので、左右に- 40.8 (0.68 * 60) 〜 40.8 (0.68 * (-60))度の範囲で方向転換をすることとなる。例えば、この方向は、プレイヤオブジェクト60として図35の様な飛行機を用いた場合に機首の方向、戦車を用いた場合に大砲の方向、動物を用いた場合に顔の方向となる。θy1は、プレイヤオブジェクト60のYZ座標(プレイヤオブジェクト60を左側部から右に向かって平面視したときの平面の座標系)上におけるAs の方向ベクトルと−Z軸方向との角度であり、ジョイスティックのスティックを前方に倒すと+方向に増加し、後方に倒すと−方向に増加する値である。式よりθx1の値は、スティックの傾斜に比例して、- 40.8 (0.68 * 60) 〜 40.8 (0.68 * (-60))に増減する。プレイヤオブジェクト60は、As の方向に向かって進行するので、上下に- 40.8 (0.68 * 60) 〜 40.8 (0.68 * (-60))度の範囲で方向転換することとなる。Xs ,Zs およびYs は、それぞれ、As のX軸成分,Y軸成分およびZ軸成分である。
ステップ321において、CPU11は、プレイヤオブジェクト60の左部分が有るか否かを判断する。この実施例では、プレイヤオブジェクトの一例として飛行機を用いて説明するため、左翼が有るか否かを判断する。なお、プレイヤオブジェクトとして戦車を用いた場合は翼ではなくキャタピラであり、動物を用いた場合は手足となる。もし、プレイヤオブジェクト60の左部分が有ると判断されたときは、ステップ322に進む。ステップ322において、CPU11は、プレイヤオブジェクト60の右部分が有るか否かを判断する。もし、プレイヤオブジェクト60の右部分が有ると判断されたときは、ステップ323に進む。ステップ323において、CPU11は次の各計算式の演算を行う。
Xa = Xa + Xs
Ya = Ya + Ys
Za = Za + Zs
この計算によって、前フレームの座標(Xa ,Ya ,Za )(上記の式の右辺)にプレイヤオブジェクト60の速度(Xs ,Ys ,Zs )を加算することとなり、次フレームの座標(Xa ,Ya ,Za )(上記の式の左辺)が求められる。次に、図36のステップ330に進む。
一方、ステップ321において、プレイヤオブジェクト60の左部分が無いと判断されたときは、ステップ324に進む。ステップ324において、CPU11は次の計算式の演算を行う。
Xs = Xs - 2.5
Ys = Ys - 2.5
この計算によって、X軸方向の速度が減算され、かつY軸方向の速度が減算される。従って、ゲームを進行させると、プレイヤオブジェクト60は、画面に向かって左下方向に引っ張られるように表示されることとなる。例えば、スティックを倒さなかった場合でも、プレイヤオブジェクト60は、画面に向かって左下方向に徐々に移動するように表示されることとなる。
一方、ステップ322において、プレイヤオブジェクト60の右部分が無いと判断されたときは、ステップ325に進む。ステップ325において、CPU11は次の計算式の演算を行う。
Xs = Xs + 2.5
Ys = Ys - 2.5
この計算によって、X軸方向の速度が加算され、かつY軸方向の速度が減算される。従って、ゲームを進行させると、プレイヤオブジェクト60は、画面に向かって右下方向に引っ張られるように表示されることとなる。例えば、スティックを倒さなかった場合でも、プレイヤオブジェクト60は、画面に向かって右下方向に徐々に移動するように表示されることとなる。次に、ステップ323に進む。
一方、ステップ310において、CPU11がオールレンジモードでないと判断したら図36のステップ330に進む。
まず、一方向スクロールモードとオールレンジモードとの違いを述べると、一方向スクロールモードは、図34のように座標系が1つであるのに対し、オールレンジモードは、図37のように座標系が2つある。オールレンジモードの夫々の座標系について詳しく述べると、図37のX1 (−Z1 )座標は、様々なオブジェクトが存在する三次元空間を表すための座標であり、ゲーム実行中常に固定的に設けられている座標である。(本実施例では、「ゲーム空間座標」と呼ぶ。)X2 (−Z2 )座標は、プレイヤーオブジェクトが移動することに基づいて変化する座標である。後のカメラ処理で説明するが、- Z2 軸方向がカメラの撮影方向に相当するため、Z2 軸が表示画面に垂直方向を示すことになる。(本実施例では、「プレイヤ座標」と呼ぶ。)プレイヤオブジェクト60は、このプレイヤ座標において、一方向スクロールモードと略同様の動作をするのである。このように、2つの座標系を用いることにより、一方向スクロールモードのシステムを使用しながら、全方向スクロール可能なオールレンジモードのシステムを構築可能となった。従って、プレイヤは、モードが変化しても操作方法が殆ど変化しないため容易にゲームを楽しむことができる。
ステップ330において、CPU11は、次の計算式の演算を行う。
θx1 = 0.68 * Xj
θy1 = 0.68 * Yj
θx2 = 0.03 * θx1 + θx2 (1フレーム毎に 0.03 * θx1加算)
Xs = - As * sin (θx1 + θx2)
Zs = - As * cos (θx1 + θx2)
Ys = - As * sin θy1
θx1,θy1,θx2,Xs ,Zs ,Ys を図37を参照しながら具体的に説明する。θx1は、プレイヤオブジェクト60のXZ座標(プレイヤオブジェクト60を上部から平面視したときの平面の座標系)上におけるAs の方向ベクトルと−Z2 軸方向との角度であり、ジョイスティックのスティックを左に倒すと+方向に増加し、右に倒すと−方向に増加する値である。
θy1は、プレイヤオブジェクト60のYZ座標(プレイヤオブジェクト60を左側部から右に向かって平面視したときの平面の座標系)上におけるAs の方向ベクトルと−Z2 軸方向との角度であり、ジョイスティックのスティックを前方に倒すと+方向に増加し、後方に倒すと−方向に増加する値である。
θx2は、プレイヤオブジェクト60のXZ座標(プレイヤオブジェクト60を上部から平面視したときの平面の座標系)上における−Z1 軸方向と−Z2 軸方向との角度であり、毎フレーム、θx1に比例して増減する。すなわち、ジョイスティックのスティックを左に倒すと+方向に増加し、右に倒すと−方向に増加する値である。式よりθx2の値は、スティックの傾斜に比例して、1フレーム毎に-1.224(=0.03 * 0.68 * (-60))〜 1.224(=0.03 * 0.68 * 60) の範囲で増減する。
Xs ,Zs およびYs は、それぞれ、As のゲーム空間座標のX軸成分,Y軸成分およびZ軸成分である。
ステップ332において、CPU11は、プレイヤオブジェクト60の左部分が有るか否かを判断する。もし、プレイヤオブジェクト60の左部分が有ると判断されたときは、ステップ333に進む。
ステップ333において、CPU11は、プレイヤオブジェクト60の右部分が有るか否かを判断する。もし、プレイヤオブジェクト60の右部分が有ると判断されたときは、ステップ334に進む。ステップ334において、ステップ323と同様にCPU11は次の計算式の演算を行う。
Xa = Xa + Xs
Ya = Ya + Ys
Za = Za + Zs
この計算によって、前フレームのゲーム空間座標(Xa ,Ya ,Za )にプレイヤオブジェクト60のゲーム空間座標系での速度(Xs ,Ys ,Zs )を加算することとなり、次フレームのゲーム空間座標(Xa ,Ya ,Za )が求められる。次に図38のステップ350に進む。
一方、ステップ332において、プレイヤオブジェクト60の左部分が無いと判断されたときは、ステップ335に進む。ステップ335において、CPU11は次の計算式の演算を行う。
Xs = Xs - 2.5 * cos θx2
Zs = Zs - 2.5 * sin θx2
Ys = Ys - 2.5
この計算によって、プレイヤ空間でのX軸方向の速度が減算され、かつY軸方向の速度が減算される。従って、ゲームを進行させると、プレイヤオブジェクト60は、画面に向かって左下方向に引っ張られるように表示されることとなる。例えば、スティックを倒さなかった場合でも、プレイヤオブジェクト60は、画面に向かって左下方向に徐々に移動するように表示されることとなる。
次に、ステップ333において、プレイヤオブジェクト60の右部分が無いと判断されたときは、ステップ336に進む。ステップ336において、CPU11は次の計算式の演算を行う。
Xs = Xs + 2.5 * cos θx2
Zs = Zs - 2.5 * sin θx2
Ys = Ys - 2.5
この計算によって、プレイヤ空間でのX軸方向の速度が加算され、かつY軸方向の速度が減算される。従って、ゲームを進行させると、プレイヤオブジェクト60は、画面に向かって右下方向に引っ張られるように表示されることとなる。例えば、スティックを倒さなかった場合でも、プレイヤオブジェクト60は、画面に向かって右下方向に徐々に移動するように表示されることとなる。次に、ステップ334に進む。
なお、図面では、簡略化のために1フレーム毎に、コントローラの角度がプレイヤオブジェクト60に直接的に反映する様に記載したが、詳しく述べると、 0.68 * Xj からθx1を導き出す間にフィルター処理が行われている。同様に 0.68 * Yj からθy1を導き出す間にもフィルター処理が行われている。このフィルター処理を具体的に述べると、1フレームで 0.68 * Xj の値が即θx1になるのではなく、CPU11が複数フレームに渡って徐々にθx1の値を 0.68 * Xj に近づかせ、複数フレームを処理した時にθx1= 0.68 * Xj にさせる処理である。例えば、 0.68 * Xj をNf (所定の自然数)で除算し、Nf フレーム間θx1に 0.68 * Xj /Nf を加算し、θx1= 0.68 * Xj にさせる等の処理である。0.68 * Yj からθy1を導き出すフィルター処理も 0.68 * Xj からθx1を導き出すフィルター処理と同様である。このフィルター処理によって、プレイヤオブジェクト60がジョイスティックの急激な操作によって激しく移動し、画面が激しく変化してプレイヤの目に負担をかけたり、プレイヤオブジェクト60の操作を難しくすることを防止できる。
ステップ350において、CPU11は、プレイヤオブジェクト60の当たり判定を行う。この当たり判定の詳細を図39のステップ351〜ステップ354を用いて説明する。ステップ351〜ステップ354は、標準の当たり判定であり、後述の仲間オブジェクトの当たり判定も同様である。
図39のステップ351において、CPU11は、ABS(OBJ2x−OBJ1x)≦OBJ1rであるか否かを判断する。OBJ1 は、当たり判定をする対象物のオブジェクトであり、本実施例では、プレイヤオブジェクト60のことである。OBJ2 は、OBJ1 に向かって近づいてくるオブジェクトであり、本実施例では、仲間オブジェクト、敵オブジェクト、静止オブジェクト、敵オブジェクトが発射したレーザーオブジェクト等の攻撃オブジェクトのことである。OBJ1xは、OBJ1 のX座標値であり、OBJ2xは、OBJ2 のX座標値である。OBJ1xとOBJ2xとは、同じ座標系のX座標値であれば、ゲーム空間座標であってもプレイヤ座標であってもよい。ABS()は、()内の数値の絶対値を表す。OBJ1rは、OBJ1 を立方体として考えた場合の立方体の一辺の半分の長さをしめす値である。換言すると、OBJ1rは、OBJ1 の当たり判定範囲を示す値である。もし、ABS(OBJ2x−OBJ1x)≦OBJ1rであるならば、ステップ352に進む。
ステップ352において、CPU11は、ABS(OBJ2y−OBJ1y)≦OBJ1rであるか否かを判断する。OBJ1yは、OBJ1 のY座標値であり、OBJ2yは、OBJ2 のY座標値である。OBJ1yとOBJ2yとは、同じ座標系のY座標値であれば、ゲーム空間座標であってもプレイヤ座標であってもよい。もし、ABS(OBJ2y−OBJ1y)≦OBJ1rであるならば、ステップ353に進む。ステップ353において、CPU11は、ABS(OBJ2z−OBJ1z)≦OBJ1rであるか否かを判断する。OBJ1zは、OBJ1 のZ座標値であり、OBJ2zは、OBJ2 のZ座標値である。OBJ1zとOBJ2zとは、同じ座標系のZ座標値であれば、ゲーム空間座標であってもプレイヤ座標であってもよい。もし、ABS(OBJ2z−OBJ1z)≦OBJ1rであるならば、ステップ354に進む。
ステップ354において、CPU11は、OBJ2 とOBJ1 とが当たったと判断し、RAM15のフラグ領域159Fに当たり判定フラグをセットする。本実施例のプレイヤオブジェクト60は、本体オブジェクト61(以下、本体61)と左翼オブジェクト60Lと右翼オブジェクト60Rの3つのオブジェクトで構成されており、それぞれのオブジェクトを表示リストに登録することにより、ディスプレイ30に表示可能となる。また、図35のように、プレイヤオブジェクト60は、本体61の上部と本体61の下部と左翼62の本体寄りの部分と左翼63の本体寄りの部分に夫々1点づつ計4点当たり判定を行う点がある。ステップ351〜ステップ354において、夫々の点毎に当たり判定を行い、夫々の点に対して当たり判定フラグをセットするか否かを判定している。次に元のルーチンに戻る。
一方、ステップ351において、ABS(OBJ2x−OBJ1x)≦OBJ1rでないならば、元のルーチンに戻る。
一方、ステップ352において、ABS(OBJ2y−OBJ1y)≦OBJ1rでないならば、元のルーチンに戻る。
一方、ステップ353において、ABS(OBJ2z−OBJ1z)≦OBJ1rでないならば、元のルーチンに戻る。
一方、ステップ350が終了するとステップ360に進む。
ステップ360において、CPU11は、プレイヤオブジェクト60の本体61の下部に他のオブジェクトが当たったか否かを判断する。具体的には、CPU11がRAM15のフラグ領域159Fにある当たり判定フラグがセットされているか否かを検出する。もし、本体61の下部に他のオブジェクトが当たったならば、ステップ361に進む。ステップ361において、CPU11は次の計算式の演算を行う。
R1=R1−40
R1は、本体61の耐えうるダメージの大きさを示すものであり、本実施例では、初期値を255とする。計算式より、本体61の下部がダメージを受けるとR1が40減算され、例えば、7回ダメージを受けるとR1<0になる。ステップ362において、CPU11は次の計算式の演算を行う。
R2(or R3)=R2(or R3)−15
R2は、左翼62の耐えうるダメージの大きさを示すものであり、本実施例では、初期値を60とする。同様に、R3は、右翼63の耐えうるダメージの大きさを示すものであり、初期値を60とする。このステップでは、ランダムに左右を選び、選ばれた方の翼のダメージを大きくする。計算式より、左翼62または右翼63がダメージを受けるとR2またはR3が15減算され、例えば、4回ダメージを受けるとR2(or R3)=0になる。
ステップ363において、CPU11は、プレイヤオブジェクト60の本体61の上部に他のオブジェクトが当たったか否かを判断する。もし、本体61の上部に他のオブジェクトが当たったならば、ステップ364に進む。
ステップ364において、CPU11は、R1≦0であるか否かを判断する。換言すると、プレイヤオブジェクト60のダメージがプレー続行できる程度のものか否かを判断する。もし、R1≦0でないならば、ステップ365に進む。
ステップ365において、CPU11は、本体61を表示リストに登録する。本体61は、プレイヤオブジェクト60の中心部分のオブジェクトである。
ステップ366において、CPU11は、R2 andR3≦0であるか否かを判断する。換言すると、左翼62のダメージが左翼を存続できる程度のものであり、かつ右翼63のダメージが右翼を存続できる程度のものであるか否かを判断する。もし、R2 and R3≦0でないならば、ステップ367に進む。
ステップ367において、CPU11は、R2≦0であるか否かを判断する。換言すると、左翼62のダメージが左翼を存続できる程度のものか否かを判断する。もし、R2≦0でないならば、ステップ368に進む。
ステップ368において、CPU11は、R3≦0であるか否かを判断する。換言すると、右翼62のダメージが右翼を存続できる程度のものか否かを判断する。もし、R3≦0でないならば、ステップ369に進む。
ステップ369において、CPU11は、完全な左翼オブジェクト60Lと完全な左翼オブジェクト60Lを表示リストに登録する。この登録により、ディスプレイ30には、図35のようなプレイヤオブジェクト60が表示されることとなる。次に、元のルーチンに戻り、ステップ8へ進む。
一方、ステップ366において、R2 and R3≦0であるならば、ステップ370に進む。ステップ370において、CPU11は、左翼62のない左翼オブジェクト60Lと右翼63のない右翼オブジェクト60Rを表示リストに登録する。この登録により、ディスプレイ30には、図40のような左翼と右翼の一部である左翼62と右翼63が無くなったプレイヤオブジェクト60が表示されることとなる。次に、元のルーチンに戻り、ステップ8へ進む。
一方、ステップ367において、R2≦0であるならば、ステップ371に進む。ステップ371において、CPU11は、左翼62のない左翼オブジェクト60Lと完全な右翼オブジェクト60Rを表示リストに登録する。この登録により、ディスプレイ30には、図41のような左翼の一部である左翼62が無く、かつ正常な右翼をもったプレイヤオブジェクト60が表示されることとなる。次に、元のルーチンに戻り、ステップ8へ進む。
一方、ステップ368において、R3≦0であるならば、ステップ372に進む。ステップ372において、CPU11は、右翼63のない右翼オブジェクト60Rと完全な左翼オブジェクト60Lを表示リストに登録する。この登録により、ディスプレイ30には、図41のプレイヤオブジェクト60とは逆に、右翼の一部である右翼63が無く、かつ正常な左翼をもったプレイヤオブジェクト60が表示されることとなる。次に、元のルーチンに戻り、ステップ8へ進む。
一方、ステップ364において、R1≦0であるならば、ステップ373に進む。ステップ373において、CPU11は、プレイヤオブジェクト60の爆発処理を行う。この爆発処理を実行すると、複数フレームに渡って、他の処理をスキップし、プレイヤオブジェクト60が爆発するシーンをディスプレイ30に表示する。その後、RAM15のレジスタ領域159Rの値を1つ減らし、ステップ17に進み、ゲームオーバーでなければゲーム空間中の所定の場所からゲームを再開する。
一方、ステップ363において、本体61の上部に他のオブジェクトが当たってなければ、ステップ374に進む。
ステップ374において、CPU11は、複数フレーム間、プレイヤオブジェクト60の上方向に向かって移動させるための処理を行う。この処理を行うことにより、プレイヤオブジェクト60の下部が他のオブジェクトに衝突し、はねとばされるような表現が可能となる。次に、ステップ364に進む。
一方、ステップ360において、本体61の下部に他のオブジェクトが当たっていないならば、ステップ375に進む。
ステップ375において、CPU11は、プレイヤオブジェクト60の本体61の上部に他のオブジェクトが当たったか否かを判断する。もし、本体61の上部に他のオブジェクトが当たったならば、ステップ376に進む。ステップ376において、CPU11は次の計算式の演算を行う。
R1=R1−40
ステップ377において、CPU11は次の計算式の演算を行う。
R2(or R3)=R2(or R3)−15
ステップ378において、CPU11は、複数フレーム間、プレイヤオブジェクト60を下方向に向かって移動させるための処理を行う。この処理を行うことにより、プレイヤオブジェクト60の上部が他のオブジェクトに衝突し、はねとばされるような表現が可能となる。次に、ステップ364に進む。
一方、ステップ375において、本体61の上部に他のオブジェクトが当たらなっかたならば、ステップ380に進む。ステップ380において、CPU11は、プレイヤオブジェクト60の本体61と右翼オブジェクト60Rに他のオブジェクトが当たらず、左翼オブジェクト60Lにのみ他のオブジェクトが当たったか否かを判断する。もし、左翼オブジェクト60Lにのみに他のオブジェクトが当たったならば、ステップ381に進む。ステップ381において、CPU11は次の計算式の演算を行う。
R2=R2−20
次にステップ365に進む。
一方、ステップ380において、左翼オブジェクト60Lにのみに他のオブジェクトが当たらなかったならば、ステップ382に進む。ステップ382において、CPU11は、プレイヤオブジェクト60の本体61と左翼オブジェクト60Lに他のオブジェクトが当たらず、右翼オブジェクト60Rにのみ他のオブジェクトが当たったか否かを判断する。もし、右翼オブジェクト60Rにのみに他のオブジェクトが当たったならば、ステップ383に進む。
ステップ383において、CPU11は次の計算式の演算を行う。
R3=R3−20
次にステップ365に進む。
一方、ステップ382において、右翼オブジェクト60Rにのみに他のオブジェクトが当たらなかったならば、ステップ365に進む。
次に、プレイヤオブジェクト処理の他の実施例を示す。この実施例は、左翼オブジェクト60Lおよび右翼オブジェクト60Rが、2つの部分で構成されているのではなく、3つの部分で構成されている例である。具体的には、左翼および右翼がそれぞれ3つの部分で構成されており、ダメージによって、外側の部分から破壊されなくなっていくようにディスプレイ30に表示させる。図35に示すように、左翼オブジェクト60Lおよび右翼オブジェクト60Rは、左翼62と左翼64と右翼63と右翼65とを含む、例えば、左翼オブジェクト60Lがダメージを少し受けたとき(例えば、0<R2≦30)に、図41のように左翼62がなくなり、多くのダメージを受けたとき(例えば、R2≦0)に、図43のように左翼64がなくなる映像をディスプレイ30に表示させる。右翼63と右翼65も同様の処理を行う。
また、図33のステップ321〜ステップ325および図36のステップ332〜ステップ336のプレイヤオブジェクト60の移動制御を左翼オブジェクト60Lおよび右翼オブジェクト60Rの状態により、左右それぞれ2段階にすることにより、より変化に富んだプレイヤオブジェクト60の移動制御を行える。従って、さらに、プレイヤに対して、ゲームに対する臨場感や達成感を与えられる。
次に、図15のステップ8のサブルーチンフローチャートである図44および図45の詳細な説明をする。ステップ500において、CPU11は、RAM15のフラグ領域159Fのオールレンジモードフラグがセットされているか否かを判断する。もし、フラグ領域159Fのオールレンジモードフラグがセットされていないならば、ステップ501に進む。ステップ501において、CPU11は次の計算式の演算を行う。
Xc = (Xa - X0 )* 0.8
図34のように、Xc は、プレイヤオブジェクト60を撮影するカメラのX座標位置である。このカメラとは、三次元空間中のオブジェクトをどのようなアングルでディスプレイ30に表示するかを決定する仮想のカメラである。X0 は、プレイヤオブジェクト60が移動しているX座標の中心と、三次元空間のX座標の原点とがずれているときのずれの値である。主に、コースが分岐しているときに使用する値である。本願実施例では、X0 を0とする。
ステップ502において、CPU11は次の計算式の演算を行う。
Yc = (Ya - Y0 )* 0.8
Yc は、プレイヤオブジェクト60を撮影するカメラのY座標位置である。Y0は、プレイヤオブジェクト60が移動しているY座標の中心と、三次元空間のY座標の原点とがずれているときのずれの値である。主に、コースが分岐しているときに使用する値である。本願実施例では、Y0 を0とする。
ステップ503において、CPU11は、プレイヤがボタンスイッチClを押したか否かを判断する。もし、プレイヤがボタンスイッチClを押していない場合は、ステップ504に進む。
ステップ504において、CPU11は、プレイヤがボタンスイッチ47Cdを押したか否かを判断する。もし、プレイヤがボタンスイッチ47Cdを押していない場合は、ステップ505に進む。
ステップ505において、CPU11は次の計算式の演算を行う。
Zc =Za+ 400
Zc は、プレイヤオブジェクト60を撮影するカメラのZ座標の値である。従って、Zc は、プレイヤオブジェクトの位置からZ軸方向に400移動した位置のZ座標を表す。ステップ506において、カメラの撮影方向をスクロール方向に設定する。図34のように−Z軸方向に設定する。
一方、ステップ503において、プレイヤがボタンスイッチClを押している場合は、ステップ507に進む。ステップ507において、CPU11は次の計算式の演算を行う。
Zc =(Za +abs(Zα))+ 400
abs()は、()内の数値の絶対値を表す。Zαは、プレイヤオブジェクト60がブーストを使用したときに、カメラがプレイヤオブジェクト60から遠ざかる値である。このように、Zc からabs(Zα)を加算すると、プレイヤオブジェクト60をディスプレイ30に表示したとき、画面の奥方向に急速に飛んでいったように見える。次に、ステップ506に進む。一方、ステップ504において、プレイヤがボタンスイッチ47Cdを押している場合は、ステップ508に進む。ステップ508において、CPU11は次の計算式の演算を行う。
Zc =(Za −abs(Zβ))+ 400
Zβは、プレイヤオブジェクト60がブレーキを使用したときに、カメラがプレイヤオブジェクト60に近寄る値である。このように、Zc からabs(Zβ)を減算すると、プレイヤオブジェクト60をディスプレイ30に表示したとき、画面の手前方向に急速に押し戻されるように見える。次に、ステップ506に進む。
一方、ステップ500において、フラグ領域159Fのオールレンジモードフラグがセットされているならば、図45のステップ510に進む。ステップ510において、CPU11は、プレイヤがボタンスイッチClを押したか否かを判断する。もし、プレイヤがボタンスイッチClを押していない場合は、ステップ511に進む。
ステップ511において、CPU11は、プレイヤがボタンスイッチ47Cdを押したか否かを判断する。もし、プレイヤがボタンスイッチ47Cdを押していない場合は、ステップ512に進む。ステップ512において、CPU11は次の計算式の演算を行う。
Xr =2.0*θx1*cosθx2
Zr =2.0*θx1*sinθx2
Xc =Xa +400*sinθx2−Xr
Zc =Za + 400*cosθx2+Zr
Yc =0.8*Ya
図37のように、2.0*θx1は、カメラをプレイヤ空間でプレイヤオブジェクト60の後方から(−X)軸方向にずらせる値である。Xr は、プレイヤ空間のX座標値をゲーム空間のX座標値に変換した値である。Zr は、プレイヤ空間のZ座標値をゲーム空間のZ座標値に変換した値である。このように、カメラの位置を、プレイヤオブジェクト60の傾きに比例して、プレイヤオブジェクト60が傾いている方向に移動させることができる。ディスプレイ30に表示した例を示すと、図46のように、プレイヤオブジェクト60は、真っ直ぐに飛んでいる時は、画面の左右方向の中心に表示される。しかし、図47のように、プレイヤオブジェクト60は、左方向に移動すると、画面の左右方向の右に表示される。また、プレイヤオブジェクト60は、右方向に移動すると画面の左右方向の左に表示される。このように表示すると、照準を敵に合わせやすくなるため、プレイヤは、敵を狙いやすくなり、快適にゲームを楽しむことができる。ステップ513において、図37のように、CPU11は、カメラの撮影方向を−Z2 軸方向に設定する。
一方、ステップ510において、プレイヤがボタンスイッチClを押している場合は、ステップ514に進む。ステップ514において、CPU11は次の計算式の演算を行う。
Xr =2.0*θx1*cosθx2
Zr =2.0*θx1*sinθx2
Xc =Xa +(400+abs(Zα))*sinθx2−Xr
Zc =Za + (400+abs(Zα))*cosθx2+Zr
Yc =0.8*Ya
次に、ステップ513に進む。
一方、ステップ511において、プレイヤがボタンスイッチ47Cdを押している場合は、ステップ515に進む。ステップ515において、CPU11は次の計算式の演算を行う。
Xr =2.0*θx1*cosθx2
Zr =2.0*θx1*sinθx2
Xc =Xa +(400−abs(Zβ))*sinθx2−Xr
Zc =Za +(400−abs(Zβ))*cosθx2+Zr
Yc =0.8*Ya
次に、ステップ513に進む。
図24〜図26を参照して、仲間オブジェクト処理のサブルーチンの動作を説明する。ステップ201において第1の仲間がいるか否かが判断され、仲間がいればステップ202において第1の仲間オブジェクトの処理が行われる。その後、ステップ203において、第2の仲間がいるか否かが判断され、仲間がいればステップ204において第2の仲間オブジェクトの処理が行われる。同様に、第3の仲間の有無の判断と第3の仲間オブジェクトの処理がステップ205,206において行われる。ここで、ステップ202,204,206に示す第1〜第3の仲間オブジェクトの処理は、仲間の種類が異なる点を除いて同じ処理であり、具体的には図25,図26のサブルーチン処理(ステップ211〜230)によって実現される。
すなわち、ステップ211において中止処理でないことが判断され、ステップ212において第1〜第3の何れかの仲間の移動処理が行われる。ステップ213において、敵を攻撃可能な距離内か否かが判断され、攻撃可能な距離内であればステップ214において敵オブジェクトに対する攻撃処理(ビーム弾の発射等の演算と表示の処理)が行われる。ステップ215においていずれかの仲間が敵に追われているか否かが判断され、追われていることが判断されると、ステップ216において敵から攻撃可能な距離内か否かが判断される。敵が攻撃可能な距離内に居るとき、ステップ217においてセリフ5(例えば「助けてくれ」)の表示のための処理が行われ、ステップ218においてセリフ5の音声出力のための処理が行われる。なお、ステップ215および/または216において異なる(Noである)ことが判断されると、ステップ219において何れかの仲間オブジェクトがプレイヤオブジェクトに助けられたか否かが判断される。助けられたことが判断されると、ステップ220においてセリフ6(例えば「助かったぜ」)の表示のための処理が行われ、ステップ221においてセリフ6の音声出力のための処理が行われる。
ステップ222において、仲間が敵から攻撃を受けたときの当たり判定(例えば、後述のステップ254による攻撃によって仲間に当たったか否かの判定)が行われる。そして、ステップ223において敵の弾丸に当たったか否かが判断され、当たった場合はステップ224において仲間のダメージを減らす処理(レジスタR4の値の減算)が行われる。ステップ225において、レジスタR4のダメージに耐える量が100以下か否かが判断され、以上であればステップ229へ進み、以下であればステップ226へ進む。ステップ226において、一定以上のダメージを受けた仲間が戦闘を中止して基地へ帰還するメッセージの表示処理が行われ、その音声出力処理がステップ227において行われる。ステップ228において戦闘中止処理が終了したか否かが判断され、終了していなければステップ229において処理中の仲間オブジェクトを表示リストに登録する処理が行われ、終了していれば仲間フラグF1がオフにされた後、メインルーチンへ戻る。
図27を参照して、敵オブジェクト処理(ステップ10)のサブルーチンの動作を説明する。ステップ241において、敵オブジェクトの数を一時記憶するレジスタR5に1が設定される。ステップ242においてレジスタR5の値に基づいて敵オブジェクトが居ることが判断され、ステップ243において何番目かの敵オブジェクトの処理のサブルーチン(後述の図28)が行われる。その後、ステップ244においてレジスタR5に1が加算される。ステップ245においてプログラムによって設定されている数の全ての敵オブジェクトの表示のための処理が終了したか否かが判断され、全ての処理が終了していなければスイップ242へ戻り、ステップ242〜245の処理が繰り返される。
次に、図28を参照して、1個の敵オブジェクトの処理の詳細を説明する。ステップ251において敵オブジェクトの爆発処理中でないことが判断され、ステップ252においてレジスタ(E)に記憶されている番号の敵オブジェクトの移動処理が行われる。ステップ253において、プレイヤオブジェクト又は仲間オブジェクトが射程距離の範囲内か否かが判断される。射程距離内であれば、ステップ254において射程距離の範囲に存在するプレイヤオブジェクト又は仲間オブジェクトに対して攻撃を加えるための処理が行われる。
一方、ステップ255において、プレイヤオブジェクト又は仲間オブジェクトから敵オブジェクトに対して攻撃を加えた場合の当たり判定が行われる。ステップ256において、プレイヤオブジェクト又は仲間オブジェクトの発射したビーム弾が敵オブジェクトに命中したか否かが判断される。命中したことが検出されると、ステップ257において打たれた敵オブジェクトのダメージ量を減らす処理(レジスタR5から1を減算)及びプレイヤに得点を付与する処理(レジスタR10の値に倒した敵によって決められた得点を加算する処理)が行われる。ステップ258において、ダメージ量が0又は0以下になった(R5≦0)か否かが判断される。以下でなければ(R5>0のとき)、ステップ261において処理中の敵オブジェクトが表示リストに登録される。逆に、以下のとき(R5≦0のとき)は、ステップ259において敵オブジェクトを爆発させて消滅させるための処理が行われる。ステップ260において爆発処理の終了したことが判断されると、ステップ262においてプレイヤオブジェクトから攻撃を受けた敵オブジェクトのフラグをオフさせた後、メインルーチンへ戻る。
次に、図28の敵オブジェクト処理のステップ255を詳細に表したフローチャートを図48に示す。
従来のゲーム機では、敵の当たり判定の範囲は固定であった。そのため、プレイヤが敵を攻撃しても、遠くに存在する敵が小さすぎる為に、攻撃がなかなか当たらなかった。そのため、ゲームが不当に難解になり、プレイヤの意欲が削がれることがあった。これに対して、本願の敵当たり判定は、敵オブジェクトの当たり判定範囲を敵オブジェクトとプレイヤオブジェクト60との距離に比例して大きくしている。そのため、プレイヤは、敵オブジェクトが遠くにいても、攻撃を命中させることが可能となった。従って、本願発明によって、ゲームを不当に難解にすることを防ぎ、プレイヤが適切な難易度でプレーでき、プレイヤがより意欲的にゲームをプレイ可能となった。
ステップ600において、CPU11は、
RAD=(sqrt((OBJ2x−OBJ1x)^2+(OBJ2y−OBJ1y)^2+(OBJ2z−OBJ1z)^2)/50
を計算する。RADは、当たり判定を行う2つのオブジェクト間の距離に比例して大きくなる数値である。sqrt()は、()内の平方根を表す関数である。記号「^」は、前に記載した数値に後に記載した数値だけ乗算する記号である。従って、^2は、二乗を示す。記号「/」は、除算を示す。OBJ1 は、当たり判定をする対象物のオブジェクトであり、ここでは、敵オブジェクトのことである。OBJ2 は、OBJ1 に向かって近づいてくるオブジェクトであり、ここでは、プレイヤオブジェクト60が発射したレーザーオブジェクト等の攻撃オブジェクトのことである。OBJ2 がプレイヤオブジェクト60,仲間オブジェクト,静止オブジェクトまたは仲間オブジェクトが発射した攻撃オブジェクトの場合の当たり判定は、図39と同様の処理が行われる。
ステップ601において、CPU11は、RAD>200か否かを判断する。もし、RAD>200でなければ、ステップ602に進む。
ステップ602において、CPU11は、ABS(OBJ2x−OBJ1x)≦OBJ1r+RADであるか否かを判断する。もし、ABS(OBJ2x−OBJ1x)≦OBJ1r+RADであるならば、ステップ603に進む。
ステップ603において、CPU11は、ABS(OBJ2y−OBJ1y)≦OBJ1r+RADであるか否かを判断する。もし、ABS(OBJ2y−OBJ1y)≦OBJ1r+RADであるならば、ステップ604に進む。
ステップ604において、CPU11は、ABS(OBJ2z−OBJ1z)≦OBJ1r+RADであるか否かを判断する。もし、ABS(OBJ2z−OBJ1z)≦OBJ1r+RADであるならば、ステップ605に進む。
ステップ605において、CPU11は、OBJ2 とOBJ1 とが当たったと判断し、RAM15のフラグ領域に当たり判定フラグをセットする。次に元のルーチンに戻る。
一方、ステップ602において、ABS(OBJ2x−OBJ1x)≦OBJ1r+RADでないならば、元のルーチンに戻る。
一方、ステップ603において、ABS(OBJ2y−OBJ1y)≦OBJ1r+RADでないならば、元のルーチンに戻る。
一方、ステップ604において、ABS(OBJ2z−OBJ1z)≦OBJ1r+RADでないならば、元のルーチンに戻る。
一方、ステップ601において、RAD>200であれば、ステップ606に進む。ステップ606において、CPU11は、RAD=200を計算する。なぜ、このようにRADを200を越えないようにするのかを述べると、敵オブジェクトがプレイヤオブジェクト60から極端に遠いにも関わらず、簡単に当たり判定されることを防ぐためである。もし、RADに上限を設定しなかった場合、画面上で判別できないくらい小さな敵オブジェクトにプレイヤオブジェクト60から放たれた攻撃オブジェクトが命中することとなり、リアル感が失われてしまう。
図29を参照して、静止オブジェクト処理(ステップ11)のサブルーチンの動作を説明する。ステップ271において、静止オブジェクトレジスタ(R9)に1が設定される。ステップ272において、レジスタ(R9)によって特定される静止オブジェクトが表示リストに登録される。ステップ273において、レジスタR9に1が加算される。ステップ274においてプログラムによって設定されている数の全ての静止オブジェクトの表示のための処理が終了したか否かが判断され、全ての処理が終了していなければスイップ272へ戻り、ステップ272〜274の処理が繰り返される。全ての処理が終了すると、メインルーチンへ戻る。
図30を参照して、描画処理(ステップ12)のサブルーチンの動作を説明する。ステップ281において、座標変換処理が行われる。座標変換処理は、RCP12の制御の下に、RAM15の画像データ領域154に記憶されている敵,プレイヤ,仲間等の移動オブジェクトや背景等の静止オブジェクトのそれぞれの複数のポリゴンの座標データを、カメラの視点座標に変換することによって行われる。具体的には、カメラの視点から見た画像となるように、複数の移動オブジェクトや静止オブジェクトを構成する各ポリゴンデータが絶対座標からカメラ座標のデータに変換するための演算が行われる。ステップ282において、フレームメモリに描画処理が行われる。この処理は、カメラ座標に変換後のポリゴン座標によって囲まれる各オブジェクトを構成するある1つの三角形の面に、テクス
チュアデータに基づいて決定される色データをイメージバッファ領域152のドット毎に書込むことによって行われる。このとき、各ポリゴン毎の奥行きデータに基づいて、手前(近く)にあるオブジェクトが優先的に表示されるように、近くのオブジェクトの色データを書込み、それに併せて色データを書き込んだドットに対応する奥行データがZバッファ領域153の対応の番地に書き込まれる。その後メインルーチンへ戻る。
このステップ281及び282の動作は、フレーム毎に一定時間内で行われるが、1画面に表示すべき複数のオブジェクトのそれぞれを構成するポリゴン毎に順次処理され、かつ1画面に表示すべき全てのオブジェクトの処理が終了するまで繰り返して行われる。
図31を参照して、音声処理(ステップ13)のサブルーチンの動作を説明する。ステップ291において音声フラグがオンされているか否かが判断される。オンされていることが判断されると、ステップ292において出力する音声データが選択される。ステップ293において、選択された音声データが読出し処理された後、メインルーチンへ戻る。なお、読み出されたメッセージの音声データは、音声発生回路16によってディジタル−アナログ変換され、音声として出力される。
以上のように、この発明によれば、ビデオゲームにおける臨場感を高め、プレイヤの達成感を満たし、プレイヤのビゲオゲームに対する興趣を向上させることの可能な、ビデオゲームシステム及びビデオゲーム用記憶媒体が得られる。
また、プレイヤオブジェクトを複数の部分に分けて当たり判定し、ダメージを受けた部分によってプレイヤオブジェクトの表示状態を変化させることにより、変化に富み、興趣の優れたビデオゲームを実現可能である。
さらに、プレイヤオブジェクトの移動状態が多様に変化し、その変化に応じてプレイヤが操作手段を操作しなければないことにより、プレイヤオブジェクトの動きがリアルで、変化に富み、興趣の優れたビデオゲームを実現可能である。
さらに、プレイヤオブジェクトの分割部分毎の影響量に応じてプレイヤオブジェクトの移動状態を変化させることにより、プレイヤオブジェクトの動きがリアルで、変化に富み、興趣の優れたビデオゲームを実現可能である。
この発明の一実施例のビデオゲームシステムの構成を示す外観図である。 この発明の一実施例のビデオゲームシステムのブロック図である。 コントローラ制御回路18の詳細な回路図である。 コントローラ40のブロック図である。 外部ROM21のメモリ空間全体を図解的に示したメモリマップである。 外部ROM21のメモリ空間の一部を詳細に示したメモリマップである。 RAM15のメモリ空間全体を図解的に示したメモリマップである。 RAM15のメモリ空間の一部を詳細に示したメモリマップである。 この発明が適用される一例のゲームのコースを示す図である。 図10に示すゲームのコース選択画面を示す図である。 この発明が適用される一例のゲーム内容を説明するためのゲームエリアマップを示した図である。 図11のゲームにおける仲間との通信処理におけるメッセージ出力内容を図解的に示した図である。 図11のゲームにおける仲間との通信処理に基づいて表現されるメッセージ出力の画面表示の一例を示す図である。 図11のゲームにおけるボスキャラクタとの対戦状態の画面表示の一例を示す図である。 この発明の一実施例のゲーム処理のメインフローチャートである。 コース選択画面の詳細な処理を示すサブルーチンフローチャートである。 モード切換えの詳細な処理を示すサブルーチンフローチャートである。 コントローラ制御回路18とビデオゲーム機本体とのデータ転送を説明するためのフローチャートである。 ゲームの進行を助けるメッセージ出力処理の一例であって、仲間との通信処理のサブルーチンフローチャートである。 ゲームの進行を助けるメッセージ出力処理の一例であって、仲間との通信処理のサブルーチンフローチャートである。 ゲームの進行を助けるメッセージ出力処理の一例であって、仲間との通信処理のサブルーチンフローチャートである。 ゲームの進行を助けるメッセージ出力処理の他の例であって、補給物資の供給処理のサブルーチンフローチャートである。 ゲームの進行を助けるメッセージ出力処理の他の例であって、補給物資の供給処理のサブルーチンフローチャートである。 仲間オブジェクト処理のサブルーチンフローチャートである。 仲間オブジェクト処理のサブルーチンフローチャートである。 仲間オブジェクト処理のサブルーチンフローチャートである。 敵オブジェクト処理のサブルーチンフローチャートである。 図27の敵オブジェクト処理に含まれる一部ステップの動作を詳細に示したサブルーチンフローチャートである。 静止オブジェクト処理のサブルーチンフローチャートである。 描画処理のサブルーチンフローチャートである。 音声処理のサブルーチンフローチャートである。 プレイヤオブジェクト処理のサブルーチンフローチャートである。 プレイヤオブジェクト処理のサブルーチンフローチャートである。 一方向スクロールモードの三次元空間のX(−Z)座標である。 プレイヤオブジェクト60の外観図である。 プレイヤオブジェクト処理のサブルーチンフローチャートである。 オールレンジモードの三次元空間のX(−Z)座標である。 プレイヤオブジェクト処理のサブルーチンフローチャートである。 当たり判定処理のサブルーチンフローチャートである。 両翼の一部が無くなったプレイヤオブジェクト60の外観図である。 左翼の一部が無くなったプレイヤオブジェクト60の外観図である。 プレイヤオブジェクト処理のサブルーチンフローチャートである。 左翼の一部がより大きく無くなったプレイヤオブジェクト60の外観図である。 カメラ処理のサブルーチンフローチャートである。 カメラ処理のサブルーチンフローチャートである。 プレイヤオブジェクト60の画面表示の一例を示す図である。 プレイヤオブジェクト60の画面表示の他の一例を示す図である。 敵オブジェクトの当たり判定処理のサブルーチンフローチャートである。
符号の説明
10・・・ビデオゲーム機
11・・・CPU(中央処理装置)
12・・・RCP
15・・・RAM(一時記憶メモリ)
18・・・コントローラ制御回路
20・・・ROMカートリッジ
21・・・ゲームプログラムを記憶したROM
30・・・表示装置
31a・・メッセージ表示領域
31c・・得点表示領域
40・・・コントローラ
44・・・操作信号処理回路
45・・・ジョイスティック
50・・・RAMカートリッジ
51・・・RAM(書込読出し可能な記憶メモリ)
60・・・プレイヤオブジェクト

Claims (8)

  1. プレイヤによって操作される操作手段と、プログラムに基づきかつ操作手段の操作に応じて表示画像を変化させかつその表示のための画像データを表示装置に供給する画像処理装置とを有するビデオゲームシステムにおいて、
    前記操作手段は、プレイヤによって画面上の動作を操作可能なプレイヤオブジェクトの移動方向を指示する方向指示手段と、プレイヤオブジェクトの動作を指示する複数の動作指示スイッチとを含み、
    前記プレイヤオブジェクトを複数の部分に分割し、複数の部分を組み合わせたプレイヤオブジェクトの画像表示のためのデータを発生するプレイヤオブジェクト画像データ発生手段、
    前記プレイヤオブジェクトの周辺に表示され、かつプレイヤオブジェクトに影響を与える影響物体画像を表示するための影響物体画像データを発生する影響物体画像データ発生手段、
    前記プレイヤオブジェクトが前記影響物体から影響を受けたとき、プレイヤオブジェクトの分割された部分毎に当たり判定する当たり判定手段、
    前記当たり判定手段が当たり判定した前記プレイヤオブジェクトの分割部分の表示を変化させるように、前記プレイヤオブジェクト画像データ発生手段の発生画像データを変更させる画像変更手段、及び
    前記画像変更手段によって変化を加えられた前記プレイヤオブジェクトの分割部分の場所によって、プレイヤオブジェクトの移動状態を変化させる移動状態変更手段を備える、ビデオゲームシステム。
  2. 前記プレイヤオブジェクトは、複数の分割部分によって構成され、分割部分がさらに複数の小分割部分によって構成されており、
    前記画像変更手段は、前記当たり判定手段が当たり判定した前記プレイヤオブジェクトの分割部分の小分割部分の表示を変化させるように、前記プレイヤオブジェクト画像データ発生手段の発生画像データを変更させる、請求項1項記載のビデオゲームシステム。
  3. 前記プレイヤオブジェクトは、平面的に見て左右対象な形状に選ばれ、
    前記当たり判定手段は、前記プレイヤオブジェクトの左右の何れの部分であるかを検出し、
    前記画像変更手段は、前記当たり判定手段によって当たり判定された側の形状を変更させ、
    前記移動状態変更手段は、前記画像変更手段によって変更された側と変更されない側とで異なる移動状態となるように変化させる、請求項1項記載のビデオゲームシステム。
  4. 前記プレイヤオブジェクトは、飛行機型の形状に選ばれ、
    前記当たり判定手段は、前記プレイヤオブジェクトの左右の何れの部分および中心の部分であるかを検出し、
    前記画像変更手段は、前記当たり判定手段によって当たり判定された側の形状を変更させ、
    前記移動状態変更手段は、前記画像変更手段によって変更された側と変更されない側とで異なる移動状態となるように変化させる、請求項1項記載のビデオゲームシステム。
  5. 前記操作手段の前記方向指示手段は、アナログジョイスティックであり、
    前記移動状態変更手段は、前記画像変更手段によって変化を加えられた前記プレイヤオブジェクトの分割部分の位置と前記アナログジョイスティックの操作状態に基づいて移動状態を変化させる、請求項1項記載のビデオゲームシステム。
  6. 前記移動状態変更手段は、前記画像変更手段によって変化を加えられた前記プレイヤオブジェクトの移動方向に変化を加える、請求項1項記載のビデオゲームシステム。
  7. 前記当たり判定手段は、前記影響物体と前記プレイヤオブジェクトの分割された何れかの部分とが当たったときに、その影響量を判断し、当たった部分毎にどの程度影響を受けたかを記憶する影響量記憶手段を含み、
    前記画像変更手段は、前記影響量記憶手段に記憶されている影響量が所定の値になったときに、該当する前記プレイヤオブジェクトの分割部分の表示を変化させるように、前記プレイヤオブジェクト画像データ発生手段の発生画像データを変更させる、請求項1項記載のビデオゲームシステム。
  8. プレイヤによって画面上の動作を操作可能なプレイヤオブジェクトの移動方向を指示する方向指示手段と、プレイヤオブジェクトの動作又は変化を指示する複数の動作指示スイッチとを含む操作手段と、プログラムに基づきかつ操作手段の操作に応じて表示画像を変化させかつその表示のための画像データを表示装置に供給する画像処理装置とを有するビデオゲームシステムのためのプログラムを記憶したビデオゲーム用記憶媒体であって、
    前記プレイヤオブジェクトを複数の部分に分割し、複数の部分を組み合わせたプレイヤオブジェクトの画像表示のためのデータを発生するプレイヤオブジェクト画像データ発生プログラム、
    前記プレイヤオブジェクトの周辺に表示され、かつプレイヤオブジェクトに影響を与える影響物体画像を表示するための影響物体画像データを発生する影響物体画像データ発生プログラム、
    前記プレイヤオブジェクトが前記影響物体から影響を受けたとき、プレイヤオブジェクトの分割された部分毎に当たり判定する当たり判定プログラム、
    前記当たり判定プログラムが当たり判定した前記プレイヤオブジェクトの分割部分の表示を変化させるように、前記プレイヤオブジェクト画像データ発生手段の発生画像データを変更させる画像変更プログラム、および
    前記画像変更手段によって変化を加えられた前記プレイヤオブジェクトの分割部分の場所によって、プレイヤオブジェクトの移動状態を変化させる移動状態変更プログラムを記憶する、ビデオゲーム用記憶媒体。
JP2006257819A 2006-09-22 2006-09-22 ビデオゲームシステムおよびビデオゲーム用記憶媒体 Expired - Lifetime JP4313810B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2006257819A JP4313810B2 (ja) 2006-09-22 2006-09-22 ビデオゲームシステムおよびビデオゲーム用記憶媒体

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006257819A JP4313810B2 (ja) 2006-09-22 2006-09-22 ビデオゲームシステムおよびビデオゲーム用記憶媒体

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2001197387A Division JP3921361B2 (ja) 2001-06-28 2001-06-28 ビデオゲームシステムおよびビデオゲーム用記憶媒体

Related Child Applications (2)

Application Number Title Priority Date Filing Date
JP2007000550A Division JP2007083090A (ja) 2007-01-05 2007-01-05 ビデオゲームシステムおよびビデオゲーム用記憶媒体
JP2007000556A Division JP4553907B2 (ja) 2007-01-05 2007-01-05 ビデオゲームシステムおよびビデオゲーム用記憶媒体

Publications (2)

Publication Number Publication Date
JP2007058866A true JP2007058866A (ja) 2007-03-08
JP4313810B2 JP4313810B2 (ja) 2009-08-12

Family

ID=37922245

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006257819A Expired - Lifetime JP4313810B2 (ja) 2006-09-22 2006-09-22 ビデオゲームシステムおよびビデオゲーム用記憶媒体

Country Status (1)

Country Link
JP (1) JP4313810B2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013094303A (ja) * 2011-10-28 2013-05-20 Nintendo Co Ltd ゲーム処理システム、ゲーム処理方法、ゲーム処理装置およびゲーム処理プログラム
KR20190097136A (ko) * 2017-01-12 2019-08-20 가부시키가이샤 코나미 데지타루 엔타테인멘토 게임 장치 및 프로그램

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013094303A (ja) * 2011-10-28 2013-05-20 Nintendo Co Ltd ゲーム処理システム、ゲーム処理方法、ゲーム処理装置およびゲーム処理プログラム
KR20190097136A (ko) * 2017-01-12 2019-08-20 가부시키가이샤 코나미 데지타루 엔타테인멘토 게임 장치 및 프로그램
KR102290119B1 (ko) * 2017-01-12 2021-08-18 가부시키가이샤 코나미 데지타루 엔타테인멘토 게임 장치 및 프로그램
US11192026B2 (en) 2017-01-12 2021-12-07 Konami Digital Entertainment Co., Ltd. Game apparatus and program

Also Published As

Publication number Publication date
JP4313810B2 (ja) 2009-08-12

Similar Documents

Publication Publication Date Title
JP3442965B2 (ja) ビデオゲームシステムおよびビデオゲーム用記憶媒体
CA2235638C (en) Video game system and video game memory medium
JP3898238B2 (ja) ビデオゲーム装置及びその画像合成方法
JP5507893B2 (ja) プログラム、情報記憶媒体及び画像生成システム
US8197339B2 (en) Video game processing apparatus, a method and a computer program product for processing a video game
JP4756632B2 (ja) ゲームプログラムおよびゲーム装置
JP3747050B1 (ja) プログラム、情報記憶媒体、及び画像生成システム
JP3990648B2 (ja) プログラム、情報記憶媒体及び画像生成装置
JP3640384B2 (ja) ビデオゲームシステムおよびビデオゲーム用記憶媒体
JP4553907B2 (ja) ビデオゲームシステムおよびビデオゲーム用記憶媒体
JP4313810B2 (ja) ビデオゲームシステムおよびビデオゲーム用記憶媒体
JP2011018147A (ja) ゲームプログラム、ゲーム装置、ゲーム制御方法
JP3921361B2 (ja) ビデオゲームシステムおよびビデオゲーム用記憶媒体
JP3736767B2 (ja) 画像処理方法
JP2002320767A (ja) ビデオゲーム装置及びその画像合成方法
JP2007083090A (ja) ビデオゲームシステムおよびビデオゲーム用記憶媒体
JP2000135376A (ja) ゲーム装置、情報記録媒体および表示切替方法
AU735964B2 (en) Video game system and video game memory medium
JP4148868B2 (ja) ゲームプログラムおよびゲーム装置
CA2386705C (en) Video game system and video game memory medium
JP2006087458A (ja) ゲームプログラム、ゲームプログラムを記録したコンピュータ読み取り可能な記録媒体、及び、ゲーム装置
GB2333216A (en) Video game system
JP2005237673A (ja) プログラム、情報記憶媒体及びゲーム装置

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20061229

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080707

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080821

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20081020

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20081218

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20090127

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090216

A911 Transfer of reconsideration by examiner before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20090330

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20090420

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20090515

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120522

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120522

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120522

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130522

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130522

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130522

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140522

Year of fee payment: 5

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

EXPY Cancellation because of completion of term