がらくた、ごろごろ

自分用

とりあえずデコレーター記事

0


自分用の備忘録です

間違った内容が含まれてたりするかもしれません!!!

メインのフィーチャーファイルの記事はこちら→https://sayasashi.blog.fc2.com/blog-entry-58.html





デコレーター

デコレーターは、指定したフィーチャーをワールド内に配置するために使用される。
ここではデコレーターのファイル構造や、
使用した際どのようにフィーチャーが配置されるかを検証した結果を書いていく。

※前提
deco_1.png
デコレーターを使用しない場合、フィーチャーはこのようにチャンクごとに規則的に配置される。
生成される高さは0固定である。

※2用語
ハイトマップ…ワールドのy座標の高さ情報。
いくつか種類があるが、ここでは特定のxz座標にて最も高い位置にある空気以外のブロックのy座標に1を足した値を指す場合に用いる。


・minecraft:carving_mask
─config
 ├step
 └probability 数値(f)



・minecraft:chance
フィーチャーがチャンクに生成される可能性を設定する。

─config
 └chance 数値(i)

chance…フィーチャーがおおよそ何チャンクごとに生成されるか指定する。

※参考
doco_3.png
chanceが1のとき。デフォルトと全く変わらない。

doco_2.png
chanceが2のとき。だいたい2チャンクごとに配置される。
つまり特定の1チャンクに配置される確率は50%となる。

deco_4.png
chanceが10のとき。



・minecraft:count
─config
 └count
  ├base 数値(i) 範囲-10~128
  └spread 数値(i) 範囲0~128



・minecraft:count_extra
─config
 ├count 数値(i)
 ├extra_chance 数値(f)
 └extra_count 数値(i)



・minecraft:count_multilayer
─config
 └count
  ├base 数値(i) 範囲-10~128
  └spread 数値(i) 範囲0~128



・minecraft:count_noise
─config
 ├noise_level 数値(d)
 ├below_noise 数値(i)
 └above_noise 数値(i)



・minecraft:count_noise_biased
─config
 ├noise_to_count_ratio 数値(i)
 ├noise_factor 数値(d)
 └noise_offset 数値(d)



・minecraft:dark_oak_tree



・minecraft:decorated
─config
 ├outer デコレーター(compound_tag)
 └inner デコレーター(compound_tag)



・minecraft:depth_average
チャンク内にてフィーチャーの生成される高さを指定した値に沿って正規分布させる。

─config
 ├baseline 数値(i)
 └spread 数値(i)

baseline…基本となる高さを指定する。
実装の都合上この値より1マス低い位置が中心となる。

spread…基本となる高さを中心にどのくらいの範囲ばらけるかを指定する。
設定した値から1を引いた値ぶん範囲がばらける。

※参考
deco_5.png
spreadを5、baselineを100にした。高さ99から上下4マスずつ高さがばらける。



・minecraft:emerald_ore
バニラのエメラルドと同じ配置を利用する。

※参考
deco_7.png
1チャンクに平均6つ、xz方向にランダムな位置かつ
高さ31~4の間にフィーチャーを生成する。



・minecraft:end_gateway



・minecraft:end_island



・minecraft:fire
─config
 └count
  ├base 数値(i) 範囲-10~128
  └spread 数値(i) 範囲0~128



・minecraft:glowstone
─config
 └count
  ├base 数値(i) 範囲-10~128
  └spread 数値(i) 範囲0~128



・minecraft:heightmap
ワールドのハイトマップに沿ってフィーチャーを配置する。

※参考
deco_8.png
石の地形が生成されるワールドにてテスト。
ワールドの表面に沿いフィーチャーが生成されている。

deco_12.png
石の地形と海の高さを設定したワールドにてテスト。
水が存在する場所では、水面にフィーチャーが配置される。



・minecraft:heightmap_spread_double
ワールドの下限からワールドのハイトマップに2をかけ1を引いたの値の範囲にフィーチャーの生成される高さを一様に分布させる。

※参考
deco_13.png
ワールドの下限を0に設定し、y=9の位置にガラスが設置されるスーパーフラットワールドにてテスト。
ハイトマップの値はどこでも10のため、2をかけ1を引いた値、即ち19から0までの高さの範囲にフィーチャーが配置される。
(ガラスと同じ高さにはフィーチャーが生成されていないが、これはフィーチャーの設定によるもの。
デコレーターによる配置自体はきちんとされている。)
バニラの小規模な植生の配置に多く利用されており、地下洞窟に稀に草が生えていたりするのはだいたいこいつのせい。
一応浮遊島などの下に草が生成されるチャンスがあるのもこれのおかげではある。
正直なぜこのような仕様になっているのかよくわからない。

※おまけ
上記の仕様上、地上に配置されるタイプのフィーチャーは地形の高度が低いと極端に生成率が上がり、逆に高いと極端に下がる。
これを踏まえ、生成にこのデコレーターのみが使われているサボテンで実験をしてみた。
deco_14.png
deco_15.png
上が高さ128、下が高さ2の砂漠のスーパーフラットワールドを生成した様子。
かなり明確に差が出た。これが意図された動作なのかどうかはわからない…



・minecraft:heightmap_world_surface
minecraft:heightmapと同じ動作をする(たぶん)

※参考
deco_16.png
多分minecraft:heightmapと同じ…?違いが判る方、情報待ってます。
(ちなみにバニラのフィーチャーの配置には利用されていません)



・minecraft:iceberg



・minecraft:lava_lake
─config
 └chance 数値(i)



・minecraft:magma



・minecraft:nope



・minecraft:range
チャンク内にてフィーチャーの生成される高さを設定した範囲に一様に分布させる。

─config
 ├bottom_offset 数値(i)
 ├maximum 数値(i)
 └top_offset 数値(i)

bottom_offset…生成される高さの下限を指定する。
ワールドの最低高度が基準であり、事実上y座標と同義。

maximum…範囲の基準値を指定する。

top_offset…生成される高さの上限を指定する。
maximumにbottom_offsetを足した値を基準に、下方向に範囲を設定する。
負の値を指定すると範囲が上に伸びるということ。

※参考
deco_9.png
bottom_offsetを90、maximumを10、top_offsetを-10にそれぞれ指定。
高さ100を基準に上下20ブロックの範囲にフィーチャーが生成されている。



・minecraft:range_biased
─config
 ├bottom_offset 数値(i)
 ├top_offset 数値(i)
 └maximum 数値(i)



・minecraft:range_very_biased
─config
 ├noise_to_count_ratio 数値(i)
 ├noise_factor 数値(d)
 └noise_offset 数値(d)



・minecraft:spread_32_above



・minecraft:square
チャンク内にてフィーチャーをxz方向のランダムな位置に配置する。

※参考
deco_10.png
こうなる。特有のデコレーターがないフィーチャーのほとんどに使うことになりそう。



・minecraft:top_solid_heightmap
ワールドの地形に沿ってフィーチャーを配置する。
heightmapと違い、水がある場所では水底にフィーチャーが配置される。

※参考
deco_11.png
石の地形と海の高さを設定したワールドにてテスト。
ワールドの地形の高さに沿いフィーチャーが生成される。



・minecraft:water_lake
─config
 └chance 数値(i)


main

0 Comments

There are no comments yet.