(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2026-02-10
(45)【発行日】2026-02-19
(54)【発明の名称】ゲームプログラム、情報処理システム、情報処理装置、および、ゲーム処理方法
(51)【国際特許分類】
A63F 13/69 20140101AFI20260212BHJP
A63F 13/55 20140101ALI20260212BHJP
A63F 13/58 20140101ALI20260212BHJP
G06T 19/00 20110101ALI20260212BHJP
【FI】
A63F13/69
A63F13/55
A63F13/58
G06T19/00 A
(21)【出願番号】P 2024211587
(22)【出願日】2024-12-04
【審査請求日】2025-05-20
(73)【特許権者】
【識別番号】000233778
【氏名又は名称】任天堂株式会社
(74)【代理人】
【識別番号】100158780
【氏名又は名称】寺本 亮
(74)【代理人】
【識別番号】100121359
【氏名又は名称】小沢 昌弘
(74)【代理人】
【識別番号】100130269
【氏名又は名称】石原 盛規
(72)【発明者】
【氏名】川崎 亮
(72)【発明者】
【氏名】栗原 竜矢
(72)【発明者】
【氏名】佐々木 浩幸
(72)【発明者】
【氏名】田中 航
(72)【発明者】
【氏名】森田 健人
(72)【発明者】
【氏名】高橋 和也
(72)【発明者】
【氏名】北原 有加
【審査官】西村 民男
(56)【参考文献】
【文献】特表2024-521128(JP,A)
【文献】特開2022-171068(JP,A)
【文献】特表2018-514885(JP,A)
【文献】特開2018-197973(JP,A)
【文献】特開2017-99744(JP,A)
【文献】特開2004-62666(JP,A)
【文献】ブリンクス・ザ・タイムスイーパー,YouTube[online][video],2024年05月25日,主に、動画の7:00~8:30を参照,インターネット URL https://www.youtube.com/watch?v=vgwIlcWhKDU,[2025年11月21日検索]
(58)【調査した分野】(Int.Cl.,DB名)
A63F 9/24,13/00-13/98
G06T 1/00,11/00-11/40,
11/60-13/80,
15/00-17/00,
17/05,17/10-17/30,
19/00-19/20
(57)【特許請求の範囲】
【請求項1】
コンピュータに、
仮想空間内に定義されたボクセルデータであって、複数のボクセルそれぞれについて、当該ボクセルが定義する空間が仮想的に中身に占められている度合いを示す密度が少なくとも設定されたボクセルデータを、ゲーム処理に基づいて更新させ、
前記ボクセルデータに対応し、仮想カメラに基づいて描画される表示用メッシュを、当該表示用メッシュの頂点座標を少なくとも前記ボクセルデータに含まれる前記密度に基づいて決定させることで生成および更新させ、
前記ゲーム処理に基づいて第1のイベントが発生した場合に、仮想空間内に第1のボクセル更新範囲を生成させ、前記ボクセルデータのうち、前記仮想空間内において前記第1のボクセル更新範囲に対応するそれぞれのボクセルの前記密度を減少または増加させる第1のボクセル更新を行わせ、
前記第1のボクセル更新によって行われたボクセルに対する変化の度合いを示す第1のパラメータを更新させ、
前記ゲーム処理において、前記第1のパラメータに基づいた第2のイベントを発生させる、ゲームプログラム。
【請求項2】
前記第1のボクセル更新は、前記密度を減少させる更新であって、
前記第1のパラメータは、前記密度の減少量の累計に基づいて算出される、請求項1記載のゲームプログラム。
【請求項3】
前記第1のボクセル更新は、前記密度を減少させる更新であって、
前記第1のパラメータは、ボクセルが定義された空間の体積と、当該ボクセルの前記密度の減少量とに基づいた、ボクセルの体積の減少量の累計に基づいて算出される、請求項1記載のゲームプログラム。
【請求項4】
前記第1のパラメータは、前記第1のボクセル更新が行われた回数に基づいて算出される、請求項1記載のゲームプログラム。
【請求項5】
前記ボクセルデータには、前記複数のボクセルそれぞれについて、前記中身の種類を示すマテリアルがさらに設定され、
前記コンピュータにさらに、
前記表示用メッシュのマテリアルを少なくとも前記ボクセルデータに含まれる前記マテリアルに基づいて決定させ、
前記表示用メッシュの頂点座標と前記表示用メッシュのマテリアルに対応するテクスチャに基づいて、前記表示用メッシュを含む前記仮想空間の描画を行わせ、
前記マテリアル毎の、当該マテリアルが設定されたボクセルに対する前記変化の度合いに基づいて前記第1のパラメータを算出させる、請求項1記載のゲームプログラム。
【請求項6】
前記コンピュータにさらに、
操作入力に基づいて、前記仮想空間内においてプレイヤキャラクタを制御させ、
前記第1のイベントとして、前記プレイヤキャラクタに第1のアクションを行わせ、
前記
変化の度合いの増加に基づいて、前記第1のパラメータとして前記プレイヤキャラクタの第2のアクションの実行可能回数を増加させ、
前記実行可能回数が残されている場合において、前記第2のイベントとして、前記実行可能回数を消費させて前記プレイヤキャラクタに前記第2のアクションを行わせる、請求項1から4のいずれか記載のゲームプログラム。
【請求項7】
前記ボクセルデータには、前記複数のボクセルそれぞれについて、前記中身の種類を示すマテリアルがさらに設定され、
前記コンピュータにさらに、
前記表示用メッシュのマテリアルを少なくとも前記ボクセルデータに含まれる前記マテリアルに基づいて決定させ、
前記表示用メッシュの頂点座標と前記表示用メッシュのマテリアルに対応するテクスチャに基づいて、前記表示用メッシュを含む前記仮想空間の描画を行わせ、
前記実行可能回数の増加とともに、増加した当該実行可能回数にかかる前記第2のアクションに対応するマテリアルを、前記第1のボクセル更新によって変化したボクセルの前記マテリアルに基づいて設定させ、
前記第2のアクションとして、当該第2のアクションに対応するマテリアルが設定されたオブジェクトを放つアクションを前記プレイヤキャラクタに行わせる、請求項6記載のゲームプログラム。
【請求項8】
前記第1のボクセル更新は、前記密度を減少させる更新であって、
前記コンピュータにさらに、
前記第1のボクセル更新が行われた回数が第1の回数に達する毎に、
前記実行可能回数を増加させ、
前記第1の回数に達したときの前記第1のボクセル更新、または前記第1の回数に達するまでの複数の前記第1のボクセル更新によって、変化したそれぞれのボクセルの、前記マテリアルおよび前記密度の減少量に基づいて、最も減少したマテリアルを決定させ、当該最も減少したマテリアルを前記第2のアクションに対応するマテリアルとして決定させる、請求項7記載のゲームプログラム。
【請求項9】
前記第2のイベントは、前記第1のパラメータが示すボクセルの変化の度合いが所定の度合いに達したことに応じて発生するゲーム内イベントである、請求項1から5のいずれか記載のゲームプログラム。
【請求項10】
前記コンピュータに、
前記ボクセルデータに基づいて、第1の範囲の前記密度を有するボクセルと、前記第1の範囲より低い第2の範囲の前記密度を有するボクセルとが隣接する部分に対して頂点を設定させる手法に基づいて、前記表示用メッシュの頂点を生成および更新させ、
前記第2のイベントとして、前記第1の範囲の前記密度を有するボクセルが定義された前記仮想空間内の位置に、アイテムオブジェクトを配置させる、請求項9記載のゲームプログラム。
【請求項11】
前記コンピュータに、
前記第1のパラメータが示すボクセルの変化の度合いが所定の度合い増えるごとに、前記アイテムオブジェクトを出現させるか否かの出現判定を行わせ、出現させると判定された場合に、前記アイテムオブジェクトを出現させて配置させる、請求項10記載のゲームプログラム。
【請求項12】
前記コンピュータに、
前記第1のパラメータが示すボクセルの変化の度合いが所定の度合いに達したことに応じて、プレイヤに対するゲーム内アイテムの付与を行わせる、請求項9記載のゲームプログラム。
【請求項13】
仮想空間内に定義されたボクセルデータであって、複数のボクセルそれぞれについて、当該ボクセルが定義する空間が仮想的に中身に占められている度合いを示す密度が少なくとも設定されたボクセルデータを、ゲーム処理に基づいて更新し、
前記ボクセルデータに対応し、仮想カメラに基づいて描画される表示用メッシュを、当該表示用メッシュの頂点座標を少なくとも前記ボクセルデータに含まれる前記密度に基づいて決定することで生成および更新し、
前記表示用メッシュを含む前記仮想空間の描画を行い、
前記ゲーム処理に基づいて第1のイベントが発生した場合に、仮想空間内に第1のボクセル更新範囲を生成し、前記ボクセルデータのうち、前記仮想空間内において前記第1のボクセル更新範囲に対応するそれぞれのボクセルの前記密度を減少または増加させる第1のボクセル更新を行い、
前記第1のボクセル更新によって行われたボクセルに対する変化の度合いを示す第1のパラメータを更新し、
前記ゲーム処理において、前記第1のパラメータに基づいた第2のイベントを発生させる、情報処理システム。
【請求項14】
前記第1のボクセル更新は、前記密度を減少させる更新であって、
前記第1のパラメータは、前記密度の減少量の累計に基づいて算出される、請求項13記載の情報処理システム。
【請求項15】
前記第1のボクセル更新は、前記密度を減少させる更新であって、
前記第1のパラメータは、ボクセルが定義された空間の体積と、当該ボクセルの前記密度の減少量とに基づいた、ボクセルの体積の減少量の累計に基づいて算出される、請求項13記載の情報処理システム。
【請求項16】
前記第1のパラメータは、前記
第1のボクセル更新が行われた回数に基づいて算出される、請求項13記載の情報処理システム。
【請求項17】
前記ボクセルデータには、前記複数のボクセルそれぞれについて、前記中身の種類を示すマテリアルがさらに設定され、
前記情報処理システムはさらに、
前記表示用メッシュのマテリアルを少なくとも前記ボクセルデータに含まれる前記マテリアルに基づいて決定し、
前記表示用メッシュの頂点座標と前記表示用メッシュのマテリアルに対応するテクスチャに基づいて、前記表示用メッシュを含む前記仮想空間の描画を行い、
前記マテリアル毎の、当該マテリアルが設定されたボクセルに対する前記変化の度合いに基づいて前記第1のパラメータを算出する、請求項13記載の情報処理システム。
【請求項18】
前記情報処理システムはさらに、
操作入力に基づいて、前記仮想空間内においてプレイヤキャラクタを制御し、
前記第1のイベントとして、前記プレイヤキャラクタに第1のアクションを行わせ、
前記
変化の度合いの増加に基づいて、前記第1のパラメータとして前記プレイヤキャラクタの第2のアクションの実行可能回数を増加させ、
前記実行可能回数が残されている場合において、前記第2のイベントとして、前記実行可能回数を消費させて前記プレイヤキャラクタに前記第2のアクションを行わせる、請求項13から16のいずれか記載の情報処理システム。
【請求項19】
前記ボクセルデータには、前記複数のボクセルそれぞれについて、前記中身の種類を示すマテリアルがさらに設定され、
前記情報処理システムはさらに、
前記表示用メッシュのマテリアルを少なくとも前記ボクセルデータに含まれる前記マテリアルに基づいて決定し、
前記表示用メッシュの頂点座標と前記表示用メッシュのマテリアルに対応するテクスチャに基づいて、前記表示用メッシュを含む前記仮想空間の描画を行い、
前記実行可能回数の増加とともに、増加した当該実行可能回数にかかる前記第2のアクションに対応するマテリアルを、前記第1のボクセル更新によって変化したボクセルの前記マテリアルに基づいて設定し、
前記第2のアクションとして、当該第2のアクションに対応するマテリアルが設定されたオブジェクトを放つアクションを前記プレイヤキャラクタに行わせる、請求項18記載の情報処理システム。
【請求項20】
前記第1のボクセル更新は、前記密度を減少させる更新であって、
前記情報処理システムはさらに、
前記第1のボクセル更新が行われた回数が第1の回数に達する毎に、
前記実行可能回数を増加させ、
前記第1の回数に達したときの前記
第1のボクセル更新、または前記第1の回数に達するまでの複数の前記第1のボクセル更新によって、変化したそれぞれのボクセルの、前記マテリアルおよび前記密度の減少量に基づいて、最も減少したマテリアルを決定し、当該最も減少したマテリアルを前記第2のアクションに対応するマテリアルとして決定する、請求項19記載の情報処理システム。
【請求項21】
前記第2のイベントは、前記第1のパラメータが示すボクセルの変化の度合いが所定の度合いに達したことに応じて発生するゲーム内イベントである、請求項13から17のいずれか記載の情報処理システム。
【請求項22】
前記ボクセルデータに基づいて、第1の範囲の前記密度を有するボクセルと、前記第1の範囲より低い第2の範囲の前記密度を有するボクセルとが隣接する部分に対して頂点を設定させる手法に基づいて、前記表示用メッシュの頂点を生成および更新し、
前記第2のイベントとして、前記第1の範囲の前記密度を有するボクセルが定義された前記仮想空間内の位置に、アイテムオブジェクトを配置する、請求項21記載の情報処理システム。
【請求項23】
前記第1のパラメータが示すボクセルの変化の度合いが所定の度合い増えるごとに、前記アイテムオブジェクトを出現させるか否かの出現判定を行い、出現させると判定された場合に、前記アイテムオブジェクトを出現させて配置する、請求項22記載の情報処理システム。
【請求項24】
前記
第1のパラメータが示すボクセルの変化の度合いが所定の度合いに達したことに応じて、プレイヤに対するゲーム内アイテムの付与を行う、請求項21記載の情報処理システム。
【請求項25】
仮想空間内に定義されたボクセルデータであって、複数のボクセルそれぞれについて、当該ボクセルが定義する空間が仮想的に中身に占められている度合いを示す密度が少なくとも設定されたボクセルデータを、ゲーム処理に基づいて更新し、
前記ボクセルデータに対応し、仮想カメラに基づいて描画される表示用メッシュを、当該表示用メッシュの頂点座標を少なくとも前記ボクセルデータに含まれる前記密度に基づいて決定することで生成および更新し、
前記表示用メッシュを含む前記仮想空間の描画を行い、
前記ゲーム処理に基づいて第1のイベントが発生した場合に、仮想空間内に第1のボクセル更新範囲を生成し、前記ボクセルデータのうち、前記仮想空間内において前記第1のボクセル更新範囲に対応するそれぞれのボクセルの前記密度を減少または増加させる第1のボクセル更新を行い、
前記第1のボクセル更新によって行われたボクセルに対する変化の度合いを示す第1のパラメータを更新し、
前記ゲーム処理において、前記第1のパラメータに基づいた第2のイベントを発生させる、情報処理装置。
【請求項26】
情報処理システムに、
仮想空間内に定義されたボクセルデータであって、複数のボクセルそれぞれについて、当該ボクセルが定義する空間が仮想的に中身に占められている度合いを示す密度が少なくとも設定されたボクセルデータを、ゲーム処理に基づいて更新させ、
前記ボクセルデータに対応し、仮想カメラに基づいて描画される表示用メッシュを、当該表示用メッシュの頂点座標を少なくとも前記ボクセルデータに含まれる前記密度に基づいて決定させることで生成および更新させ、
前記表示用メッシュを含む前記仮想空間の描画を行わせ、
前記ゲーム処理に基づいて第1のイベントが発生した場合に、仮想空間内に第1のボクセル更新範囲を生成させ、前記ボクセルデータのうち、前記仮想空間内において前記第1のボクセル更新範囲に対応するそれぞれのボクセルの前記密度を減少または増加させる第1のボクセル更新を行わせ、
前記第1のボクセル更新によって行われたボクセルに対する変化の度合いを示す第1のパラメータを更新させ、
前記ゲーム処理において、前記第1のパラメータに基づいた第2のイベントを発生させる、ゲーム処理方法。
【請求項27】
前記第1のボクセル更新は、前記密度を減少させる更新であって、
前記第1のパラメータは、前記密度の減少量の累計に基づいて算出される、請求項26記載のゲーム処理方法。
【請求項28】
前記第1のボクセル更新は、前記密度を減少させる更新であって、
前記第1のパラメータは、ボクセルが定義された空間の体積と、当該ボクセルの前記密度の減少量とに基づいた、ボクセルの体積の減少量の累計に基づいて算出される、請求項26記載のゲーム処理方法。
【請求項29】
前記第1のパラメータは、前記
第1のボクセル更新が行われた回数に基づいて算出される、請求項26記載のゲーム処理方法。
【請求項30】
前記ボクセルデータには、前記複数のボクセルそれぞれについて、前記中身の種類を示すマテリアルがさらに設定され、
前記情報処理システムにさらに、
前記表示用メッシュのマテリアルを少なくとも前記ボクセルデータに含まれる前記マテリアルに基づいて決定させ、
前記表示用メッシュの頂点座標と前記表示用メッシュのマテリアルに対応するテクスチャに基づいて、前記表示用メッシュを含む前記仮想空間の描画を行わせ、
前記マテリアル毎の、当該マテリアルが設定されたボクセルに対する前記変化の度合いに基づいて前記第1のパラメータを算出させる、請求項26記載のゲーム処理方法。
【請求項31】
前記情報処理システムにさらに、
操作入力に基づいて、前記仮想空間内においてプレイヤキャラクタを制御させ、
前記第1のイベントとして、前記プレイヤキャラクタに第1のアクションを行わせ、
前記
変化の度合いの増加に基づいて、前記第1のパラメータとして前記プレイヤキャラクタの第2のアクションの実行可能回数を増加させ、
前記実行可能回数が残されている場合において、前記第2のイベントとして、前記実行可能回数を消費させて前記プレイヤキャラクタに前記第2のアクションを行わせる、請求項26から29のいずれか記載のゲーム処理方法。
【請求項32】
前記ボクセルデータには、前記複数のボクセルそれぞれについて、前記中身の種類を示すマテリアルがさらに設定され、
前記情報処理システムにさらに、
前記表示用メッシュのマテリアルを少なくとも前記ボクセルデータに含まれる前記マテリアルに基づいて決定させ、
前記表示用メッシュの頂点座標と前記表示用メッシュのマテリアルに対応するテクスチャに基づいて、前記表示用メッシュを含む前記仮想空間の描画を行わせ、
前記実行可能回数の増加とともに、増加した当該実行可能回数にかかる前記第2のアクションに対応するマテリアルを、前記第1のボクセル更新によって変化したボクセルの前記マテリアルに基づいて設定させ、
前記第2のアクションとして、当該第2のアクションに対応するマテリアルが設定されたオブジェクトを放つアクションを前記プレイヤキャラクタに行わせる、請求項31記載のゲーム処理方法。
【請求項33】
前記第1のボクセル更新は、前記密度を減少させる更新であって、
前記情報処理システムにさらに、
前記第1のボクセル更新が行われた回数が第1の回数に達する毎に、
前記実行可能回数を増加させ、
前記第1の回数に達したときの前記第1のボクセル更新、または前記第1の回数に達するまでの複数の前記第1のボクセル更新によって、変化したそれぞれのボクセルの、前記マテリアルおよび前記密度の減少量に基づいて、最も減少したマテリアルを決定させ、当該最も減少したマテリアルを前記第2のアクションに対応するマテリアルとして決定させる、請求項32記載のゲーム処理方法。
【請求項34】
前記第2のイベントは、前記第1のパラメータが示すボクセルの変化の度合いが所定の度合いに達したことに応じて発生するゲーム内イベントである、請求項26から30のいずれか記載のゲーム処理方法。
【請求項35】
前記情報処理システムに、
前記ボクセルデータに基づいて、第1の範囲の前記密度を有するボクセルと、前記第1の範囲より低い第2の範囲の前記密度を有するボクセルとが隣接する部分に対して頂点を設定させる手法に基づいて、前記表示用メッシュの頂点を生成および更新させ、
前記第2のイベントとして、前記第1の範囲の前記密度を有するボクセルが定義された前記仮想空間内の位置に、アイテムオブジェクトを配置させる、請求項34記載のゲーム処理方法。
【請求項36】
前記情報処理システムに、
前記第1のパラメータが示すボクセルの変化の度合いが所定の度合い増えるごとに、前記アイテムオブジェクトを出現させるか否かの出現判定を行わせ、出現させると判定された場合に、前記アイテムオブジェクトを出現させて配置させる、請求項35記載のゲーム処理方法。
【請求項37】
前記情報処理システムに、
前記第1のパラメータが示すボクセルの変化の度合いが所定の度合いに達したことに応じて、プレイヤに対するゲーム内アイテムの付与を行わせる、請求項34記載のゲーム処理方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ボクセルデータを用いて仮想空間におけるオブジェクトを生成するゲームプログラム、情報処理システム、情報処理装置、および、ゲーム処理方法に関する。
【背景技術】
【0002】
従来、ボクセルデータに基づいてオブジェクトのメッシュを生成することが行われている(例えば、非特許文献1参照)。
【先行技術文献】
【非特許文献】
【0003】
【文献】"Marchingcubes:A highresolution 3D surface construction algorithm"、Computer Graphics,Volume 21, Number 4、WE Lorensen,HE Cline、1987年
【発明の概要】
【発明が解決しようとする課題】
【0004】
従来においては、ボクセルデータはメッシュの生成に用いるだけであった。
【0005】
それ故、本発明の目的は、ボクセルデータの変化に応じたゲームイベントを発生させることができるゲームプログラム、情報処理システム、情報処理装置、および、ゲーム処理方法を提供することである。
【課題を解決するための手段】
【0006】
上記の課題を解決すべく、本発明は、以下の(1)~(12)の構成を採用した。
【0007】
(1)
本発明の一例は、コンピュータに、次の処理を実行させるゲームプログラムである。
・仮想空間内に定義されたボクセルデータであって、複数のボクセルそれぞれについて、当該ボクセルが定義する空間が仮想的に中身に占められている度合いを示す密度が少なくとも設定されたボクセルデータを、ゲーム処理に基づいて更新する処理
・ボクセルデータに対応し、仮想カメラに基づいて描画される表示用メッシュを、当該表示用メッシュの頂点座標を少なくともボクセルデータに含まれる密度に基づいて決定することで生成および更新する処理
・ゲーム処理に基づいて第1のイベントが発生した場合に、仮想空間内に第1のボクセル更新範囲を生成し、ボクセルデータのうち、仮想空間内において第1のボクセル更新範囲に対応するそれぞれのボクセルの密度を減少または増加させる第1のボクセル更新を行う処理
・第1のボクセル更新によって行われたボクセルに対する変化の度合いを示す第1のパラメータを更新する処理
・ゲーム処理において、第1のパラメータに基づいた第2のイベントを発生する処理
【0008】
上記(1)の構成によれば、ボクセルオブジェクトの変形に応じてイベントを発生させることができ、変形の度合いに応じたゲーム処理を実行することができる。
【0009】
(2)
上記(1)の構成において、第1のボクセル更新は、密度を減少させる更新であってもよい。第1のパラメータは、密度の減少量の累計に基づいて算出されてもよい。
【0010】
上記(2)の構成によれば、ボクセルオブジェクトを消去させるような変形に応じてイベントを発生させることができる。
【0011】
(3)
上記(1)の構成において、第1のボクセル更新は、密度を減少させる更新であってもよい。第1のパラメータは、ボクセルが定義された空間の体積と、当該ボクセルの密度の減少量とに基づいた、ボクセルの体積の減少量の累計に基づいて算出されてもよい。
【0012】
上記(3)の構成によれば、仮想空間におけるボクセルオブジェクトの内部領域の体積の減少量に応じてイベントを発生させることができる。
【0013】
(4)
上記(1)の構成において、第1のパラメータは、第1のボクセル更新が行われた回数に基づいて算出されてもよい。
【0014】
上記(4)の構成によれば、ボクセルオブジェクトの変形が行われた回数に応じてイベントを発生させることができる。
【0015】
(5)
上記(1)からの(4)のいずれかの構成において、ボクセルデータには、複数のボクセルそれぞれについて、中身の種類を示すマテリアルがさらに設定されてもよい。ゲームプログラムは、コンピュータにさらに、次の処理を実行させてもよい。
・表示用メッシュのマテリアルを少なくともボクセルデータに含まれるマテリアルに基づいて決定する処理
・表示用メッシュの頂点座標と表示用メッシュのマテリアルに対応するテクスチャに基づいて、表示用メッシュを含む仮想空間の描画を行う処理
・マテリアル毎の、当該マテリアルが設定されたボクセルに対する変化の度合いに基づいて第1のパラメータを算出する処理
【0016】
上記(5)の構成によれば、ボクセルオブジェクトのマテリアル毎の変化に応じてイベントを発生させることができる。
【0017】
(6)
上記(1)からの(4)のいずれかの構成において、ゲームプログラムは、コンピュータにさらに、次の処理を実行させてもよい。
・操作入力に基づいて、仮想空間内においてプレイヤキャラクタを制御する処理
・第1のイベントとして、プレイヤキャラクタに第1のアクションを行わせる処理
・度合いの増加に基づいて、第1のパラメータとしてプレイヤキャラクタの第2のアクションの実行可能回数を増加させる処理
・実行可能回数が残されている場合において、第2のイベントとして、実行可能回数を消費させてプレイヤキャラクタに第2のアクションを行わせる処理
【0018】
上記(6)の構成によれば、ボクセルオブジェクトの変化に応じて、プレイヤキャラクタによる第2のアクションの実行可能回数を増加させることで、ボクセルオブジェクトを変形させる動機づけをプレイヤに与えることができる。
【0019】
(7)
上記(6)の構成において、ボクセルデータには、複数のボクセルそれぞれについて、中身の種類を示すマテリアルがさらに設定されてもよい。ゲームプログラムは、コンピュータにさらに、次の処理を実行させてもよい。
・表示用メッシュのマテリアルを少なくともボクセルデータに含まれるマテリアルに基づいて決定する処理
・表示用メッシュの頂点座標と表示用メッシュのマテリアルに対応するテクスチャに基づいて、表示用メッシュを含む仮想空間の描画を行う処理
・実行可能回数の増加とともに、増加した当該実行可能回数にかかる第2のアクションに対応するマテリアルを、第1のボクセル更新によって変化したボクセルのマテリアルに基づいて設定する処理
・第2のアクションとして、当該第2のアクションに対応するマテリアルが設定されたオブジェクトを放つアクションをプレイヤキャラクタに行わせる処理
【0020】
上記(7)の構成によれば、第2のアクションに関するオブジェクトのマテリアルを、更新されたボクセルのマテリアルに基づくマテリアルとすることができる。
【0021】
(8)
上記(7)の構成において、第1のボクセル更新は、密度を減少させる更新であってもよい。ゲームプログラムは、コンピュータにさらに、第1のボクセル更新が行われた回数が第1の回数に達する毎に、次の処理を実行させてもよい。
・実行可能回数を増加させる処理
・第1の回数に達したときの第1のボクセル更新、または第1の回数に達するまでの複数の第1のボクセル更新によって、変化したそれぞれのボクセルの、マテリアルおよび密度の減少量に基づいて、最も減少したマテリアルを決定し、当該最も減少したマテリアルを第2のアクションに対応するマテリアルとして決定する処理
【0022】
上記(8)の構成によれば、第2のアクションに関するオブジェクトのマテリアルを、当該第2のアクションの実行可能回数が増加された際、または、増加されるまでに密度が減少したボクセルのマテリアルに基づいたマテリアルとすることができる。
【0023】
(9)
上記(1)からの(8)のいずれかの構成において、第2のイベントは、第1のパラメータが示すボクセルの変化の度合いが所定の度合いに達したことに応じて発生するゲーム内イベントであってもよい。
【0024】
上記(9)の構成によれば、より多くのボクセルオブジェクトを変形させる動機づけをプレイヤに与えることができる。
【0025】
(10)
上記(9)の構成において、ゲームプログラムは、コンピュータに、次の処理を実行させてもよい。
・ボクセルデータに基づいて、第1の範囲の密度を有するボクセルと、第1の範囲より低い第2の範囲の密度を有するボクセルとが隣接する部分に対して頂点を設定する手法に基づいて、表示用メッシュの頂点を生成および更新する処理
・第2のイベントとして、第1の範囲の密度を有するボクセルが定義された仮想空間内の位置に、アイテムオブジェクトを配置する処理
【0026】
上記(10)の構成によれば、ボクセルオブジェクトの変化に応じてアイテムオブジェクトを配置することで、ボクセルオブジェクトを変形させる動機づけをプレイヤに与えることができる。
【0027】
(11)
上記(10)の構成において、ゲームプログラムは、コンピュータに、第1のパラメータが示すボクセルの変化の度合いが所定の度合い増えるごとに、アイテムオブジェクトを出現させるか否かの出現判定を行わせ、出現させると判定された場合に、アイテムオブジェクトを出現させて配置させてもよい。
【0028】
上記(11)の構成によれば、ボクセルを継続的に変化させることで定期的にアイテムオブジェクトが配置されるので、ボクセルオブジェクトを継続的に変形させる動機づけをプレイヤに与えることができる。
【0029】
(12)
上記(9)の構成において、ゲームプログラムは、コンピュータに、第1のパラメータが示すボクセルの変化の度合いが所定の度合いに達したことに応じて、プレイヤに対するゲーム内アイテムの付与を行わせてもよい。
【0030】
上記(12)の構成によれば、ボクセルオブジェクトの変化に応じてアイテムの付与を行うことで、ボクセルオブジェクトを変形させる動機づけをプレイヤに与えることができる。
【0031】
なお、本発明の別の一例は、上記(1)~(12)における処理を実行する情報処理装置または情報処理システムであってもよい。また、本発明の別の一例は、上記(1)~(12)における処理を情報処理システムに実行させるゲーム処理方法であってもよい。
【発明の効果】
【0032】
上記ゲームプログラム、情報処理システム、情報処理装置、または、ゲーム処理方法によれば、ボクセルデータの変化に応じたゲームイベントを発生させることができる。
【図面の簡単な説明】
【0033】
【
図1】本体装置に左コントローラおよび右コントローラを装着した状態の一例を示す図
【
図2】本体装置から左コントローラおよび右コントローラをそれぞれ外した状態の一例を示す図
【
図7】本体装置と左コントローラおよび右コントローラとの内部構成の一例を示すブロック図
【
図8】ボクセルオブジェクトである地形オブジェクトの一例を示す図
【
図9】
図8に示す地形オブジェクトの一部が削除される前後の様子の一例を示す図
【
図10】
図8に示す地形オブジェクトの一部が削除される前後の様子の一例を示す図
【
図13】更新イベントが発生した場合におけるゲーム空間の一例を示す図
【
図16】頂点のマテリアルを決定する方法の一例を示す図
【
図19】各頂点に基づいて生成されるメッシュの一例を示す図
【
図20】メッシュを構成する四角形が2つの三角形に分割される一例を示す図
【
図21】表示用メッシュを構成するポリゴンのマテリアルを決定する方法の一例を示す図
【
図22】隣接する2つのポリゴンの各頂点に設定されるマテリアルの一例を示す図
【
図23】ポリゴンにテクスチャを適用する一例を示す図
【
図24】判定用メッシュを構成するポリゴンのマテリアルを決定する方法の一例を示す図
【
図25】地形オブジェクト上をプレイヤキャラクタが移動する様子を表すゲーム画像の一例を示す図
【
図26】プレイヤキャラクタが地形オブジェクトから破片オブジェクトを引き抜く様子を表すゲーム画像の一例を示す図
【
図27】プレイヤキャラクタが地形オブジェクトを破壊することで破片オブジェクトが生成される様子を表すゲーム画像の一例を示す図
【
図28】プレイヤキャラクタによる投げアクションが可能な状態におけるゲーム画像の一例を示す図
【
図29】
図28に示す地形オブジェクトに対して破片オブジェクトが接触したことによって地形オブジェクトに変更が加えられた後のゲーム画像の一例を示す図
【
図30】プレイヤキャラクタが吸い込みアクションを実行可能な状態であって、吸い込みアクションを行う前の場面におけるゲーム画像の一例を示す図
【
図31】プレイヤキャラクタが吸い込みアクションを行っている場面におけるゲーム画像の一例を示す図
【
図32】
図31に示す地形オブジェクトを吸い込みアクションに応じて変形させる前後の様子の一例を示す図
【
図33】吸い込みアクションによってボクセルオブジェクトの一部のマテリアルを変更する方法の一例を示す図
【
図34】ボクセルオブジェクトのうちの欠片部分が生じる場合と、欠片部分が生じないように消去処理が実行される場合の一例を示す図
【
図35】吸い込みアクションが行われた後に投げアクションを行う前の場面におけるゲーム画像の一例を示す図
【
図36】弾の増加および増加される弾のマテリアルを決定する方法の一例を示す図
【
図37】地形オブジェクトの変形に応じてアイテムが配置される様子の一例を示す図
【
図38】地形オブジェクトを変形させた実績を示す実績画像の一例を示す図
【
図39】ゲームシステムにおける情報処理に用いられる各種データの一例を示す図
【
図40】ゲームシステムによって実行されるゲーム処理の流れの一例を示すフローチャート
【
図41】
図40に示すステップS4のボクセル更新処理の詳細な流れの一例を示すサブフローチャート
【
図42】
図40に示すステップS11のプレイヤキャラクタ制御処理の詳細な流れの一例を示すサブフローチャート
【
図43】
図40に示すステップS12のイベント処理の詳細な流れの一例を示すサブフローチャート
【発明を実施するための形態】
【0034】
[1.ゲームシステムの構成]
以下、本実施形態の一例に係るゲームシステムについて説明する。本実施形態におけるゲームシステム1の一例は、本体装置(情報処理装置;本実施形態ではゲーム装置本体として機能する)2と左コントローラ3および右コントローラ4とを含む。本体装置2は、左コントローラ3および右コントローラ4がそれぞれ着脱可能である。つまり、ゲームシステム1は、左コントローラ3および右コントローラ4をそれぞれ本体装置2に装着して一体化された装置として利用できる。また、ゲームシステム1は、本体装置2と左コントローラ3および右コントローラ4とを別体として利用することもできる(
図2参照)。以下では、本実施形態のゲームシステム1のハードウェア構成について説明し、その後に本実施形態のゲームシステム1の制御について説明する。
【0035】
図1は、本体装置2に左コントローラ3および右コントローラ4を装着した状態の一例を示す図である。
図1に示すように、左コントローラ3および右コントローラ4は、それぞれ本体装置2に装着されて一体化されている。本体装置2は、ゲームシステム1における各種の処理(例えば、ゲーム処理)を実行する装置である。本体装置2は、ディスプレイ12を備える。左コントローラ3および右コントローラ4は、ユーザが入力を行うための操作部を備える装置である。
【0036】
図2は、本体装置2から左コントローラ3および右コントローラ4をそれぞれ外した状態の一例を示す図である。
図1および
図2に示すように、左コントローラ3および右コントローラ4は、本体装置2に着脱可能である。なお、以下において、左コントローラ3および右コントローラ4の総称として「コントローラ」と記載することがある。
【0037】
図3は、本体装置2の一例を示す六面図である。
図3に示すように、本体装置2は、略板状のハウジング11を備える。本実施形態において、ハウジング11の主面(換言すれば、表側の面、すなわち、ディスプレイ12が設けられる面)は、大略的には矩形形状である。
【0038】
なお、ハウジング11の形状および大きさは、任意である。一例として、ハウジング11は、携帯可能な大きさであってよい。また、本体装置2単体または本体装置2に左コントローラ3および右コントローラ4が装着された一体型装置は、携帯型装置となってもよい。また、本体装置2または一体型装置が手持ち型の装置となってもよい。また、本体装置2または一体型装置が可搬型装置となってもよい。
【0039】
図3に示すように、本体装置2は、ハウジング11の主面に設けられるディスプレイ12を備える。ディスプレイ12は、本体装置2が生成した画像を表示する。本実施形態においては、ディスプレイ12は、液晶表示装置(LCD)とする。ただし、ディスプレイ12は任意の種類の表示装置であってよい。
【0040】
また、本体装置2は、ディスプレイ12の画面上にタッチパネル13を備える。本実施形態においては、タッチパネル13は、マルチタッチ入力が可能な方式(例えば、静電容量方式)のものである。ただし、タッチパネル13は、任意の種類のものであってよく、例えば、シングルタッチ入力が可能な方式(例えば、抵抗膜方式)のものであってもよい。
【0041】
本体装置2は、ハウジング11の内部においてスピーカ(すなわち、
図6に示すスピーカ88)を備えている。
図3に示すように、ハウジング11の主面には、スピーカ孔11aおよび11bが形成される。そして、スピーカ88の出力音は、これらのスピーカ孔11aおよび11bからそれぞれ出力される。
【0042】
また、本体装置2は、本体装置2が左コントローラ3と有線通信を行うための端子である左側端子17と、本体装置2が右コントローラ4と有線通信を行うための右側端子21を備える。
【0043】
図3に示すように、本体装置2は、スロット23を備える。スロット23は、ハウジング11の上側面に設けられる。スロット23は、所定の種類の記憶媒体を装着可能な形状を有する。所定の種類の記憶媒体は、例えば、ゲームシステム1およびそれと同種の情報処理装置に専用の記憶媒体(例えば、専用メモリカード)である。所定の種類の記憶媒体は、例えば、本体装置2で利用されるデータ(例えば、アプリケーションのセーブデータ等)、および/または、本体装置2で実行されるプログラム(例えば、アプリケーションのプログラム等)を記憶するために用いられる。また、本体装置2は、電源ボタン28を備える。
【0044】
本体装置2は、下側端子27を備える。下側端子27は、本体装置2がクレードルと通信を行うための端子である。本実施形態において、下側端子27は、USBコネクタ(より具体的には、メス側コネクタ)である。上記一体型装置または本体装置2単体をクレードルに載置した場合、ゲームシステム1は、本体装置2が生成して出力する画像を据置型モニタに表示することができる。また、本実施形態においては、クレードルは、載置された上記一体型装置または本体装置2単体を充電する機能を有する。また、クレードルは、ハブ装置(具体的には、USBハブ)の機能を有する。
【0045】
図4は、左コントローラ3の一例を示す六面図である。
図4に示すように、左コントローラ3は、ハウジング31を備える。本実施形態においては、ハウジング31は、縦長の形状、すなわち、上下方向(すなわち、
図1および
図4に示すy軸方向)に長い形状である。左コントローラ3は、本体装置2から外された状態において、縦長となる向きで把持されることも可能である。ハウジング31は、縦長となる向きで把持される場合に片手、特に左手で把持可能な形状および大きさをしている。また、左コントローラ3は、横長となる向きで把持されることも可能である。左コントローラ3が横長となる向きで把持される場合には、両手で把持されるようにしてもよい。
【0046】
左コントローラ3は、アナログスティック32を備える。
図4に示すように、アナログスティック32は、ハウジング31の主面に設けられる。アナログスティック32は、方向を入力することが可能な方向入力部として用いることができる。ユーザは、アナログスティック32を傾倒することによって傾倒方向に応じた方向の入力(および、傾倒した角度に応じた大きさの入力)が可能である。なお、左コントローラ3は、方向入力部として、アナログスティックに代えて、十字キーまたはスライド入力が可能なスライドスティック等を備えるようにしてもよい。また、本実施形態においては、アナログスティック32を押下する入力が可能である。
【0047】
左コントローラ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プログラムやアプリケーションプログラム)に応じた指示を行うために用いられる。
【0048】
また、左コントローラ3は、左コントローラ3が本体装置2と有線通信を行うための端子42を備える。
【0049】
図5は、右コントローラ4の一例を示す六面図である。
図5に示すように、右コントローラ4は、ハウジング51を備える。本実施形態においては、ハウジング51は、縦長の形状、すなわち、上下方向に長い形状である。右コントローラ4は、本体装置2から外された状態において、縦長となる向きで把持されることも可能である。ハウジング51は、縦長となる向きで把持される場合に片手、特に右手で把持可能な形状および大きさをしている。また、右コントローラ4は、横長となる向きで把持されることも可能である。右コントローラ4が横長となる向きで把持される場合には、両手で把持されるようにしてもよい。
【0050】
右コントローラ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を備える。
【0051】
また、右コントローラ4は、右コントローラ4が本体装置2と有線通信を行うための端子64を備える。
【0052】
図6は、本体装置2の内部構成の一例を示すブロック図である。本体装置2は、
図3に示す構成の他、
図6に示す各構成要素81~91、97、および98を備える。これらの構成要素81~91、97、および98のいくつかは、電子部品として電子回路基板上に実装されてハウジング11内に収納されてもよい。
【0053】
本体装置2は、プロセッサ81を備える。プロセッサ81は、本体装置2において実行される各種の情報処理を実行する情報処理部であって、例えば、CPU(Central Processing Unit)のみから構成されてもよいし、CPU機能、GPU(Graphics Processing Unit)機能等の複数の機能を含むSoC(System-on-a-chip)から構成されてもよい。プロセッサ81は、記憶部(具体的には、フラッシュメモリ84等の内部記憶媒体、あるいは、スロット23に装着される外部記憶媒体等)に記憶される情報処理プログラム(例えば、ゲームプログラム)を実行することによって、各種の情報処理を実行する。
【0054】
本体装置2は、自身に内蔵される内部記憶媒体の一例として、フラッシュメモリ84およびDRAM(Dynamic Random Access Memory)85を備える。フラッシュメモリ84およびDRAM85は、プロセッサ81に接続される。フラッシュメモリ84は、主に、本体装置2に保存される各種のデータ(プログラムであってもよい)を記憶するために用いられるメモリである。DRAM85は、情報処理において用いられる各種のデータを一時的に記憶するために用いられるメモリである。
【0055】
本体装置2は、スロットインターフェース(以下、「I/F」と略記する。)91を備える。スロットI/F91は、プロセッサ81に接続される。スロットI/F91は、スロット23に接続され、スロット23に装着された所定の種類の記憶媒体(例えば、専用メモリカード)に対するデータの読み出しおよび書き込みを、プロセッサ81の指示に応じて行う。
【0056】
プロセッサ81は、フラッシュメモリ84およびDRAM85、ならびに上記各記憶媒体との間でデータを適宜読み出したり書き込んだりして、上記の情報処理を実行する。
【0057】
本体装置2は、ネットワーク通信部82を備える。ネットワーク通信部82は、プロセッサ81に接続される。ネットワーク通信部82は、ネットワークを介して外部の装置と通信(具体的には、無線通信)を行う。本実施形態においては、ネットワーク通信部82は、第1の通信態様としてWi-Fi(登録商標)の規格に準拠した方式により、無線LANに接続して外部装置と通信を行う。また、ネットワーク通信部82は、第2の通信態様として所定の通信方式(例えば、独自プロトコルによる通信や、赤外線通信)により、同種の他の本体装置2との間で無線通信を行う。なお、上記第2の通信態様による無線通信は、閉ざされたローカルネットワークエリア内に配置された他の本体装置2との間で無線通信可能であり、複数の本体装置2の間で直接通信することによってデータが送受信される、いわゆる「ローカル通信」を可能とする機能を実現する。
【0058】
本体装置2は、コントローラ通信部83を備える。コントローラ通信部83は、プロセッサ81に接続される。コントローラ通信部83は、左コントローラ3および/または右コントローラ4と無線通信を行う。本体装置2と左コントローラ3および右コントローラ4との通信方式は任意であるが、本実施形態においては、コントローラ通信部83は、左コントローラ3との間および右コントローラ4との間で、Bluetooth(登録商標)の規格に従った通信を行う。
【0059】
プロセッサ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は、クレードルを介してデータ(例えば、画像データや音声データ)を据置型モニタ等に出力することができる。
【0060】
ここで、本体装置2は、複数の左コントローラ3と同時に(換言すれば、並行して)通信を行うことができる。また、本体装置2は、複数の右コントローラ4と同時に(換言すれば、並行して)通信を行うことができる。したがって、複数のユーザは、左コントローラ3および右コントローラ4のセットをそれぞれ用いて、本体装置2に対する入力を同時に行うことができる。一例として、第1ユーザが左コントローラ3および右コントローラ4の第1セットを用いて本体装置2に対して入力を行うと同時に、第2ユーザが左コントローラ3および右コントローラ4の第2セットを用いて本体装置2に対して入力を行うことが可能となる。
【0061】
また、ディスプレイ12は、プロセッサ81に接続される。プロセッサ81は、(例えば、上記の情報処理の実行によって)生成した画像および/または外部から取得した画像をディスプレイ12に表示する。
【0062】
本体装置2は、コーデック回路87およびスピーカ(具体的には、左スピーカおよび右スピーカ)88を備える。コーデック回路87は、スピーカ88および音声入出力端子25に接続されるとともに、プロセッサ81に接続される。コーデック回路87は、スピーカ88および音声入出力端子25に対する音声データの入出力を制御する回路である。
【0063】
本体装置2は、電力制御部97およびバッテリ98を備える。電力制御部97は、バッテリ98およびプロセッサ81に接続される。また、図示しないが、電力制御部97は、本体装置2の各部(具体的には、バッテリ98の電力の給電を受ける各部、左側端子17、および右側端子21)に接続される。電力制御部97は、プロセッサ81からの指令に基づいて、バッテリ98から上記各部への電力供給を制御する。
【0064】
また、バッテリ98は、下側端子27に接続される。外部の充電装置(例えば、クレードル)が下側端子27に接続され、下側端子27を介して本体装置2に電力が供給される場合、供給された電力がバッテリ98に充電される。
【0065】
図7は、本体装置2と左コントローラ3および右コントローラ4との内部構成の一例を示すブロック図である。なお、本体装置2に関する内部構成の詳細については、
図6で示しているため
図7では省略している。
【0066】
左コントローラ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(登録商標)の規格に従って行われる。
【0067】
また、左コントローラ3は、例えばフラッシュメモリ等のメモリ102を備える。通信制御部101は、例えばマイコン(マイクロプロセッサとも言う)で構成され、メモリ102に記憶されるファームウェアを実行することによって各種の処理を実行する。
【0068】
左コントローラ3は、各ボタン103(具体的には、ボタン33~39、43、44、および47)を備える。また、左コントローラ3は、アナログスティック(
図7では「スティック」と記載する)32を備える。各ボタン103およびアナログスティック32は、自身に対して行われた操作に関する情報を、適宜のタイミングで繰り返し通信制御部101へ出力する。
【0069】
通信制御部101は、各入力部(具体的には、各ボタン103、および、アナログスティック32)から、入力に関する情報(具体的には、操作に関する情報、またはセンサによる検出結果)を取得する。通信制御部101は、取得した情報(または取得した情報に所定の加工を行った情報)を含む操作データを本体装置2へ送信する。なお、操作データは、所定時間に1回の割合で繰り返し送信される。なお、入力に関する情報が本体装置2へ送信される間隔は、各入力部について同じであってもよいし、同じでなくてもよい。
【0070】
上記操作データが本体装置2へ送信されることによって、本体装置2は、左コントローラ3に対して行われた入力を得ることができる。すなわち、本体装置2は、各ボタン103およびアナログスティック32に対する操作を、操作データに基づいて判別することができる。
【0071】
左コントローラ3は、電力供給部108を備える。本実施形態において、電力供給部108は、バッテリおよび電力制御回路を有する。図示しないが、電力制御回路は、バッテリに接続されるとともに、左コントローラ3の各部(具体的には、バッテリの電力の給電を受ける各部)に接続される。
【0072】
図7に示すように、右コントローラ4は、本体装置2との間で通信を行う通信制御部111を備える。また、右コントローラ4は、通信制御部111に接続されるメモリ112を備える。通信制御部111は、端子64を含む各構成要素に接続される。通信制御部111およびメモリ112は、左コントローラ3の通信制御部101およびメモリ102と同様の機能を有する。したがって、通信制御部111は、端子64を介した有線通信と、端子64を介さない無線通信(具体的には、Bluetooth(登録商標)の規格に従った通信)との両方で本体装置2と通信を行うことが可能であり、右コントローラ4が本体装置2に対して行う通信方法を制御する。
【0073】
右コントローラ4は、左コントローラ3の各入力部と同様の各入力部を備える。具体的には、各ボタン113、および、アナログスティック52を備える。これらの各入力部については、左コントローラ3の各入力部と同様の機能を有し、同様に動作する。
【0074】
右コントローラ4は、電力供給部118を備える。電力供給部118は、左コントローラ3の電力供給部108と同様の機能を有し、同様に動作する。
【0075】
[2.ゲームシステムにおける処理の概要]
次に、
図8~
図29を参照して、ゲームシステム1において実行される処理の概要について説明する。本実施形態においては、ゲームシステム1は、3次元の仮想空間であるゲーム空間に地形オブジェクトやキャラクタ(例えば、プレイヤによって操作されるプレイヤキャラクタ)が配置されたゲーム画像を生成し、表示装置に表示させる。なお、本実施形態において、ゲーム画像が表示される表示装置は、上述のディスプレイ12であってもよいし、据置型モニタであってもよい。
【0076】
[2-1.ボクセル]
本実施形態では、ゲーム空間におけるいくつかのオブジェクトについては、ボクセルデータによって形状が規定される。ここで、ボクセルとは、ゲーム空間に格子状に並べられた直方体状(より具体的には、立方体状)の領域であり、ボクセルデータとは各ボクセルに関する情報を示すデータである。以下では、ボクセルデータによって形状が規定されるオブジェクトを、「ボクセルオブジェクト」と呼ぶ。本実施形態においては、ゲームシステム1は、ゲーム空間内に設定される複数のボクセルについて、ボクセルオブジェクトをゲーム空間内において生成するためのデータとして、ボクセルデータを記憶する。
【0077】
図8は、ボクセルオブジェクトである地形オブジェクトの一例を示す図である。
図8に示すように、本実施形態においては、地面等の地形を表す地形オブジェクトは、ボクセルデータによって形状が規定される(つまり、ボクセルオブジェクトである)。
図8に示す各立方体は、地形オブジェクトを示す。なお、
図8においては、地形オブジェクトの辺となる部分を太線で示しているが、この太線は図面を見やすくする目的で付したものであり、実際には地形オブジェクトの辺が太く表示される必要はない。
【0078】
なお、
図8に示す地形オブジェクトは、例えば、「ボクセルに設定されるボクセルデータに含まれるパラメータが所定値より大きい場合は当該ボクセルの位置に立方体を配置し、所定値以下の場合は当該ボクセルの位置に何も配置しない」というルールで生成されたものである。
図8に示す地形オブジェクトは、ボクセルとボクセルオブジェクトとの関係をわかりやすく例示する目的で示されるものである。本実施形態においては、実際には、例えば後述する
図13に示す地形オブジェクトのように、複雑な形状となるようなルールで(ボクセルデータに基づいて)ボクセルオブジェクトが生成される。なお、ボクセルデータに基づいてボクセルオブジェクトの形状を決定するルールは任意である。他の実施形態においては、ゲームシステム1は、オブジェクトデータに基づいて、
図8に示すようなボクセルオブジェクトを生成してもよいし、
図13に示すようなボクセルオブジェクトを生成してもよい。
【0079】
ボクセルオブジェクトについては、各ボクセルのボクセルデータを変更することで、形状を変化させることができる。
図9および
図10は、
図8に示す地形オブジェクトの一部が削除される前後の様子の一例を示す図である。すなわち、
図9に示す地形オブジェクトのうちの斜線部分が破壊される場合、地形オブジェクトは
図10に示すような形状に変化する。このとき、ゲームシステム1は、上記斜線部分のボクセルについて、地形オブジェクトが存在しないことを示すように、後述のボクセルデータを書き換えることで、地形オブジェクトを容易に消去することができる。なお、ゲームシステム1は、地形オブジェクトを追加する場合も、地形オブジェクトを消去する場合と同様に、各ボクセルのボクセルデータを変更することで、地形オブジェクトの形状を容易に変化させることができる。
【0080】
このように、ゲームシステム1は、ボクセルデータを書き換えることによって、ボクセルオブジェクトの形状を自由に変化させることができる。例えば、ゲームにおいて地形オブジェクトが何らかの理由(例えば、プレイヤキャラクタが地形オブジェクトに打撃を加える等)で破壊される結果として当該地形オブジェクトの形状を変化させる場合、ゲームシステム1は、地形オブジェクトの外形形状を示すデータ(すなわち、後述するメッシュ)を直接変更するのではなく、地形オブジェクトの生成に用いられるボクセルデータを変更することで、地形オブジェクトの形状を自由に変化させることができる。
【0081】
なお、本実施形態においては、ゲーム空間の全体にボクセルが規定される(つまり、ボクセルが設定されるボクセル空間がゲーム空間全体に対応する)ものとする。ただし、ボクセル空間はゲーム空間の全体に設定される必要はなく、ゲーム空間の一部の領域に設定されてもよい。ボクセル空間がゲーム空間の一部の領域に設定される場合、当該ボクセル空間におけるボクセル関するボクセルデータによってボクセルオブジェクトの形状が規定され、ゲーム空間における当該ボクセル空間の位置によって当該ゲーム空間におけるボクセルオブジェクトの位置が規定される。また、ゲーム空間には、ゲーム空間の全体に設定される主ボクセル空間と、ゲーム空間の一部の領域に設定される副ボクセル空間とが設定されてもよい。このとき、ゲームシステム1は、ボクセル空間毎にボクセルデータを記憶する。
【0082】
図11は、ボクセルデータの一例を示す図である。ボクセルデータは、ゲーム空間に定義される各ボクセルについて、密度データ、第1マテリアルID、第2マテリアルID、マテリアル混合比データ、および、状態データを含む。本実施形態におけるボクセルデータには、これらのデータが1つのボクセル毎に設定される。
【0083】
密度データは、当該ボクセルに基づいたボクセルオブジェクトの形状(具体的には、後述するメッシュで規定される形状)を規定するために用いられる指標である密度を示す。詳細は後述するが、ボクセルオブジェクトの表面(すなわち、後述するメッシュ)の位置および形状は、上記の密度に基づいて決定される。
【0084】
本実施形態においては、密度は、下限値(例えば、0)から上限値(例えば、255)までの範囲の整数値をとり得る。本実施形態においては、ゲームシステム1は、ボクセルに設定される密度の値が高いと、当該ボクセル内においてボクセルオブジェクト内の領域が占める体積の割合が大きくなりやすく、当該密度の値が低いと当該割合が小さくなりやすいように、密度に基づいてボクセルオブジェクトの表面形状を決定する。このように、密度は、当該ボクセル内においてボクセルオブジェクト内の領域が占める体積の割合に影響を与える指標である。密度は、当該ボクセルの空間が仮想的に中身(すなわち、ボクセルオブジェクトの仮想的な中身)に占められている度合いを示す指標であるとも言える。例えば、密度が0である場合には当該ボクセル内が空であり、密度が255の場合には当該ボクセル内の全てがボクセルオブジェクトの中身であり、密度が0と255の間の値の場合には値に応じた割合で当該ボクセル内をボクセルオブジェクトの中身が占めるものとすることができる。そして、上記密度に基づいて、メッシュの形状、すなわちボクセルオブジェクトの表面形状を決定することができる。メッシュは、ボクセルにおいて中身が存在する部分の表面であると言うこともできるし、ボクセルにおいて中身が存在する部分と存在しない部分の境界であると言うこともできる。なお、上記密度に基づいて生成されたボクセルオブジェクト内の領域が占める体積は、密度が示す割合と厳密に一致する体積になる必要はない。例えば、
図8のようなボクセルオブジェクトを生成する手法と、
図13のようなボクセルオブジェクトを生成する手法とでは、同じ密度に基づいていてもボクセルオブジェクトの体積が異なることもある。
【0085】
他の実施形態においては、密度は、ボクセル内の領域の全体をボクセルオブジェクト内の領域が占める体積が占める状態と、ボクセル内の領域にボクセルオブジェクト内の領域が占める体積が含まれない状態とのいずれかを示すものであってもよい。例えば、密度データは、0または1のみをとり得るデータであってもよい。
【0086】
第1マテリアルIDおよび第2マテリアルIDは、当該ボクセルのマテリアル(換言すれば、物質)を示す情報である。ここで、本実施形態においては、ボクセルには、例えば、砂、岩、または、土といったマテリアルが設定される。なお、ゲームシステム1においては、ボクセルに設定され得るマテリアルとして複数種類のマテリアルが用意されている(
図12に示すマテリアルデータを参照)。本実施形態においては、1つのボクセルには、用意された複数種類のマテリアルのうち2つまでのマテリアルが設定可能である。第1マテリアルIDは、当該ボクセルに設定される第1のマテリアルを示すIDであり、第2マテリアルIDは、当該ボクセルに設定される第2のマテリアルを示すIDである。詳細は後述するが、ボクセルオブジェクトのマテリアル(すなわち、ボクセルオブジェクトのポリゴンに設定されるマテリアル)は、ボクセルに設定されるマテリアルに基づいて決定される。
【0087】
上記のように、本実施形態においては、ボクセルデータは、マテリアルを示すIDを含むものとしたが、他の実施形態においては、ボクセルデータは、マテリアルの内容(すなわち、後述する名称や、性質や、描画設定の情報)を直接示すデータを含むデータ構造であってもよい。
【0088】
マテリアル混合比データは、当該ボクセルにおけるそれぞれのマテリアルの比率を示すデータの一例である。本実施形態においては、1つのボクセルに設定されるマテリアルIDが2つまでなので、上記第1マテリアルIDが示すマテリアルと上記第2マテリアルIDが示すマテリアルの一方の比率を示すマテリアル混合比データで他方の比率も表すことができる。本実施形態においては、マテリアル混合比は、0以上1以下の値によって第1のマテリアルおよび第2のマテリアルからなる全体に対する第2のマテリアルの割合を示す値とする。例えば、あるボクセルに設定されるマテリアル混合比が0.4である場合、当該ボクセルにおいて、第1のマテリアルと第2のマテリアルとが0.6:0.4の比で構成されることを表す。詳細は後述するが、ボクセルオブジェクトの見た目および性質はマテリアルに基づいて決定される。マテリアル混合比は、ボクセルオブジェクトの見た目および性質を決定するために用いられる。マテリアル混合比は、他の実施形態においては、第1のマテリアルの割合を示す値であってもよい。また、マテリアルのボクセル内の比率は、それぞれのマテリアル毎の割合を示すそれぞれの値によって表されてもよい。特に、他の実施形態において、マテリアルを2種類まででなくて3種類以上設定可能な場合には、それぞれのマテリアル毎の割合をそれぞれ示す複数の値としてマテリアルのボクセル内の比率を表すことになる。
【0089】
なお、本実施形態において、ボクセルには必ずしも2種類のマテリアルが設定される必要はなく、1種類のマテリアルが設定されてもよい。例えば、あるボクセルに設定されるマテリアルが1種類である場合、第1マテリアルIDが当該マテリアルを示し、マテリアル混合比は0に設定される。
【0090】
状態データは、当該ボクセルに設定される状態を示す。状態データの具体的な内容や種類数は任意である。本実施形態においては、状態データは、当該ボクセルに設定されるダメージの量を示すデータを含む。なお、他の実施形態においては、状態データには、例えば当該ボクセルが濡れた状態であるか否か(および、その程度)を示すデータが含まれていてもよい。
【0091】
上記のように、本実施形態においてはボクセルデータにはマテリアルIDが含まれるので、ゲームシステム1は、当該マテリアルIDが示すマテリアルの内容を規定するマテリアルデータを記憶する。
図12は、マテリアルデータの一例を示す図である。
図12に示すように、本実施形態におけるマテリアルデータにおいては、マテリアル毎に、マテリアルIDと、当該マテリアルに設定される名称、性質、描画設定、および、内部マテリアルIDの情報とが対応付けられる。
【0092】
マテリアルデータに含まれる名称は、当該マテリアルに設定される名称(例えば、土、砂、草等)である。詳細は後述するが、ゲーム中においては、ボクセルオブジェクトのマテリアルの名称が表示されることがある(
図28参照)。このような表示を行うために、マテリアルデータはマテリアルの名称の情報を含む。
【0093】
マテリアルデータに含まれる性質は、当該マテリアルに設定される性質である。マテリアルの性質とは、当該マテリアルが設定されるボクセルオブジェクトがゲームにおいて有する性質である。なお、マテリアルの性質の具体的な内容や種類数は任意である。例えば、マテリアルの性質として下記の情報の少なくともいずれかが設定されてもよい。
・硬さ
・重さ
・滑り易さ
・プレイヤキャラクタが接触した場合のダメ―ジ設定
・温度
・ボクセルオブジェクトに他のオブジェクトが接着可能か否か
・プレイヤキャラクタがボクセルオブジェクトを破壊または取得した場合におけるプレイヤキャラクタの体力の回復量
・プレイヤキャラクタがボクセルオブジェクトを破壊または取得した場合にプレイヤキャラクタが取得するゲーム内通貨の量
他の実施形態においては、マテリアルの性質を示す情報として、上記とは異なる情報が設定されてもよい。
【0094】
本実施形態においては、マテリアルデータは、マテリアルの性質を特定する情報として、当該性質を示すIDを含む(
図12参照)。図示しないが、ゲームシステム1は、用意される性質毎に、性質IDに対して当該性質の内容(例えば、上述の重さや滑りやすさを示す値)が対応付けられた性質情報を記憶する。ゲームシステム1は、上記性質情報を参照することで、マテリアルについて設定される性質の具体的な内容を特定することができる。
【0095】
マテリアルデータに含まれる描画設定は、当該マテリアルが設定されるボクセルオブジェクトの描画に用いられるテクスチャ等、描画に関する設定を示す情報である。本実施形態においては、マテリアルデータは、描画設定の情報として、当該マテリアルが設定されるボクセルオブジェクトの描画に用いるテクスチャのIDを含む(
図12参照)。図示しないが、ゲームシステム1は、用意されるテクスチャ毎に、テクスチャIDと、当該テクスチャIDが示すテクスチャとを対応付けたテクスチャ情報を記憶する。ゲームシステム1は、上記テクスチャ情報を参照することで、マテリアルについて設定されるテクスチャの具体的な内容を特定することができる。なお、他の実施形態においては、描画設定の情報として、テクスチャの情報に加えて、シェーディングの設定に関する任意の情報が設定されてもよい。たとえば、反射率や、法線に関する情報等が設定されていてもよい。
【0096】
図12に示すように、本実施形態におけるマテリアルデータにおいては、マテリアルIDに対して内部マテリアルIDが対応付けられる。内部マテリアルIDは、それに対応付けられるマテリアルIDが或る物体の外側部分のマテリアルを示す場合において、当該物体の内側部分のマテリアル(以下、「内部マテリアル」と呼ぶ。)を示す。例えば、木の外皮を表すマテリアルのIDには、木の内部を表すマテリアルのIDが、内部マテリアルIDとして対応付けられてもよい。また例えば、草の地面を表すマテリアルのIDには、地表面の草が剥がされたときの内部の土を表すマテリアルのIDが、内部マテリアルIDとして対応付けられてもよい。本実施形態においては、内部マテリアルは、マテリアルの種類毎に予め設定される。ただし、マテリアルの種類によっては、内部マテリアルが設定されない、つまり、マテリアルIDに対して内部マテリアルIDが対応付けられないものがあってもよい。詳細は後述するが、内部マテリアルは、当該内部マテリアルが対応付けられるマテリアルが設定されているボクセルに対してマテリアルの変更処理が実行された場合における、変更後のマテリアルとして用いられる(後述の[2-8-1.弾の数が増加されるイベント、および、プレイヤキャラクタが弾を投げるイベントが行われる例]参照)。
【0097】
なお、本実施形態におけるマテリアルデータにおいては、内部マテリアルIDとして設定されるIDと同じ値がマテリアルIDとして設定される。例えば、
図12に示す例では、草のマテリアルのID(
図12では、003)に対応付けられる内部マテリアルIDである土のマテリアルのID(
図12では、001)は、マテリアルIDとしても設定されている。したがって、マテリアルデータを参照することで、内部マテリアルIDについても、それに対応付けられる名称、性質、および、描画設定の情報を特定することができる。なお、マテリアルデータは、内部マテリアルIDに対応する情報を特定可能な任意のデータ構造であってよい。マテリアルデータは、上記のように内部マテリアルIDに対して間接的に名称、性質、および、描画設定の情報が対応付けられるデータ構造であってもよいし、内部マテリアルIDにこれらの情報が直接対応付けられるデータ構造であってもよい。
【0098】
また、マテリアルデータは、
図13に示すデータ以外の他のデータを含んでいてもよい。例えば、マテリアルデータは、サウンド設定に関するデータを含んでいてもよい。例えば、サウンド設定に関するデータは、当該ボクセルに基づくボクセルオブジェクト上をプレイヤキャラクタが歩いた場合に出力される足音を規定するデータであってもよい。
【0099】
なお、マテリアルデータは、マテリアルの性質および/または描画設定を特定可能な任意の形式のデータであってよい。例えば、他の実施形態においては、マテリアルデータは、マテリアルIDやテクスチャIDを含むデータ構造に代えて、マテリアルの性質および/または描画設定を直接示すデータを含むデータ構造を有していてもよい。
【0100】
[2-2.ボクセルデータの更新]
ゲーム中においては、上述のボクセルデータが更新されることで、ボクセルオブジェクトが変形される。本実施形態においては、ボクセルオブジェクトを更新させるためのゲームイベント(以下、「更新イベント」と呼ぶ。)が発生した場合、ゲームシステム1はボクセルデータの更新を行う。更新イベントの具体的な内容は任意である。更新イベントは、例えば、ゲームに登場するキャラクタが、ボクセルオブジェクトを変形させるアクションを行った(例えば、プレイヤキャラクタがボクセルオブジェクトに対してパンチを行った)ことであってもよいし、ボクセルオブジェクトを変形させる事象が発生したこと(例えば、キャラクタが投げつけたオブジェクトがボクセルオブジェクトに接触したことや、爆弾が爆発したこと)であってもよい。
【0101】
図13は、更新イベントが発生した場合におけるゲーム空間の一例を示す図である。
図13に示す状況は、ボクセルオブジェクトである地形オブジェクト202に対してプレイヤキャラクタ201がパンチアクションを行った状況である。詳細は後述するが、
図13に示す例においては、プレイヤキャラクタ201によるパンチアクションが当たった位置の周囲の地形オブジェクト202が消去されるように、ボクセルデータが更新される。これによって、プレイヤキャラクタ201によるパンチアクションによって地形オブジェクト202が破壊される様子が表現される。
【0102】
本実施形態においては、更新イベントが発生した場合、ゲームシステム1は、ボクセルオブジェクトの更新を行う更新範囲(
図13に示す例においては、更新範囲203)をゲーム空間において設定する。更新範囲の位置、形状、および、大きさは任意である。更新範囲の位置は、例えば、発生した更新イベントに関するオブジェクト(例えば、パンチを行ったプレイヤキャラクタ)とボクセルオブジェクトとが接触した位置に基づいて決定されてもよい。
図13に示す例においては、プレイヤキャラクタ201によるパンチが当たった位置に基づいて更新範囲203の位置が決定されてよく、例えば、当たった位置、あるいは、当たった位置から所定距離だけ前方の位置が更新範囲203の中心位置とされてもよい。更新範囲の形状および大きさは、更新イベントの種類に応じた形状となるように予め決定されてもよい。例えば、プレイヤキャラクタ201のパンチによる更新イベントが発生した場合、
図13に示すような所定の大きさの球体として、更新範囲の形状および大きさが決定されてもよい。また、更新範囲の大きさは、発生した更新イベントの影響度合いを示す値(例えば、パンチの強さや爆発の大きさ)に応じて決定されてもよい。
【0103】
ゲームシステム1は、設定された更新範囲に対応するボクセルについて密度を変更する。なお、更新範囲に対応するボクセルとは、例えば、更新範囲内のボクセル、あるいは、更新範囲と重複するボクセルである。密度が変更される結果、後述する処理によってボクセルオブジェクトのメッシュが変更されることで、ボクセルオブジェクトの形状(見た目の形状、および、接触判定に用いられる形状)が変更される。なお、他の実施形態においては、ゲームシステム1は、更新範囲内に含まれるボクセルについて密度を変更することに加えて、当該ボクセルにおけるマテリアル(すなわち、第1のマテリアル、第2のマテリアル、および、マテリアル混合比)を変更してもよいし、当該ボクセルにおける状態を変更してもよい。
【0104】
本実施形態においては、ゲームシステム1は、ボクセルが更新範囲に含まれるか否かの判定を、SDF(Signed Distance Field:符号付距離場)を用いて行う。ゲームシステム1は、ゲーム空間内に設定される更新範囲を示すSDFを設定し、SDFの値に基づいて上記の判定を行う。SDFは、任意の位置について、規定する形状からの距離を符号付で表すものである。
図14は、更新範囲の一例を示す図である。
図14に示す例においては、ゲーム空間に球形の更新範囲が設定されている。例えば、
図14に示す例においては、ゲーム空間内の位置のうち、SDFが表す形状の内側の位置についてはSDFの値が負の値となり、SDFが表す形状の外側の位置についてはSDFの値が正の値となるようにSDFが設定される。この例では、SDFの値の正であるか負であるかによって、更新範囲に含まれるか否かを判定することができる。また、符号付距離の値を用いることで、単純な内外判定だけでなく、補正や補間等の処理を行うこともできる。
【0105】
上記においては、更新範囲内のボクセルオブジェクトが消去されたように変形されるという変更がボクセルオブジェクトに加えられる例について説明したが、更新範囲を用いてボクセルオブジェクトに加えられる変更はこれに限らない。例えば、更新範囲内にボクセルオブジェクトが新たに追加される(つまり、更新範囲の分だけボクセルオブジェクト内の領域が占める体積が増加する)変更がボクセルオブジェクトに対して加えられてもよい(後述する
図29参照)。また、ボクセルの密度は変更されずに、更新範囲内におけるボクセルのマテリアルのみが変化するような変更がボクセルオブジェクトに対して加えられてもよい。また、ボクセルの密度の変更とマテリアルの変更とが複合的に加えられてもよい。
【0106】
[2-3.頂点の算出]
上記のようにしてボクセルの密度が更新された場合、ゲームシステム1は、更新後のボクセルデータに基づいて頂点を設定する。上記の頂点とは、ボクセルオブジェクトのメッシュの頂点となり得るものである。詳細は後述するが、本実施形態においては、上記の頂点について簡略化が行われ、簡略化後の頂点がボクセルオブジェクトのメッシュの頂点となる。
【0107】
図15は、頂点の設定方法の一例を示す図である。なお、以下において説明する
図15~
図24では、図面を見やすくし、説明を分かりやすくする目的で、ボクセル、頂点、メッシュ等を2次元で表現しているが、実際には3次元空間におけるボクセルに基づいて3次元空間において頂点およびメッシュが設定される。本実施形態においては、ゲームシステム1は、存在することを示す設定の密度(すなわち、後述する基準値以上の密度)を有するボクセルと、存在しないことを示す設定の密度(すなわち、後述する基準値未満の密度)を有するボクセルとが隣接する部分に対し、周囲の複数のボクセルの位置と密度とに基づいた座標に頂点を設定させる手法を用いる。以下、この手法の詳細について説明する。
【0108】
上述のように、本実施形態においては、ボクセルに設定される密度は、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における右上側と左上側に頂点がさらに増える結果となる。
【0109】
上記のように頂点を設定することで、設定された各頂点(あるいは、設定された各頂点に対して後述の簡略化処理を行った後の各頂点)を結ぶメッシュを生成する場合には、ボクセルごとの密度をある程度反映した体積を有する形状を生成することができる。ただし、隣接ボクセルとの関係によっては、密度0のボクセルが一部オブジェクト内の領域を含むことや、密度255のボクセルが一部オブジェクト外の領域を含むようなこともあり得る。また、本実施形態では、基準値未満のボクセルはオブジェクト外として処理するため、オブジェクト内として処理する場合に比べて頂点が少なくなる分、体積も小さくなる。このように、厳密に密度の値に対応する体積となるようにポリゴンメッシュを算出する必要は無い。
【0110】
[2-4.頂点のマテリアルの決定]
ゲームシステム1は、上記のように設定された各頂点についてマテリアルを決定する。頂点のマテリアルは、当該頂点の周囲のボクセルに関するマテリアルに基づいて決定される。頂点の周囲のボクセルとは、例えば、当該頂点を生成するか否かの判定に用いられたボクセル(すなわち、上述の「ボクセルに跨がった領域」と重なるボクセル)である。なお、他の実施形態においては、頂点のマテリアルの決定に用いられるボクセルと、頂点の生成の判定に用いられるボクセルとは同じである必要はなく、異なっていてもよい。
【0111】
図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)とする座標系である。
【0112】
頂点のマテリアルを決定する場合、ゲームシステム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
【0113】
また、ゲームシステム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となる。
【0114】
そして、ゲームシステム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となる。
【0115】
ゲームシステム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のマテリアルの割合を示す値が用いられてもよい。また、それぞれのマテリアル毎の割合を示すそれぞれの値が用いられてもよい。
【0116】
本実施形態においては、ゲームシステム1は、頂点の位置と、頂点に設定される第1および第2のマテリアルのマテリアルIDと、マテリアルの比率とを示す頂点データを生成して記憶する。ただし、頂点に設定されるマテリアルを管理する方法は任意である。他の実施形態においては、頂点データは、第1および第2のマテリアルの内容を直接示すデータを含むデータ構造であってもよい。
【0117】
上記のように、本実施形態においては、ゲームシステム1は、頂点毎に、周囲の複数のボクセルのボクセルデータに含まれるマテリアルIDについて、当該マテリアルID毎の優先度パラメータ(たとえば、評価値)を当該ボクセルデータに基づいて算出する。そして、優先度パラメータに基づいて、優先度の高い所定個数(ここでは、2個)までのマテリアルIDを選択して頂点のマテリアルIDとして決定する。なお、優先度パラメータとして用いられる具体的なパラメータは、上記評価値に限らない。例えば、他の実施形態においては、上記重み値を用いずに、マテリアルの密度を用いて算出される評価値が優先度パラメータとして用いられてもよい。
【0118】
なお、本実施形態においては、優先度パラメータの一例である評価値は、当該頂点の周囲の複数のボクセルの密度に基づいて、密度の高いボクセルに設定されたマテリアルの優先度が高くなるように(つまり、当該マテリアルの評価値が大きくなり、当該マテリアルが選択されやすくなるように)算出される。これによれば、ボクセルに設定される密度の大きさを反映して頂点のマテリアルを決定することができる。
【0119】
また、本実施形態においては、優先度パラメータの一例である評価値は、当該頂点の周囲の複数のボクセルの基準位置(具体的には、中心位置)から当該頂点までの距離に基づいて、当該頂点に近いボクセルに設定されたマテリアルの優先度が高くなるように算出される。これによれば、ボクセルと頂点との距離を反映して頂点のマテリアルを決定することができる。
【0120】
また、本実施形態においては、優先度パラメータの一例である評価値は、当該頂点の周囲の複数のボクセルのマテリアル混合比に基づいて、当該マテリアル混合比が高いマテリアルの優先度が高くなるように算出されるとも言うことができる。これによれば、1つのボクセルに複数のマテリアルが設定される場合において、各マテリアルの比率を反映して頂点のマテリアルを決定することができる。
【0121】
[2-5.頂点の簡略化]
本実施形態においては、ゲームシステム1は、上記のようにして算出された各頂点について簡略化を行う。すなわち、ゲームシステム1は、上記のようにして算出された各頂点のいくつかをまとめて1つの頂点に置き換えることで、頂点数を減少させる。なお、詳細は後述するが、置き換えられる頂点の座標(すなわち、位置)およびマテリアルは、置き換え前の複数の頂点に基づいて設定される。このような簡略化によって、ボクセルオブジェクトのメッシュを構成する頂点の数やポリゴンの数を減少させることができ、処理に用いられるメモリ量を低減したり、処理負荷を低減したりすることができる。
【0122】
本実施形態においては、ゲームシステム1は、SVO(Sparse Voxel Octree)を用いて各頂点を表現することで簡略化を行う。
図17は、頂点の簡略化の一例を示す図である。なお、
図17では、
図17(a)に示す実線で示される1つの正方形が1つの頂点区分領域を表す。ここで、頂点区分領域とは、ボクセルの中心位置を頂点とする正方形の領域であり(実際の3次元空間では、頂点区分領域は立方体または直方体である)、上述の
図15および
図16における点線を辺とする領域である。また、
図17において、内部に「v」の文字が示されている頂点区分領域は、頂点が設定されている頂点区分領域を示す。
【0123】
本実施形態においては、ゲームシステム1は、互いに隣接する所定個数(
図17では4個、実際の3次元空間では8個)の頂点区分領域内の頂点について、簡略化が可能であるか否かを判定する。簡略化が可能であると判定される場合、当該所定個数の頂点区分領域内の頂点について簡略化が行われる。
【0124】
図17の(a)は、簡略化が行われる前の状態である。
図17に示す例においては、点線で囲まれる範囲内の頂点区分領域について簡略化可能と判定されるものとする。このとき、ゲームシステム1は、簡略化可能と判定される上記所定個数の各頂点区分領域内の頂点が、1つの頂点に置き換えられるように簡略化を行う(
図17(b)参照)。これによって、上記所定個数の頂点区分領域内の頂点が1つの頂点に簡略化されることとなる。
【0125】
本実施形態においては、ゲームシステム1は複数段階で簡略化を行う。段階数は任意であるが、
図17では、2段階目までを図示して説明する。
図17の(b)は、1段階目の簡略化が行われた状態を示し、
図17の(c)は、2段階目の簡略化が行われた状態を示している。2段階目の簡略化においては、1段階目の簡略化によって生じた頂点を対象として、簡略化が可能であるか否かが判定される。
図17に示す例においては、
図17の(b)において点線で囲まれる範囲内の頂点区分領域について簡略化可能と判定される結果、当該頂点区分領域の頂点が簡略化され、
図17の(c)に示す状態となる。なお、1段階目の簡略化が可能であるか否かの判定条件と、2段階目の簡略化が可能であるか否かの判定条件とは同じ内容であってもよいし、異なる内容であってもよい。
【0126】
簡略化が可能であるか否かの判定について、具体的な方法は任意である。本実施形態においては、上記判定のための条件として、ボクセルオブジェクトの形状に関する条件と、マテリアルに関する条件とが用いられる。本実施形態においては、ボクセルオブジェクトの形状に関する条件と、マテリアルに関する条件との両方が満たされる場合、簡略化可能であると判定され、ボクセルオブジェクトの形状に関する条件と、マテリアルに関する条件との少なくとも一方が満たされない場合、簡略化不可能であると判定される。
【0127】
形状に関する条件とは、例えば、簡略化前の各頂点による形状と、簡略化後の各頂点による形状とが大きく変更されないことである。例えば、各頂点による形状が簡略化前後で大きく変更されないか否かは、簡略化前のメッシュと簡略化後のメッシュとの間の誤差を示す指標を算出し、当該指標が所定の許容値以下であるか否かによって判定することもできる。また例えば、簡略化前の各頂点による形状が中空の形状であるのに対して、簡略化後の各頂点による形状が中空でない形状となる(つまり、簡略化によって中空であるという情報が欠落してしまう)場合も、形状に関する条件が満たされないと判定される。なお、上記の場合が生じるか否かは、例えば、判定対象となる頂点区分領域に対応する各ボクセルの密度に基づいて判定することができる。また例えば、簡略化前の各頂点による形状が、2以上の頂点によってしか表現できず、1つの頂点では表現できないような形状である場合も、形状に関する条件が満たされないと判定される。なお、ボクセルオブジェクトの形状に関する条件としては、SVOを用いた従来の手法と同様の条件が用いられてもよい。
【0128】
また、マテリアルに関する条件としては、本実施形態においては、簡略化の対象となる上記所定個数の頂点区分領域内の各頂点に設定されるマテリアルの種類数に関する条件が用いられる。
図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は簡略化不可能と判定される。
【0129】
なお、ゲームシステム1において、厳密には異なる種類に分類されるマテリアルであっても、設定される性質が同じであって、見た目が異なる複数種類のマテリアルが用意されてもよい。このような複数種類のマテリアルの一部については、マテリアルに関する条件の判定においては同じ種類とみなして判定を行ってもよい。例えば、土のマテリアルに関して、性質は同じであるものの見た目(例えば、テクスチャの色や模様)が近い複数種類の土のマテリアルが用意される場合がある。このような場合、ゲームシステム1は、当該複数種類の土のマテリアルについては同じ種類とみなしてマテリアルに関する条件の判定を行ってもよい。
【0130】
ここで、本実施形態においては、頂点に関してはボクセルと同様に、2種類までのマテリアルが設定可能である。これに対して、本実施形態においては、簡略化の対象となる各頂点に設定されるマテリアルの種類の合計が3種類以上である場合には、簡略化が行われない。すなわち、マテリアルの種類の合計が1つの頂点に設定可能なマテリアルの数を超える場合には簡略化が行われない。したがって、簡略化によって頂点の数を減らしたとしても、頂点に設定されたマテリアルの情報が簡略化によって欠落することはなく、マテリアルの情報を維持することができる。
【0131】
本実施形態においては、簡略化後の頂点のマテリアルは、簡略化前の各頂点のマテリアルに基づいて決定される。具体的には、ゲームシステム1は、簡略化前の頂点に設定される1種類または2種類のマテリアルを、簡略化後の頂点における第1のマテリアルおよび第2のマテリアルに設定する。これによって、マテリアルの情報を維持することができる。なお、簡略化後のマテリアルの比率は、簡略化前の各頂点のマテリアルの比率に基づいて決定される。本実施形態においては、簡略化後のマテリアルの比率は、上述の評価値を用いて各頂点のマテリアルの比率を算出する方法と同様にして算出される。すなわち、ゲームシステム1は、簡略化後の頂点と簡略化前の頂点との距離に基づいて重み値を算出し、当該重み値と、簡略化前の頂点におけるマテリアルの密度(なお、上記[2-4.頂点のマテリアルの決定]で述べたマテリアルの評価値を、ここでのマテリアルの密度として用いることができる。)とに基づいて、マテリアル毎の評価値を算出する。そして、算出された各マテリアルの評価値に基づいてマテリアルの比率を算出する。
【0132】
[2-6.メッシュの生成]
本実施形態においては、上記のようにして簡略化された各頂点に基づいて、ボクセルオブジェクトのメッシュが生成される。
図19は、各頂点に基づいて生成されるメッシュの一例を示す図である。なお、
図19に示す正方形は、上述の頂点区分領域、あるいは、簡略化によって複数の頂点区分領域がまとめられて1つになった頂点区分領域を示す。
図19に示すように、ゲームシステム1は、頂点区分領域が隣接する頂点同士を結ぶ直線を辺とする多角形で構成されるメッシュを生成する。メッシュを構成する各多角形は三角形または四角形となる。
【0133】
本実施形態においては、ゲームシステム1は、表示用メッシュと、判定用メッシュの2種類のメッシュを生成する。表示用メッシュは、ボクセルオブジェクトの表示のために用いられるメッシュである。判定用メッシュは、ボクセルオブジェクトのコリジョン判定のために用いられるメッシュである。詳細は後述するが、ゲームシステム1は、上記の2種類のメッシュを用いることで、ボクセルオブジェクトの表示およびコリジョン判定のそれぞれに適したメッシュを用いて処理を行うことができる。
【0134】
本実施形態においては、ゲームシステム1は、表示用メッシュおよび判定用メッシュを、上述のSVOのデータに基づいて(すなわち、簡略化された各頂点に基づいて)生成する。これによれば、2種類のメッシュの生成に用いられる頂点データを共有することで、処理の効率化を図ることができる。なお、他の実施形態においては、ゲームシステム1は、頂点の簡略化を行わなくてもよく、簡略化されていない頂点に基づいて表示用メッシュおよび/または判定用メッシュを生成してもよい。
【0135】
本実施形態においては、ゲームシステム1は、判定用メッシュを、表示用メッシュよりも簡易な形状となるように生成する。具体的には、ゲームシステム1は、判定用メッシュの頂点数が表示用メッシュの頂点数よりも少なくなるようにする。ここで、本実施形態においては、SVOのデータは、簡略化前の頂点のデータと、簡略化された頂点のデータとを八分木構造で保持するデータであるが、簡略化可能であるか否かの判定のために用いられたデータも含む。このデータは、例えば、簡略化後の頂点の候補として算出された頂点(仮の頂点と呼ぶ。)のデータ、および、簡略化前の頂点と当該仮の頂点との間の誤差を示す上述の指標のデータを含む。例えば、ゲームシステム1は、仮の頂点のうち、上記指標が所定の閾値(この閾値は、上記許容値よりも大きいものとする)以下である頂点を、判定用メッシュの生成に用いるようにしてもよい。これによれば、判定用メッシュの頂点数を表示用メッシュの頂点数よりも少なくすることができる。判定用メッシュの頂点数を表示用メッシュの頂点数よりも少なくすることで、コリジョン判定による処理負荷を軽減できる。また、表示用メッシュの頂点数を過度に減らすことがないのでボクセルオブジェクトの見た目を詳細に表現できる。
【0136】
なお、他の実施形態においては、表示用メッシュおよび判定用メッシュは、同じデータに基づいて生成されてもよいし、異なるデータに基づいて生成されてもよい。また、表示用メッシュと判定用メッシュは同じ形状であってもよい(ただし、この場合でも両者に設定されるマテリアルは異なっていてもよい)。また、判定用メッシュの頂点数は、表示用メッシュの頂点数と同じであってもよいし、表示用メッシュの頂点数よりも多くてもよい。
【0137】
[2-6-1.表示用メッシュのマテリアルの決定]
次に、表示用メッシュのマテリアルおよび見た目を決定する方法の一例について説明する。本実施形態においては、ゲームシステム1は、表示用メッシュを構成する多角形毎にマテリアルを決定する。詳細は後述するが、本実施形態においては、上記多角形に対応するポリゴンは、2種類までのマテリアルに対応する2種類までのテクスチャを用いて描画される。そのため、ゲームシステム1は、メッシュを構成する各多角形について、最終的には1つの多角形について設定されるマテリアルが2種類以下となるようにする。他の実施形態においては、3種類以上のマテリアルが設定されるようにしてもよい。たとえば、ボクセルのマテリアル、頂点のマテリアルがそれぞれ3種類以上の実施形態において、同数のマテリアルが多角形に設定されるようにしてもよい。
【0138】
本実施形態においては、表示用メッシュを構成する多角形として四角形が形成されることがある(
図19参照)。表示用メッシュのマテリアルを決定する際、ゲームシステム1はまず、表示用メッシュを構成する四角形を、一定条件下で2つの三角形に分割する。以下、
図20を参照して、四角形を2つの三角形に分割する処理について説明する。
【0139】
図20は、メッシュを構成する四角形が2つの三角形に分割される一例を示す図である。
図20に示す(a)は、メッシュの頂点の一部である頂点231~234によって形成される分割前の四角形を示しており、
図20に示す(b)は、当該四角形を分割した2つの三角形を示している。
図20に示す例においては、各頂点231~234のマテリアルとしては、それぞれ、草、土、砂と草、および、草が設定されているものとする。
【0140】
本実施形態においては、ゲームシステム1は、四角形の各頂点にそれぞれ設定されるマテリアルの種類が合計で3種類以上である場合、分割条件が満たされるか否かを判定する。本実施形態においては、分割条件は、四角形を2つの三角形に分割することで、三角形の各頂点に設定されるマテリアルの種類を合計で2種類以下にできることである。分割条件が満たされる場合、ゲームシステム1は、各頂点に設定されるマテリアルの種類が合計で2種類以下となる2つの三角形に四角形を分割する。
図20に示す例においては、四角形を形成する各頂点231~234に設定されるマテリアルは、草、土、および、砂の3種類である。また、上記四角形を、頂点231,232,234で形成される三角形と、頂点231,233,234で形成される三角形とに分割すると、前者の三角形の各頂点に設定されるマテリアルは砂と草の2種類となり、後者の三角形の各頂点に設定されるマテリアルは草と土の2種類となる(
図20の(b)参照)。したがって、上記四角形については分割条件が満たされるので、ゲームシステム1は当該四角形を2つの三角形に分割する。
【0141】
なお、四角形を2つの三角形に分割する方法は2通りであるので、ゲームシステム1は、2通りのうち少なくともいずれかの方法で分割された三角形に関して分割条件が満たされる場合、分割条件が満たされる方法で上記の分割を行う。一方、2通りのいずれの方法で分割された三角形についても分割条件が満たされない場合、いずれかの方法で分割を行う。
【0142】
上記のように分割を行うことで、ゲームシステム1は、四角形の各頂点に設定される3種類以上のマテリアルの情報をなるべく欠落させないように、各頂点に設定されるマテリアルが2種類以下となる2つの三角形を生成することができる。ここで、上述のように、メッシュを構成する各ポリゴンは2種類までのテクスチャを用いて描画される。したがって、ゲームシステム1は、上記の分割を行うことで、各頂点に設定されたマテリアルの情報をなるべく欠落させないように、2種類のテクスチャを用いてポリゴンを描画することができる。
【0143】
本実施形態においては、ゲームシステム1は、上記の分割が行われた後の多角形に対応するポリゴンを設定する。すなわち、上記の分割が行われた後の多角形の頂点が、表示用メッシュのポリゴンの頂点となる。
【0144】
本実施形態においては、ゲームシステム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のマテリアル比率と設定されるものとする。
【0145】
ポリゴンの各頂点に設定されるマテリアルが合計で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)参照)。
【0146】
なお、表示用メッシュのポリゴンのマテリアルを選択する具体的な方法は任意である。他の実施形態においては、表示用メッシュのポリゴンのマテリアルは、当該ポリゴンの頂点に設定される情報に基づく任意の方法で選択されてよい。例えば、表示用メッシュのポリゴンのマテリアルは、1つの頂点において最も比率が大きいマテリアルを頂点毎に特定し、各頂点について特定された数が最も多いマテリアルが、当該ポリゴンのマテリアルとして選択されてもよい。
【0147】
本実施形態においては、上記のように選択されたポリゴンのマテリアルは、ポリゴンの各頂点に設定されるマテリアルによって示される。すなわち、ポリゴンのマテリアルが選択された場合、ゲームシステム1は、当該ポリゴンの各頂点に設定されているマテリアル(すなわち、頂点のデータに含まれるマテリアルID)を、選択されたマテリアルとなるように変更する。
図21に示す例においては、頂点241および243については、ポリゴンのマテリアルの選択前においては、それぞれ、草と土、砂と土のマテリアルが設定されている(
図21の(a)参照)。上記のようにしてポリゴンのマテリアルとして草と砂のマテリアルが選択された場合、各頂点241および243に設定されるマテリアルは草と砂に変更される(
図21の(b)参照)。なお、頂点242については、選択前に設定されているマテリアルが、選択されたポリゴンのマテリアルと同じであるので、マテリアルの変更は行われない。上記のように、ポリゴンのマテリアルとして2種類のマテリアルが選択される場合、当該ポリゴンの各頂点に設定されている3種類目以降のマテリアルの情報は消去されることとなる。
【0148】
また、ゲームシステム1は、頂点に設定されるマテリアルの変更に応じて、当該頂点に設定されるマテリアルの比率を変更する。例えば、頂点241については、第1のマテリアルが草であり、第2のマテリアルが土である内容から、第1のマテリアルが草であり、第2のマテリアルが砂である内容へと変更される。ここで、砂のマテリアルの割合は0であるので、第1のマテリアル:第2のマテリアル=1:0のマテリアル比率とされる。このように、上記の変更は、ポリゴンのマテリアルを当該ポリゴンの各頂点のマテリアルによって表現するために、各頂点のマテリアルを形式的に変更するものである。
【0149】
上記によれば、1つのポリゴンの各頂点に設定されるマテリアルが、後述する描画に用いるテクスチャに対応するマテリアルのみとなるので、テクスチャを用いた描画処理を実行しやすくすることができる。
【0150】
なお、上記の変更によって、ある頂点についてマテリアルが全て変更される(つまり、変更前のマテリアルと変更後のマテリアルとが1つも一致しない)場合もあり得る。このような場合とは、例えば、変更前の頂点に設定されていたマテリアルが土であり、ポリゴンのマテリアルとして選択されたマテリアルが草と砂であるような場合である。このような場合には、当該頂点におけるマテリアルの比率は、当該ポリゴンの他の頂点におけるマテリアルの比率に基づいて設定されてもよい。例えば、上記の例において、三角形のポリゴンの他の頂点のうち1つの頂点に設定される第1のマテリアルが草であって草:砂=1:0のマテリアル比率、もう1つの頂点に設定されるマテリアルが砂であって砂:草=1:0のマテリアル比率の場合、当該頂点におけるマテリアル比率は草:砂=0.5:0.5に設定されてもよい。また、ゲームシステム1は、当該頂点と他の頂点との距離を考慮して(例えば、距離が近いほど大きくなる重み値に基づいて)、当該頂点におけるマテリアルの比率を決定してもよい。
【0151】
以上のように、本実施形態においては、ゲームシステム1は、ポリゴン毎に、当該ポリゴンに含まれる頂点に設定されたマテリアルID(すなわち、ポリゴンに対応する多角形の頂点に設定されるマテリアルID)のうち、所定個数(ここでは、2個)までのマテリアルIDを選択させて当該ポリゴンのマテリアルIDとして決定する。これによれば、ゲームシステム1は、頂点に設定されるマテリアルをポリゴンの見た目に反映しつつ、用いられるテクスチャの数を抑えて描画処理を行うことができる。
【0152】
なお、本実施形態においては、ゲームシステム1は、ポリゴンを構成する全ての頂点のマテリアルに関して、当該マテリアルの数が上記所定個数以下の場合には、当該マテリアルを当該ポリゴンのマテリアルに決定し、当該マテリアルが上記所定個数を超える場合には、それぞれの頂点の優先度パラメータに基づいて(具体的には、上述の評価値に基づいて算出される上記判定値に基づいて)優先度の高い所定個数のマテリアルを選択して当該ポリゴンのマテリアルに決定する。これによって、各頂点について合計で所定個数を超えるマテリアルが設定されている場合でも、ポリゴンのマテリアルを、優先度を考慮した所定個数以下のマテリアルとすることができる。
【0153】
上記のように、本実施形態においては、1つのポリゴンの各頂点に設定される第1および第2のマテリアルは、当該ポリゴンに設定される2種類のマテリアルとなるように変更される。ここで、このような変更を行う場合、隣接する2つのポリゴンで共有される頂点については、設定される第1および第2のマテリアルに齟齬が生じる可能性がある。
【0154】
図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については、設定すべきマテリアルに齟齬が生じる。
【0155】
そこで、本実施形態においては、2つのポリゴンで共有される頂点に設定すべきマテリアルに齟齬が生じる場合、ゲームシステム1は、当該頂点に関して、同じ位置にもう1つ頂点を追加する。
図22の(b)は、頂点231について頂点231'が追加され、頂点234について頂点234'が追加された状態の一例を示す図である。
図22の例においては、ゲームシステム1は、頂点231および234については、第1および第2のマテリアルを、第1のポリゴンのマテリアルに応じて草および砂として設定する。また、頂点231'および234'については、第1および第2のマテリアルを、第2のポリゴンのマテリアルに応じて草および土として設定する。このように、2つのポリゴンで共有される頂点として形式的に2つの頂点を設定する(すなわち、位置が同じでマテリアルが異なる2つの頂点データを生成する)ことで、頂点に設定されるマテリアルに齟齬が生じることを抑制することができる。
【0156】
ゲームシステム1は、以上のようにして頂点およびマテリアルが決定されたポリゴンからなる表示用メッシュを生成する。また、ゲームシステム1は、各頂点に設定されるマテリアルの情報(すなわち、第1のマテリアルおよび第2のマテリアル)に基づいてポリゴンの描画を行うことで、ボクセルオブジェクトの描画を行う。
【0157】
図23は、ポリゴンにテクスチャを適用する一例を示す図である。
図23には、
図21に示す各頂点241~243によって形成される三角形のポリゴンが示されている。なお、各頂点241~243に設定されるマテリアルは、
図21の(b)に示したものとなっている。
【0158】
ポリゴンの頂点の位置については、当該頂点に設定される第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のブレンド率でブレンドして描画が行われる。
【0159】
また、ポリゴンの頂点以外の位置については、ゲームシステム1は、各頂点におけるブレンド率を補間することでブレンド率を決定する。そして、各頂点に設定される2つのマテリアルのテクスチャを、補間されたブレンド率に基づいてブレンドするマッピングによって描画が行われる。なお、補間の具体的な方法は任意である。一例としては、頂点間のブレンド率を線形補間する。
図23においては、草のマテリアルのテクスチャが適用される比率が高い位置を白色で示し、砂のマテリアルのテクスチャが適用される比率が高い位置を黒色で示している。
図23に示す例では、頂点241では草のテクスチャが適用され、頂点243に向かうにつれて砂のテクスチャのブレンド比が高くなり、頂点242の位置では草と砂のブレンド率が1:1となり、頂点243の位置では砂のテクスチャのみが適用される。このように、ポリゴンに設定される(すなわち、ポリゴンの各頂点に設定される)2つのテクスチャを、マテリアルの比率に応じたブレンド率でブレンドして描画することで、表示用メッシュにおいて、異なるマテリアル同士の境界における見た目を自然なものとすることができる。これによって、複数種類のマテリアルが設定される表示用メッシュの見た目を自然なものとすることができる。
【0160】
[2-6-2.判定用メッシュのマテリアルの決定]
次に、判定用メッシュのマテリアルを決定する方法の一例について説明する。詳細は後述するが、本実施形態においては、判定用メッシュを用いてボクセルオブジェクトのコリジョン判定が行われ、コリジョンが判定されたボクセルオブジェクトのマテリアルに応じた処理が実行されることがある。そのため、本実施形態においては、判定用メッシュについてもマテリアルが決定される。
【0161】
本実施形態においては、ゲームシステム1は、判定用メッシュを構成する各多角形のポリゴンについて、1つのポリゴンについて設定されるマテリアルが1種類となるようにする。具体的には、ゲームシステム1は、判定用メッシュのポリゴンに設定されるマテリアルを、当該ポリゴンの頂点に設定されるマテリアルの情報(すなわち、第1および第2のマテリアルと、マテリアルの比率の情報)に基づいて決定する。
【0162】
図24は、判定用メッシュを構成するポリゴンのマテリアルを決定する方法の一例を示す図である。
図24は、
図21に示す各頂点241~243で形成される三角形のポリゴンについてマテリアルを決定する例を示している。なお、各頂点241~243に設定されるマテリアルは、
図21の(a)に示したものとなっている。
【0163】
ポリゴンのマテリアルを決定する際、ゲームシステム1は、ポリゴンの各頂点に設定されるマテリアル毎に判定値を算出する。本実施形態においては、上記判定値の算出方法は、表示用メッシュの多角形に設定されるマテリアルの選択に用いられた判定値の算出方法と同じである。なお、判定値の具体的な算出方法は任意である。他の実施形態においては、上記判定値は、判定用メッシュのポリゴンの頂点に設定される情報に基づく任意の方法で算出されてよい。
【0164】
図24に示す例においては、マテリアル毎の判定値は、上述した
図21に示す場合と同様に、草のマテリアルの判定値は1.3となり、砂のマテリアルの判定値は1.2となり、土のマテリアルの判定値は0.5となる。したがって、
図24に示すポリゴンのマテリアルとしては、草のマテリアルが選択される。
【0165】
以上のように、本実施形態においては、ゲームシステム1は、ポリゴン毎に、当該ポリゴンに含まれる頂点に設定されたマテリアルID(すなわち、ポリゴンに対応する多角形の頂点に設定されるマテリアルID)のうち、所定個数(ここでは、1個)までのマテリアルIDを選択させて当該ポリゴンのマテリアルIDとして決定する。これによれば、ゲームシステム1は、判定用メッシュに設定されるマテリアルの数を所定個数以下に抑えることができる。これによって、判定用メッシュを用いたコリジョン判定の結果に応じて行われる、マテリアルの種類に応じた処理が煩雑になることを抑制することができる。なお、判定用メッシュのポリゴンのマテリアルを決定する方法は任意であり、上記に限らない。他の実施形態においては、判定用メッシュのポリゴンのマテリアルは、当該ポリゴンの頂点に設定される情報に基づく任意の方法で決定されてよい。
【0166】
また、本実施形態においては、表示用メッシュのポリゴンについては2種類までのマテリアルが設定されるのに対して、判定用メッシュのポリゴンについては1種類のマテリアルが設定される。これによれば、表示用メッシュのポリゴンについては2種類のテクスチャを用いて自然な見た目とすることができるとともに、判定用メッシュについては、当該判定用メッシュを用いたコリジョン判定の結果に応じて行われる処理が煩雑になることを抑制することができる。なお、他の実施形態においては、表示用メッシュおよび判定用メッシュのポリゴンに設定可能なマテリアルの種類は任意である。表示用メッシュのポリゴンに設定可能なマテリアルの数と、判定用メッシュのポリゴンに設定可能なマテリアルの数とは、共に複数であってもよいし、同じであってもよいし、異なっていてもよい。
【0167】
なお、本実施形態においては、1つのボクセルに設定されるマテリアルの種類は2つまでであり、表示用メッシュにおける1つのポリゴンに設定されるマテリアルの種類は2つまでである。これによれば、ボクセルデータのデータ量を抑えつつ、表示用メッシュのマテリアルに対して、ボクセルデータにおいて設定されるマテリアルの情報を反映させることができる。また、本実施形態においてはさらに、ボクセルデータに基づいて設定される頂点に設定されるマテリアルの種類も2つまでである(
図16参照)。これによれば、ボクセルデータから表示用メッシュを得る処理の途中に生成される頂点についても2種類のマテリアルを設定できるので、当該処理の途中でマテリアルの情報が欠落することなく、ボクセルデータにおいて設定されるマテリアルの情報を表示用メッシュに対して反映させることができる。
【0168】
また、他の実施形態においては、ゲームシステム1は、ボクセルデータに基づいて設定される頂点に関して、表示用メッシュの生成に用いる頂点と、判定用メッシュの生成に用いる頂点とで異なるようにマテリアルを設定してもよい。例えば、ゲームシステム1は、表示用メッシュの生成に用いる頂点については上述のように2種類までのマテリアルを設定し、判定用メッシュの生成に用いる頂点については1種類のマテリアルを設定するようにしてもよい。そして、表示用メッシュのポリゴンのマテリアルについては、上記と同様に2種類のマテリアルを設定し、判定用メッシュのポリゴンのマテリアルとして、当該ポリゴンの各頂点にそれぞれ設定される1種類のマテリアルに基づいて1種類のマテリアルを設定してもよい。なお、判定用メッシュの生成に用いる頂点について1種類のマテリアルを設定する場合、各マテリアルについて算出される上述の判定値が最も大きいマテリアルを当該頂点のマテリアルに設定してもよい。上記によっても、本実施形態と同様に、表示用メッシュにおける1つのポリゴンに設定されるマテリアルの種類は2つまでとするとともに、判定用メッシュにおける1つのポリゴンに設定されるマテリアルの種類を1つとすることができる。そのため、ボクセルデータにおいて設定されるマテリアルの情報を表示用メッシュに対して反映させることができるとともに、判定用メッシュを用いたコリジョン判定の結果に応じて行われる処理が煩雑になることを抑制することができる。
【0169】
上記のように、本実施形態においては、1つのボクセルオブジェクトについて表示用メッシュと判定用メッシュとが設定され得る。ただし、ゲーム状況によっては、1つのボクセルオブジェクトについて表示用メッシュと判定用メッシュとの両方が同時に設定される必要はない(例えば、1フレームにおける処理において両方が設定される必要はない)。例えば、判定用メッシュは、ゲーム空間のうちで、コリジョン判定が行われる範囲において生成され、コリジョン判定が行われない範囲においては生成されなくてもよい。一例としては、ゲームシステム1は、プレイヤキャラクタを中心とした所定範囲内のボクセルオブジェクトについて判定用メッシュを生成し、当該所定範囲外のボクセルオブジェクトについては判定用メッシュを生成せず、表示用メッシュのみを生成するようにしてもよい。
【0170】
また、ゲームシステム1は、表示用メッシュについては、生成されたメッシュに関するデータをメモリに記憶しておき、当該メッシュが生成された後のフレームにおいては、更新が行われた範囲を除き、メッシュを生成する処理を再度実行せずに、当該データを用いるようにしてもよい。これによれば、表示用メッシュを生成するための処理負荷を軽減できる。また、判定用メッシュについては、生成されたメッシュに関するデータをメモリに記憶せず、必要に応じて(例えば、コリジョン判定を行う必要が生じる度に)逐次メッシュを生成するようにしてもよい。これによれば、メッシュの生成に用いられるメモリ領域を節約することができる。
【0171】
以上においては、ボクセルデータが初期状態から変更された場合に、変更後のボクセルデータに基づいて各メッシュ(すなわち、表示用メッシュおよび判定用メッシュ)を生成する方法について説明した。なお、上記の方法は、例えばゲームの開始時において、初期状態のボクセルデータに基づいて各メッシュを生成する場合にも用いることができる。ただし、初期状態のボクセルデータに基づく各メッシュは、ゲーム開始時に初期状態のボクセルデータに基づいて生成される必要はなく、ゲーム開始前に予め用意されていてもよい。
【0172】
[2-7.メッシュを用いた処理]
次に、ボクセルオブジェクトについて上記のようにして生成されるメッシュを用いた処理例について説明する。以下においては、地面や壁等の地形オブジェクトがボクセルオブジェクトであるものとし、プレイヤキャラクタがアクションを行い、コリジョン判定が行われた結果として、ゲーム内の作用が発生する場合の例について説明する。
【0173】
図25は、地形オブジェクト上をプレイヤキャラクタが移動する様子を表すゲーム画像の一例を示す図である。
図25に示す例においては、地面である地形オブジェクトの判定用メッシュのうち一部の領域251のポリゴンについてのマテリアルが「溶岩」に設定されている。なお、地形オブジェクトの判定用メッシュのうち領域251以外のポリゴンについてのマテリアルは「岩」に設定されている。
図25に示す例において、ゲームシステム1は、判定用メッシュを用いて地形オブジェクトとプレイヤキャラクタ201とのコリジョン判定を行う。すなわち、地形オブジェクトの判定用メッシュと、プレイヤキャラクタについて設定される判定領域(例えば、プレイヤキャラクタの位置に基づいて設定される、所定形状の領域)とが接触するか否かのコリジョン判定を行う。そして、マテリアルが溶岩であるポリゴンとプレイヤキャラクタ201とのコリジョンが判定された場合、ゲーム内の作用を発生させる処理として、プレイヤキャラクタ201の体力を減少させる処理を行う。また、上記の場合、プレイヤキャラクタ201に所定のリアクションを行わせる処理を行う。
【0174】
なお、本実施形態においては、上述のマテリアルデータに含まれる性質情報として、溶岩のマテリアルについて、接触したプレイヤキャラクタの体力を減少させる性質(例えば、温度が所定値以上であるという性質)が設定されているものとする。ゲームシステム1は、コリジョン判定によってコリジョンが判定された判定用メッシュ内のポリゴンに設定されたマテリアルに対応する性質情報に基づいたゲーム内作用(上記の例では、プレイヤキャラクタの体力減少)を発生させる。
【0175】
なお、マテリアルが岩であるポリゴンとプレイヤキャラクタ201とのコリジョンが判定された場合には、プレイヤキャラクタの体力を減少させる処理は実行されない。また、当該コリジョンに基づいて、プレイヤキャラクタ201は、当該ポリゴンの内側には進入できないように制御される。したがって、プレイヤキャラクタは、上記ポリゴンの上に立ったり、上を歩いたりすることができる。このように、本実施形態においては、マテリアルをポリゴン毎に設定することによって、ゲームシステム1は、他のオブジェクトがボクセルオブジェクトのどの部分に接触したかに応じて異なる処理を実行することができる。また、実行される処理の内容を、マテリアルの種類に応じたものとすることができる。なお、本実施形態においては、プレイヤキャラクタは地形オブジェクトを変化させる(例えば、変形させたり、マテリアルを変更したりする)を行うことができるので、例えば、地形オブジェクトのうち溶岩の部分を消去したり、溶岩を他のマテリアルに変更したりすることができる。そのため、プレイヤは、地形オブジェクトを変化させることで、溶岩に接触することによるプレイヤキャラクタの体力減少を回避することができる。
【0176】
なお、ボクセルオブジェクトと他のオブジェクトとのコリジョンが判定された場合に実行される処理の内容は任意である。例えば、上記他のオブジェクトがプレイヤキャラクタや敵キャラクタのような移動するオブジェクトである場合、上記処理は、当該オブジェクトの足音を出力したり、接触した場所にエフェクト(例えば、砂埃や水しぶきを表すエフェクト)を表示したりする処理であってもよい。このとき、ゲームシステム1は、ボクセルオブジェクトのうち接触した部分のポリゴンに設定されるマテリアルの種類に応じて、足音を異ならせたり、エフェクトを異ならせたりすることができる。
【0177】
図26は、プレイヤキャラクタが地形オブジェクトから破片オブジェクトを引き抜く様子を表すゲーム画像の一例を示す図である。
図26に示すように、本実施形態においては、プレイヤは、所定の操作入力によって、地形オブジェクト202を掴んでその一部を破片オブジェクト252として引き抜いて把持するアクション(「引き抜きアクション」と呼ぶ)をプレイヤキャラクタ201に行わせることができる。ゲームシステム1は、引き抜きアクションによって生じるゲーム内の作用として、地形オブジェクト202の一部を消去するとともに、破片オブジェクト252を発生させる。
【0178】
引き抜きアクションが行われる際、ゲームシステム1は具体的には次の処理を実行する。すなわち、プレイヤキャラクタに引き抜きアクションを行わせる操作入力がプレイヤによって行われた場合、ゲームシステム1は、プレイヤキャラクタに前方を掘って掴むようなアクションを行わせ、コリジョン判定を行う。そして、引き抜きアクションを行うプレイヤキャラクタと地形オブジェクトとのコリジョンが判定された場合、プレイヤキャラクタの位置および向きに基づいて更新範囲253を生成する。例えば、更新範囲253は、プレイヤキャラクタを基準とした所定方向(例えば、前方)に生成される。なお、更新範囲の形状および大きさは、プレイヤキャラクタのアクションの種類に応じたものとなるように予め決定されてもよい。また、ゲームシステム1は、更新範囲253に対応するボクセルについて密度を減少させる。そして、ボクセルの密度減少に応じたメッシュの更新によって、地形オブジェクト202は、更新範囲253内の部分が消去されるように変形される(
図26の(b)参照)。なお、本実施形態においては、更新範囲253に対応する各ボクセルについて密度を減少させるが、密度を減少させる対象となるボクセルは、更新範囲253に対応するボクセルのうち少なくとも一部のボクセルであってもよい。
【0179】
また、上記においては、引き抜きアクションによって更新範囲253に対応するボクセルオブジェクトが無条件に変形されるものとしたが、他の実施形態においては、ボクセルに設定されるダメージの量を条件として、更新範囲253に対応するボクセルオブジェクトの変形が行われてもよい。例えば、ゲームシステム1は、更新範囲253に対応するボクセルオブジェクトを無条件に変形させることに代えて、更新範囲253に対応するボクセルに設定されるダメージの量を増加させ、ダメージの量が所定値を超えたことに応じて当該ボクセルにおける密度を減少させるようにしてもよい。このとき、ダメージの増加量は、ボクセルオブジェクトに対して行われたアクションに応じて決定されてもよい。
【0180】
また、ゲームシステム1は、地形オブジェクト202のうちで消去された部分を表す破片オブジェクト252を生成する。すなわち、ゲームシステム1は、上記引き抜きアクションに基づいて、破片オブジェクト252をプレイヤキャラクタに持たせた状態で生成させる。破片オブジェクト252は、地形オブジェクト202のうちで消去された部分に応じた形状となるように生成されてもよいし、予め定められた形状であってもよい。破片オブジェクト252は、ボクセルオブジェクトであってもよいし、ボクセルオブジェクトでなくてもよい。破片オブジェクトがボクセルオブジェクトである場合は、地形オブジェクト202等に対応するボクセルのボクセル空間とは異なるボクセル空間が破片オブジェクト252のために定義される。
【0181】
ゲームシステム1は、上記破片オブジェクト252のマテリアルを決定する。破片オブジェクト252のマテリアルは、地形オブジェクト202の判定用メッシュのうち、更新範囲253と接触する判定用メッシュ内のポリゴンに設定されるマテリアルに基づいて決定される。破片オブジェクト252のマテリアルは、更新範囲253と接触する判定用メッシュ内のポリゴンに設定されるマテリアルのいずれか1つと同じになるように決定される。これによれば、破片オブジェクト252のマテリアルを、地形オブジェクトのうち消去された部分のマテリアルと同じにすることができる。上記の説明から明らかなように、破片オブジェクト252は実際には地形オブジェクトの一部ではない。しかし、地形オブジェクトの一部の消去とともに生成され、地形オブジェクトの消去された部分のマテリアルが破片オブジェクト252に引き継がれることで、プレイヤキャラクタ201が引き抜きアクションによって地形オブジェクト202の一部を取り出したような印象をプレイヤに与えることができる。
【0182】
本実施形態においては、用意されるマテリアルの各種類にはそれぞれ優先順位が設定され、ゲームシステム1は、更新範囲253内の判定用メッシュの各ポリゴンに設定されるマテリアルのうち優先順位が最も高いマテリアルを、破片オブジェクト252のマテリアルとして決定する。ここで、例えば、更新範囲253内の判定用メッシュは、マテリアルが岩のポリゴンと、マテリアルが溶岩のポリゴンとを含む場合を考える。このような場合に、仮に破片オブジェクト252のマテリアルが溶岩に設定されると、引き抜きアクションによってプレイヤキャラクタが破片オブジェクト252を把持したことでプレイヤキャラクタの体力が減少してしまう(なお、
図25でも説明したように、溶岩のマテリアルについては、接触したことでプレイヤキャラクタの体力を減少させる性質が設定されているものとする)といった不都合が生じるおそれがある。また、上記のように、更新範囲253内の判定用メッシュが、異なる種類のマテリアルが設定されたポリゴンを含む場合、破片オブジェクト252のマテリアルが何になるかはプレイヤにとって予想しにくいことも考えられ、プレイヤの意に反して上記の不都合が生じることも考えられる。これに対して、本実施形態においては、破片オブジェクトのマテリアルとして設定されるマテリアルに優先順位を設定しておくことで、上記の不都合が生じる可能性を低減することができる。
【0183】
図27は、プレイヤキャラクタが地形オブジェクトを破壊することで破片オブジェクトが生成される様子を表すゲーム画像の一例を示す図である。
図27に示すように、本実施形態においては、プレイヤは、所定の操作入力によって、パンチアクションをプレイヤキャラクタ201に行わせることができる。また、ゲームシステム1は、パンチアクションによって生じるゲーム内の作用として、上記のパンチアクションの場合と同様、地形オブジェクト202の一部を消去するとともに、破片オブジェクト255を発生させる。具体的には、一部が消去されたように地形オブジェクト202を変形させる。なお、パンチアクションが行われた場合は、上述の引き抜きアクションとは異なり、パンチアクション後において、破片オブジェクト255はプレイヤキャラクタ201によって把持されず、パンチアクションが行われた位置の周囲に配置される(
図27の(b)参照)。なお、地形オブジェクト202の破壊に応じた当該破片は、発生しない場合があってもよい。
【0184】
パンチアクションが行われる際、ゲームシステム1は具体的には次の処理を実行する。すなわち、プレイヤキャラクタにパンチアクションを行わせる操作入力がプレイヤによって行われた場合、ゲームシステム1は、プレイヤキャラクタに前方に向かってパンチを出すアクションを行わせ、コリジョン判定を行う。そして、パンチアクションを行うプレイヤキャラクタと地形オブジェクトとのコリジョンが判定された場合、プレイヤキャラクタの位置および向きに基づいて更新範囲254を生成する。例えば、更新範囲254は、プレイヤキャラクタを基準とした所定方向(例えば、前方)に生成される。なお、パンチアクションによる更新範囲254の位置、形状、および大きさは、引き抜きアクションによる更新範囲253と同じであってもよいし、異なっていてもよい。そして、ゲームシステム1は、更新範囲254に対応するボクセルの密度を減少させる。これによって、引き抜きアクションと同様にパンチアクションによっても、地形オブジェクト202は、更新範囲254内の部分が消去されるように変形される(
図27の(b)参照)。なお、パンチアクションについても引き抜きアクションと同様、ゲームシステム1は、更新範囲254に対応するボクセルオブジェクトを無条件に変形することに代えて、更新範囲254内のボクセルに設定されるダメージの量をパンチアクションに応じて増加させ、ダメージの量が所定値を超えたことに応じて当該ボクセルにおける密度を減少させるようにしてもよい。また、パンチアクションによって密度を減少させる対象となるボクセルは、更新範囲254に対応するボクセルのうち少なくとも一部のボクセルであってもよい。
【0185】
また、ゲームシステム1は、地形オブジェクト202のうちで消去された部分に対応する破片オブジェクト255を生成する。すなわち、ゲームシステム1は、上記パンチアクションに基づいて、破片オブジェクト255をプレイヤキャラクタに持たせていない状態で(例えば、パンチアクションが行われた位置の周囲に配置された状態で)生成させる。破片オブジェクト255は、地形オブジェクト202のうちで消去された部分に応じた形状となるように生成されてもよいし、予め定められた形状であってもよい。破片オブジェクト255は、ボクセルオブジェクトであってもよいし、ボクセルオブジェクトでなくてもよい。
【0186】
ゲームシステム1は、上記破片オブジェクト255のマテリアルを決定する。破片オブジェクト255のマテリアルは、地形オブジェクト202の判定用メッシュのうち、更新範囲254と接触する判定用メッシュ内のポリゴンに設定されるマテリアルに基づいて決定される。破片オブジェクト255のマテリアルは、更新範囲254と接触する判定用メッシュ内のポリゴンに設定されるマテリアルのいずれか1つと同じになるように決定される。これによれば、破片オブジェクト255のマテリアルを、地形オブジェクトのうち消去された部分のマテリアルと同じにすることができる。また、地形オブジェクトの一部の消去とともに破片オブジェクト255が生成され、地形オブジェクトの消去された部分のマテリアルが破片オブジェクト255に引き継がれることで、プレイヤキャラクタによるパンチアクションによって破壊された地形オブジェクトの一部が破片オブジェクトとして発生したような印象をプレイヤに与えることができる。
【0187】
本実施形態においては、破片オブジェクト255のマテリアルは、更新範囲254と接触する判定用メッシュ内のポリゴンに設定されるマテリアルのうち、ボクセルにおける密度が減少した度合いが最も大きいマテリアルに決定される。これによれば、地形オブジェクトのうちでパンチアクションによって消去された部分のマテリアル構成をより正確に反映した破片オブジェクトを生成することができる。
【0188】
なお、上記の引き抜きアクションまたはパンチアクションによって生成される破片オブジェクトのマテリアルを決定する方法は任意である。例えば、破片オブジェクトのマテリアルを決定する方法は、引き抜きアクションとパンチアクションとで同じであってもよい。また例えば、更新範囲内の判定用メッシュの各ポリゴンのうちに設定されるマテリアルのうち、最も多くのポリゴンに設定されるマテリアルが、破片オブジェクトのマテリアルとして決定されてもよい。また例えば、更新範囲内の判定用メッシュの各ポリゴンのうち、所定の条件を満たすポリゴン(例えば、引き抜きアクションまたはパンチアクションを行うプレイヤキャラクタの手に接触する位置のポリゴン)に設定されるマテリアルが、破片オブジェクトのマテリアルとして決定されてもよい。また、他の実施形態においては、破片オブジェクトには複数種類のマテリアルが設定されてもよい。
【0189】
本実施形態においては、プレイヤは、上記のようにして生成される破片オブジェクト252または255を投げるアクション(以下、「投げアクション」と呼ぶ)をプレイヤキャラクタに行わせることができる。なお、プレイヤは、所定の操作入力によって、パンチアクションに応じて生成されて地面に配置されている破片オブジェクトを持つアクションをプレイヤキャラクタに行わせることができる。上記引き抜きアクションによって、または、上記パンチアクション後の破片オブジェクトを持つアクションによって、プレイヤキャラクタが破片オブジェクトを持っている状態となる。この状態において、ゲームシステム1は、プレイヤによる操作入力に応じた投げアクションとして、プレイヤキャラクタに、持っている破片オブジェクトを所定方向に放つアクションを行わせる。
【0190】
図28は、プレイヤキャラクタによる投げアクションが可能な状態で、投げるための構えをした状態で投げる方向を決定する場面におけるゲーム画像の一例を示す図である。
図28に示すようにプレイヤキャラクタ201が破片オブジェクト261を持った状態において、プレイヤキャラクタ201は投げアクションを行うことができる。この状態においては、
図28に示すように、ゲームシステム1は、ゲーム内の作用を発生させる処理として、ゲーム空間を示す画像に重ねて、照準画像262およびオブジェクト情報画像263を表示する。
【0191】
照準画像262は、投げアクションによって破片オブジェクトが放たれる方向(エイム方向とも言う)を示す。すなわち、投げアクションを行うための操作入力をプレイヤが行ったことに応じて、ゲームシステム1は、プレイヤキャラクタ201の位置から照準画像262が示す仮想空間内の位置に向かって破片オブジェクト261を移動させる。なお、エイム方向は、プレイヤによる操作入力に基づいて制御される。例えば、ゲームシステム1は、仮想カメラの向きを変更する操作入力に応じてエイム方向を変更してもよい。具体的には、ゲームシステム1は、プレイヤキャラクタを視野範囲に含む状態を維持しつつプレイヤキャラクタの周りを回転移動するように操作入力に応じて仮想カメラを制御し、仮想カメラの視線方向に応じた方向となるようにエイム方向を制御してもよい。このとき、プレイヤキャラクタの位置からエイム方向に延びる直線と地形オブジェクト253とが交差する位置を指し示す照準画像262が表示される。具体的には、ゲームシステム1は、エイム方向(すなわち、エイム方向に延びる上記直線)と、地形オブジェクト253の判定用メッシュとのコリジョン判定を行い、コリジョンが判定される場合、照準画像262を表示する。照準画像262は、判定用メッシュのうち、エイム方向に延びる上記直線と交差するポリゴンの位置を指し示すように配置される。
【0192】
上記の照準画像262によって、プレイヤキャラクタに投げアクションを行わせた場合に破片オブジェクトがボクセルオブジェクトに接触する位置をプレイヤに提示することができる。これによって、投げアクションの操作をプレイヤにとって行いやすくすることができる。なお、エイム方向および照準画像262の具体的な制御方法は任意であり、従来における方法が用いられてもよい。例えば、他の実施形態においては、照準画像262が表示される状態においては、プレイヤキャラクタが表示されない一人称視点のゲーム画像において照準画像262が表示されてもよい。
【0193】
プレイヤキャラクタが破片オブジェクトを投げる構えをした状態で、プレイヤによる所定の操作入力に応じて、上記エイム方向へ破片オブジェクトを投げる投げアクションが行われる。
【0194】
オブジェクト情報画像263は、照準画像262が指し示す位置における地形オブジェクト253に関する情報を示す。本実施形態においては、オブジェクト情報画像263は、照準画像262が指し示す位置における判定用メッシュのポリゴンに設定されるマテリアルの名称(
図28に示す例においては、岩)を示す。これによって、投げアクションによって放たれた破片オブジェクトが接触するボクセルオブジェクトのマテリアルをプレイヤに提示することができる。また、オブジェクト情報画像263は、当該マテリアルの性質に関する情報(ここでは、硬さ)を示す。これによって、投げアクションによって放たれた破片オブジェクトが接触するボクセルオブジェクトの性質をプレイヤに提示することができる。なお、オブジェクト情報画像263が示す内容は任意である。例えば、他の実施形態においては、オブジェクト情報画像263は、照準画像262が指し示す位置におけるポリゴンに設定されるマテリアルに関する任意の性質を示すものでもよいし、当該ポリゴンの状態(例えば、上述のダメージの量)を示すものでもよい。本実施形態においては、判定用メッシュのポリゴンのマテリアルは1種類なので、照準位置に対応するマテリアルは1つに特定される。したがって、マテリアルに関する情報を表示するのに適している。
【0195】
本実施形態においては、投げアクションによって放たれた破片オブジェクトが、コリジョン判定の結果、ボクセルオブジェクトに接触したと判定されたことに応じて、ゲームシステム1は、ゲーム内の作用として、当該ボクセルオブジェクトに変更を加える。
図29は、
図28に示す地形オブジェクト253に対して破片オブジェクト261が接触したことによって地形オブジェクト253に変更が加えられた後のゲーム画像の一例を示す図である。
図29に示す例においては、破片オブジェクトと地形オブジェクト253との接触位置に当該破片オブジェクトが付けられたような形状となるように、地形オブジェクト253が変形される。具体的には、ゲームシステム1は、上記接触位置を含むように更新範囲を生成し、当該更新範囲におけるボクセルの密度を増加させることで、上記の形状となるように地形オブジェクト253を変形させる。例えば、上記更新範囲は、破片オブジェクトの形状に対応する形状に設定され、更新範囲内が地形オブジェクト253内となるように地形オブジェクト253が変形されてもよい。以上によって、
図29に示す例においては、変形前の地形オブジェクトに対して追加部分265が加えられた形状となる。なお、
図29に示す例においては、破片オブジェクトは、地形オブジェクト253に接触したことに応じて消去される。
【0196】
また、上記追加部分265におけるポリゴンのマテリアルは、地形オブジェクト253に接触した破片オブジェクトのマテリアルに基づいて決定される。具体的には、ゲームシステム1は、上記更新範囲内のボクセルに対し、当該ボクセルのマテリアルを当該破片オブジェクトのマテリアルとなるように設定する。そして、ボクセルのマテリアルに基づいて表示用メッシュと判定用メッシュのマテリアルが決定される。これによれば、付けられた追加部分265の見た目を破片オブジェクトの見た目と同じにできるので、(実際には、上記のように地形オブジェクト253に変形が加えられたのであるが)破片オブジェクトが地形オブジェクト253に付いたような印象をプレイヤにより与えやすくなる。
【0197】
図29に示す例においては、破片オブジェクトがボクセルオブジェクトに接触したことに応じてボクセルオブジェクトに加えられる変更は、ボクセルオブジェクトに追加部分を加える変形であったが、ボクセルオブジェクトに加えられる変更はこれに限らない。上記の変更は、ボクセルの密度を変更させるものであってもよいし、マテリアルを変更させるものであってもよい。例えば、破片オブジェクトが爆発する性質を有する場合、破片オブジェクトはボクセルオブジェクトに接触したことに応じて爆発してもよく、このとき、ボクセルオブジェクトの一部が消去されたように当該ボクセルオブジェクトを変形させてもよい。具体的には、ゲームシステム1は、接触位置を含むように更新範囲を設定し、当該更新範囲内のボクセルの密度を減少させる。また例えば、ボクセルオブジェクトのマテリアルが溶岩であり、破片オブジェクトのマテリアルが氷である場合、破片オブジェクトが接触したことに応じてボクセルオブジェクトのマテリアルが変更されてもよい。具体的には、ゲームシステム1は、接触位置を含む更新範囲を設定し、当該更新範囲内のボクセルのマテリアルのうち、溶岩となっているマテリアルを黒曜石や岩に変更してもよい。これによれば、溶岩のオブジェクトが氷のオブジェクトによって冷やされて黒曜石や岩になる状況を表現することができる。
【0198】
上記の変更の内容は、ボクセルオブジェクトのマテリアルに基づいて、破片オブジェクトのマテリアルに基づいて、あるいは、ボクセルオブジェクトのマテリアルと破片オブジェクトのマテリアルとの組み合わせに基づいて、決定されてもよい。これによれば、ボクセルオブジェクトに対して種々の変化を生じさせることができる。
【0199】
また、ゲームシステム1は、上記の変更を行うか否かを、ボクセルオブジェクトのマテリアルに基づいて、破片オブジェクトのマテリアルに基づいて、あるいは、ボクセルオブジェクトのマテリアルと破片オブジェクトのマテリアルとの組み合わせに基づいて決定してもよい。例えば、ゲームシステム1は、マテリアルが岩であるボクセルオブジェクトに対して、マテリアルが岩である破片オブジェクトが接触する場合には、
図29に示したような変更を行う一方、マテリアルが鉄であるボクセルオブジェクトに対して、マテリアルが岩である破片オブジェクトが接触する場合には、
図29に示したような変更を行わなくてもよい。
【0200】
なお、本実施形態においては、上述のように判定用メッシュのポリゴンおよび破片オブジェクトについては1種類のマテリアルが設定される。ここで、仮に判定用メッシュのポリゴンおよび破片オブジェクトの少なくともいずれかについて複数種類のマテリアルが設定されるとすれば、判定用メッシュと破片オブジェクトとが接触した場合に両者のマテリアルの種類に応じてボクセルオブジェクトに加えられる変更の内容を決定することが難しくなる。これに対して、本実施形態においては、コリジョン判定によって接触していると判定された判定用メッシュと破片オブジェクトとのマテリアルはそれぞれ1種類であるので、ボクセルオブジェクトに加えられる変更の内容を決定することが容易になる。
【0201】
[2-8.ボクセルオブジェクトの変形に応じたイベント処理]
本実施形態においては、ゲームシステム1は、ボクセルオブジェクトの変形に応じてゲームのイベントを発生させる。なお、イベントの内容は任意である。以下においては、ボクセルオブジェクトの変形に応じたイベントの例として、プレイヤキャラクタが投げる弾の数が増加されるイベントおよびプレイヤキャラクタが弾を投げるイベントが行われる例、地形オブジェクト中にアイテムが配置されるイベントが行われる例、ならびに、ゲームにおけるアイテムが付与されるイベントが行われる例について説明する。
【0202】
[2-8-1.第1例(弾の数が増加されるイベント、および、プレイヤキャラクタが弾を投げるイベントが行われる例)]
第1例として、
図30~
図36を参照して、ボクセルオブジェクトの変形に応じて、プレイヤキャラクタが投げる弾の数が増加されるイベントと、プレイヤキャラクタが弾を投げるイベントが行われる例について説明する。ここで、本実施形態においては、プレイヤキャラクタは、プレイヤによる所定の操作入力に応じて、ボクセルオブジェクトを吸い込むアクション(厳密には、ボクセルオブジェクトを吸い込んでいるように見えるアクション)を行うことができる。このアクションは、地形オブジェクト等のボクセルオブジェクトを、その一部または全部を消去させるように変形させるとともに、プレイヤキャラクタが投げることができる弾の数が一定条件下で増加されるアクションである。このように、ボクセルオブジェクトを変形させるアクションによって、プレイヤキャラクタに他のアクションを可能とさせることで、ボクセルオブジェクトを変形させる動機づけをプレイヤに与えることができる。なお、本実施形態においては、上記のアクションによって、プレイヤキャラクタがボクセルオブジェクトを吸い込んで弾を作っているような印象をプレイヤに抱かせることができる。そのため、以下では、上記のアクションを吸い込みアクションと呼ぶ。以下、吸い込みアクションの後で、吸い込みアクションによって得られた弾をプレイヤキャラクタが投げるアクションを行う例について説明する。
【0203】
図30は、プレイヤキャラクタが吸い込みアクションを実行可能な状態であって、吸い込みアクションを行う前の場面におけるゲーム画像の一例を示す図である。本実施形態においては、プレイヤキャラクタ201は、一定条件下で、吸い込みアクションを実行可能な状態となることができる。吸い込みアクションを実行可能な状態とは、プレイヤによる所定の操作入力に応じてプレイヤキャラクタが吸い込みアクションを行うことができる状態である。例えば、プレイヤキャラクタ201は、変身することが可能であり、所定の形態に変身した状態において、吸い込みアクションを実行可能であってもよい。なお、他の実施形態においては、プレイヤキャラクタ201は、常に、吸い込みアクションを実行可能な状態であってもよい。
【0204】
プレイヤキャラクタ201が吸い込みアクションを実行可能な状態である場合、ゲームシステム1は、ゲーム空間の画像とともに照準画像271を表示する(
図30参照)。照準画像271は、プレイヤキャラクタ201が吸い込みアクションを行う方向を示す。照準画像271が指し示す、吸い込みアクションの方向は、上述の照準画像262によるエイム方向と同様、プレイヤによる操作入力に基づいて制御される。吸い込みアクションの方向を制御する具体的な方法は任意であり、例えば上記エイム方向と同様にして制御されてもよい。詳細は後述するが、プレイヤキャラクタ201が吸い込みアクションを行った場合、照準画像271が指し示す位置を含む範囲のボクセルオブジェクトが、消去されるように変形する。照準画像271が指し示す位置は、プレイヤキャラクタ201の位置から吸い込みアクションの方向へ延びる直線と、オブジェクトとの交点の位置である。なお、照準画像271は、
図28に示す照準画像262と同じであってもよく、照準画像271とともにオブジェクト情報画像263が表示されてもよい。
【0205】
図31は、プレイヤキャラクタ201が吸い込みアクションを行っている場面におけるゲーム画像の一例を示す図である。
図31に示す状況は、岩の壁のように形成されている地形オブジェクト272を照準画像271が指し示す状態において、プレイヤによる所定の操作入力に応じてプレイヤキャラクタ201が吸い込みアクションを開始した後の状況である。このとき、ゲームシステム1は、照準画像271が指し示す位置を含む範囲内におけるボクセルの密度を減少させるように更新することで、地形オブジェクト272のうち当該範囲内の一部が消去されるように地形オブジェクト272を変形させる。また、本実施形態においては、プレイヤキャラクタ201は、プレイヤによる操作入力に応じて吸い込みアクションを継続する。例えば、プレイヤキャラクタ201は、操作入力が行われている間、吸い込みアクションを継続する。本実施形態においては、コントローラの所定のボタンに対する入力が継続している間、ゲームシステム1は、プレイヤキャラクタ201に吸い込みアクションを行わせる。したがって、プレイヤは、操作入力を行う期間の長さによって、吸い込みアクションの長さを変更することができ、ひいては、地形オブジェクト272を変形させる度合いを変更することができる。なお、本実施形態においては、プレイヤキャラクタ201が吸い込みアクションを継続できる時間には上限が設定される。ただし、他の実施形態においては、上限は設定されなくてもよい。
【0206】
なお、図示しないが、ゲームシステム1は、照準画像271とともに、プレイヤキャラクタ201が吸い込みアクションを継続できる残り時間を示すゲージ画像を表示してもよい。また、ゲームシステム1は、上述の照準画像271とともに、後述する弾を投げる投げアクションの実行可能回数(換言すれば、弾の数)を示す画像を表示してもよい。
【0207】
本実施形態においては、吸い込みアクションが継続される間、ゲームシステム1は、照準画像271が指し示す位置にある地形オブジェクト272の一部を消去する処理を継続的に実行する。例えば、吸い込みアクションが係属される間、地形オブジェクト272の一部を消去する処理が1フレーム毎に繰り返し実行される。したがって、上記の所定の操作入力が継続して行われた時間に応じた量だけボクセルオブジェクトが消去されるように、ボクセルオブジェクトが変形する。詳細は後述するが、本実施形態においては、1回の変形処理によって、照準画像271が指し示す位置を含む所定範囲のボクセルオブジェクトのうちの表面付近の部分が削り取られるように変形する。そして、変形処理が繰り返し実行されることで、ボクセルオブジェクトは、表面付近の部分から内側の部分まで次第に削り取られていくように、次第に変形することとなる。なお、本実施形態においては、吸い込みアクション中において、吸い込みアクションの方向は、プレイヤによる操作入力に応じて変更されてもよい。
【0208】
本実施形態においては、吸い込みアクションが継続される間、ゲームシステム1は、変形されるボクセルオブジェクトからプレイヤキャラクタ201に向かって風や破片が吹き込む様子を表すエフェクト画像を表示する。これによって、吸い込みアクションによってプレイヤキャラクタ201がボクセルオブジェクトを吸い込んでいるように見える演出を行うことができる。
【0209】
次に、吸い込みアクションに応じてボクセルオブジェクトを変形させる処理の具体例について説明する。
図32は、
図31に示す地形オブジェクトを吸い込みアクションに応じて変形させる前後の様子の一例を示す図である。なお、
図32は、壁状の地形オブジェクト272を壁面に沿った向きから見た断面図であり、地形オブジェクト272の内側領域を斜線で示している。
【0210】
プレイヤキャラクタ201が吸い込みアクションを行った場合、ゲームシステム1は、プレイヤキャラクタ201の位置から照準画像271が指し示す方向(つまり、吸い込みアクションの方向)へ延びる直線274と、ボクセルオブジェクトとのコリジョン判定を行う。直線274とボクセルオブジェクトとが接触する場合、ゲームシステム1は両者の交点を特定する。
図32に示す例においては、直線274と地形オブジェクト272との交点275が特定される。上記の場合、ゲームシステム1は、地形オブジェクト272に関して密度の更新を行う密度更新範囲276を設定する。本実施形態においては密度更新範囲はSDFを用いて表される。密度更新範囲276は、特定された交点275の位置に基づいて設定される。本実施形態においては、吸い込みアクションによる密度更新範囲は、交点275を中心とした球形の範囲である(
図32参照)。なお、他の実施形態においては、交点275の位置に基づく密度更新範囲の位置は任意であり、また、吸い込みアクションによる密度更新範囲の形状は任意である。
【0211】
なお、本実施形態においては、ゲームシステム1は、吸い込みアクションが行われている期間において、密度更新範囲を設定する処理を毎フレーム実行する。つまり、複数フレームにわたって吸い込みアクションが行われる場合、吸い込みアクションに基づいた位置に複数の上記直線が連続的に設定され、両者が接触する場合に接触位置に密度更新範囲が設定される。なお、上記期間においてプレイヤキャラクタ201が吸い込みアクションを行う向きが変化する場合には、当該向きに応じて直線の位置および方向が変更され、フレーム毎に異なる位置に密度更新範囲が設定される。また、他の実施形態においては、複数の密度更新範囲が同時に(例えば、1フレームにおいて)複数設定されてもよい。
【0212】
本実施形態においては、設定された密度更新範囲276に対応するボクセル(例えば、密度更新範囲276内のボクセル)について密度が減少されることで、地形オブジェクト272が変形される。本実施形態においては、ゲームシステム1は、密度更新範囲内のボクセルの密度を一定条件下で減少させる。本実施形態においては、ゲームシステム1は、密度更新範囲内のボクセルのうちで条件を満たすボクセルについて密度の更新の計算を行い、当該計算の結果、密度が減少される。なお、詳細は後述するが、本実施形態においては、密度の更新の計算によって密度の減少量が0と算出されて実質的には密度が減少されないボクセルもある。
【0213】
ここで、本実施形態においては、ボクセルには、硬さおよびダメージの情報が設定される。ゲームシステム1は、密度更新範囲内のボクセルのうちで、硬さおよびダメージに関する条件が満たされるボクセルについて、密度の更新の計算を行う。本実施形態においては、ボクセルに設定される硬さとは、ボクセルに設定されるマテリアルに関して上記マテリアルデータにおいて設定される硬さである。硬さの情報は、例えば、値が大きいほど硬いことを示す数値である硬さレベルを示す情報である。また、ダメージの情報は、ボクセルに設定される上述の状態データが示す情報の1つであり、プレイヤキャラクタ201によるアクション等によって加えられたダメージを示す。ダメージの情報は、例えば、加えられたダメージ量の累積値を示す数値の情報である。なお、ゲームシステム1は、ダメージの情報に代えて、プレイヤキャラクタ201によるアクション等によって減少される耐久値を示す情報を各ボクセルに設定してもよい。
【0214】
本実施形態においては、ゲームシステム1は、密度更新範囲内のボクセルのうちで密度の更新の計算を行うボクセルを、次のようにして決定する。
【0215】
密度更新範囲内のボクセルのうち、設定される硬さが第1閾値未満であるボクセルについては、密度の更新の計算を行う条件を満たすと判定される。
【0216】
また、密度更新範囲内のボクセルのうち、設定される硬さが第1閾値以上でかつ第2閾値未満であるボクセルについては、所定量のダメージが加算され、加算後のダメージの累積値が所定の閾値以上となる場合に、上記条件を満たすと判定される。なお、ダメージの情報に代えて耐久値の情報がボクセルに設定される場合には、設定される硬さが第1閾値以上でかつ第2閾値未満であるボクセルについては、耐久値が所定値だけ減算され、減算後の耐久値が所定の閾値以下となる場合に、上記条件を満たすと判定される。なお、ダメージの加算または耐久値の減算は、当該ボクセルが密度更新範囲内に含まれると判定されたフレーム毎に行われる。そのため、例えば複数フレームにわたって当該ボクセルが密度更新範囲内に含まれた場合は、ダメージの加算または耐久値の減算が複数回行われた場合に、上記条件が満たされることとなる。なお、ゲームシステム1は、ダメージの累積値が所定の閾値以上となった、または、耐久値が所定の閾値以下となった時点のフレームにおける処理で、上記条件が満たされると判定して、密度の更新の計算を行ってもよいし、当該フレームより後のフレーム(例えば、次のフレーム)で、上記条件が満たされると判定して、密度の更新の計算を行ってもよい。
【0217】
また、密度更新範囲内のボクセルのうち、設定される硬さが第2閾値以上であるボクセルについては、密度の更新の計算を行う条件を満たさないと判定される。つまり、設定される硬さが第2閾値以上であるボクセルについては、ダメージの情報に関わらず、吸い込みアクションに応じた密度の更新の計算は実行されず、密度は更新されない。
【0218】
上記のように、ボクセルに設定される硬さを考慮して、密度の更新を行うか否かを判定することで、地形オブジェクトのうちで変形されない部分や、変形されにくい部分を設定することができる。また、ボクセルに設定されるダメージまたは耐久値を考慮して、密度の更新を行うか否かを判定することで、複数回の吸い込みアクションによって地形オブジェクトが変形されるように設定することができる。また、ダメージや耐久値に関する閾値をボクセル毎に異ならせることで、地形オブジェクトのうちで変形のしやすい部分や変形しにくい部分を設定することができる。
【0219】
密度更新範囲内のボクセルのうち上記条件を満たすと判定されたボクセルについて、ゲームシステム1は、密度を減少させるための計算を行う。なお、密度を減少させるための具体的な計算方法は任意である。本実施形態においては、ゲームシステム1は、当該ボクセルを基準とした所定範囲内に、密度が上述の基準値未満であるボクセルが存在する場合、基準となる当該ボクセルの密度を所定値だけ減少させる。一方、密度が上述の基準値未満であるボクセルが所定範囲内に存在しない場合、基準となる当該ボクセルの密度の減少量は0とされる、つまり、当該ボクセルの密度は更新されない。なお、上記所定範囲は、例えば、当該ボクセルを中心とした3×3×3の27個のボクセルの範囲である。上記の計算方法によれば、密度更新範囲内のボクセルのうちで、ボクセルオブジェクトのメッシュが設定される位置付近のボクセルについて密度が減少される。したがって、
図32に示す例においては、地形オブジェクト272は、密度更新範囲276内の部分について、地形オブジェクト272の内部領域が収縮するように変形されることとなる。以上のように、地形オブジェクト272は、1フレーム分の変形処理によって、密度更新範囲276内の部分について表面が削り取られたように変形する。そして、変形処理が複数回連続して実行されることで、地形オブジェクト272は、次第に内部まで削り取られるように変形していくこととなる。
【0220】
本実施形態においては、吸い込みアクションによってボクセルオブジェクトが変形される場合、当該ボクセルオブジェクトの一部のマテリアルは、上述の内側マテリアルに変更される。
図33は、吸い込みアクションによってボクセルオブジェクトの一部のマテリアルを変更する方法の一例を示す図である。
【0221】
本実施形態においては、吸い込みアクションに応じて上述の密度更新範囲276が設定される場合、ゲームシステム1は、ボクセルのマテリアルを更新する範囲であるマテリアル更新範囲277を設定する。本実施形態においては、マテリアル更新範囲277も密度更新範囲276と同様、SDFによって表される。本実施形態においては、マテリアル更新範囲277は、密度更新範囲276を内包するように設定される(
図33参照)。これによれば、変更処理後の地形オブジェクト272は、消去されたように変形された部分とその周囲の部分についてマテリアルが内部マテリアルに変更される。詳細は後述するが、これによって、消去されたように変形された部分とその周囲の部分について、地形オブジェクト272をより自然な見た目とすることができる。
【0222】
本実施形態においては、ゲームシステム1は、密度更新範囲276を拡大することでマテリアル更新範囲277を生成する。
図33の例においては、マテリアル更新範囲277は、密度更新範囲276よりも半径が大きい球形である。上記のような、密度更新範囲276を拡大する方法によれば、密度更新範囲276を内包するマテリアル更新範囲277を容易に生成することができる。なお、他の実施形態においては、マテリアル更新範囲は、密度更新範囲に基づいて生成される必要はなく、密度更新範囲と同様にゲームプログラムに予め含まれていてもよい。また、本実施形態においては、マテリアル更新範囲277の中心位置は密度更新範囲276の中心位置と同じ位置に設定される。ただし、マテリアル更新範囲277は、密度更新範囲276を内包する任意の位置に設定されてよい。また、マテリアル更新範囲277の形状は任意である。他の実施形態においては、マテリアル更新範囲277と密度更新範囲276は相似形でなくてもよい。
【0223】
ゲームシステム1は、地形オブジェクト272に関するボクセルのうち、マテリアル更新範囲277内のボクセルのマテリアルを変更する。本実施形態においては、マテリアル更新範囲277内のボクセルのマテリアルは、上述のマテリアルデータ(
図12参照)において変更前の当該マテリアルのIDに対応付けられる内部マテリアルIDが示すマテリアルに変更される。例えば、岩の表面を表すマテリアルIDには、内部マテリアルIDとして、岩の内部を表すマテリアルIDが対応付けられている。したがって、
図33に示す例においては、マテリアル更新範囲277内のボクセルのマテリアルは、変更処理によって、岩の表面のマテリアルから岩の内部のマテリアルに変更される。具体的には、ゲームシステム1は、マテリアル更新範囲277内のボクセルについて、ボクセルデータが示すマテリアルIDを、内部マテリアルIDを示すように更新することで、当該ボクセルに設定されるマテリアルを内部マテリアルに変更する。
【0224】
なお、上述のように、本実施形態においては、ボクセルデータは1つのボクセルにつき複数(具体的には、2つ)までのマテリアルIDを保持する。ボクセルに複数種類のマテリアルが設定されている場合、マテリアルの変更処理においては、マテリアル更新範囲内のボクセルのそれぞれに設定される各マテリアルIDが、それぞれに対応する内部マテリアルIDに変更される。例えば、マテリアル更新範囲内のボクセルに岩のマテリアルと土のマテリアルが設定されている場合、当該ボクセルについての変更後のマテリアルは、岩のマテリアルに対応付けられる内部マテリアルと、土のマテリアルに対応付けられる内部マテリアルになる。これによれば、ボクセルに複数種類のマテリアルが設定されている場合に、例えば1種類のマテリアルのみが変更されることで変更後のボクセルオブジェクトの見た目が不自然になるといった不都合が生じる可能性を低減することができる。
【0225】
以上のようにして地形オブジェクト272についてボクセルの密度およびマテリアルを更新する処理が行われた場合、ゲームシステム1は、更新処理後のボクセルの密度およびマテリアルに基づいて、[2-4.頂点のマテリアルの決定]~[2-6.メッシュの生成]で述べた方法に従って、地形オブジェクト272のメッシュ(具体的には、表示用メッシュおよび判定用メッシュ)を生成する。これによって、地形オブジェクト272は、一部が消去されたように変形されるとともに、変形した部分およびその周囲の部分のポリゴンのマテリアルが内部マテリアルに設定される。上記地形オブジェクト272が描画される場合、上記のポリゴンについては、例えば岩の内部を表すテクスチャを用いて描画が行われる。その結果、更新処理後の地形オブジェクト272は、変形した部分およびその周囲の部分が岩の内部を表す見た目となり、全体としては、一部が破壊されて内部が露出したような表現を行うことができる。
【0226】
上記のように、本実施形態においては、ボクセルオブジェクトが破壊されたように変形することに応じて、変形した部分におけるメッシュのマテリアルを、内部を表すマテリアルに変更することで、ボクセルオブジェクトの一部が破壊されて内部が露出したような表現を行うことができる。なお、ボクセルオブジェクトの一部が破壊されて内部が露出したような見た目を表現する方法としては、或る物体を表すボクセルオブジェクトのメッシュの表面に位置するボクセルについて当該物体の外殻を表すマテリアルを設定し、ボクセルオブジェクトのメッシュの内側の領域に位置するボクセルについて当該物体の内部を表すマテリアルを設定する方法も考えられる。この方法では、ボクセルオブジェクトのメッシュの内側の領域に位置していたボクセルが、変形後のメッシュの表面に位置するような変形が行われる場合に、ボクセルオブジェクトは、内部が露出したような見た目となる。ただし、上記の方法では、ボクセルオブジェクトのメッシュのうちで、外殻の見た目となる部分が厚くなってしまい、外殻の見た目となる部分を薄く表現することが難しい。
【0227】
これに対して、本実施形態においては、密度更新範囲を内包するマテリアル更新範囲内のボクセルについてマテリアルを変更する方法を採ることで、ボクセルオブジェクトのうちで変形した部分に加えてその周囲の部分についても、木の内部を表す見た目に変更されることとなる。上記の周囲の部分は、メッシュの変形は行われない一方で、見た目が内部を表すものに変更される部分である。このような部分を生じさせることで、更新処理後のボクセルオブジェクトは、あたかも薄い外殻が剥がれたかのように見える。このように、本実施形態によれば、物体が破壊された際に生じる薄い外殻を表現することができる。
【0228】
また、吸い込みアクションによってボクセルオブジェクトを変形させる場合、当該ボクセルオブジェクトについて欠片となる部分が生じることが考えられる。
図34は、ボクセルオブジェクトのうちの欠片部分が生じる場合と、欠片部分が生じないように消去処理が実行される場合の一例を示す図である。
図34における(a)の状況は、プレイヤキャラクタ201が地形オブジェクト278に対して吸い込みアクションを行っている状況であり、(b)の状況は、消去処理が実行されない場合において、吸い込みアクションによって地形オブジェクト272が変形された状況である。ここで、
図34に示す例のように、地形オブジェクト278が変形された結果、地形オブジェクト278の一部分が欠片部分278aとして生じることがある。当該欠片部分278aは、空中に浮いたように配置されており、このような欠片部分278aが生じると、プレイヤが違和感を抱く可能性がある。また、このような欠片部分278aにおけるマテリアルが、例えば上述した溶岩のマテリアルのように、プレイヤキャラクタ201に悪影響を及ぼす性質を有する場合には、プレイヤが小さな欠片部分278aに気づかずにプレイヤキャラクタ201を当該欠片部分278aに接触させてしまう結果、プレイヤキャラクタ201が悪影響を受けてしまうといった不都合が生じる可能性も考えられる。以上より、本実施形態においては、ゲームシステム1は、吸い込みアクションによるボクセルオブジェクトの変形によって上記のような欠片部分が生じないように、欠片部分に対応するボクセルの密度を変更する消去処理を実行する。
【0229】
消去処理においては、まず、ゲームシステム1は、所定の判定範囲内の領域のうちから、消去すべき欠片部分に対応する小領域を特定する。小領域は、密度が上述の基準値以上であるボクセルが隣接して連続している領域であって、当該領域の大きさが所定の基準より小さい領域である。なお、密度が上述の基準値以上であるボクセルであって、隣接する全てのボクセルの密度が基準値未満である1つのボクセルの領域も、小領域とされてよい。また、上記判定範囲は、任意の方法で設定されてよく、例えば、ボクセル空間の全体の範囲であってもよいし、ボクセルオブジェクトの変形が行われる範囲である上記の密度更新範囲に基づく範囲であってもよい。密度更新範囲に基づく範囲とは、例えば、密度更新範囲を包含する範囲である。より具体的には、密度更新範囲に基づく範囲として、密度更新範囲の形状を拡大した形状であって、中心位置が密度更新範囲と同じ範囲が設定されてもよい。また、ゲームシステム1は、所定の単位領域(例えば、所定数のボクセルで構成されるボクセル群からなる領域)毎にボクセルデータの書き換えを行ってもよい。このとき、密度が更新されたボクセルを含む1以上の単位領域からなる範囲が、上記判定範囲とされてもよい。また、ゲームシステム1は、上記の小領域の条件を満たす領域のうちで、全体が判定範囲内に含まれるものを小領域として特定してもよいし、上記の小領域の条件を満たす領域のうちで、少なくとも一部が判定範囲内に含まれるものを小領域として特定してもよい。
【0230】
ゲームシステム1は、特定された小領域に対応するボクセルについて密度を基準値未満の値(例えば、0)に更新する。これによって、当該小領域に対応する欠片部分となるボクセルオブジェクトのメッシュが生成されないようにすることができる(
図34の(c)参照)。なお、小領域の大きさに関する上記所定の基準は、例えばプレイヤキャラクタ201よりも小さい大きさに設定される。このとき、空中に浮いたように配置される、プレイヤキャラクタ201よりも小さい欠片となるボクセルオブジェクトは、消去処理によって生成されなくなる。
【0231】
上記において、ゲームシステム1は、マテリアル毎、または、マテリアルのグループ毎に小領域の大きさを特定してもよい。なお、マテリアルのグループは、例えば、同じ性質を有する複数種類のマテリアルが属するグループである。これによれば、所定のマテリアル(または所定のグループのマテリアル)であるボクセルオブジェクトが吸い込みアクションによって小さい欠片として残存している場合、当該欠片の部分が消去処理によって生成されなくなる。ここで、仮に小領域の大きさをマテリアル毎またはマテリアルのグループ毎に特定しないとすれば、例えば、岩のマテリアルと溶岩のマテリアルとを含む地形オブジェクトに対して吸い込みアクションが行われた結果、岩のマテリアルである地形オブジェクトに接触する部分であって上記溶岩のマテリアルである小さい部分が残存する場合もあり得る。このような場合、プレイヤが当該部分に気づかずに、プレイヤキャラクタ201を当該部分に接触させてしまうといった不都合が生じる可能性も考えられる。これに対して、マテリアル毎、または、マテリアルのグループ毎に小領域の大きさを特定することで、上記の部分が生成されなくなるので、上記の不都合が生じる可能性を低減することができる。
【0232】
本実施形態においては、プレイヤキャラクタ201は、吸い込みアクションによって一定条件下で得られる弾を投げる投げアクションを行うことができる。
図35は、吸い込みアクションが行われた後に投げアクションを行う前の場面におけるゲーム画像の一例を示す図である。
図35においては、吸い込みアクションが継続的に行われた結果、岩の壁のように形成されている地形オブジェクト272の一部に孔が開いたように、地形オブジェクト272が変形されている。また、
図35に示す状況においては、プレイヤキャラクタ201は、吸い込みアクションの後で、弾のオブジェクト273を投げる構えをとるアクションを行った状態(以下、「構え状態」と呼ぶ。)である。例えば、プレイヤキャラクタ201が投げることができる弾の数が1以上である状態で、プレイヤによる構え指示のための操作入力が行われたことに応じて、プレイヤキャラクタ201は、構えをとるアクションを行って上記構え状態となる。さらに、構え状態において、プレイヤによる投げ指示のための操作入力が行われたことに応じて、プレイヤキャラクタ201は、照準画像271が指し示す方向へ弾のオブジェクト273を投げる投げアクションを行う。
【0233】
プレイヤキャラクタが上記構え状態となる場合、ゲームシステム1は、弾のオブジェクト273を生成する。詳細は後述するが、弾のオブジェクト273のマテリアルは、当該弾が増加される際において密度が減少されたボクセルのマテリアルに基づいて決定される。なお、本実施形態においては、弾のオブジェクト273は、地形オブジェクトの主ボクセル空間とは異なる副ボクセル空間のボクセルに基づくボクセルオブジェクトである。他の実施形態においては、弾のオブジェクト273はボクセルオブジェクトでなくてもよい。
【0234】
本実施形態においては、上記の吸い込みアクション中において、ボクセルオブジェクトの変形に関する条件が満たされた場合、上記弾の数を増加させる。なお、弾の数は、弾を投げる投げアクションを実行可能な回数と言うこともできる。詳細は後述するが、プレイヤキャラクタ201は、吸い込みアクションによってボクセルオブジェクトをより大きく変形させることで、弾の数をより多く増やすことができる。
【0235】
次に、ボクセルオブジェクトの変形に応じて弾を増加させる処理について説明する。
図36は、弾の増加および増加される弾のマテリアルを決定する方法の一例を示す図である。
図36に示す例は、吸い込みアクションが開始されてから6フレーム目までの期間における消去部分のマテリアルと、当該期間において弾が追加されるタイミングおよび当該のマテリアルを示している。なお、消去部分のマテリアルとは、吸い込みアクションによる地形オブジェクト272の変形の際に密度が減少されたボクセルに設定されるマテリアルを指す。なお、密度が減少された1以上のボクセルに設定されるマテリアルが複数種類である場合には、消去部分のマテリアルとは、当該複数種類のマテリアルのうちで、最も減少したマテリアルである。ゲームシステム1は、例えば、ボクセル毎の密度の減少量に対して当該ボクセルにおける当該マテリアルの割合(この割合は、マテリアル混合比から得られる)を乗算した値をボクセル毎に算出し、各ボクセルについての当該値を合計した合計値が最も大きいマテリアルを、上記「最も減少したマテリアル」とする。
【0236】
本実施形態においては、弾を増加する処理は、吸い込みアクションによる、ボクセルに対する変化の度合いに基づいて行われる。上記変化の度合いは、ボクセルオブジェクトの変化の度合いとも言うことができる。第1例では、ゲームシステム1は、変化の度合いとして、吸い込みアクションによるボクセルの密度の更新が行われた回数を算出する。弾を増加する処理は、この回数に基づいて実行される。例えば、
図36に示す例においては、上記回数が所定回数(ここでは、5回)に達する度に、弾を1増加する処理が実行される。つまり、吸い込みアクションによる地形オブジェクトの変形が5フレームにわたって行われた場合に、弾を投げる投げアクションの実行可能回数が1加算される。なお、吸い込みアクションによるボクセルの密度の更新が行われた回数に基づいて弾を増加する具体的な方法は、上記に限らない。例えば、他の実施形態においては、上記回数がそのまま弾の数とされてもよいし、密度の更新が連続して所定回数行われることが、弾を増加する条件とされてもよい。また例えば、他の実施形態においては、マテリアル毎に上記の回数がカウントされてもよい。このとき、或るマテリアルについてカウントされる回数が所定の回数に達した場合、当該マテリアルの弾が追加されてもよい。
【0237】
以上のように、本実施形態においては、ボクセルオブジェクトの変形に応じて、弾を投げる投げアクションの実行可能回数を増加させるイベント、および、プレイヤキャラクタ201が弾を投げるイベントを行う。これによれば、ボクセルオブジェクトの変形がゲームにおけるイベントを発生させる条件になるので、ボクセルオブジェクトを変形させる動機づけをプレイヤに与えることができ、ゲームの戦略性や興趣性を向上することができる。
【0238】
なお、第1例においては、変化の度合いを示す指標として、「ボクセルの密度の更新が行われた回数」が用いられたが、変化の度合いを示す具体的な指標は任意である。例えば、他の実施形態においては、第1例における上記指標として、後述する第2例および第3例において用いられる「ボクセルの体積の減少量」あるいは「現時点でのボクセルの体積」が採用されてもよい。このとき、ゲームシステム1は、ボクセルの体積の減少量が所定の閾値に達する度に、弾を増加させるようにしてもよい。
【0239】
本実施形態においては、増加された弾のマテリアルは、吸い込みアクションによって密度が変化したボクセルのマテリアルに基づいて決定される。本実施形態においては、増加された弾のマテリアルは、弾の増加が決定されたフレームにおける消去部分のマテリアルに基づいて決定される。例えば、
図36の例においては、弾の増加が決定された5フレーム目における消去部分のマテリアルである「土」のマテリアルが、弾のマテリアルに決定される。これによれば、吸い込みアクションによって変形される地形オブジェクト272のうちで、弾が追加されたタイミングで消去されたように見える部分のマテリアルが、追加される弾のマテリアルとなる。そのため、追加された弾のマテリアルをプレイヤにとって理解しやすくすることができる。また、プレイヤは、増加される弾のマテリアルが何になるかを考慮して、地形オブジェクトのうちのどのマテリアルの部分に対して吸い込みアクションを行うかを考えるので、ゲームの戦略性を向上することができる。
【0240】
なお、他の実施形態においては、ゲームシステム1は、弾の増加が決定されるときのボクセル更新に限らず、弾の増加が決定されるまでのボクセルの更新において減少したマテリアルに基づいて、増加される弾のマテリアルを決定してもよい。例えば、
図36の例においては、増加される弾のマテリアルは、弾の増加が決定されるまでの第1~第5フレームにおいて「消去部分のマテリアル」となった回数が最も多いマテリアル(
図36の例では、「草」のマテリアル)として決定されてもよい。また例えば、ゲームシステム1は、弾の増加が決定されるまでの第1~第5フレームを対象とした消去部分のマテリアルを決定してもよい。具体的には、ゲームシステム1は、具体的には、第1~第5フレームにおけるボクセル毎の密度の減少量の合計(第1~第5フレームにおける合計)に対して、当該ボクセルにおける当該マテリアルの割合を乗算した値をボクセル毎に算出し、各ボクセルについての当該値を合計した合計値が最も大きいマテリアルを、「第1~第5フレームを対象とした消去部分のマテリアル」として決定してもよい。このようにして決定されたマテリアルが、増加される弾のマテリアルとされてもよい。
【0241】
本実施形態においては、吸い込みアクションに応じて一定条件下で実行可能回数が増加されるアクションの例として、プレイヤキャラクタは弾を投げるアクションを行うものとした。ここで、他の実施形態においては、吸い込みアクションに応じて一定条件下で実行可能回数が増加されるアクションは、任意のアクションであってよい。例えば、上記アクションは、光線を発するアクションであってもよいし、パンチやキックといったアクションであってもよい。このとき、これらのアクションには、弾のマテリアルを決定する方法と同様にしてマテリアルが設定され、上記の光線やパンチやキックのアクションに対して当該マテリアルの性質が付与されてもよい。
【0242】
[2-8-2.第2例(地形オブジェクト中にアイテムが配置されるイベントが行われる例)]
第2例として、地形オブジェクトの一部が消去される変形が行われたことに応じて、地形オブジェクト中にアイテムが配置されるイベントが行われる例について説明する。
図37は、地形オブジェクトの変形に応じてアイテムが配置される様子の一例を示す図である。
図37に示すように、本実施形態においては、プレイヤキャラクタ201は、上述のパンチアクションや吸い込みアクション等によって地形オブジェクト281が消去するように変形させることができる。ここで、本実施形態においては、地形オブジェクト281の一部が消去される変形が行われた場合、一定条件下で、アイテムオブジェクト282が配置されるイベントが実行される(
図37の(b)参照)。詳細は後述するが、本実施形態においては、地形オブジェクト281に関するボクセルの体積が所定量だけ減少したことに応じて、アイテムオブジェクト282が配置される。これによれば、地形オブジェクトを変形させる動機づけをプレイヤに与えることができる。以下、上記イベントの詳細について説明する。
【0243】
第2例においては、ゲームシステム1は、プレイヤキャラクタ201によって地形オブジェクトの変形が行われた場合、ボクセルの変化の度合いを示す指標として、当該地形オブジェクトに関するボクセルの体積の減少量を算出する。ここで、プレイヤキャラクタ201による地形オブジェクトの変形とは、プレイヤキャラクタ201の行動に起因して行われる地形オブジェクトの変形を指す。例えば、上述のパンチアクションや吸い込みアクション等のプレイヤキャラクタ201によるアクションによる地形オブジェクトの変形は、プレイヤキャラクタ201による地形オブジェクトの変形の一例である。また例えば、プレイヤキャラクタ201がアイテムを使用したことによって(例えば、爆弾を爆発させたことによって)地形オブジェクトが変形したことも、プレイヤキャラクタ201による地形オブジェクトの変形の一例であってよい。また例えば、プレイヤキャラクタ201が敵キャラクタをパンチアクション等によって吹き飛ばした結果、敵キャラクタが地形オブジェクトにぶつかって地形オブジェクトが変形したことも、プレイヤキャラクタ201による地形オブジェクトの変形の一例であってよい。なお、他の実施形態においては、プレイヤキャラクタ201の行動に起因して行われる地形オブジェクトの変形に限らず、他の要因によって生じる地形オブジェクトの変形にも基づいて、ボクセルの体積の減少量が算出されてもよい。
【0244】
本実施形態においては、上記のボクセルの体積の減少量は、ゲーム空間におけるボクセルの大きさと、ボクセルの密度の減少量に基づいて算出される。具体的には、ゲームシステム1は、地形オブジェクトの変形が行われた場合、密度が減少された1以上のボクセルについて、ゲーム空間における当該ボクセル1つ分の体積に、密度の減少量を乗算したボクセル毎の減少量を算出し、ボクセル毎の減少量を当該1以上のボクセルについて合計した合計の減少量を、上記ボクセルの体積の減少量として算出する。上記によれば、ボクセル1つ分の体積よりも詳細な精度で減少量を算出することができる。なお、ボクセルの体積の減少量の算出方法は上記に限らず任意である。ボクセルの体積の減少量は、ボクセルの密度の減少量に基づく任意の方法で算出されてもよい。例えば、他の実施形態においては、ゲームシステム1は、ボクセルの大きさを考慮せずに、ボクセル毎の密度の減少量を、密度が減少された1以上のボクセルについて合計した減少量を、ボクセルの体積の減少量として算出してもよい。
【0245】
本実施形態においては、ゲームシステム1は、地形オブジェクトが変形される度に、上記のボクセルの体積の減少量を算出し、累積の減少量を算出する。また、ゲームシステム1は、累積の減少量が更新される度に、更新された累積の減少量に基づいて、アイテムオブジェクトを配置するか否かを判定する。本実施形態においては、累積の減少量が所定の閾値に達した場合、アイテムオブジェクトを配置すると判定される。なお、本実施形態においては、ゲームシステム1は、アイテムオブジェクトが配置されたことに応じて累積の減少量をリセットし、その後、累積の減少量を再度算出し直す。これによって、ゲーム中において累積の減少量が所定の閾値に達する度にアイテムオブジェクトが配置されることとなる。プレイヤは、地形オブジェクトを消去されるように変形させるアクションをプレイヤキャラクタに行わせ続けることで、定期的にアイテムオブジェクトを得ることができる。
【0246】
なお、第2例においては、変化の度合いを示す指標として、「ボクセルの体積の減少量」が用いられたが、変化の度合いを示す具体的な指標は任意である。例えば、他の実施形態においては、第2例における上記指標として、上記第1例において用いられる「ボクセルの密度の更新が行われた回数」が採用されてもよい。このとき、ゲームシステム1は、上記回数が所定の閾値に達した場合に、アイテムオブジェクトを配置してもよい。また例えば、他の実施形態においては、上記「ボクセルの体積の累積の減少量」に代えて、現時点におけるボクセルの体積が、変化の度合いを示す指標として用いられてもよい。現時点におけるボクセルの体積は、ゲーム開始時におけるボクセルの体積から、累積の減少量を減算することで得られる。このとき、ゲームシステム1は、現時点におけるボクセルの体積が所定の閾値以下となった場合に、アイテムオブジェクトを配置してもよい。
【0247】
また、累積の減少量に基づいてアイテムオブジェクトの配置を決定する方法は任意である。例えば、他の実施形態においては、累積の減少量がリセットされる度に、閾値の値が変更されてもよく、リセットの度に閾値の値が大きくなる(または小さくなる)ように変更されてもよい。また例えば、ゲームシステム1は、複数の閾値を設定し、累積の減少量をリセットせず、累積の減少量が閾値に達する度にアイテムオブジェクトを配置してもよい。また例えば、ゲームシステム1は、累積の減少量が大きくなるにつれて上昇する確率に基づいて、アイテムオブジェクトを配置するか否かを判定してもよい。
【0248】
また、他の実施形態においては、ゲームシステム1は、ボクセルの体積の減少量を、マテリアル毎、または、マテリアルのグループ毎に算出してもよい。このとき、マテリアル毎またはグループ毎の累積の減少量が閾値に達したか否かによって、アイテムオブジェクトを配置するか否かが判定されてもよい。このときの閾値は、マテリアル毎またはグループ毎の大きさに設定されてよい。また、ゲームシステム1は、累積の減少量が閾値に達したマテリアルまたはグループに応じた種類のアイテムオブジェクトを配置してもよい。
【0249】
また、他の実施形態においては、ゲームシステム1は、ボクセルの体積の増加量に基づいてアイテムオブジェクトを配置するようにしてもよい。例えば
図29に示した例のように、プレイヤキャラクタ201は、地形オブジェクトの内部領域の体積を増やすように地形オブジェクトを変形させることもできる。ゲームシステム1は、ボクセルの体積の増加量に関して、累積の増加量を算出し、累積の増加量に基づいて、アイテムオブジェクトを配置するか否かを判定してもよい。このとき、ゲームシステム1は、地形オブジェクトのボクセルの密度が減少される場合であっても累積の増加量を減算しないようにしてもよい。また、他の実施形態においては、ゲームシステム1は、ボクセルの体積の減少量と増加量の和である変化量を算出し、変化量に基づいてアイテムオブジェクトを配置するようにしてもよい。
【0250】
本実施形態においては、アイテムオブジェクトは、地形オブジェクトによって隠される位置に配置される。例えば、
図37に示す例では、アイテムオブジェクト282は、地形オブジェクト281の内部領域に配置される。つまり、アイテムオブジェクトは、ゲーム空間において、密度が上記基準値以上となるボクセルが定義される位置に配置される。プレイヤキャラクタ201は、地形オブジェクトがさらに消去されるように地形オブジェクトをパンチアクションや吸い込みアクション等によって変形させることで、アイテムオブジェクトが地形オブジェクトに埋もれた状態から解放することができる。上記によれば、アイテムオブジェクトが急に出現した印象をプレイヤに与えることなく、アイテムオブジェクトを自然に配置することができる。なお、他の実施形態においては、アイテムオブジェクトの配置位置は任意であり、地形オブジェクトの外側に配置されてもよいし、一部が地形オブジェクトに埋まった状態で配置されてもよい。なお、他の実施形態においては、ゲームシステム1は、地形オブジェクトの内部領域において、アイテムオブジェクトが配置される位置を含む領域に空洞が形成されるように地形オブジェクトを変形し、形成された空洞内にアイテムオブジェクトを配置してもよい。
【0251】
ゲームシステム1は、アイテムオブジェクトを配置する要因となった地形オブジェクトの変形が行われた位置に基づいて、アイテムオブジェクトの配置位置を決定してもよい。例えば、アイテムオブジェクトは、地形オブジェクトの変形が行われた位置または範囲から所定距離内の領域に配置されてもよい。これによれば、発見しやすい位置にアイテムオブジェクトを配置することができる。また例えば、
図37に示すように、アイテムオブジェクトは、地形オブジェクトの変形が行われた位置または範囲から、プレイヤキャラクタから見たときの奥側となる領域に配置されてもよい。これによれば、地形オブジェクトのうちで変形させた部分をさらに変形させることでアイテムオブジェクトを発見できるので、アイテムオブジェクトをより発見しやすい位置に配置することができる。ゲームシステム1は、上記の領域内において任意の方法でアイテムオブジェクトの配置位置を決定してよい。例えば、領域内の定められた位置(例えば、領域の中心位置)がアイテムオブジェクトの配置位置とされてもよいし、領域内においてランダムに配置位置が決定されてもよい。
【0252】
なお、ゲームシステム1は、プレイヤキャラクタが地形オブジェクトを変形させるアクションを行った方向によっては、累積の減少量が所定の閾値に達した場合であっても、アイテムオブジェクトを配置しないようにしてもよい。例えば、プレイヤキャラクタが上方向に向けてアクションを行った結果、地形オブジェクトのうちプレイヤキャラクタの上方に位置する部分が変形された場合、当該部分のさらに上方にアイテムオブジェクトが配置される。この場合、プレイヤキャラクタがアイテムオブジェクトを取得しようとして地形オブジェクトをさらに変形させた場合、アイテムオブジェクトは、地形オブジェクトに埋もれた状態が解除されたとたん落下してしまうおそれがある。そのため、例えば、プレイヤキャラクタが、地形オブジェクトを変形させるアクションを、ゲーム空間における上下方向に行った場合には、ゲームシステム1は、累積の減少量が所定の閾値に達してもアイテムオブジェクトを配置しないようにしてもよい。なお、このとき、その後において上下方向とは異なる方向にプレイヤキャラクタが上記アクションを行った場合に、アイテムオブジェクトが配置されるようにしてもよい。
【0253】
配置されるアイテムオブジェクトは、ゲームにおける任意の種類のアイテムであってよい。本実施形態においては、配置されるアイテムオブジェクトは宝箱のオブジェクトである。プレイヤキャラクタ201は、例えば、宝箱のオブジェクトを開けるアクションを行ったり、宝箱のオブジェクトに触れたりすることで、所定の報酬アイテムを取得することができる。なお、宝箱のオブジェクトは、配置された時点では地形オブジェクトに埋まった状態であり、宝箱のオブジェクトの周囲の地形オブジェクトが消去されるように変形した場合に、地形オブジェクトに埋まっていない状態とされてもよい。このとき、プレイヤキャラクタ201は、宝箱のオブジェクトが地形オブジェクトに埋まっている状態では、宝箱のオブジェクトを開けるアクションを行うことができず、宝箱のオブジェクトが地形オブジェクトに埋まっていない状態となった場合に当該アクションを行うことができてもよい。また、報酬アイテムは、任意の種類のアイテムであってよく、例えば、ゲームにおける収集目標となるコイン等のアイテムであってもよいし、武器や回復アイテム等のゲームを有利に進めるためのアイテムでもよい。また、他の実施形態においては、地形オブジェクトに宝箱のオブジェクトが配置されることに代えて、報酬アイテム自体が配置されてもよい。なお、上記において、宝箱のオブジェクトから取得され得る、または、地形オブジェクトに配置され得る報酬アイテムの候補は複数種類であってもよく、複数種類の候補のうちから任意の方法で1つが選択されてもよい。
【0254】
[2-8-3.第3例(ゲームにおけるアイテムが付与されるイベントが行われる例)]
第3例として、地形オブジェクトの一部が消去される変形が行われたことに応じて、ゲームにおけるアイテムが付与されるイベントが実行される例について説明する。本実施形態においては、ゲームシステム1は、ゲーム中においてプレイヤキャラクタによって地形オブジェクトが変形される度に、上述のボクセルの変化の度合いを示す指標を算出し、当該指標が所定の閾値に達した場合に、アイテムを付与するイベントを実行する。これによって、地形オブジェクトを変形させる動機づけをプレイヤに与えることができる。
【0255】
本実施形態においては、上記第2例で述べたように、ゲームシステム1は、プレイヤキャラクタ201によって地形オブジェクトの変形が行われた場合、地形オブジェクトに関するボクセルの体積の減少量を算出する。このとき、ゲームシステム1は、マテリアルのグループ毎の減少量を算出する。なお、マテリアルのグループはどのように設定されてもよい。例えば、本実施形態においては、同じ性質が設定されるマテリアルが同じグループに属するようにグループが設定されるものとする。マテリアルのグループ毎の減少量を算出する際、ゲームシステム1は、密度が減少された1以上のボクセルについて、ゲーム空間における当該ボクセル1つ分の体積に、密度の減少量と、マテリアルの割合とを乗算したボクセル毎の減少量をマテリアル毎に算出する。さらに、算出されたボクセル毎の減少量を、当該1以上のボクセルについてマテリアル毎に合計した合計の減少量を、マテリアル毎の「ボクセルの体積の減少量」として算出する。算出されたマテリアル毎の「ボクセルの体積の減少量」を、マテリアルのグループ毎に合計することで、マテリアルのグループ毎の減少量を得ることができる。
【0256】
本実施形態においては、ゲームシステム1は、地形オブジェクトが変形される度に、上記のマテリアルのグループ毎に上記ボクセルの体積の減少量を算出し、マテリアルのグループ毎に累積の減少量を算出する。また、ゲームシステム1は、マテリアルのグループ毎に累積の減少量が更新される度に、更新された累積の減少量に基づいて、アイテムを付与するか否かを判定する。例えば、累積の減少量が所定の閾値に達した場合、アイテムを付与すると判定される。このとき、マテリアルのグループ毎に複数種類の閾値が設定され、当該グループの累積の減少量が閾値に達することに応じて、当該閾値に対応して設定されるアイテムが付与されてもよい。また、付与されるアイテムを決定する方法は任意である。例えば、マテリアルのグループ毎にアイテムが設定されてもよいし、閾値毎にアイテムが設定されてもよい。
【0257】
なお、第3例においては、変化の度合いを示す指標として、「ボクセルの体積の減少量」が用いられたが、変化の度合いを示す具体的な指標は任意である。例えば、他の実施形態においては、第3例における上記指標として、上記第1例において用いられる「ボクセルの密度の更新が行われた回数」が採用されてもよい。このとき、ゲームシステム1は、マテリアルのグループ毎に上記回数をカウントし、上記回数が所定の閾値に達した場合にアイテムを付与してもよい。また例えば、他の実施形態においては、上述の「現時点におけるボクセルの体積」が、変化の度合いを示す指標として用いられてもよい。このとき、ゲームシステム1は、現時点におけるボクセルの体積が所定の閾値以下となった場合に、アイテムを付与してもよい。
【0258】
図38は、地形オブジェクトを変形させた実績を示す実績画像の一例を示す図である。本実施形態においては、ゲームシステム1は、ゲーム中においてユーザによる所定の指示があったことに応じて、
図38に示すような実績画像を表示する。実績画像は、現時点における累積の減少量を、マテリアルのグループ毎に示す。
図38に示す例においては、実績画像は、マテリアルのグループを示す項目(例えば、項目291)と、累積の減少量を示す棒グラフ(例えば、棒グラフ292)とを、マテリアルのグループ毎に含んでいる。なお、
図38に示す例においては、項目において示される「木」や「草」等は、マテリアルの名前ではなく、マテリアルの性質を示し、同じ性質を有するマテリアルのグループを示している。例えば、「木」は、木の性質を有するマテリアルのグループを示している。
【0259】
また、他の実施形態においては、ゲームシステム1は、マテリアル毎に累積の減少量を算出し、当該減少量に基づいて、アイテムを付与するか否かを判定してもよい。このとき、実績画像は、マテリアル毎に累積の減少量を示すものであってよい。また例えば、ゲームシステム1は、マテリアルおよびマテリアルのグループに区別しない、地形オブジェクト全体の累積の減少量を算出し、当該減少量に基づいて、アイテムを付与するか否かを判定してもよい。また、他の実施形態においては、マテリアル毎の累積の減少量に応じて付与されるアイテムと、マテリアルのグループ毎の累積の減少量に応じて付与されるアイテムと、合計の累積の減少量に応じて付与されるアイテムがそれぞれ設定されてもよい。
【0260】
プレイヤに付与されるアイテムの具体的な内容は任意である。例えば、ゲームにおいて使用可能な通貨やポイントがアイテムとして付与されてもよいし、武器や道具といった、ゲームにおいてプレイヤキャラクタが使用するアイテムが付与されてもよい。なお、プレイヤキャラクタにアイテムが付与される態様は、プレイヤにアイテムが付与される態様の一例であると言える。また、アイテムが付与されるイベントにおいて、プレイヤがアイテムを受け取るタイミングは任意である。例えば、ゲームシステム1は、累積の減少量が閾値に達した時点で、アイテムが付与されることを決定するが、プレイヤまたはプレイヤキャラクタが当該アイテムを受け取るタイミングは、アイテムが付与されたタイミングとは別であってもよい。例えば、上記の実績画像は、付与されたアイテムを示す画像を含んでおり、プレイヤが当該画像を指定することで、当該アイテムが受領されるようにしてもよい。
【0261】
なお、上記の第2例および第3例においては、ゲームシステム1は、地形オブジェクトに関するボクセルの変化の度合いに応じてイベントを実行した。ここで、他の実施形態においては、ゲームシステム1は、地形オブジェクト以外の他のボクセルオブジェクトに関するボクセルの変化の度合いを考慮してイベントを実行してもよい。
【0262】
以上のように、上記第1~第3例においては、各イベントは、ボクセルの変化の度合いが所定の度合いに達したことに応じて発生する。これによれば、ボクセルオブジェクトをより多く変形させることで多くのイベントが発生し得るので、より多くのボクセルオブジェクトを変形させる動機づけをプレイヤに与えることができる。
【0263】
[3.ゲームシステムにおける処理の具体例]
次に、
図39~
図43を参照して、ゲームシステム1における情報処理の具体例について説明する。
【0264】
図39は、ゲームシステム1における情報処理に用いられる各種データの一例を示す図である。
図39に示す各データは、本体装置2がアクセス可能なメモリ(例えば、フラッシュメモリ84、DRAM85、および/または、スロット23に装着されたメモリカード等)に記憶される。
図39に示すように、ゲームシステム1はゲームプログラムを記憶する。ゲームプログラムは、本実施形態におけるゲーム処理(具体的には、
図40に示すゲーム処理)を実行するためのものである。なお、ゲームプログラムには、上述のマテリアルデータ(
図12参照)が含まれる。また、上記メモリには、上述のボクセルデータ(
図11参照)、更新範囲データ、メッシュデータ、更新回数データ、弾データ、全体減少量データ、グループ減少量データ、および、オブジェクトデータ等が記憶される(
図39参照)。
【0265】
更新範囲データは、上述の更新範囲を示すデータである。本実施形態においては、上述のSDFによって更新範囲が表される。
【0266】
メッシュデータは、ボクセルオブジェクトのメッシュに関する各種データを含む。
図39に示すように、本実施形態においては、メッシュデータは、SVOデータ、表示用メッシュデータ、および、判定用メッシュデータを含む。SVOデータは、ボクセルデータから算出される各頂点を、上述のSVO構造で保持するデータである。なお、本実施形態においては、SVOデータには、各頂点の位置を示すデータに加えて、各頂点に設定されるマテリアルを示すデータ(例えば、マテリアルのIDを示すデータ)が含まれる。表示用メッシュデータは、表示用メッシュに関する各種データを含む。具体的には、表示用メッシュデータは、表示用メッシュの各頂点を示すデータと、各頂点に設定されるマテリアルを示すデータ(例えば、マテリアルのIDを示すデータ)を含む。判定用メッシュデータは、判定用メッシュに関する各種データを含む。具体的には、判定用メッシュデータは、判定用メッシュの各頂点を示すデータと、各頂点に設定されるマテリアルを示すデータ(例えば、マテリアルのIDを示すデータ)を含む。
【0267】
更新回数データは、上述の吸い込みアクションによるボクセルの密度の更新が行われた回数を示す。なお、ゲームの開始時においては、上記回数は0に設定される。また、弾データは、プレイヤキャラクタが投げアクションを行う弾の数、および、弾毎のマテリアルを示す。なお、ゲームの開始時においては、弾の数は、予め定められた所定数に設定される。
【0268】
全体減少量データは、地形オブジェクトのボクセルに関する上述の累積の減少量を示す。また、グループ減少量データは、地形オブジェクトのボクセルに関する、マテリアルのグループ毎の累積の減少量を示す。なお、ゲームの開始時においては、これらの累積の減少量は0に設定される。
【0269】
オブジェクトデータは、ボクセルオブジェクト以外のオブジェクト(例えば、プレイヤキャラクタや、破片オブジェクト等)に関する各種データを含む。オブジェクトデータは、ゲーム空間に登場するオブジェクト毎に記憶される。オブジェクトデータは、例えば、当該オブジェクトの位置、速度、および状態等を示すデータを含む。
【0270】
図40は、ゲームシステム1によって実行されるゲーム処理の流れの一例を示すフローチャートである。ゲーム処理の実行は、例えば、上記ゲームプログラムの実行中において、プレイヤの指示に応じてゲームが開始されたことに応じて開始される。なお、ステップS1~S15の一連の処理からなる処理ループは、1フレームに1回のサイクルで実行される。
【0271】
なお、本実施形態では、本体装置2のプロセッサ81が、ゲームシステム1に記憶されている上記ゲームプログラムを実行することによって、
図40に示す各ステップの処理を実行するものとして説明する。ただし、他の実施形態においては、上記各ステップの処理のうちの一部の処理を、プロセッサ81とは別のプロセッサ(例えば、専用回路等)が実行するようにしてもよい。また、ゲームシステム1が他の情報処理装置(例えば、サーバ)と通信可能である場合、
図40に示す各ステップの処理の一部は、他の情報処理装置において実行されてもよい。また、
図40に示す各ステップの処理は、単なる一例に過ぎず、同様の結果が得られるのであれば、各ステップの処理順序を入れ替えてもよいし、各ステップの処理に加えて(または代えて)別の処理が実行されてもよい。
【0272】
また、プロセッサ81は、
図40に示す各ステップの処理を、メモリ(例えば、DRAM85)を用いて実行する。すなわち、プロセッサ81は、各処理ステップによって得られる情報(換言すれば、データ)をメモリに記憶し、それ以降の処理ステップにおいて当該情報を用いる場合には、メモリから当該情報を読み出して利用する。
【0273】
図40に示すステップS1において、プロセッサ81は、プレイヤによる操作入力を示す上記操作データを取得する。すなわち、プロセッサ81は、コントローラ通信部83および/または各端子17および21を介して各コントローラから受信される操作データを取得する。ステップS1の次にステップS2の処理が実行される。
【0274】
ステップS2において、プロセッサ81は、処理が必要なゲーム空間のオブジェクトのうち、処理が完了していないいずれかのオブジェクトを処理対象として指定し、指定されたオブジェクトについて、速度を算出する処理、および、前のフレームにおけるオブジェクト同士の接触の結果を反映する処理を実行する。オブジェクトの速度は、後述するステップS13の処理において、今回のフレームにおけるオブジェクトの位置を算出するために用いられる。例えば、指定されたオブジェクトがプレイヤキャラクタである場合、プレイヤキャラクタの速度は、ステップS1で取得された操作データに基づいて算出される。また、指定されたオブジェクトが、プレイヤによって操作されないオブジェクト(例えば、破片オブジェクト)である場合、当該オブジェクトの速度は、ゲームプログラムにおいて予め定められたルールに基づいて算出される。例えば破片オブジェクトの速度は、地形オブジェクト上に配置されて移動していない場合には0に設定され、プレイヤキャラクタに把持されている場合にはプレイヤキャラクタの速度と同じに設定され、プレイヤキャラクタによる投げアクションによって放たれた場合には、上記ルールで決められた大きさで上述のエイム方向に移動する速度に設定される。具体的には、オブジェクトの速度は、オブジェクト間の相互作用を含めた仮想的な物理演算に基づいて算出される。例えば、オブジェクト同士の衝突による反発や、接触による摩擦等の相互作用、仮想的な重力による落下や仮想的な空気抵抗による減速等が速度決定に反映される。
【0275】
また、前のフレームにおけるオブジェクト同士の接触の結果を反映する処理には、前のフレームにおけるコリジョン判定(ステップS10)においてオブジェクト同士が接触したと判定された場合に、当該オブジェクトに対して接触による影響を与える処理が含まれる。上記処理は、例えば次のような処理である。
・前のフレームにおいてプレイヤキャラクタが溶岩の地形オブジェクトに接触したと判定された場合に、プレイヤキャラクタの体力を減少させる処理
・前のフレームにおいて引き抜きアクションあるいはパンチアクションによってプレイヤキャラクタが地形オブジェクトに接触したと判定された場合に、破片オブジェクトを生成する処理
・前のフレームにおいて破片オブジェクトが岩の地形オブジェクトに接触したと判定された場合に、破片オブジェクトを消滅させる処理
以上のステップS2の処理においてオブジェクトに関する状態が変更された場合、プロセッサ81は、当該オブジェクトに関してメモリに記憶されているオブジェクトデータを、変更後の内容を示すように更新する。ステップS2の次にステップS3の処理が実行される。
【0276】
ステップS3において、プロセッサ81は、ステップS2で指定されたオブジェクトによって、ボクセルオブジェクトを更新させる更新イベントが発生したか否かを判定する。例えば、ステップS3の判定は、前のフレームにおけるコリジョン判定(ステップS10)の結果に基づいて行われる。例えば、前のフレームにおいて引き抜きアクションあるいはパンチアクションによってプレイヤキャラクタが地形オブジェクトに接触したと判定された場合には、地形オブジェクトの一部が消去されたように変形させる(
図26および
図27参照)更新イベントが発生したと判定される。なお、このような更新イベントには、プレイヤキャラクタによるパンチアクションや吸い込みアクションによって、地形オブジェクトの一部が消去されたように変形させ、さらに一定条件下で、変形された部分とその周囲の部分の範囲についてのマテリアルが変更される(
図30および
図33参照)イベントが含まれる。また例えば、前のフレームにおいて破片オブジェクトが岩の地形オブジェクトに接触したと判定された場合には、破片オブジェクトが地形オブジェクトに付いたように地形オブジェクトを変形させる(
図29参照)更新イベントが発生したと判定される。ステップS3の判定結果が肯定である場合、ステップS4の処理が実行される。一方、ステップS3の判定結果が否定である場合、ステップS5の処理が実行される。
【0277】
ステップS4において、プロセッサ81は、ステップS3で更新イベントが発生したと判定されたボクセルオブジェクトに関するボクセルデータを更新するボクセル更新処理を実行する。以下、
図41を参照して、ステップS4のボクセル更新処理の詳細について説明する。
【0278】
図41は、
図40に示すステップS4のボクセル更新処理の詳細な流れの一例を示すサブフローチャートである。ボクセル更新処理においてはまずステップS21において、プロセッサ81は、ステップS3で発生したと判定された更新イベントが、ボクセルオブジェクトの変形を行うイベントであるか否かを判定する。ステップS21の判定は、当該更新イベントの種類に基づいて行われる。例えば、上述の
図26、
図27、
図29、
図31、および、
図37に示す更新イベントについては、ボクセルオブジェクトの変形を行うイベントであると判定される。なお、本実施形態においては、ボクセルの密度を変更せずにマテリアルのみを変更するイベントが行われてもよく、このようなイベントは、ボクセルオブジェクトの変形を行うイベントではないと判定される。ステップS21の判定結果が肯定である場合、ステップS22の処理が実行される。一方、ステップS21の判定結果が否定である場合、ステップS24の処理が実行される。
【0279】
ステップS22において、プロセッサ81は、当該ボクセルオブジェクトに関するボクセルの密度の更新を行う密度更新範囲をゲーム空間に設定する。例えば、密度更新範囲の具体的な内容(すなわち、位置、形状、および、大きさ)は、ゲームプログラムにおいて更新イベントの種類毎に関連付けられている。ステップS22で設定される密度更新範囲は、ステップS3において発生すると判定された更新イベントの種類に関連付けられる内容となるように設定される。プロセッサ81は、設定された密度更新範囲を示すデータを更新範囲データとしてメモリに記憶する。ステップS22の次にステップS23の処理が実行される。
【0280】
ステップS23において、プロセッサ81は、ステップS22で設定された密度更新範囲に対応するボクセルについて、更新イベントに応じた密度の更新を行う。例えば、ボクセルオブジェクトが消去(破壊とも言う)されるように変形させる場合には、密度更新範囲に対応するボクセルの密度を減少させる更新が行われる。また例えば、ボクセルオブジェクトの内側領域の体積が増加するように変形させる場合には、密度更新範囲に対応するボクセルの密度を増加させる更新が行われる。具体的には、プロセッサ81は、密度更新範囲に対応するボクセルの密度を変更するように、メモリに記憶されているボクセルデータを更新する。なお、密度更新範囲に対応するボクセルの密度を更新する具体的な方法は、ゲームプログラムにおいて更新イベントの種類毎に関連付けられている。例えば、吸い込みアクションに応じて地形オブジェクトを変形させるイベントにおいては、地形オブジェクト272の内部領域が収縮するように変形されるような方法(
図32参照)で、密度が更新される。ステップS23の次にステップS24の処理が実行される。
【0281】
ステップS24において、プロセッサ81は、ステップS3で発生したと判定された更新イベントが、ボクセルオブジェクトのマテリアルを変更するイベントであるか否かを判定する。ステップS24の判定は、当該更新イベントの種類に基づいて行われる。例えば、吸い込みアクションに応じて地形オブジェクトを変形させるイベント(
図31参照)については、ボクセルオブジェクトのマテリアルを変更するイベントであると判定される。一方、
図26、
図27、
図29、および、
図37に示す更新イベントの例については、ボクセルオブジェクトのマテリアルを変更するイベントではないと判定される。ステップS24の判定結果が肯定である場合、ステップS25の処理が実行される。一方、ステップS24の判定結果が否定である場合、ステップS27の処理が実行される。
【0282】
ステップS25において、プロセッサ81は、当該ボクセルオブジェクトに関するボクセルのマテリアルの変更を行うマテリアル更新範囲をゲーム空間に設定する。例えば、上記ステップS22の処理によって密度更新範囲が設定される場合、マテリアル更新範囲は当該密度更新範囲に基づいて生成される(
図33参照)。なお、対応する密度更新範囲が設定されないマテリアル更新範囲については、マテリアル更新範囲の具体的な内容(すなわち、位置、形状、および、大きさ)は、例えば、ゲームプログラムにおいて更新イベントの種類毎に関連付けられている。上記ステップS22の処理が実行されない場合、マテリアル更新範囲は、ステップS3において発生すると判定された更新イベントの種類に関連付けられる内容となるように設定される。プロセッサ81は、設定されたマテリアル更新範囲を示すデータを更新範囲データとしてメモリに記憶する。ステップS25の次にステップS26の処理が実行される。
【0283】
ステップS26において、プロセッサ81は、ステップS25で設定されたマテリアル更新範囲に対応するボクセルについて、更新イベントに応じたマテリアルの変更を行う。例えば、プロセッサ81は、マテリアル更新範囲に対応するボクセルのマテリアルを、変更前のマテリアルに対応付けられる内部マテリアルに変更したり、所定のマテリアルに変更したりする。プロセッサ81は、マテリアル更新範囲に対応するボクセルのマテリアルを変更するように、メモリに記憶されているボクセルデータを更新する。ステップS26の後、ステップS27の処理が実行される。
【0284】
ステップS27において、プロセッサ81は、上記ステップS23の処理後のボクセルデータについて、ボクセルオブジェクトの欠片部分が生じるか否かを判定する。具体的には、プロセッサ81は、上述の判定範囲内の領域のうちから、消去すべき欠片部分に対応する小領域が特定されるか否かを判定する。ステップS27の判定結果が肯定である場合、ステップS28の処理が実行される。一方、ステップS27の判定結果が否定である場合、プロセッサ81はボクセル更新処理を終了する。
【0285】
ステップS28において、プロセッサ81は、ステップS27の処理において特定された小領域に対応するボクセルについて密度を更新する。具体的には、プロセッサ81は、当該ボクセルの密度が基準値未満の値になるように、メモリに記憶されているボクセルデータを更新する。ステップS28の後、プロセッサ81はボクセル更新処理を終了する。
【0286】
図40の説明に戻り、ステップS4のボクセル更新処理の次のステップS5において、プロセッサ81は、処理が必要な全てのオブジェクトについて上記ステップS2~S4の処理が完了したか否かを判定する。ステップS5の判定結果が肯定である場合、ステップS6の処理が実行される。一方、ステップS5の判定結果が否定である場合、ステップS2の処理が再度実行される。
【0287】
ステップS6において、プロセッサ81は、ゲーム空間におけるボクセルオブジェクトの頂点を更新する。すなわち、上記ステップS5の処理においてボクセルデータが更新された場合には、更新後のボクセルデータに基づいて新たな頂点が算出される。なお、新たな頂点の位置は、上記[2-3.頂点の算出]で述べた方法に従って算出される。また、新たな頂点のマテリアルは、上記[2-4.頂点のマテリアルの決定]で述べた方法に従って算出される。ステップS6の次にステップS7の処理が実行される。
【0288】
ステップS7において、プロセッサ81は頂点の簡略化を行う。すなわち、プロセッサ81は、ステップS6の処理による更新後の各頂点について、上記[2-5.頂点の簡略化]で述べた方法に従って簡略化を行う。メモリに記憶されるSVOデータは、以上のステップS6およびS7の処理によって得られた各頂点を示すように更新される。したがって、ステップS6およびS7の処理によってSVOデータの更新が行われる。なお、ステップS6およびS7の処理は、ボクセルデータの全体について頂点を算出しなおす必要はなく、ステップS5の処理においてボクセルの内容が変更された部分についてのみ実行されてもよい。ステップS7の次にステップS8の処理が実行される。
【0289】
ステップS8において、プロセッサ81は、メモリに記憶されるSVOデータに基づいてボクセルオブジェクトの表示用メッシュを更新する。なお、表示用メッシュの各頂点の位置、および、表示用メッシュの各ポリゴンのマテリアル(すなわち、ポリゴンの各頂点に設定されるマテリアル)は、上記[2-6.メッシュの生成]および[2-6-1.表示用メッシュのマテリアルの決定]で述べた方法に従って算出される。プロセッサ81は、メモリに記憶されている表示用メッシュデータを、更新後の表示用メッシュの各頂点の位置およびマテリアルを示すように更新する。ステップS8の次にステップS9の処理が実行される。なお、プロセッサ81は、ステップS8の完了を待たずに、ステップS9以降の処理を開始し、並行して実行するようにしてもよい。その場合、ステップS8はステップS14の開始前に完了している必要がある。
【0290】
ステップS9において、プロセッサ81は、メモリに記憶されるSVOデータに基づいてボクセルオブジェクトの判定用メッシュを更新する。なお、判定用メッシュの各頂点の位置、および、判定用メッシュの各ポリゴンのマテリアル(すなわち、ポリゴンの各頂点に設定されるマテリアル)は、上記[2-6.メッシュの生成]および[2-6-2.判定用メッシュのマテリアルの決定]で述べた方法に従って算出される。プロセッサ81は、メモリに記憶されている判定用メッシュデータを、更新後の判定用メッシュの各頂点の位置およびマテリアルを示すように更新する。ステップS9の次にステップS10の処理が実行される。
【0291】
なお、
図36に示す例においては、判定用メッシュの生成処理(ステップS9)を毎フレーム実行するものとしたが、判定用メッシュの生成処理は、毎フレーム実行されなくてもよい。例えば、ステップS10のコリジョン判定処理が所定の条件を満たすフレームにおいてのみ実行される場合、プロセッサ81は、ステップS10のコリジョン判定を行うフレームで判定用メッシュの生成処理を実行してもよい。また、プロセッサ81は、ゲーム空間のうちでステップS10のコリジョン判定を行う領域内のボクセルについて判定用メッシュの生成処理を実行してもよい。例えば、ゲーム空間においてプレイヤキャラクタの周囲にはボクセルオブジェクト以外にはコリジョン判定の対象となるオブジェクトが存在しない状況(つまり、プレイヤキャラクタとその周囲のボクセルオブジェクトとのコリジョン判定のみを行えばよい状況)では、プロセッサ81は、プレイヤキャラクタを基準とした所定範囲内のボクセルについて判定用メッシュの生成処理を実行してもよい。
【0292】
ステップS10において、プロセッサ81は、メモリに記憶されている判定用メッシュデータとオブジェクトデータとに基づいて、ゲーム空間における各オブジェクトについてコリジョン判定を行う。すなわち、プロセッサ81は、ボクセルオブジェクトについては判定用メッシュを用い、ボクセルオブジェクトでないオブジェクトについては当該オブジェクトに設定される所定形状の判定領域を用いて、コリジョン判定を行う。なお、本実施形態においては、上記ステップS2で算出された速度を考慮してステップS10のコリジョン判定が行われる。つまり、プロセッサ81は、各オブジェクトの位置として、上記速度で移動した場合の位置を用いてコリジョン判定を行う。
【0293】
本実施形態においては、ステップS10のコリジョン判定によって例えば次の接触の有無が判定される。
・移動、パンチアクション、または、引き抜きアクションを行うプレイヤキャラクタと、地形オブジェクトとの接触
・(破片オブジェクトを)持ち上げるアクションを行うキャラクタと破片オブジェクトとの接触
・プレイヤキャラクタの位置からエイム方向に延びる直線と地形オブジェクトとの接触
・プレイヤキャラクタによる投げアクションによって放たれた破片オブジェクトと、地形オブジェクトとの接触
・吸い込みアクションを行うプレイヤキャラクタの位置から照準画像が指し示す方向へ延びる直線(
図33参照)と、地形オブジェクトとの接触
なお、ステップS10のコリジョン判定においてオブジェクト同士が接触したと判定された場合には、次のフレームにおけるステップS2の処理において、オブジェクト同士の接触の結果を反映する処理が実行されたり、次のフレームにおけるステップS3の処理において、更新イベントが発生したと判定されたりする。ステップS10の次にステップS11の処理が実行される。
【0294】
ステップS11において、プロセッサ81は、プレイヤキャラクタ制御処理を実行する。プレイヤキャラクタ制御処理においては、プレイヤによる操作入力に基づいて、プレイヤキャラクタに関する制御処理が実行される。以下、
図42を参照して、プレイヤキャラクタ制御処理の詳細について説明する。
【0295】
図42は、
図40に示すステップS11のプレイヤキャラクタ制御処理の詳細な流れの一例を示すサブフローチャートである。プレイヤキャラクタ制御処理においては、まずステップS31において、プロセッサ81は、プレイヤキャラクタに対する操作入力が受け付けられる操作受付期間であるか否かを判定する。ここで、本実施形態においては、プレイヤによる操作入力に応じてプレイヤキャラクタが所定のアクション(例えば、後述するステップS36において開始されるアクション)を行っている期間は、操作受付期間から外されるものとする。ステップS31の判定結果が肯定である場合、ステップS32の処理が実行される。一方、ステップS31の判定結果が否定である場合、後述するステップS41の処理が実行される。
【0296】
ステップS32において、プロセッサ81は、上記ステップS1において取得された操作データに基づいて、プレイヤキャラクタに対するアクション指示のための操作入力が行われたか否かを判定する。アクション指示は、例えば、パンチアクション、引き抜きアクション、吸い込みアクション、弾を投げる構えをとるアクション、または、弾を投げるアクション等をプレイヤキャラクタに行わせるための指示である。ステップS32の判定結果が肯定である場合、ステップS33の処理が実行される。一方、ステップS32の判定結果が否定である場合、ステップS39の処理が実行される。
【0297】
ステップS33において、プロセッサ81は、ステップS32で行われたアクション指示が、弾を投げる構えをとるアクションをプレイヤキャラクタに行わせるための指示であるか否かを判定する。ステップS33の判定結果が肯定である場合、ステップS34の処理が実行される。一方、ステップS33の判定結果が否定である場合、ステップS36の処理が実行される。
【0298】
ステップS34において、プロセッサ81は、プレイヤキャラクタが投げることができる弾の数が1以上であるか否かを判定する。具体的には、プロセッサ81は、メモリに記憶されている弾データが示す数が1以上であるか否かを判定する。ステップS34の判定結果が肯定である場合、ステップS35の処理が実行される。一方、ステップS34の判定結果が否定である場合、ステップS39の処理が実行される。この場合、プレイヤキャラクタは、弾を投げる構えをとるアクションを行わないこととなる。
【0299】
ステップS35において、プロセッサ81は、プレイヤキャラクタが投げることができる弾の数を1だけ減少させる。具体的には、メモリに記憶されている弾データは、1減算された値に更新される。ステップS35の次にステップS36の処理が実行される。
【0300】
ステップS36において、プロセッサ81は、ステップS32で行われたアクション指示が、弾を投げる投げアクションをプレイヤキャラクタに行わせるための指示であるか否かを判定する。ステップS36の判定結果が肯定である場合、ステップS37の処理が実行される。一方、ステップS36の判定結果が否定である場合、ステップS38の処理が実行される。
【0301】
ステップS37において、プロセッサ81は、プレイヤキャラクタが、弾を投げる構え状態となっているか否かを判定する。ステップS37の判定結果が肯定である場合、ステップS38の処理が実行される。一方、ステップS37の判定結果が否定である場合、ステップS39の処理が実行される。この場合、プレイヤキャラクタは、弾を投げるアクションを行わないこととなる。
【0302】
ステップS38において、プロセッサ81は、ステップS32で行われたアクション指示に応じたアクションをプレイヤキャラクタに開始させる。ステップS38でプレイヤキャラクタがアクションを開始した後においては、後述するステップS41の処理によって、一定期間にわたって当該アクションを行うようにプレイヤキャラクタが制御される。ステップS38の後、プロセッサ81は、
図42に示すプレイヤキャラクタ制御処理を終了する。
【0303】
ステップS39において、プロセッサ81は、上記ステップS1において取得された操作データに基づいて、プレイヤキャラクタに対する移動指示のための操作入力が行われたか否かを判定する。移動指示は、ゲームフィールド上においてプレイヤキャラクタを移動させる動作を行わせるための指示である。ステップS39の判定結果が肯定である場合、ステップS40の処理が実行される。一方、ステップS39の判定結果が否定である場合、ステップS41の処理が実行される。
【0304】
ステップS40において、プロセッサ81は、ステップS39で行われた移動指示に応じてプレイヤキャラクタをフィールド上において移動する動作を行わせる。ステップS39の後、プロセッサ81は、
図42に示すプレイヤキャラクタ制御処理を終了する。
【0305】
ステップS41において、プロセッサ81は、ステップS38で開始されたアクションの進行や、プレイヤによる入力がされていない場合における動作等、各種の動作を行うようにプレイヤキャラクタを制御する。なお、1回のステップS41においては、プロセッサ81は、1フレーム時間分の動作の進行を行うようにプレイヤキャラクタを制御する。ステップS41の処理が複数フレームにわたって繰り返し実行されることで、上記のアクション指示に応じた一連の動作をプレイヤキャラクタが行うこととなる。
【0306】
なお、プレイヤキャラクタが行うべき動作がプレイヤによって指示されていない場合(例えば、ステップS38で開始された動作が終了している場合)には、上記ステップS41において、プロセッサ81は、プレイヤキャラクタに動作を行わせなくてもよいし、プレイヤキャラクタの挙動を自然に見せるための動作(例えば、辺りを見回したり、体を揺らしたりする動作)を行わせてもよい。ステップS41の後、プロセッサ81は、
図42に示すプレイヤキャラクタ制御処理を終了する。
【0307】
図40の説明に戻り、ステップS11のプレイヤキャラクタ制御処理の次のステップS12において、プロセッサ81は、イベント処理を実行する。イベント処理は、ボクセルオブジェクトの変形に応じて行われるイベントを行うための処理である。以下、
図43を参照して、イベント処理の詳細について説明する。
【0308】
図43は、
図40に示すステップS12のイベント処理の詳細な流れの一例を示すサブフローチャートである。イベント処理においては、まずステップS51において、プロセッサ81は、プレイヤキャラクタが吸い込みアクションを行っているか否かを判定する。上記ステップS38の処理によって吸い込みアクションの制御が開始されてから吸い込みアクションが終了するまでの期間、ステップS51の判定結果は肯定となる。ステップS51の判定結果が肯定である場合、ステップS52の処理が実行される。一方、ステップS51の判定結果が否定である場合、後述するステップS57の処理が実行される。
【0309】
ステップS52において、プロセッサ81は、現在のフレームにおいて、吸い込みアクションによって地形オブジェクトに関するボクセルの密度が更新されたか否かを判定する。吸い込みアクションに起因して、上記ステップS23の処理における密度の更新が行われる場合、ステップS52の判定結果は肯定となる。ステップS52の判定結果が肯定である場合、ステップS53の処理が実行される。一方、ステップS52の判定結果が否定である場合、後述するステップS59の処理が実行される。
【0310】
ステップS53において、プロセッサ81は、吸い込みアクションに起因するボクセルの密度の更新が行われた回数をカウントする。プロセッサ81は、更新回数を示すデータをメモリに記憶しており、ステップS53においては、当該データが示す更新回数の値を1だけ増加させる。ステップS53の次にステップS54の処理が実行される。
【0311】
ステップS54において、プロセッサ81は、ステップS53でカウントされた更新回数が所定回数に達したか否かを判定する。ステップS54の判定結果が肯定である場合、ステップS55の処理が実行される。一方、ステップS54の判定結果が否定である場合、後述するステップS59の処理が実行される。
【0312】
ステップS55において、プロセッサ81は、プレイヤキャラクタが投げることができる弾の数を1だけ増加させるとともに、増加される弾のマテリアルを決定する。弾のマテリアルは、上記[2-8-1.第1例(弾の数が増加されるイベント、および、プレイヤキャラクタが弾を投げるイベントが行われる例)]で述べた方法に従って、吸い込みアクションによって密度が変化したボクセルのマテリアルに基づいて決定される。プロセッサ81は、上記で決定されたマテリアルの弾を示すデータを含むように、メモリに記憶されている弾データを更新する。ステップS55の次にステップS56の処理が実行される。
【0313】
ステップS56において、プロセッサ81は、カウントされる更新回数をリセットする。具体的には、メモリに記憶されている更新回数を示すデータは、0を示す内容に更新される。ステップS56の次に、後述するステップS59の処理が実行される。
【0314】
本実施形態においては、プレイヤキャラクタが吸い込みアクションを行う期間においては、毎フレームにおけるイベント処理において上記ステップS51~S56の一連の処理が実行される。その結果、更新回数が所定回数に達する度に、弾を追加するイベントが実行されることとなる。
【0315】
ステップS57において、プロセッサ81は、プレイヤキャラクタによる吸い込みアクションが終了した直後であるか否かを判定する。ステップS57の判定結果が肯定である場合、ステップS58の処理が実行される。一方、ステップS57の判定結果が否定である場合、後述するステップS59の処理が実行される。
【0316】
ステップS58において、プロセッサ81は、上記ステップS55と同様にして、カウントされる更新回数をリセットする。ステップS58の次にステップS59の処理が実行される。
【0317】
ステップS59において、プロセッサ81は、地形オブジェクトのボクセルに関する上述の累積の減少量を算出する。なお、ステップS62で算出される累積の減少量は、地形オブジェクトの全体に関する減少量である。累積の減少量は、上記[2-8-2.第2例(地形オブジェクト中にアイテムが配置されるイベントが行われる例)]で述べた方法に従って算出される。例えば、プロセッサ81は、メモリに記憶されている全体減少量データが示す、これまでの累積の減少量に、今回のフレームにおける上記ステップS23における密度の更新に起因する減少量を加算することで、現時点での累積の減少量を算出することができる。プロセッサ81は、算出された累積の減少量を示すデータを、新たな全体減少量データとしてメモリに記憶する。ステップS59の次にステップS60の処理が実行される。
【0318】
ステップS60において、プロセッサ81は、ステップS59で算出された累積の減少量が、アイテムオブジェクトを配置する条件を満たすか否かを判定する。具体的には、プロセッサ81は、累積の減少量が所定の閾値以上となったか否かを判定する。ステップS60の判定結果が肯定である場合、ステップS61の処理が実行される。一方、ステップS60の判定結果が否定である場合、ステップS63の処理が実行される。
【0319】
ステップS61において、プロセッサ81は、ゲーム空間にアイテムオブジェクトを配置する。具体的には、プロセッサ81は、上記[2-8-2.第2例(地形オブジェクト中にアイテムが配置されるイベントが行われる例)]で述べた方法に従って、地形オブジェクトの変形が行われた位置、および/または、プレイヤキャラクタの位置に基づいて、アイテムオブジェクトの配置位置を決定する。プロセッサ81は、決定された配置位置にアイテムオブジェクトが配置される内容となるように、アイテムオブジェクトに関するオブジェクトデータをメモリに記憶する。ステップS61の次にステップS62の処理が実行される。
【0320】
ステップS62において、プロセッサ81は、ステップS59で算出された累積の減少量をリセットする。具体的には、メモリに記憶されている全体減少量を示すデータは、0を示す内容に更新される。ステップS62の後、ステップS63の処理が実行される。
【0321】
ステップS63において、プロセッサ81は、地形オブジェクトのボクセルに関する上述の累積の減少量を、マテリアルのグループ毎に算出する。マテリアルのグループ毎の累積の減少量は、上記[2-8-3.第3例(ゲームにおけるアイテムが付与されるイベントが行われる例)]で述べた方法に従って算出される。例えば、プロセッサ81は、メモリに記憶されているグループ減少量データが示す、グループ毎のこれまでの累積の減少量に対して、今回のフレームにおける上記ステップS23における密度の更新に起因するグループ毎の減少量を加算することで、現時点での累積の減少量を算出することができる。なお、プロセッサ81は、マテリアルのグループ毎に累積の減少量を算出し、算出されたそれぞれの累積の減少量を示すデータを、新たなグループ減少量データとしてメモリに記憶する。ステップS63の次にステップS64の処理が実行される。
【0322】
ステップS64において、プロセッサ81は、ステップS63で算出されたマテリアルの各グループについての累積の減少量のいずれかが、アイテムを付与する条件を満たすか否かを判定する。具体的には、プロセッサ81は、各グループについての累積の減少量のいずれかが、所定の閾値以上となったか否かを判定する。ステップS64の判定結果が肯定である場合、ステップS65の処理が実行される。一方、ステップS64の判定結果が否定である場合、プロセッサ81は、イベント処理を終了する。
【0323】
ステップS65において、プロセッサ81は、ステップS64において満たすと判定された条件に応じたアイテムを付与する。例えば、メモリに記憶されている、プレイヤキャラクタに関するデータのうち、プレイヤキャラクタが所持するアイテムに関するデータが更新される。ステップS65の後、プロセッサ81はイベント処理を終了する。
【0324】
図40の説明に戻り、ステップS12のイベント処理の次のステップS13において、プロセッサ81は、プレイヤキャラクタ以外の各オブジェクトの動作を制御する。例えば、敵キャラクタは、ゲームプログラムにおいて定められるアルゴリズムに従って動作が制御される。また例えば、弾のオブジェクトや破片のオブジェクトは、プレイヤキャラクタによる投げアクションによって放たれたことに応じて、投げアクションの方向に移動するように制御される。なお、1回のステップS13の処理においては、プロセッサ81は、複数フレームにわたって行われる動作(例えば、敵キャラクタによるアクション)については1フレーム分の動作の進行を行うように各オブジェクトを制御する。ステップS13の処理が複数フレームにわたって繰り返し実行されることで、移動や各種アクションに関する一連の動作を各オブジェクトが行うこととなる。また、オブジェクトの位置は、基本的には、上記ステップS2で算出される速度で移動した後の位置となるように決定される。ただし、ステップS10のコリジョン判定によって他のオブジェクトと接触すると判定され、接触した他のオブジェクトによって移動が妨げられる場合には、当該オブジェクトの位置は変化しないように決定される。メモリに記憶されているオブジェクトデータは、ステップS13における制御後のオブジェクトを示す内容となるように更新される。ステップS13の次にステップS14の処理が実行される。
【0325】
ステップS14において、プロセッサ81は、ゲーム画像を生成する。すなわち、プロセッサ81は、ボクセルオブジェクトの表示用メッシュの各ポリゴン、および、ボクセルオブジェクト以外の各オブジェクトのポリゴンについて、仮想カメラに基づいて描画を行うことでゲーム画像を生成する。なお、表示用メッシュの各ポリゴンは、上記[2-6-1.表示用メッシュのマテリアルの決定]で述べた方法に従って、ポリゴンに設定されるマテリアルに対応するテクスチャ等の描画設定を用いて描画される。また、本実施形態においては、プレイヤキャラクタが、投げアクションが可能な状態である場合には、プロセッサ81は、上述の照準画像を含むようにゲーム画像を生成する(
図28参照)。ステップS14で生成されたゲーム画像は、1フレームに1回のサイクルで表示装置に出力されて表示される。ステップS14の次にステップS15の処理が実行される。
【0326】
ステップS15において、プロセッサ81は、ゲームを終了するか否かを判定する。例えば、プロセッサ81は、ゲームを終了するための所定の操作入力がプレイヤによって行われた場合、ゲームを終了すると判定する。ステップS15の判定結果が否定である場合、ステップS1の処理が再度実行される。以降、ステップS15においてゲームを終了すると判定されるまで、ステップS1~S15の一連の処理が繰り返し実行される。一方、ステップS15の判定結果が肯定である場合、プロセッサ81は、
図40に示すゲーム処理を終了する。
【0327】
[4.本実施形態の作用効果および変形例]
上記実施形態によれば、ゲームシステム1は、ゲームにおける第1のイベントの発生に応じてボクセルの密度が更新された場合に、ボクセルの変化の度合いに基づいた第2のイベントを発生させる。これによって、ボクセルオブジェクトの表示用メッシュの変形に応じてゲームイベントを発生させることができ、ゲームの戦略性や興趣性を向上することができる。
【0328】
なお、上記「表示用メッシュ」とは、表示のみに用いられるメッシュであってもよいし、表示以外にも用いられるメッシュであってもよい意味である。また、上記「判定用メッシュ」とは、コリジョン判定のみに用いられるメッシュであってもよいし、コリジョン判定以外にも用いられるメッシュであってもよい意味である。上記実施形態においては、表示用メッシュと判定用メッシュという2種類のメッシュが用いられたが、他の実施形態においては、表示にもコリジョン判定にも用いられる1種類のメッシュが生成されてもよい。
【0329】
また、上記実施形態によれば、第1のイベントの発生中においてボクセルの更新範囲を連続的に生成し、更新範囲に対応するボクセルについて、当該ボクセルおよび周囲のボクセルの密度のいずれかが基準値未満である場合に密度を減少させるように更新を行う(
図32参照)。これによれば、ボクセルオブジェクトの表面が徐々に削除されていくような新規な方法で、ボクセルオブジェクトのメッシュを変形させることができる。
【0330】
なお、上記実施形態においては、ボクセルの変化の度合いを、マテリアル毎に算出する態様と、マテリアルのグループ毎に算出する態様とを区別して説明したが、同じ性質を有するマテリアルは1種類のマテリアルであるとみなすこともできる。このようにみなす場合には、「マテリアル毎の変化の度合い」とは、1つのグループに属するいくつかのマテリアル毎の変化の度合いを含む意味であるということができる。
【0331】
なお、上記の実施形態において、ある情報処理装置においてデータ(プログラムを含む意味である)を用いて処理が実行される場合、当該処理に必要なデータの一部が、当該ある情報処理装置とは異なる他の情報処理装置から送信されてもよい。このとき、当該ある情報処理装置は、他の情報処理装置から受信されたデータと、自身に記憶されているデータとを用いて上記処理を実行してもよい。
【0332】
なお、他の実施形態において、情報処理システムは、上記実施形態における構成の一部を備えていなくてもよいし、上記実施形態において実行される処理の一部を実行しなくてもよい。例えば、情報処理システムは、上記実施形態における一部の特定の結果を得るためには、当該結果を得るための構成を備え、当該結果を得るための処理を実行すればよく、その他の構成を備えていなくてもよいし、その他の処理を実行しなくてもよい。
【産業上の利用可能性】
【0333】
上記の実施形態は、例えば、ボクセルデータの変化に応じたゲームイベントを発生させること等を目的として、例えばゲームプログラムやゲームシステムとして利用することができる。
【符号の説明】
【0334】
1 ゲームシステム
2 本体装置
81 プロセッサ
201 プレイヤキャラクタ
271 照準画像
272,278,281 地形オブジェクト
276 密度更新範囲
277 マテリアル更新範囲
282 アイテムオブジェクト