シード値

提供: Minecraft Wiki
移動先: 案内検索

Minecraftシード値(英:Seed)は、1文字以上の(数字を含む)文字からなる値であり、Minecraft のワールド(世界)を生成する際の基礎として用いられるものである[1]

ワールド生成[編集 | ソースを編集]

ゲームで新しいワールドを生成するときには、ある演算法が用いられる。この演算法では、疑似乱数の値が出力され、それを基にワールドの形が決定される。しかし、この生成方法で同じ値を初期地点(疑似乱数の「シード」)として用いると、最終的な出力は常に同じ値になる。
だからこそシードが存在し、たったひとつの値で全く異なるワールドを簡単に生成することができるのである。

ワールド生成方法が更新されるたびに、同じシード値で同じ地形は生成されなくなる。このため、一部の異なるバージョンのゲームでは同じシード値でも同じワールドが生成されない。

ワールドのシード値はワールドが生成される際に設定される。通常は自動的に決定される(その場合はシステム時刻をシード値として用いる)が、手動で設定することもできる。シード値を設定して再使用すると、そのワールドを再び遊んだり、既知のシード値を用いて他のプレイヤーと同じワールドで遊んだりできる。数字だけでなく単語や語句もシード値になり、負の数も指定可能である。

保存されたワールドのシード値や生成が変更されると、新規生成チャンクは新しいシード値に基づいて作られ、古いシード値によるチャンクとは一致しなくなる(この現象はアドベンチャー・アップデートにて広く観測された)。削除されたチャンクはシード値と生成方法が同じなら再生できるが、どちらかが変わっていると生成されるチャンクも変更される。

シード値は演算法に読み込まれるランダムな数値であって、実際には異なるワールドの名前ではないため、あるワールドを使ったからといってそのシードの数値と関連性のあるワールドが作られるとは限らないことに注意することが重要である。例えば、biomeの名称をシード値としても、そのワールドを中心とした世界が生成されるとは限らない。

技術面[編集 | ソースを編集]

Realms[編集 | ソースを編集]

Java Editionではチャットで/seedと入力することでシードが表示される。Bedrock Editionでは、Realmsで遊んでいる時はシード値が表示されないが、シングルプレイヤーのワールドでは設定でシードが表示される。

Java Edition[編集 | ソースを編集]

シード値に数字以外の文字が含まれている場合、または長さが20文字以上の場合は、Java関数のString.hashCode()を使用して数字のシードが生成される。これによりintデータ型が使用されるため、Minecraftでは可能なワールドの部分集合が232(4,294,967,296)に制限される。可能なワールドの全組264、18,446,744,073,709,551,616)を参照するには、数字のシードまたは既定のワールドシードを使用しなければならない。JavaのRandomは48ビットのシード値を使用するため、意味あるシード値は248個である。シード値は248の倍数で互いに等価である。

Bedrock Edition[編集 | ソースを編集]

Bedrock Editionでは、文字列と数字のどちらをシード値として使用しても、可能なワールドは合計で232(4,294,967,296)個ある。これは、Bedrock EditionがMersenne Twister PRNGの32ビット板を使用しているためである。ハッシュ演算はString.hashCode()と同じであり、ハッシュhは0から始まり、各文字cについて、32ビット整数の範囲内でhの値を31+cに変更する。

エディション間の重複[編集 | ソースを編集]

0–231(0–2,147,483,648)の範囲内にある正のシード値は、JavaとBedrock Editionの両方で、構造体や構造体の位置、洞窟、鉱石の生成、出現するエンティティ、小数地形の違いが異なるものの、同じ配置でバイオームが生成される。

シード値0[編集 | ソースを編集]

Java Editionでは、ゲームが「0」を文字として解釈し、ハッシュ値を48のアスキー値にしてしまうため、Minecraftのシード値の数値入力では「0」(ゼロ)という数字を入力することができない。ただし、Java関数のString.hashCode()がゼロ値を返す文字列シード値を使用することで「0シード」を使用できる。0シードが生成される単語文字列には、creashaks organzinepollinating sandboxeslittle junglesmall skeleton、 および drumwood boulder headなどがある。[2] しかし、ddnqavbj および 166lr735ka3q6のように0をハッシュした文字列であればどんなものでも動作する。0モジュロ248281474976710656など)もシード0と同じ地形を生成するが、/seedを使用しても0として表示されない。

Bedrock Editionでは、ゲームは-9から+9までのすべての数字を拒否する[3]が、シード値の最後の文字を1つ変えると出力されるハッシュコードも1変わるため、small skeletonから+2の値に到達するため最後の文字を2つ進めてsmall skeletopにする。最短のものはddnqavbであり、aからsまでの他の任意の文字が続く。

生成のクセ[編集 | ソースを編集]

この節では、これらの現象のかなり深い説明についての情報が不足しています。
上記の内容を含めて節の内容を拡充してください。詳細については、議論ページを参照してください。

特定のシードでは、興味深い効果を観察できる。

一部の構造物を変更せずに地形を変更する[編集 | ソースを編集]

シード値の特定の部分だけが、ワールド内の特定の特徴を生成するために使用される。シードを二進数に変換し、必要な桁を微調整するだけで、同一の洞窟機構やその他の構造物の配置を持つ複数のワールドを生成することができる。[4]例は、最初の48ビットのみを使用して洞窟機構と荒野の粘土帯層を生成するシード生成である。

影シード[編集 | ソースを編集]

あるワールドのバイオーム分布は、別の世界のバイオーム分布と同じであり、そのシード値は現在のシード値に定数を加えることで見つけることができる。
定数:
-7379792620528906219

反復[編集 | ソースを編集]

スペクテイターモードでのシード値164311266871034。洞窟がZ軸に沿って反復している。

特定のシード値は内部コードで0を返し[5]、無限の配列の洞窟やその他の構造物を生成する原因となる[6]JavaおよびLegacy Console Editionでは、シード値107038380838084は最初の呼び出しで0を返し、164311266871034は2回目の呼び出しで0を返すため、X軸とZ軸でそれぞれ構造体が繰り返される。[7]

また、装飾などの他の機能も壊れる事がある。これらは斜めに生成される。[8]

Bedrock Editionでは、斜めの洞窟、渓谷、装飾の繰り返しがシード値2898490251669320484で発生する。[9]

技術的詳細[編集 | ソースを編集]

シード値に単語や語句が使用されている場合に数字のシードを生成するのにJavaのString.hashCode()関数が用いられる。使用されるデータ型の関係で、Minecraftで生成され得るワールドが限定されている(およそ42億通り)。シード値に数値を直接指定するか、Minecraftにシード値を生成させる(システム時刻の値を用いる)ことで、生成されるワールドの制約を取り除くことができる(およそ1千8百京通り)。

歴史[編集 | ソースを編集]

この節は内容の更新を必要とします。
情報の一部は、現在の最新バージョンには適用されません。
Java Edition pre-Classic
rd-160052簡単な地形生成を追加。
Java Edition Classic
0.0.12a新しい地形生成を追加。
2009年8月25日崖の生成頻度が上がった別の新しい地形生成が示された。
Java Edition Indev
0.3120091223-2等尺地形描画のスクリーンショットを追加。
20100106ワールドの生成時にプレイヤーが孤島、浮き島、フラット、旧式を地形の種類として選べるようになった。
プレイヤーが地形の形状として正方形、長い、不快を選べるようになった。
プレイヤーが地形の大きさとして小、通常、巨大を選べるようになった。
20100107深い浮き島のマップに島の層を追加。
プレイヤーが地形の主題を選べるようになった;通常、地獄。
20100111-1島に生成される砂が増加。
20100113海に無限水源が生成されるようになった。
20100122水が自然に海面より上や浮島に生成されるようになった。
洞窟の浸水が少なくなった。
Java Edition Alpha
v1.2.0?ワールド生成に地形破壊的変更:古いバージョンでシードを使用すると別のワールドが生成されるようになった。
Java Edition Beta
1.3シード値をユーザーが指定することができるようになった。
1.8Pre-releaseデバッグ画面にシード値が表示されるようになった。
Java Edition
1.2.1?マルチプレイのサーバーがクライアントにシード値を送信しないよう変更された。
1.3.112w18aシングルプレイがマルチプレイになった為、デバッグ画面にワールドシードが表示されなくなった。
12w21aコマンド/seedが追加され、現在のワールドのシード値を表示できるようになった。
1.7.213w36aワールド生成を地形破壊的変更。シード値の種類を変更。
1.1318w06aワールド生成を非破壊的方法に書き換え。カスタマイズを削除。
Pocket Edition Alpha
0.1.0シード値が追加された。
0.9.0?地形生成が変更され、古いシードが無効となった。

トリビア[編集 | ソースを編集]

  • 1.7.2から1.12.2のいずれかのバージョンのJava Editionのソースコードを変更し、第6生成層の値[情報提供依頼]を2から0に変更した場合、キノコバイオーム以外のLegacy Console Editionのバイオーム生成をJava edition上で複製できる。

注目のシード値[編集 | ソースを編集]

以下のマップシードは、ある時点でMinecraftの公式マップや仕様の生成に使用されている。

外部リンク[編集 | ソースを編集]

シード値抽出[編集 | ソースを編集]

SeedScope.net: セーブファイルのアップロードを必要とするWebアプリ
ランダムシードリーダー: Javaのローカルツール

脚注[編集 | ソースを編集]