0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Minecraft 1.12.2 ネザー要塞のスポーン座標決定のアルゴリズム

Last updated at Posted at 2018-09-19

の亜種。基本的なことはこれと同じ。

アルゴリズム

概ねこんな感じ。

boolean canSpawnStructureAtCoords2(int chunkX, int chunkZ)
{
	int regionX = chunkX >> 4;
	int regionY = chunkZ >> 4;
	Random rand = new Random(seed ^ regionX ^ (regionY << 4));
	rand.nextInt();

	if (rand.nextInt(3) != 0) return false;
	if (chunkX != (regionX << 4) + 4 + rand.nextInt(8)) return false;
	if (chunkZ != (regionY << 4) + 4 + rand.nextInt(8)) return false;

	return true;
}

意訳すると次のようになる。

16x16チャンク毎、33%の確率で、中央付近の8x8チャンクのいずれかのチャンクを中心としてネザー要塞が出現する。

16x16の端付近には出現しないので、既知の遺跡から座標軸に沿って進むと高確率で発見できる。
出現可否と地域内の詳細位置はワールドのシードと16x16ごとの地域にのみ依存し、バイオームとかそういう条件はなく溶岩海の上だろうが地中だろうが問答無用でスポーンする。恐らく村と同じくチャンク内での位置も固定。村とは異なりチャンク座標が負の場合には説明しづらい特殊な挙動をする。

複製

もしやX座標が161616離れてY座標が16*16離れた4か所のうち1か所には同じ形の要塞が湧く?

2018-09-20_04.18.31.png
2018-09-20_04.19.20.png

2018-09-20_04.22.48.png
2018-09-20_04.23.24.png

酷似している。多分同一。これはregionX ^ (regionY << 4)が同じ値になる場所で起こる。同様にXが1616162、Yが1616*2離れた場所にも存在するはず。地域Yの反転ビットが地域Xの反転ビットの左4シフトになれば対応が取れる。大きな値を除けば任意の地域Xに対応する地域Yが存在することになるので、N個のネザー要塞があったとしてパターンは概ね√N個しかないことになる。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?