(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2026-03-18
(45)【発行日】2026-03-27
(54)【発明の名称】ゲームプログラム、ゲームシステム、ゲーム処理方法、およびゲーム装置
(51)【国際特許分類】
A63F 13/497 20140101AFI20260319BHJP
A63F 13/55 20140101ALI20260319BHJP
A63F 13/69 20140101ALI20260319BHJP
A63F 13/79 20140101ALI20260319BHJP
G06T 17/10 20060101ALI20260319BHJP
【FI】
A63F13/497
A63F13/55
A63F13/69
A63F13/79
G06T17/10
(21)【出願番号】P 2024218777
(22)【出願日】2024-12-13
【審査請求日】2025-05-20
(73)【特許権者】
【識別番号】000233778
【氏名又は名称】任天堂株式会社
(74)【代理人】
【識別番号】100158780
【氏名又は名称】寺本 亮
(74)【代理人】
【識別番号】100121359
【氏名又は名称】小沢 昌弘
(74)【代理人】
【識別番号】100130269
【氏名又は名称】石原 盛規
(72)【発明者】
【氏名】北園 裕介
【審査官】白形 優依
(56)【参考文献】
【文献】中国特許出願公開第115445200(CN,A)
【文献】特表2024-521128(JP,A)
【文献】特開2004-062666(JP,A)
【文献】特開2017-099744(JP,A)
【文献】特許第3231335(JP,B2)
【文献】特開2012-090844(JP,A)
【文献】特開2015-188657(JP,A)
【文献】特開2021-137467(JP,A)
【文献】特開2000-024317(JP,A)
【文献】特開2014-198182(JP,A)
【文献】[ティアキン小ネタ]崖のぼりの基礎知識。ジャンプより地道に登ったほうがより高くまで行ける[ゼルダの伝説],Game Watch [online],2023年06月27日, [2025年12月12日検索], 取得先<https://game.watch.impress.co.jp/docs/news/1511414.html>
(58)【調査した分野】(Int.Cl.,DB名)
A63F 13/00-13/98
A63F 9/24
(57)【特許請求の範囲】
【請求項1】
コンピュータに、
仮想空間内に定義された地形を示すボクセルデータであって、複数のボクセルそれぞれについて、当該ボクセルが定義する空間が仮想的に中身に占められている度合いを示す密度が少なくとも設定されたボクセルデータを、ゲーム処理に基づいて更新させ、
前記ボクセルデータに対応し、前記地形を示すメッシュであって、頂点座標が少なくとも前記ボクセルデータに含まれる前記密度に基づいて決定される地形メッシュを更新させ、
前記ゲーム処理において、さらに、
プレイヤキャラクタが少なくとも前記地形上に乗っている第1の場合において、前記プレイヤキャラクタを当該地形上となる位置において操作入力に基づいて移動制御させると共に、当該プレイヤキャラクタの位置を履歴として記憶させ、
前記プレイヤキャラクタが、移動によって第1の条件を満たした場合に、
操作入力に基づいた移動制御を中断させ、
前記履歴に含まれる複数の位置が含まれる候補のうち、前記地形が存在しない位置ではない候補から復帰位置を決定させ、
前記プレイヤキャラクタを当該復帰位置まで復帰する移動をさせて、操作入力に基づいた移動制御を再開させる、ゲームプログラム。
【請求項2】
前記コンピュータに、さらに、
前記ゲーム処理において、
操作入力に基づいて前記プレイヤキャラクタに第1のアクションを行わせ、
当該第1のアクションに基づいて前記仮想空間内に第1のボクセル更新範囲を設定させ、
前記第1のボクセル更新範囲に対応する前記ボクセルデータのボクセルの前記密度を減少させる、請求項1記載のゲームプログラム。
【請求項3】
前記コンピュータに、さらに、
前記ゲーム処理において、
前記プレイヤキャラクタが少なくとも前方向において前記地形に接する第2の場合において、前記プレイヤキャラクタを前記地形に接する位置において操作入力に基づいて移動可能に制御させるとともに、当該プレイヤキャラクタの位置を前記履歴として記憶させる、請求項1記載のゲームプログラム。
【請求項4】
前記コンピュータに、さらに、
前記第2の場合において、前記プレイヤキャラクタが所定距離移動する毎の位置、および前記プレイヤキャラクタが停止したときの位置を少なくとも前記履歴として記憶させる、請求項3記載のゲームプログラム。
【請求項5】
前記コンピュータに、さらに、
前記ゲーム処理において、
前記プレイヤキャラクタが、前記仮想空間内のチェックポイントに到達した場合に、当該チェックポイントを前記候補としてさらに記憶させるとともに、それまでに記憶された前記履歴を前記候補から除外させる、請求項1記載のゲームプログラム。
【請求項6】
前記コンピュータに、前記候補のうち、最も新しいものを前記復帰位置として決定させる、請求項3記載のゲームプログラム。
【請求項7】
前記第1の条件は、前記プレイヤキャラクタの位置が前記仮想空間内の第1の範囲内になることを含む、請求項1記載のゲームプログラム。
【請求項8】
前記第1の条件は、前記プレイヤキャラクタが前記復帰する移動に応じて消費される第1の保有アイテムが残されていることを、さらに含む、請求項7記載のゲームプログラム。
【請求項9】
前記ボクセルデータは、前記複数のボクセルそれぞれについて、前記中身の種類を示すマテリアルがさらに設定され、
前記コンピュータに、さらに、
前記ボクセルデータに対応し、仮想カメラに基づいて描画される表示用メッシュを、当該メッシュの頂点座標を少なくとも前記ボクセルデータに含まれる前記密度に基づいて決定させ、当該メッシュのマテリアルを少なくとも前記ボクセルデータに含まれる前記マテリアルに基づいて決定させることで生成または更新させ、
前記表示用メッシュの頂点座標と前記表示用メッシュのマテリアルとに対応するテクスチャに基づいて、前記表示用メッシュを含む前記仮想空間の描画を行わせる、請求項1から8のいずれか記載のゲームプログラム。
【請求項10】
前記ボクセルデータは、前記複数のボクセルそれぞれについて、前記中身の種類を示すマテリアルがさらに設定され、
前記コンピュータに、さらに、
前記地形メッシュのマテリアルを少なくとも前記ボクセルデータに含まれる前記マテリアルに基づいて決定させ、
前記地形メッシュを表示用メッシュとして、前記表示用メッシュの頂点座標と前記表示用メッシュのマテリアルとに対応するテクスチャに基づいて、前記表示用メッシュを含む前記仮想空間の描画を行わせる、請求項1から8のいずれか記載のゲームプログラム。
【請求項11】
仮想空間内に定義された地形を示すボクセルデータであって、複数のボクセルそれぞれについて、当該ボクセルが定義する空間が仮想的に中身に占められている度合いを示す密度が少なくとも設定されたボクセルデータを、ゲーム処理に基づいて更新し、
前記ボクセルデータに対応し、前記地形を示すメッシュであって、頂点座標が少なくとも前記ボクセルデータに含まれる前記密度に基づいて決定される地形メッシュを更新し、
前記ゲーム処理において、さらに、
プレイヤキャラクタが少なくとも前記地形上に乗っている第1の場合において、前記プレイヤキャラクタを当該地形上となる位置において操作入力に基づいて移動制御すると共に、当該プレイヤキャラクタの位置を履歴として記憶し、
前記プレイヤキャラクタが、移動によって第1の条件を満たした場合に、
操作入力に基づいた移動制御を中断し、
前記履歴に含まれる複数の位置が含まれる候補のうち、前記地形が存在しない位置ではない候補から復帰位置を決定し、
前記プレイヤキャラクタを当該復帰位置まで復帰する移動をさせて、操作入力に基づいた移動制御を再開する、ゲームシステム。
【請求項12】
前記ゲームシステムは、さらに、
前記ゲーム処理において、
操作入力に基づいて前記プレイヤキャラクタに第1のアクションを行い、
当該第1のアクションに基づいて前記仮想空間内に第1のボクセル更新範囲を設定し、
前記第1のボクセル更新範囲に対応する前記ボクセルデータのボクセルの前記密度を減少させる、請求項11記載のゲームシステム。
【請求項13】
前記ゲームシステムは、さらに、
前記ゲーム処理において、
前記プレイヤキャラクタが少なくとも前方向において前記地形に接する第2の場合において、前記プレイヤキャラクタを前記地形に接する位置において操作入力に基づいて移動可能に制御するとともに、当該プレイヤキャラクタの位置を前記履歴として記憶する、請求項11記載のゲームシステム。
【請求項14】
前記ゲームシステムは、さらに、
前記第2の場合において、前記プレイヤキャラクタが所定距離移動する毎の位置、および前記プレイヤキャラクタが停止したときの位置を少なくとも前記履歴として記憶する、請求項13記載のゲームシステム。
【請求項15】
前記ゲームシステムは、さらに、
前記ゲーム処理において、
前記プレイヤキャラクタが、前記仮想空間内のチェックポイントに到達した場合に、当該チェックポイントを前記候補としてさらに記憶するとともに、それまでに記憶された前記履歴を前記候補から除外する、請求項11記載のゲームシステム。
【請求項16】
前記ゲームシステムは、前記候補のうち、最も新しいものを前記復帰位置として決定する、請求項13記載のゲームシステム。
【請求項17】
前記第1の条件は、前記プレイヤキャラクタの位置が前記仮想空間内の第1の範囲内になることを含む、請求項11記載のゲームシステム。
【請求項18】
前記第1の条件は、前記プレイヤキャラクタが前記復帰する移動に応じて消費される第1の保有アイテムが残されていることを、さらに含む、請求項17記載のゲームシステム。
【請求項19】
前記ボクセルデータは、前記複数のボクセルそれぞれについて、前記中身の種類を示すマテリアルがさらに設定され、
前記ゲームシステムは、さらに、
前記ボクセルデータに対応し、仮想カメラに基づいて描画される表示用メッシュを、当該メッシュの頂点座標を少なくとも前記ボクセルデータに含まれる前記密度に基づいて決定し、当該メッシュのマテリアルを少なくとも前記ボクセルデータに含まれる前記マテリアルに基づいて決定することで生成または更新し、
前記表示用メッシュの頂点座標と前記表示用メッシュのマテリアルとに対応するテクスチャに基づいて、前記表示用メッシュを含む前記仮想空間の描画を行う、請求項11から18のいずれか記載のゲームシステム。
【請求項20】
前記ボクセルデータは、前記複数のボクセルそれぞれについて、前記中身の種類を示すマテリアルがさらに設定され、
前記ゲームシステムは、さらに、
前記地形メッシュのマテリアルを少なくとも前記ボクセルデータに含まれる前記マテリアルに基づいて決定し、
前記地形メッシュを表示用メッシュとして、前記表示用メッシュの頂点座標と前記表示用メッシュのマテリアルとに対応するテクスチャに基づいて、前記表示用メッシュを含む前記仮想空間の描画を行う、請求項11から18のいずれか記載のゲームシステム。
【請求項21】
情報処理システムに、
仮想空間内に定義された地形を示すボクセルデータであって、複数のボクセルそれぞれについて、当該ボクセルが定義する空間が仮想的に中身に占められている度合いを示す密度が少なくとも設定されたボクセルデータを、ゲーム処理に基づいて更新させ、
前記ボクセルデータに対応し、前記地形を示すメッシュであって、頂点座標が少なくとも前記ボクセルデータに含まれる前記密度に基づいて決定される地形メッシュを更新させ、
前記ゲーム処理において、さらに、
プレイヤキャラクタが少なくとも前記地形上に乗っている第1の場合において、前記プレイヤキャラクタを当該地形上となる位置において操作入力に基づいて移動制御させると共に、当該プレイヤキャラクタの位置を履歴として記憶させ、
前記プレイヤキャラクタが、移動によって第1の条件を満たした場合に、
操作入力に基づいた移動制御を中断させ、
前記履歴に含まれる複数の位置が含まれる候補のうち、前記地形が存在しない位置ではない候補から復帰位置を決定させ、
前記プレイヤキャラクタを当該復帰位置まで復帰する移動をさせて、操作入力に基づいた移動制御を再開させる、ゲーム処理方法。
【請求項22】
前記情報処理システムに、さらに、
前記ゲーム処理において、
操作入力に基づいて前記プレイヤキャラクタに第1のアクションを行わせ、
当該第1のアクションに基づいて前記仮想空間内に第1のボクセル更新範囲を設定させ、
前記第1のボクセル更新範囲に対応する前記ボクセルデータのボクセルの前記密度を減少させる、請求項21記載のゲーム処理方法。
【請求項23】
前記情報処理システムに、さらに、
前記ゲーム処理において、
前記プレイヤキャラクタが少なくとも前方向において前記地形に接する第2の場合において、前記プレイヤキャラクタを前記地形に接する位置において操作入力に基づいて移動可能に制御させるとともに、当該プレイヤキャラクタの位置を前記履歴として記憶させる、請求項21記載のゲーム処理方法。
【請求項24】
前記情報処理システムに、さらに、
前記第2の場合において、前記プレイヤキャラクタが所定距離移動する毎の位置、および前記プレイヤキャラクタが停止したときの位置を少なくとも前記履歴として記憶させる、請求項23記載のゲーム処理方法。
【請求項25】
前記情報処理システムに、さらに、
前記ゲーム処理において、
前記プレイヤキャラクタが、前記仮想空間内のチェックポイントに到達した場合に、当該チェックポイントを前記候補としてさらに記憶させるとともに、それまでに記憶された前記履歴を前記候補から除外させる、請求項21記載のゲーム処理方法。
【請求項26】
前記情報処理システムに、前記候補のうち、最も新しいものを前記復帰位置として決定させる、請求項23記載のゲーム処理方法。
【請求項27】
前記第1の条件は、前記プレイヤキャラクタの位置が前記仮想空間内の第1の範囲内になることを含む、請求項21記載のゲーム処理方法。
【請求項28】
前記第1の条件は、前記プレイヤキャラクタが前記復帰する移動に応じて消費される第1の保有アイテムが残されていることを、さらに含む、請求項27記載のゲーム処理方法。
【請求項29】
前記ボクセルデータは、前記複数のボクセルそれぞれについて、前記中身の種類を示すマテリアルがさらに設定され、
前記情報処理システムに、さらに、
前記ボクセルデータに対応し、仮想カメラに基づいて描画される表示用メッシュを、当該メッシュの頂点座標を少なくとも前記ボクセルデータに含まれる前記密度に基づいて決定させ、当該メッシュのマテリアルを少なくとも前記ボクセルデータに含まれる前記マテリアルに基づいて決定させることで生成または更新させ、
前記表示用メッシュの頂点座標と前記表示用メッシュのマテリアルとに対応するテクスチャに基づいて、前記表示用メッシュを含む前記仮想空間の描画を行わせる、請求項21から28のいずれか記載のゲーム処理方法。
【請求項30】
前記ボクセルデータは、前記複数のボクセルそれぞれについて、前記中身の種類を示すマテリアルがさらに設定され、
前記情報処理システムに、さらに、
前記地形メッシュのマテリアルを少なくとも前記ボクセルデータに含まれる前記マテリアルに基づいて決定させ、
前記地形メッシュを表示用メッシュとして、前記表示用メッシュの頂点座標と前記表示用メッシュのマテリアルとに対応するテクスチャに基づいて、前記表示用メッシュを含む前記仮想空間の描画を行わせる、請求項21から28のいずれか記載のゲーム処理方法。
【請求項31】
プロセッサを備えるゲーム装置であって、
前記プロセッサは、
仮想空間内に定義された地形を示すボクセルデータであって、複数のボクセルそれぞれについて、当該ボクセルが定義する空間が仮想的に中身に占められている度合いを示す密度が少なくとも設定されたボクセルデータを、ゲーム処理に基づいて更新し、
前記ボクセルデータに対応し、前記地形を示すメッシュであって、頂点座標が少なくとも前記ボクセルデータに含まれる前記密度に基づいて決定される地形メッシュを更新し、
前記ゲーム処理において、さらに、
プレイヤキャラクタが少なくとも前記地形上に乗っている第1の場合において、前記プレイヤキャラクタを当該地形上となる位置において操作入力に基づいて移動制御すると共に、当該プレイヤキャラクタの位置を履歴として記憶し、
前記プレイヤキャラクタが、移動によって第1の条件を満たした場合に、
操作入力に基づいた移動制御を中断し、
前記履歴に含まれる複数の位置が含まれる候補のうち、前記地形が存在しない位置ではない候補から復帰位置を決定し、
前記プレイヤキャラクタを当該復帰位置まで復帰する移動をさせて、操作入力に基づいた移動制御を再開する、ゲーム装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ボクセルデータを用いて仮想空間におけるオブジェクトを生成するゲームプログラム、ゲームシステム、ゲーム処理方法、およびゲーム装置に関する。
【背景技術】
【0002】
従来、ボクセルデータを用いてオブジェクトを管理し、ボクセルデータに基づいて仮想空間においてオブジェクトのメッシュを生成することが行われている(例えば、非特許文献1参照)。
【先行技術文献】
【非特許文献】
【0003】
【文献】“Marching cubes:A high resolution 3D surface construction algorithm”、Computer Graphics, Volume 21, Number 4、WE Lorensen,HE Cline、1987年
【発明の概要】
【発明が解決しようとする課題】
【0004】
ボクセルの更新に基づいて生成されるメッシュが変形する可能性があるゲームにおいては、プレイヤキャラクタが復帰する位置が適切に設定できない場合がある。
【0005】
本発明は、ボクセルの更新に基づいて生成されるメッシュが変形する可能性があるゲームにおいて、プレイヤキャラクタの復帰位置を適切に設定することができるゲームプログラム、ゲームシステム、ゲーム処理方法、およびゲーム装置を提供する。
【課題を解決するための手段】
【0006】
上記目的を達成するために、本発明は例えば以下の(1)~(10)のような構成を採用し得る。
【0007】
(1)
本発明のゲームプログラムの一構成例は、コンピュータに、仮想空間内に定義された地形を示すボクセルデータであって、複数のボクセルそれぞれについて、当該ボクセルが定義する空間が仮想的に中身に占められている度合いを示す密度が少なくとも設定されたボクセルデータを、ゲーム処理に基づいて更新させ、ボクセルデータに対応し、地形を示すメッシュであって、頂点座標が少なくともボクセルデータに含まれる密度に基づいて決定される地形メッシュを更新させ、ゲーム処理において、さらに、プレイヤキャラクタが少なくとも地形上に乗っている第1の場合において、プレイヤキャラクタを当該地形上となる位置において操作入力に基づいて移動制御させると共に、当該プレイヤキャラクタの位置を履歴として記憶させ、プレイヤキャラクタが、移動によって第1の条件を満たした場合に、操作入力に基づいた移動制御を中断させ、履歴に含まれる複数の位置が含まれる候補のうち、地形が存在しない位置ではない候補から復帰位置を決定させ、プレイヤキャラクタを当該復帰位置まで復帰する移動をさせて、操作入力に基づいた移動制御を再開させる。
【0008】
上記(1)の構成によれば、ボクセルの更新に基づいて生成される地形メッシュが変形する可能性があるゲームにおいて、地形が存在しなくなった位置に復帰しないように、履歴に基づいてプレイヤキャラクタの復帰位置を適切に設定することができる。
【0009】
(2)
上記(1)の構成において、上記コンピュータに、さらに、ゲーム処理において、操作入力に基づいてプレイヤキャラクタに第1のアクションを行わせ、当該第1のアクションに基づいて仮想空間内に第1のボクセル更新範囲を設定させ、第1のボクセル更新範囲に対応するボクセルデータのボクセルの密度を減少させてもよい。
【0010】
上記(2)の構成によれば、プレイヤキャラクタのアクションにより地形を変形させた場合であっても、当該プレイヤキャラクタの復帰位置を適切に設定することができる。
【0011】
(3)
上記(1)または(2)の構成において、上記コンピュータに、さらに、ゲーム処理において、プレイヤキャラクタが少なくとも前方向において地形に接する第2の場合において、プレイヤキャラクタを地形に接する位置において操作入力に基づいて移動可能に制御させるとともに、当該プレイヤキャラクタの位置を履歴として記憶させてもよい。
【0012】
上記(3)の構成によれば、プレイヤキャラクタが壁面を移動する場合でも、当該プレイヤキャラクタの復帰位置を適切に設定することができる。
【0013】
(4)
上記(3)の構成において、上記コンピュータに、さらに、第2の場合において、プレイヤキャラクタが所定距離移動する毎の位置、およびプレイヤキャラクタが停止したときの位置を少なくとも履歴として記憶させてもよい。
【0014】
上記(4)の構成によれば、プレイヤキャラクタが移動した壁面においても、適切な位置を履歴として記憶させることができる。
【0015】
(5)
上記(1)乃至(4)の何れか1つの構成において、上記コンピュータに、さらに、ゲーム処理において、プレイヤキャラクタが、仮想空間内のチェックポイントに到達した場合に、当該チェックポイントを候補としてさらに記憶させるとともに、それまでに記憶された履歴を候補から除外させてもよい。
【0016】
上記(5)の構成によれば、特定のチェックポイント到達時に、それより前に記憶された位置にプレイヤキャラクタが戻らないようにすることができる。
【0017】
(6)
上記(1)乃至(5)の何れか1つの構成において、上記コンピュータに、候補のうち、最も新しいものを復帰位置として決定させてもよい。
【0018】
上記(6)の構成によれば、最も履歴が新しい位置にプレイヤキャラクタを戻すことができる。
【0019】
(7)
上記(1)乃至(6)の何れか1つの構成において、上記第1の条件は、プレイヤキャラクタの位置が仮想空間内の第1の範囲内になることを含んでもよい。
【0020】
上記(7)の構成によれば、プレイヤキャラクタが第1の範囲内に入った場合に復帰位置に戻すことができる。
【0021】
(8)
上記(1)乃至(7)の何れか1つの構成において、上記第1の条件は、プレイヤキャラクタが復帰する移動に応じて消費される第1の保有アイテムが残されていることを、さらに含んでもよい。
【0022】
上記(8)の構成によれば、第1の保有アイテムにプレイヤキャラクタが復帰位置に復帰して移動制御の再開ができる効果を与えることができる。
【0023】
(9)
上記(1)乃至(8)の何れか1つの構成において、上記ボクセルデータは、複数のボクセルそれぞれについて、中身の種類を示すマテリアルがさらに設定されてもよい。上記コンピュータに、さらに、ボクセルデータに対応し、仮想カメラに基づいて描画される表示用メッシュを、当該メッシュの頂点座標を少なくともボクセルデータに含まれる密度に基づいて決定させ、当該メッシュのマテリアルを少なくともボクセルデータに含まれるマテリアルに基づいて決定させることで生成または更新させ、表示用メッシュの頂点座標と表示用メッシュのマテリアルとに対応するテクスチャに基づいて、表示用メッシュを含む仮想空間の描画を行わせてもよい。
【0024】
上記(9)の構成によれば、判定用メッシュと表示用メッシュとがそれぞれ別に決定されるため、それぞれの用途に合わせて適切なメッシュを用いることができる。
【0025】
(10)
上記(1)乃至(8)の何れか1つの構成において、上記ボクセルデータは、複数のボクセルそれぞれについて、中身の種類を示すマテリアルがさらに設定されてもよい。上記コンピュータに、さらに、地形メッシュのマテリアルを少なくともボクセルデータに含まれるマテリアルに基づいて決定させ、地形メッシュを表示用メッシュとして、表示用メッシュの頂点座標と表示用メッシュのマテリアルとに対応するテクスチャに基づいて、前記表示用メッシュを含む前記仮想空間の描画を行わせてもよい。
【0026】
上記(10)の構成によれば、描画とコリジョン判定とを同じメッシュで行うことができるため、メッシュを設定するための処理負荷を軽減することができる。
【0027】
また、本発明は、ゲームシステム、ゲーム処理方法、およびゲーム装置の形態で実施されてもよい。
【発明の効果】
【0028】
本発明によれば、ボクセルの更新に基づいて生成されるメッシュが変形する可能性があるゲームにおいて、プレイヤキャラクタの復帰位置を適切に設定することができる。
【図面の簡単な説明】
【0029】
【
図1】本体装置に左コントローラおよび右コントローラを装着した状態の一例を示す図
【
図2】本体装置から左コントローラおよび右コントローラをそれぞれ外した状態の一例を示す図
【
図7】本体装置と左コントローラおよび右コントローラとの内部構成の一例を示すブロック図
【
図8】ボクセルオブジェクトである地形オブジェクトの一例を示す図
【
図9】
図8に示す地形オブジェクトの一部が削除される前後の様子の一例を示す図
【
図10】
図8に示す地形オブジェクトの一部が削除される前後の様子の一例を示す図
【
図13】更新イベントが発生した場合におけるゲーム空間の一例を示す図
【
図16】頂点のマテリアルを決定する方法の一例を示す図
【
図19】各頂点に基づいて生成されるメッシュの一例を示す図
【
図20】メッシュを構成する四角形が2つの三角形に分割される一例を示す図
【
図21】表示用メッシュを構成するポリゴンのマテリアルを決定する方法の一例を示す図
【
図22】隣接する2つのポリゴンの各頂点に設定されるマテリアルの一例を示す図
【
図23】ポリゴンにテクスチャを適用する一例を示す図
【
図24】判定用メッシュを構成するポリゴンのマテリアルを決定する方法の一例を示す図
【
図25】地形オブジェクト上を移動するプレイヤキャラクタ201が、ゲーム空間における進入禁止エリアに進入した後、復帰アイテムにより復帰位置に復帰する一連の様子を表すゲーム画像の一例を示す図
【
図26】地形オブジェクト上を移動するプレイヤキャラクタ201が、ゲーム空間における進入禁止エリアに進入した後、復帰アイテムにより復帰位置に復帰する一連の様子を表すゲーム画像の一例を示す図
【
図27】地形オブジェクト上を移動するプレイヤキャラクタ201が、ゲーム空間における進入禁止エリアに進入した後、復帰アイテムにより復帰位置に復帰する一連の様子を表すゲーム画像の一例を示す図
【
図28】プレイヤキャラクタ201がゲーム空間内における地形上に乗っている場合に、移動に応じた位置の履歴が記憶される一例を示す図
【
図29】プレイヤキャラクタ201がゲーム空間内における壁面に沿って移動している場合に、移動に応じた位置の履歴が記憶される一例を示す図
【
図30】セーブポイントをプレイヤキャラクタ201が利用する動作に基づいて、候補位置が設定される一例を示す図
【
図31】登録された複数の候補位置が、優先度が高い順に記述されている例を示す図
【
図32】落下すると進入禁止エリアに進入する一本道をプレイヤキャラクタ201が進むミニゲームステージの一例を示す図
【
図33】ゲームシステムにおける情報処理に用いられる各種データの一例を示す図
【
図34】ゲームシステムによって実行されるゲーム処理の流れの一例を示すフローチャート
【
図35】
図34におけるステップS12の各オブジェクトの動作を制御する処理の一例を示すサブルーチン
【
図36】
図35におけるステップS46の候補位置設定処理の前半の一例を示すサブルーチン
【
図37】
図35におけるステップS46の候補位置設定処理の後半の一例を示すサブルーチン
【
図38】
図35におけるステップS47の復帰位置移動処理の一例を示すサブルーチン
【発明を実施するための形態】
【0030】
[1.ゲームシステムの構成]
以下、本実施形態の一例に係るゲームシステムについて説明する。本実施形態におけるゲームシステム1の一例は、本体装置(情報処理装置;本実施形態ではゲーム装置本体として機能する)2と左コントローラ3および右コントローラ4とを含む。本体装置2は、左コントローラ3および右コントローラ4がそれぞれ着脱可能である。つまり、ゲームシステム1は、左コントローラ3および右コントローラ4をそれぞれ本体装置2に装着して一体化された装置として利用できる。また、ゲームシステム1は、本体装置2と左コントローラ3および右コントローラ4とを別体として利用することもできる(
図2参照)。以下では、本実施形態のゲームシステム1のハードウェア構成について説明し、その後に本実施形態のゲームシステム1の制御について説明する。
【0031】
図1は、本体装置2に左コントローラ3および右コントローラ4を装着した状態の一例を示す図である。
図1に示すように、左コントローラ3および右コントローラ4は、それぞれ本体装置2に装着されて一体化されている。本体装置2は、ゲームシステム1における各種の処理(例えば、ゲーム処理)を実行する装置である。本体装置2は、ディスプレイ12を備える。左コントローラ3および右コントローラ4は、ユーザが入力を行うための操作部を備える装置である。
【0032】
図2は、本体装置2から左コントローラ3および右コントローラ4をそれぞれ外した状態の一例を示す図である。
図1および
図2に示すように、左コントローラ3および右コントローラ4は、本体装置2に着脱可能である。なお、以下において、左コントローラ3および右コントローラ4の総称として「コントローラ」と記載することがある。
【0033】
図3は、本体装置2の一例を示す六面図である。
図3に示すように、本体装置2は、略板状のハウジング11を備える。本実施形態において、ハウジング11の主面(換言すれば、表側の面、すなわち、ディスプレイ12が設けられる面)は、大略的には矩形形状である。
【0034】
なお、ハウジング11の形状および大きさは、任意である。一例として、ハウジング11は、携帯可能な大きさであってよい。また、本体装置2単体または本体装置2に左コントローラ3および右コントローラ4が装着された一体型装置は、携帯型装置となってもよい。また、本体装置2または一体型装置が手持ち型の装置となってもよい。また、本体装置2または一体型装置が可搬型装置となってもよい。
【0035】
図3に示すように、本体装置2は、ハウジング11の主面に設けられるディスプレイ12を備える。ディスプレイ12は、本体装置2が生成した画像を表示する。本実施形態においては、ディスプレイ12は、液晶表示装置(LCD)とする。ただし、ディスプレイ12は任意の種類の表示装置であってよい。
【0036】
また、本体装置2は、ディスプレイ12の画面上にタッチパネル13を備える。本実施形態においては、タッチパネル13は、マルチタッチ入力が可能な方式(例えば、静電容量方式)のものである。ただし、タッチパネル13は、任意の種類のものであってよく、例えば、シングルタッチ入力が可能な方式(例えば、抵抗膜方式)のものであってもよい。
【0037】
本体装置2は、ハウジング11の内部においてスピーカ(すなわち、
図6に示すスピーカ88)を備えている。
図3に示すように、ハウジング11の主面には、スピーカ孔11aおよび11bが形成される。そして、スピーカ88の出力音は、これらのスピーカ孔11aおよび11bからそれぞれ出力される。
【0038】
また、本体装置2は、本体装置2が左コントローラ3と有線通信を行うための端子である左側端子17と、本体装置2が右コントローラ4と有線通信を行うための右側端子21を備える。
【0039】
図3に示すように、本体装置2は、スロット23を備える。スロット23は、ハウジング11の上側面に設けられる。スロット23は、所定の種類の記憶媒体を装着可能な形状を有する。所定の種類の記憶媒体は、例えば、ゲームシステム1およびそれと同種の情報処理装置に専用の記憶媒体(例えば、専用メモリカード)である。所定の種類の記憶媒体は、例えば、本体装置2で利用されるデータ(例えば、アプリケーションのセーブデータ等)、および/または、本体装置2で実行されるプログラム(例えば、アプリケーションのプログラム等)を記憶するために用いられる。また、本体装置2は、電源ボタン28を備える。
【0040】
本体装置2は、下側端子27を備える。下側端子27は、本体装置2がクレードルと通信を行うための端子である。本実施形態において、下側端子27は、USBコネクタ(より具体的には、メス側コネクタ)である。上記一体型装置または本体装置2単体をクレードルに載置した場合、ゲームシステム1は、本体装置2が生成して出力する画像を据置型モニタに表示することができる。また、本実施形態においては、クレードルは、載置された上記一体型装置または本体装置2単体を充電する機能を有する。また、クレードルは、ハブ装置(具体的には、USBハブ)の機能を有する。
【0041】
図4は、左コントローラ3の一例を示す六面図である。
図4に示すように、左コントローラ3は、ハウジング31を備える。本実施形態においては、ハウジング31は、縦長の形状、すなわち、上下方向(すなわち、
図1および
図4に示すy軸方向)に長い形状である。左コントローラ3は、本体装置2から外された状態において、縦長となる向きで把持されることも可能である。ハウジング31は、縦長となる向きで把持される場合に片手、特に左手で把持可能な形状および大きさをしている。また、左コントローラ3は、横長となる向きで把持されることも可能である。左コントローラ3が横長となる向きで把持される場合には、両手で把持されるようにしてもよい。
【0042】
左コントローラ3は、アナログスティック32を備える。
図4に示すように、アナログスティック32は、ハウジング31の主面に設けられる。アナログスティック32は、方向を入力することが可能な方向入力部として用いることができる。ユーザは、アナログスティック32を傾倒することによって傾倒方向に応じた方向の入力(および、傾倒した角度に応じた大きさの入力)が可能である。なお、左コントローラ3は、方向入力部として、アナログスティックに代えて、十字キーまたはスライド入力が可能なスライドスティック等を備えるようにしてもよい。また、本実施形態においては、アナログスティック32を押下する入力が可能である。
【0043】
左コントローラ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プログラムやアプリケーションプログラム)に応じた指示を行うために用いられる。
【0044】
また、左コントローラ3は、左コントローラ3が本体装置2と有線通信を行うための端子42を備える。
【0045】
図5は、右コントローラ4の一例を示す六面図である。
図5に示すように、右コントローラ4は、ハウジング51を備える。本実施形態においては、ハウジング51は、縦長の形状、すなわち、上下方向に長い形状である。右コントローラ4は、本体装置2から外された状態において、縦長となる向きで把持されることも可能である。ハウジング51は、縦長となる向きで把持される場合に片手、特に右手で把持可能な形状および大きさをしている。また、右コントローラ4は、横長となる向きで把持されることも可能である。右コントローラ4が横長となる向きで把持される場合には、両手で把持されるようにしてもよい。
【0046】
右コントローラ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を備える。
【0047】
また、右コントローラ4は、右コントローラ4が本体装置2と有線通信を行うための端子64を備える。
【0048】
図6は、本体装置2の内部構成の一例を示すブロック図である。本体装置2は、
図3に示す構成の他、
図6に示す各構成要素81~91、97、および98を備える。これらの構成要素81~91、97、および98のいくつかは、電子部品として電子回路基板上に実装されてハウジング11内に収納されてもよい。
【0049】
本体装置2は、プロセッサ81を備える。プロセッサ81は、本体装置2において実行される各種の情報処理を実行する情報処理部であって、例えば、CPU(Central Processing Unit)のみから構成されてもよいし、CPU機能、GPU(Graphics Processing Unit)機能等の複数の機能を含むSoC(System-on-a-chip)から構成されてもよい。プロセッサ81は、記憶部(具体的には、フラッシュメモリ84等の内部記憶媒体、あるいは、スロット23に装着される外部記憶媒体等)に記憶される情報処理プログラム(例えば、ゲームプログラム)を実行することによって、各種の情報処理を実行する。
【0050】
本体装置2は、自身に内蔵される内部記憶媒体の一例として、フラッシュメモリ84およびDRAM(Dynamic Random Access Memory)85を備える。フラッシュメモリ84およびDRAM85は、プロセッサ81に接続される。フラッシュメモリ84は、主に、本体装置2に保存される各種のデータ(プログラムであってもよい)を記憶するために用いられるメモリである。DRAM85は、情報処理において用いられる各種のデータを一時的に記憶するために用いられるメモリである。
【0051】
本体装置2は、スロットインターフェース(以下、「I/F」と略記する。)91を備える。スロットI/F91は、プロセッサ81に接続される。スロットI/F91は、スロット23に接続され、スロット23に装着された所定の種類の記憶媒体(例えば、専用メモリカード)に対するデータの読み出しおよび書き込みを、プロセッサ81の指示に応じて行う。
【0052】
プロセッサ81は、フラッシュメモリ84およびDRAM85、ならびに上記各記憶媒体との間でデータを適宜読み出したり書き込んだりして、上記の情報処理を実行する。
【0053】
本体装置2は、ネットワーク通信部82を備える。ネットワーク通信部82は、プロセッサ81に接続される。ネットワーク通信部82は、ネットワークを介して外部の装置と通信(具体的には、無線通信)を行う。本実施形態においては、ネットワーク通信部82は、第1の通信態様としてWi-Fiの規格に準拠した方式により、無線LANに接続して外部装置と通信を行う。また、ネットワーク通信部82は、第2の通信態様として所定の通信方式(例えば、独自プロトコルによる通信や、赤外線通信)により、同種の他の本体装置2との間で無線通信を行う。なお、上記第2の通信態様による無線通信は、閉ざされたローカルネットワークエリア内に配置された他の本体装置2との間で無線通信可能であり、複数の本体装置2の間で直接通信することによってデータが送受信される、いわゆる「ローカル通信」を可能とする機能を実現する。
【0054】
本体装置2は、コントローラ通信部83を備える。コントローラ通信部83は、プロセッサ81に接続される。コントローラ通信部83は、左コントローラ3および/または右コントローラ4と無線通信を行う。本体装置2と左コントローラ3および右コントローラ4との通信方式は任意であるが、本実施形態においては、コントローラ通信部83は、左コントローラ3との間および右コントローラ4との間で、Bluetooth(登録商標)の規格に従った通信を行う。
【0055】
プロセッサ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は、クレードルを介してデータ(例えば、画像データや音声データ)を据置型モニタ等に出力することができる。
【0056】
ここで、本体装置2は、複数の左コントローラ3と同時に(換言すれば、並行して)通信を行うことができる。また、本体装置2は、複数の右コントローラ4と同時に(換言すれば、並行して)通信を行うことができる。したがって、複数のユーザは、左コントローラ3および右コントローラ4のセットをそれぞれ用いて、本体装置2に対する入力を同時に行うことができる。一例として、第1ユーザが左コントローラ3および右コントローラ4の第1セットを用いて本体装置2に対して入力を行うと同時に、第2ユーザが左コントローラ3および右コントローラ4の第2セットを用いて本体装置2に対して入力を行うことが可能となる。
【0057】
また、ディスプレイ12は、プロセッサ81に接続される。プロセッサ81は、(例えば、上記の情報処理の実行によって)生成した画像および/または外部から取得した画像をディスプレイ12に表示する。
【0058】
本体装置2は、コーデック回路87およびスピーカ(具体的には、左スピーカおよび右スピーカ)88を備える。コーデック回路87は、スピーカ88および音声入出力端子25に接続されるとともに、プロセッサ81に接続される。コーデック回路87は、スピーカ88および音声入出力端子25に対する音声データの入出力を制御する回路である。
【0059】
本体装置2は、電力制御部97およびバッテリ98を備える。電力制御部97は、バッテリ98およびプロセッサ81に接続される。また、図示しないが、電力制御部97は、本体装置2の各部(具体的には、バッテリ98の電力の給電を受ける各部、左側端子17、および右側端子21)に接続される。電力制御部97は、プロセッサ81からの指令に基づいて、バッテリ98から上記各部への電力供給を制御する。
【0060】
また、バッテリ98は、下側端子27に接続される。外部の充電装置(例えば、クレードル)が下側端子27に接続され、下側端子27を介して本体装置2に電力が供給される場合、供給された電力がバッテリ98に充電される。
【0061】
図7は、本体装置2と左コントローラ3および右コントローラ4との内部構成の一例を示すブロック図である。なお、本体装置2に関する内部構成の詳細については、
図6で示しているため
図7では省略している。
【0062】
左コントローラ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(登録商標)の規格に従って行われる。
【0063】
また、左コントローラ3は、例えばフラッシュメモリ等のメモリ102を備える。通信制御部101は、例えばマイコン(マイクロプロセッサとも言う)で構成され、メモリ102に記憶されるファームウェアを実行することによって各種の処理を実行する。
【0064】
左コントローラ3は、各ボタン103(具体的には、ボタン33~39、43、44、および47)を備える。また、左コントローラ3は、アナログスティック(
図7では「スティック」と記載する)32を備える。各ボタン103およびアナログスティック32は、自身に対して行われた操作に関する情報を、適宜のタイミングで繰り返し通信制御部101へ出力する。
【0065】
通信制御部101は、各入力部(具体的には、各ボタン103、および、アナログスティック32)から、入力に関する情報(具体的には、操作に関する情報、またはセンサによる検出結果)を取得する。通信制御部101は、取得した情報(または取得した情報に所定の加工を行った情報)を含む操作データを本体装置2へ送信する。なお、操作データは、所定時間に1回の割合で繰り返し送信される。なお、入力に関する情報が本体装置2へ送信される間隔は、各入力部について同じであってもよいし、同じでなくてもよい。
【0066】
上記操作データが本体装置2へ送信されることによって、本体装置2は、左コントローラ3に対して行われた入力を得ることができる。すなわち、本体装置2は、各ボタン103およびアナログスティック32に対する操作を、操作データに基づいて判別することができる。
【0067】
左コントローラ3は、電力供給部108を備える。本実施形態において、電力供給部108は、バッテリおよび電力制御回路を有する。図示しないが、電力制御回路は、バッテリに接続されるとともに、左コントローラ3の各部(具体的には、バッテリの電力の給電を受ける各部)に接続される。
【0068】
図7に示すように、右コントローラ4は、本体装置2との間で通信を行う通信制御部111を備える。また、右コントローラ4は、通信制御部111に接続されるメモリ112を備える。通信制御部111は、端子64を含む各構成要素に接続される。通信制御部111およびメモリ112は、左コントローラ3の通信制御部101およびメモリ102と同様の機能を有する。したがって、通信制御部111は、端子64を介した有線通信と、端子64を介さない無線通信(具体的には、Bluetooth(登録商標)の規格に従った通信)との両方で本体装置2と通信を行うことが可能であり、右コントローラ4が本体装置2に対して行う通信方法を制御する。
【0069】
右コントローラ4は、左コントローラ3の各入力部と同様の各入力部を備える。具体的には、各ボタン113、および、アナログスティック52を備える。これらの各入力部については、左コントローラ3の各入力部と同様の機能を有し、同様に動作する。
【0070】
右コントローラ4は、電力供給部118を備える。電力供給部118は、左コントローラ3の電力供給部108と同様の機能を有し、同様に動作する。
【0071】
[2.ゲームシステムにおける処理の概要]
次に、
図8~
図24を参照して、ゲームシステム1において実行される処理の概要について説明する。本実施形態においては、ゲームシステム1は、3次元の仮想空間であるゲーム空間に地形オブジェクトやキャラクタ(例えば、プレイヤによって操作されるプレイヤキャラクタ)が配置されたゲーム画像を生成し、表示装置に表示させる。なお、本実施形態において、ゲーム画像が表示される表示装置は、上述のディスプレイ12であってもよいし、据置型モニタであってもよい。
【0072】
[2-1.ボクセル]
本実施形態では、ゲーム空間におけるいくつかのオブジェクトについては、ボクセルデータによって形状が規定される。ここで、ボクセルとは、ゲーム空間に格子状に並べられた直方体状(より具体的には、立方体状)の領域であり、ボクセルデータとは各ボクセルに関する情報を示すデータである。以下では、ボクセルデータによって形状が規定されるオブジェクトを、「ボクセルオブジェクト」と呼ぶ。本実施形態においては、ゲームシステム1は、ゲーム空間内に設定される複数のボクセルについて、ボクセルオブジェクトをゲーム空間内において生成するためのデータとして、ボクセルデータを記憶する。
【0073】
図8は、ボクセルオブジェクトである地形オブジェクトの一例を示す図である。
図8に示すように、本実施形態においては、地面等の地形を表す地形オブジェクトは、ボクセルデータによって形状が規定される(つまり、ボクセルオブジェクトである)。
図8に示す各立方体は、地形オブジェクトを示す。なお、
図8においては、地形オブジェクトの辺となる部分を太線で示しているが、この太線は図面を見やすくする目的で付したものであり、実際には地形オブジェクトの辺が太く表示される必要はない。
【0074】
図8に示す地形オブジェクトは、例えば、「ボクセルに設定されるボクセルデータに含まれるパラメータが所定値より大きい場合は当該ボクセルの位置に立方体を配置し、所定値以下の場合は当該ボクセルの位置に何も配置しない」というルールで生成されたものである。
図8に示す地形オブジェクトは、ボクセルとボクセルオブジェクトとの関係をわかりやすく例示する目的で示されるものである。本実施形態においては、実際には、例えば後述する
図13に示す地形オブジェクトのように、複雑な形状となるようなルールで(ボクセルデータに基づいて)ボクセルオブジェクトが生成される。なお、ボクセルデータに基づいてボクセルオブジェクトの形状を決定するルールは任意である。他の実施形態においては、ゲームシステム1は、オブジェクトデータに基づいて、
図8に示すようなボクセルオブジェクトを生成してもよいし、
図13に示すようなボクセルオブジェクトを生成してもよい。
【0075】
ボクセルオブジェクトについては、各ボクセルのボクセルデータを変更することで、形状を変化させることができる。
図9および
図10は、
図8に示す地形オブジェクトの一部が削除される前後の様子の一例を示す図である。すなわち、
図9に示す地形オブジェクトのうちの斜線部分が破壊される場合、地形オブジェクトは
図10に示すような形状に変化する。このとき、ゲームシステム1は、上記斜線部分のボクセルについて、地形オブジェクトが存在しないことを示すように、後述のボクセルデータを書き換えることで、地形オブジェクトを容易に消去することができる。なお、ゲームシステム1は、地形オブジェクトを追加する場合も、地形オブジェクトを消去する場合と同様に、各ボクセルのボクセルデータを変更することで、地形オブジェクトの形状を容易に変化させることができる。
【0076】
このように、ゲームシステム1は、ボクセルデータを書き換えることによって、ボクセルオブジェクトの形状を自由に変化させることができる。例えば、ゲームにおいて地形オブジェクトが何らかの理由(例えば、プレイヤキャラクタが地形オブジェクトに打撃を加える等)で破壊される結果として当該地形オブジェクトの形状を変化させる場合、ゲームシステム1は、地形オブジェクトの外形形状を示すデータ(すなわち、後述するメッシュ)を直接変更するのではなく、地形オブジェクトの生成に用いられるボクセルデータを変更することで、地形オブジェクトの形状を自由に変化させることができる。
【0077】
なお、本実施形態においては、ゲーム空間の全体にボクセルが規定される(つまり、ボクセルが設定されるボクセル空間がゲーム空間全体に対応する)ものとする。ただし、ボクセル空間はゲーム空間の全体に設定される必要はなく、ゲーム空間の一部の領域に設定されてもよい。ボクセル空間がゲーム空間の一部の領域に設定される場合、当該ボクセル空間におけるボクセルに関するボクセルデータによってボクセルオブジェクトの形状が規定され、ゲーム空間における当該ボクセル空間の位置によって当該ゲーム空間におけるボクセルオブジェクトの位置が規定される。また、ゲーム空間には、ゲーム空間の全体に設定される主ボクセル空間と、ゲーム空間の一部の領域に設定される副ボクセル空間とが設定されてもよい。このとき、ゲームシステム1は、ボクセル空間毎にボクセルデータを記憶する。
【0078】
図11は、ボクセルデータの一例を示す図である。ボクセルデータは、ゲーム空間に定義される各ボクセルについて、密度データ、第1マテリアルID、第2マテリアルID、マテリアル混合比データ、および、状態データを含む。本実施形態におけるボクセルデータには、これらのデータが1つのボクセル毎に設定される。
【0079】
密度データは、当該ボクセルに基づいたボクセルオブジェクトの形状(具体的には、後述するメッシュで規定される形状)を規定するために用いられる指標である密度を示す。詳細は後述するが、ボクセルオブジェクトの表面(すなわち、後述するメッシュ)の位置および形状は、上記の密度に基づいて決定される。
【0080】
本実施形態においては、密度は、下限値(例えば、0)から上限値(例えば、255)までの範囲の整数値をとり得る。本実施形態においては、ゲームシステム1は、ボクセルに設定される密度の値が高いと、当該ボクセル内においてボクセルオブジェクト内の領域が占める体積の割合が大きくなりやすく、当該密度の値が低いと当該割合が小さくなりやすいように、密度に基づいてボクセルオブジェクトの表面形状を決定する。このように、密度は、当該ボクセル内においてボクセルオブジェクト内の領域が占める体積の割合に影響を与える指標である。密度は、当該ボクセルの空間が仮想的に中身(すなわち、ボクセルオブジェクトの仮想的な中身)に占められている度合いを示す指標であるとも言える。例えば、密度が0である場合には当該ボクセル内が空であり、密度が255の場合には当該ボクセル内の全てがボクセルオブジェクトの中身であり、密度が0と255の間の値の場合には値に応じた割合で当該ボクセル内をボクセルオブジェクトの中身が占めるものとすることができる。そして、上記密度に基づいて、メッシュの形状、すなわちボクセルオブジェクトの表面形状を決定することができる。メッシュは、ボクセルにおいて中身が存在する部分の表面であると言うこともできるし、ボクセルにおいて中身が存在する部分と存在しない部分の境界であると言うこともできる。なお、上記密度に基づいて生成されたボクセルオブジェクト内の領域が占める体積は、密度が示す割合と厳密に一致する体積になる必要はない。例えば、
図8のようなボクセルオブジェクトを生成する手法と、
図13のようなボクセルオブジェクトを生成する手法とでは、同じ密度に基づいていてもボクセルオブジェクトの体積が異なることもある。
【0081】
他の実施形態においては、密度は、ボクセル内の領域の全体をボクセルオブジェクト内の領域が占める体積が占める状態と、ボクセル内の領域にボクセルオブジェクト内の領域が占める体積が含まれない状態とのいずれかを示すものであってもよい。例えば、密度データは、0または1のみをとり得るデータであってもよい。
【0082】
第1マテリアルIDおよび第2マテリアルIDは、当該ボクセルのマテリアル(換言すれば、物質)を示す情報である。ここで、本実施形態においては、ボクセルには、例えば、砂、岩、または、土といったマテリアルが設定される。なお、ゲームシステム1においては、ボクセルに設定され得るマテリアルとして複数種類のマテリアルが用意されている(
図12に示すマテリアルデータを参照)。本実施形態においては、1つのボクセルには、用意された複数種類のマテリアルのうち2つまでのマテリアルが設定可能である。第1マテリアルIDは、当該ボクセルに設定される第1のマテリアルを示すIDであり、第2マテリアルIDは、当該ボクセルに設定される第2のマテリアルを示すIDである。詳細は後述するが、ボクセルオブジェクトのマテリアル(すなわち、ボクセルオブジェクトのポリゴンに設定されるマテリアル)は、ボクセルに設定されるマテリアルに基づいて決定される。
【0083】
上記のように、本実施形態においては、ボクセルデータは、マテリアルを示すIDを含むものとしたが、他の実施形態においては、ボクセルデータは、マテリアルの内容(すなわち、後述する名称や、性質や、描画設定の情報)を直接示すデータを含むデータ構造であってもよい。
【0084】
マテリアル混合比データは、当該ボクセルにおけるそれぞれのマテリアルの比率を示すデータの一例である。本実施形態においては、1つのボクセルに設定されるマテリアルIDが2つまでなので、上記第1マテリアルIDが示すマテリアルと上記第2マテリアルIDが示すマテリアルの一方の比率を示すマテリアル混合比データで他方の比率も表すことができる。本実施形態においては、マテリアル混合比は、0以上1以下の値によって第1のマテリアルおよび第2のマテリアルからなる全体に対する第2のマテリアルの割合を示す値とする。例えば、あるボクセルに設定されるマテリアル混合比が0.4である場合、当該ボクセルにおいて、第1のマテリアルと第2のマテリアルとが0.6:0.4の比で構成されることを表す。詳細は後述するが、ボクセルオブジェクトの見た目および性質はマテリアルに基づいて決定される。マテリアル混合比は、ボクセルオブジェクトの見た目および性質を決定するために用いられる。マテリアル混合比は、他の実施形態においては、第1のマテリアルの割合を示す値であってもよい。また、マテリアルのボクセル内の比率は、それぞれのマテリアル毎の割合を示すそれぞれの値によって表されてもよい。特に、他の実施形態において、マテリアルを2種類まででなくて3種類以上設定可能な場合には、それぞれのマテリアル毎の割合をそれぞれ示す複数の値としてマテリアルのボクセル内の比率を表すことになる。
【0085】
なお、本実施形態において、ボクセルには必ずしも2種類のマテリアルが設定される必要はなく、1種類のマテリアルが設定されてもよい。例えば、あるボクセルに設定されるマテリアルが1種類である場合、第1マテリアルIDが当該マテリアルを示し、マテリアル混合比は0に設定される。
【0086】
状態データは、当該ボクセルに設定される状態を示す。状態データの具体的な内容や種類数は任意である。本実施形態においては、状態データは、当該ボクセルに設定されるダメージの量を示すデータを含む。なお、他の実施形態においては、状態データには、例えば当該ボクセルが濡れた状態であるか否か(および、その程度)を示すデータが含まれていてもよい。
【0087】
上記のように、本実施形態においてはボクセルデータにはマテリアルIDが含まれるので、ゲームシステム1は、当該マテリアルIDが示すマテリアルの内容を規定するマテリアルデータを記憶する。
図12は、マテリアルデータの一例を示す図である。
図12に示すように、本実施形態におけるマテリアルデータにおいては、マテリアル毎に、マテリアルIDと、当該マテリアルに設定される名称、性質、および、描画設定の情報とが対応付けられる。
【0088】
マテリアルデータに含まれる名称は、当該マテリアルに設定される名称(例えば、土、砂、草等)である。なお、ゲーム中においては、ボクセルオブジェクトのマテリアルの名称が表示されてもよい。このような表示を行うために、マテリアルデータはマテリアルの名称の情報を含む。
【0089】
マテリアルデータに含まれる性質は、当該マテリアルに設定される性質である。マテリアルの性質とは、当該マテリアルが設定されるボクセルオブジェクトがゲームにおいて有する性質である。なお、マテリアルの性質の具体的な内容や種類数は任意である。例えば、マテリアルの性質として下記の情報の少なくともいずれかが設定されてもよい。
・硬さ
・重さ
・滑り易さ
・プレイヤキャラクタが接触した場合のダメ―ジ設定
・温度
・ボクセルオブジェクトに他のオブジェクトが接着可能か否か
・プレイヤキャラクタがボクセルオブジェクトを破壊または取得した場合におけるプレイヤキャラクタの体力の回復量
・プレイヤキャラクタがボクセルオブジェクトを破壊または取得した場合にプレイヤキャラクタが取得するゲーム内通貨の量
他の実施形態においては、マテリアルの性質を示す情報として、上記とは異なる情報が設定されてもよい。
【0090】
本実施形態においては、マテリアルデータは、マテリアルの性質を特定する情報として、当該性質を示すIDを含む(
図12参照)。図示しないが、ゲームシステム1は、用意される性質毎に、性質IDに対して当該性質の内容(例えば、上述の重さや滑りやすさを示す値)が対応付けられた性質情報を記憶する。ゲームシステム1は、上記性質情報を参照することで、マテリアルについて設定される性質の具体的な内容を特定することができる。
【0091】
マテリアルデータに含まれる描画設定は、当該マテリアルが設定されるボクセルオブジェクトの描画に用いられるテクスチャ等、描画に関する設定を示す情報である。本実施形態においては、マテリアルデータは、描画設定の情報として、当該マテリアルが設定されるボクセルオブジェクトの描画に用いるテクスチャのIDを含む(
図12参照)。図示しないが、ゲームシステム1は、用意されるテクスチャ毎に、テクスチャIDと、当該テクスチャIDが示すテクスチャとを対応付けたテクスチャ情報を記憶する。ゲームシステム1は、上記テクスチャ情報を参照することで、マテリアルについて設定されるテクスチャの具体的な内容を特定することができる。なお、他の実施形態においては、描画設定の情報として、テクスチャの情報に加えて、シェーディングの設定に関する任意の情報が設定されてもよい。たとえば、反射率や、法線に関する情報等が設定されていてもよい。
【0092】
また、マテリアルデータは、
図12に示すデータ以外の他のデータを含んでいてもよい。例えば、マテリアルデータは、サウンド設定に関するデータを含んでいてもよい。例えば、サウンド設定に関するデータは、当該ボクセルに基づくボクセルオブジェクト上をプレイヤキャラクタが歩いた場合に出力される足音を規定するデータであってもよい。
【0093】
なお、マテリアルデータは、マテリアルの性質および/または描画設定を特定可能な任意の形式のデータであってよい。例えば、他の実施形態においては、マテリアルデータは、マテリアルIDやテクスチャIDを含むデータ構造に代えて、マテリアルの性質および/または描画設定を直接示すデータを含むデータ構造を有していてもよい。
【0094】
[2-2.ボクセルデータの更新]
ゲーム中においては、上述のボクセルデータが更新されることで、ボクセルオブジェクトが変形される。本実施形態においては、ボクセルオブジェクトを更新させるためのゲームイベント(以下、「更新イベント」と呼ぶ。)が発生した場合、ゲームシステム1はボクセルデータの更新を行う。更新イベントの具体的な内容は任意である。更新イベントは、例えば、ゲームに登場するキャラクタが、ボクセルオブジェクトを変形させるアクションを行った(例えば、プレイヤキャラクタがボクセルオブジェクトに対してパンチを行った)ことであってもよいし、ボクセルオブジェクトを変形させる事象が発生したこと(例えば、キャラクタが投げつけたオブジェクトがボクセルオブジェクトに接触したことや、爆弾が爆発したこと)であってもよい。
【0095】
図13は、更新イベントが発生した場合におけるゲーム空間の一例を示す図である。
図13に示す状況は、ボクセルオブジェクトである地形オブジェクト202に対してプレイヤキャラクタ201がパンチアクションを行った状況である。詳細は後述するが、
図13に示す例においては、プレイヤキャラクタ201によるパンチアクションが当たった位置の周囲の地形オブジェクト202が消去されるように、ボクセルデータが更新される。これによって、プレイヤキャラクタ201によるパンチアクションによって地形オブジェクト202が破壊される様子が表現される。
【0096】
本実施形態においては、更新イベントが発生した場合、ゲームシステム1は、ボクセルオブジェクトの更新を行う更新範囲(
図13に示す例においては、更新範囲203)をゲーム空間において設定する。更新範囲の位置、形状、および、大きさは任意である。更新範囲の位置は、例えば、発生した更新イベントに関するオブジェクト(例えば、パンチを行ったプレイヤキャラクタ)とボクセルオブジェクトとが接触した位置に基づいて決定されてもよい。
図13に示す例においては、プレイヤキャラクタ201によるパンチが当たった位置に基づいて更新範囲203の位置が決定されてよく、例えば、当たった位置、あるいは、当たった位置から所定距離だけ前方の位置が更新範囲203の中心位置とされてもよい。更新範囲の形状および大きさは、更新イベントの種類に応じた形状となるように予め決定されてもよい。例えば、プレイヤキャラクタ201のパンチによる更新イベントが発生した場合、
図13に示すような所定の大きさの球体として、更新範囲の形状および大きさが決定されてもよい。また、更新範囲の大きさは、発生した更新イベントの影響度合いを示す値(例えば、パンチの強さや爆発の大きさ)に応じて決定されてもよい。
【0097】
ゲームシステム1は、設定された更新範囲に対応するボクセルについて密度を変更する。なお、更新範囲に対応するボクセルとは、例えば、更新範囲内のボクセル、あるいは、更新範囲と重複するボクセルである。密度が変更される結果、後述する処理によってボクセルオブジェクトのメッシュが変更されることで、ボクセルオブジェクトの形状(見た目の形状、および、接触判定に用いられる形状)が変更される。なお、他の実施形態においては、ゲームシステム1は、更新範囲内に含まれるボクセルについて密度を変更することに加えて、当該ボクセルにおけるマテリアル(すなわち、第1のマテリアル、第2のマテリアル、および、マテリアル混合比)を変更してもよいし、当該ボクセルにおける状態を変更してもよい。
【0098】
本実施形態においては、ゲームシステム1は、ボクセルが更新範囲に含まれるか否かの判定を、SDF(Signed Distance Field:符号付距離場)を用いて行う。ゲームシステム1は、ゲーム空間内に設定される更新範囲を示すSDFを設定し、SDFの値に基づいて上記の判定を行う。SDFは、任意の位置について、規定する形状からの距離を符号付で表すものである。
図14は、更新範囲の一例を示す図である。
図14に示す例においては、ゲーム空間に球形の更新範囲が設定されている。例えば、
図14に示す例においては、ゲーム空間内の位置のうち、SDFが表す形状の内側の位置についてはSDFの値が負の値となり、SDFが表す形状の外側の位置についてはSDFの値が正の値となるようにSDFが設定される。この例では、SDFの値の正であるか負であるかによって、更新範囲に含まれるか否かを判定することができる。また、符号付距離の値を用いることで、単純な内外判定だけでなく、補正や補間等の処理を行うこともできる。
【0099】
上記においては、更新範囲内のボクセルオブジェクトが消去されたように変形されるという変更がボクセルオブジェクトに加えられる例について説明したが、更新範囲を用いてボクセルオブジェクトに加えられる変更はこれに限らない。例えば、更新範囲内にボクセルオブジェクトが新たに追加される(つまり、更新範囲の分だけボクセルオブジェクト内の領域が占める体積が増加する)変更がボクセルオブジェクトに対して加えられてもよい。また、ボクセルの密度は変更されずに、更新範囲内におけるボクセルのマテリアルのみが変化するような変更がボクセルオブジェクトに対して加えられてもよい。また、ボクセルの密度の変更とマテリアルの変更とが複合的に加えられてもよい。
【0100】
[2-3.頂点の算出]
上記のようにしてボクセルの密度が更新された場合、ゲームシステム1は、更新後のボクセルデータに基づいて頂点を設定する。上記の頂点とは、ボクセルオブジェクトのメッシュの頂点となり得るものである。詳細は後述するが、本実施形態においては、上記の頂点について簡略化が行われ、簡略化後の頂点がボクセルオブジェクトのメッシュの頂点となる。
【0101】
図15は、頂点の設定方法の一例を示す図である。なお、以下において説明する
図15~
図24では、図面を見やすくし、説明を分かりやすくする目的で、ボクセル、頂点、メッシュ等を2次元で表現しているが、実際には3次元空間におけるボクセルに基づいて3次元空間において頂点およびメッシュが設定される。本実施形態においては、ゲームシステム1は、存在することを示す設定の密度(すなわち、後述する基準値以上の密度)を有するボクセルと、存在しないことを示す設定の密度(すなわち、後述する基準値未満の密度)を有するボクセルとが隣接する部分に対し、周囲の複数のボクセルの位置と密度とに基づいた座標に頂点を設定させる手法を用いる。以下、この手法の詳細について説明する。
【0102】
上述のように、本実施形態においては、ボクセルに設定される密度は、0~255の範囲で設定される。密度が0のボクセルは完全に空中で、密度が255のボクセルは完全に中身が詰まっている状態を表す。0と255の間の密度は補間的に扱われ、頂点の決定に用いられる。そして、本実施形態においては、密度が基準値以上のボクセルをオブジェクト内とし、密度が基準値未満のボクセルをオブジェクト外であると仮想的に扱う。密度が基準値以上のボクセルを、存在することを示すボクセルであるとし、密度が基準値未満のボクセルを、存在しないことを示すボクセルであるとして仮想的に扱う、ということもできる。密度が0のボクセルのみをオブジェクト外と定義する(すなわち基準値=1とする)必要はなく、当該基準値は、例えば128とする。
図15に示す例においては、ボクセル211および外側の他のボクセルにおいては密度が0、ボクセル212は密度が基準値未満である100、ボクセル213、214においては密度が基準値以上である150、210と設定されているものとする。本実施形態においては、ゲームシステム1は、密度が基準値以上のボクセルと基準値未満のボクセルとの間に頂点を生成する。具体的には、隣接する8個(図面では4個)のボクセルに跨がった領域(図面では点線に囲まれた領域)ごとに、頂点を生成するか否かの判定を行う。つまり、密度が基準値以上のボクセルと基準値未満のボクセルの両方に跨がる領域に頂点を生成する。頂点の座標は、XYZの軸ごとに、隣接するボクセル同士の密度を比較し、密度の差に基づいた補間によって決定される。なお、頂点間を結ぶ直線の位置および向きを規定する法線情報を設定しておくことで、さらに法線情報に基づいて頂点の座標を計算することができる。なお、法線情報は、少なくとも一部のボクセルについて予め保持しておくようにしてもよいし、保持されていない場合は法線情報も隣接するボクセル同士の密度に基づいて算出されてもよい。なお、
図15において、ボクセル212の密度は基準値未満であるので、頂点の有無の判定においては、ボクセル212はオブジェクト外として扱われるが、ボクセル212の密度の値自体は、生成される頂点の座標計算に用いられる。仮にボクセル212の密度よりも低い値に基準値を設定した場合は、
図15のボクセル212における右上側と左上側に頂点がさらに増える結果となる。
【0103】
上記のように頂点を設定することで、設定された各頂点(あるいは、設定された各頂点に対して後述の簡略化処理を行った後の各頂点)を結ぶメッシュを生成する場合には、ボクセルごとの密度をある程度反映した体積を有する形状を生成することができる。ただし、隣接ボクセルとの関係によっては、密度0のボクセルが一部オブジェクト内の領域を含むことや、密度255のボクセルが一部オブジェクト外の領域を含むようなこともあり得る。また、本実施形態では、基準値未満のボクセルはオブジェクト外として処理するため、オブジェクト内として処理する場合に比べて頂点が少なくなる分、体積も小さくなる。このように、厳密に密度の値に対応する体積となるようにポリゴンメッシュを算出する必要は無い。
【0104】
[2-4.頂点のマテリアルの決定]
ゲームシステム1は、上記のように設定された各頂点についてマテリアルを決定する。頂点のマテリアルは、当該頂点の周囲のボクセルに関するマテリアルに基づいて決定される。頂点の周囲のボクセルとは、例えば、当該頂点を生成するか否かの判定に用いられたボクセル(すなわち、上述の「ボクセルに跨がった領域」と重なるボクセル)である。なお、他の実施形態においては、頂点のマテリアルの決定に用いられるボクセルと、頂点の生成の判定に用いられるボクセルとは同じである必要はなく、異なっていてもよい。
【0105】
図16は、頂点のマテリアルを決定する方法の一例を示す図である。
図16に示す例においては、4つのボクセル215~218に関して頂点219が設定されたものとし、当該4つのボクセル215~218が上述の「頂点の周囲のボクセル」である。なお、実際の3次元空間では、頂点の周囲のボクセルの数は8つとなる。また、
図16に示す例においては、ボクセル215については、密度が255、第1のマテリアルが「砂」、マテリアル混合比は0(つまり、第1のマテリアル:第2のマテリアル=1:0、もしくは第2のマテリアルは設定されなくともよい)と設定されるものとする。ボクセル216については、密度が0(第1および第2のマテリアルは設定されなくともよい)と設定されるものとする。ボクセル217については、密度が204、第1のマテリアルが「砂」、第2のマテリアルは「草」、マテリアル混合比は0.3(つまり、第1のマテリアル:第2のマテリアル=0.7:0.3)と設定されるものとする。ボクセル218については、密度が153、第1のマテリアルが「土」、第2のマテリアルは「草」、マテリアル混合比は0.4(つまり、第1のマテリアル:第2のマテリアル=0.6:0.4)と設定されるものとする。また、頂点219の位置を示す座標は、(X,Y)=(0.8,0.6)であるとする。なお、この座標の座標系は、
図16における左右方向をX座標とし、上下方向をY座標とし、ボクセル215~218の中心位置(
図13に示す白丸の位置)のうちで左下のボクセル217の中心位置を(0,0)とする座標系である。
【0106】
頂点のマテリアルを決定する場合、ゲームシステム1は、周囲のボクセルにおけるマテリアル毎に、当該マテリアルの密度と、ボクセルから頂点までの距離に基づく重み値とに基づいて評価値を算出する。まず、重み値は、ボクセル毎に算出され、当該ボクセルの中心位置から頂点までの距離が近いほど大きくなるように算出される。本実施形態においては、当該ボクセルの中心位置を(x1,y1)とし、頂点の座標を(x2,y2)としたとき、あるボクセルについての重み値は、次の式(1)に従って算出される。
(重み値)=|(1-x1)-x2|・|(1-y1)-y2|…(1)
図16に示す例においては、上式(1)に従って算出される各ボクセル215~218の重み値は次のようになる。
(ボクセル215の重み値)=|(1-0)-0.8|・|(1-1)-0.6|=0.12
(ボクセル216の重み値)=|(1-1)-0.8|・|(1-1)-0.6|=0.48
(ボクセル217の重み値)=|(1-0)-0.8|・|(1-0)-0.6|=0.08
(ボクセル218の重み値)=|(1-1)-0.8|・|(1-0)-0.6|=0.32
【0107】
また、ゲームシステム1は、マテリアルの密度をボクセル毎に算出する。ここで、マテリアルの密度とは、当該ボクセルに設定されているマテリアルのうちで当該マテリアルが占める割合に、当該ボクセルの密度を乗算した値である。なお、本実施形態においては、上記ボクセルの密度としては、上述した0から255までの値を、0から1までの値に正規化した値を用いるものとする。
図16に示す例においては、ボクセル215については、設定されているマテリアルは砂のみであるので、砂のマテリアルに関する上記割合は1であり、当該ボクセルの密度は1であるので、砂のマテリアルの密度は1となる。ボクセル216については、密度が0であってマテリアルも設定されていないので、マテリアルの密度は算出されない。もしくは、何らかのマテリアルが設定されている場合は、当該マテリアルの密度は0となる。ボクセル217については、設定されている砂のマテリアルと草のマテリアルとの上記割合はそれぞれ、0.7、0.3であり、当該ボクセルの密度は204/255=0.8であるので、砂のマテリアルの密度は、0.7・0.8=0.56となり、草のマテリアルの密度は、0.3・0.8=0.24となる。ボクセル218については、設定されている土のマテリアルと草のマテリアルとの上記割合はそれぞれ、0.6、0.4であり、当該ボクセルの密度は153/255=0.6であるので、土のマテリアルの密度は、0.6・0.6=0.36となり、土のマテリアルの密度は、0.4・0.6=0.24となる。
【0108】
そして、ゲームシステム1は、上記の重み値と、マテリアルの密度とに基づいて、マテリアル毎の上記評価値を算出する。本実施形態においては、マテリアルの評価値は、各ボクセルについて算出された当該マテリアルの密度を、ボクセル毎の重み値に応じた重みを付して、周囲の各ボクセルについて合計した値である。
図16に示す例においては、砂のマテリアルの評価値は、ボクセル215についてのマテリアルの密度が1、重み値が0.12であり、ボクセル217についてのマテリアルの密度が0.56、重み値が0.08であるので、1・0.12+0.56・0.08=0.1648となる。また、草のマテリアルの評価値は、ボクセル217についてのマテリアルの密度が0.24、重み値が0.08であり、ボクセル218についてのマテリアルの密度が0.24、重み値が0.32であるので、0.24・0.08+0.24・0.32=0.096となる。また、土のマテリアルの評価値は、ボクセル218についてのマテリアルの密度が0.36、重み値が0.32であるので、0.36・0.32=0.1152となる。
【0109】
ゲームシステム1は、マテリアル毎の評価値に基づいて頂点のマテリアルを決定する。具体的には、評価値が大きいものから順に所定数のマテリアルが頂点のマテリアルとして決定される。本実施形態においては、評価値が大きい2つが頂点のマテリアルとして決定される。
図16に示す例においては、砂、草、土のマテリアルの評価値は、それぞれ、0.1648、0.096、0.1152であるので、頂点のマテリアルとしては、砂のマテリアルと土のマテリアルとに決定される。また、ゲームシステム1は、決定された2つのマテリアルの比率を上記評価値に基づいて算出する。本実施形態においては、2つのマテリアルの比率は、上記マテリアル混合比と同様、全体に対する第2のマテリアルの割合である第2マテリアル比として表されてもよい。
図16に示す例において、例えば第1のマテリアルが土のマテリアルであり、第2のマテリアルが砂のマテリアルと設定された場合、上記第2マテリアル比は、0.1648/(0.1648+0.1152)≒0.59で示される。なお、他の実施形態においては、2つのマテリアルの比率を表す値としては、第1のマテリアルの割合を示す値が用いられてもよい。また、それぞれのマテリアル毎の割合を示すそれぞれの値が用いられてもよい。
【0110】
本実施形態においては、ゲームシステム1は、頂点の位置と、頂点に設定される第1および第2のマテリアルのマテリアルIDと、マテリアルの比率とを示す頂点データを生成して記憶する。ただし、頂点に設定されるマテリアルを管理する方法は任意である。他の実施形態においては、頂点データは、第1および第2のマテリアルの内容を直接示すデータを含むデータ構造であってもよい。
【0111】
上記のように、本実施形態においては、ゲームシステム1は、頂点毎に、周囲の複数のボクセルのボクセルデータに含まれるマテリアルIDについて、当該マテリアルID毎の優先度パラメータ(たとえば、評価値)を当該ボクセルデータに基づいて算出する。そして、優先度パラメータに基づいて、優先度の高い所定個数(ここでは、2個)までのマテリアルIDを選択して頂点のマテリアルIDとして決定する。なお、優先度パラメータとして用いられる具体的なパラメータは、上記評価値に限らない。例えば、他の実施形態においては、上記重み値を用いずに、マテリアルの密度を用いて算出される評価値が優先度パラメータとして用いられてもよい。
【0112】
なお、本実施形態においては、優先度パラメータの一例である評価値は、当該頂点の周囲の複数のボクセルの密度に基づいて、密度の高いボクセルに設定されたマテリアルの優先度が高くなるように(つまり、当該マテリアルの評価値が大きくなり、当該マテリアルが選択されやすくなるように)算出される。これによれば、ボクセルに設定される密度の大きさを反映して頂点のマテリアルを決定することができる。
【0113】
また、本実施形態においては、優先度パラメータの一例である評価値は、当該頂点の周囲の複数のボクセルの基準位置(具体的には、中心位置)から当該頂点までの距離に基づいて、当該頂点に近いボクセルに設定されたマテリアルの優先度が高くなるように算出される。これによれば、ボクセルと頂点との距離を反映して頂点のマテリアルを決定することができる。
【0114】
また、本実施形態においては、優先度パラメータの一例である評価値は、当該頂点の周囲の複数のボクセルのマテリアル混合比に基づいて、当該マテリアル混合比が高いマテリアルの優先度が高くなるように算出されるとも言うことができる。これによれば、1つのボクセルに複数のマテリアルが設定される場合において、各マテリアルの比率を反映して頂点のマテリアルを決定することができる。
【0115】
[2-5.頂点の簡略化]
本実施形態においては、ゲームシステム1は、上記のようにして算出された各頂点について簡略化を行う。すなわち、ゲームシステム1は、上記のようにして算出された各頂点のいくつかをまとめて1つの頂点に置き換えることで、頂点数を減少させる。なお、詳細は後述するが、置き換えられる頂点の座標(すなわち、位置)およびマテリアルは、置き換え前の複数の頂点に基づいて設定される。このような簡略化によって、ボクセルオブジェクトのメッシュを構成する頂点の数やポリゴンの数を減少させることができ、処理に用いられるメモリ量を低減したり、処理負荷を低減したりすることができる。
【0116】
本実施形態においては、ゲームシステム1は、SVO(Sparse Voxel Octree)を用いて各頂点を表現することで簡略化を行う。
図17は、頂点の簡略化の一例を示す図である。なお、
図17では、
図17に示す(a)に示す実線で示される1つの正方形が1つの頂点区分領域を表す。ここで、頂点区分領域とは、ボクセルの中心位置を頂点とする正方形の領域であり(実際の3次元空間では、頂点区分領域は立方体または直方体である)、上述の
図15および
図16における点線を辺とする領域である。また、
図17において、内部に「v」の文字が示されている頂点区分領域は、頂点が設定されている頂点区分領域を示す。
【0117】
本実施形態においては、ゲームシステム1は、互いに隣接する所定個数(
図17では4個、実際の3次元空間では8個)の頂点区分領域内の頂点について、簡略化が可能であるか否かを判定する。簡略化が可能であると判定される場合、当該所定個数の頂点区分領域内の頂点について簡略化が行われる。
【0118】
図17に示す(a)は、簡略化が行われる前の状態である。
図17に示す例においては、点線で囲まれる範囲内の頂点区分領域について簡略化可能と判定されるものとする。このとき、ゲームシステム1は、簡略化可能と判定される上記所定個数の各頂点区分領域内の頂点が、1つの頂点に置き換えられるように簡略化を行う(
図17に示す(b)参照)。これによって、上記所定個数の頂点区分領域内の頂点が1つの頂点に簡略化されることとなる。
【0119】
本実施形態においては、ゲームシステム1は複数段階で簡略化を行う。段階数は任意であるが、
図17では、2段階目までを図示して説明する。
図17に示す(b)は、1段階目の簡略化が行われた状態を示し、
図17に示す(c)は、2段階目の簡略化が行われた状態を示している。2段階目の簡略化においては、1段階目の簡略化によって生じた頂点を対象として、簡略化が可能であるか否かが判定される。
図17に示す例においては、
図17に示す(b)において点線で囲まれる範囲内の頂点区分領域について簡略化可能と判定される結果、当該頂点区分領域の頂点が簡略化され、
図17に示す(c)に示す状態となる。なお、1段階目の簡略化が可能であるか否かの判定条件と、2段階目の簡略化が可能であるか否かの判定条件とは同じ内容であってもよいし、異なる内容であってもよい。
【0120】
簡略化が可能であるか否かの判定について、具体的な方法は任意である。本実施形態においては、上記判定のための条件として、ボクセルオブジェクトの形状に関する条件と、マテリアルに関する条件とが用いられる。本実施形態においては、ボクセルオブジェクトの形状に関する条件と、マテリアルに関する条件との両方が満たされる場合、簡略化可能であると判定され、ボクセルオブジェクトの形状に関する条件と、マテリアルに関する条件との少なくとも一方が満たされない場合、簡略化不可能であると判定される。
【0121】
形状に関する条件とは、例えば、簡略化前の各頂点による形状と、簡略化後の各頂点による形状とが大きく変更されないことである。例えば、各頂点による形状が簡略化前後で大きく変更されないか否かは、簡略化前のメッシュと簡略化後のメッシュとの間の誤差を示す指標を算出し、当該指標が所定の許容値以下であるか否かによって判定することもできる。また例えば、簡略化前の各頂点による形状が中空の形状であるのに対して、簡略化後の各頂点による形状が中空でない形状となる(つまり、簡略化によって中空であるという情報が欠落してしまう)場合も、形状に関する条件が満たされないと判定される。なお、上記の場合が生じるか否かは、例えば、判定対象となる頂点区分領域に対応する各ボクセルの密度に基づいて判定することができる。また例えば、簡略化前の各頂点による形状が、2以上の頂点によってしか表現できず、1つの頂点では表現できないような形状である場合も、形状に関する条件が満たされないと判定される。なお、ボクセルオブジェクトの形状に関する条件としては、SVOを用いた従来の手法と同様の条件が用いられてもよい。
【0122】
また、マテリアルに関する条件としては、本実施形態においては、簡略化の対象となる上記所定個数の頂点区分領域内の各頂点に設定されるマテリアルの種類数に関する条件が用いられる。
図18は、マテリアルに関する条件の一例を示す図である。
図18に示す(a)は、頂点221~224のマテリアルが、それぞれ、(草)、(草)、(草と土)、(草と土)である場合を示しており、
図18に示す(b)は、頂点221~224のマテリアルが、それぞれ、(草と砂)、(草)、(草と土)、(草と土)である場合を示している。本実施形態においては、マテリアルに関する条件は、簡略化の対象となる上記各頂点に設定されるマテリアルの種類の合計が所定数以下となることである。例えば、マテリアルに関する条件は、1つの頂点に設定可能なマテリアルの数以下となることとする。本実施形態においては、上記所定数は2である。例えば、
図18に示す(a)の場合には、簡略化の対象となる各頂点221~224に設定されるマテリアルの種類の合計は、草と土の2種類となるので、マテリアルに関する条件は満たされる。このとき、上述のオブジェクトの形状に関する条件が満たされることを条件に、各頂点221~224は簡略化可能と判定される。一方、
図18に示す(b)の場合には、簡略化の対象となる各頂点221~224に設定されるマテリアルの種類の合計は、草と土と砂の3種類となるので、マテリアルに関する条件は満たされない。このとき、上述のオブジェクトの形状に関する条件が満たされるか否かに関わらず、各頂点221~224は簡略化不可能と判定される。
【0123】
なお、ゲームシステム1において、厳密には異なる種類に分類されるマテリアルであっても、設定される性質が同じであって、見た目が異なる複数種類のマテリアルが用意されてもよい。このような複数種類のマテリアルの一部については、マテリアルに関する条件の判定においては同じ種類とみなして判定を行ってもよい。例えば、土のマテリアルに関して、性質は同じであるものの見た目(例えば、テクスチャの色や模様)が近い複数種類の土のマテリアルが用意される場合がある。このような場合、ゲームシステム1は、当該複数種類の土のマテリアルについては同じ種類とみなしてマテリアルに関する条件の判定を行ってもよい。
【0124】
ここで、本実施形態においては、頂点に関してはボクセルと同様に、2種類までのマテリアルが設定可能である。これに対して、本実施形態においては、簡略化の対象となる各頂点に設定されるマテリアルの種類の合計が3種類以上である場合には、簡略化が行われない。すなわち、マテリアルの種類の合計が1つの頂点に設定可能なマテリアルの数を超える場合には簡略化が行われない。したがって、簡略化によって頂点の数を減らしたとしても、頂点に設定されたマテリアルの情報が簡略化によって欠落することはなく、マテリアルの情報を維持することができる。
【0125】
本実施形態においては、簡略化後の頂点のマテリアルは、簡略化前の各頂点のマテリアルに基づいて決定される。具体的には、ゲームシステム1は、簡略化前の頂点に設定される1種類または2種類のマテリアルを、簡略化後の頂点における第1のマテリアルおよび第2のマテリアルに設定する。これによって、マテリアルの情報を維持することができる。なお、簡略化後のマテリアルの比率は、簡略化前の各頂点のマテリアルの比率に基づいて決定される。本実施形態においては、簡略化後のマテリアルの比率は、上述の評価値を用いて各頂点のマテリアルの比率を算出する方法と同様にして算出される。すなわち、ゲームシステム1は、簡略化後の頂点と簡略化前の頂点との距離に基づいて重み値を算出し、当該重み値と、簡略化前の頂点におけるマテリアルの密度(なお、上記[2-4.頂点のマテリアルの決定]で述べたマテリアルの評価値を、ここでのマテリアルの密度として用いることができる。)とに基づいて、マテリアル毎の評価値を算出する。そして、算出された各マテリアルの評価値に基づいてマテリアルの比率を算出する。
【0126】
[2-6.メッシュの生成]
本実施形態においては、上記のようにして簡略化された各頂点に基づいて、ボクセルオブジェクトのメッシュが生成される。
図19は、各頂点に基づいて生成されるメッシュの一例を示す図である。なお、
図19に示す正方形は、上述の頂点区分領域、あるいは、簡略化によって複数の頂点区分領域がまとめられて1つになった頂点区分領域を示す。
図19に示すように、ゲームシステム1は、頂点区分領域が隣接する頂点同士を結ぶ直線を辺とする多角形で構成されるメッシュを生成する。メッシュを構成する各多角形は三角形または四角形となる。
【0127】
本実施形態においては、ゲームシステム1は、表示用メッシュと判定用メッシュとの2種類のメッシュを生成する。表示用メッシュは、ボクセルオブジェクトの表示のために用いられるメッシュである。判定用メッシュは、ボクセルオブジェクトのコリジョン判定のために用いられるメッシュである。詳細は後述するが、ゲームシステム1は、上記の2種類のメッシュを用いることで、ボクセルオブジェクトの表示およびコリジョン判定のそれぞれに適したメッシュを用いて処理を行うことができる。
【0128】
本実施形態においては、ゲームシステム1は、表示用メッシュおよび判定用メッシュを、上述のSVOのデータに基づいて(すなわち、簡略化された各頂点に基づいて)生成する。これによれば、2種類のメッシュの生成に用いられる頂点データを共有することで、処理の効率化を図ることができる。なお、他の実施形態においては、ゲームシステム1は、頂点の簡略化を行わなくてもよく、簡略化されていない頂点に基づいて表示用メッシュおよび/または判定用メッシュを生成してもよい。
【0129】
本実施形態においては、ゲームシステム1は、判定用メッシュを、表示用メッシュよりも簡易な形状となるように生成する。具体的には、ゲームシステム1は、判定用メッシュの頂点数が表示用メッシュの頂点数よりも少なくなるようにする。ここで、本実施形態においては、SVOのデータは、簡略化前の頂点のデータと、簡略化された頂点のデータとを八分木構造で保持するデータであるが、簡略化可能であるか否かの判定のために用いられたデータも含む。このデータは、例えば、簡略化後の頂点の候補として算出された頂点(仮の頂点と呼ぶ。)のデータ、および、簡略化前の頂点と当該仮の頂点との間の誤差を示す上述の指標のデータを含む。例えば、ゲームシステム1は、仮の頂点のうち、上記指標が所定の閾値(この閾値は、上記許容値よりも大きいものとする)以下である頂点を、判定用メッシュの生成に用いるようにしてもよい。これによれば、判定用メッシュの頂点数を表示用メッシュの頂点数よりも少なくすることができる。判定用メッシュの頂点数を表示用メッシュの頂点数よりも少なくすることで、コリジョン判定による処理負荷を軽減できる。また、表示用メッシュの頂点数を過度に減らすことがないのでボクセルオブジェクトの見た目を詳細に表現できる。
【0130】
なお、他の実施形態においては、表示用メッシュおよび判定用メッシュは、同じデータに基づいて生成されてもよいし、異なるデータに基づいて生成されてもよい。また、表示用メッシュと判定用メッシュは同じ形状であってもよい(ただし、この場合でも両者に設定されるマテリアルは異なっていてもよい)。また、判定用メッシュの頂点数は、表示用メッシュの頂点数と同じであってもよいし、表示用メッシュの頂点数よりも多くてもよい。
【0131】
[2-6-1.表示用メッシュのマテリアルの決定]
次に、表示用メッシュのマテリアルおよび見た目を決定する方法の一例について説明する。本実施形態においては、ゲームシステム1は、表示用メッシュを構成する多角形毎にマテリアルを決定する。詳細は後述するが、本実施形態においては、上記多角形に対応するポリゴンは、2種類までのマテリアルに対応する2種類までのテクスチャを用いて描画される。そのため、ゲームシステム1は、メッシュを構成する各多角形について、最終的には1つの多角形について設定されるマテリアルが2種類以下となるようにする。他の実施形態においては、3種類以上のマテリアルが設定されるようにしてもよい。例えば、ボクセルのマテリアル、頂点のマテリアルがそれぞれ3種類以上の実施形態において、同数のマテリアルが多角形に設定されるようにしてもよい。
【0132】
本実施形態においては、表示用メッシュを構成する多角形として四角形が形成されることがある(
図19参照)。表示用メッシュのマテリアルを決定する際、ゲームシステム1はまず、表示用メッシュを構成する四角形を、一定条件下で2つの三角形に分割する。以下、
図20を参照して、四角形を2つの三角形に分割する処理について説明する。
【0133】
図20は、メッシュを構成する四角形が2つの三角形に分割される一例を示す図である。
図20に示す(a)は、メッシュの頂点の一部である頂点231~234によって形成される分割前の四角形を示しており、
図20に示す(b)は、当該四角形を分割した2つの三角形を示している。
図20に示す例においては、各頂点231~234のマテリアルとしては、それぞれ、草、土、砂と草、および、草が設定されているものとする。
【0134】
本実施形態においては、ゲームシステム1は、四角形の各頂点にそれぞれ設定されるマテリアルの種類が合計で3種類以上である場合、分割条件が満たされるか否かを判定する。本実施形態においては、分割条件は、四角形を2つの三角形に分割することで、三角形の各頂点に設定されるマテリアルの種類を合計で2種類以下にできることである。分割条件が満たされる場合、ゲームシステム1は、各頂点に設定されるマテリアルの種類が合計で2種類以下となる2つの三角形に四角形を分割する。
図20に示す例においては、四角形を形成する各頂点231~234に設定されるマテリアルは、草、土、および、砂の3種類である。また、上記四角形を、頂点231,232,234で形成される三角形と、頂点231,233,234で形成される三角形とに分割すると、前者の三角形の各頂点に設定されるマテリアルは砂と草の2種類となり、後者の三角形の各頂点に設定されるマテリアルは草と土の2種類となる(
図20に示す(b)参照)。したがって、上記四角形については分割条件が満たされるので、ゲームシステム1は当該四角形を2つの三角形に分割する。
【0135】
なお、四角形を2つの三角形に分割する方法は2通りであるので、ゲームシステム1は、2通りのうち少なくともいずれかの方法で分割された三角形に関して分割条件が満たされる場合、分割条件が満たされる方法で上記の分割を行う。一方、2通りのいずれの方法で分割された三角形についても分割条件が満たされない場合、いずれかの方法で分割を行う。
【0136】
上記のように分割を行うことで、ゲームシステム1は、四角形の各頂点に設定される3種類以上のマテリアルの情報をなるべく欠落させないように、各頂点に設定されるマテリアルが2種類以下となる2つの三角形を生成することができる。ここで、上述のように、メッシュを構成する各ポリゴンは2種類までのテクスチャを用いて描画される。したがって、ゲームシステム1は、上記の分割を行うことで、各頂点に設定されたマテリアルの情報をなるべく欠落させないように、2種類のテクスチャを用いてポリゴンを描画することができる。
【0137】
本実施形態においては、ゲームシステム1は、上記の分割が行われた後の多角形に対応するポリゴンを設定する。すなわち、上記の分割が行われた後の多角形の頂点が、表示用メッシュのポリゴンの頂点となる。
【0138】
本実施形態においては、ゲームシステム1は、表示用メッシュを構成する各ポリゴンについて、1つのポリゴンの各頂点に設定されるマテリアルが合計で3種類以上である場合、2種類のマテリアルを選択することで、当該ポリゴンのマテリアルを決定する。
図21は、表示用メッシュを構成するポリゴンのマテリアルを決定する方法の一例を示す図である。
図21に示す例においては、表示用メッシュを構成する三角形のポリゴンの頂点241については、第1のマテリアルが「草」、第2のマテリアルは「土」、第1のマテリアル:第2のマテリアル=0.8:0.2のマテリアル比率と設定されるものとする。また、上記ポリゴンの頂点242については、第1のマテリアルが「草」、第2のマテリアルは「砂」、第1のマテリアル:第2のマテリアル=0.5:0.5のマテリアル比率と設定されるものとする。また、上記ポリゴンの頂点243については、第1のマテリアルが「砂」、第2のマテリアルは「土」、第1のマテリアル:第2のマテリアル=0.7:0.3のマテリアル比率と設定されるものとする。
【0139】
ポリゴンの各頂点に設定されるマテリアルが合計で3種類以上である場合、ゲームシステム1は、マテリアル毎に判定値を算出する。判定値は、当該マテリアルが設定される頂点毎の比率を合計した値として算出される。そして、ゲームシステム1は、判定値が大きいものから順に2つのマテリアルを、当該ポリゴンのマテリアルとして選択する。
図21に示す例においては、草のマテリアルの判定値は、0.8+0.5=1.3となり、砂のマテリアルの判定値は、0.5+0.7=1.2となり、土のマテリアルの判定値は、0.2+0.3=0.5となる。したがって、
図21に示すポリゴンのマテリアルとしては、草と砂とのマテリアルが選択される(
図21に示す(a)参照)。
【0140】
なお、表示用メッシュのポリゴンのマテリアルを選択する具体的な方法は任意である。他の実施形態においては、表示用メッシュのポリゴンのマテリアルは、当該ポリゴンの頂点に設定される情報に基づく任意の方法で選択されてよい。例えば、表示用メッシュのポリゴンのマテリアルは、1つの頂点において最も比率が大きいマテリアルを頂点毎に特定し、各頂点について特定された数が最も多いマテリアルが、当該ポリゴンのマテリアルとして選択されてもよい。
【0141】
本実施形態においては、上記のように選択されたポリゴンのマテリアルは、ポリゴンの各頂点に設定されるマテリアルによって示される。すなわち、ポリゴンのマテリアルが選択された場合、ゲームシステム1は、当該ポリゴンの各頂点に設定されているマテリアル(すなわち、頂点のデータに含まれるマテリアルID)を、選択されたマテリアルとなるように変更する。
図21に示す例においては、頂点241および243については、ポリゴンのマテリアルの選択前においては、それぞれ、草と土、砂と土のマテリアルが設定されている(
図21に示す(a)参照)。上記のようにしてポリゴンのマテリアルとして草と砂のマテリアルが選択された場合、各頂点241および243に設定されるマテリアルは草と砂に変更される(
図21に示す(b)参照)。なお、頂点242については、選択前に設定されているマテリアルが、選択されたポリゴンのマテリアルと同じであるので、マテリアルの変更は行われない。上記のように、ポリゴンのマテリアルとして2種類のマテリアルが選択される場合、当該ポリゴンの各頂点に設定されている3種類目以降のマテリアルの情報は消去されることとなる。
【0142】
また、ゲームシステム1は、頂点に設定されるマテリアルの変更に応じて、当該頂点に設定されるマテリアルの比率を変更する。例えば、頂点241については、第1のマテリアルが草であり、第2のマテリアルが土である内容から、第1のマテリアルが草であり、第2のマテリアルが砂である内容へと変更される。ここで、砂のマテリアルの割合は0であるので、第1のマテリアル:第2のマテリアル=1:0のマテリアル比率とされる。このように、上記の変更は、ポリゴンのマテリアルを当該ポリゴンの各頂点のマテリアルによって表現するために、各頂点のマテリアルを形式的に変更するものである。
【0143】
上記によれば、1つのポリゴンの各頂点に設定されるマテリアルが、後述する描画に用いるテクスチャに対応するマテリアルのみとなるので、テクスチャを用いた描画処理を実行しやすくすることができる。
【0144】
なお、上記の変更によって、ある頂点についてマテリアルが全て変更される(つまり、変更前のマテリアルと変更後のマテリアルとが1つも一致しない)場合もあり得る。このような場合とは、例えば、変更前の頂点に設定されていたマテリアルが土であり、ポリゴンのマテリアルとして選択されたマテリアルが草と砂であるような場合である。このような場合には、当該頂点におけるマテリアルの比率は、当該ポリゴンの他の頂点におけるマテリアルの比率に基づいて設定されてもよい。例えば、上記の例において、三角形のポリゴンの他の頂点のうち1つの頂点に設定される第1のマテリアルが草であって草:砂=1:0のマテリアル比率、もう1つの頂点に設定されるマテリアルが砂であって砂:草=1:0のマテリアル比率の場合、当該頂点におけるマテリアル比率は草:砂=0.5:0.5に設定されてもよい。また、ゲームシステム1は、当該頂点と他の頂点との距離を考慮して(例えば、距離が近いほど大きくなる重み値に基づいて)、当該頂点におけるマテリアルの比率を決定してもよい。
【0145】
以上のように、本実施形態においては、ゲームシステム1は、ポリゴン毎に、当該ポリゴンに含まれる頂点に設定されたマテリアルID(すなわち、ポリゴンに対応する多角形の頂点に設定されるマテリアルID)のうち、所定個数(ここでは、2個)までのマテリアルIDを選択させて当該ポリゴンのマテリアルIDとして決定する。これによれば、ゲームシステム1は、頂点に設定されるマテリアルをポリゴンの見た目に反映しつつ、用いられるテクスチャの数を抑えて描画処理を行うことができる。
【0146】
なお、本実施形態においては、ゲームシステム1は、ポリゴンを構成する全ての頂点のマテリアルに関して、当該マテリアルの数が上記所定個数以下の場合には、当該マテリアルを当該ポリゴンのマテリアルに決定し、当該マテリアルが上記所定個数を超える場合には、それぞれの頂点の優先度パラメータに基づいて(具体的には、上述の評価値に基づいて算出される上記判定値に基づいて)優先度の高い所定個数のマテリアルを選択して当該ポリゴンのマテリアルに決定する。これによって、各頂点について合計で所定個数を超えるマテリアルが設定されている場合でも、ポリゴンのマテリアルを、優先度を考慮した所定個数以下のマテリアルとすることができる。
【0147】
上記のように、本実施形態においては、1つのポリゴンの各頂点に設定される第1および第2のマテリアルは、当該ポリゴンに設定される2種類のマテリアルとなるように変更される。ここで、このような変更を行う場合、隣接する2つのポリゴンで共有される頂点については、設定される第1および第2のマテリアルに齟齬が生じる可能性がある。
【0148】
図22は、隣接する2つのポリゴンの各頂点に設定されるマテリアルの一例を示す図である。
図22は、
図20に示す各頂点231~234によって2つのポリゴンが形成されている状態(
図20に示す(b))を示している。
図22に示す例において、頂点231、233、および234で形成される第1のポリゴンのマテリアルは、草および砂に決定されるので、これらの頂点の第1および第2のマテリアルは、それぞれ、草、砂に設定されるべきである。一方、頂点231、232、および234で形成される第2のポリゴンのマテリアルは、草および土に決定されるので、これらの頂点の第1および第2のマテリアルは、それぞれ、草、土に設定されるべきである。そのため、
図22に示す例では、2つのポリゴンで共有される頂点231および234については、設定すべきマテリアルに齟齬が生じる。
【0149】
そこで、本実施形態においては、2つのポリゴンで共有される頂点に設定すべきマテリアルに齟齬が生じる場合、ゲームシステム1は、当該頂点に関して、同じ位置にもう1つ頂点を追加する。
図22に示す(b)は、頂点231について頂点231’が追加され、頂点234について頂点234’が追加された状態の一例を示す図である。
図22の例においては、ゲームシステム1は、頂点231および234については、第1および第2のマテリアルを、第1のポリゴンのマテリアルに応じて草および砂として設定する。また、頂点231’および234’については、第1および第2のマテリアルを、第2のポリゴンのマテリアルに応じて草および土として設定する。このように、2つのポリゴンで共有される頂点として形式的に2つの頂点を設定する(すなわち、位置が同じでマテリアルが異なる2つの頂点データを生成する)ことで、頂点に設定されるマテリアルに齟齬が生じることを抑制することができる。
【0150】
ゲームシステム1は、以上のようにして頂点およびマテリアルが決定されたポリゴンからなる表示用メッシュを生成する。また、ゲームシステム1は、各頂点に設定されるマテリアルの情報(すなわち、第1のマテリアルおよび第2のマテリアル)に基づいてポリゴンの描画を行うことで、ボクセルオブジェクトの描画を行う。
【0151】
図23は、ポリゴンにテクスチャを適用する一例を示す図である。
図23には、
図21に示す各頂点241~243によって形成される三角形のポリゴンが示されている。なお、各頂点241~243に設定されるマテリアルは、
図21に示す(b)に示したものとなっている。
【0152】
ポリゴンの頂点の位置については、当該頂点に設定される第1のマテリアルのテクスチャと第2のマテリアルのテクスチャとを、当該頂点に設定されるマテリアルの比率で(つまり、当該比率をブレンド率として)ブレンドするマッピングによって描画が行われる。なお、描画に用いられる第1および第2のマテリアルのテクスチャは、上述のマテリアルデータ(
図12参照)において、当該頂点のデータに対応付けられる各マテリアルIDに対応付けられる描画設定の情報が示すテクスチャである。
図23に示す例においては、頂点241の位置については、草:砂=1:0のマテリアル比率となっているので、草のテクスチャのみを用いて描画が行われる。また、頂点243の位置については、第1のマテリアルが砂であり、砂:草=1:0のマテリアル比率となっているので、砂のテクスチャのみを用いて描画が行われる。また、頂点242の位置については、第1のマテリアルが草であり、第2のマテリアルが砂であり、草:砂=0.5:0.5のマテリアル比率となっているので、草のテクスチャと砂のテクスチャとを0.5:0.5のブレンド率でブレンドして描画が行われる。
【0153】
また、ポリゴンの頂点以外の位置については、ゲームシステム1は、各頂点におけるブレンド率を補間することでブレンド率を決定する。そして、各頂点に設定される2つのマテリアルのテクスチャを、補間されたブレンド率に基づいてブレンドするマッピングによって描画が行われる。なお、補間の具体的な方法は任意である。一例としては、頂点間のブレンド率を線形補間する。
図23においては、草のマテリアルのテクスチャが適用される比率が高い位置を白色で示し、砂のマテリアルのテクスチャが適用される比率が高い位置を黒色で示している。
図23に示す例では、頂点241では草のテクスチャが適用され、頂点243に向かうにつれて砂のテクスチャのブレンド比が高くなり、頂点242の位置では草と砂のブレンド率が1:1となり、頂点243の位置では砂のテクスチャのみが適用される。このように、ポリゴンに設定される(すなわち、ポリゴンの各頂点に設定される)2つのテクスチャを、マテリアルの比率に応じたブレンド率でブレンドして描画することで、表示用メッシュにおいて、異なるマテリアル同士の境界における見た目を自然なものとすることができる。これによって、複数種類のマテリアルが設定される表示用メッシュの見た目を自然なものとすることができる。
【0154】
[2-6-2.判定用メッシュのマテリアルの決定]
次に、判定用メッシュのマテリアルを決定する方法の一例について説明する。詳細は後述するが、本実施形態においては、判定用メッシュを用いてボクセルオブジェクトのコリジョン判定が行われ、コリジョンが判定されたボクセルオブジェクトのマテリアルに応じた処理が実行されることがある。そのため、本実施形態においては、判定用メッシュについてもマテリアルが決定される。
【0155】
本実施形態においては、ゲームシステム1は、判定用メッシュを構成する各多角形のポリゴンについて、1つのポリゴンについて設定されるマテリアルが1種類となるようにする。具体的には、ゲームシステム1は、判定用メッシュのポリゴンに設定されるマテリアルを、当該ポリゴンの頂点に設定されるマテリアルの情報(すなわち、第1および第2のマテリアルと、マテリアルの比率の情報)に基づいて決定する。
【0156】
図24は、判定用メッシュを構成するポリゴンのマテリアルを決定する方法の一例を示す図である。
図24は、
図21に示す各頂点241~243で形成される三角形のポリゴンについてマテリアルを決定する例を示している。なお、各頂点241~243に設定されるマテリアルは、
図21に示す(a)に示したものとなっている。
【0157】
ポリゴンのマテリアルを決定する際、ゲームシステム1は、ポリゴンの各頂点に設定されるマテリアル毎に判定値を算出する。本実施形態においては、上記判定値の算出方法は、表示用メッシュの多角形に設定されるマテリアルの選択に用いられた判定値の算出方法と同じである。なお、判定値の具体的な算出方法は任意である。他の実施形態においては、上記判定値は、判定用メッシュのポリゴンの頂点に設定される情報に基づく任意の方法で算出されてよい。
【0158】
図24に示す例においては、マテリアル毎の判定値は、上述した
図21に示す場合と同様に、草のマテリアルの判定値は1.3となり、砂のマテリアルの判定値は1.2となり、土のマテリアルの判定値は0.5となる。したがって、
図24に示すポリゴンのマテリアルとしては、草のマテリアルが選択される。
【0159】
以上のように、本実施形態においては、ゲームシステム1は、ポリゴン毎に、当該ポリゴンに含まれる頂点に設定されたマテリアルID(すなわち、ポリゴンに対応する多角形の頂点に設定されるマテリアルID)のうち、所定個数(ここでは、1個)までのマテリアルIDを選択させて当該ポリゴンのマテリアルIDとして決定する。これによれば、ゲームシステム1は、判定用メッシュに設定されるマテリアルの数を所定個数以下に抑えることができる。これによって、判定用メッシュを用いたコリジョン判定の結果に応じて行われる、マテリアルの種類に応じた処理が煩雑になることを抑制することができる。なお、判定用メッシュのポリゴンのマテリアルを決定する方法は任意であり、上記に限らない。他の実施形態においては、判定用メッシュのポリゴンのマテリアルは、当該ポリゴンの頂点に設定される情報に基づく任意の方法で決定されてよい。
【0160】
また、本実施形態においては、表示用メッシュのポリゴンについては2種類までのマテリアルが設定されるのに対して、判定用メッシュのポリゴンについては1種類のマテリアルが設定される。これによれば、表示用メッシュのポリゴンについては2種類のテクスチャを用いて自然な見た目とすることができるとともに、判定用メッシュについては、当該判定用メッシュを用いたコリジョン判定の結果に応じて行われる処理が煩雑になることを抑制することができる。なお、他の実施形態においては、表示用メッシュおよび判定用メッシュのポリゴンに設定可能なマテリアルの種類は任意である。表示用メッシュのポリゴンに設定可能なマテリアルの数と、判定用メッシュのポリゴンに設定可能なマテリアルの数とは、共に複数であってもよいし、同じであってもよいし、異なっていてもよい。
【0161】
なお、本実施形態においては、1つのボクセルに設定されるマテリアルの種類は2つまでであり、表示用メッシュにおける1つのポリゴンに設定されるマテリアルの種類は2つまでである。これによれば、ボクセルデータのデータ量を抑えつつ、表示用メッシュのマテリアルに対して、ボクセルデータにおいて設定されるマテリアルの情報を反映させることができる。また、本実施形態においてはさらに、ボクセルデータに基づいて設定される頂点に設定されるマテリアルの種類も2つまでである(
図16参照)。これによれば、ボクセルデータから表示用メッシュを得る処理の途中に生成される頂点についても2種類のマテリアルを設定できるので、当該処理の途中でマテリアルの情報が欠落することなく、ボクセルデータにおいて設定されるマテリアルの情報を表示用メッシュに対して反映させることができる。
【0162】
また、他の実施形態においては、ゲームシステム1は、ボクセルデータに基づいて設定される頂点に関して、表示用メッシュの生成に用いる頂点と、判定用メッシュの生成に用いる頂点とで異なるようにマテリアルを設定してもよい。例えば、ゲームシステム1は、表示用メッシュの生成に用いる頂点については上述のように2種類までのマテリアルを設定し、判定用メッシュの生成に用いる頂点については1種類のマテリアルを設定するようにしてもよい。そして、表示用メッシュのポリゴンのマテリアルについては、上記と同様に2種類のマテリアルを設定し、判定用メッシュのポリゴンのマテリアルとして、当該ポリゴンの各頂点にそれぞれ設定される1種類のマテリアルに基づいて1種類のマテリアルを設定してもよい。なお、判定用メッシュの生成に用いる頂点について1種類のマテリアルを設定する場合、各マテリアルについて算出される上述の判定値が最も大きいマテリアルを当該頂点のマテリアルに設定してもよい。上記によっても、本実施形態と同様に、表示用メッシュにおける1つのポリゴンに設定されるマテリアルの種類は2つまでとするとともに、判定用メッシュにおける1つのポリゴンに設定されるマテリアルの種類を1つとすることができる。そのため、ボクセルデータにおいて設定されるマテリアルの情報を表示用メッシュに対して反映させることができるとともに、判定用メッシュを用いたコリジョン判定の結果に応じて行われる処理が煩雑になることを抑制することができる。
【0163】
上記のように、本実施形態においては、1つのボクセルオブジェクトについて表示用メッシュと判定用メッシュとが設定され得る。ただし、ゲーム状況によっては、1つのボクセルオブジェクトについて表示用メッシュと判定用メッシュとの両方が同時に設定される必要はない(例えば、1フレームにおける処理において両方が設定される必要はない)。例えば、判定用メッシュは、ゲーム空間のうちで、コリジョン判定が行われる範囲において生成され、コリジョン判定が行われない範囲においては生成されなくてもよい。一例としては、ゲームシステム1は、プレイヤキャラクタを中心とした所定範囲内のボクセルオブジェクトについて判定用メッシュを生成し、当該所定範囲外のボクセルオブジェクトについては判定用メッシュを生成せず、表示用メッシュのみを生成するようにしてもよい。
【0164】
また、ゲームシステム1は、表示用メッシュについては、生成されたメッシュに関するデータをメモリに記憶しておき、当該メッシュが生成された後のフレームにおいては、更新が行われた範囲を除き、メッシュを生成する処理を再度実行せずに、当該データを用いるようにしてもよい。これによれば、表示用メッシュを生成するための処理負荷を軽減できる。また、判定用メッシュについては、生成されたメッシュに関するデータをメモリに記憶せず、必要に応じて(例えば、コリジョン判定を行う必要が生じる度に)逐次メッシュを生成するようにしてもよい。これによれば、メッシュの生成に用いられるメモリ領域を節約することができる。
【0165】
以上においては、ボクセルデータが初期状態から変更された場合に、変更後のボクセルデータに基づいて各メッシュ(すなわち、表示用メッシュおよび判定用メッシュ)を生成する方法について説明した。なお、上記の方法は、例えばゲームの開始時において、初期状態のボクセルデータに基づいて各メッシュを生成する場合にも用いることができる。ただし、初期状態のボクセルデータに基づく各メッシュは、ゲーム開始時に初期状態のボクセルデータに基づいて生成される必要はなく、ゲーム開始前に予め用意されていてもよい。
【0166】
また、他の実施形態においては、上述した表示用メッシュおよび判定用メッシュの何れか一方のみ設定してもよい(すなわち、表示用と判定用とを同じメッシュとして共用する)。この場合、上述した表示用メッシュを判定用メッシュとしても用いることにより共用してもよいし、上述した判定用メッシュを表示用メッシュとしても用いることにより共用してもよい。判定用メッシュと表示用メッシュとをそれぞれ別に設定する場合、それぞれの用途に合わせて適切なメッシュを用いることができることに対し、描画とコリジョン判定とを同じメッシュで共用する場合、メッシュを設定するための処理負荷を軽減することができる。
【0167】
[2-7.プレイヤキャラクタ復帰移動制御処理]
次に、
図25~
図32を参照して、プレイヤキャラクタ復帰移動制御を行う処理例について説明する。以下においては、地面や壁等の地形オブジェクトがボクセルオブジェクトであるものとし、プレイヤキャラクタがアクションを行い、コリジョン判定が行われた結果として、ゲーム内の作用が発生する場合の例について説明する。
【0168】
なお、上記「ゲーム内の作用」は、ゲームにおいて生じる任意の変化であり、例えば「オブジェクト同士の接触の結果を反映する処理」によって生じる変化である。「ゲーム内の作用」は、判定用メッシュと、ゲーム処理に基づいた判定対象に対応する判定形状(例えば、プレイヤキャラクタ等のオブジェクトに設定される判定領域等)とのコリジョン判定に基づくものであればよく、判定用メッシュに対応するオブジェクトに上記作用が生じてもよいし、上記判定対象に対応するオブジェクトに上記作用が生じてもよい。「ゲーム内の作用」の内容は、当該作用が発生する要因となるコリジョン判定においてコリジョンが判定されたポリゴンに設定されるマテリアルに関連付けられてもよい(つまり、当該マテリアルによって作用の内容が決められてもよい)。
【0169】
図25~
図27は、地形オブジェクト上を移動するプレイヤキャラクタ201が、ゲーム空間における進入禁止エリアに進入した後、復帰アイテムにより復帰位置に復帰する一連の様子を表すゲーム画像の一例を示す図である。
【0170】
図25の上図に示すように、ゲームシステム1は、プレイヤキャラクタ201をゲーム空間内における地形オブジェクト上となる地形上の位置において、ユーザの操作入力に基づいて移動制御することができる。
図25の上図に示す例においては、地面である地形オブジェクト251の判定用メッシュのポリゴンについてのマテリアルが「岩」に設定されている。そして、プレイヤキャラクタ201は、地形オブジェクト251の地形の一例として段丘面上を移動しており、プレイヤキャラクタ201の進行方向に崖の壁面(側面)251aを有する崖が形成されている。
【0171】
図25の上図に示す例において、ゲームシステム1は、判定用メッシュを用いて地形オブジェクト251とプレイヤキャラクタ201とのコリジョン判定を行う。すなわち、地形オブジェクト251の判定用メッシュと、プレイヤキャラクタについて設定される判定形状(例えば、プレイヤキャラクタの位置に基づいて設定される、所定形状の領域)とが接触するか否かのコリジョン判定を行う。そして、マテリアルが岩であるポリゴンとプレイヤキャラクタ201とのコリジョンが判定された場合、ゲーム内の作用を発生させる処理として、プレイヤキャラクタ201は、当該ポリゴンの内側には進入できないように制御される。したがって、プレイヤキャラクタ201は、上記地形オブジェクト251のポリゴンの上に立ったり、上を歩いたりすることができる。なお、本実施形態においては、プレイヤキャラクタ201は、地形オブジェクト251を変化させる(例えば、変形させる)ことができるので、例えば、地形オブジェクト251の一部を破壊して消去することができる。
【0172】
また、ボクセルオブジェクトとプレイヤキャラクタ201とのコリジョンが判定された場合に実行される処理の内容は任意である。例えば、上記処理は、上記コリジョンが判定された際の衝撃に基づいてプレイヤキャラクタ201の体力を減少させたり、プレイヤキャラクタ201の足音を出力したり、接触した場所にエフェクト(例えば、砂埃や水しぶきを表すエフェクト)を表示したりする処理であってもよい。このとき、ゲームシステム1は、ボクセルオブジェクトのうち接触した部分のポリゴンに設定されるマテリアルの種類に応じて、体力の減少量を異ならせたり、足音を異ならせたり、エフェクトを異ならせたりすることができる。
【0173】
例えば、
図25の下図に例示する崖からプレイヤキャラクタ201が落下した場合、当該崖の下に形成されている地面とのコリジョンが判定されることにより、段丘面と崖下の地面との間の高低差による衝撃および当該地面のマテリアル等に基づいてプレイヤキャラクタ201の体力を減少させる処理が行われる。また、
図26の上図に例示するように、上記崖の下が戻れない奈落等の進入禁止エリアとなっている場合、当該進入禁止エリアに進入したプレイヤキャラクタ201は、上記段丘面から当該進入禁止エリアまでの高低差に関わらず、ゲーム空間に復帰できずにゲームオーバーやゲームのやり直し等となる処理が行われる。
【0174】
本実施形態においては、ゲーム空間への復帰が可能な復帰アイテムをプレイヤキャラクタ201が所定数以上(例えば、1以上)収納している場合、当該プレイヤキャラクタ201が上記進入禁止エリアに進入することになってもゲーム空間に復帰してゲームを継続することができる。上記復帰アイテムは、プレイヤキャラクタ201がゲーム空間に復帰する移動に応じて所定数(例えば、1)消費される。ここで、上記復帰アイテムは、プレイヤキャラクタ201がゲーム空間から拾うことによって当該プレイヤキャラクタ201に一時収納されてもよいし、所定のイベントが生じた場合に当該プレイヤキャラクタ201に新たに収納されてもよい。なお、プレイヤキャラクタ201が復帰アイテムを一時収納する状態とは、プレイヤキャラクタ201が当該復帰アイテムを装備や把持等せずに、当該復帰アイテムを持ち運ぶことができる状態である。このとき、収納された復帰アイテムは、ゲーム空間には表示されないこととなる。収納した復帰アイテムは、基本的には適宜の状況でプレイヤキャラクタ201によって取り出されることでゲーム空間に配置したり、使用(装備や把持を含む)されたりすることができる。本実施形態においては、プレイヤキャラクタ201は、身に付ける収容体(例えば、ポーチやアイテムボックス)に復帰アイテムを入れることで当該復帰アイテムを収納する。なお、そのような収容体は、表示されなくてもよい。また、そのような収容体は、存在せずに単に復帰アイテムを収納する機能のみが存在してもよい。また、上記復帰アイテムは、プレイヤキャラクタ201が収納する態様ではなく、プレイヤキャラクタ201を操作するユーザが所有する態様であってもよく、当該ユーザが所有する場合であっても、当該ユーザが操作するプレイヤキャラクタ201が上記復帰を可能としてもよい。
【0175】
図26の下図に示すように、復帰アイテムを所定数以上収納している状態で、上記進入禁止エリアの範囲内になったプレイヤキャラクタ201は、当該プレイヤキャラクタ201の移動によりゲーム空間における復帰位置へ復帰する条件が満たされたと判定される。そして、ユーザの操作入力に基づくプレイヤキャラクタ201の移動制御を中断させて、復帰アイテム202を所定数使用して消費することにより、上記進入禁止エリアからプレイヤキャラクタ201を脱出することができる。例えば、復帰アイテム202は、バルーンや泡等を模した仮想オブジェクトであり、プレイヤキャラクタ201を引き上げてゲーム空間の空中を飛ぶことにより、当該プレイヤキャラクタ201を上記進入禁止エリアから脱出させて移動させる。一例として、ゲームシステム1は、プレイヤキャラクタ201の一部が上記進入禁止エリアに接触したことを契機として、ユーザの操作入力に基づく移動制御を中断させるとともに、復帰アイテム202をゲーム空間内に出現させて、当該プレイヤキャラクタ201を復帰位置へ復帰させる移動制御を開始する。なお、プレイヤキャラクタ201が上記復帰アイテムを所定数以上収納していない場合、上記進入禁止エリアに落ちたプレイヤキャラクタ201は、ゲーム空間に復帰できずにゲームのやり直しやゲームオーバー等となる処理が行われる。一例として、上記進入禁止エリアに落ちたプレイヤキャラクタ201は、ゲーム内通貨やゲームアイテム等を所定量失いつつ、予め設定されたゲームのスタート地点や所定のチェックポイントまで戻されてゲームが再開されたり、ゲームオーバーとなってプレイヤキャラクタ201がゲームの初期状態に戻されたりする。
【0176】
図27の上図および下図に示すように、ゲームシステム1は、ゲーム空間内に設定された後述する復帰位置までプレイヤキャラクタ201を復帰させる移動をさせて、ユーザの操作入力に基づいた移動制御を再開させる。例えば、復帰アイテム202は、復帰位置の地面と接する位置までプレイヤキャラクタ201を復帰移動させる(
図27の上図参照)。そして、復帰アイテム202は、プレイヤキャラクタ201が上記復帰位置と接する状態となった場合に、当該プレイヤキャラクタ201から離れてゲーム空間の表示範囲外へ移動またはゲーム空間から消去されて消費される。
【0177】
このように、本実施形態においては、プレイヤキャラクタ201の位置がゲーム空間内の上記進入禁止エリア内になる場合に、ユーザの操作入力に基づく移動制御を中断させて上記復帰位置まで復帰する移動をさせた後に、ユーザの操作入力に基づく移動制御を再開させる。そして、上記復帰位置までの移動は、プレイヤキャラクタ201を当該復帰させる移動に応じて消費される復帰アイテムが所定数以上残されていること条件として可能となる。
【0178】
次に、上記復帰位置を設定する例について説明する。本実施形態においては、ゲーム空間におけるプレイヤキャラクタ201の状況等に基づいて複数の候補位置が逐次設定され、プレイヤキャラクタ201の移動によって所定の条件が満たされた場合に、当該複数の候補位置から上記復帰位置が決定される。
【0179】
本実施形態においては、プレイヤキャラクタ201が直前に地面や壁に接触していた位置を履歴として記憶させ、当該履歴に含まれる複数の位置を少なくとも含む候補位置が設定される。例えば、
図28に示すように、プレイヤキャラクタ201がゲーム空間内における地形上に乗っている場合において、プレイヤキャラクタ201の移動に応じた位置の履歴が記憶される。ここで、地形上に乗っている場合とは、地形オブジェクト251の判定用メッシュの上面にプレイヤキャラクタ201がコリジョン判定されていることを意味している。
【0180】
例えば、ゲームシステム1は、プレイヤキャラクタ201が地形上を移動した履歴のうち、一定間隔毎の履歴についてプレイヤキャラクタ201と地面とのコリジョン判定を行って、当該コリジョン判定された地面上の履歴が後述する候補位置として適切な位置であれば、当該履歴を記憶する。ここで、候補位置として適切な地面上の位置とは、例えば以下のもの等を除くものである。
・ゲームの進行に応じて動く地面上の位置
・地面上の位置における判定用メッシュのマテリアルが、ダメージを受けたり他のオブジェクトが触れると破壊されたりするマテリアル
・所定の条件を満たすことで消去される地面等、復帰位置として不適切な地面上の位置
・固有ボクセル空間により定義されたボクセルオブジェクト等、地形オブジェクト以外のボクセルオブジェクトとコリジョン判定された位置
【0181】
そして、ゲームシステム1は、上記候補位置として適切な地面上の一定間隔毎の位置の履歴を候補位置として記憶して登録する。例えば、ゲームシステム1は、既に登録された候補位置から一定距離離れた上記履歴を次の候補位置として順次登録する。そして、ゲームシステム1は、最後に登録された候補位置から時系列的に遡って所定数の候補位置が確保されるように、FIFO形式で候補位置の登録を繰り返す。つまり、上記プレイヤキャラクタ201が地面上を移動した位置の履歴は、必ずしも全ての履歴が候補位置として登録された状態となるとは限らない。これによって、プレイヤキャラクタ201が地面上を移動する場合、プレイヤキャラクタ201の位置の履歴から候補位置として適切な一定距離移動する毎の位置が候補位置として登録されることになる。なお、他の実施形態において、ゲームシステム1は、既に候補位置を登録した時点から一定時間が経過したタイミングで取得された上記履歴を次の候補位置として順次登録してもよい。
【0182】
また、本実施形態においては、プレイヤキャラクタ201が直前に壁に掴まるように接触していた位置も履歴として記憶させ、当該履歴に含まれる複数の位置を少なくとも含む候補位置が設定されてもよい。例えば、
図29に示すように、プレイヤキャラクタ201が少なくとも前方向において崖の壁面(側面)251aの地形に接する場合において、プレイヤキャラクタ201を当該地形に接する位置においてユーザの操作入力に基づいて移動可能に制御される。そして、ゲームシステム1は、プレイヤキャラクタ201が前方向において地形に接している場合において、プレイヤキャラクタ201の当該地形に沿った移動に応じた位置の履歴が記憶される。ここで、プレイヤキャラクタ201が前方向において地形に接している場合とは、地形オブジェクト251の判定用メッシュの側面にプレイヤキャラクタ201が向かい合う姿勢で、当該側面にプレイヤキャラクタ201がコリジョン判定されていることを意味している。
【0183】
例えば、ゲームシステム1は、プレイヤキャラクタ201が壁面に沿って移動した履歴のうち、一定間隔毎の履歴についてプレイヤキャラクタ201と壁面とのコリジョン判定を行って、当該コリジョン判定された壁面上の履歴が候補位置として適切であれば、当該履歴を記憶する。ここで、候補位置として適切な壁面上の位置は、上述した候補位置として適切な地面上の位置の条件に加えて、以下のものを除くものである。
・上記壁面上の位置を含む所定の範囲内(例えば、当該壁面上の位置の下方に所定距離内となる範囲)における判定用メッシュのマテリアルが、掴まるのに不適切なマテリアル(例えば、滑り易いマテリアル)
【0184】
そして、ゲームシステム1は、上記候補位置として適切な壁面上の一定間隔毎の位置の履歴を候補位置として記憶して登録する。例えば、ゲームシステム1は、既に設定された候補位置から一定距離離れた上記履歴を次の候補位置として順次登録する。そして、ゲームシステム1は、最後に登録された候補位置から時系列的に遡って所定数の候補位置が確保されるように、FIFO形式で候補位置の登録を繰り返す。つまり、上記プレイヤキャラクタ201が壁面に沿って移動した位置の履歴も、必ずしも全ての履歴が候補位置として登録された状態となるとは限らない。また、ゲームシステム1は、プレイヤキャラクタ201が壁面に掴まった状態で所定時間以上停止した場合、直前に登録されている候補位置を候補から除外するとともに、当該停止している位置の履歴を新たな候補位置として設定して登録(すなわち、上書き登録)する。これにより、プレイヤキャラクタ201が壁面に沿って移動している履歴については、プレイヤキャラクタ201が壁面を掴んだ状態で一時停止した位置を候補位置として確実に登録することができる。このように、プレイヤキャラクタ201が壁面に沿って移動する場合も、プレイヤキャラクタ201の位置の履歴から候補位置として適切な一定距離移動する毎の位置が候補位置として登録されるとともに、壁面において適切な位置(例えば、掴まった状態で一時停止した位置)を候補位置として登録することができる。
【0185】
また、本実施形態においては、ゲーム空間におけるチェックポイントに関連する位置も候補位置として設定されてもよい。例えば、
図30は、上記チェックポイントの一例であるセーブポイントをプレイヤキャラクタ201が利用する動作に基づいて、候補位置が設定される一例を示している。例えば、
図30に示すように、プレイヤキャラクタ201は、ゲーム空間における所定の位置に設定されるセーブポイントを利用するために、セーブオブジェクトSobjにタッチする動作を行っている。ゲームシステム1は、プレイヤキャラクタ201がセーブオブジェクトSobjをタッチする動作を行った場合、当該セーブオブジェクトSobjの位置に対応して設定された所定の位置、もしくは当該動作を行ったプレイヤキャラクタ201の位置に基づいて候補位置を設定して登録する。ここで、上記セーブポイントは、現時点までのゲーム進行状況を保存できる箇所であり、次回のゲーム開始時に当該セーブポイントから保存した状況で始められるようにする機能を有している。したがって、ゲームシステム1は、プレイヤキャラクタ201がセーブオブジェクトSobjにタッチする動作を行った場合、現時点までのゲーム進行状況を保存する処理を行う。
【0186】
なお、上記チェックポイントは、上述したセーブポイントの他、ゲーム空間における任意の位置に設けられてもよい。例えば、シームレスでつながっている階層構造を有するゲーム空間において、プレイヤキャラクタ201が異なる階層に移動する場合、当該異なる階層に到達した位置をチェックポイントとして、候補位置として登録してもよい。当該チェックポイントは、予め階層に設定された所定の位置でよい。もしくは、上記異なる階層にプレイヤキャラクタ201が到達して最初に地形や他のオブジェクトとプレイヤキャラクタ201が接触した位置でもよい。
【0187】
また、本実施形態においては、上記チェックポイントの他、ゲーム空間におけるプレイヤキャラクタ201の所定の状況に基づいた位置が候補位置として設定されてもよい。一例として、プレイヤキャラクタ201がファストトラベル(例えば、ワープやテレポート)による移動が可能である場合、当該ファストトラベルを行った移動先の位置を候補位置として登録してもよい。この場合、ゲームシステム1は、上記ファストトラベルによる移動直後のプレイヤキャラクタ201と地面や他のオブジェクトとのコリジョン判定を行って、当該コリジョン判定された位置を候補位置の1つとして登録してもよい。他の例として、新たなゲームステージ開始直後の最初の位置を候補位置として登録してもよい。この場合、ゲームシステム1は、新たなゲームステージを用いたゲームが開始された直後にプレイヤキャラクタ201と地面や他のオブジェクトとのコリジョン判定を行って、当該コリジョン判定された位置を候補位置の1つとして登録してもよい。
【0188】
本実施形態において、ゲームシステム1は、上述したように登録された複数の候補位置にそれぞれ優先度を設けて、当該優先度が高い候補位置を復帰位置として決定する。例えば、
図31は、上述したように登録された複数の候補位置が、上記優先度が高い順に上から記述されている例を示している。具体的には、
図31においては、直前の地面または壁面の接地位置として複数の候補位置P2~P9が登録されており、時系列順に登録が新しい候補位置ほど相対的に高い優先度が設定される。ここでは、直前にプレイヤキャラクタ201が壁面に接していた候補位置P2~P4と地面に乗っていた候補位置P5~P9との8箇所の候補位置が優先度順(候補位置P2が最も新たに登録されており、候補位置P2~P9の中で優先度が最も高い)に記述されている。また、
図31においては、チェックポイントに関連する候補位置P10が登録されており、チェックポイントに関連する候補位置は、直前の地面または壁面の接地位置として登録されている候補位置より優先度が低く設定される。また、
図31においては、ファストトラベルによる移動直後の接地位置に関連する候補位置P11が登録されており、ファストトラベルによる移動直後の接地位置に関連する候補位置は、チェックポイントに関連する候補位置より優先度が低く設定される。さらに、
図31においては、ゲームステージ開始直後の接地位置に関連する候補位置P12が登録されており、ゲームステージ開始直後の接地位置に関連する候補位置は、ファストトラベルによる移動直後の接地位置に関連する候補位置より優先度が低く設定される。
【0189】
このように、本実施形態においては、「直前の地面または壁面の接地位置に関連する候補位置」>「チェックポイントに関連する候補位置」>「ファストトラベルによる移動直後の接地位置に関連する候補位置」>「ゲームステージ開始直後の接地位置に関連する候補位置」の順に優先度が高く設定された複数の候補位置が登録される。なお、本実施形態においては、ユーザがプレイしているゲームステージにより、「直前の地面または壁面の接地位置に関連する候補位置」より上記優先度がさらに高い候補位置が登録されてもよい。例えば、
図31に例示されているように、ゲーム空間において予め開始指定位置が決められているエリアを用いてゲームが行われる場合、当該開始指定位置が候補位置P1として登録され、当該ゲームが終了後は当該候補位置P1が候補から除外されてもよい。一例として、プレイヤキャラクタ201がゲーム空間に設定されたミニゲームステージをクリアすることを目指すゲームを行う場面において、当該ミニゲームステージをプレイヤキャラクタ201が開始する位置(例えば、スタート地点)や当該ミニゲームステージの所定地点までプレイヤキャラクタ201が移動して通過した位置(例えば、中間目標地点)が予め決められている場合、当該ミニゲームステージを開始するスタート地点や当該所定地点が候補位置P1として登録される。そして、上記ミニゲームステージが終了した場合、当該ミニゲームステージのプレイ中に登録されていた候補位置P1が候補から除外される。
【0190】
また、本実施形態においては、ゲームシステム1は、上記候補位置が登録されることを契機として他の候補位置を候補から除外することがある。第1の例として、ゲームシステム1は、チェックポイントに関連する候補位置が新たに登録された場合、当該候補位置より優先度が高い過去の候補位置(すなわち、直前の地面または壁面の接地位置に関連する候補位置)を候補から除外する。第2の例として、ゲームシステム1は、ファストトラベルによる移動直後の接地位置に関連する候補位置が新たに登録された場合、当該候補位置より優先度が高い過去の候補位置(すなわち、直前の地面または壁面の接地位置に関連する候補位置およびチェックポイントに関連する候補位置)を候補から除外する。
【0191】
なお、「直前の地面または壁面の接地位置に関連する候補位置」として登録される候補位置のうち、地面上の接地位置に関連する候補位置と壁面上の接地位置に関連する候補位置とは、優先度が異なる候補位置として登録されてもよい。例えば、壁面上の接地位置に関連する候補位置より地面上の接地位置に関連する候補位置の方が高い優先度となるようにそれぞれの候補位置が登録されてもよい。また、壁面上を移動するプレイヤキャラクタの移動履歴は上記候補位置として登録することなく、上述した「直前の地面または壁面の接地位置に関連する候補位置」として、地面上を移動するプレイヤキャラクタの移動履歴に含まれる位置のみを候補位置として登録してもよい。
【0192】
そして、本実施形態においては、上述したプレイヤキャラクタ201を復帰させる移動制御を開始する際、その時点で登録されている候補位置から上記優先度が高い順に復帰に適した位置であるか否かを判定し、プレイヤキャラクタ201を復帰させるために有効な候補位置を復帰位置として決定する。例えば、ゲームシステム1は、その時点で登録されている最も優先度の高い候補位置を抽出して地形が存在しない位置ではない場合、当該候補位置を復帰位置として有効な位置と判定して当該候補位置を復帰位置として決定する。
【0193】
一例として、ゲームシステム1は、上記最も優先度が高い候補位置をレイキャストして、当該候補位置に密度を有するボクセルデータにより定義されたボクセルオブジェクト(例えば、地形オブジェクトの判定用メッシュ)が存在する場合、当該候補位置が復帰位置として有効であると判定する。例えば、上記レイキャストでは、ゲーム空間の鉛直方向のレイキャストを上記候補位置への方向に対して行い、当該候補位置に物体(例えば、地形オブジェクトの判定用メッシュ)がヒットする場合に、当該候補位置は復帰位置として有効(すなわち、候補位置に地形が存在する)と判定される。一方、上記レイキャストにおいて、上記候補位置に物体(例えば、地形オブジェクトの判定用メッシュ)がヒットしない場合に、当該候補位置は復帰位置として無効(すなわち、候補位置に地形が存在しない)と判定される。そして、候補位置が復帰位置として無効と判定された場合、次に優先度が高い候補位置が同様にレイキャストされ、復帰位置として有効な候補位置が見つかるまで繰り返される。例えば、上記レイキャストは、候補位置が地面上の位置である場合に用いられる。
【0194】
他の例として、ゲームシステム1は、上記最も優先度が高い候補位置をシェイプキャストして、当該候補位置が復帰位置として有効であると判定する。例えば、上記シェイプキャストでは、プレイヤキャラクタ201のコリジョン判定に用いられる判定領域と同一形状のシェイプが用いられ、当該シェイプと候補位置との判定用メッシュとの接触が判定される。例えば、上記シェイプキャストは、候補位置が壁面上の位置である場合に用いられ、上記シェイプの中心が当該候補位置に接触するように当該壁面の外から当該壁面に向かう水平方向に移動させることにより判定される。そして、ゲームシステム1は、上記シェイプキャストされた候補位置に密度を有するボクセルデータにより定義されたボクセルオブジェクト(例えば、地形オブジェクトの判定用メッシュ)が存在するとともに、当該候補位置の壁面がプレイヤキャラクタ201によって掴まることができる形状であれば、当該候補位置が復帰位置として有効であると判定する。なお、上記シェイプキャストにおいて用いられる上記シェイプは、当該シェイプキャストを容易にするためにプレイヤキャラクタ201のコリジョン判定に用いられる判定領域と同一形状のものが用いられるが、カプセル形状の他、球形状、楕円球形状、多面体形状(例えば、バウディングボックス)、円柱形状、円錐形状、多角錐形状でもよく、プレイヤキャラクタ201のポリゴン形状であってもよい。また、上記シェイプは、平面、曲面、円、直線、線分、点等であってもよい。
【0195】
このように、本実施形態においては、その時点で登録されている複数の候補位置のうち、地形が存在しない位置ではない候補位置から復帰位置が決定される。ここで、候補位置が登録される地形オブジェクトは、ボクセルオブジェクトで構成されているために当該候補位置として登録された後に当該地形オブジェクトの判定用メッシュ(地形メッシュ)が変形する可能性があり、当該候補位置が登録された地形が復帰位置を決定する時点で存在しないことがあり得る。しかしながら、本実施形態においては、復帰位置を決定する時点で登録されている複数の候補位置のうち、地形が存在しない位置ではない候補位置から復帰位置を決定するため、プレイヤキャラクタ201を地形が存在しなくなった位置に復帰させることなく、複数の候補位置から地形が存在しない位置ではない候補位置を選択することができるため、適切な復帰位置に復帰させることができる。
【0196】
また、本実施形態においては、その時点で登録されている複数の候補位置のうち、上記優先度が高い候補位置から復帰位置が決定される。また、ゲームシステム1は、候補位置が登録されることを契機として優先度が高い他の候補位置を候補から除外することがある。これによって、シームレスでつながっている階層構造を有するゲーム空間を用いたゲームにおいて復帰位置を決定する場合であっても、プレイヤキャラクタ201が当該復帰位置に復帰する移動を行う際に異なる階層に跨いで移動することを防止することができる。例えば、上述したように、異なる階層にプレイヤキャラクタ201が到達して最初に地形や他のオブジェクトとプレイヤキャラクタ201が接触した位置がチェックポイントとして候補位置として登録される際、それまでに登録されていたチェックポイントに関連する候補位置が候補から除外されるとともに、当該候補位置より優先度が高い候補位置が候補から除外される。また、プレイヤキャラクタ201がファストトラベルを行った移動先の位置が候補位置として登録される際、それまでに登録されていたファストトラベルによる移動直後の接地位置に関連する候補位置が候補から除外されるとともに、当該候補位置より優先度が高い候補位置が候補から除外される。したがって、プレイヤキャラクタ201がゲーム空間における第1階層から異なる第2階層へ移動する場合、当該第1階層において登録されていた候補位置が候補から除外されるため、当該第2階層においてプレイヤキャラクタ201の復帰移動が行われる際に同じ第2階層内で決定された復帰位置を移動先とした復帰移動が行われることになる。
【0197】
また、本実施形態においては、ユーザがプレイしているゲームステージによって最優先される候補位置が登録されることがある。例えば、
図32の上図に例示するように、落下すると進入禁止エリアに進入する一本道を、プレイヤキャラクタ201が落ちることなく進むミニゲームステージが構築されたエリアにプレイヤキャラクタ201が配置されている場合、当該ミニゲームのスタート地点として開始指定位置が予め設定されている。この場合、ゲームシステム1は、プレイヤキャラクタ201が上記エリアに配置されている期間において、上記開始指定位置を最優先される候補位置として登録する。そして、ゲームシステム1は、上記スタート位置(開始指定位置)からプレイヤキャラクタ201が移動を開始することに応じて、一定間隔毎に地面の接地位置に関連する候補位置を登録する。上記移動により、プレイヤキャラクタ201が上記一本道から落下した場合、当該プレイヤキャラクタ201が上記復帰アイテムを所定数以上所持していれば、当該プレイヤキャラクタ201を復帰位置に復帰させる移動制御が行われる。
【0198】
このとき、
図32の下図に示すように、上記優先度が最も高く設定されている候補位置は、上記開始指定位置となる。したがって、ゲームシステム1は、直前に登録された一定間隔毎に地面の接地位置に関連する候補位置ではなく、上記開始指定位置を復帰位置として決定し、当該開始指定位置にプレイヤキャラクタ201を復帰させる移動制御を行う。例えば、プレイヤキャラクタ201がクリアすることを目指すミニゲームステージが構築されているゲーム空間では、プレイヤキャラクタ201が直前に接地していた候補位置を復帰位置として復帰させた場合、当該ミニゲームステージが行き詰まってプレイヤキャラクタ201が移動できなくなることもあり得る。本実施形態においては、予め設定された上記ミニゲームステージのスタート地点や中間目標地点等にプレイヤキャラクタ201を復帰させる移動を行うことにより、当該ミニゲームステージのクリアが行き詰まることを防止することができる。
【0199】
なお、上述した候補位置が復帰位置として有効であるか否かを判定する処理においては、レイキャストまたはシェイプキャストを用いているが、候補位置が登録された地形の種類に応じて何れの処理を用いるかについては任意である。例えば、地面上の候補位置の判定に、シェイプキャストを用いてもよいし、レイキャストおよびシェイプキャストの両方を用いてもよいし、他の方法により判定してもよい。また、壁面上の候補位置の判定に、レイキャストを用いてもよいし、レイキャストおよびシェイプキャストの両方を用いてもよいし、他の方法により判定してもよい。
【0200】
また、上述した登録される候補位置や決定される復帰位置は、ゲーム空間における位置を示す情報に加えて、プレイヤキャラクタの方向や姿勢を示す情報が含まれていてもよい。例えば、候補位置が登録される際のゲーム空間におけるプレイヤキャラクタの方向(例えば、正面方向や上下方向)や姿勢を示す情報が、ゲーム空間における位置を示す情報とともに候補位置として登録されてもよい。また、プレイヤキャラクタが復帰位置に復帰する場合、当該復帰位置を決定する際に用いられた候補位置に含まれるプレイヤキャラクタの方向や姿勢を示す情報に基づいて、プレイヤキャラクタがゲーム空間に復帰してもよい。
【0201】
また、上述した登録される候補位置や決定される復帰位置は、ゲーム空間における地形オブジェクト上の位置、すなわち地形オブジェクトを構成するボクセルにより定義された判定用メッシュ上の位置以外の、ゲーム空間における任意の位置であってもよい。第1の例として、上記候補位置および復帰位置は、ボクセルオブジェクトであっても上記地形オブジェクトとは異なる他のオブジェクト上の位置に設定されてもよい。第2の例として、上記候補位置および復帰位置は、ゲーム空間において可動のオブジェクト上(例えば、可動の地形オブジェクト上)に設定されてもよい。第3の例として、上記候補位置および復帰位置は、ボクセルオブジェクト以外の仮想オブジェクト上の位置やゲームフィールド上の位置に設定されてもよい。第4の例として、上記候補位置および復帰位置は、ゲーム空間において水面上や空中(例えば、空中に設定されたスタート地点や所定のオブジェクトにプレイヤキャラクタがぶら下がった状態となる位置)に設定されてもよい。
【0202】
また、本実施形態においては、プレイヤキャラクタが復帰アイテムを所定数以上所持している場合に復帰位置への移動を可能としているが、当該復帰位置への移動の可能とする条件は任意である。第1の例として、復帰位置への移動の可能とする条件は、プレイヤキャラクタが複数種類の復帰アイテムを所持していることを条件としてもよい。第2の例として、復帰位置への移動の可能とする条件は、ゲームモードに基づいて実行可否が設定されてもよい。例えば、ゲームの難易度が相対的に低いゲームモードが設定されている場合に復帰位置への移動を可能とし、ゲームの難易度が相対的に高いゲームモードが設定されている場合に復帰位置への移動ができないようにしてもよい。第3の例として、復帰位置への移動の可能とする条件は、プレイヤキャラクタのレベルやユーザのゲーム習熟度に基づいて実行可否が設定されてもよい。例えば、プレイヤキャラクタのレベルやユーザのゲーム習熟度が相対的に低い場合に復帰位置への移動を可能とし、プレイヤキャラクタのレベルやユーザのゲーム習熟度が所定のレベルや習熟度に到達している場合に復帰位置への移動ができないようにしてもよい。
【0203】
また、本実施形態においては、プレイヤキャラクタ201の移動により進入禁止エリアの範囲内になった場合に、ゲーム空間における復帰位置へプレイヤキャラクタ201が復帰する条件が満たされたと判定される例を用いたが、当該条件が満たされる状況は任意である。一例として、ゲームプレイが許容されているゲーム空間の範囲外にプレイヤキャラクタ201が逸脱する移動を行った場合に、ゲーム空間における当該範囲内の復帰位置へプレイヤキャラクタ201が復帰する条件が満たされたと判定されてもよい。他の例として、プレイヤキャラクタ201の移動によりその位置や領域から抜け出すことのできない行き詰まった状態となった場合に、当該行き詰まり状態から抜け出すことが可能となる復帰位置へプレイヤキャラクタ201が復帰する条件が満たされたと判定されてもよい。
【0204】
[3.ゲームシステムにおける処理の具体例]
次に、
図33~
図38を参照して、ゲームシステム1における情報処理の具体例について説明する。
【0205】
図33は、ゲームシステム1における情報処理に用いられる各種データの一例を示す図である。
図33に示す各データは、本体装置2がアクセス可能なメモリ(例えば、フラッシュメモリ84、DRAM85、および/または、スロット23に装着されたメモリカード等)に記憶される。
図33に示すように、ゲームシステム1は、ゲームプログラムを記憶する。ゲームプログラムは、本実施形態におけるゲーム処理(例えば、
図34~
図38に示すゲーム処理)を実行するためのものである。なお、ゲームプログラムには、上述のマテリアルデータ(
図12参照)が含まれる。また、上記メモリには、上述のボクセルデータ(
図11参照)、更新範囲データ、メッシュデータ、オブジェクトデータ等が記憶される(
図33参照)。
【0206】
更新範囲データは、上述の更新範囲を示すデータである。本実施形態においては、上述のSDFによって更新範囲が表される。
【0207】
メッシュデータは、ボクセルオブジェクトのメッシュに関する各種データを含む。
図30に示すように、本実施形態においては、メッシュデータは、SVOデータ、表示用メッシュデータ、および判定用メッシュデータを含む。SVOデータは、ボクセルデータから算出される各頂点を、上述のSVO構造で保持するデータである。なお、本実施形態においては、SVOデータには、各頂点の位置を示すデータに加えて、各頂点に設定されるマテリアルを示すデータ(例えば、マテリアルのIDを示すデータ)が含まれる。表示用メッシュデータは、表示用メッシュに関する各種データを含む。具体的には、表示用メッシュデータは、表示用メッシュの各頂点を示すデータと、各頂点に設定されるマテリアルを示すデータ(例えば、マテリアルのIDを示すデータ)を含む。判定用メッシュデータは、判定用メッシュに関する各種データを含む。具体的には、判定用メッシュデータは、判定用メッシュの各頂点を示すデータと、各頂点に設定されるマテリアルを示すデータ(例えば、マテリアルのIDを示すデータ)を含む。
【0208】
オブジェクトデータは、ボクセルオブジェクト以外のオブジェクト(例えば、プレイヤキャラクタや仮想オブジェクト等)に関する各種データを含む。オブジェクトデータは、ゲーム空間に登場するオブジェクト毎に記憶される。オブジェクトデータは、例えば、当該オブジェクトの位置、速度、および状態等を示すデータを含む。また、オブジェクトデータは、候補位置データおよび復帰位置データを含む。候補位置データは、登録された複数の候補位置が優先度順に記述されたデータである。復帰位置データは、決定された復帰位置を示すデータである。
【0209】
図34は、ゲームシステム1によって実行されるゲーム処理の流れの一例を示すフローチャートである。
図35は、
図34におけるステップS12の各オブジェクトの動作を制御する処理の一例を示すサブルーチンである。
図36は、
図35におけるステップS46の候補位置設定処理の前半の一例を示すサブルーチンである。
図37は、
図35におけるステップS46の候補位置設定処理の後半の一例を示すサブルーチンである。
図38は、
図35におけるステップS47の復帰位置移動処理の一例を示すサブルーチンである。ゲーム処理の実行は、例えば、上記ゲームプログラムの実行中において、プレイヤの指示に応じてゲームが開始されたことに応じて開始される。なお、ステップS1~S14の一連の処理からなる処理ループは、1フレームに1回のサイクルで実行される。
【0210】
なお、本実施形態では、本体装置2のプロセッサ81が、ゲームシステム1に記憶されている上記ゲームプログラムを実行することによって、
図34~
図38に示す各ステップの処理を実行するものとして説明する。ただし、他の実施形態においては、上記各ステップの処理のうちの一部の処理を、プロセッサ81とは別のプロセッサ(例えば、専用回路等)が実行するようにしてもよい。また、ゲームシステム1が他の情報処理装置(例えば、サーバ)と通信可能である場合、
図34~
図38に示す各ステップの処理の一部は、他の情報処理装置において実行されてもよい。また、
図34~
図38に示す各ステップの処理は、単なる一例に過ぎず、同様の結果が得られるのであれば、各ステップの処理順序を入れ替えてもよいし、各ステップの処理に加えて(または代えて)別の処理が実行されてもよい。
【0211】
また、プロセッサ81は、
図34~
図38に示す各ステップの処理を、メモリ(例えば、DRAM85)を用いて実行する。すなわち、プロセッサ81は、各処理ステップによって得られる情報(換言すれば、データ)をメモリに記憶し、それ以降の処理ステップにおいて当該情報を用いる場合には、メモリから当該情報を読み出して利用する。
【0212】
図34において、プロセッサ81は、ユーザによる操作入力を示す操作データを取得し(ステップS1)、次のステップに処理を進める。例えば、プロセッサ81は、コントローラ通信部83および/または各端子17および21を介して各コントローラから出力される操作データや本体装置2(例えば、タッチパネル13)から出力される操作データを取得する。
【0213】
次に、プロセッサ81は、処理が必要なゲーム空間のオブジェクトのうち、処理が完了していないいずれかのオブジェクト(固有ボクセル空間により定義されたボクセルオブジェクトを含む)を処理対象として指定し、指定されたオブジェクトについて、速度を算出する処理、および前のフレームにおけるオブジェクト同士の接触の結果を反映する処理を実行し(ステップS2)、次のステップに処理を進める。オブジェクトの速度は、後述するステップS12の処理において、今回のフレームにおけるオブジェクトの位置を算出するために用いられる。例えば、指定されたオブジェクトがプレイヤキャラクタである場合、プレイヤキャラクタの速度は、ステップS1で取得された操作データに基づいて算出される。また、指定されたオブジェクトが、ユーザによって操作されないオブジェクトである場合、当該オブジェクトの速度は、ゲームプログラムにおいて予め定められたルールに基づいて算出される。一例として、オブジェクトの速度は、オブジェクト間の相互作用を含めた仮想的な物理演算に基づいて算出される。例えば、オブジェクト同士の衝突による反発や、接触による摩擦等の相互作用、仮想的な重力による落下や仮想的な空気抵抗による減速等が速度決定に反映される。
【0214】
また、前のフレームにおけるオブジェクト同士の接触の結果を反映する処理には、前のフレームにおけるコリジョン判定(後述するステップS11)においてオブジェクト同士が接触したと判定された場合に、当該オブジェクトに対して接触による影響を与える処理が含まれる。上記処理は、例えば次のような処理である。
・前のフレームにおいてプレイヤキャラクタが落下により地形オブジェクトに接触した衝撃が加わったと判定された場合に、プレイヤキャラクタの体力を減少させる処理
・前のフレームにおいてパンチアクション等によってプレイヤキャラクタが地形オブジェクトに接触したと判定された場合に、破片オブジェクトを生成する処理
以上のステップS2の処理においてオブジェクトに関する状態が変更された場合、プロセッサ81は、当該オブジェクトに関してメモリに記憶されているオブジェクトデータを、変更後の内容を示すように更新する。
【0215】
次に、プロセッサ81は、上記ステップS2で指定されたオブジェクトによって、ボクセルオブジェクトを更新させる更新イベントが発生したか否かを判定する(ステップS3)。例えば、上記ステップS3の判定は、前のフレームにおけるコリジョン判定(後述するステップS11)の結果に基づいて行われる。一例として、前のフレームにおいてパンチアクション等によってプレイヤキャラクタが地形オブジェクトに接触したと判定された場合には、地形オブジェクトの一部を消去する更新イベントが発生したと判定される。そして、プロセッサ81は、更新イベントが発生した場合、ステップS4に処理を進める。一方、プロセッサ81は、更新イベントが発生していない場合、ステップS6に処理を進める。
【0216】
ステップS4において、プロセッサ81は、ボクセルオブジェクトの更新を行う更新範囲をゲーム空間に設定して、次のステップに処理を進める。例えば、更新範囲の具体的な内容(例えば、位置、形状、および大きさ)は、ゲームプログラムにおいて更新イベントの種類毎に関連付けられている。上記ステップS4で設定される更新範囲は、上記ステップS3において発生すると判定された更新イベントの種類に関連付けられる内容となるように設定される。上記ステップS4において、プロセッサ81は、設定された更新範囲を示すデータを、更新範囲データとしてメモリに記憶する。
【0217】
次に、プロセッサ81は、上記ステップS4で設定された更新範囲に対応するボクセルについて、更新イベントに応じた変更を行い(ステップS5)、ステップS6に処理を進める。例えば、プロセッサ81は、更新範囲内のボクセルオブジェクトを消去や縮小されたように変形させたり、更新範囲内にボクセルオブジェクトが追加されたように変形させたりする場合には、当該更新範囲に対応するボクセルの密度を変更するように、メモリに記憶されているボクセルデータを更新する(上記[2-2.ボクセルデータの更新]参照)。
【0218】
ステップS6において、プロセッサ81は、処理が必要な全てのオブジェクト(固有ボクセル空間により定義されたボクセルオブジェクトを含む)について上記ステップS2~S5の処理が完了したか否かを判定する。そして、プロセッサ81は、全てのオブジェクトの処理が完了した場合、ステップS7に処理を進める。一方、プロセッサ81は、何れかのオブジェクトの処理が完了していない場合、上記ステップS2に戻って処理を繰り返す。
【0219】
ステップS7において、プロセッサ81は、ゲーム空間におけるボクセルオブジェクトの頂点を更新し、次のステップに処理を進める。例えば、プロセッサ81は、上記ステップS5の処理においてボクセルデータが更新された場合には、更新後のボクセルデータに基づいて新たな頂点を算出する。なお、新たな頂点の位置は、上記[2-3.頂点の算出]で述べた方法に従って算出される。また、新たな頂点のマテリアルは、上記[2-4.頂点のマテリアルの決定]で述べた方法に従って算出される。
【0220】
次に、プロセッサ81は、頂点の簡略化を行い(ステップS8)、次のステップに処理を進める。例えば、プロセッサ81は、上記ステップS7の処理による更新後の各頂点について、上記[2-5.頂点の簡略化]で述べた方法に従って簡略化を行う。そして、プロセッサ81は、メモリに記憶されるSVOデータを、上記ステップS7およびステップS8の処理によって得られた各頂点を示すように更新する。なお、上記ステップS7およびステップS8の処理は、ボクセルデータの全体について頂点を算出しなおす必要はなく、上記ステップS5の処理においてボクセルの内容が変更された部分についてのみ実行されてもよい。
【0221】
次に、プロセッサ81は、メモリに記憶されるSVOデータに基づいてボクセルオブジェクトの表示用メッシュを更新し(ステップS9)、次のステップに処理を進める。なお、表示用メッシュの各頂点の位置および表示用メッシュの各ポリゴンのマテリアル(例えば、ポリゴンの各頂点に設定されるマテリアル)は、上記[2-6.メッシュの生成]および[2-6-1.表示用メッシュのマテリアルの決定]で述べた方法に従って算出される。上記ステップS9において、プロセッサ81は、メモリに記憶されている表示用メッシュデータを、更新後の表示用メッシュの各頂点の位置およびマテリアルを示すように更新する。なお、プロセッサ81は、上記ステップS9の完了を待たずに、後述するステップS10以降の処理を開始し、並行して実行するようにしてもよい。その場合、上記ステップS9は、後述するステップS13の開始前に完了している必要がある。
【0222】
次に、プロセッサ81は、メモリに記憶されるSVOデータに基づいてボクセルオブジェクトの判定用メッシュを更新し(ステップS10)、次のステップに処理を進める。なお、判定用メッシュの各頂点の位置および判定用メッシュの各ポリゴンのマテリアル(例えば、ポリゴンの各頂点に設定されるマテリアル)は、上記[2-6.メッシュの生成]および[2-6-2.判定用メッシュのマテリアルの決定]で述べた方法に従って算出される。上記ステップS10において、プロセッサ81は、メモリに記憶されている判定用メッシュデータを、更新後の判定用メッシュの各頂点の位置およびマテリアルを示すように更新する。
【0223】
なお、
図31に示す例においては、上記ステップS10における判定用メッシュの生成処理を毎フレーム実行するものとしたが、判定用メッシュの生成処理は、毎フレーム実行されなくてもよい。例えば、後述するステップS11のコリジョン判定処理が所定の条件を満たすフレームにおいてのみ実行される場合、プロセッサ81は、当該コリジョン判定を行うフレームで判定用メッシュの生成処理を実行してもよい。また、プロセッサ81は、ゲーム空間のうちで上記ステップS11のコリジョン判定を行う領域内のボクセルについて、判定用メッシュの生成処理を実行してもよい。例えば、ゲーム空間においてプレイヤキャラクタの周囲にはボクセルオブジェクト以外にはコリジョン判定の対象となるオブジェクトが存在しない状況(つまり、プレイヤキャラクタとその周囲のボクセルオブジェクトとのコリジョン判定のみを行えばよい状況)では、プロセッサ81は、プレイヤキャラクタを基準とした所定範囲内のボクセルについて判定用メッシュの生成処理を実行してもよい。
【0224】
次に、プロセッサ81は、メモリに記憶されている判定用メッシュデータとオブジェクトデータとに基づいて、ゲーム空間における各オブジェクトについてコリジョン判定を行い(ステップS11)、次のステップに処理を進める。例えば、プロセッサ81は、ボクセルオブジェクトについては判定用メッシュを用い、ボクセルオブジェクトでないオブジェクトについては当該オブジェクトに設定される所定形状の判定領域を用いて、コリジョン判定を行う。なお、本実施形態においては、上記ステップS2で算出された速度を考慮してステップS11のコリジョン判定が行われる。つまり、プロセッサ81は、各オブジェクトの位置として、上記速度で移動した場合の位置を用いてコリジョン判定を行う。
【0225】
本実施形態においては、上記ステップS11のコリジョン判定によって、例えば次の接触の有無が判定される。
・パンチアクション等のアクションを行うプレイヤキャラクタと地形オブジェクトとの接触
・落下等の移動によるプレイヤキャラクタと地形オブジェクトとの接触
なお、上記ステップS11のコリジョン判定においてオブジェクト同士が接触したと判定された場合には、次のフレームにおける上記ステップS2の処理において、オブジェクト同士の接触の結果を反映する処理が実行されたり、次のフレームにおける上記ステップS3の処理において、更新イベントが発生したと判定されたりする。
【0226】
次に、プロセッサ81は、ゲーム空間における各オブジェクトの動作を制御し(ステップS12)、ステップS13に処理を進める。以下、
図35を参照して、上記ステップS12において行われる各オブジェクトの動作を制御する処理について説明する。
【0227】
図35において、プロセッサ81は、動作制御の対象となる全てのオブジェクトに対する制御処理が終了したか否かを判定する(ステップS41)。そして、プロセッサ81は、制御処理が終了していないオブジェクトがある場合、ステップS42に処理を進める。一方、プロセッサ81は、全てのオブジェクトに対する制御処理が終了している場合、当該サブルーチンによる処理を終了する。
【0228】
ステップS42において、プロセッサ81は、動作制御の対象とするオブジェクトを、当該動作制御の処理が終了していないオブジェクトから選択して、次のステップに処理を進める。
【0229】
次に、プロセッサ81は、現時点において動作制御の処理の対象として選択されているオブジェクトの動作を制御し(ステップS43)、次のステップに処理を進める。例えば、プロセッサ81は、プレイヤキャラクタについては、上記ステップS1において取得された操作データに基づいて、移動や各種アクションを行わせる制御を行う。そして、プロセッサ81は、所定のアクションが発生した場合には、ゲーム空間内に、当該アクションに応じたコリジョン判定のための判定領域を生成する。また、プロセッサ81は、プレイヤキャラクタによる投げるアクションによってオブジェクトが放たれたことに応じて、当該オブジェクトが放たれた方向に移動するように制御する。なお、1回の上記ステップS43の処理においては、プロセッサ81は、複数フレームにわたって行われる動作(例えば、プレイヤキャラクタによるアクション)については、1フレーム分の動作の進行を行うように各オブジェクトが制御される。これにより、上記ステップS43の処理が複数フレームにわたって繰り返し実行されることで、移動や各種アクションに関する一連の動作を各オブジェクトが行うこととなる。また、上記ステップS43の処理において、複数フレームにわたって行われるプレイヤキャラクタの移動や動作が新たに設定された場合、上記ステップS43の処理が複数フレームにわたって繰り返し実行されることで、当該新たに設定された移動や一連の動作をプレイヤキャラクタが行うこととなる。また、オブジェクトの位置は、基本的には、上記ステップS2で算出される速度で移動した後の位置となるように決定される。ただし、上記ステップS11のコリジョン判定によって他のオブジェクトと接触すると判定され、接触した他のオブジェクトによって移動が妨げられる場合には、当該オブジェクトの位置が変化しないように決定されてもよい。そして、上記ステップS43において、プロセッサ81は、メモリに記憶されているオブジェクトデータを、上記ステップS43における制御後のオブジェクトを示す内容となるように更新する。
【0230】
次に、プロセッサ81は、現時点において動作制御の処理の対象として選択されているオブジェクトがプレイヤキャラクタであるか否かを判定する(ステップS44)。そして、プロセッサ81は、現時点において動作制御の処理の対象として選択されているオブジェクトがプレイヤキャラクタである場合、ステップS45に処理を進める。一方、プロセッサ81は、現時点において動作制御の処理の対象として選択されているオブジェクトがプレイヤキャラクタでない場合、上記ステップS41に戻って処理を繰り返す。
【0231】
ステップS45において、プロセッサ81は、プレイヤキャラクタが復帰位置への移動を行うか否かを判定する。例えば、プロセッサ81は、上記ステップS43においてプレイヤキャラクタが復帰位置への移動の対象となる動作(例えば、上記進入禁止エリアに進入する動作(
図28上図参照))が設定されている場合、または後述する復帰位置へ移動する処理が継続中である場合、上記ステップS45において肯定判定する。そして、プロセッサ81は、プレイヤキャラクタが復帰位置への移動を行わない場合、ステップS46に処理を進める。一方、プロセッサ81は、プレイヤキャラクタが復帰位置への移動を行う場合、ステップS47に処理を進める。
【0232】
ステップS46において、プロセッサ81は、候補位置設定処理を行い、上記ステップS41に戻って処理を繰り返す。以下、
図36および
図37を参照して、上記ステップS46において行われる候補位置設定処理の一例について説明する。
【0233】
図36において、プロセッサ81は、予め開始指定位置が決められているエリアを用いたゲームをプレイヤキャラクタが行っているか否かを判定する(ステップS51)。そして、プロセッサ81は、上記エリアを用いたゲームをプレイヤキャラクタが行っている場合、ステップS52に処理を進める。一方、プロセッサ81は、上記エリアを用いたゲームをプレイヤキャラクタが行っていない場合、ステップS53に処理を進める。
【0234】
ステップS52において、プロセッサ81は、プレイヤキャラクタが行っているゲームで用いられているエリアに設定されている開始指定位置を候補位置として登録し、ステップS54に処理を進める。例えば、開始指定位置を候補位置として登録する処理は、上記[2-7.プレイヤキャラクタ復帰移動制御処理]において
図31を参照して述べた方法に従って行われ、当該開始指定位置は最優先される候補位置として登録される。そして、上記ステップS52において、プロセッサ81は、メモリに記憶されている候補位置データを、上記ステップS52における登録後の内容となるように更新する。
【0235】
ステップS53において、プロセッサ81は、候補位置として登録されている開始指定位置を候補から除外し、ステップS54に処理を進める。例えば、プロセッサ81は、メモリに記憶されている候補位置データに開始指定位置が候補位置として登録されている場合、当該候補位置を候補から除外して、当該除外後の内容となるように当該候補位置データを更新する。
【0236】
ステップS54において、プロセッサ81は、候補位置データにおける「直前の地面または壁面の接地位置に関連する候補位置」に登録された最新の候補位置から、プレイヤキャラクタが所定距離以上移動したか否かを判定する。そして、プロセッサ81は、登録された最新の候補位置から所定距離以上移動している場合、ステップS55に処理を進める。一方、プロセッサ81は、登録された最新の候補位置から所定距離以上移動していない場合、ステップS56に処理を進める。
【0237】
ステップS55において、プロセッサ81は、プレイヤキャラクタが配置されている地面上または壁面上の位置を候補位置として新たに登録し、ステップS59に処理を進める。例えば、プレイヤキャラクタが配置されている地面上または壁面上の位置を候補位置として登録する処理は、上記[2-7.プレイヤキャラクタ復帰移動制御処理]において
図28、
図29、
図31を参照して述べた方法に従って行われ、「直前の地面または壁面の接地位置に関連する候補位置」の中で最も優先度が高い候補位置として登録される。そして、上記ステップS55において、プロセッサ81は、メモリに記憶されている候補位置データを、上記ステップS55における登録後の内容となるように更新する。
【0238】
一方、ステップS56において、プロセッサ81は、プレイヤキャラクタがゲーム空間の壁面上に配置されているか否かを判定する。そして、プロセッサ81は、プレイヤキャラクタが壁面上に配置されている場合、ステップS57に処理を進める。一方、プロセッサ81は、プレイヤキャラクタが壁面上に配置されていない場合、ステップS59に処理を進める。
【0239】
ステップS57において、プロセッサ81は、プレイヤキャラクタが上記壁面上において移動を停止している期間が所定時間に到達したか否かを判定する。そして、プロセッサ81は、移動を停止している期間が所定時間に到達した場合、ステップS58に処理を進める。一方、プロセッサ81は、移動を停止している期間が所定時間に到達していない場合、ステップS59に処理を進める。
【0240】
ステップS58において、プロセッサ81は、プレイヤキャラクタが停止している壁面上の位置を候補位置として新たに上書き登録し、ステップS59に処理を進める。例えば、プレイヤキャラクタが壁面上で所定時間以上停止した位置を候補位置として上書き登録する処理は、上記[2-7.プレイヤキャラクタ復帰移動制御処理]において
図29、
図31を参照して述べた方法に従って行われ、「直前の地面または壁面の接地位置に関連する候補位置」の中で直近に登録されている候補位置に代えて上書き登録される。そして、上記ステップS58において、プロセッサ81は、メモリに記憶されている候補位置データを、上記ステップS58における上書き登録後の内容となるように更新する。
【0241】
ステップS59において、プロセッサ81は、プレイヤキャラクタがチェックポイントに関連する動作(
図30参照)を行ったまたは所定のチェックポイントに到達したか否かを判定する。そして、プロセッサ81は、チェックポイントに関連する動作が行われたまたは所定のチェックポイントに到達した場合、ステップS60に処理を進める。一方、プロセッサ81は、チェックポイントに関連する動作が行われていない、かつ、所定のチェックポイントに到達していない場合、ステップS71(
図37参照)に処理を進める。
【0242】
ステップS60において、プロセッサ81は、候補位置データに登録されているチェックポイントに関連する候補位置より高い優先度が付与された候補位置(例えば、直前の地面または壁面の接地位置に関連する候補位置)を候補から除外して、次のステップに処理を進める。例えば、候補位置を候補から除外する処理は、上記[2-7.プレイヤキャラクタ復帰移動制御処理]において
図31を参照して述べた方法に従って行われる。そして、上記ステップS60において、プロセッサ81は、メモリに記憶されている候補位置データを、上記ステップS60における除外後の内容となるように更新する。
【0243】
次に、プロセッサ81は、プレイヤキャラクタが配置されているチェックポイントに関連する位置を候補位置として新たに登録し(ステップS61)、ステップS71(
図37参照)に処理を進める。例えば、チェックポイントに関連する候補位置を登録する処理は、上記[2-7.プレイヤキャラクタ復帰移動制御処理]において
図30および
図31を参照して述べた方法に従って行われ、それまでに候補位置データに登録されていた「チェックポイントに関連する候補位置」に代えて、新たな候補位置を登録する。そして、上記ステップS61において、プロセッサ81は、メモリに記憶されている候補位置データを、上記ステップS61における登録後の内容となるように更新する。
【0244】
図37に進み、ステップS71において、プロセッサ81は、プレイヤキャラクタがファストトラベルによって移動する動作を行っているか否かを判定する。そして、プロセッサ81は、ファストトラベルによって移動する動作が行われている場合、ステップS72に処理を進める。一方、プロセッサ81は、ファストトラベルによって移動する動作が行われていない場合、ステップS74に処理を進める。
【0245】
ステップS72において、プロセッサ81は、候補位置データに登録されているファストトラベルによる移動直後の接地位置に関連する候補位置より高い優先度が付与された候補位置(例えば、直前の地面または壁面の接地位置に関連する候補位置、チェックポイントに関連する候補位置)を候補から除外して、次のステップに処理を進める。例えば、候補位置を候補から除外する処理は、上記[2-7.プレイヤキャラクタ復帰移動制御処理]において
図31を参照して述べた方法に従って行われる。そして、上記ステップS72において、プロセッサ81は、メモリに記憶されている候補位置データを、上記ステップS72における除外後の内容となるように更新する。
【0246】
次に、プロセッサ81は、プレイヤキャラクタが配置されているファストトラベルによる移動直後の位置を候補位置として新たに登録し(ステップS73)、ステップS74に処理を進める。例えば、ファストトラベルによる移動直後の接地位置に関連する候補位置を登録する処理は、上記[2-7.プレイヤキャラクタ復帰移動制御処理]において
図31を参照して述べた方法に従って行われ、それまでに候補位置データに登録されていた「ファストトラベルによる移動直後の接地位置に関連する候補位置」に代えて、新たな候補位置を登録する。そして、上記ステップS73において、プロセッサ81は、メモリに記憶されている候補位置データを、上記ステップS73における登録後の内容となるように更新する。
【0247】
ステップS74において、プロセッサ81は、ユーザが新たなゲームステージを用いたゲームを開始したか否かを判定する。そして、プロセッサ81は、新たなゲームステージを用いたゲームが開始された場合、ステップS75に処理を進める。一方、プロセッサ81は、新たなゲームステージを用いたゲームが開始されていない場合、当該サブルーチンによる処理を終了する。
【0248】
ステップS75において、プロセッサ81は、候補位置データに登録されているゲームステージ開始直後の接地位置に関連する候補位置より高い優先度が付与された候補位置(例えば、直前の地面または壁面の接地位置に関連する候補位置、チェックポイントに関連する候補位置、ファストトラベルによる移動直後の接地位置に関連する候補位置)を候補から除外して、次のステップに処理を進める。例えば、候補位置を候補から除外する処理は、上記[2-7.プレイヤキャラクタ復帰移動制御処理]において
図31を参照して述べた方法に従って行われる。そして、上記ステップS75において、プロセッサ81は、メモリに記憶されている候補位置データを、上記ステップS75における除外後の内容となるように更新する。
【0249】
次に、プロセッサ81は、プレイヤキャラクタが配置されているゲームステージ開始直後の接地位置を候補位置として新たに登録し(ステップS76)、当該サブルーチンによる処理を終了する。例えば、ゲームステージ開始直後の接地位置に関連する候補位置を登録する処理は、上記[2-7.プレイヤキャラクタ復帰移動制御処理]において
図31を参照して述べた方法に従って行われ、それまでに候補位置データに登録されていた「ゲームステージ開始直後の接地位置に関連する候補位置」に代えて、新たな候補位置を登録する。そして、上記ステップS76において、プロセッサ81は、メモリに記憶されている候補位置データを、上記ステップS76における登録後の内容となるように更新する。
【0250】
図35に戻り、上記ステップS45においてプレイヤキャラクタが復帰位置への移動を行うと判定された場合、プロセッサ81は、復帰位置移動処理を行い(ステップS47)、上記ステップS41に戻って処理を繰り返す。以下、
図38を参照して、上記ステップS47において行われる復帰位置移動処理の一例について説明する。
【0251】
図38において、プロセッサ81は、プレイヤキャラクタが復帰アイテムを所持(例えば、収納)している、または復帰アイテムを現時点で使用しているか否かを判定する(ステップS81)。そして、プロセッサ81は、プレイヤキャラクタが復帰アイテムを所持している、または現時点で使用している場合、ステップS82に処理を進める。一方、プロセッサ81は、プレイヤキャラクタが復帰アイテムを所持も使用もしていない場合、ステップS92に処理を進める。
【0252】
ステップS82において、プロセッサ81は、メモリに記憶されている復帰位置データを参照して、復帰位置が既に決定されているか否かを判定する。そして、プロセッサ81は、復帰位置が決定されていない場合、ステップS83に処理を進める。一方、プロセッサ81は、復帰位置が既に決定されている場合、ステップS89に処理を進める。
【0253】
ステップS83において、プロセッサ81は、メモリに記憶されている候補位置データが示す最も優先度が高い候補位置を選択して、次のステップに処理を進める。
【0254】
次に、プロセッサ81は、上記ステップS83において選択された候補位置の判定処理を行い(ステップS84)、次のステップに処理を進める。例えば、プロセッサ81は、上記[2-7.プレイヤキャラクタ復帰移動制御処理]において述べた方法に従って、上記選択された候補位置が復帰位置として有効であるか判定する。
【0255】
次に、プロセッサ81は、上記ステップS84の判定処理の結果が、上記ステップS83において選択された候補位置が復帰位置として有効であるとされたか否かを判定する(ステップS85)。そして、プロセッサ81は、上記選択された候補位置が復帰位置として有効でない場合、ステップS86に処理を進める。一方、プロセッサ81は、上記選択された候補位置が復帰位置として有効である場合、ステップS87に処理を進める。
【0256】
ステップS86において、プロセッサ81は、上記ステップS84の判定処理において有効ではないと判定された候補位置を、候補位置データから除外して、上記ステップS83に戻って処理を繰り返す。
【0257】
一方、ステップS87において、プロセッサ81は、上記ステップS84の判定処理において有効であると判定された候補位置を復帰位置として決定し、次のステップに処理を進める。例えば、プロセッサ81は、復帰位置として決定された候補位置を用いて、メモリに記憶されている復帰位置データを更新する。
【0258】
次に、プロセッサ81は、復帰位置移動開始処理を行い(ステップS88)、ステップS89に処理を進める。例えば、プロセッサ81は、プレイヤキャラクタの移動動作を中断させて復帰アイテムを装着させるとともに、上記ステップS87において決定された復帰位置に向けてプレイヤキャラクタを移動させる動作を設定する。そして、上記ステップS88において、プロセッサ81は、メモリに記憶されているオブジェクトデータを、上記ステップS88における制御後のプレイヤキャラクタを示す内容となるように更新する。
【0259】
ステップS89において、プロセッサ81は、プレイヤキャラクタを復帰位置へ移動させる処理を行い、次のステップに処理を進める。そして、上記ステップS89において、プロセッサ81は、メモリに記憶されているオブジェクトデータを、上記ステップS89における制御後のプレイヤキャラクタを示す内容となるように更新する。なお、上記ステップS89の処理が複数フレームにわたって繰り返し実行されることで、上記ステップS87において決定された復帰位置へ移動する動作(
図26下図および
図27上図参照)をプレイヤキャラクタが行うこととなる。
【0260】
次に、プロセッサ81は、プレイヤキャラクタが復帰位置に到達したか否かを判定する(ステップS90)。そして、プロセッサ81は、プレイヤキャラクタが復帰位置に到達した場合、ステップS91に処理を進める。一方、プロセッサ81は、プレイヤキャラクタが復帰位置に到達していない場合、当該サブルーチンによる処理を終了する。
【0261】
ステップS91において、プロセッサ81は、復帰位置移動終了処理を行い、当該サブルーチンによる処理を終了する。例えば、プロセッサ81は、復帰位置データが示す復帰位置にプレイヤキャラクタを接地させる。また、プロセッサ81は、装着していた復帰アイテムをプレイヤキャラクタから離してゲーム空間の表示範囲外まで移動またはゲーム空間から消去して、(
図27下図参照)、当該プレイヤキャラクタが所持(収納)している復帰アイテムの数を使用した数だけ減算する。そして、上記ステップS91において、プロセッサ81は、メモリに記憶されているオブジェクトデータを、上記ステップS91における制御後のプレイヤキャラクタを示す内容となるように更新する。
【0262】
上記ステップS81において、プレイヤキャラクタが復帰アイテムを所持も使用もしていないと判定された場合、プロセッサ81は、ゲーム終了演出処理を行い(ステップS92)、当該サブルーチンによる処理を終了する。例えば、プロセッサ81は、プレイヤキャラクタが進入禁止エリア内にまで進入してゲームオーバーとなる演出を開始する。そして、上記ステップS92において、プロセッサ81は、メモリに記憶されているオブジェクトデータを、上記ステップS92における制御後のプレイヤキャラクタを示す内容となるように更新する。上記ステップS92における処理は、複数フレームにわたって繰り返し実行されることで上記演出が終了するまで行われ、当該演出が終了することにより上記ステップS47における復帰位置移動処理が終了する。
【0263】
図34に戻り、上記ステップS12における各オブジェクトの動作を制御する処理の後、プロセッサ81は、ゲーム画像を生成し(ステップS13)、次のステップに処理を進める。例えば、プロセッサ81は、ボクセルオブジェクトの表示用メッシュの各ポリゴンおよびボクセルオブジェクト以外の各オブジェクトのポリゴンについて、仮想カメラに基づいて描画を行うことでゲーム画像を生成する。なお、表示用メッシュの各ポリゴンは、上記[2-6-1.表示用メッシュのマテリアルの決定]で述べた方法に従って、ポリゴンに設定されるマテリアルに対応するテクスチャ等の描画設定を用いて描画される。上記ステップS13で生成されたゲーム画像は、1フレームに1回のサイクルで表示装置に出力されて表示される。
【0264】
次に、プロセッサ81は、ゲームを終了するか否かを判定する(ステップS14)。例えば、プロセッサ81は、ゲームを終了するための所定の操作入力がユーザによって行われた場合やゲームを終了する条件が満たされた場合、上記ステップS14において肯定判定する。そして、プロセッサ81は、ゲームを終了する場合、当該フローチャートによる処理を終了する。一方、プロセッサ81は、ゲームを終了しない場合、上記ステップS1に戻って処理を繰り返す。以降、上記ステップS14においてゲームを終了すると判定されるまで、上記ステップS1~S14の一連の処理が繰り返し実行される。
【0265】
このように、本実施形態においては、ボクセルの更新に基づいて生成される地形オブジェクトの判定用メッシュ(地形メッシュ)が変形する可能性のあるゲーム空間において、地形オブジェクトが存在しなくなった位置に復帰しないようにプレイヤキャラクタの復帰位置を適切に設定することができる。
【0266】
なお、上述した説明では、3次元空間におけるボクセルに設定されるボクセルデータに基づいて、3次元のメッシュが生成されることによりボクセルオブジェクトが規定される例を用いたが、2次元のボクセルに設定されるボクセルデータに基づいて、ボクセルオブジェクトが規定されてもかまわない。
【0267】
また、ゲームシステム1は、どのような装置であってもよく、携帯型のゲーム装置、任意の携帯型電子機器(PDA(Personal Digital Assistant)、携帯電話、スマートフォン、パーソナルコンピュータ、カメラ、タブレット等)等であってもよい。この場合、プレイヤキャラクタ等を動作させるユーザ操作を行うための入力装置は、左コントローラ3、右コントローラ4、またはタッチパネル13等でなくてもよく、別のコントローラ、マウス、タッチパッド、タッチパネル、トラックボール、キーボード、十字キー、スライドパッド等であってもよい。
【0268】
また、上述した説明では情報処理をゲームシステム1でそれぞれ行う例を用いたが、上記処理ステップの少なくとも一部を他の装置で行ってもかまわない。例えば、ゲームシステム1がさらに他の装置(例えば、別のサーバ、他の情報処理装置、他のゲーム装置、他の携帯端末等)と通信可能に構成されている場合、上記処理ステップは、さらに当該他の装置が協働することによって実行してもよい。このように、上記処理ステップの少なくとも一部を他の装置で行うことによって、上述した処理と同様の処理が可能となる。また、上述した情報処理は、少なくとも1つの情報処理装置により構成される情報処理システムに含まれる1つのプロセッサまたは複数のプロセッサ間の協働により実行されることが可能である。また、上記実施形態においては、ゲームシステム1のプロセッサ81が所定のプログラムを実行することによって情報処理を行うことが可能であるが、ゲームシステム1が備える専用回路によって上記処理の一部または全部が行われてもよい。
【0269】
ここで、上述した変形例によれば、いわゆるクラウドコンピューティングのシステム形態や分散型の広域ネットワークおよびローカルネットワークのシステム形態でも本発明を実現することが可能となる。例えば、分散型のローカルネットワークのシステム形態では、据置型の情報処理装置(据置型のゲーム装置)と携帯型の情報処理装置(携帯型のゲーム装置)との間で上記処理を協働により実行することも可能となる。なお、これらのシステム形態では、上述した処理をどの装置で行うかについては特に限定されず、どのような処理分担をしたとしても本発明を実現できることは言うまでもない。
【0270】
また、上述した情報処理で用いられる処理順序、設定値、判定に用いられる条件等は、単なる一例に過ぎず他の順序、値、条件であっても、本実施例を実現できることは言うまでもない。
【0271】
また、上記プログラムは、外部メモリ等の外部記憶媒体を通じてゲームシステム1に供給されるだけでなく、有線または無線の通信回線を通じて当該装置に供給されてもよい。また、上記プログラムは、当該装置内部の不揮発性記憶装置に予め記録されていてもよい。なお、上記プログラムを記憶する情報記憶媒体としては、不揮発性メモリの他に、CD-ROM、DVD、あるいはそれらに類する光学式ディスク状記憶媒体、フレキシブルディスク、ハードディスク、光磁気ディスク、磁気テープ、などでもよい。また、上記プログラムを記憶する情報記憶媒体としては、上記プログラムを記憶する揮発性メモリでもよい。このような記憶媒体は、コンピュータ等が読み取り可能な記録媒体ということができる。例えば、コンピュータ等に、これらの記録媒体のプログラムを読み込ませて実行させることにより、上述で説明した各種機能を提供させることができる。
【0272】
以上、本発明を詳細に説明してきたが、前述の説明はあらゆる点において本発明の例示に過ぎず、その範囲を限定しようとするものではない。本発明の範囲を逸脱することなく種々の改良や変形を行うことができることは言うまでもない。また、当業者は、本発明の具体的な実施例の記載から、本発明の記載および技術常識に基づいて等価な範囲を実施することができることが理解される。また、本明細書において使用される用語は、特に言及しない限り、当該分野で通常用いられる意味で用いられることが理解されるべきである。したがって、他に定義されない限り、本明細書中で使用される全ての専門用語および技術用語は、本発明の属する分野の当業者によって一般的に理解されるのと同じ意味を有する。矛盾する場合、本明細書(定義を含めて)が優先する。
【産業上の利用可能性】
【0273】
以上のように、本発明は、ボクセルの更新に基づいて生成されるメッシュが変形する可能性があるゲームにおいて、プレイヤキャラクタの復帰位置を適切に設定等することができるゲームプログラム、ゲームシステム、ゲーム処理方法、およびゲーム装置等として利用することができる。
【符号の説明】
【0274】
1…情報処理システム
2…本体装置
3…左コントローラ
4…右コントローラ
11…ハウジング
12…ディスプレイ
13…タッチパネル
32、52…アナログスティック
42、64…端子
81…プロセッサ
82…ネットワーク通信部
83…コントローラ通信部
85…DRAM