特定のシード値を使用するとワールドの生成が壊れたかのような挙動をすることがあるのをご存知でしょうか。
ちょっとおもしろい挙動をするのでご紹介します。
概要
周期的な洞窟生成
このバグは地表では再現されませんが、洞窟の生成アルゴリズムのバグが起因して横軸に対して同じ形状の洞窟を発生されます。
周期的な廃坑生成
同一アルゴリズムが使用されているだろう廃坑も周期的な生成がされ無限に廃坑が続きます。 (恐ろしい…)
シード値
周期的な洞窟が発生するシード値例
シード値 |
---|
107038380838084 |
164311266871034 |
388513357548740 |
発生するシード値の総量
計算上131,072種のシード値で確認できるとされています。
上記シード値の例に対して281,474,976,710,656を足すまたは引くことで再現できます。
発生確率
Java版Minecraftではシード値を自動生成させる機能を使用した場合と数値型のシード値を入力したときでは動作が若干異なります。
生成方法 | シードが発生する量 | 確率 |
---|---|---|
自動生成 | (2^48)*2 | 2.23*10^-8 % |
シード値を数値で指定して生成 | (2^64)*2 | 3.55*10^-13 % |
トリビア
原因
シード値と洞窟生成アルゴリズム内で0の乗算または除算が行われるためだとされています。
どんな数字に対しても0を掛けるまたは割ると0になってしまうものです。
洞窟生成アルゴリズムではX軸またはZ軸でシード値が起因して0が連続して発生し、同じ形状の洞窟が永遠と生成されるようです。
開発元も認識
Minecraftを開発しているMojang Studioもこの問題を把握しているようです。
面白いことにゲーム開発関係者はこの癖のある生成が好きだとコメントしています。
ただ好きとコメントした上で、ゼロの乗算・除算は開発者が予期しない挙動を起こす場合があり、危険であるとの認識も示しています。
修正すべき必要があるかは挙動を知ってからともコメント。
修正にさほど時間がかかる内容だとは思いませんが、2016年に報告されて未だに解決されていないので面白要素として保管されている様に思います。
バグトラッカー
出典元のバグトラッカーはこちらです。
Math error (random generation of zero) causing map gen to fail
https://bugs.mojang.com/browse/MC-111378