[1.ゲームシステムの構成]
以下、本実施形態の一例に係るゲームシステムについて説明する。本実施形態におけるゲームシステム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に対して入力を行うことが可能となる。
本体装置2は、タッチパネル13の制御を行う回路であるタッチパネルコントローラ86を備える。タッチパネルコントローラ86は、タッチパネル13とプロセッサ81との間に接続される。タッチパネルコントローラ86は、タッチパネル13からの信号に基づいて、例えばタッチ入力が行われた位置を示すデータを生成して、プロセッサ81へ出力する。
また、ディスプレイ12は、プロセッサ81に接続される。プロセッサ81は、(例えば、上記の情報処理の実行によって)生成した画像および/または外部から取得した画像をディスプレイ12に表示する。
本体装置2は、コーデック回路87およびスピーカ(具体的には、左スピーカおよび右スピーカ)88を備える。コーデック回路87は、スピーカ88および音声入出力端子25に接続されるとともに、プロセッサ81に接続される。コーデック回路87は、スピーカ88および音声入出力端子25に対する音声データの入出力を制御する回路である。
また、本体装置2は、加速度センサ89を備える。本実施形態においては、加速度センサ89は、所定の3軸(例えば、図1に示すxyz軸)方向に沿った加速度の大きさを検出する。なお、加速度センサ89は、1軸方向あるいは2軸方向の加速度を検出するものであってもよい。
また、本体装置2は、角速度センサ90を備える。本実施形態においては、角速度センサ90は、所定の3軸(例えば、図1に示すxyz軸)回りの角速度を検出する。なお、角速度センサ90は、1軸回りあるいは2軸回りの角速度を検出するものであってもよい。
加速度センサ89および角速度センサ90は、プロセッサ81に接続され、加速度センサ89および角速度センサ90の検出結果は、プロセッサ81へ出力される。プロセッサ81は、上記の加速度センサ89および角速度センサ90の検出結果に基づいて、本体装置2の動きおよび/または姿勢に関する情報を算出することが可能である。
本体装置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へ出力する。
左コントローラ3は、慣性センサを備える。具体的には、左コントローラ3は、加速度センサ104を備える。また、左コントローラ3は、角速度センサ105を備える。本実施形態においては、加速度センサ104は、所定の3軸(例えば、図4に示すxyz軸)方向に沿った加速度の大きさを検出する。なお、加速度センサ104は、1軸方向あるいは2軸方向の加速度を検出するものであってもよい。本実施形態においては、角速度センサ105は、所定の3軸(例えば、図4に示すxyz軸)回りの角速度を検出する。なお、角速度センサ105は、1軸回りあるいは2軸回りの角速度を検出するものであってもよい。加速度センサ104および角速度センサ105は、それぞれ通信制御部101に接続される。そして、加速度センサ104および角速度センサ105の検出結果は、適宜のタイミングで繰り返し通信制御部101へ出力される。
通信制御部101は、各入力部(具体的には、各ボタン103、アナログスティック32、各センサ104および105)から、入力に関する情報(具体的には、操作に関する情報、またはセンサによる検出結果)を取得する。通信制御部101は、取得した情報(または取得した情報に所定の加工を行った情報)を含む操作データを本体装置2へ送信する。なお、操作データは、所定時間に1回の割合で繰り返し送信される。なお、入力に関する情報が本体装置2へ送信される間隔は、各入力部について同じであってもよいし、同じでなくてもよい。
上記操作データが本体装置2へ送信されることによって、本体装置2は、左コントローラ3に対して行われた入力を得ることができる。すなわち、本体装置2は、各ボタン103およびアナログスティック32に対する操作を、操作データに基づいて判別することができる。また、本体装置2は、左コントローラ3の動きおよび/または姿勢に関する情報を、操作データ(具体的には、加速度センサ104および角速度センサ105の検出結果)に基づいて算出することができる。
左コントローラ3は、電力供給部106を備える。本実施形態において、電力供給部106は、バッテリおよび電力制御回路を有する。図示しないが、電力制御回路は、バッテリに接続されるとともに、左コントローラ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、慣性センサ(加速度センサ114および角速度センサ115)を備える。これらの各入力部については、左コントローラ3の各入力部と同様の機能を有し、同様に動作する。
右コントローラ4は、電力供給部116を備える。電力供給部116は、左コントローラ3の電力供給部106と同様の機能を有し、同様に動作する。
[2.ゲームシステムにおける処理の概要]
[2−1.ゲームおよびゲーム処理の概要]
以下、図8を参照して、本実施形態におけるゲームシステム1によって実行される情報処理の概要について説明する。本実施形態においては、ゲームシステム1は、ユーザがゲーム空間(換言すれば、ゲームステージ)を作成するとともに、作成されたゲーム空間を用いて遊ぶゲームのためのゲームプログラムを実行する。すなわち、上記ゲームにおいては、ユーザがゲーム空間を作成する作成モードと、作成されたゲーム空間についてユーザ(換言すれば、プレイヤ)がゲームプレイを行うプレイモードとがある。作成モードにおいては、ユーザは、ゲーム空間内にオブジェクトを配置することによってゲーム空間を作成する。プレイモードにおいては、プレイヤは、ゲーム空間に登場するプレイヤオブジェクトを操作してゲーム上の目的(例えば、ゴールに到達する)を達成する。なお、本実施形態では、作成モードにおいてゲーム空間を作成する者をユーザと呼び、プレイモードにおいてゲームをプレイする者をプレイヤと呼ぶ。なお、ユーザとプレイヤとは、同じ者であってもよいし、異なる者であってもよい。
図8は、ゲームシステム1の機能的構成の一例を示す機能ブロック図である。本実施形態においては、ゲームシステム1は、オブジェクト配置手段151と、消去手段152と、復元手段153と、補完手段154と、画像生成手段155と、プレイヤオブジェクト制御手段156とを備える。本実施形態において、上記各手段151〜156は、本体装置2のプロセッサ81によって実現される。具体的には、上記各手段151〜156は、プロセッサ81がアクセス可能な記憶媒体に記憶された情報処理プログラム(具体的には、ゲームプログラム)をプロセッサ81が実行することによって実現される。なお、「プロセッサ81がアクセス可能な記憶媒体」とは、例えば、スロット23に装着される記憶媒体であってもよいし、フラッシュメモリ84であってもよい。
オブジェクト配置手段151は、作成モードにおいて、ユーザの指示に基づいて、ゲーム空間内にパーツオブジェクトを配置する。パーツオブジェクトとは、例えば、ゲーム空間を構成する地形(例えば、後述するブロックオブジェクト、傾斜オブジェクト、および、補完オブジェクト)、または、障害物(例えば、後述する土管オブジェクト)等を表すオブジェクトである。本実施形態においては、パーツオブジェクトは、衝突判定(当たり判定とも言う)に用いられるオブジェクトである。つまり、ゲームシステム1は、プレイモードにおけるゲームプレイ中において、パーツオブジェクトとプレイヤオブジェクトとの衝突判定を行う。また、オブジェクト配置手段151は、ゲーム空間内に配置されたパーツオブジェクトを、ユーザの指示に基づいて移動させたり、変形させたりする。
オブジェクト配置手段151は、ユーザの指示を示す入力情報を受け付け、当該指示に基づいてゲーム空間内に配置し、パーツオブジェクト情報を出力する。例えば、パーツオブジェクト情報は、ゲーム空間内に配置されるパーツオブジェクトを規定するための情報であり、具体的には、パーツオブジェクトの種類、位置、形状、および、向きを示す。
消去手段152は、作成モードにおいて、ゲーム空間内に配置されたパーツオブジェクトの一部を消去する消去処理を、所定の条件下で実行する。消去処理の詳細については、後述する“[2−5.傾斜オブジェクトに対する消去処理]”で述べる。消去手段152は、オブジェクト配置手段151から出力されたパーツオブジェクト情報に基づいてパーツオブジェクトに対する消去処理を必要に応じて実行し、消去処理後のパーツオブジェクトを示すパーツオブジェクト情報を出力する。
復元手段153は、作成モードにおいて、上記消去処理によって一部が消去されたパーツオブジェクトについて、消去された部分を復元する復元処理を、所定の条件下で実行する。復元処理の詳細については、後述する“[2−5.傾斜オブジェクトに対する消去処理]”で述べる。復元手段153は、オブジェクト配置手段151から出力されたパーツオブジェクト情報に基づいてパーツオブジェクトに対する復元処理を必要に応じて実行し、復元処理後のパーツオブジェクトを示すパーツオブジェクト情報を出力する。
補完手段154は、作成モードにおいて、ゲーム空間内にパーツオブジェクトが配置された場合に、後述する補完条件が満たされたことに応じて、ゲーム空間内に補完オブジェクトを配置する補完処理を実行する。補完オブジェクトおよび補完処理の詳細については、後述する“[2−6.傾斜オブジェクトに関する補完処理]”で述べる。補完手段154は、オブジェクト配置手段151から出力されたパーツオブジェクト情報に基づいて補完処理を必要に応じて実行し、補完処理によってゲーム空間内に配置された補完オブジェクトに関するパーツオブジェクト情報を出力する。
画像生成手段155は、上記各手段151〜154から出力される情報に基づいて生成されるゲーム空間を表すゲーム画像を生成する。画像生成手段155によって生成されたゲーム画像は、表示装置に出力されて表示される。作成モードにおいては、作成中のゲーム空間を表すゲーム画像(図9)が表示装置に表示される。なお、ゲーム画像が表示される表示装置は、本体装置2のディスプレイ12であってもよいし、上述のクレードルに接続される据置型モニタであってもよい。
プレイヤオブジェクト制御手段156は、プレイモードにおいて、パーツオブジェクトが配置されたゲーム空間内において、当該ゲーム空間内に配置されるプレイヤオブジェクトをプレイヤの指示に基づいて移動させる。プレイヤオブジェクト制御手段156は、ユーザの指示を示す入力情報を受け付け、当該指示に基づいてプレイヤオブジェクトを移動させ、移動後のプレイヤオブジェクトに関するプレイヤオブジェクト情報を出力する。例えば、プレイヤオブジェクト情報は、ゲーム空間内に配置されるプレイヤオブジェクトを規定するための情報であり、具体的には、プレイヤオブジェクトの状態、大きさ、位置、および、体勢を示す。なお、プレイヤオブジェクト制御手段156は、プレイヤオブジェクトに加えて、ゲーム空間に登場する他のオブジェクトの動作を制御してもよい。当該他のオブジェクトは、例えば、敵オブジェクト、アイテムオブジェクト、および、地形オブジェクト(つまり、地形オブジェクトは、移動可能なものであってもよい)等である。
プレイモードにおいて、画像生成手段155は、プレイヤオブジェクト情報に基づいて、プレイヤオブジェクトを含むゲーム空間を表す画像を生成する。プレイモードにおいては、プレイヤによって操作中であるプレイヤオブジェクトを含むゲーム空間を表すゲーム画像が表示装置に表示される。
[2−2.ゲーム空間内に配置されるオブジェクト]
次に、図9を参照して、ゲーム空間内に配置される各種オブジェクトについて説明する。図9は、作成モードにおいて表示されるゲーム画像の一例を示す図である。図9に示すように、作成モードにおけるゲーム画像は、ゲーム空間を表すゲーム空間画像201を含む。
本実施形態においては、ゲーム空間内には、上記パーツオブジェクトとして、ブロックオブジェクト204、傾斜オブジェクト205、および、土管オブジェクト206が配置され得る。ブロックオブジェクト204および傾斜オブジェクト205は、ゲーム空間における地形を表すオブジェクトである。ブロックオブジェクト204は、ゲーム空間における縦方向または横方向を向く辺のみによって構成されるオブジェクトである。本実施形態においては、傾斜オブジェクト205は、ゲーム空間における縦方向または横方向に対して傾いた斜辺を有するオブジェクトである。傾斜オブジェクト205は、ゲーム空間における坂道を表すオブジェクトであると言うことができる。土管オブジェクト206は、ゲーム空間における障害物を表すオブジェクトである。
図9に示すように、ゲーム空間内には、プレイヤオブジェクト207が配置される。プレイモードにおいては、作成モードにおいて配置された位置にプレイヤオブジェクト207が配置された状態でゲームが開始される。なお、本実施形態において、ゲーム空間内には、プレイヤオブジェクト207の他に、敵オブジェクトおよびアイテムオブジェクトがプレイヤの指示に基づいて配置され得る。
図9に示すように、作成モードにおけるゲーム画像は、ゲーム空間内に配置するオブジェクトを指示するためのオブジェクトバー画像202を含む。オブジェクトバー画像202は、ゲーム空間内に配置され得るオブジェクトを配置する配置指示を行うためのアイコン211〜214を含む。具体的には、ブロックアイコン211は、ブロックオブジェクト204を配置する配置指示を行うためのアイコンである。傾斜アイコン212は、傾斜オブジェクト205を配置する配置指示を行うためのアイコンである。土管アイコン213は、土管オブジェクト206を配置する配置指示を行うためのアイコンである。プレイヤアイコン214は、プレイヤオブジェクト207を配置する配置指示を行うためのアイコンである。
本実施形態においては、作成モードにおいて、ユーザは、アイコン211〜214のいずれか1つを選択する指示(例えば、アイコンをタッチする指示)を行った後、画面上におけるゲーム空間内の位置を指定する配置指示(例えば、当該位置をタッチする指示)を行うことによって、選択したアイコンに対応するオブジェクトをゲーム空間内に配置することができる。なお、ゲーム空間内にオブジェクトを配置するための指示操作は任意であり、他の操作によってオブジェクトが配置されてもよい。
図9に示すように、作成モードにおけるゲーム画像は、作成モードにおける各種の指示を行うためのメニューバー画像203を含む。本実施形態においては、メニューバー画像203は、メニューアイコン215と、消去アイコン216とを含む。メニューアイコン215は、メニュー画像を表示する指示を行うためのアイコンである。メニュー画像は、例えば、作成されたゲーム空間を保存する指示、作成モードを終了する指示、プレイモードへ移行する指示、および、ゲームを終了する指示等を行うためのアイコンを含む。つまり、ユーザは、メニュー画像を表示させることによってこれらの指示を行うことができる。また、消去アイコン216は、ゲーム空間内に配置されたオブジェクトを消去する指示を行うためのアイコンである。例えば、作成モードにおいて、ユーザは、消去アイコン216を選択する指示を行った後、ゲーム空間内に配置されたオブジェクトを指定する指示を行うことによって、指定したオブジェクトをゲーム空間から消去することができる。
また、本実施形態においては、図9に示すように、作成モードにおいては、ゲーム空間にグリッドが設定される。本実施形態においては、グリッドは、縦方向のグリッド線と横方向のグリッド線とによって規定される(図9に示す点線を参照)。なお、本実施形態においては、ゲーム空間における縦方向は、ゲーム空間において仮想的に設定される重力方向(鉛直方向。より具体的には、鉛直下方向)に平行であり、ゲーム空間における横方向は、当該重力方向に垂直な方向(換言すれば、水平方向)である。図9に示すように、グリッドを構成するセル(換言すれば、グリッドのマス目)は、正方形である。
本実施形態においては、作成モードにおいて、各オブジェクトは、グリッドのセルに従って配置される。すなわち、オブジェクト配置手段151は、グリッドの交点にパーツオブジェクトの頂点が位置するように当該パーツオブジェクトを配置する。例えば、上記ブロックオブジェクトおよび傾斜オブジェクトは、オブジェクトの頂点がグリッドの交点(換言すれば、セルの頂点)に一致するように配置される。なお、オブジェクトの頂点がグリッドの交点と必ずしも一致するように当該オブジェクトが配置される必要はない。例えば、オブジェクトの角部分が丸みを帯びている場合には、配置されたオブジェクトの角部分はグリッドの交点と一致しなくてもよい。この場合、例えば、オブジェクトの辺の一部がグリッド線上に位置するように当該オブジェクトが配置されてもよい。ゲーム空間にグリッドが設定されることによって、ユーザにとってオブジェクトが配置しやすくなる。なお、他の実施形態においては、パーツオブジェクトが配置されるゲーム空間にグリッドが設定されなくてもよい。
[2−3.傾斜オブジェクト]
次に、図9および図10を参照して、傾斜オブジェクトについて説明する。本実施形態において、オブジェクト配置手段151は、ユーザの配置指示に基づいてゲーム空間内に傾斜オブジェクトを配置する。図10は、傾斜オブジェクトの種類の一例を示す図である。本実施形態においては、図10に示すように、ゲームシステム1においては、急斜オブジェクトと緩斜オブジェクトという2種類の傾斜オブジェクトが用意されている。急斜オブジェクトは、斜辺の傾きが相対的に急である斜面オブジェクトである。本実施形態においては、急斜オブジェクトの斜辺は、縦:横の比が1:1となる傾きである(図10参照)。緩斜オブジェクトは、斜辺の傾きが相対的に緩やかである斜面オブジェクトである。本実施形態においては、緩斜オブジェクトの斜辺は、縦:横の比が1:2となる傾きである(図10参照)。
なお、本実施形態においては、ユーザは、ゲーム画像として表示される上記傾斜アイコン212を、切替指示によって切り替えることができる。すなわち、ゲームシステム1は、ユーザの切替指示に応じて、傾斜アイコン212を、急斜オブジェクトを表すアイコンと、緩斜オブジェクトを表すアイコンとで切り替える。ユーザは、急斜オブジェクトと緩斜オブジェクトとのうち、配置したい急斜オブジェクトを表すアイコンを傾斜アイコン212として表示させた後、当該傾斜アイコン212を選択する指示を行うことによって、所望の傾斜オブジェクトをゲーム空間内に配置することができる。
図10に示すように、傾斜オブジェクトは、単位部分と、連続部分とを含む。単位部分は、基準方向(すなわち、グリッド線の方向)に対して傾いた向きを向く斜辺を有する。なお、図10に示すように、急斜オブジェクトと緩斜オブジェクトとでは、単位部分における斜辺の傾きが異なっている。なお、図10では、左端より右端が上側になる斜辺を有する傾斜オブジェクトの例を示しているが、本実施形態においては、右端より左端が上側になる斜辺を有する傾斜オブジェクトを配置することも可能である。
また、本実施形態においては、単位部分は、斜辺と、ゲーム空間における縦方向に平行な辺とを有する平行四辺形である。ただし、単位部分の形状は平行四辺形に限らず、他の形状であってもよい(後述する“(傾斜オブジェクトの形状に関する変形例)”を参照)。
図10に示すように、本実施形態においては、1つの単位部分を有する傾斜オブジェクトと、複数の単位部分を有する傾斜オブジェクトとを配置可能である。ここで、1つの単位部分を有する傾斜オブジェクトを「単傾斜オブジェクト」と呼び、複数の単位部分を有する傾斜オブジェクトを「複傾斜オブジェクト」と呼ぶ。図10に示すように、急斜オブジェクトと緩斜オブジェクトとの両方について、単傾斜オブジェクトと複傾斜オブジェクトとをそれぞれ配置可能である。
図10に示すように、複傾斜オブジェクトにおいては、複数の単位部分が連続して設けられる。具体的には、複傾斜オブジェクトにおける複数の単位部分は、複数の単位部分の各斜辺が連続することにより1つの斜辺をなすように、配置されている。なお、以下では、複傾斜オブジェクトに含まれる複数の単位部分からなる部分を「連続単位部分」と呼ぶ。
図10に示すように、傾斜オブジェクトは、連続部分(具体的には、上連続部分および下連続部分)を有する。連続部分は、斜辺に連続する連続辺を有する部分である。図10に示すように、本実施形態においては、傾斜オブジェクトは、下連続部分と上連続部分という2つの連続部分を含む。2つの連続部分の一方は、単位部分または連続単位部分の一方端に連続し、2つの連続部分の他方は、単位部分または連続単位部分の他方端に連続する。具体的には、下連続部分は、斜辺の下側の端に連続する連続辺(「下連続辺」と呼ぶ)を有する連続部分である。上連続部分は、斜辺の上側の端に連続する連続辺(「上連続辺」と呼ぶ)を有する連続部分である。
図10に示すように、本実施形態においては、連続辺は、横方向のグリッド線と平行である。したがって、本実施形態においては、連続辺は、斜辺とのなす内角が、90°以上となるように設定される。より具体的には、上連続辺は、斜辺とのなす角θ1が、鈍角(すなわち、90°<θ1<180°)となるように設定される。また、下連続辺は、斜辺とのなす角θ2が、優角(すなわち、180°<θ2<360°)となるように設定される。なお、連続辺と斜辺とのなす内角は、90°以上であって、270°以下であってもよい。例えば、下連続辺は、斜辺とのなす内角θ2が、180°<θ2<270°となるように設定されてもよい。このとき、連続辺と斜辺との外角についても鋭角にならないようにすることができる。
また、連続部分は、グリッドの方向(すなわち、縦方向および横方向)に平行な辺のみで構成される。本実施形態においては、連続部分は、グリッドのセルと同じ大きさの正方形である。
以上のように、本実施形態においては、傾斜オブジェクトは、単位部分と連続部分とによって構成される。したがって、ゲームシステム1は、単位部分の数を変更することで、斜辺の長さが異なる複数種類の傾斜オブジェクトを配置することができる。例えば、図10においては3つの単位部分を有する急斜オブジェクトを示しているが、ゲームシステム1は、2つの単位部分を有する急斜オブジェクトを配置することも可能であるし、4つ以上の単位部分を有する急斜オブジェクトを配置することも可能である。
なお、本明細書においては、傾斜オブジェクトの構成を説明する目的で、傾斜オブジェクトを上記単位部分と連続部分とに区切って説明を行う。また、後述する“[4.上記実施形態の作用効果および変形例]”においては、単位部分の構成を説明する目的で、単位部分を第1部分と第2部分とに区切って説明を行う(図24)。ただし、ゲームシステム1は、傾斜オブジェクトを上記の各部分に分けて管理する必要はない。すなわち、ゲームシステム1は、傾斜オブジェクトを1つのパーツオブジェクトとして管理してもよいし、傾斜オブジェクトを構成する上記各部分のオブジェクトをそれぞれ別のパーツオブジェクトとして管理してもよい。
なお、ゲームシステム1は、単位部分の数が異なる複数種類の傾斜オブジェクトを予め用意していてもよい。また、ゲームシステム1は、単位部分と連続部分とを予め用意しておき、これらの単位部分と連続部分とを組み合わせることで、斜辺の長さが異なる複数種類の傾斜オブジェクトを生成するようにしてもよい。
以上のように、本実施形態においては、傾斜オブジェクトは、斜辺に接続される連続辺を有するので、鋭角がない形状となる(図10参照)。ここで、鋭角を有するオブジェクトがゲーム空間内に配置される結果、ゲーム空間内における地形に鋭角部分が発生すると、オブジェクトと地形との衝突判定の処理を適切に行うことができなかったり、当該衝突判定の処理が複雑化したりするおそれがある。ひいては、ゲームシステム1における処理負担が大きくなったり、開発者の作業負担が大きくなったりするおそれがある。
図11は、ゲーム空間における、鋭角部分を有する地形の一例を示す図である。例えば、図11に示すように、鋭角部分を有する直角三角形のオブジェクト218が連続するような地形が生成された場合を考える。なお、本実施形態のようにゲーム空間をユーザが作成するゲームにおいては、開発者がこのような地形を作成しない場合であっても、ユーザによってこのような地形が作成されることもあり得る。
図11においては、4つの直角三角形のオブジェクト218が、それぞれの斜辺が連続するように配置されている。このとき、各オブジェクト218は鋭角の頂点で互いに接触しており、各オブジェクト218は互いに点でのみ接触している。そのため、プレイヤオブジェクト207は、2つのオブジェクト218が接触する点の位置で、斜面からすり抜けてしまったり、引っ掛かってスムーズに動けなくなったりする可能性がある。また、図11においては、4つのオブジェクト218によって形成される斜面の両端が鋭角となっている。この鋭角部分の近傍において、プレイヤオブジェクト207の挙動が不自然になる可能性がある。例えば、斜面の端部の鋭角部分をすり抜けてプレイヤオブジェクト207が移動したり、端部の鋭角部分にプレイヤオブジェクト207が引っ掛かってスムーズに移動できなかったりする可能性がある。なお、これらの可能性を低減するために、衝突判定の処理を複雑にする(例えば、上記の地形については特別な衝突判定処理を実行するようにする)ことが考えられる。しかし、衝突判定の処理が複雑になると、ゲームシステム1における処理負担が大きくなったり、開発者の作業負担が大きくなったりするおそれがある。
これに対して、本実施形態においては、オブジェクト配置手段151は、鋭角を有していない傾斜オブジェクトをゲーム空間内に配置するので、ゲーム空間内における地形に鋭角部分が発生する可能性を低減することができる。これによって、衝突判定の処理を簡易化することができ、ゲームシステム1は、衝突判定の処理を容易に行うことができる。したがって、ゲームシステム1における処理負担を軽減したり、開発者の作業負担を軽減したりすることができる。
本実施形態においては、単位部分は、斜辺と、当該斜辺に隣接する辺A(図10参照。換言すれば、図24における第3辺)とを有し、斜辺と辺Aとのなす角が鋭角となる。ここで、本実施形態においては、傾斜オブジェクトは、斜辺の端に連続し、単位部分の上記辺Aに連続する連続辺(換言すれば、斜辺の両端のうちで単位部分の上記辺Aに連続する側の端に連続する連続辺。すなわち、上連続辺)を有し、当該辺Aを一辺とし、当該斜辺と当該連続辺とのなす内角が90°以上となる連続部分(すなわち、上連続部分)を有する。これによって、傾斜オブジェクトにおける斜辺と辺Aとのなす鋭角がなくなるので、ゲーム空間内における地形に鋭角部分が発生する可能性を低減することができる。
また、本実施形態においては、上記連続辺(すなわち、上連続辺)は、ゲーム空間の重力方向に対して垂直(換言すれば、水平)である。したがって、傾斜オブジェクトは、ゲーム空間における水平な地形に斜辺を連続させることができるので、ユーザにとって利用しやすい形状のパーツオブジェクトを提供することができる。
また、本実施形態においては、傾斜オブジェクトは、斜辺の端に連続し、単位部分の上記辺B(図10参照)に連続し(換言すれば、斜辺の両端のうちで単位部分の辺Bに連続する側の端に連続し)、ゲーム空間の重力方向に対して垂直である連続辺(すなわち、下連続辺)を有する連続部分(すなわち、下連続部分)をさらに有する。これによって、傾斜オブジェクトは、ゲーム空間における水平な地形に斜辺を連続させることができるので、ユーザにとって利用しやすい形状のパーツオブジェクトを提供することができる。
また、本実施形態においては、単位部分において、斜辺に対向する辺と上記辺Bとのなす角も鋭角となる(図10)。ここで、本実施形態においては、傾斜オブジェクトは、斜辺の両端のうちで単位部分の上記辺Bに連続する側の端に連続する連続辺(すなわち、下連続辺)を有し、当該辺Bを一辺とし、上記斜辺に対向する辺と当該連続辺とのなす内角が90°以上となる連続部分(すなわち、下連続部分)を有する。これによって、傾斜オブジェクトにおける斜辺と辺Bとのなす鋭角がなくなるので、ゲーム空間内における地形に鋭角部分が発生する可能性を低減することができる。
[2−4.傾斜オブジェクトに対する変形処理]
次に、図12および図13を参照して、傾斜オブジェクトに対する変形処理について説明する。本実施形態においては、作成モードにおいて、ユーザは、ゲーム空間内に配置された傾斜オブジェクトを変形させることができる。具体的には、ゲームシステム1は、ユーザの指示に基づいて、傾斜オブジェクトの斜辺を伸縮させたり、斜辺の向きを変化させたりする。以下、傾斜オブジェクトを変形させる処理について説明する。
図12は、傾斜オブジェクトを伸張させる処理の一例を示す図である。図12に示す状態aでは、ゲーム空間内に傾斜オブジェクト221が配置されている。ここでは、傾斜オブジェクト221は、単傾斜オブジェクトである。以下では、傾斜オブジェクト221に対する変形処理を例として説明する。
図12に示す状態aにおいて、ユーザは、傾斜オブジェクトに対する変形指示を行う。本実施形態においては、オブジェクト配置手段151は、変形指示として、画面上における連続部分の位置を指定した後で、指示位置を画面上で移動させるドラッグ操作による指示を受け付ける。なお、変形指示の具体的な操作内容は任意であり、ドラッグ操作以外の他の操作によって変形指示が行われてもよい。
図12に示す状態aにおいては、ユーザは、傾斜オブジェクト221の上連続部分を指定し、指示位置を上連続部分の位置から右上の方向へ移動させる操作によって変形指示を行うものとする(図12参照)。このとき、オブジェクト配置手段151は、図12に示す状態bのように、傾斜オブジェクト221の斜辺を伸張させるように傾斜オブジェクト221を変形させる。なお、図示しないが、状態bにおいて、指示位置を左下の方向へ移動させる操作が行われると、オブジェクト配置手段151は、傾斜オブジェクトの斜辺を短縮させる。このように、オブジェクト配置手段151は、傾斜オブジェクト221の連続部分を指定してから、指定した位置を移動させる操作に応じて、傾斜オブジェクト221の斜辺を伸縮させる。
具体的には、本実施形態においては、オブジェクト配置手段151は、傾斜オブジェクトに含まれる単位部分を増減させることで、傾斜オブジェクトの斜辺を伸縮させる。具体的には、オブジェクト配置手段151は、単位部分と連続部分とを予め用意しておき、単位部分の数を変形指示に応じて変更することで、傾斜オブジェクトが伸縮する様子を表現する。なお、他の実施形態においては、オブジェクト配置手段151は、単位部分の数が異なる複数種類の傾斜オブジェクトを予め用意しておき、ゲーム空間内に配置される傾斜オブジェクトを変形指示に応じて置き換えることで、傾斜オブジェクトが伸縮する様子を表現してもよい。
上記のように、本実施形態においては、オブジェクト配置手段151は、ユーザの変形指示に基づいて、ゲーム空間に配置された傾斜オブジェクトに含まれる単位部分の数を変更する。これによって、ゲームシステム1は、例えばオブジェクトを拡縮する処理を行うことなく、傾斜オブジェクトの斜辺の長さを容易に変更することができる。
また、本実施形態においては、オブジェクト配置手段151は、傾斜オブジェクトの連続部分を指定する指示に基づいて、当該傾斜オブジェクトを変形させる。このように、本実施形態においては、傾斜オブジェクトの連続部分が、変形指示を行う目印となるので、ユーザは変形指示を容易に行うことができる。また、詳細は後述するが、本実施形態においては、傾斜オブジェクトに対する移動指示は、傾斜オブジェクトの単位部分を指定する指示を含む。つまり、本実施形態においては、ゲームシステム1は、変形指示と移動指示とを、連続部分を指定するか単位部分を指定するかによって区別するので、これら2つの指示をユーザにとってわかりやすくすることができる。
図13は、傾斜オブジェクトの傾きを変化させる処理の一例を示す図である。図13に示す状態cでは、ゲーム空間内に傾斜オブジェクト222が配置されている。ここでは、傾斜オブジェクト222は、斜辺が右上がりとなる向きの傾斜オブジェクトである。以下では、傾斜オブジェクト222に対する変形処理を例として説明する。
図13に示す状態cにおいては、ユーザは、傾斜オブジェクト222の上連続部分を指定し、指示位置を上連続部分の位置から下方向へ移動させる操作を行うものとする(図13参照)。このとき、オブジェクト配置手段151は、図13に示す状態dのように、傾斜オブジェクト222の斜辺の傾きを変更するように傾斜オブジェクト222を変形させる。具体的には、傾斜オブジェクト222は、斜辺が右下がりとなる向きに変形される。このように、オブジェクト配置手段151は、傾斜オブジェクト222の連続部分を指定してから、指定した位置を移動させる操作に応じて、傾斜オブジェクト222の斜辺の向きを変更させる。なお、図示しないが、状態cにおいて、指示位置を左の方向へ、傾斜オブジェクト222の下連続部分よりも左側の位置まで移動させる操作が行われる場合も上記と同様に、オブジェクト配置手段151は、斜辺が右下がりとなる向きとなるように、傾斜オブジェクト222を変形させる。なお、傾斜オブジェクト222を状態cから状態dへと変形することは、傾斜オブジェクトを反転させることであると言うことができる。
なお、本実施形態においては、変形指示に基づいて傾斜オブジェクトを変形する場合、オブジェクト配置手段151は、変形指示において指定されていない連続部分の位置を変更しない。つまり、変形指示によって傾斜オブジェクトが変形される場合であっても、変形指示において指定されていない連続部分の位置は固定されたままとなる。これによれば、傾斜オブジェクトを変形させる操作がユーザにとってわかりやすくなり、操作性を向上することができる。
また、本実施形態においては、オブジェクト配置手段151は、変形指示において指定された連続部分が配置可能な位置のうちで、指示位置に最も近い位置に連続部分を配置する。また、オブジェクト配置手段151は、現在の指示位置に応じて連続部分の位置をリアルタイムに変化させることによって、傾斜オブジェクトをリアルタイムに変形させる。これによって、変形指示による変形後の傾斜オブジェクトの形状をユーザにとってわかりやすく提示することができる。
図12および図13においては、急斜オブジェクトを変形する場合を例として説明したが、緩斜オブジェクトも傾斜オブジェクトと同様に、上記変形指示に基づいて変形される。ただし、急斜オブジェクトと緩斜オブジェクトとでは、単位部分の横方向の長さが異なるので、伸縮する単位長さも両者で異なっている。すなわち、急斜オブジェクトについては、横方向について1グリッド単位で斜辺が伸縮するのに対して、緩斜オブジェクトについては、横方向について2グリッド単位で斜辺を伸縮する点で、両者は異なる。
また、本実施形態においては、オブジェクト配置手段151は、変形指示に基づいて、急斜オブジェクトを緩斜オブジェクトに変更したり、緩斜オブジェクトを急斜オブジェクトに変更したりすることはない。つまり、ユーザは、変形指示によって傾斜オブジェクトの斜辺の傾き量を変更することはできない。ここで、上記のように、急斜オブジェクトと緩斜オブジェクトとでは、斜辺を伸縮することができる単位長さが異なっている。そのため、変形指示の操作中において、急斜オブジェクトと緩斜オブジェクトとを切り替えるとすれば、傾斜オブジェクトの斜辺の伸縮単位が操作中に変化することとなる結果、ユーザが操作に違和感を抱く可能性がある。そこで、本実施形態においては、変形指示によっては急斜オブジェクトと緩斜オブジェクトとが切り替えられないようにすることによって、変形指示の操作性を向上するようにしている。なお、他の実施形態においては、オブジェクト配置手段151は、変形指示に基づいて、急斜オブジェクトと緩斜オブジェクトとを互いに切り替えるようにしてもよい。
なお、本実施形態においては、オブジェクト配置手段151は、上述の配置指示に基づいて、単傾斜オブジェクトをゲーム空間内に配置し、変形指示に基づいて、当該単傾斜オブジェクトを複傾斜オブジェクトに変形するものとする。ただし、他の実施形態においては、配置指示に基づいて、所定の長さの斜辺を有する複傾斜オブジェクトをゲーム空間内に配置し、変形指示に基づいて、当該複傾斜オブジェクトの斜辺の長さを変化させるようにしてもよい。また、他の実施形態においては、オブジェクト配置手段151は、第1の配置指示に基づいて、単傾斜オブジェクトをゲーム空間内に配置し、第2の配置指示に基づいて、所定の長さの斜辺を有する複傾斜オブジェクトをゲーム空間内に配置するようにしてもよい。なお、ゲームシステム1は、上述の切替指示によって第1の配置指示と第2の配置指示とを切り替えることができるようにしてもよい。
[2−5.傾斜オブジェクトに対する消去処理]
次に、図14を参照して、傾斜オブジェクトの一部を一定条件下で消去する消去処理について説明する。本実施形態においては、上述のように、傾斜オブジェクトは連続部分を有する形状である。傾斜オブジェクトの斜辺の端部は連続部分に連続しているので、連続部分があると、傾斜オブジェクトの斜辺に他のパーツオブジェクトを連続させることができない。そこで、本実施形態においては、消去手段152は、一定条件下で傾斜オブジェクトの連続部分を消去する消去処理を実行する。これによって、傾斜オブジェクトの斜辺に他のパーツオブジェクトを連続させることができる。以下、消去処理の詳細について説明する。
図14は、傾斜オブジェクトの一部を消去する処理の一例を示す図である。図14においては、傾斜オブジェクト223を傾斜オブジェクト224に繋げるように傾斜オブジェクト223を移動させる操作が行われる場合を例として説明する。
図14に示す状態eにおいては、2つの傾斜オブジェクト223および224は、互いに離れて配置されている。状態eにおいて、ユーザは、傾斜オブジェクト223を傾斜オブジェクト224の方へ移動させる移動指示を行うものとする。なお、移動指示の具体的な操作内容は任意である。本実施形態においては、移動指示は、例えば、単位部分(複傾斜オブジェクトの連続単位部分とも言える)を指定した後で、指示位置を画面上で移動させるドラッグ操作によって行われる。
状態eにおいて傾斜オブジェクト223が移動された結果、傾斜オブジェクト223の上連続部分が、傾斜オブジェクト224の上連続部分と同じ位置(すなわち、同じセル)に配置される場合を考える。この場合、傾斜オブジェクト223の上連続部分と傾斜オブジェクト224の上連続部分とが重複して配置されることとなる。消去手段152は、2つの傾斜オブジェクトが重複する部分について、一方の傾斜オブジェクトを消去する。具体的には、消去手段152は、傾斜オブジェクト223の上連続部分を消去する。その結果、図14の状態fに示すように、傾斜オブジェクト224の上連続部分に傾斜オブジェクト223の斜辺が連続するように各傾斜オブジェクトが配置される。つまり、消去処理によって、傾斜オブジェクト223の斜辺を他のパーツオブジェクト(ここでは、傾斜オブジェクト224)に連続させることができる。
また、図14に示す状態fにおいて、傾斜オブジェクト223をさらに右側へ移動させる移動指示をユーザが行った結果、傾斜オブジェクト223の斜辺の一端が、傾斜オブジェクト224の斜辺の一端と同じ位置に配置される場合を考える。この場合、傾斜オブジェクト224の上連続部分は、傾斜オブジェクト223の斜辺(換言すれば、単位部分)と重複する。また、傾斜オブジェクト223の上連続部分が消去されていないとすれば、当該傾斜オブジェクト223の上連続部分は、傾斜オブジェクト224の斜辺(換言すれば、単位部分)と重複する。上記の場合、消去手段152は、傾斜オブジェクト223の上連続部分を消去し、傾斜オブジェクト224の上連続部分を消去する。その結果、図14の状態gに示すように、傾斜オブジェクト223の斜辺に傾斜オブジェクト224の斜辺が連続するように各傾斜オブジェクトが配置される。つまり、消去処理によって、2つの傾斜オブジェクトの斜辺を連続させることができる。例えば、図14に示すように、向きが互いに異なる2つの斜辺を連続させることも可能であるし、急斜オブジェクトの斜辺と緩斜オブジェクトの斜辺とのような、傾き量が互いに異なる2つの斜辺を連続させることも可能である。
なお、図14に示す状態fおよび状態gでは、2つの傾斜オブジェクト223および224が一体であるように表示される。このとき、ゲームシステム1は、2つの傾斜オブジェクトが互いに隣接する状態として管理してもよいし、2つの傾斜オブジェクトを合体させて1つのパーツオブジェクトとして管理してもよい。すなわち、ゲームシステム1は、2つの傾斜オブジェクト223および224についてそれぞれパーツオブジェクト情報を記憶してもよいし、2つの傾斜オブジェクトを合体させた1つのパーツオブジェクトについてパーツオブジェクト情報を記憶してもよい。
図14においては、傾斜オブジェクト同士が重複して配置される場合を例として説明したが、傾斜オブジェクトと他の種類のパーツオブジェクト(例えば、ブロックオブジェクト)とが重複して配置される場合も上記と同様に、消去処理が実行される。例えば、傾斜オブジェクトの連続部分と土管オブジェクトの一部とが重複して配置される場合、消去手段152は、土管オブジェクトと重複する連続部分を消去する。これによって、ゲームシステム1は、傾斜オブジェクトの斜辺と土管オブジェクトとが連続するようにパーツオブジェクトを配置することができる。
なお、本実施形態においては、オブジェクト配置手段151は、傾斜オブジェクトの単位部分が他のパーツオブジェクトの一部と重複するような配置状態を禁止する。つまり、本実施形態においては、このような配置状態にはならないので、当該配置状態において消去手段が消去処理を実行することはない。
以上のように、本実施形態においては、ゲーム空間において、傾斜オブジェクトにおける斜辺の端が他のパーツオブジェクトの辺に連続するように配置される場合において、当該傾斜オブジェクトの一部が当該他のパーツオブジェクトの一部に重複する場合、消去手段152は、当該傾斜オブジェクトの当該一部を消去する消去処理を実行する。なお、本実施形態においては、消去手段152は、消去処理において、他のパーツオブジェクトと重複する、傾斜オブジェクトの連続部分を消去する。ただし、他の実施形態においては、傾斜オブジェクトの一部と重複する、上記他のパーツオブジェクトの一部を消去してもよい。以上のように、ゲームシステム1は、消去処理によって、傾斜オブジェクトの斜辺を他のパーツオブジェクトに連続させることができるので、生成可能な地形の自由度を向上することができる。本実施形態においては、傾斜オブジェクトが他のパーツオブジェクトと重複しない状態では連続部分が設けられることによって、傾斜オブジェクトが鋭角を有しないようにすることができるとともに、傾斜オブジェクトが他のパーツオブジェクトと重複する状態では、連続部分を消去することによって、生成可能な地形の自由度を向上することができる。
また、本実施形態においては、消去処理によって一部が消去されたパーツオブジェクトが、ユーザの指示に基づいて移動された結果、他のパーツオブジェクトとの重複が解消した場合、復元手段153は、当該一部が消去されたパーツオブジェクトを、当該消去処理による消去前の状態に復元する。例えば、図14に示す状態gにおいて、傾斜オブジェクト223が移動されて、傾斜オブジェクト223と傾斜オブジェクト224とが重複しない状態となった場合、復元手段153は、傾斜オブジェクト223を元の形状(すなわち、上連続部分を有する形状)に復元する。すなわち、復元手段153は、傾斜オブジェクト223を、上連続部分を有する形状に復元してゲーム空間に配置する。これによれば、消去処理が実行された後に傾斜オブジェクトの重複が解消した場合に、当該傾斜オブジェクトが鋭角を有する形状となる可能性を低減することができる。また、ユーザは、傾斜オブジェクトの形状を元に戻す操作を行う必要がないので、操作の利便性を向上することができる。
[2−6.傾斜オブジェクトに関する補完処理]
次に、図15〜図18を参照して、傾斜オブジェクトに関する補完処理について説明する。傾斜オブジェクトは、斜辺を有するので、グリッドのセルの一部のみを埋めるように配置されることがある。そのため、ゲーム空間内において、傾斜オブジェクトの近傍に他のパーツオブジェクトが配置された場合、1セル分よりも小さい領域(例えば、図15に示す斜線領域)が生じる可能性がある。このような領域にプレイヤオブジェクトが進入した場合、当該領域から容易に脱出できなくなる可能性がある。ここでは、このような領域を「小セル領域」と呼ぶ。また、小セル領域が発生する場合、1セル分よりも短い間隔で2つのオブジェクトが配置されたり、2つのオブジェクトが点でのみ接触するように配置されたりすることがある。このとき、ユーザが意図しないにもかかわらず、プレイヤオブジェクトが当該2つのオブジェクトを通過して(換言すれば、すり抜けて)しまう可能性もある。以上より、小セル領域が生じる可能性を低減するべく、本実施形態においては、補完手段154は、一定条件下で補完処理を実行することによって、補完オブジェクトを配置する。以下、補完処理について説明する。
図15は、傾斜オブジェクトの周辺にパーツオブジェクトが配置されたゲーム空間の一例を示す図である。なお、図15に示す(A)は、補完オブジェクトが配置されていない状態を示し、図15に示す(B)は、補完オブジェクトが配置された状態を示している。図15では、傾斜オブジェクトの周辺に、パーツオブジェクトの一例としてブロックオブジェクトが配置された場合を例として説明する。
図15に示すように、ゲーム空間内にブロックオブジェクト232が配置された場合、補完手段154は、ブロックオブジェクト232が配置されたセルから所定の補完判定距離内のセルを、判定対象セルに設定する。判定対象セルとは、後述する補完条件を満たすか否かを判定する対象となるセルである。
本実施形態においては、上記補完判定距離は、1グリッド分(換言すれば、1セル分)の距離である。つまり、本実施形態においては、補完手段154は、ブロックオブジェクト232が配置されたセルから上下左右方向で隣接する4つのセルを、判定対象セルに設定する。なお、他の実施形態においては、上記補完判定距離は、任意であり、1グリッド分の距離でなくてもよい。例えば、補完判定距離は、2グリッド分の距離であってもよい。また、補完手段154は、ブロックオブジェクト232が配置されたセルの上下左右にある4つのセルに限らず、ブロックオブジェクト232が配置されたセルの周囲8個のセルを判定対象セルに設定してもよい。また、本実施形態においては、ゲーム空間にグリッドが設定されるので、グリッドを単位として補完判定距離が設定されたが、他の実施形態においては、ゲーム空間における任意の長さの単位で補完判定距離が設定されてもよい。
また、図15においては、1個のセルにブロックオブジェクト232が配置される場合を例として説明するが、複数個のセルに亘ってブロックオブジェクトが配置される場合も、上記と同様に判定対象セルが設定される。図示しないが、例えば、縦の長さが1グリッド分で、横の長さが2個グリッド分であるブロックオブジェクトが配置される場合、当該ブロックオブジェクトが配置される2個のセルに対して上下左右方向で隣接する、合計6個のセルが、判定対象セルに設定される。
補完手段154は、判定対象セルについて、補完条件を満たすか否かを判定する。本実施形態において、補完条件は、判定対象セルの一部に傾斜オブジェクトが配置されていることである。ここで、セルの全体ではなく、セルの一部のみに傾斜オブジェクトが配置されるセルを、「部分配置セル」と呼ぶ。本実施形態における上記補完条件は、判定対象セルが部分配置セルであることである。図15に示す例においては、判定対象セルのうちで、ブロックオブジェクト232の上側のセルと左側のセルとが部分配置セルとなっている。したがって、これら2つのセルが補完条件を満たす。
ここで、補完条件を満たすセルのうちの傾斜オブジェクトが配置されない領域(図15に示す斜線領域)は、1セル分の領域より小さく、上述の小セル領域となる可能性がある。そのため、本実施形態においては、補完手段154は、小セル領域が生じる可能性を低減するべく、当該セルに補完オブジェクトを配置する。図15に示す例においては、ブロックオブジェクト232の上側のセルに補完オブジェクト233が配置され、ブロックオブジェクト232の左側のセルに補完オブジェクト234が配置される。
なお、補完条件を満たすセルには、その一部に傾斜オブジェクトが配置されているので、補完手段154は、残りの部分を埋めるように補完オブジェクトを配置する。なお、図15に示す例においては、直角三角形である補完オブジェクト233および234が配置される。なお、他の実施形態においては、補完オブジェクトは、任意の形状であってよい。例えば、補完手段154は、補完条件を満たすセルに配置されている傾斜オブジェクトの一部を消去し、当該セルに、セル1つ分の大きさの補完オブジェクトを配置するようにしてもよい。また、補完手段154は、他の実施形態においては、補完条件を満たすセル全体を埋めるように傾斜オブジェクトを変形させることによって、補完オブジェクトを配置してもよい。このとき、傾斜オブジェクトのうちで変形によって追加された部分が補完オブジェクトであると言うことができる。このように、補完オブジェクトは、傾斜オブジェクトの一部として管理されてもよい。
なお、本実施形態においては、ブロックオブジェクトと傾斜オブジェクトには、同じテクスチャが付されてゲーム画像が生成される。また、補完オブジェクトにもブロックオブジェクトおよび傾斜オブジェクトと同じテクスチャが付されてゲーム画像が生成される。そのため、図15の(B)に示すように、傾斜オブジェクト、ブロックオブジェクト、および、補完オブジェクトが隣接して配置された場合には、各オブジェクトに同じテクスチャが付される。したがって、ユーザが指示していない補完オブジェクトが配置される場合であっても、ユーザに与える違和感を軽減することができる。
図16は、緩斜オブジェクトの周辺にパーツオブジェクトが配置されたゲーム空間の一例を示す図である。図15においては、急斜オブジェクトの周辺にパーツオブジェクトが配置される場合を例として説明したが、緩斜オブジェクトの周辺にパーツオブジェクトが配置される場合も同様に、判定対象セルが補完条件を満たす場合は、補完オブジェクトが配置される。なお、緩斜オブジェクトと急斜オブジェクトとでは、斜辺の傾きが異なるので、補完オブジェクトの形状および配置位置が異なる。以下、図16に示す場合における補完処理の詳細を説明する。
図16に示す例においては、緩斜オブジェクト241の周辺にブロックオブジェクト242が配置される(図16に示す(A))。このとき、補完手段154は、図15に示す場合と同様に、ブロックオブジェクト242が配置されたセルから上下左右方向で隣接する4つのセルを、判定対象セルに設定する。そして、補完手段154は、判定対象セルについて補完条件を満たすか否かを判定する。図16に示す例においては、ブロックオブジェクト242の上側のセルと、左側のセルとが部分配置セルとなっており、補完条件を満たす。
補完手段154は、補完条件を満たす判定対象セルに補完オブジェクトを配置する。ここで、緩斜オブジェクトの横の長さは2グリッド分の長さであるので、左右に並んだ2つの部分配置セルが生じる。したがって、判定対象セルに配置される傾斜オブジェクトが緩斜オブジェクトである場合には、当該判定対象セルと、その横のセルとが部分配置セルとなる。本実施形態においては、補完手段154は、補完条件を満たす判定対象セルと、当該判定対象セルの隣の部分配置セルとを埋めるように、補完オブジェクトを配置する。図16に示す例においては、ブロックオブジェクト242の上側の判定対象セルと、その右隣の部分配置セルとに亘る補完オブジェクト243が配置され、また、ブロックオブジェクト242の左隣の判定対象セルと、その左側の部分配置セルとに亘る補完オブジェクト244が配置される(図16に示す(B))。
なお、図16に示す例において、小セル領域となり得る領域は、傾斜オブジェクトによって生じる鋭角の領域(図16に示す斜線領域)であると考えられる。そのため、他の実施形態においては、補完手段154は、判定対象セルのみを埋めるように補完オブジェクトを配置してもよい。すなわち、例えば、図16に示す例においては、補完手段154は、横の長さが2グリッド分の補完オブジェクト243に代えて、横の長さが1グリッド分の補完オブジェクト245を配置してもよい(図16に示す(C))。補完オブジェクト245を配置することによっても、補完オブジェクト243を配置する場合と同様に、小セル領域が生じる可能性を低減することができる。
図17は、緩斜オブジェクトの周辺にパーツオブジェクトが配置されたゲーム空間の他の一例を示す図である。図17に示す例では、図16に示す例とは異なる位置に(具体的には、ブロックオブジェクト242の右隣のセルに)ブロックオブジェクト252が配置されている。
図17に示す例においては、判定対象セルのうち、ブロックオブジェクト252の上側のセルのみが部分配置セルとなり、補完条件を満たす。したがって、補完手段154は、ブロックオブジェクト252の上側のセルと、当該セルの左隣の部分配置セルとを埋める補完オブジェクト253を配置する。このように、緩斜オブジェクトの周囲においては、1つの補完オブジェクトのみが配置されることもある。
図18は、傾斜オブジェクトの周辺に他の種類のパーツオブジェクトが配置されたゲーム空間の一例を示す図である。図18に示す(A)は、傾斜オブジェクト261の周辺に、土管オブジェクト262が配置された状態を示している。図18に示す例においては、図15〜図17に示す例とは異なり、土管オブジェクト262が、傾斜オブジェクト261の周辺に配置されている。土管オブジェクト262は、傾斜オブジェクトとは異なるテクスチャが付されるパーツオブジェクトである。
土管オブジェクト262が傾斜オブジェクト261の周辺に配置される場合であっても、ブロックオブジェクトが配置される場合と同様、小セル領域が生じる可能性がある。そのため、補完手段154は、土管オブジェクト262が傾斜オブジェクト261の周辺に配置される場合も、ブロックオブジェクトが配置される場合と同様の方法で、同様の位置(図18の(A)に示す例においては、斜線領域の位置)に補完オブジェクトを配置する。
ここで、土管オブジェクトは、ブロックオブジェクトとは異なり、傾斜オブジェクトとは異なるテクスチャが付されるパーツオブジェクトである。したがって、図18に示す例において、補完オブジェクトに傾斜オブジェクトと同じテクスチャを付すとすれば、土管オブジェクトの上に異なるテクスチャのパーツオブジェクトが配置されることとなり、ユーザが違和感を抱くおそれがある。したがって、本実施形態においては、土管オブジェクト262が傾斜オブジェクト261の周辺に配置される場合、補完手段154は、表示されない補完オブジェクト(換言すれば、透明の補完オブジェクト)を配置する(図18(B))。これによって、プレイヤオブジェクトは、図18(A)に示す斜線領域に進入することができなくなる。また、土管オブジェクト262の上に異なるテクスチャのパーツオブジェクトが配置されるようなゲーム画像が表示されないので、ユーザが違和感を抱くおそれを低減することができる。
以上のように、補完オブジェクトは、ユーザが視認可能に表示される(換言すれば、ゲーム画像の一部として表示される)ものであってもよいし、ユーザが視認不可能である(換言すれば、ゲーム画像の一部として表示されない)ものであってもよい。なお、いずれの表示態様であっても、補完オブジェクトは、衝突判定の処理において用いられる。
以上のように、本実施形態においては、補完手段154は、所定の種類のパーツオブジェクト(例えば、ブロックオブジェクト、または、土管オブジェクト)がゲーム空間内に配置される場合、当該パーツオブジェクトが配置されるグリッドのセルから所定距離内に位置する判定対象セルの一部に傾斜オブジェクトが配置されているか否かを判定する。そして、補完手段154は、当該判定対象セルの一部に傾斜オブジェクトが配置されている場合、当該判定対象セルの全体が埋められるように補完オブジェクトを配置する。これによって、ゲーム空間に上記小セル領域が生じる可能性を低減することができる。なお、補完手段154は、所定の種類のパーツオブジェクト(本実施形態においては、ブロックオブジェクト、または、土管オブジェクト)がゲーム空間内に配置される場合に、一定条件下で補完オブジェクトを配置し、他の種類のオブジェクトがゲーム空間内に配置される場合には、補完オブジェクトを配置しなくてもよい。
なお、補完手段154は、傾斜オブジェクトの周辺に所定の種類のパーツオブジェクトが配置された場合に補完オブジェクトを配置し、他の種類のパーツオブジェクトが配置された場合には補完オブジェクトを配置しないようにしてもよい。また、補完手段154は、傾斜オブジェクトの周辺に任意の種類のパーツオブジェクトが配置された場合に補完オブジェクトを配置するようにしてもよい。
本実施形態においては、補完オブジェクトが配置される元となったパーツオブジェクトがゲーム空間から消去されたり、移動または変形されたりすることによって、補完条件が満たされなくなる場合がある。この場合、補完手段154は、当該補完オブジェクトを消去する。例えば、図15に示すブロックオブジェクト232が、例えばユーザの指示に基づいて消去された場合、補完手段154は、ブロックオブジェクト232に対応する補完オブジェクト233および234を消去する。これによれば、ゲームシステム1は、パーツオブジェクトの消去によって不要となった補完オブジェクトを、自動的に(例えば、補完オブジェクトを消去する指示がなくても)消去する。これによって、ユーザは、補完オブジェクトを消去する指示操作を行う手間を省略することができるので、操作の利便性を向上することができる。
[2−7.プレイモード]
次に、図19を参照して、プレイモードにおける処理の概要について説明する。本実施形態においては、ゲームシステム1は、上記作成モードにおいて作成されたゲーム空間を示すステージ情報を記憶する(換言すれば、保存する)。例えば、ゲームシステム1は、上述のメニュー画像においてユーザによって保存指示が行われたことに応じて、作成されていたゲーム空間を示すステージ情報を記憶する。ステージ情報は、例えば、ゲーム空間内に配置された各オブジェクトの配置に関する情報を含む。
なお、ゲームシステム1に記憶されたステージ情報は、ネットワークを介してサーバにアップロードされたり、ゲームシステム1とは異なる他のゲームシステムへ送信されたりしてもよい。このとき、ステージ情報は、他のゲームシステムにおけるプレイモードにおいて用いられてもよい。
図19は、プレイモードにおいて表示されるゲーム画像の一例を示す図である。図19に示すように、プレイモードにおいては、ゲーム空間を表すゲーム空間画像271が表示装置に表示される。このゲーム空間は、ゲームシステム1に記憶されているステージ情報が示すゲーム空間である。また、プレイモードにおいて、ゲーム空間にはプレイヤオブジェクト207が配置される。プレイモードにおいて、プレイヤオブジェクト制御手段156は、ゲーム空間内において、プレイヤの指示に応じて、プレイヤオブジェクトの動作を制御する。つまり、プレイモードにおいては、プレイヤは、作成モードにおいて作成されたゲーム空間を用いてゲームを行うことができる。
なお、プレイモードにおいては、作成モードにおいて表示される、ゲーム空間を作成するために用いられる画像は表示されない。すなわち、プレイモードにおいては、上述のオブジェクトバー画像202、メニューバー画像203、および、グリッドは表示されない。これによって、ゲーム空間をプレイヤにとって見やすくすることができる。
[3.ゲームシステムにおける処理の具体例]
次に、図20〜図24を参照して、ゲームシステム1における情報処理の具体例について説明する。
[3−1.情報処理に用いられるデータ]
図20は、ゲームシステム1における情報処理に用いられる各種情報の一例を示す図である。図20に示す各種情報は、本体装置2がアクセス可能な記憶媒体(例えば、フラッシュメモリ84、DRAM85、および/または、スロット23に装着されたメモリカード等)に記憶される。
図20に示すように、ゲームシステム1は、ゲームプログラムを記憶する。ゲームプログラムは、本実施形態におけるゲームを実行するためのゲームプログラムであり、例えば、フラッシュメモリ84、および/または、スロット23に装着されたメモリカードに記憶される。
また、図20に示すように、ゲームシステム1は、ステージ情報、および、上述したプレイヤオブジェクト情報を記憶する。これらの情報(換言すれば、データ)は、後述するゲーム処理(図21〜図23)において生成されて用いられる。
ステージ情報は、作成モードにおいて作成されたゲーム空間(換言すれば、ゲームステージ)を示す。図20に示すように、ステージ情報は、上述のパーツオブジェクト情報を含む。なお、本実施形態においては、パーツオブジェクト情報は、オブジェクト毎に生成されて記憶される。なお、図示しないが、ステージ情報は、パーツオブジェクトおよび補完オブジェクト以外の他のオブジェクト(例えば、プレイヤオブジェクト、敵オブジェクト、および、アイテムオブジェクト等)の配置に関する情報を含む。また、ステージ情報は、1つのステージ毎に生成されて記憶される。
プレイヤオブジェクト情報は、プレイモードにおけるゲームプレイ中におけるプレイヤオブジェクトに関する情報を示す。なお、ゲームプレイ中においては、プレイヤオブジェクト情報に加えて、ゲームプレイ中にゲーム空間において動作する各種のオブジェクト(例えば、敵オブジェクト、アイテムオブジェクト、および、地形オブジェクト等)の状態および動作に関する情報が記憶される。
[3−2.ゲームシステムにおいて実行される処理]
図21〜図23は、ゲームシステム1によって実行されるゲーム処理の流れの一例を示すフローチャートである。なお、図21〜24に示す一連のゲーム処理は、プロセッサ81によって上記ゲームプログラムが起動されたことに応じて開始される。
なお、本実施形態では、本体装置2のプロセッサ81が、ゲームシステム1に記憶されている上記ゲームプログラムを実行することによって、図21〜図23に示す各ステップの処理を実行するものとして説明する。ただし、他の実施形態においては、上記各ステップの処理のうちの一部の処理を、プロセッサ81とは別のプロセッサ(例えば、専用回路等)が実行するようにしてもよい。また、ゲームシステム1が他の情報処理装置(例えば、サーバ)と通信可能である場合、図21〜図23に示す各ステップの処理の一部は、他の情報処理装置において実行されてもよい。また、図21〜図23に示す各ステップの処理は、単なる一例に過ぎず、同様の結果が得られるのであれば、各ステップの処理順序を入れ替えてもよいし、各ステップの処理に加えて(または代えて)別の処理が実行されてもよい。
また、プロセッサ81は、図21〜図23に示す各ステップの処理を、メモリ(例えば、DRAM85)を用いて実行する。すなわち、プロセッサ81は、各処理ステップによって得られる情報(換言すれば、データ)をメモリに記憶し、それ以降の処理ステップにおいて当該情報を用いる場合には、メモリから当該情報を読み出して利用する。
図21に示すステップS1において、プロセッサ81は、作成モードが実行されるか否かを判定する。本実施形態においては、プロセッサ81は、作成モードを実行するか、それとも、プレイモードを実行するかを、ユーザの指示に基づいて判定する。すなわち、作成モードを開始する旨の指示をユーザが行った場合、ステップS1の判定結果は肯定となり、プレイモードを開始する旨の指示をユーザが行った場合、ステップS1の判定結果は否定となる。ステップS1の判定結果が肯定である場合、ステップS2の処理が実行される。一方、ステップS1の判定結果が否定である場合、後述するステップS11の処理が実行される。
作成モードにおいては、ステップS2〜S8の一連の処理が実行される。まず、ステップS2において、プロセッサ81は、ユーザによる指示入力を受け付ける。すなわち、プロセッサ81は、ゲームシステム1における入力部(例えば、タッチパネル13、ボタン、および/または、アナログスティック等)に対して行われた入力を示すデータを当該入力部から取得する。ステップS2の次に、ステップS3の処理が実行される。
ステップS3において、プロセッサ81(換言すれば、オブジェクト配置手段151)は、ユーザの指示に基づいて、オブジェクト(例えば、パーツオブジェクト、および/または、プレイヤオブジェクト等)を配置する。すなわち、上記ステップS2において受け付けられた指示が、オブジェクトを配置する指示である場合、プロセッサ81は、当該指示に従ってオブジェクトを配置する。本実施形態においては、上記“[2−2.ゲーム空間内に配置されるオブジェクト]”において説明したように、プロセッサ81は、配置されるオブジェクトと、配置位置とを指定する指示に基づいて、指定されたオブジェクトをゲーム空間内に配置する。このとき、プロセッサ81は、配置されたオブジェクトを示す情報(例えば、上記パーツオブジェクト情報)をメモリに記憶する。ステップS3の次に、ステップS4の処理が実行される。
ステップS4において、プロセッサ81(換言すれば、オブジェクト配置手段151)は、ゲーム空間内に配置されているパーツオブジェクト(例えば、傾斜オブジェクト)を、ユーザの指示に基づいて変化させる。具体的には、プロセッサ81は、上記ステップS2において受け付けられた指示が、パーツオブジェクトを移動する指示である場合、プロセッサ81は、当該指示に従ってパーツオブジェクトを移動させる。また、プロセッサ81は、上記ステップS2において受け付けられた指示が、パーツオブジェクトを変形する指示である場合、プロセッサ81は、当該指示に従ってパーツオブジェクトを変形させる(上記“[2−4.傾斜オブジェクトに対する変形処理]”を参照)。また、プロセッサ81は、上記ステップS2において受け付けられた指示が、パーツオブジェクトを消去する指示である場合、プロセッサ81は、当該指示に従ってパーツオブジェクトを消去する。ステップS4において、プロセッサ81は、メモリに記憶されているパーツオブジェクト情報のうち、変化したパーツオブジェクトに関するパーツオブジェクト情報を、変化後の状態を示すように更新する(なお、パーツオブジェクトが消去される場合は、当該パーツオブジェクトに関するパーツオブジェクト情報を消去する)。ステップS4の次に、ステップS5の処理が実行される。
ステップS5において、プロセッサ81(換言すれば、消去手段152または復元手段153)は、消去・復元処理を実行する。消去・復元処理は、上述の消去処理および復元処理を含む。以下、図22を参照して、消去・復元処理の詳細について説明する。
図22は、図21に示すステップS5の消去・復元処理の詳細な流れの一例を示すサブフローチャートである。消去・復元処理においては、まずステップS21において、プロセッサ81(換言すれば、消去手段152)は、パーツオブジェクト同士の重複が生じているか否かを判定する。例えば、上記ステップS3においてパーツオブジェクトが新たに配置された場合、または、上記ステップS4においてパーツオブジェクトが変化した場合、当該パーツオブジェクトが他のパーツオブジェクトと重複して配置されることがある。具体的には、ステップS21の判定処理は、メモリに記憶されているパーツオブジェクト情報を参照することによって行うことができる。ステップS21の判定結果が肯定である場合、ステップS22の処理が実行される。一方、ステップS21の判定結果が否定である場合、ステップS22の処理がスキップされてステップS22の処理が実行される。
ステップS22において、プロセッサ81(換言すれば、消去手段152)は、2つのパーツオブジェクトが重複する部分について、一方のパーツオブジェクトを消去する。例えば、傾斜オブジェクトの連続部分が他のパーツオブジェクトの一部と重複する場合、プロセッサ81は、当該傾斜オブジェクトの当該連続部分を消去する(上記“[2−5.傾斜オブジェクトに対する消去処理]”を参照)。ステップS22において、プロセッサ81は、メモリに記憶されているパーツオブジェクト情報のうち、一部を消去したパーツオブジェクトに関するパーツオブジェクト情報を、消去後の状態を示すように更新する。ステップS22の次に、ステップS23の処理が実行される。
ステップS23において、プロセッサ81(換言すれば、復元手段153)は、重複して配置されていた2つのパーツオブジェクトの重複が解除されたか否かを判定する。ステップS23の判定処理は、メモリに記憶されているパーツオブジェクト情報を参照することによって行うことができる。ステップS23の判定結果が肯定である場合、ステップS24の処理が実行される。一方、ステップS23の判定結果が否定である場合、ステップS24の処理がスキップされて、プロセッサ81は消去・復元処理を終了する。
ステップS24において、プロセッサ81(換言すれば、復元手段153)は、重複が解除されたパーツオブジェクトについて、消去処理(ステップS22)によって消去されていた部分を復元する。例えば、傾斜オブジェクトの連続部分が他のパーツオブジェクトの一部と重複するために消去されていた場合、プロセッサ81は、当該傾斜オブジェクトの当該連続部分を復元する(上記“[2−5.傾斜オブジェクトに対する消去処理]”を参照)。なお、本実施形態においては、上記ステップS22において消去処理が実行された場合、プロセッサ81は、パーツオブジェクトのうちで消去した部分を示す消去部分情報を含むパーツオブジェクト情報をメモリに記憶する。ステップS24においては、プロセッサ81は、上記消去部分情報を参照して、パーツオブジェクトに対する復元処理を行う。また、プロセッサ81は、メモリに記憶されているパーツオブジェクト情報のうち、復元処理を行ったパーツオブジェクトに関するパーツオブジェクト情報を、復元後の状態を示すように更新する。ステップS24の処理が終了すると、プロセッサ81は消去・復元処理を終了する。ステップS5の消去・復元処理が終了すると、ステップS6の処理が実行される。
ステップS6において、プロセッサ81(換言すれば、補完手段154)は、上述の補完処理を実行する。以下、図23を参照して、補完処理の詳細について説明する。
図23は、図21に示すステップS6の補完処理の詳細な流れの一例を示すサブフローチャートである。補完処理においては、まずステップS31において、プロセッサ81は、上記ステップS3の処理によって新たにパーツオブジェクトがゲーム空間内に配置されたか否かを判定する。ステップS31の判定結果が肯定である場合、ステップS32の処理が実行される。一方、ステップS31の判定結果が否定である場合、ステップS32〜S36の一連の処理がスキップされてステップS35の処理が実行される。
ステップS32において、プロセッサ81は、上述の判定対象セルを特定する。本実施形態においては、プロセッサ81は、パーツオブジェクトが配置されたセルに対して上下左右方向で隣接する各セルを、判定対象セルに設定する(上記“[2−6.傾斜オブジェクトに関する補完処理]”を参照)。ステップS32の次に、ステップS33の処理が実行される。
ステップS33において、プロセッサ81は、ステップS31で設定された判定対象セルについて、上述の補完条件を満たすか否かを判定する。ここで、判定対象セルが補完条件を満たすか否かの判定は、メモリに記憶されているパーツオブジェクト情報を参照することによって行うことができる。なお、プロセッサ81は、ステップS31で設定された判定対象セルが複数である場合、判定対象セル毎に補完条件を満たすか否かを判定する。そして、補完条件を満たす判定対象セルが(1つでも)ある場合、ステップS33の判定結果は肯定となり、補完条件を満たす判定対象セルがない場合、ステップS33の判定結果は否定となる。ステップS33の判定結果が肯定である場合、ステップS34の処理が実行される。一方、ステップS33の判定結果が否定である場合、ステップS34の処理がスキップされてステップS35の処理が実行される。
ステップS34において、プロセッサ81は、補完条件を満たす判定対象セルを埋めるように、補完オブジェクトを配置する。補完オブジェクトの具体的な配置方法は、上述の“[2−6.傾斜オブジェクトに関する補完処理]”で述べた通りである。ステップS34において、プロセッサ81は、配置された補完オブジェクトを示すパーツオブジェクト情報をメモリに記憶する。ここで、本実施形態においては、プロセッサ81は、補完オブジェクトを配置する原因となったパーツオブジェクトを示す関連パーツ情報を、当該補完オブジェクトに関するパーツオブジェクト情報に含めてメモリに記憶する。ステップS34の次に、ステップS35の処理が実行される。
ステップS35において、プロセッサ81は、補完条件が満たされていた判定対象セルいついて補完条件が満たされなくなったか否かを判定する。例えば、プロセッサ81は、上記ステップS4の処理によって、ゲーム空間においてパーツオブジェクトが変化した(移動、消去、または変形された)場合、補完条件が満たされなくなったか否かを判定する。なお、この判定は、メモリに記憶されているパーツオブジェクト情報を参照することによって行うことができる。ステップS35の判定結果が肯定である場合、ステップS36の処理が実行される。一方、ステップS35の判定結果が否定である場合、ステップS36の処理がスキップされて、プロセッサ81は補完処理を終了する。
ステップS36において、プロセッサ81は、補完オブジェクトを消去する。具体的には、プロセッサ81は、上記ステップS4の処理によって変化したパーツオブジェクトが原因となって配置された補完オブジェクトを消去する。ここで、ステップS36の処理において消去すべき補完オブジェクトは、上記ステップS4の処理によって変化したパーツオブジェクトを示す関連パーツ情報を含むパーツオブジェクト情報が示す補完オブジェクトである。また、プロセッサ81は、消去する補完オブジェクトに関するパーツオブジェクト情報をメモリから消去する。ステップS36の処理が終了すると、プロセッサ81は補完処理を終了する。ステップS6の補完処理が終了すると、ステップS7の処理が実行される。
図21に示すステップS7において、プロセッサ81(換言すれば、画像生成手段155)は、作成モードにおいて表示すべきゲーム画像(図9参照)を生成する。具体的には、プロセッサ81は、メモリに記憶されているステージ情報を用いて、ゲーム空間を表すゲーム空間画像を生成し、上記オブジェクトバー画像およびメニューバー画像を生成する。ステップS7の次に、ステップS8の処理が実行される。
ステップS8において、プロセッサ81は、ステップS7において生成されたゲーム画像を表示装置に表示する。すなわち、プロセッサ81は、上記ゲーム空間画像、オブジェクトバー画像、および、メニューバー画像を含むゲーム画像を表示装置に表示させる。なお、ステップS2〜S9の一連の処理ループが繰り返し実行される場合、ステップS8の処理は、所定時間(例えば、1フレーム時間)に1回の割合で実行される。ステップS8の次に、ステップS9の処理が実行される。
ステップS9において、プロセッサ81は、作成モードを終了するか否かを判定する。例えば、作成モードを終了する指示がユーザによって行われた場合、プロセッサ81は、作成モードを終了すると判定する。ステップS9の判定結果が肯定である場合、上記ステップS1の処理が再度実行される。一方、ステップS9の判定結果が否定である場合、上記するステップS2の処理が再度実行される。本実施形態においては、ステップS9の判定処理の結果が肯定となるまで、作成モードにおけるステップS2〜S8の一連の処理が繰り返し実行される。
一方、プレイモードにおいては、ステップS11〜S18の一連の処理が実行される。まず、ステップS11において、プロセッサ81は、プレイ対象となるステージのゲーム空間を表すゲーム空間画像(図19参照)を生成し、表示装置に表示する。なお、プレイ対象となるステージを決定する方法は、任意である。例えば、プレイ対象となるステージは、プレイヤによる選択指示によって決定される。ステップS11の次に、ステップS12の処理が実行される。
ステップS12において、プロセッサ81は、プレイヤによる指示入力を受け付ける。ステップS12の処理は、上述のステップS2の処理と同様である。ステップS12の次に、ステップS13の処理が実行される。
ステップS13において、プロセッサ81(換言すれば、プレイヤオブジェクト制御手段156)は、プレイヤによる入力に基づいて、ゲーム空間におけるプレイヤオブジェクトの動作を制御する。このとき、プロセッサ81は、動作が制御された後のプレイヤオブジェクトに関するプレイヤオブジェクト情報をメモリに記憶する。ステップS13の次に、ステップS14の処理が実行される。
ステップS14において、プロセッサ81は、プレイヤオブジェクト以外の他のオブジェクトの動作を制御する。例えば、プロセッサ81は、ゲームプログラムにおいて予め定められたアルゴリズムに従って、敵オブジェクト、および、アイテムオブジェクトの動作を制御する。ステップS14の次に、ステップS15の処理が実行される。
ステップS15において、プロセッサ81は、衝突判定処理を実行する。具体的には、プロセッサ81は、ゲーム空間内に配置される各種のオブジェクト同士の衝突判定を行う。この衝突判定には、少なくとも上記パーツオブジェクトが用いられる。例えば、本実施形態においては、プロセッサ81は、ゲーム空間に配置されるパーツオブジェクトと、プレイヤオブジェクトとの衝突判定を行う。なお、衝突判定は、メモリに記憶されているステージ情報およびプレイヤオブジェクト情報を参照して行うことができる。また、2つのオブジェクト同士が衝突すると判定される場合には、プロセッサ81は、衝突に応じた動作を必要に応じて当該オブジェクトに行わせる。このとき、プロセッサ81は、動作が制御された後のプレイヤオブジェクトに関するプレイヤオブジェクト情報をメモリに記憶する。ステップS15の次に、ステップS16の処理が実行される。
ステップS16において、プロセッサ81は、ゲーム画像を生成する。具体的には、プロセッサ81は、メモリに記憶されているステージ情報およびプレイヤオブジェクト情報を用いて、ゲーム空間を表すゲーム空間画像を生成する。ステップS16の次に、ステップS17の処理が実行される。
ステップS17において、プロセッサ81は、ステップS16において生成されたゲーム画像を表示装置に表示する。すなわち、プロセッサ81は、ゲーム空間においてプレイヤによって操作されるプレイヤオブジェクトが動作する様子を表すゲーム空間画像を表示装置に表示させる。なお、ステップS12〜S18の一連の処理ループが繰り返し実行される場合、ステップS17の処理は、所定時間(例えば、1フレーム時間)に1回の割合で実行される。ステップS17の次に、ステップS18の処理が実行される。
ステップS18において、プロセッサ81は、プレイモードを終了するか否かを判定する。例えば、プレイモードを終了する指示がユーザによって行われた場合、プロセッサ81は、プレイモードを終了すると判定する。ステップS18の判定結果が肯定である場合、上記ステップS1の処理が再度実行される。一方、ステップS18の判定結果が否定である場合、上記ステップS12の処理が再度実行される。本実施形態においては、ステップS18の判定処理の結果が肯定となるまで、プレイモードにおけるステップS12〜S18の一連の処理が繰り返し実行される。
なお、図示しないが、図21〜図23に示すゲーム処理中において、ユーザによってゲーム処理を終了する旨の終了指示が行われた場合、プロセッサ81は、図21〜図23に示すゲーム処理を終了する。なお、プロセッサ81は、ゲーム処理中における任意のタイミングで上記終了指示を受け付けるようにしてもよい。
[4.上記実施形態の作用効果および変形例]
以上のように、本実施形態における情報処理プログラム(すなわち、ゲームプログラム)は、衝突判定に用いられるパーツオブジェクトをユーザの指示に基づいてゲーム空間内に配置するものであり、情報処理装置(すなわち、本体装置2)のコンピュータにおいて実行される。情報処理プログラムは、以下の手段としてコンピュータを機能させる。
・ユーザの指示に基づいて、パーツオブジェクトとして、単位部分を有する傾斜オブジェクトをゲーム空間内に配置するオブジェクト配置手段
・パーツオブジェクトが配置されたゲーム空間を表す画像を生成する画像生成手段
ここで、オブジェクト配置手段は、ユーザの第1指示(例えば、傾斜オブジェクトを配置する配置指示)に基づいて、1つの単位部分を有する第1傾斜オブジェクト(すなわち、単傾斜オブジェクト)を上記傾斜オブジェクトとしてゲーム空間内に配置する。また、オブジェクト配置手段は、ユーザの第2指示(例えば、傾斜オブジェクトを変形する変形指示)に基づいて、複数の単位部分を有する第2傾斜オブジェクト(すなわち、複傾斜オブジェクト)を上記傾斜オブジェクトとしてゲーム空間内に配置する。第2傾斜オブジェクトは、複数の斜辺(図24に示す例においては、第1辺)が連続することにより1つの辺をなすように複数の単位部分が連続する連続単位部分を含む(図10)。
上記によれば、情報処理装置は、斜辺の長さが異なる複数種類の傾斜オブジェクトを、単位部分の数を変えて用いることによって容易に生成することができる。また、上記実施形態においては、単位部分を連続させることによって傾斜オブジェクトの斜辺の長さを調整するので、1種類の形状の傾斜オブジェクト(例えば、直角三角形の傾斜オブジェクト)を拡大または縮小することによって傾斜オブジェクトの斜辺の長さを調整する方法に比べて、斜辺が長くなった場合における傾斜オブジェクトの配置スペースを小さくすることができる。上記実施形態によれば、傾斜オブジェクトの配置スペースを小さくすることによって、他のオブジェクトをゲーム空間に配置しやすくなるので、オブジェクトの配置の自由度を向上することができる。
ここで、上記実施形態においては、単位部分は、次のように構成される。図24は、単位部分の一例を示す図である。図24の(a)は、上記実施形態における単位部分を示している。図24の(a)に示すように、上記実施形態における単位部分は、第1部分と、第2部分とを有する。第1部分は、第1辺と第2辺とを有し、当該第1辺と当該第2辺とのなす内角が鋭角となる部分である。第2部分は、第1辺と第2辺とのなす角の頂点に連続する連続辺を有し、第2辺の少なくとも一部を一辺とし、当該連続辺と第1辺とのなす内角が90°以上となる部分である。
なお、上記実施形態においては、第1部分は直角三角形であり、第1部分の第2辺と第3辺とが、グリッド線に対して平行に配置され、第1辺が斜辺となる。このように、傾斜オブジェクトは、グリッドにおける1以上のセルによって構成される四角形の対角線に沿って単位部分の第1辺が配置され、セルの辺に沿って第2辺が配置されるように、配置される。
上記のように、上記実施形態における単位部分は、鋭角となる部分を有する第1部分に加えて、第2部分を有する構成である。第2部分によって、第1部分における鋭角部分を90°以上の角にすることができ、鋭角が存在することに起因する問題が発生する可能性を低減することができる。したがって、上記実施形態においては、衝突判定の処理を簡易化することができ、ひいては、ゲームシステム1における処理負担を軽減したり、開発者の作業負担を軽減したりすることができる。
また、上記実施形態においては、単位部分は、第1辺および第2辺を含む平行四辺形である。したがって、上記実施形態においては、連続単位部分が平行四辺形となるので(図10参照)、ゲームシステム1は、2つの斜辺を有する傾斜オブジェクトを配置することができる。また、上記実施形態においては、例えば図24の(b)に示す単位部分を用いる場合に比べて、傾斜オブジェクトの配置スペースを低減することができる。
なお、本明細書においては、本実施形態および変形例を理解しやすくする目的で、傾斜オブジェクトをいくつかの部分(例えば、上記単位部分および連続部分、または、上記第1部分および第2部分)に分けて説明し、当該部分の輪郭となる直線を「辺」と呼んでいる。ただし、以上の説明からも明らかなように、辺は、必ずしも傾斜オブジェクトの輪郭である必要はないし、傾斜オブジェクトは辺で分けて分離することができる(換言すれば、部分に分離することができる)必要はない。例えば、傾斜オブジェクトは、図10に示す辺Aまたは辺Bで分離することができる必要はないし、傾斜オブジェクトの単位部分は、図24に示す第2辺で2つに分離することができる必要はない。
(傾斜オブジェクトの形状に関する変形例)
他の実施形態においては、単位部分の形状は、平行四辺形に限らず、他の形状であってもよい。図24の(b)は、上記実施形態の変形例における傾斜オブジェクトが有する単位部分を示している。図24の(b)に示すように、変形例における単位部分は、台形形状である。上記変形例における単位部分は、斜辺である第1辺の各端に接続される2つの辺が、上下方向のグリッド線に平行となり、斜辺に向かい合う辺が、左右方向のグリッド線に平行となるように配置される。
具体的には、変形例に係る単位部分の第1部分は、上記実施形態における単位部分の第1部分と同じ形状である。また、変形例における単位部分の第2部分は、上記実施形態における単位部分の第2部分とは異なり、正方形である。ただし、変形例における第2部分も、上記実施形態における第2部分と同様、第1辺と第2辺とのなす角の頂点に連続する連続辺を有し、第2辺の少なくとも一部を一辺とし、当該連続辺と第1辺とのなす内角が90°以上となる部分である。したがって、変形例における第2部分も上記実施形態と同様、第1部分の鋭角をなくすことができる。
また、本実施形態においては、傾斜オブジェクトは、2つの連続部分(すなわち、上連続部分および下連続部分)を有する構成であった。ここで、他の実施形態においては、傾斜オブジェクトは、連続部分を有していなくてもよいし、1つの連続部分のみを有していてもよい。
図25は、傾斜オブジェクトの変形例の一例を示す図である。図25に示す第1変形例のように、傾斜オブジェクトは、連続部分を有していない形状であってもよい。すなわち、単傾斜オブジェクトは、1つの単位部分のみで構成され、複傾斜オブジェクトは、複数の単位部分(換言すれば、連続単位部分)のみで構成されてもよい。
なお、第1変形例においては、傾斜オブジェクトは2箇所の鋭角を有しており、第1部分のみを単位部分とするオブジェクト(すなわち、直角三角形のオブジェクト)と鋭角の数は同じである。しかし、第1変形例における傾斜オブジェクトによれば、2つの鋭角が互いに反対側(すなわち、上端と下端)に配置されるので、他のオブジェクトが単位部分に接近した際に、2つの鋭角の両方に接近する可能性を低減することができる。例えば、図25に示す傾斜オブジェクトの上側の斜辺上にプレイヤオブジェクトが配置された状況では、プレイヤオブジェクトは当該傾斜オブジェクトの下側の鋭角に接近することはない。一方、直角三角形のオブジェクトの斜辺上にプレイヤオブジェクトが配置された状況では、プレイヤオブジェクトは、斜辺の両端の鋭角に接近する可能性があるので、鋭角による問題が生じる可能性は、第1変形例よりも高くなる。以上のように、第1変形例によれば、傾斜オブジェクトにおける鋭角の配置を第2部分によって変更することができ、それによって、ゲーム空間に鋭角が存在することに起因する問題が発生する可能性を低減することができる。
また、図25に示す第2変形例のように、傾斜オブジェクトは、1つの連続部分(具体的には、上連続部分)のみを有する形状であってもよい。すなわち、単傾斜オブジェクトは、1つの単位部分と、1つの上連続部分とによって構成され、複傾斜オブジェクトは、複数の単位部分(換言すれば、連続単位部分)と、1つの上連続部分とによって構成されてもよい。第2変形例によれば、連続部分を有することによって、傾斜オブジェクトに生じる鋭角を少なくすることができ、ゲーム空間に鋭角部分が生じる可能性を低減することができる。
また、図25に示す第3変形例のように、単位部分が台形形状である場合であっても、傾斜オブジェクトは、2つの連続部分を有していてもよい。また、図示しないが、単位部分が台形形状である場合であっても、傾斜オブジェクトは、1つの連続部分(例えば、上連続部分)と単位部分とによって構成されてもよいし、単位部分のみで構成されてもよい。
上記第1〜第3変形例においても上記実施形態と同様、傾斜オブジェクトの配置スペースを小さくすることができ、ゲーム空間におけるオブジェクトの配置の自由度を向上することができる。
また、上記実施形態においては、2種類の傾斜オブジェクトの単位部分は、(縦の長さ,横の長さ)が、それぞれ、(1グリッド,1グリッド)または(1グリッド,2グリッド)である。つまり、上記2種類のいずれの傾斜オブジェクトについても、単位部分の斜辺(換言すれば、上記第1辺)が対角線となる四角形における縦方向のセルの数と、当該四角形における横方向のセルの数とを共に割り切る正の整数は、1のみである。これによれば、グリッドを単位としてパーツオブジェクトが配置される場合において、ゲームシステム1は、単位部分の数を変更することによって、傾斜オブジェクトの斜辺(具体的には、縦:横の比が1:1または1:2の傾きを有する斜辺)の長さを最小単位で変更することができる。これによって、配置可能な傾斜オブジェクトの自由度を向上することができ、その結果、ゲーム空間のスペースを有効活用することができる。
なお、他の実施形態においては、傾斜オブジェクトの単位部分は、(縦の長さ,横の長さ)が、(2グリッド,3グリッド)であってもよいし、(3グリッド,4グリッド)であってもよい。これらによれば、縦:横の比が2:3または3:4の傾きを有する傾斜オブジェクトの傾斜の長さを最小単位で変更することができる。
(傾斜オブジェクトに対する操作に関する変形例)
上記実施形態においては、オブジェクト配置手段151は、ユーザの指示に基づいて、傾斜オブジェクトを反転させた(図13参照)。ここで、他の実施形態においては、オブジェクト配置手段151は、傾斜オブジェクトを反転させることに加えて、傾斜オブジェクトを回転させるようにしてもよい。例えば、上記実施形態のように、グリッドが正方形のセルによって構成される場合において、オブジェクト配置手段151は、ユーザの指示に基づいて、傾斜オブジェクトを90°ずつ回転させるようにしてもよい。これによれば、傾斜オブジェクトの配置の自由度をより向上することができる。
(ゲーム空間に関する変形例)
上記実施形態においては、2次元のゲーム空間において2次元の傾斜オブジェクトを配置する場合を例として説明した。ここで、他の実施形態においては、ゲームシステム1は、3次元のゲーム空間内に3次元の傾斜オブジェクトを配置するものであってもよい。例えば、オブジェクト配置手段151は、上記実施形態における傾斜オブジェクトの形状を底面とし、所定の高さを有する柱状の立体を、傾斜オブジェクトとして3次元のゲーム空間内に配置してもよい。なお、上記傾斜オブジェクトは、上記高さ方向が、ゲーム空間における奥行き方向に平行となるように配置される。このように、上記実施形態は、3次元のゲーム空間内に3次元の傾斜オブジェクトを配置する場合にも適用することができる。なお、3次元のゲーム空間に3次元のオブジェクトが配置される場合において、ゲームシステム1は、固定的に設定される視線方向から見たゲーム画像(すなわち、実質的には2次元のゲーム画像)を生成して表示してもよい。
また、上記実施形態、ゲームに用いられるゲーム空間に傾斜オブジェクトを配置する場合を例として説明した。ここで、他の実施形態においては、傾斜オブジェクトが配置される仮想空間は、ゲーム空間に限らず、衝突判定に用いられるオブジェクトが配置される任意の仮想空間であってよい。つまり、傾斜オブジェクトおよびそれが配置される仮想空間は、ゲーム処理以外の情報処理において用いられるものであってもよい。