以下、本実施形態の一例に係るゲームシステムについて説明する。本実施形態におけるゲームシステム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の側面の左上に第1Lボタン38およびZLボタン39を備える。また、左コントローラ3は、ハウジング31の側面の、本体装置2に装着される際に装着される側の面に第2Lボタン43および第2Rボタン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の側面の右上に第1Rボタン60およびZRボタン61を備える。また、右コントローラ4は、左コントローラ3と同様、第2Lボタン65および第2Rボタン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に対して入力を行うことが可能となる。
また、ディスプレイ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)から、入力に関する情報(具体的には、操作に関する情報、またはセンサによる検出結果)を取得する。通信制御部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と同様の機能を有し、同様に動作する。
以上に説明したように、本実施形態におけるゲームシステム1については左コントローラ3および右コントローラ4が本体装置2から着脱可能である。また、クレードルに左コントローラ3および右コントローラ4が本体装置2に装着された一体型装置や本体装置2単体を装着することによって据置型モニタ等の外部表示装置に画像(および音声)を出力可能である。以下の説明では、ディスプレイ12に画像を表示する利用態様におけるゲームシステム1を用いて説明する。なお、ディスプレイ12に画像を表示する利用態様におけるゲームシステム1を用いる場合、左コントローラ3および右コントローラ4が本体装置2に固定された態様(例えば、本体装置2、左コントローラ3、および右コントローラ4が1つの筐体で一体化された態様)のゲームシステム1が用いられてもかまわない。
ゲームシステム1における左コントローラ3および/または右コントローラ4の各操作ボタンやスティックの操作、あるいは本体装置2のタッチパネル13に対するタッチ操作等に応じて、ディスプレイ12に表示される仮想空間を用いたゲームプレイが行われる。本実施例では、一例として、上記操作ボタンおよびスティックを用いたユーザ操作に応じて、仮想空間内で動作するプレイヤキャラクタPCを用いたゲームプレイが可能となる。
図8および図9を用いて、爆弾アイテムB単体が爆発する第1のゲーム処理例の概要について説明する。なお、図8は、仮想空間において爆弾アイテムBを起動するプレイヤキャラクタPCの様子を示すゲーム画像の一例である。図9は、プレイヤキャラクタPCが起動した爆弾アイテムBが爆発した様子を示すゲーム画像の一例である。
図8において、仮想空間におけるゲームフィールド上にプレイヤキャラクタPC、爆弾アイテムB、板状オブジェクトOBJ1、および樹木オブジェクトOBJ2等が配置されている画像がディスプレイ12に表示されている。プレイヤキャラクタPCは、ユーザの操作入力に基づいて、仮想空間内におけるゲームフィールド上で移動したり動作したりすることができる。また、爆弾アイテムBおよび板状オブジェクトOBJ1は、仮想空間において移動可能な動的オブジェクトである。なお、本実施例においては、ゲーム画像が本体装置2のディスプレイ12に表示されるものとするが、本体装置2に接続される他の表示装置に表示されてもよい。
プレイヤキャラクタPCは、ユーザの移動操作入力に応じて仮想空間内を移動したり、ユーザの動作指示操作入力(例えば、操作ボタン53(Aボタン)を押下する操作入力)に応じて他のキャラクタや仮想オブジェクトを触ったり、叩いたり、攻撃したりするようなアクションを行うことができる。一例として、ユーザの攻撃指示操作入力に応じて、武器を用いたプレイヤキャラクタPCによる攻撃アクションを行う制御が可能である。
図8において、プレイヤキャラクタPCは、仮想空間のゲームフィールド上に置かれた爆弾アイテムBを叩く動作を行うことにより、当該爆弾アイテムBを起動しようとしている。爆弾アイテムBは、起動されることによりON状態に移行して仮想空間において爆発する現象を生じさせるアイテムオブジェクトである。爆弾アイテムBの動作状態には、爆発を生じさせるON状態と爆発を生じさせないOFF状態とがある。爆弾アイテムBは、通常はOFF状態に設定されており、仮想空間において単体で存在する場合でも、後述する組立品オブジェクトの一部として構成されている場合でも、ON状態になり得る。例えば、プレイヤキャラクタPCは、ユーザの操作入力により仮想空間において単体で存在している爆弾アイテムBに対して所定の動作(例えば、爆弾アイテムBに近づいて叩く動作や爆弾アイテムBを攻撃する動作)を行う。プレイヤキャラクタPCの所定の動作により、爆弾アイテムBは、起動してON状態に移行する。一例として、爆弾アイテムBは、プレイヤキャラクタPCの第1の動作(例えば、爆弾アイテムBに近づいて叩く動作)により、ON状態に移行して当該第1の動作から所定の時間経過後に爆発するタイマー爆発現象を生じさせる。他の例として、爆弾アイテムBは、プレイヤキャラクタPCの第2の動作(例えば、爆弾アイテムBを攻撃する動作)により、ON状態に移行して即時に爆発する即時爆発現象を生じさせる。なお、爆弾アイテムBを起動させるプレイヤキャラクタPCの動作は、叩いたり攻撃したりする動作に限らず、プレイヤキャラクタPCの他の動作により爆弾アイテムBが起動してもよい。
本実施例における爆弾アイテムBを含むアイテムオブジェクトは、仮想空間において移動可能な動的オブジェクトであり、プレイヤキャラクタPCが所定の取得アクション(例えば、フィールド上に落ちているアイテムオブジェクトを拾うアクション)を行うことにより、フィールド上において取得して、プレイヤキャラクタPCに収納することもできる。ここで、プレイヤキャラクタPCがアイテムオブジェクトを収納する状態とは、プレイヤキャラクタPCがアイテムオブジェクト等のオブジェクトを装備や把持等せずに持ち運ぶことができる状態である。このとき、アイテムオブジェクトは、ゲームフィールドには表示されていなくてもよい。収納したアイテムオブジェクトは、基本的には適宜の状況でユーザの操作入力に応じてゲームフィールドに配置したり、使用(装備や把持を含む)されたりすることができる。一例として、例えば、ポーチやアイテムボックスにアイテムオブジェクトを入れることでアイテムオブジェクトを収納する。なお、そのような収容体は表示されなくてもよい。また、ポーチやアイテムボックス等の収容体は、ゲームフィールドに存在せずに単にアイテムオブジェクトを収納する機能のみが存在してもよい。
なお、アイテムオブジェクトは、ゲームフィールド上にゲーム開始時に予め配置されているオブジェクトであってもよいし、敵キャラクタが落としたり、敵キャラクタが倒されたことに応じて配置されたり、アイテムオブジェクトではないオブジェクトから得られるオブジェクトであったりしてもよい。
図9において、プレイヤキャラクタPCの動作により起動した爆弾アイテムBは、当該動作の所定時間経過後に爆発する現象を生じさせる。例えば、爆弾アイテムBが爆発した場合、当該爆発が生じた発生位置を中心とする所定の爆発範囲内に配置されている他のオブジェクトやキャラクタに対して、当該爆発の影響としてそれぞれ爆発推進力が与えられる。なお、爆弾アイテムBの爆発による爆発推進力が与えられる対象となる他のオブジェクトやキャラクタは、上記爆発範囲内に配置されている全てのオブジェクトやキャラクタとなるが、上記爆発範囲内にその全部が含まれるオブジェクトやキャラクタを対象としてもよいし、上記爆発範囲内に少なくとも一部が含まれるオブジェクトやキャラクタを対象としてもよい。また、上記爆発範囲は、典型的には爆発発生位置を中心とする球形で設定されるが、他の形状であってもよい。また、上記爆発範囲は、仮想空間における遮蔽物により上記爆発の影響が遮蔽される範囲が削られた形状であってもよい。また、上記爆発範囲のサイズは、予め固定されたサイズでもよいし、爆弾アイテムBの種類や爆発発生位置の環境等に応じて変化させてもかまわない。
図9の例では、板状オブジェクトOBJ1が爆発した爆弾アイテムBの爆発範囲内に配置されていたため、当該爆発の影響として爆発推進力が与えられている。一方、樹木オブジェクトOBJ2は、爆発した爆弾アイテムBの爆発範囲外に配置されていたため、当該爆発の影響を受けていない。上記爆発推進力が与えられた板状オブジェクトOBJ1は、当該爆発推進力が作用する衝突位置が算出されるとともに、仮想空間において移動可能な動的オブジェクトであるため、当該爆発推進力に基づく仮想空間における動きが設定されて爆発発生位置から飛散するように仮想空間内を移動する。なお、爆弾アイテムBの爆発の影響を受けたオブジェクトは、重量、固定状態、強度等により、当該爆発によって破壊されることもあり得るし、仮想空間における配置位置が不変であったり姿勢だけが変化したりすることもあり得る。本実施例では、爆発による爆発推進力に基づいた物理演算が行われることにより、当該爆発推進力を受けたオブジェクトの位置および姿勢の変化や状態変化が算出されるが、作用する爆発推進力の算出方法およびオブジェクトの位置および姿勢の算出方法については後述する。
次に、図10~図12を参照して、プレイヤキャラクタPCがオブジェクト操作アクションにより組立品オブジェクトを生成する第2のゲーム処理例の概要について説明する。なお、図10は、プレイヤキャラクタPCがオブジェクト操作アクションにより制御対象(操作可能オブジェクトOBJb)を移動させている様子を示すゲーム画像の一例である。図11は、プレイヤキャラクタPCがオブジェクトOBJaに制御対象(操作可能オブジェクトOBJb)を接着する様子を示すゲーム画像の一例である。図12は、プレイヤキャラクタPCがオブジェクトOBJaに制御対象(操作可能オブジェクトOBJb)を接着することにより組立品オブジェクトASを生成した様子を示すゲーム画像の一例である。
プレイヤキャラクタPCは、ユーザ操作入力に応じて行う複数のアクションの1つとして、オブジェクト操作アクションを行うことができる。オブジェクト操作アクションは、例えば、プレイヤキャラクタPCの前方にある操作可能オブジェクトを制御対象として遠隔で操作するアクションである。例えば、プレイヤの操作入力に基づいて、仮想空間に配置された複数の操作可能オブジェクトのうちの何れかがオブジェクト操作アクションの制御対象として設定され、仮想空間内で当該制御対象の移動制御や姿勢制御が行われる。また、オブジェクト操作アクションに基づいて、制御対象が、仮想空間に配置された他のオブジェクトに組み付けられて当該他のオブジェクトと接着することにより組立品オブジェクトが生成される。
なお、操作可能オブジェクトは、オブジェクト操作アクションによらず、プレイヤキャラクタPCの他のアクション(例えば、オブジェクトを持ちあげるアクション)によっても仮想空間内で移動可能な動的オブジェクトであってもよい。このような他のアクションは、操作可能オブジェクトを移動させることが可能となるものの、上述したオブジェクト操作アクションのように、操作可能オブジェクトを他のオブジェクトと合体させることができないアクションであってもよい。また、仮想空間には、オブジェクト操作アクションによって操作不可能なオブジェクトが配置されてもよい。一例として、上記操作不可能なオブジェクトには、仮想空間に固定された岩、山、建築物、地面等の地形オブジェクトが含まれる。また、仮想空間において移動可能な動的オブジェクトは、その全てがオブジェクト操作アクションにより操作可能な操作可能オブジェクトであってもよいし、その一部がオブジェクト操作アクションにより操作できないオブジェクトであってもよい。
図10に示すように、プレイヤキャラクタPCの前方(または仮想カメラの注視点近傍)にオブジェクト操作アクションによる制御対象となり得る操作可能オブジェクトが配置されているときに、所定のユーザ操作入力が行われた場合、プレイヤキャラクタPCは当該操作可能オブジェクトに対してオブジェクト操作アクションを行うことができる。図10に示す例では、所定のユーザ選択操作入力に応じて、仮想空間に配置された複数の操作可能オブジェクトOBJa~OBJeのうち、操作可能オブジェクトOBJb(爆弾アイテムB)が制御対象として選択されて、オブジェクト操作アクションが行われている。操作可能オブジェクトOBJbに対してオブジェクト操作アクションが行われている状態では、操作可能オブジェクトOBJbは、仮想空間の地面から浮いた状態になるとともに、通常とは異なる表示態様になる。具体的には、制御対象となっている操作可能オブジェクトは、他のオブジェクトとは異なる色で表示されたり、エフェクト画像が付加されて表示されたり、他のオブジェクトに付加されるエフェクト画像とは異なるエフェクト画像が付加されて表示されたりする(なお、図10においては、表示態様の違いを斜線により表している)。また、本実施例では、オブジェクト操作アクションが行われていることを示すエフェクト画像も表示される(なお、図10においては、当該エフェクト画像を破線により表している)。これらにより、ゲームフィールドを示すゲーム画像が表示される状態において、ゲームフィールド上のオブジェクトのうちでオブジェクト操作アクションの制御対象となった操作可能オブジェクトやオブジェクト操作アクションが行われていることをユーザにわかりやすく提示することができる。
上記オブジェクト操作アクション中に、所定のユーザの操作入力(例えば、左コントローラ3のアナログスティック32を傾倒する方向操作入力)に応じてプレイヤキャラクタPCが移動した場合、当該オブジェクト操作アクションの制御対象となっている操作可能オブジェクトOBJbも移動する。また、上記オブジェクト操作アクション中に、所定のユーザの操作入力(例えば、右コントローラ4のアナログスティック52を傾倒する方向操作入力)が行われた場合、プレイヤキャラクタPCの向きが変化するとともに、プレイヤキャラクタPCの正面に制御対象が位置するように、操作可能オブジェクトOBJbが仮想空間内で移動してもよい。さらに、上記オブジェクト操作アクション中に、所定のユーザの操作入力(例えば、方向キー33~36を押下する方向操作入力)が行われた場合、制御対象である操作可能オブジェクトOBJbのみが仮想空間内で移動してもよい。さらに、上記オブジェクト操作アクション中に、所定のユーザの操作入力(例えば、操作ボタン60(Rボタン)を押下しながら方向キー33~36を押下する操作入力)が行われた場合、制御対象である操作可能オブジェクトOBJbのみが仮想空間内で回転してもよい。
図11に示すように、オブジェクト操作アクションにより、操作可能オブジェクトOBJbをオブジェクトOBJaに向かって移動させ、操作可能オブジェクトOBJbとオブジェクトOBJaとが所定の接続条件(例えば、両者の距離が閾値未満)を満たす場合、操作可能オブジェクトOBJbとオブジェクトOBJaとを結ぶ接着オブジェクトGが出現する。具体的には、操作可能オブジェクトOBJbの表面における最もオブジェクトOBJaに近い位置が、接着位置の一方として設定される。同様に、オブジェクトOBJaの表面における最も操作可能オブジェクトOBJbに近い位置が、接着位置の他方として設定される。そして、接着オブジェクトGは、これら2つの接着位置を結ぶように表示される。
そして、図12に示すように、ユーザの接着指示操作入力(例えば、操作ボタン53(Aボタン)を押下する操作入力)が行われることに応じて、操作可能オブジェクトOBJbとオブジェクトOBJaとが接着されて組立品オブジェクトASが生成される。一例として、操作可能オブジェクトOBJbにおける上記接着位置の一方とオブジェクトOBJaにおける上記接着位置の他方とが接触するように操作可能オブジェクトOBJbとオブジェクトOBJaとが接着される。そして、操作可能オブジェクトOBJbとオブジェクトOBJaとが接着された後も、これらのオブジェクトの接着部位に当該接着後の隙間形状に合わせた形状に変形した接着オブジェクトGが残留して表示されてもよい。
このように、本実施例では、接着する操作可能オブジェクトをユーザが任意に選択できるとともに、当該選択された操作可能オブジェクトをユーザが任意の位置に任意の姿勢で他のオブジェクトに接着して組立品オブジェクトを生成できる。したがって、本実施例では、ユーザ操作入力に基づいて、仮想空間内において、少なくとも1つの動的オブジェクトと少なくとも1つの爆弾アイテムとを接着して結合させ、結合された動的オブジェクトである組立品オブジェクトを物理演算に基づいて移動制御することができ、このような動的オブジェクトとして機能する組立品オブジェクトをユーザが自由に生成することができる。ここで、本実施例において、オブジェクト同士の「接着」とは、オブジェクト同士が近接した位置で結合されて一体的なオブジェクトとしてふるまうことを意味する。例えば、2つのオブジェクトが接着されている場合、当該2つのオブジェクトは互いに接してもよい。また、2つのオブジェクトが接着されている場合、2つのオブジェクトが厳密に接していなくてもよく、例えば、2つのオブジェクト間に、間隙があったり、上述した接着オブジェクトGが介在したりしてもよい。また、「複数のオブジェクトが一体的なオブジェクトとしてふるまう」とは、複数のオブジェクトの相対的な位置関係が維持され、複数のオブジェクトが1つのオブジェクトであるかのように仮想空間内を移動したり、姿勢を変化させたりすることを含む。つまり、複数の動的オブジェクトが結合されて生成された組立品オブジェクトは、一体的な動的オブジェクトとして仮想空間に配置される。なお、接着された複数のオブジェクトの相対的な位置関係が完全に固定されず、例えば、複数のオブジェクトの何れかに力が加わったり、衝撃が加わったりした場合に、これらが接着されたまま、これらの位置関係に多少の変化があってもよい。
なお、上述したように、複数のオブジェクトを接着させて組立品オブジェクトが生成された後、所定の解除条件を満たすユーザの接着解除操作入力が行われた場合、仮想オブジェクトの接着が解除されてもよい。また、接着されるオブジェクトの少なくとも一方に、少なくとも1つの優先接着部が設定されてもよい。例えば、優先接着部は、ゲーム制作者によってオブジェクトそれぞれに予め設定され、当該オブジェクトが他のオブジェクトに接着される場合に上記接着位置に最も近い優先接着部が優先的に接着されて組立品オブジェクトが生成されてもよい。
図13および図14を参照して、組立品オブジェクトを構成する爆弾アイテムBが爆発する第3のゲーム処理例の概要について説明する。なお、図13は、仮想空間において組立品オブジェクトASを構成する爆弾アイテムBを起動するプレイヤキャラクタPCの様子を示すゲーム画像の一例である。図14は、プレイヤキャラクタPCが起動した爆弾アイテムBが爆発した組立品オブジェクトASの様子を示すゲーム画像の一例である。
図13において、組立品オブジェクトASは、上述したオブジェクト操作アクションに基づいて生成され、その一部に複数の爆弾アイテムBが構成されている。具体的には、組立品オブジェクトASは、2つの板状オブジェクトがL字状に接続された本体を有しており、一方の板状オブジェクトが水平方向に配置され他方の板状オブジェクトが鉛直方向に起立して組み付けられている(便宜上、一方の板状オブジェクトが組み付けられている方を組立品オブジェクトASの「前方」とし、他方の板状オブジェクトが組み付けられている方を組立品オブジェクトASの「後方」とする)。そして、水平方向に配置されている板状オブジェクトの左側面および右側面には、それぞれ2つの車輪オブジェクトが合計4つ組み付けられており、これらの車輪オブジェクトが仮想空間における地面と接して転がることによって、組立品オブジェクトASが当該地面上を移動することができる。また、鉛直方向に配置されている板状オブジェクトの後主面における4隅付近には、4つの爆弾アイテムBが接着されて固定されている。
オブジェクト操作アクションにより複数のオブジェクトが接着されることにより構成される組立品オブジェクトASは、仮想空間内で一体として動作する。また、プレイヤキャラクタPCが組立品オブジェクトASの近傍に位置している状態で、ユーザの所定の動作指示操作入力が行われた場合、プレイヤキャラクタPCが組立品オブジェクトASの上(例えば、水平方向に配置されている板状オブジェクトの上主面の上)に乗ることができる。そして、組立品オブジェクトASに推進力が与えられた場合、4つの車輪オブジェクトが地面上を転がることにより、プレイヤキャラクタPCを乗せた状態で組立品オブジェクトASが仮想空間内を移動することができる。
図13に示すように、プレイヤキャラクタPCは、組立品オブジェクトASの一部(構成されている爆弾アイテムBの部分でなくてもよい)を叩く動作を行うことにより、当該組立品オブジェクトASに構成されている爆弾アイテムB全てを起動しようとしている。組立品オブジェクトASに構成されている4つの爆弾アイテムBは、組立品オブジェクトASに対して起動動作が行われることにより、ON状態に移行する。例えば、組立品オブジェクトASに対するプレイヤキャラクタPCの第1の動作(例えば、組立品オブジェクトASの一部を叩く動作や組立品オブジェクトASにおける爆弾アイテムB以外の部位を攻撃する動作)により、組立品オブジェクトASに構成されている全ての爆弾アイテムBがON状態に移行して当該第1の動作から所定の時間経過後に全てが一斉に爆発するタイマー爆発現象を生じさせる。他の例として、プレイヤキャラクタPCの第2の動作(例えば、組立品オブジェクトASに構成されている爆弾アイテムBの何れかを叩いたり攻撃したりする動作)により、当該第2の動作が行われた爆弾アイテムBまたは組立品オブジェクトASに構成されている爆弾アイテムBの全てがON状態に移行して即時に爆発する即時爆発現象を生じさせる。なお、上記第2の動作によって組立品オブジェクトASに構成されている爆弾アイテムBの何れかON状態に移行する場合であっても、当該爆弾アイテムBの爆発が他の爆弾アイテムBの爆発を誘発することにより、組立品オブジェクトASを構成する全ての爆弾アイテムBが実質的に同時に爆発してもよい。なお、組立品オブジェクトASを構成する爆弾アイテムBを起動させるプレイヤキャラクタPCの動作は、組立品オブジェクトASを叩いたり攻撃したりする動作に限らず、プレイヤキャラクタPCの他の動作により爆弾アイテムBが起動してもよい。
図14に示すように、組立品オブジェクトASを構成する爆弾アイテムBがON状態に移行して爆発した場合、当該爆発による爆発推進力が発生する。例えば、組立品オブジェクトASを構成する爆弾アイテムBが爆発した場合であっても、当該爆発が生じた位置を中心とする所定の爆発範囲内に配置されている自オブジェクト(すなわち、組立品オブジェクトASや他のオブジェクト等)に対して、当該爆発の影響としてそれぞれ爆発推進力が与えられる。そして、組立品オブジェクトASに作用する爆発推進力は、鉛直方向に配置されている板状オブジェクトの後主面に作用して、水平方向に配置されている板状オブジェクトおよび4つの車輪オブジェクトにも伝わり、これらのオブジェクトを構成する組立品オブジェクトASがプレイヤキャラクタPCを乗せた状態で仮想空間内で一体として移動する。組立品オブジェクトASを構成する爆弾アイテムBが爆発した場合であっても、当該爆発が生じた位置を中心とする所定の爆発範囲内に配置されている他のオブジェクトやキャラクタに対して、当該爆発の影響としてそれぞれ爆発推進力が与えられる。
図14の例では、組立品オブジェクトASを構成する複数の爆弾アイテムBの爆発に起因して、当該組立品オブジェクトASに爆発推進力がそれぞれ与えられている。上記爆発推進力が与えられた組立品オブジェクトASは、当該爆発推進力が作用する衝突位置それぞれが算出されるとともに、当該爆発推進力に基づく仮想空間における動きが設定されて爆発発生位置から離れる方向に仮想空間内を移動する。本実施例では、爆発による爆発推進力に基づいた物理演算が行われることにより、当該爆発推進力を受けた組立品オブジェクトASの移動方向および移動速度が算出される。なお、組立品オブジェクトASには複数の爆発が同時に衝突することになるが、これらの爆発をマージして上記物理演算が行われてもよいし、それぞれの爆発毎に上記物理演算が行われてもよい。
図15を用いて、爆弾アイテムBの爆発により生じる爆発推進力の算出方法および爆発推進力を受けたオブジェクトの位置および姿勢の算出方法について説明する。なお、図15は、オブジェクトRが受ける爆発推進力の一例を示す図である。
図15において、オブジェクトRは、仮想空間内に配置されている1つの剛体であり、仮想空間において移動可能な動的オブジェクトである。オブジェクトRの近傍には、2つの爆弾アイテムB1およびB2が配置されており、これらの爆弾アイテムB1およびB2が爆発する場合にオブジェクトRに作用する爆発推進力を一例として説明する。
爆弾アイテムB1は、オブジェクトRの一方端付近の主面と点C1において接触する位置に配置されている。なお、点C1は、オブジェクトRのコリジョンと爆弾アイテムB1のコリジョンとが接触する位置であるため、厳密には、オブジェクトRのコリジョン上の位置となる。爆弾アイテムB1が爆発した場合、オブジェクトR上の、当該爆発が発生した発生位置Q1から最も近い位置が、当該爆発による爆発推進力の衝突位置として算出される。図15に示す爆弾アイテムB1の場合、上記衝突位置は、オブジェクトRにおいて爆弾アイテムB1の中心や重心である発生位置Q1から最も近い位置が爆弾アイテムB1と接触する位置、すなわち点C1となる。また、爆弾アイテムB1の爆発による爆発推進力は、オブジェクトR上の衝突位置(点C1)に、発生位置Q1から衝突位置(点C1)に向かう方向に第1の速度で第1の質量の点が衝突した力として算出される。上記爆発推進力の物理判定は、爆発を契機に行われてもよく、当該爆発が生じた1フレームだけオブジェクトRに作用するように物理演算が行われてもよい。そして、オブジェクトRには、爆弾アイテムB1の爆発が生じた時点において上記物理判定による爆発推進力が発生したものとして、物理演算に基づいて当該爆発後のオブジェクトRの位置および姿勢が算出される。例えば、オブジェクトRにかかる力(爆発推進力や移動している場合の推進力を含む)やオブジェクトRと他のオブジェクトとの衝突等に基づく物理演算により、オブジェクトRの移動(移動速度、移動加速度、移動角速度、移動角加速度、移動方向等)を算出し、当該爆発後のオブジェクトRの位置および姿勢を更新する。
爆弾アイテムB2は、オブジェクトRの他方端の側面から離れた位置に配置されている。爆弾アイテムB2が爆発した場合、オブジェクトR上の、当該爆発が発生した発生位置Q2から最も近い位置が、当該爆発による爆発推進力の衝突位置として算出される。言い換えると、爆弾アイテムB2のようにオブジェクトRから離れた位置で爆発が生じる場合、当該爆発が発生した発生位置Q2から最も近い位置は、発生位置Q2を中心とする爆発を示す球を拡大させていった場合に最初にオブジェクトRと衝突する位置と考えることもできる。したがって、図15に示す爆弾アイテムB2の場合、上記衝突位置は、点C2となる。なお、点C2は、オブジェクトRのコリジョンと上記爆発を示す球とが接触する位置であるため、厳密には、オブジェクトRのコリジョン上の位置となる。また、爆弾アイテムB2の爆発による爆発推進力は、オブジェクトR上の衝突位置(点C2)に、発生位置Q2から衝突位置(点C2)に向かう方向に第2の速度で第2の質量の点が衝突した力として算出される。この爆発推進力の物理判定も、爆発を契機に行われてもよく、当該爆発が生じた1フレームだけオブジェクトRに作用するように物理演算が行われてもよい。そして、オブジェクトRには、爆弾アイテムB2の爆発が生じた時点において上記物理判定による爆発推進力が発生したものとして、物理演算に基づいて当該爆発後のオブジェクトRの位置および姿勢が算出される。
このように爆弾推進力の物理判定が行われることにより、爆発の発生に応じてオブジェクトRを移動させる場合に、爆発の発生位置Qから当該オブジェクトR上の最も近い衝突位置(点C)に向かう方向に所定速度(第1の速度または第2の速度)で所定質量(第1の質量または第2の質量)の点が衝突したものとして、物理演算に基づいて当該オブジェクトRの位置および姿勢が算出されるため、爆発発生位置から直感的に予想される方向に近い方向へ当該オブジェクトRを移動させることができる。また、このような爆弾推進力の物理判定は、複数のオブジェクトが結合されることによって構成されている組立品オブジェクトにおいても、同様に行われる。なお、結合されたオブジェクト同士の相互作用に基づいて、それぞれのオブジェクトに加えられる力を計算することにより、組立品オブジェクト全体が一体となって移動してもよいし、組立品オブジェクトを一体となった1つのオブジェクトとして計算してもよい。そして、組立品オブジェクトにかかる力(爆発推進力や移動している場合の推進力を含む)や組立品オブジェクトと他のオブジェクトとの衝突等に基づく物理演算により、組立品オブジェクトの移動(移動速度、移動加速度、移動角速度、移動角加速度、移動方向等)が算出され、当該爆発後の組立品オブジェクトの位置および姿勢が更新される。組立品オブジェクトの場合、当該組立品オブジェクトの中で爆弾アイテムBを任意の位置に固定して爆発させることもできるので、当該組立品オブジェクトを爆発で所望の方向に飛ばすことができる爆弾アイテムBをユーザが予め配置をすることもできる。
なお、上記爆発推進力の物理判定が行われる上記爆発が生じた1フレーム間のみオブジェクトRの慣性モーメントテンソルを一時的に上げてもかまわない。これにより、爆発の瞬間において、荷重等の爆発以外の要因で方向が変わることを抑制することができ、爆発発生位置からユーザが直感的に予想される方向と異なる方向へオブジェクトRが移動することを抑制することができる。なお、オブジェクトRの慣性モーメントテンソルを一時的に上げる期間は、1フレームに限らず、爆発が発生してから複数フレーム間において一時的に慣性モーメントテンソルを上げてもかまわない。
また、上記爆発推進力の物理判定に用いられる第1の速度および第2の速度は、爆発の大きさや種類により設定されてもよく、爆発発生位置から爆発衝突位置までの距離(第1の速度の場合:発生位置Q1から衝突位置(点C1)までの距離、第2の速度の場合:発生位置Q2から衝突位置(点C2)までの距離)に応じて減衰させてもよい。また、上記爆発推進力の物理判定に用いられる第1の質量および第2の質量も、爆発の大きさや種類により設定されてもよく、爆発発生位置から爆発衝突位置までの距離(第1の質量の場合:発生位置Q1から衝突位置(点C1)までの距離、第2の質量の場合:発生位置Q2から衝突位置(点C2)までの距離)に応じて減衰させてもよい。
また、本実施例では、上記爆弾アイテムB1の爆発と上記爆弾アイテムB2の爆発とのように、複数発生することが可能である。なお、これらの爆発は、同時に生じてもよいし、異なるタイミングで生じてもよい。また、複数の爆発が同時に生じて同じオブジェクトに当該爆発の推進力が作用した場合、それぞれの爆発推進力をマージして物理演算されてもよいし、それぞれの爆発推進力毎に物理演算されてもよい。
また、上記爆発推進力の物理判定は、爆発と同時に行われてもよいし、爆発から所定時間遅延したタイミングで行われてもよい。この場合、上記物理判定を爆発から遅延させる時間は、爆発発生位置から爆発衝突位置までの距離が長いほど、長い時間に設定されてもよい。また、上記爆発推進力の物理判定は、当該爆発に起因する1フレームだけオブジェクトRに作用する態様に限らず、爆発が発生してから複数フレーム間においてオブジェクトRに作用させてもよい。この場合、上記爆発推進力の物理判定をオブジェクトRに作用させるフレーム数(処理回数)は、爆発発生位置から爆発衝突位置までの距離が長いほど、少ない数に設定されてもよい。
また、本実施例は、爆弾アイテムBの爆発に起因する爆発推進力がオブジェクトに作用する例だけでなく、爆弾花や爆弾虫等の他のオブジェクトやキャラクタ、雷等の現象、および大砲や爆弾矢等の武器を用いた攻撃等の爆発源による爆発、爆風、放電、放射、および飛散等に起因する推進力が仮想空間におけるオブジェクトに作用する例に適用することもできる。なお、爆弾アイテムB以外の爆発源の爆発に関しても、当該爆発源の中心や重心を発生位置とする所定の爆発範囲が設定される。上記爆発源の爆発においても、当該爆発による爆発範囲内に配置されている全てのオブジェクトやキャラクタが当該爆発による爆発推進力が与えられる対象となるが、当該爆発範囲内にその全部が含まれるオブジェクトやキャラクタを対象としてもよいし、上記爆発範囲内に少なくとも一部が含まれるオブジェクトやキャラクタを対象としてもよい。また、上記爆発源の爆発による爆発範囲も、典型的には爆発発生位置を中心とする球形で設定されるが、他の形状であってもよい。また、上記爆発源の爆発による爆発範囲も、仮想空間における遮蔽物により爆発の影響が遮蔽される範囲が削られた形状であってもよい。また、上記爆発源の爆発による爆発範囲のサイズは、予め固定されたサイズでもよいし、爆弾源の種類や爆発発生位置の環境等に応じて変化させてもかまわない。
次に、図16を参照して、ゲームシステム1で実行される具体的な処理の一例について説明する。図16は、本体装置2のDRAM85に設定されるデータ領域の一例を示す図である。なお、DRAM85には、図16に示すデータの他、他の処理で用いられるデータも記憶されるが、詳細な説明を省略する。
DRAM85のプログラム記憶領域には、ゲームシステム1で実行される各種プログラムPaが記憶される。本実施例においては、各種プログラムPaは、左コントローラ3および/または右コントローラ4や本体装置2から取得したデータに基づいた情報処理を行うためのアプリケーションプログラム(例えば、ゲームプログラム)等が記憶される。なお、各種プログラムPaは、フラッシュメモリ84に予め記憶されていてもよいし、ゲームシステム1に着脱可能な記憶媒体(例えば、スロット23に装着された所定の種類の記憶媒体)から取得されてDRAM85に記憶されてもよいし、インターネット等のネットワークを介して他の装置から取得されてDRAM85に記憶されてもよい。プロセッサ81は、DRAM85に記憶された各種プログラムPaを実行する。
また、DRAM85のデータ記憶領域には、ゲームシステム1において実行される情報処理等の処理において用いられる各種のデータが記憶される。本実施例においては、DRAM85には、操作データDa、プレイヤキャラクタデータDb、オブジェクトデータDc、組立品オブジェクトデータDd、カウントダウンデータDe、爆発データDf、他の印加力データDg、仮想カメラデータDh、および画像データDi等が記憶される。
操作データDaは、左コントローラ3および/または右コントローラ4や本体装置2からそれぞれ適宜取得した操作データである。上述したように、左コントローラ3および/または右コントローラ4や本体装置2からそれぞれ取得される操作データには、各入力部(具体的には、各ボタン、アナログスティック、タッチパネル)からの入力に関する情報(具体的には、操作に関する情報)が含まれている。本実施例では、左コントローラ3および/または右コントローラ4や本体装置2からそれぞれ操作データを取得しており、当該取得した操作データを用いて操作データDaが適宜更新される。なお、操作データDaの更新周期は、後述するゲームシステム1で実行される処理の周期である1フレーム毎に更新されてもよいし、上記操作データが取得される周期毎に更新されてもよい。
プレイヤキャラクタデータDbは、仮想空間に配置されているプレイヤキャラクタPCの配置位置、配置方向、および配置姿勢や、仮想空間における動作や状態(移動速度等の移動パラメータを含む)等を示すデータである。
オブジェクトデータDcは、仮想空間に配置されている各オブジェクト(組立品オブジェクトを構成している各オブジェクトを含む)の配置位置、配置方向、および配置姿勢や、仮想空間における動作や状態(ON状態かOFF状態かを示すパラメータや、速度、加速度、角速度、角加速度、慣性モーメントテンソル等のパラメータを含む)等を示すデータである。
組立品オブジェクトデータDdは、仮想空間に配置されている組立品オブジェクトの構成および構造、仮想空間に配置されている配置位置、配置方向、および配置姿勢や、仮想空間における動作や状態(速度、加速度、角速度、角加速度、慣性モーメントテンソル等のパラメータを含む)等を示すデータである。
カウントダウンデータDeは、爆弾アイテムB毎に起動してから爆発するまでの時間を計時するカウントを示すデータである。
爆発データDfは、仮想空間において生じた爆発の発生位置および爆発範囲と、当該爆発範囲内のオブジェクトそれぞれに作用する爆発推進力(爆発衝突位置、爆発方向、爆発質量、爆発速度等)とを示すデータである。
他の印加力データDgは、仮想空間内のオブジェクトそれぞれに爆発以外の現象により印加されている力を示すデータである。
仮想カメラデータDhは、仮想空間に配置されている仮想カメラの位置、方向、画角等を示すデータである。
画像データDiは、表示画面(例えば、本体装置2のディスプレイ12)に画像(例えば、プレイヤキャラクタPCの画像、各オブジェクトの画像、他のキャラクタの画像、各組立品オブジェクトの画像、仮想空間のフィールドの画像、背景画像等)を表示するためのデータである。
次に、図17~図21を参照して、本実施例における情報処理の一例であるゲーム処理の詳細な一例を説明する。図17は、ゲームシステム1で実行されるゲーム処理の一例を示すフローチャートである。図18は、図17のステップS123における爆弾アイテム関連処理の一例を示すサブルーチンである。図19は、図18のステップS139および図20のステップS152における爆発推進力生成処理の一例を示すサブルーチンである。図20は、図17のステップS124における他の爆発処理の一例を示すサブルーチンである。図21は、図17のステップS125における動的オブジェクト更新処理の一例を示すサブルーチンである。本実施例においては、図17~図21に示す一連の処理は、プロセッサ81が各種プログラムPaに含まれる所定のアプリケーションプログラム(ゲームプログラム)を実行することによって行われる。また、図17~図21に示すゲーム処理が開始されるタイミングは任意である。
なお、図17~図21に示すフローチャートにおける各ステップの処理は、単なる一例に過ぎず、同様の結果が得られるのであれば、各ステップの処理順序を入れ替えてもよいし、各ステップの処理に加えて(または代えて)別の処理が実行されてもよい。また、本実施例では、上記フローチャートの各ステップの処理をプロセッサ81が実行するものとして説明するが、上記フローチャートにおける一部のステップの処理を、プロセッサ81以外のプロセッサや専用回路が実行するようにしてもよい。また、本体装置2において実行される処理の一部は、本体装置2と通信可能な他の情報処理装置(例えば、本体装置2とネットワークを介して通信可能なサーバ)によって実行されてもよい。すなわち、図17~図21に示す各処理は、本体装置2を含む複数の情報処理装置が協働することによって実行されてもよい。
図17において、プロセッサ81は、ゲーム処理における初期設定を行い(ステップS121)、次のステップに処理を進める。例えば、上記初期設定では、プロセッサ81は、以下に説明する処理を行うためのパラメータを初期化して、各データを更新する。一例として、プロセッサ81は、仮想空間のゲームフィールドに各種オブジェクトやキャラクタ等を配置することによって初期状態の仮想空間を生成して、オブジェクトデータDcおよび組み立てオブジェクトデータDdを更新する。また、プロセッサ81は、初期状態の仮想空間におけるデフォルト位置に所定の姿勢のプレイヤキャラクタPCおよび仮想カメラを配置して、プレイヤキャラクタデータDbおよび仮想カメラデータDhを更新する。
次に、プロセッサ81は、左コントローラ3、右コントローラ4、および/または本体装置2から操作データを取得して操作データDaを更新し(ステップS122)、次のステップに処理を進める。
次に、プロセッサ81は、爆弾アイテム関連処理を行い(ステップS123)、ステップS124に処理を進める。以下、図18を参照して、上記ステップS123における爆弾アイテム関連処理について説明する。
図18において、プロセッサ81は、仮想空間に配置されている全ての爆弾アイテムB(組立品オブジェクトに構成されている爆弾アイテムBを含む)に対する処理が完了したか否かを判定する(ステップS131)。そして、プロセッサ81は、全ての爆弾アイテムBに対する処理が完了していない場合、ステップS132に処理を進める。一方、プロセッサ81は、全ての爆弾アイテムBに対する処理が完了している場合、当該サブルーチンによる処理を終了する。
ステップS132において、プロセッサ81は、仮想空間に配置されている全ての爆弾アイテムBのうち、処理が完了していない爆弾アイテムBを選択し、次のステップに処理を進める。
次に、プロセッサ81は、処理対象となっている爆弾アイテムBの仮想空間における位置および姿勢を更新して(ステップS133)、次のステップに処理を進める。一例として、プロセッサ81は、プレイヤキャラクタPCの動作により処理対象となっている爆弾アイテムBが動かされている場合、前フレームにおけるステップS126において更新されたプレイヤキャラクタPCの動作に基づいて当該爆弾アイテムBを移動させ、移動後の位置および姿勢を用いて、オブジェクトデータDcを更新する。他の例として、プロセッサ81は、爆弾アイテムBが仮想空間における物理法則に基づいて移動中である場合、仮想空間における物理演算に基づいて爆弾アイテムBを移動させ、移動後の位置および姿勢を用いて、オブジェクトデータDcを更新する。
次に、プロセッサ81は、処理対象となっている爆弾アイテムBが起動中であるか否かを判定する(ステップS134)。例えば、プロセッサ81は、オブジェクトデータDcを参照して、処理対象となっている爆弾アイテムBがON状態である場合、上記ステップS134において肯定判定する。そして、プロセッサ81は、処理対象となっている爆弾アイテムBが起動中でない場合、ステップS135に処理を進める。一方、プロセッサ81は、処理対象となっている爆弾アイテムBが起動中である場合、ステップS137に処理を進める。
ステップS135において、プロセッサ81は、処理対象となっている爆弾アイテムBに対してプレイヤキャラクタPCによる起動アクションが行われたか否かを判定する。例えば、プロセッサ81は、前フレームにおけるステップS126において更新されたプレイヤキャラクタPCの動作が、処理対象となっている爆弾アイテムBを起動する動作である場合、上記ステップS135において肯定判定する。そして、プロセッサ81は、処理対象となっている爆弾アイテムBに対してプレイヤキャラクタPCによる起動アクションが行われた場合、ステップS136に処理を進める。一方、プロセッサ81は、処理対象となっている爆弾アイテムBに対してプレイヤキャラクタPCによる起動アクションが行われていない場合、上記ステップS131に戻って処理を繰り返す。
ステップS136において、プロセッサ81は、起動カウントダウンを開始して、上記ステップS131に戻って処理を繰り返す。例えば、プロセッサ81は、処理対象となっている爆弾アイテムBの状態をON状態に移行させてオブジェクトデータDcを更新するとともに、当該爆弾アイテムBを起動させてから爆発するまでの時間を示すカウントを設定して当該爆弾アイテムBのカウントダウンデータDeを更新することにより、当該爆弾アイテムBのカウントダウン処理を開始する。
一方、ステップS137において、プロセッサ81は、起動カウントダウンを更新し、次のステップに処理を進める。例えば、プロセッサ81は、処理対象となっている爆弾アイテムBのカウントを1減らして、当該爆弾アイテムBのカウントダウンデータDeを更新する。
次に、プロセッサ81は、処理対象となっている爆弾アイテムBのカウントが0であるか否かを判定する(ステップS138)。そして、プロセッサ81は、処理対象となっている爆弾アイテムBのカウントが0である場合、ステップS139に処理を進める。一方、プロセッサ81は、処理対象となっている爆弾アイテムBのカウントが0でない場合、上記ステップS131に戻って処理を繰り返す。
ステップS139において、プロセッサ81は、爆発推進力生成処理を行い、上記ステップS131に戻って処理を繰り返す。以下、図19を参照して、上記ステップS139における爆発推進力生成処理について説明する。
図19において、プロセッサ81は、処理対象となっている爆弾アイテムB等を爆発源とする新たな爆発を設定するとともに、当該爆発における衝突位置を算出して(ステップS141)、次のステップに処理を進める。例えば、プロセッサ81は、処理対象となっている爆弾アイテムB等の爆発源の重心や中心を爆発発生位置とする所定範囲の爆発範囲を有する新たな爆発を設定し、当該爆弾アイテムB等の爆発源を消滅させて、オブジェクトデータDcおよび爆発データDfを更新する。そして、プロセッサ81は、設定された爆発範囲内のオブジェクト毎に上記新たな爆発の衝突位置をそれぞれ算出して、爆発データDfを更新する。なお、爆発発生位置、爆発範囲、および爆発衝突位置の設定方法については、上述した説明と同様であるため、ここでは詳細な説明を省略する。
次に、プロセッサ81は、上記新たな爆発の爆発推進力を生成し(ステップS142)、当該サブルーチンによる処理を終了する。例えば、プロセッサ81は、上記ステップS141において設定したオブジェクトの衝突位置それぞれに作用させる爆発質量、爆発速度、爆発方向から成る物理判定(爆発推進力)を生成して、爆発データDfを更新する。なお、爆発質量、爆発速度、爆発方向の算出方法については、図15等を用いて説明した方法と同様であるため、ここでは詳細な説明を省略する。
図17に戻り、上記ステップS123の爆弾アイテム関連処理の後、プロセッサ81は、他の爆発処理を行い(ステップS124)、ステップS125に処理を進める。以下、図20を参照して、上記ステップS124における他の爆発処理について説明する。
図20において、プロセッサ81は、爆弾アイテムB以外を爆発源とする新たな爆発が発生したか否かを判定する(ステップS151)。そして、プロセッサ81は、爆弾アイテムB以外を爆発源とする新たな爆発が発生した場合、ステップS152に処理を進める。一方、プロセッサ81は、爆弾アイテムB以外を爆発源とする新たな爆発が発生しない場合、当該サブルーチンによる処理を終了する。
ステップS152において、プロセッサ81は、上記ステップS151において新たに発生したと判定された爆発に対して爆発推進力生成処理を行い、当該サブルーチンによる処理を終了する。なお、上記ステップS152において行われる爆発推進力生成処理は、図19を用いて説明した爆発推進力生成処理と同様であるため、ここでは詳細な説明を省略する。
図17に戻り、プロセッサ81は、上記ステップS124の他の爆発処理の後、動的オブジェクト更新処理を行い(ステップS125)、ステップS126に処理を進める。以下、図21を参照して、上記ステップS125における動的オブジェクト更新処理について説明する。
図21において、プロセッサ81は、仮想空間に配置されている全ての動的オブジェクト(組立品オブジェクトを含む)に対する処理が完了したか否かを判定する(ステップS161)。そして、プロセッサ81は、全ての動的オブジェクトに対する処理が完了していない場合、ステップS162に処理を進める。一方、プロセッサ81は、全ての動的オブジェクトに対する処理が完了している場合、当該サブルーチンによる処理を終了する。
ステップS162において、プロセッサ81は、仮想空間に配置されている全ての動的オブジェクトのうち、処理が完了していない動的オブジェクトを選択し、次のステップに処理を進める。
次に、プロセッサ81は、処理対象となっている動的オブジェクトに対して、新たな爆発の衝突が生じているか否かを判定する(ステップS163)。例えば、プロセッサ81は、上記ステップS139または上記ステップS152による爆発推進力生成処理により、処理対象となっている動的オブジェクトに新たな爆発による物理判定(爆発推進力)が生成されている場合、上記ステップS163において肯定判定する。そして、プロセッサ81は、処理対象となっている動的オブジェクトに対して、新たな爆発の衝突が生じている場合、ステップS164に処理を進める。一方、プロセッサ81は、処理対象となっている動的オブジェクトに対して、新たな爆発の衝突が生じていない場合、ステップS166に処理を進める。
ステップS164において、プロセッサ81は、処理対象となっている動的オブジェクトに対して衝突が生じた爆発による動きパラメータを更新し、次のステップに処理を進める。例えば、プロセッサ81は、爆発データDfを参照して、処理対象となっている動的オブジェクトに対して設定されている爆発推進力(物理判定)の影響による当該動的オブジェクトの動きパラメータ(速度、加速度、角速度、角加速度等)を算出して、オブジェクトデータDcまたは組立品オブジェクトデータDdを更新する。なお、処理対象となっている動的オブジェクトに対して、複数の爆発が新たに生じている場合、当該複数の爆発をマージして上記処理を行ってもよいし、複数の爆発それぞれに対して上記動きを算出してもよい。
次に、プロセッサ81は、処理対象となっている動的オブジェクトの慣性モーメントテンソルを一時的に上昇させて(ステップS165)、ステップS166に処理を進める。例えば、プロセッサ81は、処理対象となっている動的オブジェクトの慣性モーメントテンソルを、現フレーム間のみ(後述するステップS168の処理が終わるまで)所定量上昇させて、オブジェクトデータDcまたは組立品オブジェクトデータDdを更新する。
ステップS166において、プロセッサ81は、爆発以外の現象に起因して処理対象となっている動的オブジェクトに作用している力を全て算出し、次のステップに処理を進める。例えば、プロセッサ81は、仮想空間において処理対象となっている動的オブジェクトに作用している全ての力の物理判定を生成して、他の印加力データDgを更新する。ここで、爆発以外の現象に起因して動的オブジェクトに作用している力は、当該動的オブジェクトの周囲から受ける仮想空間内の様々な力であり、他からの攻撃により受ける力(負荷)、仮想空間における移動や振動による慣性力、他のオブジェクト、キャラクタ、フィールド等との衝突や接触による衝撃力や摩擦力、動的オブジェクトの自重および当該動的オブジェクトに載っている他のオブジェクトやキャラクタの重量による重力、仮想空間に生じている各種現象に起因する圧力等を含んでいる。
次に、プロセッサ81は、処理対象となっている動的オブジェクトにおける、爆発以外の力による動きパラメータを更新し(ステップS167)、次のステップに処理を進める。例えば、プロセッサ81は、他の印加力データDgを参照して、処理対象となっている動的オブジェクトに対して設定されている爆発以外の力(物理判定)の影響による当該動的オブジェクトの動きパラメータ(速度、加速度、角速度、角加速度等)を算出して、オブジェクトデータDcまたは組立品オブジェクトデータDdを更新する。なお、処理対象となっている動的オブジェクトに、爆発推進力を含めて複数の力による動きパラメータが算出されている場合、これらの動きパラメータを相殺したり累積したりすることにより、1つの動きパラメータにまとめられてもよい。
次に、プロセッサ81は、処理対象となっている動的オブジェクトの仮想空間における位置および姿勢を更新し(ステップS168)、上記ステップS161に戻って処理を繰り返す。例えば、プロセッサ81は、オブジェクトデータDcまたは組立品オブジェクトデータDdを参照して、処理対象となっている動的オブジェクトに対して設定されている仮想空間における配置位置、配置方向、および配置姿勢と動きパラメータおよび慣性モーメントテンソルとを取得する。そして、プロセッサ81は、取得したパラメータに基づいた物理演算を行うことにより、仮想空間において上記動的オブジェクトを移動させて、当該移動後の配置位置、配置方向、および配置姿勢を用いてオブジェクトデータDcまたは組立品オブジェクトデータDdを更新する。
図17に戻り、上記ステップS125の動的オブジェクト更新処理の後、プロセッサ81は、プレイヤキャラクタ更新処理を行い(ステップS126)、次のステップに処理を進める。例えば、プロセッサ81は、操作データDaに基づいて、プレイヤキャラクタPCの動作を設定する。一例として、プロセッサ81は、操作データDaが示すユーザ操作入力および仮想空間における仮想的な物理演算(例えば、仮想的な慣性や重力)等に基づいて、プレイヤキャラクタPCの位置、方向、姿勢、動作、および状態等を設定して、プレイヤキャラクタデータDbを更新する。
上記プレイヤキャラクタPCの動作には、上述したオブジェクト操作アクションが含まれる。プロセッサ81は、プレイヤキャラクタPCがオブジェクト操作アクションを行っている場合、プレイヤキャラクタデータDbを更新するとともに、当該オブジェクト操作アクションの制御対象である操作可能オブジェクトを他のオブジェクトに接着させて組立品オブジェクトを生成する処理を行う。プロセッサ81は、組立品オブジェクトが生成された場合、生成された組立品オブジェクトの構成および構造と当該組立品オブジェクトの配置位置、配置方向、および配置姿勢とを用いて、組立品オブジェクトデータDdを更新する。なお、組立品オブジェクトの生成方法については、図10~図12を用いて説明した方法と同様であるため、ここでは詳細な説明を省略する。
また、上記プレイヤキャラクタPCの動作には、爆弾アイテムBを起動させる動作が含まれる。例えば、プレイヤキャラクタPCが爆弾アイテムBに近づいて叩く動作や爆弾アイテムBを攻撃する動作を行った場合、当該動作の対象となった爆弾アイテムBが起動してON状態に移行する。また、少なくとも1つの爆弾アイテムBが構成されている組立品オブジェクトの一部をプレイヤキャラクタPCが叩く動作を行うことにより、当該組立品オブジェクトに構成されている爆弾アイテムB全てが起動してON状態に移行する。プロセッサ81は、プレイヤキャラクタPCが爆弾アイテムBの何れかを起動させる動作を行った場合、プレイヤキャラクタデータDbを更新するとともに、次のフレームにおける上記ステップS135において肯定判定されることにより上記ステップS136が実行されて、起動された爆弾アイテムBに対する起動カウントダウン処理が開始される。
また、上記プレイヤキャラクタPCの動作には、プレイヤキャラクタPCが爆弾アイテムB等のアイテムオブジェクト等を取得する動作が含まれる。例えば、プロセッサ81は、プレイヤキャラクタPCがアイテムオブジェクトを取得する動作を行った場合、当該動作により取得されたアイテムオブジェクトをプレイヤキャラクタPCに追加して収納する処理を行う。
次に、プロセッサ81は、描画処理を行い(ステップS127)、次のステップに処理を進める。例えば、プロセッサ81は、プレイヤキャラクタデータDb、オブジェクトデータDc、および組立品オブジェクトデータDdに基づいて、仮想空間にプレイヤキャラクタPC、各オブジェクト、および組立品オブジェクト等をそれぞれ配置する。また、プロセッサ81は、仮想カメラデータDhに基づいて、表示画像を生成するための仮想カメラの位置および/または姿勢を設定し、当該仮想カメラを仮想空間に配置する。そして、設定した仮想カメラから見た仮想空間の画像を生成して、当該仮想空間画像をディスプレイ12に表示する制御を行う。なお、プロセッサ81は、プレイヤキャラクタPCの位置や姿勢に基づいて、仮想空間における仮想カメラの移動を制御する処理を実行して、仮想カメラデータDhを更新してもよい。また、プロセッサ81は、操作データDaに基づいて、仮想空間において仮想カメラを移動させて、仮想カメラデータDhを更新してもよい。
次に、プロセッサ81は、ゲーム処理を終了するか否かを判定する(ステップS128)。上記ステップS128においてゲーム処理を終了する条件としては、例えば、ゲーム処理が終了される条件が満たされたことや、ユーザがゲーム処理を終了する操作を行ったこと等がある。プロセッサ81は、ゲーム処理を終了しない場合に上記ステップS122に戻って処理を繰り返し、ゲーム処理を終了する場合に当該フローチャートによる処理を終了する。以降、ステップS122~ステップS128の一連の処理は、ステップS128で処理を終了すると判定されるまで繰り返し実行される。
このように、本実施例においては、仮想空間において爆弾アイテムBを爆発させることにより動的オブジェクトを移動させる場合に、爆発発生位置から当該動的オブジェクト上の最も近い衝突位置に向かう方向に所定速度で所定質量の点が衝突したものとして、物理演算に基づいて当該動的オブジェクトの位置および姿勢が算出されるため、爆発発生位置から直感的に予想される方向に近い方向へ当該動的オブジェクトを移動させることができる。
なお、ゲームシステム1は、どのような装置であってもよく、携帯型のゲーム装置、任意の携帯型電子機器(PDA(Personal Digital Assistant)、携帯電話、パーソナルコンピュータ、カメラ、タブレット等)等であってもよい。
また、上述した説明では情報処理(ゲーム処理)をゲームシステム1で行われる例を用いたが、上記処理ステップの少なくとも一部を他の装置で行ってもかまわない。例えば、ゲームシステム1がさらに他の装置(例えば、サーバ、他の情報処理装置、他の画像表示装置、他のゲーム装置、他の携帯端末)と通信可能に構成されている場合、上記処理ステップは、さらに当該他の装置が協働することによって実行してもよい。このように、上記処理ステップの少なくとも一部を他の装置で行うことによって、上述した処理と同様の処理が可能となる。また、上述した情報処理は、少なくとも1つの情報処理装置により構成される情報処理システムに含まれる1つのプロセッサまたは複数のプロセッサ間の協働により実行されることが可能である。また、上記実施例においては、ゲームシステム1のプロセッサ81が所定のプログラムを実行することによって情報処理を行うことが可能であるが、ゲームシステム1が備える専用回路によって上記処理の一部または全部が行われてもよい。
ここで、上述した変形例によれば、いわゆるクラウドコンピューティングのシステム形態や分散型の広域ネットワークおよびローカルネットワークのシステム形態でも本発明を実現することが可能となる。例えば、分散型のローカルネットワークのシステム形態では、据置型の情報処理装置(据置型のゲーム装置)と携帯型の情報処理装置(携帯型のゲーム装置)との間で上記処理を協働により実行することも可能となる。なお、これらのシステム形態では、上述した処理をどの装置で行うかについては特に限定されず、どのような処理分担をしたとしても本発明を実現できることは言うまでもない。
また、上述した情報処理で用いられる処理順序、設定値、判定に用いられる条件等は、単なる一例に過ぎず他の順序、値、条件であっても、本実施例を実現できることは言うまでもない。
また、上記プログラムは、外部メモリ等の外部記憶媒体を通じてゲームシステム1に供給されるだけでなく、有線または無線の通信回線を通じて当該装置に供給されてもよい。また、上記プログラムは、当該装置内部の不揮発性記憶装置に予め記録されていてもよい。なお、上記プログラムを記憶する情報記憶媒体としては、不揮発性メモリの他に、CD-ROM、DVD、あるいはそれらに類する光学式ディスク状記憶媒体、フレキシブルディスク、ハードディスク、光磁気ディスク、磁気テープ、などでもよい。また、上記プログラムを記憶する情報記憶媒体としては、上記プログラムを記憶する揮発性メモリでもよい。このような記憶媒体は、コンピュータ等が読み取り可能な記録媒体ということができる。例えば、コンピュータ等に、これらの記録媒体のプログラムを読み込ませて実行させることにより、上述で説明した各種機能を提供させることができる。
以上、本発明を詳細に説明してきたが、前述の説明はあらゆる点において本発明の例示に過ぎず、その範囲を限定しようとするものではない。本発明の範囲を逸脱することなく種々の改良や変形を行うことができることは言うまでもない。また、当業者は、本発明の具体的な実施例の記載から、本発明の記載および技術常識に基づいて等価な範囲を実施することができることが理解される。また、本明細書において使用される用語は、特に言及しない限り、当該分野で通常用いられる意味で用いられることが理解されるべきである。したがって、他に定義されない限り、本明細書中で使用される全ての専門用語および技術用語は、本発明の属する分野の当業者によって一般的に理解されるのと同じ意味を有する。矛盾する場合、本明細書(定義を含めて)が優先する。