以下、この実施例の限定しない一例に係るゲームシステムについて説明する。この実施例におけるゲームシステム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所定時間に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-図15を参照して、この実施例のゲームシステム1において実行される仮想のゲームのゲーム処理およびシルエットの表示判定についての概要を説明する。図8は、この実施例の仮想のゲームのアプリケーションを実行した場合に、表示装置(たとえば、ディスプレイ12)に表示されるゲーム画像の限定しない一例を示す図である。
本体装置2は、画像処理装置としても機能し、ゲーム画像などの各種画面に対応する表示用画像データを生成および出力(表示)する。プロセッサ81は、3次元の仮想空間に各種のオブジェクトおよびキャラクタを配置し、或る情景または場面(シーン)が生成される。このシーンを仮想カメラで撮影した(視点から見た)画像がゲーム画像としてディスプレイ12に表示される。
図8に示すゲーム画像はゲーム画面200の限定しない一例である。ゲーム画面200は、プレイヤキャラクタ202、第1仲間キャラクタ(「第2オブジェクト」に相当する)204および複数の背景オブジェクト(「第1オブジェクト」に含まれる)210、212、214を含む。また、ゲーム画面200には、アイテムまたは/およびノンプレイヤキャラクタが含まれる場合もある。アイテムまたは/およびノンプレイヤキャラクタも第1オブジェクトとしてゲーム画面200に含まれてもよい。
プレイヤキャラクタ202は、ユーザまたはプレイヤ(以下、単に「プレイヤ」という)によって動作を制御されるオブジェクトである。この実施例では、プレイヤキャラクタ202は、人間を模した主人公のオブジェクトである。プレイヤキャラクタ202の動作としては、仮想の或る場所すなわち仮想空間内において、移動したり、アイテムを取得したり、アイテムを使用したり、敵キャラクタの移動を停止させたり、第1仲間キャラクタ204が変形した第2仲間キャラクタ(「合体状態の第2オブジェクト」に相当する)206と合体したり、第2仲間キャラクタ206を分離したり、ノンプレイヤキャラクタと会話したりすることなどが該当する。また、この実施例において、アイテムは、プレイヤキャラクタ202が使用または所持する道具(武器、防具を含む)、靴、手袋、帽子、薬、お宝およびコイン(お金)などの様々なオブジェクトを意味する。
第1仲間キャラクタ204は、プレイヤによって動作を制御されるオブジェクトである。この実施例では、第1仲間キャラクタ204は、動物を模したオブジェクトであって、主人公のオブジェクトの仲間または味方のオブジェクトである。第1仲間キャラクタ204の動作としては、仮想空間内において、移動したり、アイテムを取得したり、敵キャラクタを攻撃したり、第2仲間キャラクタ206に変形してプレイヤキャラクタ202と合体したり、プレイヤキャラクタ202から分離したときに第2仲間キャラクタ206から元に戻ったりする。
また、ノンプレイヤキャラクタは、プレイヤではなくコンピュータ(図6のプロセッサ81)によって動作を制御されるオブジェクトである。一例として、ノンプレイヤキャラクタは、プレイヤキャラクタ202以外の人間を模したオブジェクトである。あるいは、ノンプレイヤキャラクタは、第1仲間キャラクタ204および第2仲間キャラクタ206以外の動物を模したオブジェクトである。ノンプレイヤキャラクタの動作としては、移動したり、プレイヤキャラクタ202または仲間キャラクタ(204または206)に攻撃したり、プレイヤキャラクタ202と会話したり、プレイヤキャラクタ202にアイテムを渡したりすることが該当する。
背景オブジェクト(210、212、214など)は、仮想空間に配置された置物、乗り物、地形などの背景を構成するオブジェクトである。置物とは、看板、立て札、石造、石碑、壺、骨董品、花瓶、絵画、掛け軸などを意味する。乗り物とは、自転車、オートバイ、自動車、電車、馬車、トロッコ、船、飛行機、飛行船、気球などを意味する。地形とは、地面(道路、陸地、花畑、農地などを含む)、坂、床、木、草、花、建物、階段、橋、水面(川、池、湖、海などを含む)、穴、洞窟、崖、柱、壁、塀、柵などを意味する。乗り物および地形には該当しないが、雲、仮想空間内の空中に配置されたブロックも背景オブジェクトに含まれる。
図8に示す例では(図9、図10、図13-図15も同じ)、背景オブジェクト210は地面のオブジェクトであり、背景オブジェクト212は木のオブジェクトであり、背景オブジェクト214は岩のオブジェクトである。以下、この明細書においては、背景オブジェクトを説明する場合には、置物、乗り物および地形の名称のみを記載し、「オブジェクト」の語を省略することにする。
この実施例では、プレイヤは、仮想空間においてプレイヤキャラクタ202および仲間キャラクタ(204または206)を移動させるなどして、敵キャラクタ208(図10参照)を倒したり、アイテムを取得したり、アイテムを使用したり、仮想空間に設けられた仕掛けを解いたりして、仮想のゲームを進行させる。ボス(最後)の敵キャラクタ208を倒すことで、ゲームクリアとなる。
図8に示すように、プレイヤキャラクタ202と第1仲間キャラクタ204が分離した状態(以下、「分離状態」という)では、プレイヤキャラクタ202と第1仲間キャラクタ204は別々に行動する。
具体的には、分離状態では、プレイヤキャラクタ202は、アナログスティック32を傾倒した方向に移動され、第1仲間キャラクタ204は、アナログスティック52を傾倒した方向に移動される。プレイヤキャラクタ202および第1仲間キャラクタ204は、仮想空間に置かれているアイテムの位置に接近または到達すると、当該アイテムを取得する。
また、分離状態では、敵キャラクタ208が出現した場合、ZLボタン39が操作されると、プレイヤキャラクタ202は、魔法または電気ショックなどで敵キャラクタ208の動きを停止させる。また、Rボタン60が操作されると、火を吹いたり、水を吐き出したりして、敵キャラクタ208を攻撃する。ZRボタン61が操作されると、第1仲間キャラクタ204は、敵キャラクタ208に噛みついたり、敵キャラクタ208をひっかいたりして、敵キャラクタ208を攻撃する。
図9に示すゲーム画像はゲーム画面200の限定しない他の例である。図9に示すゲーム画面200は、図8に示したゲーム画面200において、プレイヤキャラクタ202および第1仲間キャラクタ204を右向きに移動させた状態を示す。
図9に示すゲーム画面200では、プレイヤキャラクタ202は、岩の背景オブジェクト214の後ろに位置し、第1仲間キャラクタ204は、木の背景オブジェクト212の後ろに位置する。プレイヤキャラクタ202は、その全身が岩の背景オブジェクト214の陰に隠れており、そのことをプレイヤに知らせるために、プレイヤキャラクタ202の全身のシルエット220が岩の背景オブジェクト214の表面(または、前面側)に表示される。第1仲間キャラクタ204は、その一部が木の背景オブジェクト212に隠れており、そのことをプレイヤに知らせるために、第1仲間キャラクタ204の一部(図9では、頭部および前足)のシルエット222が木の背景オブジェクト212の表面(または、前面側)に表示される。この実施例では、シルエット220はオレンジ色であり、シルエット222は紫色である。つまり、シルエットの色は、キャラクタによって異なる。ただし、図面では、シルエット220は黒色で塗りつぶして示してあり、シルエット222は斜線を付して示してある。シルエット220およびシルエット222の色は一例であり、互いに異なる色であれば、他の色でもよい。また、シルエット220およびシルエット222の色は、それぞれ、背景オブジェクト(210,212,214など)の色に応じて変化されてもよい。後述するシルエット224は、第2仲間キャラクタ206のシルエットであり、この実施例では、シルエット222の色と同じである。
図10に示すゲーム画像はゲーム画面200の限定しないその他の例である。図10に示すゲーム画面200は、地面の背景オブジェクト210の上に、プレイヤキャラクタ202および第1仲間キャラクタ204の他に敵キャラクタ208が配置された状態を示す。図10に示すゲーム画面200では、敵キャラクタ208が画面中央から右寄りに位置し、プレイヤキャラクタ202は敵キャラクタ208の後ろに位置し、第1仲間キャラクタ204は画面中央から左寄りに位置する。プレイヤキャラクタ202は、その全身が敵キャラクタ208の陰に隠れており、そのことをプレイヤに知らせるために、プレイヤキャラクタ202の全身のシルエット220が敵キャラクタ208の表面(または、前面側)に表示される。
なお、図9および図10に示したゲーム画面200では、プレイヤキャラクタ202が地面の上に設けられた岩の背景オブジェクト214および地面の上に配置された敵キャラクタ208の陰に隠れ、プレイヤキャラクタ202のシルエット220が表示される場合について示したが、プレイヤキャラクタ202は地面の背景オブジェクト210または水面の背景オブジェクトの陰に隠れる場合もある。たとえば、プレイヤキャラクタ202が段差の下の段に位置する場合には、仮想カメラ250から見ると、プレイヤキャラクタ202の一部または全部が上段となる地面の背景オブジェクト210の陰に隠れることがある。また、プレイヤキャラクタ202が川などの水中に位置する場合には、仮想カメラ250から見ると、プレイヤキャラクタ202の一部または全部が水面の背景オブジェクトの陰に隠れることがある。このような場合には、地面の背景オブジェクト210または水面の背景オブジェクトにシルエット220が表示される。これらのことは、第1仲間キャラクタ204および第2仲間キャラクタ206についても同様である。
ここで、シルエット220、222を表示するか否かを判定(以下、「シルエット表示判定」という)する方法と、シルエット220、222を表示する方法について説明する。図11(A)は仮想空間に配置されるプレイヤキャラクタ202およびこのプレイヤキャラクタ202に対して設定される判定用オブジェクト(説明の便宜上、「第1判定用オブジェクト」という)230の限定しない一例を示す。図11(B)は仮想空間に配置される第1仲間キャラクタ204およびこの第1仲間キャラクタ204に対して設定される判定用オブジェクト(説明の都合上、「第2判定用オブジェクト」という)232の限定しない一例を示す。
第1判定用オブジェクト230は、プレイヤキャラクタ202のシルエット220を表示するかを判定するためのオブジェクトである。図11(A)に示すように、第1判定用オブジェクト230は、縦長の直方体または角筒の形状であり、プレイヤキャラクタ202を囲うように配置される。この実施例では、第1判定用オブジェクト230は、プレイヤキャラクタ202の全体が収まる大きさに設定されている。図11(A)では、第1判定用オブジェクト230を点線で示しているが、ゲーム画面200に表示されないように設定されている。なお、第1判定用オブジェクト230は、無色透明に設定されることで、実際上、ゲーム画面200に表示されないようにすることができる。つまり、第1判定用オブジェクト230はプレイヤにとって不可視のオブジェクトである。
第1判定用オブジェクト230は、プレイヤキャラクタ202に対して設定され、プレイヤキャラクタ202の移動に応じて移動される。第1判定用オブジェクト230は、その中心の位置がプレイヤキャラクタ202の複数の関節のうち指定した1つの関節の位置に応じて決定される。ただし、関節は、プレイヤキャラクタ202を構成する複数のボーンを接続するジョイントである。また、第1判定用オブジェクト230は、プレイヤキャラクタ202の指定した1つの関節の位置に応じて決定された中心の位置であり、プレイヤキャラクタ202を完全に覆うことができるサイズ(以下、「第1の所定の大きさ」という)のボックス状のオブジェクトである。ボックスの縦横高さ方向は、プレイヤキャラクタ202の指定した1つの関節に設定されたローカル座標系の座標軸で決定されてもよいし、ワールド座標系の座標軸で決定されてもよい。この実施例では、第1判定用オブジェクト230の向きは、直方体の面のうち1つの面がプレイヤキャラクタ202の向きに対して垂直となる向きに設定される。たとえば、直方体のうちの面積が最大である2つの面のうちの一方の面がプレイヤキャラクタ202の向きに対して垂直となる向きに設定される。プレイヤキャラクタ202の向きは、プレイヤキャラクタ202が頭部(または、首)を動かしていない場合の顔の向きまたは胴体の正面の向きである。
ただし、第1判定用オブジェクト230は、プレイヤキャラクタ202の中心の位置を中心とするボックス状のオブジェクトでもよい。一例として、プレイヤキャラクタ202の中心の位置はプレイヤキャラクタ202の位置(たとえば、足元の位置)から腰の高さに移動した位置である。
また、プレイヤキャラクタ202の向き(姿勢)が変化しても、第1判定用オブジェクト230の向きは変化させなくてもよい。つまり、プレイヤキャラクタ202の移動に伴って第1判定用オブジェクト230を移動させるだけでもよい。このとき、プレイヤキャラクタ202の向きがどのように変化しても、第1判定用オブジェクト230内に収まるように、プレイヤキャラクタ202または第1判定用オブジェクト230の大きさおよび位置が設定される。
また、第2判定用オブジェクト232は、第1仲間キャラクタ204のシルエット222を表示するかを判定するためのオブジェクトである。図11(B)に示すように、第2判定用オブジェクト232は、横長の直方体または角筒の形状であり、第1仲間キャラクタ204を囲うように配置される。この実施例では、第2判定用オブジェクト232は、第1仲間キャラクタ204のほとんどが収まる大きさに設定されている。図11(B)に示すように、この実施例では、第1仲間キャラクタ204の鼻先、頭部の一部、背中の一部、尻尾部および後ろ足の一部が第2判定用オブジェクト232からはみ出している。このような大きさに第2判定用オブジェクト232を設定するのは、第1仲間キャラクタ204は、プレイヤキャラクタ202と比較して大きいため、第1仲間キャラクタ204の全身が背景オブジェクト(210、212、214など)の陰に隠れ難く、また、第1仲間キャラクタ204が移動する場合に、シルエット222が表示されたり表示さなかったりしてチカチカするのを防止するためである。図11(B)では、第2判定用オブジェクト232を点線で示しているが、ゲーム画面200に表示されないように設定されている。なお、第2判定用オブジェクト232は、無色透明に設定されることで、実際上、ゲーム画面200に表示されないようにすることができる。つまり、第2判定用オブジェクト232はプレイヤにとって不可視のオブジェクトである。
第2判定用オブジェクト232は、第1仲間キャラクタ204に対して設定され、第1仲間キャラクタ204の移動に応じて移動される。第2判定用オブジェクト232は、その中心の位置が第1仲間キャラクタ204の指定した1つの関節の位置に応じて決定された中心の位置であり、第1仲間キャラクタ204の胴体をぎりぎり覆うことができるサイズ(以下、「第2の所定の大きさ」という)のボックス状のオブジェクトである。ボックスの縦横高さ方向は、第1仲間キャラクタ204の指定した1つの関節に設定されたローカル座標系の座標軸で決定されてもよいし、ワールド座標系の座標軸で決定されてもよい。この実施例では、第2判定用オブジェクト232の向きは、直方体の面のうち1つの面が第1仲間キャラクタ204の向きに対して垂直となる向きに設定される。たとえば、直方体のうちの面積が最大である2つの面のうちの一方の面が第1仲間キャラクタ204の側面に対して垂直となる向きに設定される。第1仲間キャラクタ204の側面は、第1仲間キャラクタ204の向きに平行な向きであって、水平面に対して垂直な面である。第1仲間キャラクタ204の向きは、第1仲間キャラクタ204が頭部(または、首)を動かしていない場合の顔の向きである。
このように、判定用オブジェクトのサイズは、設定されるキャラクタの大きさに応じて適宜設定される。プレイヤキャラクタ202のような比較的小さいキャラクタについては、障害物で遮蔽され易いため、判定用オブジェクトのサイズがキャラクタに対して大きめに設定される。一方、第1仲間キャラクタ204のように比較的大きいキャラクタについては、遮蔽物で遮蔽され難いため、判定用オブジェクトのサイズがキャラクタの胴体をぎりぎり覆う大きさに設定される。つまり、不要に判定用オブジェクトのサイズを大きくしないようにしてある。
ただし、第1仲間キャラクタ204の向き(姿勢)が変化しても、第2判定用オブジェクト232の向きは変化させなくてもよい。つまり、第1仲間キャラクタ204の移動に伴って第2判定用オブジェクト232を移動させるだけでもよい。このとき、第1仲間キャラクタ204の向きがどのように変化しても、第2判定用オブジェクト232内に収まるように、第1仲間キャラクタ204または第2判定用オブジェクト232の大きさおよび位置が設定される。
第1判定用オブジェクト230および第2判定用オブジェクト232は、それぞれ、複数の判定点を有する。この実施例では、複数の判定点は、直方体の頂点の位置に設定される。説明の便宜上、第1判定用オブジェクト230に設定される判定点を第1判定点230aといい、第2判定用オブジェクト232に設定される判定点を第2判定点232aという。上述したように、第1判定用オブジェクト230は、その中心の位置がプレイヤキャラクタ202の指定した1つの関節に位置に応じて決定され、所定の第1の大きさを有するボックス状のオブジェクトであるため、複数の第1判定点230aは第1判定用オブジェクト230の8個の角(すなわち、頂点)の位置に設定される。したがって、複数の第1判定点230aは、プレイヤキャラクタ202の移動に応じて移動される。同様に、第2判定用オブジェクト232は、その中心の位置が第1仲間キャラクタ204の指定した1つの関節に位置に応じて決定され、所定の第2の大きさを有するボックス状のオブジェクトであるため、複数の第2判定点232aは第1判定用オブジェクト230の8個の角(すなわち、頂点)の位置に設定される。したがって、複数の第2判定点232aは、第1仲間キャラクタ204の移動に応じて移動される。
上述したように、第1判定用オブジェクト230はプレイヤキャラクタ202を囲うように配置されるが、このことは、複数の第1判定点230aのうち、直方体である第1判定用オブジェクト230の中心を基準として点対称の位置にある2つの頂点の位置に設定される2つの第1判定点230aの間にプレイヤキャラクタ202が存在する位置関係を意味する。同様に、第2判定用オブジェクト232は第1仲間キャラクタ204を囲うように配置されるが、このことは、複数の第2判定点232aのうち、直方体である第2判定用オブジェクト232の中心を基準として点対称の位置にある2つの頂点の位置に設定される2つの第2判定点232aの間に第1仲間キャラクタ204が存在する位置関係を意味する。
各第1判定点230aは第1判定用オブジェクト230の内部に設けられてもよいし、各第2判定点232aは第2判定用オブジェクト232の内部に設けられてもよい。この場合、各第1判定点230aの一部または全部はプレイヤキャラクタ202と重なる位置に設定されてもよい。同様に、各第2判定点232aの一部または全部は第1仲間キャラクタ204と重なる位置に設定されてもよい。
また、第1判定用オブジェクト230および第2判定用オブジェクト232は、直方体の形状にしてあるが、直方体に代えて、多面体、球、楕円球または円筒のようなプレイヤキャラクタ202よりも簡易な形状であってもよい。第1判定用オブジェクト230および第2判定用オブジェクト232を他の簡易な形状にした場合には、複数の表面位置の各々に第1判定点230aまたは第2判定点232aが適宜配置される。または、各第1判定点230aおよび各第2判定点232aは、簡易な形状の内部に設けられてもよい。この場合にも、各第1判定点230aの一部または全部はプレイヤキャラクタ202と重なる位置に設定されてもよい。同様に、各第2判定点232aの一部または全部は第1仲間キャラクタ204と重なる位置に設定されてもよい。
図12は仮想空間を仮想カメラ250の後方の斜め上方から見た場合の限定しない一例を示す図である。図12を用いて、プレイヤキャラクタ202のシルエット表示判定について説明する。プレイヤキャラクタ202のシルエット220を表示するかを判定する場合には、仮想カメラ250の位置と各第1判定点230aを結ぶ各線分(以下、「第1線分」という)のオブジェクト230bの各々が1または複数のオブジェクト(以下、「第1オブジェクト」という)に衝突する(または、当たる)かどうかが判定(衝突判定)される。ただし、プレイヤキャラクタ202は第1オブジェクトには含まれない。図12からも分かるように、この実施例では、第1判定点230aは8個であり、線分のオブジェクト230bは8本である。ただし、線分のオブジェクト230bはプレイヤにとって不可視(つまり、無色透明)のオブジェクトであり、ゲーム画面200に表示されることもない。
なお、図12では、8個の第1判定点230aのみを示し、第1判定用オブジェクト230の形状については省略してある。
衝突判定では、仮想カメラ250の位置から各第1判定点230aに線分のオブジェクト230bを延ばした場合に、1または複数の第1オブジェクトに衝突するかどうかが判断される。この実施例では、第1オブジェクトは、上述した背景オブジェクト(210、212、214など)および敵キャラクタ208である。図9および図10に示したゲーム画面200の例では、プレイヤキャラクタ202が1つの第1オブジェクトの陰に隠れている場合について示したが、複数の第1オブジェクトの陰に隠れる場合もある。
この実施例では、衝突判定では、各第1線分のオブジェクト230bを、仮想カメラ250に対応する位置の一例である仮想カメラ250の位置から延ばすようにしてあるが、これに限定される必要はない。第1線分のオブジェクト230bは、仮想カメラ250の位置から撮影方向または/および撮影方向と垂直な方向に少しずらした位置から延ばすようにしてもよい。また、第1線分のオブジェクト230bは、仮想カメラ250の位置を通り、かつ、仮想カメラ250の撮影方向に直交する平面上の位置であって、各第1判定点230aとの距離が最短となる位置から延ばすようにしてもよい。つまり、各第1判定点230aと、仮想カメラ250の向きに対して垂直な平面とが垂直に交わるように結んだ線分を用いた衝突判定を行うようにしてもよい。
また、第1線分のオブジェクト230bが何かに当たってもすり抜けるように設定されている場合には、第1判定点230aに衝突する前にその他の第1オブジェクトと当たったかどうかを判定するようにしてもよい。
さらに、この実施例では、各第1線分のオブジェクト230bを、仮想カメラ250の位置から延ばすようにしてあるが、各第1判定点230aに向けて、点または球体のオブジェクト(「移動オブジェクト」という)を移動させて、移動オブジェクトが1または複数の第1オブジェクトに衝突する数または当たらない数に基づいて、プレイヤキャラクタ202のシルエット220を表示することが判定されてもよい。
衝突判定の結果に基づいて、プレイヤキャラクタ202のシルエット220を表示するかが判定される。この実施例では、8本の線分のオブジェクト230bのうち、2本以上の線分のオブジェクト230bが1または複数の第1オブジェクトに衝突することが判定された場合に、つまり、衝突本数が2以上である場合に、仮想カメラ250から見て、プレイヤキャラクタ202の少なくとも一部がその1または複数の第1オブジェクトの陰に或る程度隠れていると判断され、プレイヤキャラクタ202のシルエット220を表示することが判定される。第1線分のオブジェクト230bが1または複数の第1オブジェクトに衝突する数に基づいてシルエット表示判定を行うので、判定が簡単である。
プレイヤキャラクタ202が第1オブジェクトの陰に隠れているかどうかだけの判断であれば、従来行われている手法でも問題無いところ、本願は或る程度隠れているときにシルエットを表示する仮想のゲームにおいて、その或る程度隠れているかの判断をより簡単にできることが特徴である。
ただし、プレイヤキャラクタ202が第1オブジェクトの陰に隠れているかどうかは推測しているに過ぎないため、シルエットを表示することが判定されても、実際は隠れておらずシルエットが表示されないこともある。
この実施例では、衝突本数が2以上である場合に、プレイヤキャラクタ202のシルエット220を表示することが判定されるが、衝突本数は3以上でもよい。
ただし、線分のオブジェクト230bが1または複数の第1オブジェクトに衝突する本数に代えて、線分のオブジェクト230bが1または複数の第1オブジェクトに当たらない本数に基づいて、プレイヤキャラクタ202のシルエット220を表示することが判定されてもよい。また、仮想カメラ250から見て、第1判定点230aが1または複数の第1オブジェクトで隠れている個数に基づいて、プレイヤキャラクタ202のシルエット220を表示することが判定されてもよい。
一方、8本の線分のオブジェクト230bのうち、1本の線分のオブジェクト230bがいずれかの第1オブジェクトに衝突すること、または、すべての線分のオブジェクト230bがいずれの第1オブジェクトにも当たらないことが判定された場合に、すなわち、衝突本数が1以下である場合に、仮想カメラ250から見て、プレイヤキャラクタ202はいずれの第1オブジェクトの陰にも隠れていないと判断され、プレイヤキャラクタ202のシルエット220を表示することは判定されない。
この実施例では、プレイヤキャラクタ202が収まる大きさの第1判定用オブジェクト230が設定され、この第1判定用オブジェクト230の8個の頂点の各々に対して第1判定点230aが設定される。2本以上の第1線分のオブジェクト230bが1または複数の第1オブジェクトに衝突する場合に、シルエット220を表示することを判定するのは、仮想カメラ250から見て、プレイヤキャラクタ202が或る程度以上、1または複数の第1オブジェクトの陰に隠れていることがシミュレーション等によって検証されているためである。
したがって、第1判定用オブジェクト230の大きさ、および、第1判定点230aの個数が実施例と異なる場合には、シルエット220を表示することを判定するための衝突本数は適宜変化される。たとえば、すべての第1判定点230aが第1判定用オブジェクト230の内部に配置されるように設定される場合には、いずれか1本以上の第1線分のオブジェクト230bが第1オブジェクトに衝突する場合に、つまり、衝突本数が1以上である場合に、プレイヤキャラクタ202のシルエット220を表示することが判定されるようにしてもよい。
図示および詳細な説明は省略するが、この実施例では、第1仲間キャラクタ204のシルエット222を表示するかを判定するシルエット表示判定の方法は、プレイヤキャラクタ202のシルエット220を表示するかを判定するシルエット表示判定の方法と同じである。簡単に説明すると、仮想カメラ250の位置と各第2判定点232aを結ぶ各線分のオブジェクト232bが1または複数の第1オブジェクトに衝突するかどうかを判定する。そして、衝突本数が2以上である場合に、第1仲間キャラクタ204のシルエット222を表示することが判定される。一方、衝突本数が1以下である場合に、第1仲間キャラクタ204のシルエット222を表示することは判定されない。
図13に示すゲーム画像はゲーム画面200のその他の限定しない例である。図13では、プレイヤキャラクタ202は、動物を模した第2仲間キャラクタ206を抱っこしている。上述したように、第2仲間キャラクタ206は、第1仲間キャラクタ204が変形したキャラクタである。第2仲間キャラクタ206もまた、プレイヤキャラクタ202の仲間のキャラクタである。第2仲間キャラクタ206は、プレイヤキャラクタ202とともに移動し、アナログスティック52が傾倒された方向に伸びて(図15参照)、さらに、ZRボタン61が操作されることで、敵キャラクタ208を攻撃したり、アイテムを取得したりする。第2仲間キャラクタ206は、敵キャラクタ208に噛みついたり、敵キャラクタ208をひっかいたりして、敵キャラクタ208を攻撃する。
ただし、第2仲間キャラクタ206は、プレイヤキャラクタ202に抱っこされた位置からアナログスティック52が傾倒された方向に、胴体を所定の長さだけ伸ばす。つまり、第2仲間キャラクタ206は、プレイヤキャラクタ202の位置を基準にアナログスティック52が傾倒された方向に伸長する。第2仲間キャラクタ206は、胴体に変えて、首または前足が所定の長さだけ伸びるようにしてもよい。また、アナログスティック52の傾倒操作を止めると、つまり、アナログスティック52を傾倒していない状態に戻すと、第2仲間キャラクタ206の胴体は元の長さに戻り、第2仲間キャラクタ206はプレイヤキャラクタ202に抱っこされた状態となる。
このように、プレイヤキャラクタ202が第2仲間キャラクタ206と合体または一体化された状態では、一方のアナログスティック32の傾倒操作によってプレイヤキャラクタ202および第2仲間キャラクタ206が一緒に移動され、他方のアナログスティック52の傾倒操作によって第2仲間キャラクタ206がプレイヤキャラクタ202の位置を基準として伸長され、アナログスティック52の傾倒操作を止めると、第2仲間キャラクタ206は元の状態に戻る。
また、第2仲間キャラクタ206が胴体を伸ばしていない状態でZRボタン61が操作されると、第2仲間キャラクタ206は、プレイヤキャラクタ202の向きに居る敵キャラクタ208を攻撃したり、プレイヤキャラクタ202の向きに在るアイテムを取得したりする。
この実施例では、プレイヤは、プレイヤキャラクタ202と仲間キャラクタ(204、206)を操作する状態(以下、「操作状態」という)として、プレイヤキャラクタ202と第1仲間キャラクタ204を、それぞれ、個別に移動させる分離状態または第1仲間キャラクタ204を変形させた第2仲間キャラクタ206をプレイヤキャラクタ202と合体または一体化させて一緒に移動させる状態(以下、「合体状態」という)を選択して、仮想のゲームをプレイすることができる。
図13に示すように、合体状態では、プレイヤキャラクタ202は、第2仲間キャラクタ206と重なったり、接触したりする。また、合体状態では、第2仲間キャラクタ206が伸長した場合には、プレイヤキャラクタ202は第2仲間キャラクタ206の足を抱き抱えている。ただし、合体状態では、第2仲間キャラクタ206は、プレイヤキャラクタ202の首、腕または足に巻き付いたり、プレイヤキャラクタ202の背中または肩に乗ったりしてもよい。また、合体状態では、第2仲間キャラクタ206の一部がプレイヤキャラクタ202にめり込んで一体化してもよい。さらに、合体状態では、第2仲間キャラクタ206が武器または防具となってプレイヤキャラクタ202の手に装備されてもよい。
一例として、仮想のゲームの開始時には、合体状態のプレイヤキャラクタ202および第2仲間キャラクタ206を含むゲーム画面200がディスプレイ12に表示される。合体状態においてRボタン60が操作されると、操作状態が合体状態から分離状態に変化される。つまり、第2仲間キャラクタ206がプレイヤキャラクタ202から分離され、第2仲間キャラクタ206が第1仲間キャラクタ204に変形される。また、分離状態においてLボタン38が操作されると、操作状態が分離状態から合体状態に変化される。ただし、プレイヤキャラクタ202または第1仲間キャラクタ204が、特定のアイテムを取得したり、特定のアイテムを使用したり、特定の地点に到達したりすることを条件として、または、特定のイベントの発生中であることを条件として、操作状態が分離状態から合体状態に変化されるようにすることもできる。つまり、第1仲間キャラクタ204が第2仲間キャラクタ206に変形されて、変形された第2仲間キャラクタ206がプレイヤキャラクタ202に合体(この実施例では、抱っこ)される。合体状態においても、プレイヤキャラクタ202は、仮想空間に置かれているアイテムの位置に接近または到達すると、当該アイテムを取得する。また、合体状態においても、敵キャラクタ208が出現した場合、ZLボタン39が操作されると、プレイヤキャラクタ202は、魔法または電気ショックなどで敵キャラクタ208の動きを停止させる。
この実施例では、合体状態では、プレイヤキャラクタ202のシルエット220を表示するかを判定するシルエット表示判定の判定結果に応じて、プレイヤキャラクタ202のシルエット220と第2仲間キャラクタ206のシルエット224を表示するかが判定される。ただし、プレイヤキャラクタ202のシルエット220を表示するかを判定するシルエット表示判定の判定結果に応じて、プレイヤキャラクタ202のシルエット220を表示するかが判定され、この判定結果に従って第2仲間キャラクタ206のシルエット224を表示するかが判定されるようにしてもよい。したがって、合体状態においても、プレイヤキャラクタ202の第1判定用オブジェクト230が用いられるだけであり、第2仲間キャラクタ206の判定用オブジェクトは用いられない、あるいは存在しない。つまり、分離状態におけるプレイヤキャラクタ202のシルエット表示判定の複数の第1判定点230aと、合体状態におけるプレイヤキャラクタ202および第2仲間キャラクタ206のシルエット表示判定の複数の判定点(「第3判定点」に相当する)は同じである。
このように、合体状態では、一組の判定点を用いて、プレイヤキャラクタ202および第2仲間キャラクタ206について一度にシルエット表示判定を行うことができる。また、合体状態においては、分離状態における複数の第1判定点230aを用いて、プレイヤキャラクタ202および第2仲間キャラクタ206について一度にシルエット表示判定を行うことができる。つまり、処理が複雑化することを抑制することができる。
図13に示すゲーム画像はゲーム画面200の限定しない他の例である。また、図14に示すゲーム画像はゲーム画面200の限定しないその他の例である。図15に示すゲーム画像はゲーム画面200の限定しないさらに他の例である。
図13に示すように、プレイヤキャラクタ202および第2仲間キャラクタ206は、岩の背景オブジェクト214の右側に位置しており、岩の背景オブジェクト214の陰に隠れていない。
図14に示すゲーム画面200では、図13に示すゲーム画面200において、プレイヤキャラクタ202および第2仲間キャラクタ206が左に移動し、プレイヤキャラクタ202および第2仲間キャラクタ206が岩の背景オブジェクト214の後ろに位置する。つまり、仮想カメラ250から見て、プレイヤキャラクタ202および第2仲間キャラクタ206が岩の背景オブジェクト214の陰に隠れており、そのことをプレイヤに知らせるために、プレイヤキャラクタ202の全身のシルエット220および第2仲間キャラクタ206の全身のシルエット224が岩の背景オブジェクト214の表面(または、前面側)に表示される。つまり、プレイヤキャラクタ202のシルエット220を表示することが判定され、この判定結果に従って第2仲間キャラクタ206のシルエット224を表示することも判定され、実際に仮想カメラ250から見て、プレイヤキャラクタ202および第2仲間キャラクタ206は岩の背景オブジェクト214の陰に隠れているため、シルエット220およびシルエット224が表示されている。
上述したように、シルエット220はオレンジ色であり、シルエット224は紫色である。つまり、シルエット220の色とシルエット224の色は異なる。分離状態では、シルエットの色が異なる2体のキャラクタ(202、204)について、それぞれ衝突判定を行うことでシルエット表示の要否を判定していたところ、合体状態では、プレイヤキャラクタ202の衝突判定に、シルエットの色が異なる第2仲間キャラクタ206のシルエット表示の要否を判定することが含まれる。
また、合体状態では、2体のキャラクタ(202、206)が重なる場合、手前側にある方のシルエットを優先的に表示する。したがって、図13および図14に示すように、第2仲間キャラクタ206のうち、プレイヤキャラクタ202によって隠れる部分については、プレイヤキャラクタ202のシルエット220が優先的に表示されるが、第2仲間キャラクタ206のうち、プレイヤキャラクタ202によって隠れていない部分とプレイヤキャラクタ202よりも手前側である部分については、第2仲間キャラクタ206のシルエット224が優先的に表示される。
図15に示すゲーム画面200は、図13および図14に示したゲーム画面200とは異なる場面を示す。図15に示すゲーム画面200では、画面の右下に木の背景オブジェクト212が示され、画面の中央にプレイヤキャラクタ202が位置し、プレイヤキャラクタ202の位置から胴体を伸ばした第2仲間キャラクタ206の一部が木の背景オブジェクト212の後ろに位置する。仮想カメラ250から見て、第2仲間キャラクタ206の一部が木の背景オブジェクト212の陰に隠れているが、プレイヤキャラクタ202は背景オブジェクトの陰に隠れていない。
上述したように、第2仲間キャラクタ206の判定用オブジェクトは用いられない、あるいは存在しないため、プレイヤキャラクタ202のシルエット220を表示するかが判定され、この判定結果に従って第2仲間キャラクタ206のシルエット224を表示することが判定される。図15のゲーム画面200では、プレイヤキャラクタ202は第1オブジェクトの陰に隠れておらず、プレイヤキャラクタ202のシルエット220を表示することは判定されないため、第2仲間キャラクタ206のシルエット224を表示することも判定されない。
図15では、第2仲間キャラクタ206の一部が木の背景オブジェクト212の陰に隠れていることを示すために、隠れている部分を点線で示してある。実際のゲーム画面200では、点線は表示されず、第2仲間キャラクタ206のうちの木の背景オブジェクト212に隠れていない胴体の一部、尻部、尻尾部および後足が表示される。
また、図15では第2仲間キャラクタ206がプレイヤキャラクタ202の位置から伸びた状態を示してあるが、図13に示したように、第2仲間キャラクタ206がプレイヤキャラクタ202に抱っこされた状態において、第2仲間キャラクタ206のみが第1オブジェクトの陰に隠れている場合にも、図15に示した場合と同様に、第2仲間キャラクタ206のシルエット224が表示されることはない。
ただし、分離状態と同様に、第2仲間キャラクタ206についても判定用オブジェクトを設定し、プレイヤキャラクタ202と第2仲間キャラクタ206のそれぞれについてシルエット表示判定を行なうようにしてもよい。この場合、図15に示したゲーム画面200において、木の背景オブジェクト212の陰に隠れている部分について、第2仲間キャラクタ206のシルエット224を表示することができる。
詳細な説明は省略するが、分離状態および合体状態のいずれの場合にも、右方向ボタン33、下方向ボタン34、上方向ボタン35または左方向ボタン36が操作されると、操作されたボタン33-36に応じたアイテムが使用される。アイテムが使用されると、アイテムに応じた効果が発動される。一例として、プレイヤキャラクタ202の体力値の一部または全部が回復されたり、第1仲間キャラクタ204または第2仲間キャラクタ206の体力値の一部または全部が回復されたり、第1仲間キャラクタ204または第2仲間キャラクタ206の攻撃力または攻撃回数が一時的に上昇されたり、プレイヤキャラクタ202、第1仲間キャラクタ204または第2仲間キャラクタ206の防御力が一時的に上昇されたりする。
シルエット220、222、224を表示する方法としては、公知の方法を採用することができる。この実施例では、Zバッファを用いて、キャラクタと障害物(たとえば、木などの背景オブジェクト)との前後関係をZテストにより判定し、障害物よりも後に位置していると判断されたキャラクタの部分を、障害物に上書きするように描画する。また、他の公知の方法を採用することもできる。他の公知の方法の例として、2つの方法を概説する。
第1の方法は、Zバッファを用いた方法であり、たとえば特開2003-290550号に開示されている。プレイヤキャラクタ202が1または複数の第1オブジェクトの陰に隠れた状態では、プレイヤキャラクタ202のシルエット220についてのテクスチャのデータが読み出され、Zバッファに描画されている1または複数の第1オブジェクトの各ピクセルのZ値を無視して、つまり、当該ピクセルのZ値を更新することなく、プレイヤキャラクタ202の形状に相当するフレームバッファの各ピクセルにシルエット220のテクスチャを描画する。このように、各ピクセルのZ値を無視する(更新しない)ことによって、1または複数の第1オブジェクトの画像とシルエット220の画像が一体の画像となり、その後のZテストによって、仮想カメラ250から見て、プレイヤキャラクタ202が1または複数の第1オブジェクトよりも手前側に配置される場合には画像が上書きされ、逆の場合には上書きされないという処理になる。つまり、プレイヤキャラクタ202が1または複数の第1オブジェクトの陰に隠れているときは、プレイヤキャラクタ202の本来のテクスチャが重ね描きされないので、シルエット220の画像が残る。一方、プレイヤキャラクタ202が1または複数の第1オブジェクトの手前側に配置されるときには、プレイヤキャラクタ202の本来のテクスチャが重ね描きされることになる。このようにすることで、プレイヤキャラクタ202の一部が1または複数の第1オブジェクトの陰に隠れていない場合には、1または複数の第1オブジェクトに隠れていない部分については、プレイヤキャラクタ202の本来のテクスチャで表示され、1または複数の第1オブジェクトに隠れた残りの部分のシルエット220が表示されることになる。
第2の方法は、ステンシルバッファを用いた方法である。一例として、まず、1または複数の第1オブジェクトの描画領域のステンシルバッファに「1」が書き込まれる。次に、プレイヤキャラクタ202の描画領域のうち、ステンシルバッファに「1」が書き込まれている領域に「2」が書き込まれる。そして、「2」が書き込まれた領域のうち、プレイヤキャラクタ202が1または複数の第1オブジェクトの陰に隠れていない領域のステンシルバッファに「3」が書き込まれる。最後に、「2」が書き込まれた領域をシルエット色(たとえば黒)で塗りつぶすことで、1または複数の第1オブジェクトの陰に隠れたプレイヤキャラクタ202の全部または一部のシルエット220が表示される。
このように、公知の方法では、プレイヤキャラクタ202と、1または複数の第1オブジェクトの前後関係を判定して、プレイヤキャラクタ202のうち1または複数の第1オブジェクトの後ろ側(奥側)であることが判定された部分に対応するシルエット220が表示される。一方で、この実施例では、シルエット220を表示するかの判定においては、第1線分のオブジェクト230bが1または複数の第1オブジェクトに衝突するかどうかの衝突判定を用いている。このように、シルエット220を表示するかの判定と、表示されるシルエット220の形状自体の決定をそれぞれ適切な手段で行うことができる。具体的には、この実施例では、シルエット表示するかの判定にはプレイヤキャラクタ202と第1オブジェクトの前後関係の判定は用いず、表示されるシルエットの220の形状の決定には第1線分のオブジェクト230bと第1オブジェクトの衝突判定を用いない。
上述の第1の方法および第2の方法の説明では、プレイヤキャラクタ202のシルエット220を表示する場合について説明したが、第1仲間キャラクタ204および第2仲間キャラクタ206のシルエット222および224を表示する場合についても同様である。
図16は図6に示したDRAM85のメモリマップ850の限定しない一例を示す図である。図16に示すように、DRAM85は、プログラム記憶領域852およびデータ記憶領域854を含む。プログラム記憶領域852には、ゲームアプリケーションのプログラム(つまり、ゲームプログラム)が記憶される。図16に示すように、ゲームプログラムは、メイン処理プログラム852a、画像生成プログラム852b、操作検出プログラム852c、ゲーム制御プログラム852d、シルエット表示判定プログラム852eおよび画像表示プログラム852fなどを含む。ただし、ゲーム画像などの画像を表示する機能は本体装置2が備える機能である。したがって、画像表示プログラム852fは、ゲームプログラムに含まれない。
詳細な説明は省略するが、各プログラム852a-852fは、本体装置2に電源が投入された後の適宜のタイミングで、フラッシュメモリ84および/またはスロット23に装着された記憶媒体からその一部または全部が読み込まれてDRAM85に記憶される。ただし、各プログラム852a-852fの一部または全部は、本体装置2と通信可能な他のコンピュータから取得するようにしてもよい。
メイン処理プログラム852aは、この実施例の仮想のゲームの全体的な処理(以下、「全体処理」という)を実行するためのプログラムである。
画像生成プログラム852bは、後述する画像生成データ854bを用いて、ゲーム画像などの各種の表示用画像に対応する表示用画像データを生成するためのプログラムである。ゲーム画像には、プレイヤキャラクタ202、仲間キャラクタ(204または206)、第1オブジェクトおよび判定用オブジェクト(230および232)などが含まれ、さらに、敵キャラクタ208およびシルエット220、222、224が含まれる場合もある。ただし、第1判定用オブジェクト230および第2判定用オブジェクト232はいずれも無色透明のオブジェクトであり、第2仲間キャラクタ206がゲーム画像に含まれる場合には、第2判定用オブジェクト232はゲーム画像に含まれない。
操作検出プログラム852cは、左コントローラ3または/および右コントローラ4からの操作データ854aを取得するためのプログラムである。また、1または複数の他のコントローラが用いられる場合には、操作検出プログラム852cは、1または複数の他のコントローラからの操作データ854aも取得する。
ゲーム制御プログラム852dは、仮想のゲームについてのゲーム制御処理を実行するためのプログラムである。ゲーム制御処理には、プレイヤの操作に従ってプレイヤキャラクタ202に任意の動作を実行させたり、プレイヤの操作に関係無くノンプレイヤキャラクタに任意の動作を実行させたりする処理が含まれる。ただし、ゲーム制御処理では、プレイヤの操作に関係なく、仮想のゲームの進行に従ってプレイヤキャラクタ202の位置および向きを変更する場合もある。
シルエット表示判定プログラム852eは、仮想カメラ250の位置と各第1判定点230aを結ぶ第1線分のオブジェクト230bが1または複数の第1オブジェクトに衝突するかどうかを判定するとともに、仮想カメラ250の位置と各第2判定点232aを結ぶ第2線分のオブジェクト232bが1または複数の第1オブジェクトに衝突するかどうかを判定し、それぞれの衝突判定の判定結果に基づいて、プレイヤキャラクタ202のシルエット220および第1仲間キャラクタ204のシルエット222の各々について表示するかどうかを判定するためのプログラムである。
画像表示プログラム852fは、画像生成プログラム852bに従って生成した表示用画像データを表示装置に出力するためのプログラムである。したがって、表示用画像データに対応する表示用画像(ゲーム画面200など)がディスプレイ12などの表示装置に表示される。
なお、プログラム記憶領域852には、BGM等の音を出力するための音出力プログラム、他の機器と通信するための通信プログラム、データをフラッシュメモリ84などの不揮発性の記憶媒体に記憶するためのバックアッププログラムなども記憶される。
また、データ記憶領域854には、操作データ854a、画像生成データ854b、プレイヤキャラクタデータ854c、仲間キャラクタデータ854d、仮想カメラデータ854e、第1判定用オブジェクトデータ854f、第2判定用オブジェクトデータ854g、第1判定点データ854hおよび第2判定点データ854iなどが記憶される。また、データ記憶領域854には、合体フラグ854j、第1シルエット判定フラグ854k、第2シルエット判定フラグ854mおよび第3シルエット判定フラグ854nが設けられる。
操作データ854aは、左コントローラ3または/および右コントローラ4から受信される操作データである。この実施例においては、本体装置2が左コントローラ3および右コントローラ4の両方から操作データを受信する場合には、本体装置2は、左コントローラ3および右コントローラ4のそれぞれを識別可能にして操作データ854aを記憶する。また、1または複数の他のコントローラが用いられる場合には、本体装置2は、1または他のコントローラを識別可能にして操作データ854aを記憶する。
画像生成データ854bは、ポリゴンデータおよびテクスチャデータなど、表示用画像データを生成するために必要なデータである。
プレイヤキャラクタデータ854cは、プレイヤキャラクタ202の現在位置データ、向きデータおよびアイテムデータを含む。現在位置データは、仮想空間における、プレイヤキャラクタ202の現在の位置すなわち3次元座標のデータである。向きデータは、仮想空間における、プレイヤキャラクタ202の現在の向きのデータである。アイテムデータは、プレイヤキャラクタ202が所持するアイテムの種類および個数のデータである。
仲間キャラクタデータ854dは、第1仲間キャラクタ204または第2仲間キャラクタ206の現在位置データ、向きデータおよび伸長フラグを含む。現在位置データは、仮想空間における、第1仲間キャラクタ204または第2仲間キャラクタ206の現在の位置すなわち3次元座標のデータである。向きデータは、仮想空間における、第1仲間キャラクタ204または第2仲間キャラクタ206の現在の向きのデータである。伸長フラグは、第2仲間キャラクタ206が伸長しているかどうかを示すフラグである。第2仲間キャラクタ206が伸長されている場合に、伸長フラグはオンされ、第2仲間キャラクタ206が伸長されていない場合に、伸長フラグはオフされる。
仮想カメラデータ854eは、仮想カメラ250の現在位置データおよび向きデータを含む。現在位置データは、仮想空間における、仮想カメラ250の現在の位置すなわち3次元座標のデータである。向きデータは、仮想空間における、仮想カメラ250の現在の向きのデータである。
第1判定用オブジェクトデータ854fは、プレイヤキャラクタ202に設定される第1判定用オブジェクト230の中心位置データおよびサイズデータを含む。中心位置データは、仮想空間におけるプレイヤキャラクタ202の指定した1つの関節の位置に基づいて決定される、直方体の第1判定用オブジェクト230の中心の位置すなわち3次元座標データである。サイズデータは、直方体の第1判定用オブジェクト230のサイズすなわち縦横高さについてのデータである。
第2判定用オブジェクトデータ854gは、第1仲間キャラクタ204に設定される第2判定用オブジェクト232の中心位置データおよびサイズデータを含む。中心位置データは、仮想空間における第1仲間キャラクタ204の指定した1つの関節の位置に基づいて決定される、直方体の第2判定用オブジェクト232の中心の位置すなわち3次元座標データである。サイズデータは、直方体の第2判定用オブジェクト232のサイズすなわち縦横高さについてのデータである。
なお、第2判定用オブジェクトデータ854gは、第1仲間キャラクタ204が仮想空間に配置されていない場合には、データ記憶領域854に記憶されない。
第1判定点データ854hは、複数の第1判定点230aの各々についての位置データすなわち3次元座標のデータである。この実施例では、第1判定点データ854hは、第1判定用オブジェクトデータ854fに基づいて決定される直方体の第1判定用オブジェクト230の頂点位置のデータである。
第2判定点データ854iは、複数の第2判定点232aの各々についての位置データすなわち3次元座標のデータである。この実施例では、第2判定点データ854iは、第2判定用オブジェクトデータ854gに基づいて決定される直方体の第2判定用オブジェクト232の頂点位置のデータである。
合体フラグ854jは、プレイヤキャラクタ202と仲間キャラクタが合体状態であるかどうかを示すフラグである。プレイヤキャラクタ202と仲間キャラクタ(この実施例では、第2仲間キャラクタ206)が合体状態である場合には、合体フラグ854jはオンされる。一方、プレイヤキャラクタ202と仲間キャラクタ(この実施例では、第1仲間キャラクタ204)が分離状態である場合には、合体フラグ854jはオフされる。
第1シルエット判定フラグ854kは、プレイヤキャラクタ202のシルエット220を表示するかどうかを示すフラグである。プレイヤキャラクタ202のシルエット220を表示することが判定された場合には、第1シルエット判定フラグ854kはオンされる。一方、プレイヤキャラクタ202のシルエット220を表示しないことが判定された場合には、第1シルエット判定フラグ854kはオフされる。
第2シルエット判定フラグ854mは、第1仲間キャラクタ204のシルエット222を表示するかどうかを示すフラグである。第1仲間キャラクタ204のシルエット222を表示することが判定された場合には、第2シルエット判定フラグ854mはオンされる。一方、第1仲間キャラクタ204のシルエット222を表示しないことが判定された場合には、第2シルエット判定フラグ854mはオフされる。ただし、合体状態においては、第1仲間キャラクタ204が仮想空間に配置されておらず、第1仲間キャラクタ204のシルエット表示判定は行われないため、第2シルエット判定フラグ854mはオフである。
第3シルエット判定フラグ854nは、プレイヤキャラクタ202のシルエット220および第2仲間キャラクタ206のシルエット224を表示するかどうかを示すフラグである。プレイヤキャラクタ202のシルエット220および第2仲間キャラクタ206のシルエット224を表示することが判定された場合には、第3シルエット判定フラグ854nはオンされる。一方、プレイヤキャラクタ202のシルエット220および第2仲間キャラクタ206のシルエット224を表示しないことが判定された場合には、第3シルエット判定フラグ854nはオフされる。ただし、分離状態においては、第2仲間キャラクタ206は仮想空間に配置されていないため、第3シルエット判定フラグ854nはオフである。
図示は省略するが、データ記憶領域854には、仮想空間に配置されているノンプレイヤキャラクタおよび背景オブジェクトについてのデータなどの他のデータが記憶されたり、他のフラグおよびタイマ(またはカウンタ)が設けられたりする。
図17は、本体装置2のプロセッサ81(またはコンピュータ)のゲームプログラムの処理(全体処理)の限定しない一例を示すフロー図である。図18-図21は、本体装置2のプロセッサ81のゲーム制御処理の限定しない一例を示すフロー図である。図22および図23は、本体装置2のプロセッサ81のシルエット表示判定処理の限定しない一例を示すフロー図である。以下、図17-図23を用いて、全体処理、ゲーム制御処理およびシルエット表示判定処理について説明する。
ただし、図17-図22に示すフロー図の各ステップの処理は、単なる一例に過ぎず、同様の結果が得られるのであれば、各ステップの処理順序を入れ替えてもよい。また、この実施例では、基本的には、図17-図23に示すフロー図の各ステップの処理をプロセッサ81が実行するものとして説明するが、プロセッサ81以外のプロセッサや専用回路が一部のステップを実行するようにしてもよい。
本体装置2の電源が投入されると、全体処理の実行に先だって、プロセッサ81は、図示しないブートROMに記憶されている起動プログラムを実行し、これによってDRAM85等の各ユニットが初期化される。本体装置2は、プレイヤによって、この実施例のゲームプログラムの実行が指示されると、全体処理を開始する。
図17に示すように、プロセッサ81は、全体処理を開始すると、ステップS1で、初期設定を実行する。ここでは、プロセッサ81は、仮想空間において、プレイヤキャラクタ202、仲間キャラクタ(この実施例では、第2仲間キャラクタ206)、ノンプレイヤキャラクタ、背景オブジェクト(210、212、214など)および仮想カメラ250を配置する位置および向きを初期位置および初期の向きに決定する。ただし、前回の続きから仮想のゲームを開始する場合には、プレイヤキャラクタ202、仲間キャラクタ(第1仲間キャラクタ204または第2仲間キャラクタ206)、ノンプレイヤキャラクタ、背景オブジェクト(210、212、214など)および仮想カメラ250を配置する位置および向きをセーブされた時点における位置および向きに決定する。したがって、プレイヤキャラクタ202の初期位置またはセーブされた時点における位置データおよび向きデータが現在位置データおよび向きデータとして設定されたプレイヤキャラクタデータ854cがデータ記憶領域854に記憶される。また、仲間キャラクタ(第1仲間キャラクタ204または第2仲間キャラクタ206)の初期位置またはセーブされた時点における位置データおよび向きデータが現在位置データおよび向きデータとして設定された仲間キャラクタデータ854dがデータ記憶領域854に記憶される。さらに、仮想カメラ250の初期位置またはセーブされた時点における位置データおよび向きデータが現在位置データおよび向きデータとして設定された仮想カメラデータ854eがデータ記憶領域854に記憶される。
また、全体処理の開始時においては、合体フラグ854jはオンされるが、前回の続きからゲームを開始する場合には、セーブした時点の状態に応じて、合体フラグ854jはオンまたはオフされる。さらに、全体処理の開始時においては、第1シルエット判定フラグ854k、第2シルエット判定フラグ854mおよび第3シルエット判定フラグ854nはオフされる。
続くステップS3では、左コントローラ3または/および右コントローラ4から送信された操作データを取得し、ステップS5では、後述するゲーム制御処理(図18-図21参照)を実行する。次のステップS7では、後述するシルエット表示判定処理(図22および図23参照)を実行する。
続いて、ステップS9では、ゲーム画像(つまり、表示用画像)を生成する。ここでは、プロセッサ81は、ステップS5のゲーム制御処理の結果に基づいて、3次元の仮想空間に各種のオブジェクトおよびキャラクタを配置して、或る情景または場面(シーン)を生成し、生成したシーンを仮想カメラで撮影したゲーム画像(ゲーム画面200など)に対応するゲーム画像データを生成する。このとき、第1シルエット判定フラグ854kがオンである場合には、プレイヤキャラクタ202のシルエット220を含むゲーム画像が生成される。また、プレイヤキャラクタ202と第1仲間キャラクタ204が合体していない分離状態では、第2シルエット判定フラグ854mがオンである場合に、第1仲間キャラクタ204のシルエット222もゲーム画像に含まれる。また、プレイヤキャラクタ202と第2仲間キャラクタ206が合体している合体状態では、第3シルエット判定フラグ854nがオンである場合に、プレイヤキャラクタ202のシルエット220および第2仲間キャラクタ206のシルエット224もゲーム画像に含まれる。ただし、シルエット220、222、224は、上記のとおり、Zバッファを用いて、キャラクタと障害物との前後関係をZテストにより判定し、障害物よりも後に位置していると判断されたキャラクタの部分を、障害物に上書きするように描画するため、プレイヤキャラクタ202、第1仲間キャラクタ204および第2仲間キャラクタ206が1または複数の第1オブジェクトの陰に隠れている場合にのみ表示される。
次のステップS11では、ゲーム画像を表示する。ここでは、プロセッサ81は、ステップS9で生成したゲーム画像データをディスプレイ12に出力する。
そして、ステップS13では、ゲームを終了するかどうかを判断する。ステップS13の判断は、プレイヤがゲームを終了する指示を行ったか否か等によって行われる。ステップS13で“NO”であれば、つまりゲームを終了しない場合には、ステップS3に戻る。一方、ステップS13で“YES”であれば、つまりゲームを終了する場合には、全体処理を終了する。
図18に示すように、プロセッサ81は、ステップS5に示したゲーム制御処理を開始すると、ステップS31で、操作状態が分離状態から合体状態に変化中であるかどうかを判断する。ステップS31で“YES”であれば、つまり、操作状態が分離状態から合体状態に変化中であれば、ステップS33で、合体状態への変化を進めて、図21に示すステップS81に進む。ステップS33では、第1仲間キャラクタ204が第2仲間キャラクタ206に変化されるとともに、第2仲間キャラクタ206がプレイヤキャラクタ202に抱っこされる。
ステップS31で“NO”であれば、つまり、操作状態が分離状態から合体状態に変化中でなければ、ステップS35で、操作状態が合体状態から分離状態に変化中であるかどうかを判断する。ステップS35で“YES”であれば、つまり、操作状態が合体状態から分離状態に変化中であれば、ステップS37で、分離状態への変化を進めて、ステップS81に進む。ステップS37では、第2仲間キャラクタ206がプレイヤキャラクタ202から離れるとともに、第2仲間キャラクタ206が第1仲間キャラクタ204に変化される。
ステップS35で“NO”であれば、つまり、操作状態が合体状態から分離状態に変化中でなければ、ステップS39で、合体の操作入力が有るかどうかを判断する。ここでは、プロセッサ81は、ステップS3で取得した操作データがLボタン38の操作を示す操作データを含むかどうかを判断する。ステップS39で“YES”であれば、つまり、合体の操作入力が有れば、ステップS41で、分離状態から合体状態への変化を開始し、ステップS43で、合体フラグ854jをオンして、ステップS81に進む。
ステップS39で“NO”であれば、つまり、合体の操作入力が無ければ、ステップS45で、分離の操作入力が有るかどうかを判断する。ここでは、プロセッサ81は、ステップS3で取得した操作データがRボタン60の操作を示す操作データを含むかどうかを判断する。ステップS45で“YES”であれば、つまり、分離の操作入力が有れば、ステップS47で、合体状態から分離状態への変化を開始し、ステップS49で、合体フラグ854jをオフして、ステップS81に進む。
ステップS45で“NO”であれば、つまり、分離の操作入力が無ければ、図19に示すステップS51で、プレイヤキャラクタ202の移動かどうかを判断する。ここでは、プロセッサ81は、ステップS3で取得した操作データがアナログスティック32の操作を示す操作データを含むかどうかを判断する。ステップS51で“YES”であれば、つまり、プレイヤキャラクタ202の移動であれば、ステップS53で、操作入力に従ってプレイヤキャラクタ202を移動させる。このステップS53では、プロセッサ81は、アナログスティック32の操作に従う方向に、プレイヤキャラクタ202の位置および向きを変更する。つまり、プレイヤキャラクタ202の現在位置データおよび向きデータが更新される。図示は省略するが、第2仲間キャラクタ206がプレイヤキャラクタ202と合体している場合には、プレイヤキャラクタ202の現在位置および向きの変更に伴って、第2仲間キャラクタ206の現在位置および向きが変更される。つまり、仲間キャラクタデータ854dに含まれる現在位置データおよび向きデータが更新される。また、図示は省略するが、プレイヤキャラクタ202がアイテムの位置に接近または到達した場合には、当該アイテムを取得する。プレイヤキャラクタ202がアイテムを取得した場合には、プレイヤキャラクタデータ854cのアイテムデータが更新される。つまり、取得したアイテムの個数が増加される。
次のステップS55では、プレイヤキャラクタ202の移動に応じて、第1判定用オブジェクト230を移動させて、ステップS57に進む。ステップS55では、プロセッサ81は、プレイヤキャラクタ202の移動に平行して移動するように、第1判定用オブジェクトデータ854fに含まれる中心位置データを更新する。このとき、プロセッサ81は、第1判定点データ854hを更新する。つまり、複数の第1判定点230aの位置データが、更新された第1判定用オブジェクトデータ854fに基づいて決定される直方体の第1判定用オブジェクト230の頂点位置のデータに更新される。
また、ステップS51で“NO”であれば、つまり、プレイヤキャラクタ202の移動でなければ、ステップS57で、プレイヤキャラクタ202のアクションの実行かどうかを判断する。ここでは、プロセッサ81は、ステップS3で取得した操作データがZLボタン39、ボタン33-36のいずれかの操作を示す操作データを含むかどうかを判断する。
ステップS57で“YES”であれば、つまり、プレイヤキャラクタ202のアクションの実行であれば、ステップS59で、プレイヤの操作に従って、プレイヤキャラクタ202にアクションを実行させ、図20に示すステップS61に進む。ただし、プレイヤキャラクタ202がアクションを実行中であれば、アクションの実行を継続させる。プレイヤキャラクタ202のアクションとしては、敵キャラクタ208への攻撃およびアイテムの使用などが該当する。プレイヤキャラクタ202がアイテムを使用した場合には、プレイヤキャラクタデータ854cのアイテムデータが更新される。つまり、使用したアイテムの個数が減少される。一方、ステップS57で“NO”であれば、つまり、プレイヤキャラクタ202のアクションの実行でなければ、ステップS61に進む。
ステップS61では、合体フラグ854jがオンであるかどうかを判断する。ステップS61で“YES”であれば、つまり、合体フラグ854jがオンであれば、図21に示すステップS73に進む。一方、ステップS61で“NO”であれば、つまり、合体フラグ854jがオフであれば、ステップS63で、第1仲間キャラクタ204の移動かどうかを判断する。ここでは、プロセッサ81は、ステップS3で取得した操作データがアナログスティック52の操作を示す操作データを含むかどうかを判断する。
ステップS63で“YES”であれば、つまり、第1仲間キャラクタ204の移動であれば、ステップS65で、操作入力に従って第1仲間キャラクタ204を移動させる。このステップS65では、プロセッサ81は、アナログスティック52の操作に従う方向に、第1仲間キャラクタ204の位置および向きを変更する。つまり、仲間キャラクタデータ854dに含まれる現在位置データおよび向きデータが更新される。図示は省略するが、第1仲間キャラクタ204がアイテムの位置に接近または到達した場合には、当該アイテムを取得する。第1仲間キャラクタ204がアイテムを取得した場合には、プレイヤキャラクタデータ854cのアイテムデータが更新される。つまり、取得したアイテムの個数が増加される。
次のステップS67では、第1仲間キャラクタ204の移動に応じて、第2判定用オブジェクト232を移動させて、ステップS69に進む。ステップS67では、プロセッサ81は、第1仲間キャラクタ204の移動に平行して移動するように、第2判定用オブジェクトデータ854gに含まれる中心位置データを更新する。このとき、プロセッサ81は、第2判定点データ854iを更新する。つまり、複数の第2判定点232aの位置データが、更新された第2判定用オブジェクトデータ854gに基づいて決定される直方体の第2判定用オブジェクト232の頂点位置のデータに更新される。
また、ステップS63で“NO”であれば、つまり、第1仲間キャラクタ204の移動でなければ、ステップS69で、第1仲間キャラクタ204のアクションの実行かどうかを判断する。ここでは、プロセッサ81は、ステップS3で取得した操作データがZRボタン61の操作を示す操作データを含むかどうかを判断する。
ステップS69で“NO”であれば、つまり、第1仲間キャラクタ204のアクションの実行でなければ、ステップS81に進む。一方、ステップS69で“YES”であれば、つまり、第1仲間キャラクタ204のアクションの実行であれば、ステップS71で、第1仲間キャラクタ204にアクションを実行させ、ステップS81に進む。ただし、第1仲間キャラクタ204がアクションを実行中であれば、アクションの実行を継続させる。第1仲間キャラクタ204のアクションとしては、敵キャラクタ208への攻撃などが該当する。
図21に示すように、ステップS73では、第2仲間キャラクタ206の伸長かどうかを判断する。ここでは、プロセッサ81は、ステップS3で取得した操作データがアナログスティック52の操作を示す操作データを含むかどうかを判断する。
ステップS73で“YES”であれば、つまり、第2仲間キャラクタ206の伸長であれば、ステップS75で、操作入力に従って第2仲間キャラクタ206を伸長させて、ステップS77に進む。ステップS75では、プロセッサ81は、アナログスティック52の操作に従う方向に所定の長さだけ、第2仲間キャラクタ206の胴体を伸長させる。つまり、仲間キャラクタデータ854dに含まれる向きデータが更新され、伸長フラグがオンされる。
ステップS73で“NO”であれば、つまり、第2仲間キャラクタ206の伸長でなければ、ステップS77で、第2仲間キャラクタ206のアクションを実行するかどうかを判断する。ここでは、プロセッサ81は、ステップS3で取得した操作データがZRボタン61の操作を示す操作データを含むかどうかを判断する。ただし、第2仲間キャラクタ206が伸長していた場合には、つまり、仲間キャラクタデータ854dに含まれる伸長フラグがオンである場合には、ステップS73で“NO”であれば、第2仲間キャラクタ206は元の長さに戻される。つまり、仲間キャラクタデータ854dに含まれる伸長フラグがオフされる。
ステップS77で“NO”であれば、つまり、第2仲間キャラクタ206のアクションの実行でなければ、ステップS81に進む。一方、ステップS77で“YES”であれば、つまり、第2仲間キャラクタ206のアクションの実行であれば、ステップS79で、第2仲間キャラクタ206にアクションを実行させ、ステップS81に進む。ただし、第2仲間キャラクタ206がアクションを実行中であれば、アクションの実行を継続させる。第2仲間キャラクタ206のアクションとしては、敵キャラクタ208への攻撃およびアイテムの取得などが該当する。ただし、第2仲間キャラクタ206が伸長していない場合には、プレイヤキャラクタ202の向きに居る敵キャラクタ208を攻撃したり、プレイヤキャラクタ202の向きに在るアイテムを取得したりする。第2仲間キャラクタ206がアイテムを取得した場合には、プレイヤキャラクタデータ854cのアイテムデータが更新される。つまり、取得したアイテムの個数が増加される。
ステップS81では、その他のゲーム処理を実行し、ゲーム制御処理を終了して、図17に示した全体処理にリターンする。ステップS81では、プロセッサ81は、敵キャラクタ208を移動させたり、敵キャラクタ208にプレイヤキャラクタ202または仲間キャラクタ(204または206)を攻撃させたり、アイテムを出現させたりするなどのゲーム処理を実行する。また、ステップS81では、プロセッサ81は、プレイヤキャラクタ202および仲間キャラクタ(204または206)の位置に基づいて、または、プレイヤキャラクタ202、仲間キャラクタ(204または206)および敵キャラクタ208の位置に基づいて、仮想カメラ250の位置および向きを制御する。さらに、ステップS81では、プロセッサ81は、ゲームクリアまたはゲームオーバを判断する。
図22に示すように、プロセッサ81は、シルエット表示判定処理を開始すると、ステップS201で、合体フラグ854jがオンであるかどうかを判断する。ステップS209で“YES”であれば、図23に示すステップS219に進む。一方、ステップS201で“NO”であれば、ステップS203で、仮想カメラ250の位置と各第1判定点230aを結ぶ各第1線分のオブジェクト230bが1または複数の第1オブジェクトに衝突するかどうかの衝突判定を行う。
次のステップS205では、プレイヤキャラクタ202のシルエット220を表示するかどうかを判断する。ここでは、プロセッサ81は、第1線分のオブジェクト230bが1または複数の第1オブジェクトに衝突することが判定された数が2以上であるかどうかを判断する。
ステップS205で“YES”であれば、つまり、プレイヤキャラクタ202のシルエット220を表示することが判断されると、ステップS207で、第1シルエット判定フラグ854kをオンして、ステップS211に進む。ただし、第2仲間キャラクタ206がプレイヤキャラクタ202に合体している場合には、プレイヤキャラクタ202のシルエット220を表示することが判定されると、第2仲間キャラクタ206のシルエット224を表示することが判断される。
一方、ステップS205で“NO”であれば、つまり、プレイヤキャラクタ202のシルエット220を表示しないことが判断されると、ステップS209で、第1シルエット判定フラグ854kをオフして、ステップS211に進む。
ステップS211では、仮想カメラ250の位置と各第2判定点232aを結ぶ各第2線分のオブジェクト232bが1または複数の第1オブジェクトに衝突するかどうかの衝突判定を行う。
次のステップS213では、第1仲間キャラクタ204のシルエット222を表示するかどうかを判断する。ここでは、プロセッサ81は、第2線分のオブジェクト232bが1または複数の第1オブジェクトに衝突することが判定された数が2以上であるかどうかを判断する。
ステップS213で“YES”であれば、つまり、第1仲間キャラクタ204のシルエット222を表示することが判断されると、ステップS215で、第2シルエット判定フラグ854mをオンし、シルエット表示判定処理を終了して、全体制御処理にリターンする。
一方、ステップS213で“NO”であれば、つまり、第1仲間キャラクタ204のシルエット222を表示しないことが判断されると、ステップS217で、第2シルエット判定フラグ854mをオフし、シルエット表示判定処理を終了して、全体制御処理にリターンする。
図23に示すように、ステップS219では、仮想カメラ250の位置と各第1判定点230aを結ぶ各第1線分のオブジェクト230bが1または複数の第1オブジェクトに衝突するかどうかの衝突判定を行う。
次のステップS221では、プレイヤキャラクタ202のシルエット220と第2仲間キャラクタ206のシルエット224を表示するかどうかを判断する。ここでは、プロセッサ81は、第1線分のオブジェクト230bが1または複数の第1オブジェクトに衝突することが判定された数が2以上であるかどうかを判断する。
ステップS221で“YES”であれば、つまり、プレイヤキャラクタ202のシルエット220と第2仲間キャラクタ206のシルエット224を表示することが判断されると、ステップS223で、第3シルエット判定フラグ854nをオンし、シルエット表示判定処理を終了して、全体制御処理にリターンする。
一方、ステップS221で“NO”であれば、つまり、プレイヤキャラクタ202のシルエット220と第2仲間キャラクタ206のシルエット224を表示しないことが判断されると、ステップS225で、第3シルエット判定フラグ854nをオフし、シルエット表示判定処理を終了して、全体制御処理にリターンする。
この実施例によれば、仮想カメラに応じた位置と、プレイヤキャラクタおよび第1仲間キャラクタの各々を囲うように設定した各判定用オブジェクト上の複数の判定点の各々を結ぶ各線分のオブジェクトが1または複数の第1オブジェクトに衝突するかどうかを判定するだけで、プレイヤキャラクタおよび第1仲間キャラクタのシルエットを表示するかを判定するので、簡易な処理によってシルエットを表示するかどうかを判定することができる。また、シルエットを表示することが判定された場合であっても、実際に第1オブジェクトすなわち背景オブジェクトまたは敵キャラクタの陰に隠れる場合にのみシルエットを表示するので、シルエットの表示機会を抑制することができる。
なお、上述の実施例では、シルエットを表示することが判定されると、即座にシルエットを含むゲーム画像を生成する処理を行うようにしたが、これに限定される必要はない。シルエットを表示することが判定され、この状態が第2所定時間(たとえば、1秒)継続した場合に、シルエットを含むゲーム画像を生成する処理を行うようにしてもよい。
具体的には、プロセッサ81は、シルエット表示判定処理において、ステップS205で“YES”と判断した場合に直ぐにステップS207の処理を実行せずに、シルエット表示判定処理と平行して第2所定時間のカウントを開始し、第2所定時間のカウントを終了するまでにステップS205で“NO”と判断しない場合に、ステップS207の処理を実行するようにすればよい。同様に、プロセッサ81は、シルエット表示判定処理において、ステップS213で“YES”と判断した場合に直ぐにステップS215の処理を実行せずに、シルエット表示判定処理と平行して第2所定時間のカウントを開始し、第2所定時間のカウントを終了するまでにステップS213で“NO”と判断しない場合に、ステップS215の処理を実行するようにすればよい。同様に、プロセッサ81は、シルエット表示判定処理において、ステップS221で“YES”と判断した場合に直ぐにステップS223の処理を実行せずに、シルエット表示判定処理と平行して第2所定時間のカウントを開始し、第2所定時間のカウントを終了するまでにステップS221で“NO”と判断しない場合に、ステップS223の処理を実行するようにすればよい。
このようにすれば、たとえば、太い木などの背景オブジェクトの後ろを一瞬横切る場合に、シルエットが表示されるのを防止することができる。また、一例として、第2所定時間を1秒に設定するのは、第2所定時間が短すぎる場合には、背景オブジェクトの後ろを一瞬横切る場合であってもシルエットが表示されるため、チカチカして仮想のゲームをプレイし難く、第2所定時間が長すぎる場合には、キャラクタの位置を見失ってしまい、見えないところから敵キャラクタに攻撃されてしまうような不都合が発生するおそれがあるからである。
また、上述の実施例では、オレンジ色のシルエットおよび紫色のシルエットを表示するようにしたが、シルエットは、時間経過に従って徐々に(つまり、透明度が徐々に低下するように)表示するようにしてもよい。この場合、透明度が低下する低下速度を徐々に上げるようにしてもよい。一例として、シルエットは、薄橙色で表示され、時間経過に従って色が濃くされ、つまり、透明度が低下され、さらに、オレンジ色に変化される。また、シルエットは、薄紫色で表示され、時間結果に従って色が濃くされ、紫色に変化される。キャラクタが物陰に隠れて即座にシルエットを表示させる場合には、隠れる領域が広がるにつれてシルエットも自然と大きくなるが、シルエットを表示することが判定された状態が第2所定時間継続してからシルエットを描画する場合には、或る程度キャラクタが隠れたタイミングでシルエットを表示させることになる。この場合、たとえば、キャラクタの1/3程度のシルエットが急に表示されることとなり、プレイヤが違和感を覚える恐れがあるが、徐々に表示させることで、このような違和感を緩和させることができる。
さらに、上述の実施例では、判定用オブジェクトの形状は固定であるが、対応するキャラクタが動作することでキャラクタの大きさまたは形状が変化する場合には、判定用オブジェクトの形状を変化させるようにしてもよい。たとえば、キャラクタの大きさが一時的に小さくされたり大きくされたりする場合、鳥を模したキャラクタのように羽を広げているときと羽をたたんでいるときとで大きさまたは形状が異なる場合には、判定用オブジェクトの大きさまたは形状が変化される。
さらにまた、上述の実施例では、プレイヤキャラクタと第2仲間キャラクタが合体した場合の一例として、第1仲間キャラクタを変形させて、プレイヤキャラクタが第2仲間キャラクタを抱っこするようにしたが、これに限定される必要はない。図24(A)に示すように、合体状態の他の例では、第1仲間キャラクタ204を変形させずに、プレイヤキャラクタ202が第1仲間キャラクタ204に装着された首輪から延びる綱204aを持つことで合体させ、プレイヤキャラクタ202と第1仲間キャラクタ204を一緒に移動させるようにしてもよい。また、図24(B)に示すように、合体状態のその他の例では、第1仲間キャラクタ204を変形させずに、プレイヤキャラクタ202が第1仲間キャラクタ204の上に乗ることで合体させ、プレイヤキャラクタ202と第1仲間キャラクタ204を一緒に移動させるようにしてもよい。図24(B)では、プレイヤキャラクタ202は、第1仲間キャラクタ204の上に立っているが、第1仲間キャラクタ204の上に跨ってもよい。図24(A)または図24(B)に示すような合体状態であっても、プレイヤキャラクタ202は、仲間キャラクタのような第2オブジェクトと重なったり、接触したり、連結したりする。
図24(A)および図24(B)からも分かるように、プレイヤキャラクタ202と比較して第1仲間キャラクタ204の方が大きい。このような場合には、合体状態において、プレイヤキャラクタ202についてシルエット表示判定を行うことに代えて、第1仲間キャラクタ204のシルエット222を表示するかを判定するシルエット表示判定を行い、その判定結果に応じて、プレイヤキャラクタ202のシルエット220と第1仲間キャラクタ204のシルエット222を表示するかが判定されるようにしてもよい。つまり、第1仲間キャラクタ204の第2判定用オブジェクト232に設定された第2判定点232aを用いたシルエット表示判定のみが実行される。この場合、分離状態における第1仲間キャラクタ204のシルエット表示判定の複数の第2判定点232aと、合体状態におけるプレイヤキャラクタ202および第1仲間キャラクタ204のシルエット表示判定の複数の判定点(「第3判定点」に相当する)は同じである。
また、図24(A)および図24(B)に示したように、第1仲間キャラクタを変形させずに、プレイヤキャラクタと第1仲間キャラクタを合体状態にさせる場合には、プレイヤキャラクタと第1仲間キャラクタの両方を囲うように判定用オブジェクト(第3判定用オブジェクトに相当する)が設定されてもよい。図25は図24(B)に示した合体状態のプレイヤキャラクタ202と第1仲間キャラクタ204に対して設定される第3判定用オブジェクトの一例を示す。第3判定用オブジェクトは、直方体の形状で無色透明のオブジェクトであり、各頂点に複数の判定点(「第3判定点」に相当する)が設定される。この第3判定用オブジェクトは、その中心の位置がプレイヤキャラクタ202または第1仲間キャラクタ204の指定した1つの関節の位置に応じて決定された中心の位置であり、プレイヤキャラクタ202および第1仲間キャラクタ204をぎりぎり覆うことができるサイズのボックス状のオブジェクトである。このような第3判定用オブジェクトを設定しても、プレイヤキャラクタ202および第1仲間キャラクタ204の両方について、一度にシルエット表示判定を行うことができる。つまり、処理が複雑化することを抑制することができる。
ただし、第3判定用オブジェクトを用いて、プレイヤキャラクタ202および第1仲間キャラクタ204の両方についてシルエット表示判定を行う場合であっても、プレイヤキャラクタ202または第1仲間キャラクタ204のみのシルエット220またはシルエット222が表示されるようにしてもよい。また、第3判定点を用いたシルエット表示判定に加えて別の追加判定も行った上で、プレイヤキャラクタ202および第1仲間キャラクタ204のシルエット220およびシルエット222を表示することを判定するようにしてもよい。
さらに、上述の実施例では、プレイヤキャラクタは、仲間キャラクタと合体したり、分離したりしたが、これに限定される必要はない。プレイヤキャラクタは、仮想空間に配置されたアイテムを所持または装備することでアイテムのオブジェクトと合体したり、手放すことでアイテムのオブジェクトと分離したりしてもよい。たとえば、仮想空間に落ちている武器が第1オブジェクトの陰に隠れている場合には、武器のシルエットを表示することで、武器が第1オブジェクトの後ろに落ちていることをプレイヤに知らせることができる。この場合、分離した状態のアイテムに、このアイテムを囲うように、第2判定用オブジェクトが設定され、シルエット表示判定が行われる。
図26に示すゲーム画像はゲーム画面200の限定しない他の例である。図26に示す例では、岩の背景オブジェクト214の後ろに刀のような武器のオブジェクト240が配置され、刀のシルエット226が岩の背景オブジェクト214の表面に表示されている。また、図26に示すゲーム画面200では、プレイヤキャラクタ202は画面の中央から左寄りに位置する。
図27に示すゲーム画像はゲーム画面200の限定しないその他の例である。図27のゲーム画面200は、図26に示したゲーム画面200において、プレイヤキャラクタ202が、刀のオブジェクト240を取得し、取得した刀のオブジェクト240を持って右方向に移動した状態を示す。つまり、図27は、プレイヤキャラクタ202と刀のオブジェクト240の合体状態を示す。
図示は省略するが、上述の実施例と同様に、合体状態では、プレイヤキャラクタ202のシルエット220を表示するかを判定するシルエット表示判定の判定結果に応じて、プレイヤキャラクタ202のシルエット220と刀のオブジェクト240のシルエット226を表示するかが判定される。ただし、合体状態においては、プレイヤキャラクタ202と刀のオブジェクト240を囲う第3判定用オブジェクトを用いて、一度にプレイヤキャラクタ202と刀のオブジェクト240のシルエット表示判定が実行されてもよい。
なお、図26および図27では、アイテムの一例として、刀のオブジェクト240のような武器について示したが、これに限定される必要はない。防具、靴、手袋、帽子、薬およびコインのような他のアイテムについても同様である。
また、敵キャラクタまたは敵キャラクタが使用する武器(たとえば、鞭)がプレイヤキャラクタにまとわりつく(または、巻き付く)場合には、プレイヤキャラクタと敵キャラクタが合体状態となるため、プレイヤキャラクタのシルエットを表示することが判定された場合には、第1オブジェクトの陰に隠れているプレイヤキャラクタのみならず敵キャラクタについてもシルエットが表示される。
また、上述の実施例では、仲間キャラクタがプレイヤキャラクタと合体したり分離したりする場合について説明したが、これに限定される必要はない。第1仲間キャラクタと第2仲間キャラクタとの間で変形することなく、それぞれ別の仲間キャラクタであってもよい。一例として、操作状態は分離状態と合体状態の間で切り替え可能であり、分離状態では、プレイヤキャラクタの仲間キャラクタとして、第1仲間キャラクタが仮想空間に出現し、合体状態では、プレイヤキャラクタの仲間キャラクタとして、第2仲間キャラクタが仮想空間に出現する。
さらに、上述の実施例では、仲間キャラクタの動作についてもプレイヤが操作するようにしたが、仲間キャラクタは自動で動作するようにしてもよい。
また、上述の実施例では、プレイヤキャラクタおよび仲間キャラクタが地上の移動する場合について説明したが、プレイヤキャラクタおよび仲間キャラクタが水中または空中を移動する場合も同様にシルエット表示判定を行い、表示するシルエットを決定することができる。
なお、上述の実施例では、ゲームシステムの一例としてゲームシステム1を示したが、その構成は限定される必要は無く、他の構成を採用することが可能である。たとえば、上記「コンピュータ」は、上述の実施例においては、1つのコンピュータ(具体的には、プロセッサ81)であるが、他の実施例においては、複数のコンピュータであってもよい。上記「コンピュータ」は、例えば、複数の装置に設けられる(複数の)コンピュータであってもよく、より具体的には、上記「コンピュータ」は、本体装置2のプロセッサ81と、コントローラが備える通信制御部(マイクロプロセッサ)101、111とによって構成されてもよい。
また、上述の実施例では、ディスプレイ12にゲーム画像を表示する場合について説明したが、これに限定される必要はない。本体装置2を、クレードルを介して据置型モニタ(たとえば、テレビモニタ)に接続することにより、ゲーム画像を据置型モニタに表示することもできる。かかる場合には、ゲームシステム1と据置型モニタを含むゲームシステムを構成することもできる。
さらに、上述の実施例では、本体装置2に左コントローラ3および右コントローラ4を着脱可能な構成のゲームシステム1を用いた場合について説明したが、これに限定される必要はない。たとえば、左コントローラ3および右コントローラ4と同様の操作ボタンおよびアナログスティックを有する操作部を本体装置2に一体的に設けたゲーム装置またはゲームプログラムを実行可能な他の電子機器のようなゲーム装置を用いることもできる。他の電子機器としては、スマートフォンまたはタブレットPCなどが該当する。かかる場合には、操作部はソフトウェアキーで構成することもできる。
さらにまた、上述の実施例で示した具体的な数値および画像は一例であり、実際の製品に応じて適宜変更可能である。