以下、この実施例の限定しない一例に係るゲームシステムについて説明する。この実施例におけるゲームシステム1の一例は、本体装置(情報処理装置;この実施例ではゲーム装置本体として機能する)2と左コントローラ3および右コントローラ4とを含む。本体装置2は、左コントローラ3および右コントローラ4がそれぞれ着脱可能である。つまり、ゲームシステム1は、左コントローラ3および右コントローラ4をそれぞれ本体装置2に装着して一体化された装置として利用できる。また、ゲームシステム1は、本体装置2と左コントローラ3および右コントローラ4とを別体として利用することもできる(図2参照)。以下では、この実施例のゲームシステム1のハードウェア構成について説明し、その後に、この実施例のゲームシステム1の制御について説明する。
図1は、本体装置2に左コントローラ3および右コントローラ4を装着した状態の一例を示す図である。図1に示すように、左コントローラ3および右コントローラ4は、それぞれ本体装置2に装着されて一体化されている。本体装置2は、ゲームシステム1における各種の処理(例えば、ゲーム処理)を実行する装置である。本体装置2は、ディスプレイ12を備える。左コントローラ3および右コントローラ4は、ユーザが入力を行うための操作部を備える装置である。
図2は、本体装置2から左コントローラ3および右コントローラ4をそれぞれ外した状態の一例を示す図である。図1および図2に示すように、左コントローラ3および右コントローラ4は、本体装置2に着脱可能である。なお、以下において、左コントローラ3および右コントローラ4の総称として「コントローラ」と記載することがある。
図3は、本体装置2の一例を示す六面図である。図3に示すように、本体装置2は、略板状のハウジング11を備える。この実施例において、ハウジング11の主面(換言すれば、表側の面、すなわち、ディスプレイ12が設けられる面)は、大略的には矩形形状である。
なお、ハウジング11の形状および大きさは、任意である。一例として、ハウジング11は、携帯可能な大きさであってよい。また、本体装置2単体または本体装置2に左コントローラ3および右コントローラ4が装着された一体型装置は、携帯型装置となってもよい。また、本体装置2または一体型装置が手持ち型の装置となってもよい。また、本体装置2または一体型装置が可搬型装置となってもよい。
図3に示すように、本体装置2は、ハウジング11の主面に設けられるディスプレイ12を備える。ディスプレイ12は、本体装置2が生成した画像を表示する。この実施例においては、ディスプレイ12は、液晶表示装置(LCD)とする。ただし、ディスプレイ12は任意の種類の表示装置であってよい。
また、本体装置2は、ディスプレイ12の画面上にタッチパネル13を備える。この実施例においては、タッチパネル13は、マルチタッチ入力が可能な方式(例えば、静電容量方式)のものである。ただし、タッチパネル13は、任意の種類のものであってよく、例えば、シングルタッチ入力が可能な方式(例えば、抵抗膜方式)のものであってもよい。
本体装置2は、ハウジング11の内部においてスピーカ(すなわち、図6に示すスピーカ88)を備えている。図3に示すように、ハウジング11の主面には、スピーカ孔11aおよび11bが形成される。そして、スピーカ88の出力音は、これらのスピーカ孔11aおよび11bからそれぞれ出力される。
また、本体装置2は、本体装置2が左コントローラ3と有線通信を行うための端子である左側端子17と、本体装置2が右コントローラ4と有線通信を行うための右側端子21を備える。
図3に示すように、本体装置2は、スロット23を備える。スロット23は、ハウジング11の上側面に設けられる。スロット23は、所定の種類の記憶媒体を装着可能な形状を有する。所定の種類の記憶媒体は、例えば、ゲームシステム1およびそれと同種の情報処理装置に専用の記憶媒体(例えば、専用メモリカード)である。所定の種類の記憶媒体は、例えば、本体装置2で利用されるデータ(例えば、アプリケーションのセーブデータ等)、および/または、本体装置2で実行されるプログラム(例えば、アプリケーションのプログラム等)を記憶するために用いられる。また、本体装置2は、電源ボタン28を備える。
本体装置2は、下側端子27を備える。下側端子27は、本体装置2がクレードルと通信を行うための端子である。この実施例において、下側端子27は、USBコネクタ(より具体的には、メス側コネクタ)である。上記一体型装置または本体装置2単体をクレードルに載置した場合、ゲームシステム1は、本体装置2が生成して出力する画像を据置型モニタに表示することができる。また、この実施例においては、クレードルは、載置された上記一体型装置または本体装置2単体を充電する機能を有する。また、クレードルは、ハブ装置(具体的には、USBハブ)の機能を有する。
図4は、左コントローラ3の一例を示す六面図である。図4に示すように、左コントローラ3は、ハウジング31を備える。この実施例においては、ハウジング31は、縦長の形状、すなわち、上下方向(すなわち、図1および図4に示すy軸方向)に長い形状である。左コントローラ3は、本体装置2から外された状態において、縦長となる向きで把持されることも可能である。ハウジング31は、縦長となる向きで把持される場合に片手、特に左手で把持可能な形状および大きさをしている。また、左コントローラ3は、横長となる向きで把持されることも可能である。左コントローラ3が横長となる向きで把持される場合には、両手で把持されるようにしてもよい。
左コントローラ3は、アナログスティック32を備える。図4に示すように、アナログスティック32は、ハウジング31の主面に設けられる。アナログスティック32は、方向を入力することが可能な方向入力部として用いることができる。ユーザは、アナログスティック32を傾倒することによって傾倒方向に応じた方向の入力(および、傾倒した角度に応じた大きさの入力)が可能である。なお、左コントローラ3は、方向入力部として、アナログスティックに代えて、十字キーまたはスライド入力が可能なスライドスティック等を備えるようにしてもよい。また、この実施例においては、アナログスティック32を押下する入力が可能である。
左コントローラ3は、各種操作ボタンを備える。左コントローラ3は、ハウジング31の主面上に4つの操作ボタン33〜36(具体的には、右方向ボタン33、下方向ボタン34、上方向ボタン35、および左方向ボタン36)を備える。さらに、左コントローラ3は、録画ボタン37および−(マイナス)ボタン47を備える。左コントローラ3は、ハウジング31の側面の左上にLボタン38およびZLボタン39を備える。また、左コントローラ3は、ハウジング31の側面のうち、本体装置2に装着される際に装着される側の面に、SLボタン43およびSRボタン44を備える。これらの操作ボタンは、本体装置2で実行される各種プログラム(例えば、OSプログラムやアプリケーションプログラム)に応じた指示を行うために用いられる。
また、左コントローラ3は、左コントローラ3が本体装置2と有線通信を行うための端子42を備える。
図5は、右コントローラ4の一例を示す六面図である。図5に示すように、右コントローラ4は、ハウジング51を備える。この実施例においては、ハウジング51は、縦長の形状、すなわち、上下方向に長い形状である。右コントローラ4は、本体装置2から外された状態において、縦長となる向きで把持されることも可能である。ハウジング51は、縦長となる向きで把持される場合に片手、特に右手で把持可能な形状および大きさをしている。また、右コントローラ4は、横長となる向きで把持されることも可能である。右コントローラ4が横長となる向きで把持される場合には、両手で把持されるようにしてもよい。
右コントローラ4は、左コントローラ3と同様、方向入力部としてアナログスティック52を備える。この実施例においては、アナログスティック52は、左コントローラ3のアナログスティック32と同じ構成である。また、右コントローラ4は、アナログスティックに代えて、十字キーまたはスライド入力が可能なスライドスティック等を備えるようにしてもよい。また、右コントローラ4は、左コントローラ3と同様、ハウジング51の主面上に4つの操作ボタン53〜56(具体的には、Aボタン53、Bボタン54、Xボタン55、およびYボタン56)を備える。さらに、右コントローラ4は、+(プラス)ボタン57およびホームボタン58を備える。また、右コントローラ4は、ハウジング51の側面の右上にRボタン60およびZRボタン61を備える。また、右コントローラ4は、左コントローラ3と同様、SLボタン65およびSRボタン66を備える。
また、右コントローラ4は、右コントローラ4が本体装置2と有線通信を行うための端子64を備える。
図6は、本体装置2の内部構成の一例を示すブロック図である。本体装置2は、図3に示す構成の他、図6に示す各構成要素81〜91、97、および98を備える。これらの構成要素81〜91、97、および98のいくつかは、電子部品として電子回路基板上に実装されてハウジング11内に収納されてもよい。
本体装置2は、プロセッサ81を備える。プロセッサ81は、本体装置2において実行される各種の情報処理を実行する情報処理部であって、例えば、CPU(Central Processing Unit)のみから構成されてもよいし、CPU機能、GPU(Graphics Processing Unit)機能等の複数の機能を含むSoC(System−on−a−chip)から構成されてもよい。プロセッサ81は、記憶部(具体的には、フラッシュメモリ84等の内部記憶媒体、あるいは、スロット23に装着される外部記憶媒体等)に記憶される情報処理プログラム(例えば、ゲームプログラム)を実行することによって、各種の情報処理を実行する。
本体装置2は、自身に内蔵される内部記憶媒体の一例として、フラッシュメモリ84およびDRAM(Dynamic Random Access Memory)85を備える。フラッシュメモリ84およびDRAM85は、プロセッサ81に接続される。フラッシュメモリ84は、主に、本体装置2に保存される各種のデータ(プログラムであってもよい)を記憶するために用いられるメモリである。DRAM85は、情報処理において用いられる各種のデータを一時的に記憶するために用いられるメモリである。
本体装置2は、スロットインターフェース(以下、「I/F」と略記する)91を備える。スロットI/F91は、プロセッサ81に接続される。スロットI/F91は、スロット23に接続され、スロット23に装着された所定の種類の記憶媒体(例えば、専用メモリカード)に対するデータの読み出しおよび書き込みを、プロセッサ81の指示に応じて行う。
プロセッサ81は、フラッシュメモリ84およびDRAM85、ならびに上記各記憶媒体との間でデータを適宜読み出したり書き込んだりして、上記の情報処理を実行する。
本体装置2は、ネットワーク通信部82を備える。ネットワーク通信部82は、プロセッサ81に接続される。ネットワーク通信部82は、ネットワークを介して外部の装置と通信(具体的には、無線通信)を行う。この実施例においては、ネットワーク通信部82は、第1の通信態様としてWi−Fiの規格に準拠した方式により、無線LANに接続して外部装置と通信を行う。また、ネットワーク通信部82は、第2の通信態様として所定の通信方式(例えば、独自プロトコルによる通信や、赤外線通信)により、同種の他の本体装置2との間で無線通信を行う。なお、上記第2の通信態様による無線通信は、閉ざされたローカルネットワークエリア内に配置された他の本体装置2との間で無線通信可能であり、複数の本体装置2の間で直接通信することによってデータが送受信される、いわゆる「ローカル通信」を可能とする機能を実現する。
本体装置2は、コントローラ通信部83を備える。コントローラ通信部83は、プロセッサ81に接続される。コントローラ通信部83は、左コントローラ3および/または右コントローラ4と無線通信を行う。本体装置2と左コントローラ3および右コントローラ4との通信方式は任意であるが、この実施例においては、コントローラ通信部83は、左コントローラ3との間および右コントローラ4との間で、Bluetooth(登録商標)の規格に従った通信を行う。
プロセッサ81は、上述の左側端子17、右側端子21、および下側端子27に接続される。プロセッサ81は、左コントローラ3と有線通信を行う場合、左側端子17を介して左コントローラ3へデータを送信するとともに、左側端子17を介して左コントローラ3から操作データを受信(または、取得)する。また、プロセッサ81は、右コントローラ4と有線通信を行う場合、右側端子21を介して右コントローラ4へデータを送信するとともに、右側端子21を介して右コントローラ4から操作データを受信(または、取得)する。また、プロセッサ81は、クレードルと通信を行う場合、下側端子27を介してクレードルへデータを送信する。このように、この実施例においては、本体装置2は、左コントローラ3および右コントローラ4との間で、それぞれ有線通信と無線通信との両方を行うことができる。また、左コントローラ3および右コントローラ4が本体装置2に装着された一体型装置または本体装置2単体がクレードルに装着された場合、本体装置2は、クレードルを介してデータ(例えば、表示画像データや音声データ)を据置型モニタ等に出力することができる。
ここで、本体装置2は、複数の左コントローラ3と同時に(換言すれば、並行して)通信を行うことができる。また、本体装置2は、複数の右コントローラ4と同時に(換言すれば、並行して)通信を行うことができる。したがって、複数のユーザは、左コントローラ3および右コントローラ4のセットをそれぞれ用いて、本体装置2に対する入力を同時に行うことができる。一例として、第1ユーザが左コントローラ3および右コントローラ4の第1セットを用いて本体装置2に対して入力を行うと同時に、第2ユーザが左コントローラ3および右コントローラ4の第2セットを用いて本体装置2に対して入力を行うことが可能となる。
本体装置2は、タッチパネル13の制御を行う回路であるタッチパネルコントローラ86を備える。タッチパネルコントローラ86は、タッチパネル13とプロセッサ81との間に接続される。タッチパネルコントローラ86は、タッチパネル13からの信号に基づいて、例えばタッチ入力が行われた位置を示すデータを生成して、プロセッサ81へ出力する。
また、ディスプレイ12は、プロセッサ81に接続される。プロセッサ81は、(例えば、上記の情報処理の実行によって)生成した画像および/または外部から取得した画像をディスプレイ12に表示する。
本体装置2は、コーデック回路87およびスピーカ(具体的には、左スピーカおよび右スピーカ)88を備える。コーデック回路87は、スピーカ88および音声入出力端子25に接続されるとともに、プロセッサ81に接続される。コーデック回路87は、スピーカ88および音声入出力端子25に対する音声データの入出力を制御する回路である。
本体装置2は、電力制御部97およびバッテリ98を備える。電力制御部97は、バッテリ98およびプロセッサ81に接続される。また、図示しないが、電力制御部97は、本体装置2の各部(具体的には、バッテリ98の電力の給電を受ける各部、左側端子17、および右側端子21)に接続される。電力制御部97は、プロセッサ81からの指令に基づいて、バッテリ98から上記各部への電力供給を制御する。
また、バッテリ98は、下側端子27に接続される。外部の充電装置(例えば、クレードル)が下側端子27に接続され、下側端子27を介して本体装置2に電力が供給される場合、供給された電力がバッテリ98に充電される。
図7は、本体装置2と左コントローラ3および右コントローラ4との内部構成の一例を示すブロック図である。なお、本体装置2に関する内部構成の詳細については、図6で示しているため図7では省略している。
左コントローラ3は、本体装置2との間で通信を行う通信制御部101を備える。図7に示すように、通信制御部101は、端子42を含む各構成要素に接続される。この実施例においては、通信制御部101は、端子42を介した有線通信と、端子42を介さない無線通信との両方で本体装置2と通信を行うことが可能である。通信制御部101は、左コントローラ3が本体装置2に対して行う通信方法を制御する。すなわち、左コントローラ3が本体装置2に装着されている場合、通信制御部101は、端子42を介して本体装置2と通信を行う。また、左コントローラ3が本体装置2から外されている場合、通信制御部101は、本体装置2(具体的には、コントローラ通信部83)との間で無線通信を行う。コントローラ通信部83と通信制御部101との間の無線通信は、例えばBluetooth(登録商標)の規格に従って行われる。
また、左コントローラ3は、例えばフラッシュメモリ等のメモリ102を備える。通信制御部101は、例えばマイコン(マイクロプロセッサとも言う)で構成され、メモリ102に記憶されるファームウェアを実行することによって各種の処理を実行する。
左コントローラ3は、各ボタン103(具体的には、ボタン33〜39、43、44、および47)を備える。また、左コントローラ3は、アナログスティック(図7では「スティック」と記載する)32を備える。各ボタン103およびアナログスティック32は、自身に対して行われた操作に関する情報を、適宜のタイミングで繰り返し通信制御部101へ出力する。
通信制御部101は、各入力部(具体的には、各ボタン103、アナログスティック32、各センサ104および105)から、入力に関する情報(具体的には、操作に関する情報、またはセンサによる検出結果)を取得する。通信制御部101は、取得した情報(または取得した情報に所定の加工を行った情報)を含む操作データを本体装置2へ送信する。なお、操作データは、所定時間に1回の割合で繰り返し送信される。なお、入力に関する情報が本体装置2へ送信される間隔は、各入力部について同じであってもよいし、同じでなくてもよい。
上記操作データが本体装置2へ送信されることによって、本体装置2は、左コントローラ3に対して行われた入力を得ることができる。すなわち、本体装置2は、各ボタン103およびアナログスティック32に対する操作を、操作データに基づいて判断することができる。
左コントローラ3は、電力供給部108を備える。この実施例において、電力供給部108は、バッテリおよび電力制御回路を有する。図示しないが、電力制御回路は、バッテリに接続されるとともに、左コントローラ3の各部(具体的には、バッテリの電力の給電を受ける各部)に接続される。
図7に示すように、右コントローラ4は、本体装置2との間で通信を行う通信制御部111を備える。また、右コントローラ4は、通信制御部111に接続されるメモリ112を備える。通信制御部111は、端子64を含む各構成要素に接続される。通信制御部111およびメモリ112は、左コントローラ3の通信制御部101およびメモリ102と同様の機能を有する。したがって、通信制御部111は、端子64を介した有線通信と、端子64を介さない無線通信(具体的には、Bluetooth(登録商標)の規格に従った通信)との両方で本体装置2と通信を行うことが可能であり、右コントローラ4が本体装置2に対して行う通信方法を制御する。
右コントローラ4は、左コントローラ3の各入力部と同様の各入力部を備える。具体的には、各ボタン113、アナログスティック52を備える。これらの各入力部については、左コントローラ3の各入力部と同様の機能を有し、同様に動作する。
右コントローラ4は、電力供給部118を備える。電力供給部118は、左コントローラ3の電力供給部108と同様の機能を有し、同様に動作する。
次に、図8−図18を参照して、この実施例のゲームシステム1において実行される仮想のゲームのゲーム処理についての概要を説明する。図8は、この実施例の仮想のゲームのアプリケーションを実行した場合に、表示装置(たとえば、ディスプレイ12)に表示されるゲーム画像の限定しない第1の例を示す図である。
本体装置2は、画像処理装置としても機能し、ゲーム画像などの各種画面に対応する表示画像データを生成および出力(表示)する。プロセッサ81は、3次元の仮想空間に各種のオブジェクトおよびキャラクタを配置し、或る情景または場面(シーン)が生成される。このシーンを仮想のカメラで撮影した(視点から見た)画像がゲーム画像としてディスプレイ12に表示される。
図8に示すゲーム画像は、一例として、後述するボスの敵キャラクタ(以下、「ボスキャラクタ」という)204とは異なる通常の敵キャラクタ(以下、「通常キャラクタ」という)204と遭遇した場合に表示される戦闘画面200である。以下、ボスキャラクタ204との戦闘時に表示される戦闘画面250と区別するために、通常キャラクタ204との戦闘画面200を「通常の戦闘画面200」という。また、この明細書では、通常キャラクタ204およびボスキャラクタ204を区別する必要が無い場合には、単に「敵キャラクタ204」ということにする。
図8に示すように、通常の戦闘画面200は、プレイヤキャラクタ202、複数の通常キャラクタ204および盤面オブジェクト210を含む。図8に示す例では、11体の通常キャラクタ204が表示される。ただし、通常キャラクタ204の数は、ゲームの難易度などに応じて適宜変更される。
ここで、プレイヤキャラクタ202は、プレイヤの操作に基づいて任意の動作の実行を制御されるキャラクタオブジェクトである。プレイヤキャラクタ202の動作としては、仮想の或る場所すなわち仮想空間内において、移動したり、アイテムを取得したり、敵キャラクタ204を攻撃したり、敵キャラクタ204の攻撃を防御したりすることなどが該当する。
また、敵キャラクタ204は、プレイヤによる操作ではなくコンピュータ(図6のプロセッサ81)によって動作を制御されるノンプレイヤのキャラクタオブジェクトである。敵キャラクタ204の動作としては、移動したり、プレイヤキャラクタ202を攻撃したり、プレイヤキャラクタ202からの攻撃を防御したりすることが該当する。この実施例では、ノンプレイヤのキャラクタオブジェクトとして、敵キャラクタ204のみを示しているが、実際には、敵以外のキャラクタオブジェクトも表示される。
盤面オブジェクト210は、背景オブジェクトの一部である。背景オブジェクトは、主として、仮想空間に配置される地形のオブジェクトを意味する。また、一般的には、地形とは、地面(道路、広場などを含む)、床、木、草、花、建物、階段、洞窟、崖、壁などを意味する。ただし、この実施例では、盤面オブジェクト210のみを示してある。
図9(A)は盤面オブジェクト210の構成の限定しない一例を説明するための図であり、図9(B)は盤面オブジェクト210を構成する第2部分の限定しない一例を説明するための図である。
図9(A)に示すように、盤面オブジェクト210は、円形の盤面を有し、中央の円形状の第1部分(以下、「中央オブジェクト」ということがある)212と、第1部分212を除くドーナツ形状の第2部分214とで構成される。第2部分214は、複数の部分オブジェクト214aを含む。具体的には、図9(B)にその形状を示すように、第2部分214は、複数(この実施例では、5つ)の同心円と、これらの複数の同心円で共有される中心Oから放射状に延びる複数本(この実施例では、12本)の線(または、線分)で区切られた複数の部分(この実施例では、「部分オブジェクト214a」という)に分割される。ただし、複数の部分オブジェクト214aの各々は、区切られた複数の部分を含まない、最小単位の大きさである。ただし、図9(A)で示すように中央オブジェクトがあるので、この実施例では中心Oに接する部分には部分オブジェクト214aは無いものとする。
この実施例では、プレイヤキャラクタ202と敵キャラクタ204が戦闘するシーン(以下、「戦闘シーン」という)では、プレイヤキャラクタ202と敵キャラクタ204の間で、攻撃ターンが交互に繰り返される。
また、この実施例では、プレイヤキャラクタ202は、2種類の攻撃を行うことができる。ただし、プレイヤキャラクタ202は、3種類以上の攻撃を行うことができてもよい。
一つ目は、盤面オブジェクト210上において、プレイヤキャラクタ202がジャンプし、敵キャラクタ204を踏みつける攻撃(以下、単に「ジャンプ攻撃」という)である。通常の戦闘画面200においては、プレイヤキャラクタ202は、プレイヤキャラクタ202から見た前方の第1の所定範囲(この実施例では、最内周から最外周まで直線的(一列)に並ぶ4つの部分オブジェクト214a上)に位置する複数の通常キャラクタ204を、盤面オブジェクト210の中心から外周に向かってジャンプしながら移動して順次踏みつける。したがって、この実施例では、ジャンプ攻撃により、半径方向に並ぶ4体の通常キャラクタ204を一度に倒すことができる。
二つ目は、盤面オブジェクト210上において、プレイヤキャラクタ202がハンマーで敵キャラクタ204を叩く攻撃(以下、単に「ハンマー攻撃」という)である。通常の戦闘画面200においては、プレイヤキャラクタ202は、プレイヤキャラクタ202から見て手前の第2の所定範囲(この実施例では、2×2の部分オブジェクト214a上)に位置する複数の通常キャラクタ204を叩く。したがって、この実施例では、ハンマー攻撃により、2列に並ぶ4体の通常キャラクタ204を一度に倒すことができる。
この実施例では、プレイヤの操作に従って、リング状に並ぶ複数の部分オブジェクト214aを周方向に移動(または、スライド)させることができ、また、直線状(または、一列)に並ぶ複数の部分オブジェクト214aを径方向に移動(または、スライド)させることができる。複数の部分オブジェクト214aが周方向および径方向に移動されるとき、少なくとも1つの部分オブジェクト214a上に配置または載置されたゲームオブジェクト(以下、「載置オブジェクト」という)も部分オブジェクト214aと一緒に移動される。通常の戦闘画面200では、通常キャラクタ204が載置オブジェクトである。
したがって、プレイヤは、複数の部分オブジェクト214aを周方向または/および径方向に移動させることにより、通常キャラクタ204の配置を変えて、ジャンプ攻撃またはハンマー攻撃を実行し、通常キャラクタ204を倒す。たとえば、プレイヤキャラクタ202が、戦闘シーンに存在するすべての通常キャラクタ204を倒す(または、消滅させる)と、プレイヤキャラクタ202またはプレイヤは戦闘に勝利する、または、ゲームクリアとなる。
ただし、この実施例では、戦闘シーンにおいて、プレイヤキャラクタ202が敵キャラクタ204に勝利するためには、プレイヤキャラクタ202の体力値が0になる前に、敵キャラクタ204(ここでは、すべての通常キャラクタ204)を倒す必要があるため、一度の攻撃で出来る限り多くの通常キャラクタ204を攻撃する必要がある。また、複数の部分オブジェクト214aを移動可能な回数(つまり、移動回数の上限)も決定されている。このため、通常キャラクタ204のような載置オブジェクトを移動可能な回数も決定されている。したがって、ジャンプ攻撃またはハンマー攻撃を実行するために、複数の部分オブジェクト214aを移動させる回数を、出来る限り少なくする必要がある。
ここで、複数の部分オブジェクト214aを周方向に移動させる方法について説明する。図9(B)に示したように、5つの同心円によって、大きさの異なる4つのリングが隣接して形成される。また、各リングは、周方向に並んで配置された複数(この実施例では、12個)の部分オブジェクト214aを含む。複数の部分オブジェクト214aを周方向に移動させる場合(以下、「周方向モード」という)には、まず、どのリングに含まれる複数の部分オブジェクト214aを操作対象とするかが選択およびされる。
図10(A)−図10(D)は、リングを選択する方法の限定しない一例を説明するための図である。図10(A)−図10(D)に示す例では、仮想空間において、盤面オブジェクト210を真上から見た状態を示し、また、簡単のため、盤面オブジェクト210のみを示し、盤面オブジェクト210上のプレイヤキャラクタ202および通常キャラクタ204については省略する。これらのことは、後述する図11(A)−図11(C)、図14(A)−図14(F)および図15(A)−図15(C)についても同様である。
通常の戦闘画面200が表示された当初では、図10(A)に示すように、最内周のリングがリング状の指示画像220によって指示された状態であり、この状態において、プレイヤがアナログスティック32をいずれかの方向に傾倒させると、図10(B)に示すように、指示画像220が最内周のリングの1つ外周側のリングを指示する状態に変化される。
図10(B)に示す状態において、プレイヤがアナログスティック32をいずれかの方向に傾倒させると、図10(C)に示すように、指示画像220が最内周のリングの2つ外周側のリングを指示する状態に変化される。さらに、図10(C)に示す状態において、プレイヤがアナログスティック32をいずれかの方向に傾倒させると、図10(D)に示すように、指示画像220が最外周のリングを指示する状態に変化される。
図10(D)に示す状態において、プレイヤがアナログスティック32をいずれかの方向に傾倒させると、図10(A)に示したように、指示画像220が最内周のリングを指示する状態に変化される。
このように、指示画像220が、プレイヤの操作に従って、最内周のリングから最外周のリングに向かって移動され、指示されるリングが変化され、最外周のリングの次には再び最内周のリングが指示される。このようにして、操作対象のリングが選択される。ただし、指示画像220は、指示するリングと同じ大きさに変化される。
なお、この実施例では、指示画像220は、最内周のリングから最外周のリングに向かって移動されるようにしたが、最外周のリングから最内周のリングに向かって移動されるようにしてもよい。かかる場合には、最内周のリングの次には再び最外周のリングが指示される。
また、他の実施例では、指示画像220が表示されることに代えて、指示されているリングを構成する複数の部分オブジェクト214aの色または/および明るさを、他のリングを構成する複数の部分オブジェクト214aと異ならせるようにしてもよい。
プレイヤは、移動させたい通常キャラクタ204が載置された部分オブジェクト214aを含むリングが指示画像220で指示されている場合に、Aボタン53を押下することにより、このリングに含まれる複数の部分オブジェクト214aを操作対象として決定することができる。このとき、指示画像220は、Aボタン53が押下されたときに指示しているリングの位置で固定表示される。
操作対象が決定されると、決定された操作対象のリングに含まれる複数の部分オブジェクト214aがプレイヤの操作に従って周方向に移動(または、スライド)される。プレイヤが、アナログスティック32を傾倒した状態で、右方向に回転させると、操作対象のリングに含まれる複数の部分オブジェクト214aが右方向(すなわち、時計回り)に回転移動される。一方、プレイヤが、アナログスティック32を傾倒した状態で、左方向に回転させると、操作対象のリングに含まれる複数の部分オブジェクト214aが左方向(すなわち、反時計回り)に回転移動される。
図11(A)は、操作対象のリングが決定され、このリングに含まれる複数の部分オブジェクト214aを移動する前の状態の一例を示す。図11(B)は図11(A)に示す状態から操作対象のリングを周方向に回転移動させた場合の一例を示す。図11(C)は図11(A)に示す状態から操作対象のリングを周方向に回転移動させた場合の他の例を示す。
図11(A)−図11(C)では、簡単のため、盤面オブジェクト210のみを示し
盤面オブジェクト210上のプレイヤキャラクタ202および通常キャラクタ204については省略する。また、図11(A)−図11(C)では、説明の便宜上、操作対象のリングに含まれる各部分オブジェクト214aに括弧書きのアラビア数字を付すことにより、各部分オブジェクト214aを識別可能にしてある。
図11(A)は、操作対象のリングが決定され、複数の部分オブジェクト214aを移動する前の状態の一例を示す図である。図11(A)に示す例では、操作対象のリングでは、(1)−(12)で示される複数の部分オブジェクト214aが時計回りに並んでいる。
図11(B)は図11(A)に示す状態から操作対象のリングを構成する複数の部分オブジェクト214aを、1マス分時計回りに回転移動(スライド)させた状態を示す。つまり、(1)−(12)で示される複数の部分オブジェクト214aは、図11(A)に示した位置から、中心O(図9(B)参照)を中心に、時計回りに30度ずつ回動され、図11(B)に示す位置に移動される。図示は省略するが、プレイヤが、アナログスティック32を傾倒した状態で、右方向に回転させる操作を継続すると、操作対象のリングを構成する複数の部分オブジェクト214aは、さらに、1マス分ずつ時計回りに移動される。
また、図11(C)は図11(A)に示す状態から操作対象のリングを構成する複数の部分オブジェクト214aを、1マス分反時計回りにスライドさせた状態を示す。つまり、(1)−(12)で示される複数の部分オブジェクト214aは、図11(A)に示した位置から、中心O(図9(B)参照)を中心に、反時計回りに30度ずつ回動され、図11(C)に示す位置に移動される。
図示は省略するが、プレイヤが、アナログスティック32を傾倒した状態で、左方向に回転させる操作を継続すると、操作対象のリングを構成する複数の部分オブジェクト214aは、さらに、1マス分ずつ反時計回りに移動される。
このように、操作対象のリングを構成する複数の部分オブジェクト214aを、時計回りまたは反時計回りの周方向にスライドさせることにより、上述したように、載置オブジェクトも部分オブジェクト214aとともに周方向にスライドされる。
なお、Bボタン54が押下されると、回転移動(すなわち、周方向への移動)を元に戻すことができ、さらには、操作対象のリングを解除することもできる。操作対象のリングが解除された場合には、指示画像220を移動させることにより、操作対象のリングを選択および決定する動作が再度行われる。
図12(A)は通常の戦闘画面200の限定しない他の例を示す図であり、図12(B)は通常の戦闘画面200の限定しないその他の例を示す図である。図12(A)では、操作対象のリングが最外周のリングに決定されている。この状態で、操作対象である最外周のリングを構成する複数の部分オブジェクト214aが、時計回りに4マス分移動されると、または、反時計回りに6マス分移動されると、操作対象のリングを構成する複数の部分オブジェクト214a上に配置される複数の通常キャラクタ204の位置も移動される(図12(B)参照)。
図12(B)に示す通常の戦闘画面200は、ジャンプ攻撃が選択され、ジャンプ攻撃の範囲が選択された状態を示す。図12(B)に示す通常の戦闘画面200では、ジャンプ攻撃の範囲を示す指示画像230が示される。ジャンプ攻撃は、プレイヤキャラクタ202が盤面オブジェクト210の中央から外周方向に向けてジャンプしながら移動して、その移動方向に存在する1体または複数体の敵キャラクタ204を踏みつける攻撃である。したがって、ジャンプ攻撃の範囲は、上述したように、半径方向に並ぶ4マス分の部分オブジェクト214aの第1の所定範囲である。このため、指示画像230は、盤面オブジェクト210のうちの半径方向に並ぶ4マス分の部分オブジェクト214aの全体を囲む大きさおよび形状の枠線で示される。指示画像230すなわち攻撃の範囲は、プレイヤがアナログスティック32を傾倒した状態で左方向または右方向に回転させることにより、左方向または右方向に移動される。つまり、ジャンプ攻撃の範囲が選択される。
プレイヤが、ジャンプ攻撃の範囲を選択し、ジャンプ攻撃の範囲を決定すると、つまり、ジャンプ攻撃が指示されると、プレイヤキャラクタ202は決定された範囲に存在する1体または複数体の通常キャラクタ204をジャンプ攻撃する。プレイヤキャラクタ202によってジャンプ攻撃された1体または複数体の通常キャラクタ204は、その体力値が攻撃に応じた数値だけ減少し、体力値が0になった通常キャラクタ204はプレイヤキャラクタ202に倒され、仮想空間から消滅される。
プレイヤキャラクタ202の攻撃ターンが終了すると、通常キャラクタ204の攻撃ターンが開始する。プレイヤキャラクタ202は、その体力値が0になるまでに、すべての通常キャラクタ204を倒すと、通常キャラクタ204との戦闘に勝利する、または、ゲームクリアとなる。ただし、プレイヤキャラクタ202がすべての通常キャラクタ204を倒す前に、通常キャラクタ204の攻撃によってプレイヤキャラクタ202の体力値が0以下になると、敵キャラクタ204との戦闘に負ける、または、ゲームオーバになる。これらのことは、後述する通常の戦闘画面200において、ハンマー攻撃が実行される場合についても同様である。
図13(A)は通常の戦闘画面200の限定しない他の例を示す図であり、図13(B)は通常の戦闘画面200の限定しないその他の例を示す図である。
図13(A)に示す通常の戦闘画面200は、図8に示した通常の戦闘画面200とは異なる数の通常キャラクタ204が異なる並びで、盤面オブジェクト210上に配置される。図13(A)に示す通常の戦闘画面200において、Lボタン38またはRボタン60が操作されると、複数の部分オブジェクト214aの移動方法が変化される。図13(B)に示す通常の戦闘画面200では、直径上に並ぶ複数の部分オブジェクト214aを移動するモード(以下、「径方向モード」という)が選択される。ただし、径方向モードにおいて、Lボタン38またはRボタン60が操作されると、周方向モードに移行される。
ここで、複数の部分オブジェクト214aを径方向に移動させる方法について説明する。図9(B)に示したように、盤面オブジェクト210を、中心Oから放射状に延びる12本の線分で分割したことにより、延びる方向(角度)の異なる6本の列が形成される。また、各列は、径方向に並んで配置された複数(この実施例では、8個)の部分オブジェクト214aを含む。つまり、各列は、共通の線分で囲まれる4つの部分オブジェクト214aと、中心Oを基準に、この4つの部分オブジェクト214aと点対称となる4つの部分オブジェクト214aを含む。複数の部分オブジェクト214aを径方向に移動させる場合には、まず、どの径(または、列)に含まれる複数の部分オブジェクト214aを操作対象とするかが選択および決定される。
この実施例では、12の異なる半径方向を識別可能に説明するために、地図上における方位を用いて方向を説明することにする。つまり、図14(A)−図14(F)では(図15(A)−図15(C)も同様)、図面の上方が北(N)であり、図面の下方が南(S)であり、図面の左方が西(W)であり、そして、図面の右方が東(E)である。
図14(A)−図14(F)は、列を選択する方法を説明するための図である。周方向モードから径方向モードに移行した当初では、図14(A)に示すように、北北東及び南南西に向かって伸びる列が直線状の指示画像222によって指示された状態である。図14(A)に示す北北東および南南西に向かって直線的に延びる列を、説明の便宜上、「基準の列」と呼ぶことにする。この状態において、プレイヤがアナログスティック32を傾倒させた状態で左方向(反時計周り)に回転させると、図14(B)に示すように、北北西および南南東に向かって直線的に伸びる列が指示される。このとき、指示画像222が基準の列から左方向に30°回動された位置に移動される。
図14(B)に示す状態において、プレイヤがアナログスティック32を傾倒した状態で左方向に回転させると、図14(C)に示すように、北西および南東に向かって直線的に伸びる列が指示される。このとき、指示画像222が基準の列から左方向に90°回転された位置に移動される。
図14(C)に示す状態において、プレイヤがアナログスティック32を傾倒した状態で左方向に回転させると、図14(D)に示すように、西北西おおよび東南東に向かって直線的に伸びる列が指示される。このとき、指示画像222が基準の列から左方向に120°回転された位置に移動される。
図14(D)に示す状態において、プレイヤがアナログスティック32を傾倒した状態で左方向に回転させると、図14(E)に示すように、西南西おおよび東北東に向かって直線的に伸びる列が指示される。このとき、指示画像222が基準の列から左方向に150°回転された位置に移動される。
図14(E)に示す状態において、プレイヤがアナログスティック32を傾倒した状態で左方向に回転させると、図14(F)に示すように、北西おおよび南東に向かって直線的に伸びる列が指示される。このとき、指示画像222が基準の列から左方向に180°回転された位置に移動される。
そして、図14(F)に示す状態において、プレイヤがアナログスティック32を傾倒した状態で左方向に回転させると、図14(A)に示すように、北北東おおよび南南西に向かって直線的に伸びる列が指示される。このとき、指示画像222が基準の列の位置に戻る。
なお、この実施例では、アナログスティック32を左方向に回転させる場合について説明したが、右方向に回転させてもよい。かかる場合には、図14(A)→図14(F)→図14(E)→図14(D)→図14(C)→図14(B)→図14(A)に示す順に、指示される列(つまり、プレイヤによって選択される列)が変化され、それに従って、指示画像222の位置も移動される。
また、他の実施例では、指示画像222が表示されることに代えて、指示されている列を構成する複数の部分オブジェクト214aの色または/および明るさを、他の列を構成する複数の部分オブジェクト214aと異ならせるようにしてもよい。
プレイヤは、移動させたい通常キャラクタ204が載置された部分オブジェクト214aを含む列が指示画像222で指示されている場合に、Aボタン53を押下することにより、この列に含まれる複数の部分オブジェクト214aを操作対象として決定することができる。このとき、指示画像222は、Aボタン53が押下されたときに指示している列の位置で固定表示される。
操作対象が決定されると、決定された操作対象の列に含まれる複数の部分オブジェクト214aがプレイヤの操作に従って径方向に移動(または、スライド)される。プレイヤが、アナログスティック32を傾倒すると、傾倒した方向に、操作対象の列に含まれる複数の部分オブジェクト214aが移動される。
図15(A)は、操作対象の列が決定され、この列に含まれる複数の部分オブジェクト214aを移動する前の状態の一例を示す。図15(B)は図15(A)に示す状態から操作対象の列に含まれる複数の部分オブジェクト214aを径方向に移動させた場合の一例を示す。図15(C)は図15(A)に示す状態から操作対象の列に含まれる複数の部分オブジェクト214aを径方向に移動させた場合の他の例を示す。
ただし、図15(A)−図15(C)では、説明の便宜上、操作対象のリングに含まれる各部分オブジェクト214aに括弧で囲んだローマ数字を付すことにより、各部分オブジェクト214aを識別可能にしてある。
図15(A)は、操作対象の列が決定され、複数の部分オブジェクト214aを移動する前の状態の一例を示す図である。図15(A)に示す例では、操作対象の列では、(i)−(viii)で示される複数の部分オブジェクト214aが北北東から南南西に向かって直線状に並んでいる。
図15(B)は図15(A)に示す状態から操作対象の列を構成する複数の部分オブジェクト214aを、1マス分南南西の向きに移動(スライド)させた状態を示す。つまり、(i)−(iii)で示される複数の部分オブジェクト214aは、南南西の向きの内周側へ1マスずつ移動され、(v)−(vii)で示される複数の部分オブジェクト214aは、南南西の向きの外周側へ1マスずつ移動される。また、(iv)で示される部分オブジェクト214aは、南南西の向きに移動されることにより、中央オブジェクト212を挟んで、反対側の最内周のマスに移動される。さらに、(viii)で示される部分オブジェクト214aは、南南西の向きに移動されることにより、中央オブジェクト212を挟んで、反対側の最外周のマスに移動される。
なお、この実施例では、部分オブジェクト214aを径方向に移動させる場合には、移動後のマスの大きさおよび形状に応じて、部分オブジェクト214aの大きさおよび形状は適宜変化される。
また、図15(C)は図15(A)に示す状態から操作対象の列を構成する複数の部分オブジェクト214aを、1マス分北北東の向きにスライドさせた状態を示す。つまり、(ii)−(iv)で示される複数の部分オブジェクト214aは、北北東の向きの外周側へ1マスずつ移動され、(vi)−(viii)で示される複数の部分オブジェクト214aは、北北東の向きの内周側へ1マスずつ移動される。また、(i)で示される部分オブジェクト214aは、北北東の向きに移動されることにより、中央オブジェクト212を挟んで、反対側の最外周のマスに移動される。さらに、(v)で示される部分オブジェクト214aは、北北東の向きに移動されることにより、中央オブジェクト212を挟んで、反対側の最内周のマスに移動される。
図示は省略するが、プレイヤが、アナログスティック32を下または上に傾倒すると、操作対象の列を構成する複数の部分オブジェクト214aは、さらに、1マス分ずつ南南西または北北東に移動される。ここで、移動方向が2方向であるので、アナログスティック32の入力方向は単純な上下または左右の入力で十分であるが、実際の方向に合わせて斜めに傾倒させるようにしてもよい。
このように、操作対象の列を構成する複数の部分オブジェクト214aを、径方向にスライドさせることにより、上述したように、載置オブジェクトも部分オブジェクト214aとともに径方向にスライドされる。
なお、Bボタン54が押下されると、径方向への移動を元に戻すことができ、さらには、操作対象の列を解除することもできる。操作対象の列が解除された場合には、指示画像220を移動させることにより、操作対象の列を選択および決定する動作が再度行われる。
図16(A)は通常の戦闘画面200の限定しない他の例を示す図であり、図16(B)は通常の戦闘画面200の限定しないその他の例を示す図である。図16(A)では、操作対象の列が東北東および西南西に延びる列に決定されている。この状態で、操作対象である列を構成する複数の部分オブジェクト214aが、西南西に2マス分移動されると、または、東北東に6マス分移動されると、操作対象の列を構成する複数の部分オブジェクト214a上に配置される複数の通常キャラクタ204の位置も移動される(図16(B)参照)。
図16(B)に示す通常の戦闘画面200では、ハンマー攻撃が選択され、ハンマー攻撃の範囲が選択された状態が示される。図16(B)に示す通常の戦闘画面200では、ハンマー攻撃の範囲を示す指示画像230が示される。ハンマー攻撃の範囲は、上述したように、プレイヤキャラクタ202が位置する中央オブジェクト212に近い最内周の2マスと、その1つ外周側に隣接する2マスで決定される第2の所定範囲である。このため、指示画像240は、盤面オブジェクト210のうちの最内周の周方向に隣接する2マスとそれらに隣接する1つ外周側の2マスを含む4マス分の部分オブジェクト214aを囲む大きさおよび形状の枠線で示される。指示画像240は、プレイヤがアナログスティック32を傾倒した状態で左方向または右方向に回転させることにより、左方向または右方向に移動される。つまり、ハンマー攻撃の範囲が選択される。
プレイヤが、ハンマー攻撃の範囲を選択し、ハンマー攻撃の範囲を決定すると、つまり、ハンマー攻撃が指示されると、プレイヤキャラクタ202は決定された範囲に存在する1体または複数体の通常キャラクタ204をハンマー攻撃する。プレイヤキャラクタ202によってハンマー攻撃された1体または複数体の通常キャラクタ204は、その体力値が攻撃に応じた数値だけ減少し、体力値が0になった通常キャラクタ204はプレイヤキャラクタ202に倒され、仮想空間から消滅される。
図17(A)はボスキャラクタ204との戦闘画面250の一例を示す図であり、図17(B)はボスキャラクタ204との戦闘画面250を上方から見た場合の一例を示す図である。以下、ボスキャラクタ204との戦闘画面250を「ボス戦闘画面250」と呼ぶことにする。
図17(A)および図17(B)に示すように、ボス戦闘画面250では、盤面オブジェクト210の中央オブジェクト212には、ボスキャラクタ204が配置され、プレイヤキャラクタ202は、盤面オブジェクト210の外に配置される。ボスキャラクタ204との戦闘では、プレイヤキャラクタ202が複数の部分オブジェクト214a上を方向指示オブジェクト252に従って(または、沿って)移動し、攻撃指示オブジェクト254が載置された部分オブジェクト214aの位置からボスキャラクタ204を攻撃する。
方向指示オブジェクト252は、プレイヤキャラクタ202の移動方向を決定するためのオブジェクトである。したがって、プレイヤキャラクタ202が現在進行中の移動方向と、方向指示オブジェクト252によって指示される方向が異なる場合には、プレイヤキャラクタ202が方向指示オブジェクト252の配置された部分オブジェクト214aに到達したときに、プレイヤキャラクタ202の移動方向が方向指示オブジェクト252によって示される方向に転換される。また、プレイヤキャラクタ202が盤面オブジェクト210の外周部分(最外周のリング上)の方向指示オブジェクト252に乗ることでプレイヤキャラクタ202の移動が開始される。この実施例では、方向指示オブジェクト252には矢印の図柄が表示される。
攻撃指示オブジェクト254は、プレイヤキャラクタ202がボスキャラクタ204に対して攻撃を行うためのオブジェクトである。この実施例では、プレイヤキャラクタ202は、攻撃指示オブジェクト254が載置された部分オブジェクト214aに到達すると、予め選択または到達時に選択された攻撃、たとえばジャンプ攻撃またはハンマー攻撃を実行する。攻撃以外にアイテムの使用が選択できるようにしてもよい。この実施例では、攻撃指示オブジェクト254にはパンチの図柄が表示される。
上述したように、ジャンプ攻撃は、プレイヤキャラクタ202が中央オブジェクト212の方向にジャンプしながら移動するため、プレイヤキャラクタ202が最内周のリングに到達していなくても、ボスキャラクタ204を攻撃することができる。ただし、ボスキャラクタ204からの距離が離れている場合には、一度の攻撃で減らせるボスキャラクタ204の体力値が少なくされる。
また、ハンマー攻撃は、プレイヤキャラクタ202に近い2×2の範囲すなわち第2の所定範囲しか攻撃できないため、プレイヤキャラクタ202が最内周のリングまたはその1つ外周側のリングに到達していない場合には、ボスキャラクタ204を攻撃することができない。
また、ボス戦闘画面250には、効果オブジェクト256が部分オブジェクト214a上に載置される。この実施例では、効果オブジェクト256は、一度の攻撃ターンでプレイヤキャラクタ202がボスキャラクタ204を攻撃できる回数が2倍(2回)に増えるオブジェクトおよびプレイヤキャラクタ202の体力値が所定値(または全部)回復するオブジェクトである。前者の効果オブジェクト256は、図柄として「×2」の文字を表示し、後者の効果オブジェクト256は、ハートの図柄を表示してある。
ただし、効果オブジェクト256は、これらに限定される必要は無い。他の実施例では、ボスキャラクタ204に与えるダメージを大きくするオブジェクト、効果オブジェクト256を盤面オブジェクト210上に追加的に載置するオブジェクト、敵キャラクタ204の攻撃ターンを飛ばすオブジェクトなどが実施例の効果オブジェクト256に代えて、または、実施例の効果オブジェクト256に加えて配置されてもよい。
通常の戦闘画面200とは異なり、ボス戦闘画面250では、載置オブジェクトは、方向指示オブジェクト252、攻撃指示オブジェクト254および効果オブジェクト256である。
ボスキャラクタ204との戦闘では、プレイヤキャラクタ202が複数の部分オブジェクト214a上を移動して、ボスキャラクタ204を攻撃する。また、プレイヤキャラクタ202がボスキャラクタ204を攻撃することにより、ボスキャラクタ204の体力値を0以下にすると、ボスキャラクタ204を倒すことができる。ただし、ボスキャラクタ204は、プレイヤキャラクタ202を攻撃するため、プレイヤキャラクタ202の体力値が0以下にされると、プレイヤキャラクタ202は倒される。
ボスキャラクタ204との戦闘においても、各攻撃ターンにおいて、複数の部分オブジェクト214aを移動可能な回数が予め決定されているため、プレイヤは、効果的にボスキャラクタ204を攻撃するように、載置オブジェクトの配置を変更する必要がある。
ただし、プレイヤは、ボス戦闘画面250においても、通常の戦闘画面200と同様に、周方向モードまたは径方向モードを選択して、操作対象として決定したリングまたは列に含まれる複数の部分オブジェクト241aを周方向または径方向に移動させ、この移動に伴って1つまたは複数の載置オブジェクトを移動させる。
図18はプレイヤキャラクタ202が移動される経路を記載したボス戦闘画面250の限定しない一例を示す図である。図18では、プレイヤキャラクタ202が移動される経路が一点鎖線で示され、移動の方向が矢印で示される。
なお、図18に示すボス戦闘画面250は、図17(A)および図17(B)に示したボス戦闘画面250において、西北西および東南東に延びる列を構成する複数の部分オブジェクト214aを、西北西の方向に1マスまたは東南東の方向に7マス移動させてある。また、北北西および南南東に延びる列を構成する複数の部分オブジェクト214aを、北北西の方向に1マスまたは南南東の方向に7マス移動させてある。
盤面の操作が終了すると、プレイヤキャラクタ202が盤面オブジェクト210上に載置(または移動)され、つまり、プレイヤキャラクタ202は移動を開始され、その後、方向指示オブジェクト252に従って移動される。また、この実施例では、複数の部分オブジェクト214aを移動可能な回数に達した場合には、プレイヤがアナログスティック32を傾倒させなくても、プレイヤキャラクタ202は移動を開始される。
図18に示す例では、プレイヤキャラクタ202は、盤面オブジェクト210の最外周のリング上に移動されると、方向指示オブジェクト252に従って、最外周のリング上を時計回りに移動する。
次に、プレイヤキャラクタ202は、最外周のリングにおいて、北北西の方向に配置された方向指示オブジェクト252に従って、最内周のリング上に移動される。プレイヤキャラクタ202は、最内周に移動するとき、最内周のリングの2つ外側のリングに載置された効果オブジェクト256上を通過する。この効果オブジェクト256の効果が発動されることによって、プレイヤキャラクタ202の体力値の一部または全部が回復される。
プレイヤキャラクタ202は、最内周のリングに到達すると、方向指示オブジェクト252に従って、最内周のリング上を時計周りに移動される。プレイヤキャラクタ202は、最内周のリングにおいて、南南東の方向に配置された攻撃指示オブジェクト254が載置された部分オブジェクト214aに到達すると、ボスキャラクタ204を攻撃する。
ただし、攻撃の種類は、予めまたは到達時に選択された攻撃、たとえばジャンプ攻撃やハンマー攻撃、またはアイテム使用等の他の行動である。また、プレイヤキャラクタ202は、最内周のリング上を移動するときに、効果オブジェクト256上を通過する。この効果オブジェクト256の効果が発動されることによって、プレイヤキャラクタ202の攻撃回数が2回に増加される。したがって、プレイヤキャラクタ202は、この攻撃ターンにおいて、ジャンプ攻撃またはハンマー攻撃を2回実行する。このように、プレイヤキャラクタ202は、効果オブジェクト256上を通過すると、ボスキャラクタ204に攻撃を行う際に加えられる所定の効果を得る。
図19は図6に示したDRAM85のメモリマップ850の限定しない一例を示す図である。図19に示すように、DRAM85は、プログラム記憶領域852およびデータ記憶領域854を含む。プログラム記憶領域852には、ゲームアプリケーションのプログラム(つまり、ゲームプログラム)が記憶される。図19に示すように、ゲームプログラムは、メイン処理プログラム852a、画像生成プログラム852b、操作検出プログラム852c、部分オブジェクト移動プログラム852d、キャラクタ制御プログラム852e、パラメータ制御プログラム852fおよび画像表示プログラム852gなどを含む。ただし、ゲーム画像などの画像を表示する機能は本体装置2が備える機能である。したがって、画像表示プログラム852gは、ゲームプログラムに含まれない。
詳細な説明は省略するが、各プログラム852a−852gは、本体装置2に電源が投入された後の適宜のタイミングで、フラッシュメモリ84および/またはスロット23に装着された記憶媒体からその一部または全部が読み込まれてDRAM85に記憶される。ただし、各プログラム852a−852gの一部または全部は、本体装置2と通信可能な他のコンピュータから取得するようにしてもよい。
メイン処理プログラム852aは、この実施例の仮想のゲームの全体的なゲーム処理を実行するためのプログラムである。画像生成プログラム852bは、後述する画像生成データ854bを用いて、ゲーム画像などの各種の画像に対応する表示画像データを生成するためのプログラムである。
操作検出プログラム852cは、左コントローラ3または/および右コントローラ4からの操作データ854aを取得するためのプログラムである。部分オブジェクト移動プログラム852dは、プレイヤの操作に基づいて、周方向モードおよび径方向モードの切り替え、複数の部分オブジェクト214aの周方向への移動および径方向への移動を制御するためのプログラムである。また、部分オブジェクト移動プログラム852dは、部分オブジェクト214aに載置されている載置オブジェクトを部分オブジェクト214aの移動に伴って移動するためのプログラムである。
キャラクタ制御プログラム852eは、プレイヤの操作に基づいて、プレイヤキャラクタ202の動作を制御したり、プレイヤの操作に関わらず、敵キャラクタ204を含むノンプレイヤキャラクタの動作を制御したりするためのプログラムである。パラメータ制御プログラム852fは、パラメータの数値を最大値(この実施例では、100)と最小値(この実施例では、0)の間で増加または減少(すなわち、制御)するためのプログラムである。
画像表示プログラム852gは、画像生成プログラム852bに従って生成した表示画像データを表示装置に出力するためのプログラムである。したがって、表示画像データに対応する画像(つまり、戦闘画面200、250など)がディスプレイ12などの表示装置に表示される。
なお、プログラム記憶領域852には、BGM等の音を出力するための音出力プログラム、他の機器と通信するための通信プログラム、データをフラッシュメモリ84などの不揮発性の記憶媒体に記憶するためのバックアッププログラムなども記憶される。
また、データ記憶領域854には、操作データ854a、画像生成データ854b、移動モードデータ854c、現在位置データ854d、指示データ854e、操作対象データ854f、移動回数データ854gおよび体力値データ854hが記憶される。また、データ記憶領域854には、PC攻撃フラグ854iが設けられる。
操作データ854aは、左コントローラ3または/および右コントローラ4から受信される操作データである。この実施例においては、本体装置2が左コントローラ3および右コントローラ4の両方から操作データを受信する場合には、本体装置2は、左コントローラ3および右コントローラ4のそれぞれに分類して操作データ854aを記憶する。
画像生成データ854bは、ポリゴンデータおよびテクスチャデータなど、表示画像データを生成するために必要なデータである。移動モードデータ854cは、敵キャラクタ204との戦闘シーンにおいて、周方向モードまたは径方向モードを判断するためのデータであり、具体的には、現在のモードについての識別情報のデータである。
現在位置データ854dは、プレイヤキャラクタ202、敵キャラクタ204、部分オブジェクト214a、方向指示オブジェクト252、攻撃指示オブジェクト254および効果オブジェクトのような仮想空間内において移動可能なキャラクタおよびオブジェクトについての現在フレームの位置座標についてのデータである。
指示データ854eは、操作対象の複数の部分オブジェクト214aを決定する前に、指示(または、選択)されている複数の部分オブジェクト214aを識別するためのデータである。操作対象データ854fは、操作対象として決定された複数の部分オブジェクト214aを識別するためのデータである。
移動回数データ854gは、プレイヤキャラクタ202の攻撃ターンにおいて、複数の部分オブジェクト214aを移動可能な回数の数値データである。
体力値データ854hは、プレイヤキャラクタ202の体力値(つまり、パラメータ)を示す数値のデータであり、上述したように、パラメータ制御プログラム852fに従って増減される。つまり、体力値データ854hが示す体力値は、現フレームにおける体力値の残量を示す。ただし、体力値は、仮想のゲームを開始した時点では、最大値(この実施例では、100)に設定される。
PC攻撃フラグ854iは、敵キャラクタ204との戦闘中において、プレイヤキャラクタ202の攻撃ターンであるか、敵キャラクタ204の攻撃ターンであるかを判断するためのフラグである。プレイヤキャラクタ202の攻撃ターンでは、PC攻撃フラグ854iはオンされ、敵キャラクタ204の攻撃ターンでは、PC攻撃フラグ854iはオフされる。
図示は省略するが、データ記憶領域854には、他のデータが記憶されたり、他のフラグおよびタイマ(またはカウンタ)が設けられたりする。
図20は、本体装置2のプロセッサ81(またはコンピュータ)のゲームプログラムの処理(すなわち、「全体的なゲーム処理」)の限定しない一例を示すフロー図である。図21−図28は、本体装置2のプロセッサ81(またはコンピュータ)のゲーム制御処理の限定しない一例を示すフロー図である。さらに、図29−図33は、本体装置2のプロセッサ81(またはコンピュータ)のオブジェクト制御処理の限定しない一例を示すフロー図である。以下、図20−図33を用いて、全体的なゲーム処理、ゲーム制御処理およびオブジェクト制御処理について説明するが、同じ処理を実行するステップについての重複する説明は省略する。
ただし、図20−図33に示すフロー図における各ステップの処理は、単なる一例に過ぎず、同様の結果が得られるのであれば、各ステップの処理順序を入れ替えてもよい。また、この実施例では、基本的には、図20−図33に示すフロー図における各ステップの処理をプロセッサ81が実行するものとして説明するが、プロセッサ81以外のプロセッサや専用回路が一部のステップを実行するようにしてもよい。
本体装置2の電源が投入されると、全体的なゲーム処理の実行に先だって、プロセッサ81は、図示しないブートROMに記憶されている起動プログラムを実行し、これによってDRAM85等の各ユニットが初期化される。本体装置2は、ユーザによって、この実施例のゲームプログラムの実行が指示されると、全体的なゲーム処理を開始する。
図20に示すように、プロセッサ81は、全体的なゲーム処理を開始すると、ステップS1で、初期設定を実行する。ここでは、プロセッサ81は、仮想空間において、プレイヤキャラクタ202、敵キャラクタ204を含むノンプレイヤキャラクタおよび背景オブジェクトを初期位置に配置する。ただし、前回の続きからゲームを開始する場合には、セーブされた時点における位置にプレイヤキャラクタ202、ノンプレイヤキャラクタおよび背景オブジェクトを配置する。このとき、プレイヤキャラクタ202およびノンプレイヤキャラクタの初期位置またはセーブされた時点における位置の座標データが、現在位置データ854dとしてデータ記憶領域854に記憶される。また、プロセッサ81は、移動モードデータ854cが示すモードの識別情報を周方向モードの識別情報に設定するとともに、体力値データ854hに対応するプレイヤキャラクタ202の体力値を最大値に設定する。
続くステップS3では、左コントローラ3または/および右コントローラ4から送信された操作データを取得し、ステップS5では、後述するゲーム制御処理(図21−図28参照)を実行する。
次のステップS7では、ゲーム画像を生成する。ここでは、プロセッサ81は、ステップS5のゲーム制御処理の結果に基づいてゲーム画像(戦闘画面200、250など)に対応するゲーム画像データを生成する。また、ステップS9では、ゲーム音声を生成する。ここでは、プロセッサ81は、ステップS5のゲーム制御処理の結果に応じたゲーム音声に対応する音声データを生成する。
続いて、ステップS11では、ゲーム画像を表示する。ここでは、プロセッサ81は、ステップS7で生成したゲーム画像データをディスプレイ12に出力する。また、ステップS13では、ゲーム音声を出力する。ここでは、プロセッサ81は、ステップS9で生成したゲーム音声データを、コーデック回路87を介してスピーカ88に出力する。
そして、ステップS15では、ゲームを終了するかどうかを判断する。ステップS15の判断は、プレイヤがゲームを終了する指示を行ったか否か等によって行われる。
ステップS15で“NO”であれば、つまりゲームを終了しない場合には、ステップS3に戻る。一方、ステップS15で“YES”であれば、つまりゲームを終了する場合には、全体的なゲーム処理を終了する。
図21に示すように、プロセッサ81は、ステップS5に示したゲーム制御処理を開始すると、ステップS21で、通常キャラクタ204と戦闘中であるかどうかを判断する。
ステップS21で“YES”であれば、つまり、通常キャラクタ204と戦闘中であれば、図22に示すステップS35に進む。一方、ステップS21で“NO”であれば、つまり、通常キャラクタ204と戦闘中でなければ、ステップS23で、ボスキャラクタ204と戦闘中であるかどうかを判断する。
ステップS23で“YES”であれば、つまり、ボスキャラクタ204と戦闘中であれば、図25に示すステップS81に進む。一方、ステップS23で“NO”であれば、つまり、ボスキャラクタ204と戦闘中でなければ、ステップS25で、プレイヤキャラクタ202が敵キャラクタ204と遭遇したかどうかを判断する。
ステップS25で“NO”であれば、つまり、プレイヤキャラクタ202が敵キャラクタ204と遭遇していなければ、ステップS27で、その他のゲーム処理を実行して、ゲーム制御処理を終了し、図20に示した全体的なゲーム処理にリターンする。ステップS27では、プロセッサ81は、プレイヤの操作に従って、プレイヤキャラクタ202に戦闘に関する動作以外の動作をさせるとともに、プレイヤの操作に拘らず、敵キャラクタ204を含むノンプレイヤキャラクタに戦闘に関する動作以外の動作をさせる。また、プロセッサ81は、プレイヤキャラクタ202の体力値が0以下になった場合には、戦闘に敗北した処理またはゲームオーバ処理を実行し、複数の通常キャラクタ204が全部消滅された場合またはボスキャラクタ204の体力値が0以下になった場合には、戦闘に勝利した処理またはゲームクリア処理を実行する。これらは、その他のゲーム処理の一例であり、限定されるべきでない。
一方、ステップS25で“YES”であれば、つまり、プレイヤキャラクタ202が敵キャラクタ204と遭遇すれば、ステップS29で、遭遇した敵キャラクタ204がボスキャラクタ204であるかどうかを判断する。
ステップS29で“NO”であれば、つまり、遭遇した敵キャラクタ204がボスキャラクタ204でなければ、ステップS31で、通常キャラクタ204との戦闘処理を開始して、ステップS35に進む。このとき、プロセッサ81は、移動回数データ854gが示す移動回数をリセットする。通常キャラクタ204との戦闘処理を開始する場合には、図8に示したように、プレイヤキャラクタ202が盤面オブジェクト210を構成する中央オブジェクト212上に配置される。また、複数の通常キャラクタ204の各々が、所定のルールに従って、盤面オブジェクト210を構成する部分オブジェクト214a上に配置される。一例として、複数の通常キャラクタ204の各々は、予め決められた配置で、部分オブジェクト214a上に配置される。ただし、複数の通常キャラクタ204の各々が配置される部分オブジェクト214aは、ゲームの進行状況、遭遇した敵キャラクタ204の種類、プレイヤキャラクタ202(または、プレイヤ)のレベルに応じて予め決定されていてもよい。
一方、ステップS29で“YES”であれば、つまり、遭遇した敵キャラクタ204がボスキャラクタ204であれば、ステップS33で、ボスキャラクタ204との戦闘処理を開始して、ステップS83に進む。このとき、プロセッサ81は、移動回数データ854gが示す移動回数をリセットする。ボスキャラクタ204との戦闘処理を開始する場合には、図17(A)に示したように、プレイヤキャラクタ202が盤面オブジェクト210の外側の所定位置に配置され、ボスキャラクタ204が中央オブジェクト212上に配置される。また、複数の方向指示オブジェクト252、複数の攻撃指示オブジェクト254および複数の効果オブジェクト256の各々が、所定のルールに従って、部分オブジェクト214a上に配置される。ただし、複数の方向指示オブジェクト252、複数の攻撃指示オブジェクト254および複数の効果オブジェクト256の各々が配置される部分オブジェクト214aは、ボスキャラクタ204に応じて予め決定されていてもよい。
図22に示すステップS35では、プレイヤキャラクタ202の攻撃ターンであるかどうかを判断する。ここでは、プロセッサ81は、PC攻撃フラグ854iがオンであるかどうかを判断する。通常キャラクタ204との戦闘処理を開始した時点では、PC攻撃フラグ854iはオンである。ただし、通常キャラクタ204との戦闘処理を開始した時点において、PC攻撃フラグ854iをオフすることにより、通常キャラクタ204の攻撃ターンから開始してもよい。これらのことは、ボスキャラクタ204との戦闘処理を開始した時点においても同様である。
ステップS35で“NO”であれば、つまり、通常の敵キャラクタ204の攻撃ターンであれば、図24に示すステップS61に進む。一方、ステップS35で“YES”であれば、つまり、プレイヤキャラクタ202の攻撃ターンであれば、ステップS37で、プレイヤキャラクタ202の攻撃動作が終了したかどうかを判断する。ステップS37で“YES”であれば、つまり、プレイヤキャラクタ202の攻撃動作が終了していれば、ステップS39で、プレイヤキャラクタ202の攻撃によって通常キャラクタ204の体力値を減少させて、ステップS41で、PC攻撃フラグ854iをオフして、全体的なゲーム処理にリターンする。ただし、プロセッサ81は、ステップS39の処理によって通常キャラクタ204の体力値が0になった場合は攻撃に応じた数値だけ減算され、通常キャラクタ204を消滅させる。
また、ステップS37で“NO”であれば、つまり、プレイヤキャラクタ202の攻撃動作が終了していなければ、ステップS43で、プレイヤキャラクタ202の攻撃動作中かどうかを判断する。ステップS43で“YES”であれば、つまり、プレイヤキャラクタ202の攻撃動作中であれば、ステップS45で、プレイヤキャラクタ202の攻撃動作を進行させて、全体的なゲーム処理にリターンする。ステップS45では、プロセッサ81は、プレイヤキャラクタ202の攻撃動作のアニメーションを1フレーム分進行させる。このことは、後述するステップS73、S91およびS141についても同様である。
また、ステップS43で“NO”であれば、つまり、プレイヤキャラクタ202の攻撃動作中でなければ、図23に示すステップS47で、攻撃の種類の選択であるかどうかを判断する。ここでは、プロセッサ81は、ステップS3で検出した操作データが攻撃の種類(この実施例では、ジャンプ攻撃またはハンマー攻撃)の選択を示すかどうかを判断する。
ステップS47で“YES”であれば、つまり、攻撃の種類の選択であれば、ステップS49で、選択された種類を攻撃の種類として設定して、全体的なゲーム処理にリターンする。一方、ステップS47で“NO”であれば、つまり、攻撃の種類の選択でなければ、ステップS51で、攻撃の範囲の変更かどうかを判断する。
ステップS51で“YES”であれば、つまり、攻撃の範囲の変更であれば、ステップS53で、変更された攻撃の範囲を指示して、全体的なゲーム処理にリターンする。ステップS53では、プロセッサ81は、指示画像230または指示画像240の位置の位置を変更する。一方、ステップS51で“NO”であれば、つまり、攻撃の範囲の変更でなければ、ステップS55で、攻撃指示かどうかを判断する。ここでは、プロセッサ81は、指示画像230または指示画像240が表示され、攻撃の範囲が指示されている状態において、Aボタン53が押下されたかどうかを判断する。
ステップS55で“YES”であれば、つまり、攻撃指示であれば、ステップS57で、プレイヤキャラクタ202の攻撃動作を開始し、全体的なゲーム処理にリターンする。一方、ステップS55で“NO”であれば、つまり、攻撃指示でなければ、ステップS59で、操作対象の複数の部分オブジェクト214aを、移動可能かどうかを判断する。ここでは、プロセッサ81は、移動回数データ854gが示す移動回数が0であるかどうかを判断する。プロセッサ81は、移動回数が1以上であれば、操作対象の複数の部分オブジェクト214aを移動できると判断し、移動回数が0であれば、操作対象の複数の部分オブジェクト214aを移動できないと判断する。
ステップS59で“NO”であれば、つまり、操作対象の複数の部分オブジェクト214aを移動できない場合には、全体的なゲーム処理にリターンする。一方、ステップS59で“YES”であれば、つまり、操作対象の複数の部分オブジェクト214aを移動できる場合には、ステップS61で、後述するオブジェクト制御処理(図29−図33参照)を実行して、全体的なゲーム処理にリターンする。
上述したように、ステップS35で“NO”であれば、図24に示すように、ステップS63で、通常キャラクタ204の攻撃動作が終了したかどうかを判断する。ステップS63で“YES”であれば、つまり、通常キャラクタ204の攻撃動作が終了していれば、ステップS65で、プレイヤキャラクタ202の体力値を減算する。ここでは、通常キャラクタ204の攻撃に応じた数値がプレイヤキャラクタ202の体力値から減算される。このとき、体力値データ854hが更新される。次のステップS67では、PC攻撃フラグ854iをオンして、全体的なゲーム処理にリターンする。プロセッサ81は、ステップS67の処理を実行したときに、移動回数データ854gが示す移動回数をリセットする。
一方、ステップS63で“NO”であれば、つまり、通常キャラクタ204の攻撃動作が終了していなければ、ステップS69で、通常キャラクタ204の攻撃動作中であるかどうかを判断する。ステップS69で“NO”であれば、つまり、通常キャラクタ204の攻撃動作中でなければ、ステップS71で、通常キャラクタ204の攻撃動作を開始して、全体的なゲーム処理にリターンする。一方、ステップS69で“YES”であれば、つまり、通常キャラクタ204の攻撃動作中であれば、ステップS73で、通常キャラクタ204の攻撃動作を進行させて、全体的なゲーム処理にリターンする。
上述したように、ステップS23で“YES”またはステップS33を実行すれば、図25に示すように、ステップS81で、プレイヤキャラクタ202の攻撃ターンであるかどうかを判断する。ステップS81で“NO”であれば、図28に示すステップS121に進む。一方、ステップS81で“YES”であれば、ステップS83で、プレイヤキャラクタ202の攻撃動作が終了したかどうかを判断する。ステップS83で“YES”であれば、ステップS85で、攻撃に応じた数値だけ、ボスキャラクタ204の体力値を減算して、ステップS87で、PC攻撃フラグ854iをオフして、図26に示すように、全体的なゲーム処理にリターンする。
図19では省略したが、戦闘処理の開始時にボスキャラクタ204の体力値が設定される。つまり、ボスキャラクタ204の体力値に対応するデータ(「ボス体力値データ」という)がデータ記憶領域854に記憶される。したがって、ステップS85では、このボス体力値データが更新される。
また、ステップS83で“NO”であれば、ステップS89で、プレイヤキャラクタ202の攻撃動作中かどうかを判断する。ステップS89で“YES”であれば、ステップS91で、プレイヤキャラクタ202の攻撃動作を進行させて、全体的なゲーム処理にリターンする。一方、ステップS89で“NO”であれば、ステップS93で、プレイヤキャラクタ202が移動中であるかどうかを判断する。
ステップS93で“YES”であれば、つまり、プレイヤキャラクタ202が移動中であれば、ステップS95で、プレイヤキャラクタ202を移動させて、図27に示すステップS109に進む。ステップS95では、プロセッサ81は、プレイヤキャラクタ202を現在の進行方向に1フレーム分移動させて、移動後の位置を現在位置とて記憶する。つまり、プロセッサ81は、現在位置データ854dを更新する。
一方、ステップS93で“NO”であれば、つまり、プレイヤキャラクタ202が移動中でなければ、図26に示すステップS97で、攻撃の種類の選択かどうかを判断する。ステップS97で“YES”であれば、ステップS99で、選択された種類を攻撃の種類として設定して、全体的なゲーム処理にリターンする。
また、ステップS97で“NO”であれば、ステップS101で、移動指示かどうかを判断する。ここでは、プロセッサ81は、ステップS3で取得した操作データが移動開始を示すかどうかを判断する。ステップS101で“YES”であれば、つまり、移動指示であれば、ステップS103で、プレイヤキャラクタ202の移動を開始し、全体的なゲーム処理にリターンする。一方、ステップS101で“NO”であれば、つまり、移動指示でなければ、ステップS105で、操作対象の複数の部分オブジェクト214aを、移動可能かどうかを判断する。
ステップS105で“NO”であれば、ステップS103に進む。たとえば、ステップS107では、プロセッサ81は、プレイヤの操作に応じて攻撃の種類を選択する。一方、ステップS105で“YES”であれば、ステップS107で、後述するオブジェクト制御処理(図27参照)を実行して、全体的なゲーム処理にリターンする。
上述したように、ステップS95で、プレイヤキャラクタ202を移動させると、図27に示すように、ステップS109で、方向指示オブジェクト252があるかどうかを判断する。ここでは、プロセッサ81は、プレイヤキャラクタ202が到達した部分オブジェクト214a上に方向指示オブジェクト252が載置されているかどうかを判断する。後述する攻撃指示オブジェクト254および効果オブジェクト256があるかどうかを判断する場合についても同様である。
ステップS109で“YES”であれば、つまり、方向指示オブジェクト252があれば、ステップS111で、方向指示オブジェクト252が示す方向に従ってプレイヤキャラクタ202の移動方向を変更して、全体的なゲーム処理にリターンする。ただし、プレイヤキャラクタ202の現在の移動方向と、方向指示オブジェクト252が示す方向が同じ方向である場合には、移動方向は変更されない。
一方、ステップS109で“NO”であれば、つまり、方向指示オブジェクト252がなければ、ステップS113で、効果オブジェクト256があるかどうかを判断する。ステップS113で“YES”であれば、つまり、効果オブジェクト256があれば、ステップS115で、効果を発動して、全体的なゲーム処理にリターンする。ステップS115では、攻撃回数が2回に増加されたり、プレイヤキャラクタ202の体力値が一部または全部回復されたりする。
また、ステップS113で“NO”であれば、つまり、効果オブジェクト256がなければ、ステップS117で、攻撃指示オブジェクト254があるかどうかを判断する。ステップS117で“YES”であれば、つまり、攻撃指示オブジェクト254があれば、ステップS119で、攻撃動作を開始して、全体的なゲーム処理にリターンする。一方、ステップS117で“NO”であれば、つまり、攻撃指示オブジェクト254がなければ、全体的なゲーム処理にリターンする。
上述したように、ステップS81で“NO”であれば、図28に示すように、ステップS121で、ボスキャラクタ204の攻撃動作が終了したかどうかを判断する。ステップS121で“YES”であれば、つまり、ボスキャラクタ204の攻撃動作が終了していれば、ステップS123で、プレイヤキャラクタ202の体力値を減算する。ここでは、ボスキャラクタ204の攻撃に応じた数値が体力値から減算され、体力値データ854hが更新される。次のステップS125では、PC攻撃フラグ854iをオンして、全体的なゲーム処理にリターンする。プロセッサ81は、ステップS123の処理を実行したときに、移動回数データ854gが示す移動回数をリセットする。
一方、ステップS121で“NO”であれば、つまり、ボスキャラクタ204の攻撃動作が終了していなければ、ステップS127で、ボスキャラクタ204の攻撃動作中であるかどうかを判断する。ステップS127で“YES”であれば、つまり、ボスキャラクタ204の攻撃動作中であれば、ステップS129で、ボスキャラクタ204の攻撃動作を進行させて、全体的なゲーム処理にリターンする。一方、ステップS127で“NO”であれば、つまり、ボスキャラクタ204の攻撃動作中でなければ、ステップS131で、ボスキャラクタ204の攻撃動作を開始して、全体的なゲーム処理にリターンする。
図29−図33は、上記のゲーム制御処理におけるステップS61およびS107に示したプロセッサ81のオブジェクト制御処理のフロー図の限定しない一例である。図29に示すように、プロセッサ81は、オブジェクト制御処理を開始すると、ステップS161で、操作対象の複数の部分オブジェクト214aの移動方法の変更かどうかを判断する。ここでは、プロセッサ81は、ステップS3で検出した操作データがLボタン38またはRボタン60の押下を示すかどうかを判断する。
ステップS161で“YES”であれば、つまり、操作対象の複数の部分オブジェクト214aの移動方法の変更であれば、ステップS163で、操作対象の複数の部分オブジェクト214aの移動方法を変更する。ここでは、プロセッサ81は、周方向モードから径方向モードに、または、径方向モードから周方向モードに切り替える。つまり、プロセッサ81は、移動モードデータ854cを更新する。
次のステップS165では、直前に部分オブジェクト214aが移動されたかどうかを判断する。ステップS165で“NO”であれば、つまり、直前に部分オブジェクト214aが移動されていなければ、オブジェクト制御処理を終了して、ゲーム制御処理にリターンする。一方、ステップS165で“YES”であれば、つまり、直前に部分オブジェクト214aが移動されていれば、ステップS167で、移動回数を1減算して、ゲーム制御処理にリターンする。ステップS167では、プロセッサ81は、移動回数データ854gを更新する。
また、ステップS161で“NO”であれば、つまり、操作対象の複数の部分オブジェクト214aの移動方法の変更でなければ、ステップS169で、周方向モードかどかうかを判断する。ここでは、プロセッサ81は、移動モードデータ854cが周方向モードを示すかどうかを判断する。
ステップS169で“NO”であれば、つまり、径方向モードであれば、図32に示すステップS197に進む。一方、ステップS169で“YES”であれば、つまり、周方向モードであれば、図30に示すステップS171で、操作対象の解除かどうかを判断する。ここでは、プロセッサ81は、ステップS3で検出した操作データがBボタン54の押下を示すどうかを判断する。
ステップS171で“YES”であれば、つまり、操作対象の解除であれば、ステップS173で、操作対象のリングを解除して、ゲーム制御処理にリターンする。一方、ステップS173で“NO”であれば、つまり、操作対象の解除でなければ、ステップS175で、指示するリングの変更かどうかを判断する。ここでは、プロセッサ81は、ステップS3で検出した操作データがアナログスティック32の傾倒を示すかどうかを判断する。
ステップS175で“YES”であれば、つまり、指示するリングの変更であれば、ステップS177で、指示するリングを変更する。この実施例では、プロセッサ81は、ステップS177において、現在指示しているリングの外側に隣接するリングを、指示するリングに決定する。次のステップS179では、直前に部分オブジェクト214aが移動されたかどうかを判断する。ステップS179で“NO”であれば、ゲーム制御処理にリターンする。一方、ステップS179で“YES”であれば、ステップS181で、移動回数を1減算して、ゲーム制御処理にリターンする。
一方、ステップS175で“NO”であれば、つまり、指示するリングの変更でなければ、ステップS182で、操作対象の決定かどうかを判断する。ここでは、プロセッサ81は、指示画像220が表示された状態で、ステップS3で検出した操作データがAボタン53の押下を示すかどうかを判断する。
ステップS182で“YES”であれば、つまり、操作対象の決定であれば、ステップS183で、現在指示しているリングを操作対象のリングに決定して、ゲーム制御処理にリターンする。一方、ステップS182で“NO”であれば、つまり、操作対象の決定でなければ、図31に示すステップS185で、操作対象のリングを構成する複数の部分オブジェクト214aが周方向への移動を終了したかどうかを判断する。つまり、プロセッサ81は、操作対象の複数の部分オブジェクト214aの各々が周方向に1マス分移動したかどうかを判断する。
ステップS185で“YES”であれば、つまり、操作対象のリングを構成する複数の部分オブジェクト214aが周方向への移動を終了すれば、ステップS187で、各部分オブジェクト214aおよび各載置オブジェクトの移動後の位置を記憶して、ゲーム制御処理にリターンする。つまり、ステップS187では、プロセッサ81は、操作対象のリングを構成する複数の部分オブジェクト214aの位置およびこの複数の部分オブジェクト214aとともに移動される載置オブジェクトの位置についての現在位置データ854dを更新する。ただし、この実施例では、載置オブジェクトは、通常キャラクタ204との戦闘処理では、通常キャラクタ204であり、ボスキャラクタ204との戦闘処理では、方向指示オブジェクト252、攻撃指示オブジェクト254および効果オブジェクト256である。
一方、ステップS185で“NO”であれば、つまり、操作対象のリングを構成する複数の部分オブジェクト214aが周方向への移動を終了しなければ、ステップS189で、操作対象のリングを構成する複数の部分オブジェクト214aが周方向に移動中であるかどうかを判断する。
ステップS189で“YES”であれば、つまり、操作対象のリングを構成する複数の部分オブジェクト214aが周方向に移動中であれば、ステップS191で、各部分オブジェクト214aおよび各載置オブジェクトを、移動中の方向に移動して、ゲーム制御処理にリターンする。ただし、移動中の方向は、ステップS195で移動開始した方向であり、時計回りの方向または反時計回りの方向である。
一方、ステップS189で“NO”であれば、つまり、操作対象のリングに含まれる複数の部分オブジェクト214aが周方向に移動中でなければ、ステップS193で、移動指示であるかどうかを判断する。ここでは、プロセッサ81は、ステップS3で検出した操作データがアナログスティック32の傾倒を示すかどうかを判断する。
ステップS193で“NO”であれば、つまり、移動指示でなければ、ゲーム制御処理にリターンする。ステップS193で“YES”であれば、つまり、移動指示であれば、ステップS195で、操作対象のリングに含まれる複数の部分オブジェクト214aについて、指示された方向(すなわち、時計回りの方向または反時計回りの方向)への移動を開始して、ゲーム制御処理にリターンする。
上述したように、ステップS169で“NO”であれば、図32に示すように、ステップS197で、操作対象の解除かどうかを判断する。ステップS197で“YES”であれば、ステップS199で、操作対象の列を解除して、ゲーム制御処理にリターンする。一方、ステップS197で“NO”であれば、つまり、操作対象の解除でなければ、ステップS201で、指示する列の変更かどうかを判断する。ここでは、プロセッサ81は、ステップS3で検出した操作データがアナログスティック32の傾倒した状態での回転を示すかどうかを判断する。
ステップS201で“YES”であれば、つまり、指示する列の変更であれば、ステップS203で、指示する列を変更する。この実施例では、プロセッサ81は、ステップS203において、現在指示している列に隣接する2つの列のうち、アナログスティック32の回転する方向に隣接する列を、指示する列に決定する。次のステップS205で、直前に部分オブジェクト214aが移動されたかどうかを判断する。ステップS205で“NO”であれば、ゲーム制御処理にリターンする。一方、ステップS205で“YES”であれば、ステップS207で、移動回数を1減算して、ゲーム制御処理にリターンする。
一方、ステップS201で“NO”であれば、つまり、指示する列の変更でなければ、ステップS209で、操作対象の決定かどうかを判断する。ステップS209で“YES”であれば、ステップS211で、現在指示している列を操作対象の列に決定して、ゲーム制御処理にリターンする。一方、ステップS209で“NO”であれば、図33に示すステップS213で、操作対象の列を構成する複数の部分オブジェクト214aが径方向への移動を終了したかどうかを判断する。つまり、プロセッサ81は、操作対象の複数の部分オブジェクト214aの各々が径方向に1マス分移動したかどうかを判断する。
ステップS213で“YES”であれば、つまり、操作対象の列を構成する複数の部分オブジェクト214aが径方向への移動を終了すれば、ステップS215で、各部分オブジェクト214aおよび各載置オブジェクトの移動後の位置を記憶して、ゲーム制御処理にリターンする。つまり、ステップS215では、プロセッサ81は、操作対象の列を構成する複数の部分オブジェクト214aの位置およびこの複数の部分オブジェクト214aとともに移動される載置オブジェクトの位置についての現在位置データ854dを更新する。ただし、この実施例では、載置オブジェクトは、通常キャラクタ204との戦闘処理では、通常キャラクタ204であり、ボスキャラクタ204との戦闘処理では、方向指示オブジェクト252、攻撃指示オブジェクト254および効果オブジェクト256である。
一方、ステップS213で“NO”であれば、つまり、操作対象の列を構成する複数の部分オブジェクト214aが径方向への移動を終了しなければ、ステップS217で、操作対象の列を構成する複数の部分オブジェクト214aが径方向に移動中であるかどうかを判断する。
ステップS217で“YES”であれば、つまり、操作対象の列を構成する複数の部分オブジェクト214aが径方向に移動中であれば、ステップS219で、各部分オブジェクト214aおよび各載置オブジェクトを、移動中の方向に移動して、ゲーム制御処理にリターンする。ただし、移動中の方向は、ステップS223で移動開始した方向であり、方位を用いた12の方向のいずれかの方向である。
一方ステップS217で“NO”であれば、つまり、操作対象の列に含まれる複数の部分オブジェクト214aが径方向に移動中でなければ、ステップS221で、移動指示であるかどうかを判断する。
ステップS221で“NO”であれば、ゲーム制御処理にリターンする。一方、ステップS221で“YES”であれば、ステップS223で、操作対象の列を構成する複数の部分オブジェクト214aについて、指示された方向(すなわち、方位を用いた12の方向のうちの指示された方向)への移動を開始して、ゲーム制御処理にリターンする。
なお、図29−図33に示すオブジェクト制御処理では、Bボタン54が押下されることにより、操作対象のリングまたは列を解除することについて図示および説明したが、Bボタン54が押下される毎に一手戻すことができ、攻撃ターンの開始時まで戻すことができる。したがって、上述したように、周方向モードでは、Bボタン54が押下されると、回転移動(すなわち、周方向への移動)を元に戻すことができ、さらには、操作対象のリングを解除することもできる。また、径方向モードでは、Bボタン54が押下されると、径方向への移動を元に戻すことができ、さらには、操作対象の列を解除することもできる。ただし、一手戻した場合には、つまり、周方向への移動または径方向への移動を一つ前に戻した場合には、移動回数が1加算される。
この実施例によれば、盤面オブジェクトを複数の同心円および複数の同心円で共有される中心から放射状に延びる複数の線分で分割したすべての部分オブジェクトから、リング状または列状に並ぶ複数の部分オブジェクトを操作対象として選択し、選択された複数の部分オブジェクトを周方向または径方向に移動させるとともに、この移動に伴って1または複数の載置オブジェクトを移動させることにより、複数の載置オブジェクトの配置を変更させて、プレイヤキャラクタに敵キャラクタを攻撃させるので、載置オブジェクトのようなゲームオブジェクトの配置の操作をゲームプレイに組み込んだ新しいゲームを提供することができる。
また、この実施例によれば、操作対象の複数の部分オブジェクトを周方向または/および径方向に移動させる回数には上限が設定されているため、載置オブジェクトの配置を変更することについての難易度を設定することができる。
さらに、この実施例によれば、盤面オブジェクトの中央部分から敵キャラクタを攻撃するための敵キャラクタの配置、または、盤面オブジェクトの中央部分に配置された敵キャラクタを攻撃するための方向指示オブジェクトおよび攻撃オブジェクトの配置をプレイヤに考えさせることができる。したがって、プレイヤが効率よく敵キャラクタを攻撃できたときの達成感を味わえるようにすることができる。
さらにまた、この実施例によれば、単に敵キャラクタオブジェクトを攻撃するだけでなく、効果的に攻撃を行うように、効果オブジェクトの配置をプレイヤに考えさせることができる。
なお、この実施例では、複数の載置オブジェクトを配置する盤面オブジェクトを円形状にしたが、これに限定される必要はない。他の例では、楕円形状または長円(トラック)形状にしてもよい。かかる場合にも、周方向または径(列)方向に複数の部分オブジェクトを移動させることにより、複数の載置オブジェクトの配置を変更することができる。
また、この実施例では、径方向においては、操作対象の列を構成する複数の部分オブジェクトが、中央オブジェクトを挟んで盤面オブジェクトの直径に相当する長さを移動可能に制御するようにしたが、これに限定される必要はない。半径に相当する長さを移動可能に制御するようにしてもよい。かかる場合には、最内周から最外周まで直線的に並ぶ4つの部分オブジェクトが列として構成され、12個の列のいずれかが操作対象として選択される。操作対象として選択された列で複数の部分オブジェクトが半径方向(内周側から外周側に向かう方向または外周側から内周側に向かう方向)に移動される。この場合、複数の部分オブジェクトが内周側から外周側に向かう方向に移動されるときには、最外周の部分オブジェクトは最内周に移動され、複数の部分オブジェクトが外周側から内周側に向かう方向に移動されるときには、最内周の部分オブジェクトは最外周に移動される。
さらに、この実施例では、盤面オブジェクトを複数の部分オブジェクトに分割し、操作対象の複数の部分オブジェクトを周方向または径方向に移動させることに伴って、載置オブジェクトを移動させるようにしたが、これに限定される必要はない。他の実施例では、盤面オブジェクトの盤面を複数の同心円とこれらの複数の同心円が共有する中心から放射状に延びる複数の線分で複数の領域に分割し、操作対象として選択したリング状または列状に並ぶ複数の領域内で載置オブジェクトを移動させるようにしてもよい。
また、上述の実施例では、情報処理システムの一例としてゲームシステム1を示したが、その構成は限定される必要は無く、他の構成を採用することが可能である。たとえば、上記「コンピュータ」は、上述の実施例においては、1つのコンピュータ(具体的には、プロセッサ81)であるが、他の実施例においては、複数のコンピュータであってもよい。上記「コンピュータ」は、例えば、複数の装置に設けられる(複数の)コンピュータであってもよく、より具体的には、上記「コンピュータ」は、本体装置2のプロセッサ81と、コントローラが備える通信制御部(マイクロプロセッサ)101、111とによって構成されてもよい。
さらに、他の実施例では、インターネットのようなネットワーク上のサーバで、全体的なゲーム処理の一部(S5−S9)を実行するようにしてもよい。つまり、サーバは、ゲーム制御処理(図21−図28)、このゲーム制御処理に含まれるオブジェクト制御処理(図29−図33)、ゲーム画像の生成処理およびゲーム音声の生成処理を実行する。かかる場合には、本体装置2のプロセッサ81は、左コントローラ3および右コントローラ4から取得した操作データを、ネットワーク通信部82およびネットワークを介して上記のサーバに送信し、サーバで全体的なゲーム処理の一部を実行された結果(つまり、ゲーム画像のデータおよびゲーム音声のデータ)を受信して、ゲーム画像をディスプレイ12に表示するとともに、ゲーム音声をスピーカ88から出力する。つまり、上述の実施例で示したゲームシステム1とネットワーク上のサーバを含む情報処理システムを構成することもできる。
また、上述の実施例では、ディスプレイ12にゲーム画像を表示する場合について説明したが、これに限定される必要はない。本体装置2を、クレードルを介して据置型モニタ(たとえば、テレビモニタ)に接続することにより、ゲーム画像を据置型モニタに表示することもできる。かかる場合には、ゲームシステム1と据置型モニタを含む情報処理システムを構成することもできる。
さらに、上述の実施例では、本体装置2に左コントローラ3および右コントローラ4を着脱可能な構成のゲームシステム1を用いた場合について説明したが、これに限定される必要はない。たとえば、左コントローラ3および右コントローラ4と同様の操作ボタンおよびアナログスティックを有する操作部を本体装置2に一体的に設けたゲーム装置またはゲームプログラムを実行可能な他の電子機器のような情報処理装置を用いることもできる。他の電子機器としては、スマートフォンまたはタブレットPCなどが該当する。かかる場合には、操作部はソフトウェアキーで構成することもできる。
さらにまた、上述の実施例で示した具体的な数値、画像、付加操作装置の構成は一例であり、実際の製品に応じて適宜変更可能である。
ここで、複数の部分オブジェクト214aを周方向に移動させる方法について説明する。図9(B)に示したように、5つの同心円によって、大きさの異なる4つのリングが隣接して形成される。また、各リングは、周方向に並んで配置された複数(この実施例では、12個)の部分オブジェクト214aを含む。複数の部分オブジェクト214aを周方向に移動させる場合(以下、「周方向モード」という)には、まず、どのリングに含まれる複数の部分オブジェクト214aを操作対象とするかが選択される。
図12(B)に示す通常の戦闘画面200は、ジャンプ攻撃が選択され、ジャンプ攻撃の範囲が選択された状態を示す。図12(B)に示す通常の戦闘画面200では、ジャンプ攻撃の範囲を示す指示画像230が示される。ジャンプ攻撃は、プレイヤキャラクタ202が盤面オブジェクト210の中央から外周方向に向けてジャンプしながら移動して、その移動方向に存在する1体または複数体の通常キャラクタ204を踏みつける攻撃である。したがって、ジャンプ攻撃の範囲は、上述したように、半径方向に並ぶ4マス分の部分オブジェクト214aの第1の所定範囲である。このため、指示画像230は、盤面オブジェクト210のうちの半径方向に並ぶ4マス分の部分オブジェクト214aの全体を囲む大きさおよび形状の枠線で示される。指示画像230すなわち攻撃の範囲は、プレイヤがアナログスティック32を傾倒した状態で左方向または右方向に回転させることにより、左方向または右方向に移動される。つまり、ジャンプ攻撃の範囲が選択される。
プレイヤキャラクタ202の攻撃ターンが終了すると、通常キャラクタ204の攻撃ターンが開始する。プレイヤキャラクタ202は、その体力値が0になるまでに、すべての通常キャラクタ204を倒すと、通常キャラクタ204との戦闘に勝利する、または、ゲームクリアとなる。ただし、プレイヤキャラクタ202がすべての通常キャラクタ204を倒す前に、通常キャラクタ204の攻撃によってプレイヤキャラクタ202の体力値が0以下になると、通常キャラクタ204との戦闘に負ける、または、ゲームオーバになる。これらのことは、後述する通常の戦闘画面200において、ハンマー攻撃が実行される場合についても同様である。
また、ボス戦闘画面250には、効果オブジェクト256が部分オブジェクト214a上に載置される。この実施例では、効果オブジェクト256は、一度の攻撃ターンでプレイヤキャラクタ202がボスキャラクタ204を攻撃できる回数が2倍(2回)に増えるノンプレイヤのキャラクタオブジェクトおよびプレイヤキャラクタ202の体力値が所定値(または全部)回復するノンプレイヤのキャラクタオブジェクトである。前者の効果オブジェクト256は、図柄として「×2」の文字を表示し、後者の効果オブジェクト256は、ハートの図柄を表示してある。
ただし、プレイヤは、ボス戦闘画面250においても、通常の戦闘画面200と同様に、周方向モードまたは径方向モードを選択して、操作対象として決定したリングまたは列に含まれる複数の部分オブジェクト214aを周方向または径方向に移動させ、この移動に伴って1つまたは複数の載置オブジェクトを移動させる。
操作検出プログラム852cは、左コントローラ3または/および右コントローラ4からの操作データ854aを取得するためのプログラムである。部分オブジェクト移動プログラム852dは、プレイヤの操作に基づいて、周方向モードおよび径方向モードの切り替え、複数の部分オブジェクト214aの周方向への移動および径方向への移動を制御するためのプログラムである。また、部分オブジェクト移動プログラム852dは、部分オブジェクト214aに載置されている載置オブジェクトを部分オブジェクト214aの移動に伴って移動するためのプログラムでもある。
キャラクタ制御プログラム852eは、プレイヤの操作に基づいて、プレイヤキャラクタ202の動作を制御したり、プレイヤの操作に関わらず、敵キャラクタ204を含むノンプレイヤのキャラクタオブジェクトの動作を制御したりするためのプログラムである。パラメータ制御プログラム852fは、パラメータの数値を最大値(この実施例では、100)と最小値(この実施例では、0)の間で増加または減少(すなわち、制御)するためのプログラムである。
図20に示すように、プロセッサ81は、全体的なゲーム処理を開始すると、ステップS1で、初期設定を実行する。ここでは、プロセッサ81は、仮想空間において、プレイヤキャラクタ202、敵キャラクタ204を含むノンプレイヤのキャラクタオブジェクトおよび背景オブジェクトを初期位置に配置する。ただし、前回の続きからゲームを開始する場合には、セーブされた時点における位置にプレイヤキャラクタ202、ノンプレイヤのキャラクタオブジェクトおよび背景オブジェクトを配置する。このとき、プレイヤキャラクタ202およびノンプレイヤのキャラクタオブジェクトの初期位置またはセーブされた時点における位置の座標データが、現在位置データ854dとしてデータ記憶領域854に記憶される。また、プロセッサ81は、移動モードデータ854cが示すモードの識別情報を周方向モードの識別情報に設定するとともに、体力値データ854hに対応するプレイヤキャラクタ202の体力値を最大値に設定する。
ステップS25で“NO”であれば、つまり、プレイヤキャラクタ202が敵キャラクタ204と遭遇していなければ、ステップS27で、その他のゲーム処理を実行して、ゲーム制御処理を終了し、図20に示した全体的なゲーム処理にリターンする。ステップS27では、プロセッサ81は、プレイヤの操作に従って、プレイヤキャラクタ202に戦闘に関する動作以外の動作をさせるとともに、プレイヤの操作に拘らず、敵キャラクタ204を含むノンプレイヤのキャラクタオブジェクトに戦闘に関する動作以外の動作をさせる。また、プロセッサ81は、プレイヤキャラクタ202の体力値が0以下になった場合には、戦闘に敗北した処理またはゲームオーバ処理を実行し、複数の通常キャラクタ204が全部消滅された場合またはボスキャラクタ204の体力値が0以下になった場合には、戦闘に勝利した処理またはゲームクリア処理を実行する。これらは、その他のゲーム処理の一例であり、限定されるべきでない。
上述したように、ステップS81で“NO”であれば、図28に示すように、ステップS121で、ボスキャラクタ204の攻撃動作が終了したかどうかを判断する。ステップS121で“YES”であれば、つまり、ボスキャラクタ204の攻撃動作が終了していれば、ステップS123で、プレイヤキャラクタ202の体力値を減算する。ここでは、ボスキャラクタ204の攻撃に応じた数値が体力値から減算され、体力値データ854hが更新される。次のステップS125では、PC攻撃フラグ854iをオンして、全体的なゲーム処理にリターンする。プロセッサ81は、ステップS125の処理を実行したときに、移動回数データ854gが示す移動回数をリセットする。
ステップS171で“YES”であれば、つまり、操作対象の解除であれば、ステップS173で、操作対象のリングを解除して、ゲーム制御処理にリターンする。一方、ステップS171で“NO”であれば、つまり、操作対象の解除でなければ、ステップS175で、指示するリングの変更かどうかを判断する。ここでは、プロセッサ81は、ステップS3で検出した操作データがアナログスティック32の傾倒を示すかどうかを判断する。