ここでの他の答えは、この特定のニーズに合った静的なランドスケープの種類を生成するのに非常に適しています。この質問に出くわす人々が、時間とともに変化する風景を作成したい場合や、この手法を使用してより現実的に見えるようにしたい場合に探している他の方法があります。
他の回答とは異なり、これは完全に空のマップで開始します。あなたが海面であると考えるものから始めてください。256の可能な高度がある場合、Perlin Noiseを使用して非常にわずかな変動を追加します。どちらの方向でも3〜5を超えて変動しないでください。これにより、実際に長時間シミュレーションを実行しなくても、ランドスケープの最初の数十億年が構築されます。
プレートテクトニクス
マップを直線または曲線に沿って分割してプレートを作成します。プレートの形状が詳細になるほど、風景が面白くなります。それらを大きくしてください。各プレートに方向、速度を与えます。一定の時間枠で、プレートをマップ上で段階的に移動し、それらの上にあるすべてのタイルをドラッグします。
2つのプレートが交差するとき、どちらが上に行くか、下に行くかを選択します。この選択はランダムにすることができます。下に指定されたプレートのタイルは、5段階で瞬時に高さが減少します。プレートが上下に指定されると、プレートとの今後のすべての相互作用は次のルールに従います。
- 指定されたプレートが指定されていないプレートと交差する場合、指定されていないプレートは反対のタイプになります。(したがって、UDプレートは、オーバーを横切るときに下になります。)
- オーバープレートがアンダープレートの上にある場合、これらのタイルはすべて0〜1の高さのステップで移動し、タイルはオーバープレートの経路をたどります。
- オーバープレートがオーバープレートと交差する場合、それらのタイルはすべて1〜2ステップ上に移動し、クロスオーバー領域のタイルはドリフトしなくなります。
- アンダープレートがアンダープレートと交差する場合、クロスオーバー領域の両方のプレートの標高が66%を超えるエリア内のタイルは1〜3ステップ上に移動します(火山活動により、十分な時間をかけて島ができます) )およびこの領域のタイルはドリフトを停止します。
交差するすべてのプレートは、各ステップで現在の速度の20%ずつ遅くなります。さらにリアルにするには、各ステップで移動方向に-10%から10%のランダムな変化を追加します。
必要な数のステップを実行した後。おそらく5〜10個で十分です。プレートが存在しないタイルは、既存の最も低いレベルにドロップする必要があります。
大小?
このマップはそのまま使用することも、拡大して4X4タイル(セル)チャンクに分割し、個々の標高に基づいてそれらのセクションを展開することで、より大きなマップを作成することもできます。各セルの標高をポイントとして扱い、それらのポイント間の大きなマップに滑らかなグラデーションを作成します。したがって、大きいマップが4X4ではなく40X40で、ポイント(0,0)が10で、ポイント(0,1)が1の場合、それらの間の大きいマップ上のタイルは10,9,8,7,6になります、5、4、3、2、1高さ。さらに傾斜を滑らかにするために、Perlin Noiseを追加できます。このすべてのスケーリング手法は、Diamond Squareアルゴリズムに似ています。
水
川や湖、海、地下水面をシミュレートするため。私はセルオートマトンを使用することを好みます。
高さは浮動小数点または拡張された整数範囲になり、よりきめ細かい追跡が可能になります。水セルの飽和値は、たとえば1〜256の範囲です。マップは均等に開始する必要があります。個々のマップサイズの数値で遊ぶ必要がありますが、通常は次のようなルールに従います。
- 隣接セルの飽和度が高い場合は、飽和度を上げて高さを増やします。
- 隣接セルの飽和度が低い場合、飽和度を下げて高さを失います。
すべての隣接セルに対してこのチェックを行います。十分な数のステップを実行します。必要に応じて、その温度による飽和の損失/増加の量を変更することにより、このシミュレーションに温度を追加できます。標高に基づいて変更することもできます。自然の湖と川が形成されるはずです。いくつかは海に落ちます。(海はどのようなメトリックでも満たされることはおそらくありませんが、いずれにせよ、海面下の何でも、最後に満たされる水として指定します。)
他の回答のように、バイオームを作成するために使用する温度と飽和データを保持できます。より正確で興味深いものでなければなりません。極に雪に覆われたバイオーム、中央に暑いバイオーム(温度の滑らかな目盛り付きリストを使用している場合)
風をシミュレートすることもできるため、標高に基づいて温度が変化します。必要に応じて、温度シミュレーションと水シミュレーションの実行を前後に切り替えることができます。ただし、温度変化を使用して何も作成していないため、その方法についてはコメントしません。
進化する風景
周囲の土地、水、熱のシミュレーションを維持し、それらの影響を劇的に減らし、プレートの動きを止める場合、これらのメトリックを時間の経過とともに変更し続けることができます。私はあまり頻繁に計算を実行しませんが、この方法で変更に応答する世界地図を取得できます。
結論
これらの種類のテクニックはかなり複雑ですが、より現実的で進化する効果を生み出します。それが価値があるもののためにそれを取る?