Minecraft: Bedrock Edition のフォグでは、JSON ファイルを使用して値を指定します。 クリエイターは、リソース パック内にフォグ値の独自のセットを定義できます。 リソース パックの fogs
というルートに新しいフォルダーを作成できます。 このフォルダー内にある JSON ファイルはすべて、ゲームで使用できる新しいフォグ定義として登録されます。
このチュートリアルでは、次の内容を学びます。
- フォグ ファイルの内容とカスタマイズに使用できるオプション。
- バイオームの定義や
/fog
コマンドなど、さまざまな機能に基づいてフォグが適用される順序。
要件
本チュートリアルを開始する前に、以下を完了しておくことをお勧めします。
JSON
例
バニラ リソース パック テンプレート (こちらで入手) には、ゲームで使用されるすべてのフォグ ファイルが含まれています。 これらのファイルは、独自のフォグ定義を作成する際に例として役立ちます。 完成したフォグ ファイルは次のようになります。
{
"format_version": "1.16.100",
"minecraft:fog_settings": {
"description": {
"identifier": "custom_pack:example"
},
"distance": {
"air": {
"fog_start": 0.92,
"fog_end": 1.0,
"fog_color": "#ABD2FF",
"render_distance_type": "render"
}
},
"volumetric": {
"density": {
"air": {
"density": 0.1,
"max_density_height": 56,
"zero_density_height": 70
}
},
"media_coefficients": {
"air": {
"scattering": [ 0.02, 0.02, 0.02 ],
"absorption": [ 0.0, 0.0, 0.0 ]
}
}
}
}
}
変数
format_version
作成したこのフォグ設定のリソース パックのバージョン。 これは、ゲームの新しいバージョンのアップグレード パスと下位互換性を指定するために使用されます。 最小バージョンは 1.16.100 です。
minecraft:fog_settings
フォグの定義とオプションが含まれます。
description
このフォグ設定の説明が保持されます。これには、主に識別子が含まれます。
identifier
description
オブジェクト内に保持されます。
このフォグ設定を参照するための一意の名前。 各識別子には名前空間が必要です。 また、各識別子は一意である必要があります。一意でない場合、エラーが発生します。 minecraft
名前空間は、バニラ リソース パックでのみ使用できます。
{
"format_version": "1.16.100",
"minecraft:fog_settings": {
"description": {
"identifier": "custom_pack:example"
},
...
}
}
distance
このオブジェクトには、距離ベースのフォグの値を含めます。 これは、プレーヤーから特定の距離を超えたものが見えないように制限するフォグです。 このオブジェクト内の各フィールドには、1 つの種類の距離値を含めます。
次の種類を名前で設定できます。
air
: プレーヤーのカメラが空中にあるときに使用します。weather
: プレーヤーのカメラが空中にあり、天候が現在有効であるときに使用します。water
: プレーヤーのカメラが水中にあるときに使用します。lava
: プレーヤーのカメラが溶岩の中にあるときに使用します。lava_resistance
: プレーヤーのカメラが溶岩の中にあり、カメラの溶岩耐性効果が有効であるときに使用します。
必要に応じて種類を 1 つずつ使用できますが、いずれも任意です。
"distance": {
"air": {
...
},
"water": {
...
}
}
値を設定しなかった場合、ゲームでは、その次に優先度の低いフォグ設定の値が使用されます。 これについては、後述の「アクティブ フォグ スタック」で詳しく説明します。
各距離設定の種類では、次の変数を設定できます。
fog_start
: フォグが発生し始める距離。fog_end
: フォグが完全に不透明になる距離。render_distance_type
: これを設定すると、フォグの距離を計算する際に、開始値と終了値をどのように使用するかが決まります。fixed
: 距離はブロック数で測定されます。render
: 距離は、現在のレンダリング距離に対して乗算されます。fog_color
: フォグの色。
volumetric
このオブジェクトには、ボリューム フォグの値を含めます。 このフォグは、ブロックを通過する光から計算されて表示されます。 現在、これは PBR (レイ トレーシング) にのみ使用されますが、PBR 以外にも追加される予定です。
density
volumetric
オブジェクト内に保持されます。 このオブジェクト内の各フィールドには、1 つの種類の密度値を含めます。
次の種類を名前で設定できます。
air
: プレーヤーのカメラが空中にあるときに使用します。weather
: プレーヤーのカメラが空中にあり、天候が現在有効であるときに使用します。water
: プレーヤーのカメラが水中にあるときに使用します。lava
: プレーヤーのカメラが溶岩の中にあるときに使用します。lava_resistance
: プレーヤーのカメラが溶岩の中にあり、カメラの溶岩耐性効果が有効であるときに使用します。
必要に応じて種類を 1 つずつ使用できますが、いずれも任意です。
"volumetric": {
"density": {
"air": {
...
},
"water": {
...
}
}
}
値を設定しなかった場合、ゲームでは、その次に優先度の低いフォグ設定の値が使用されます。 これについては、後述の「アクティブ フォグ スタック」で詳しく説明します。
密度設定の各種類では、次の変数を設定できます。
max_density
: フォグが光をどの程度遮るかを決定する乗数。 0.0 はフォグがなくなり、1.0 はほぼ不透明になります。uniform
:true
に設定すると、すべての高さでフォグ密度が均等になります。zero_density_height
: フォグが発生し始める高さ (ブロック単位)。 これは、uniform
が false に設定されている場合にのみ設定できます。max_density_height
: フォグがmax_density
になる高さ (ブロック単位)。 これは、uniform
が false に設定されている場合にのみ設定できます。
media_coefficients
volumetric
オブジェクト内に保持されます。
このオブジェクト内の各フィールドでは、1 つの種類の係数値を定義します。 これらは、光線がさまざまな媒体/ブロックを通過するときに、フォグによって光がどのように分散または屈折するかを決定するために使用されます。
次の種類を名前で設定できます。
air
: 光が空気を通過するときに使用します。water
: 光が水を通過するときに使用します。cloud
: 光が雲を通過するときに使用します。
必要に応じて種類を 1 つずつ使用できますが、いずれも任意です。
"volumetric": {
"media_coefficients": {
"air": {
...
},
"water": {
...
}
}
}
値を設定しなかった場合、ゲームでは、その次に優先度の低いフォグ設定の値が使用されます。 これについては、後述の「アクティブ フォグ スタック」で詳しく説明します。
係数設定の各種類では、次の変数を設定できます。
scattering
: フォグが拡散する光の RGB の量。 [0.0, 1.0] からの 3 つの乗数の配列、または色の 16 進値として設定できます。absorption
: フォグが吸収する光の RGB の量。 [0.0, 1.0] からの 3 つの乗数の配列、または色の 16 進値として設定できます。
アクティブ フォグ スタック
アクティブ フォグ スタックは、ゲーム内の任意の時点で使用するフォグ設定を決定するために使用されます。 プレーヤーごとに固有のフォグ スタックがあります。
ゲームでフォグの値を決定する必要があるたびに、現在の設定の種類の値が見つかるまで、フォグ スタックの一番上から順にチェックされます。 スタック上のフォグに設定がない場合は、スタック内を下に移動してチェックを続けます。 対象の設定が見つからない場合は、エンジンによって定義されたデフォルト値が代わりに使用されます。
フォグ スタックは、最初は次のように設定されています。一番上から優先度が高い順に並んでいます。
- コマンド: サーバー コマンドによって設定された、プレーヤーに適用される設定。
- バイオーム: 各バイオームに対して定義された設定。
- データ デフォルト: デフォルトのデータ駆動型設定。
- エンジン デフォルト: ハードコードされた値。
コマンド
スタックの一番上にあるコマンド レイヤーには、/fog
コマンドによって指定されたすべての設定があり、1 つのスタックとして上から順に評価されます。 このコマンドの使用方法の詳細については、「フォグ コマンド」を参照してください。
バイオーム
バイオーム レイヤーは、プレーヤーの位置周辺のバイオームによって定義されたすべての設定の平均です。 フォグ設定は、リソース パックのルートにある biomes_client.json
ファイル内のバイオームごとに定義できます。 各バイオーム エントリでは、fog_identifier
という変数を使用し、そのバイオームで使用するフォグ設定に対応する名前を設定できます。
{
"biomes": {
...
"ice_plains": {
"fog_identifier": "minecraft:fog_ice_plains",
...
},
...
"mesa_plateau": {
"fog_identifier": "minecraft:fog_mesa_plateau",
...
},
...
}
}
この方法で default
エントリを設定することもできます。このエントリは、アクティブ フォグ スタックのバイオーム エントリの下で使用されます。 そのため、バイオームのフォグ設定はデフォルトの設定を完全に置き換えるわけではなく、「データ デフォルト」で説明するように、デフォルトの上にバイオームが読み取られます。
データ デフォルト
データ デフォルト レイヤーは、fog_identifier
フィールドによってフォグ定義が参照されている場合、リソース パックのルートにある biomes_client.json
ファイルの default
オブジェクト内で定義されています。
{
"biomes": {
"default": {
"fog_identifier": "minecraft:fog_default",
...
}
},
...
}
エンジン デフォルト
データ駆動型の値がない場合に備えて、スタックの一番下ではハードコードされた値が使用されます。 そのため、これらの値を変更することはできません。また、この下にレイヤーを配置することもできません。
フォグ コマンド
/fog
コマンドを使用して、プレーヤーごとにアクティブ フォグ スタックの "コマンド" レイヤーにあるフォグ設定を管理できます。
このレイヤー内のフォグ設定は、以下で説明する /fog
コマンドの push
、pop
、remove
の各モードを介して順序付けられます。 フォグ設定は、アクティブ フォグ スタックの上から順に評価され、最初にこのレイヤーの上から順に評価されます。
このレイヤー内のフォグ設定はプレーヤーごとに保存され、世界の読み込み時に復元されます。 このように、世界の保存前にプッシュされたフォグ設定は世界の読み込み後も適用されるので、ポップすることができます。
push
ユーザーが指定した ID と共に、新しいフォグ設定を、指定したプレーヤーのアクティブ フォグ スタックのフォグ コマンド レイヤーの一番上にプッシュします。
pop
選択したプレーヤーから、ユーザーが指定した ID (/fog push
コマンドで以前に指定した ID) に一致する一番上のフォグ設定を削除します。
remove
選択したプレーヤーから、ユーザーが指定した ID (1 つ以上の /fog push
コマンドで以前に指定した ID) に一致するすべてのフォグ設定を削除します。