私はCivilization1の自動スクリーンセーバースタイルのクローンのためにあなたが求めているものに似たものを書きました。記録のために私はこれをVB.netで書きましたが、あなたの質問では言語やプラットフォームについて何も言及していないので、それは抽象的です。
「マップ」は、大陸の数、大陸のサイズの変動(たとえば、1.0はすべての大陸を同じおおよその土地面積に保ち、0.1まで下げると、大陸は最大の大陸の1/10の質量で存在できるようになります)、最大土地面積を指定します。 (パーセンテージとして)生成する、および中央の土地バイアス。「シード」は、各大陸のマップの周囲にランダムに分散され、中央のバイアスに従ってマップの中心に向かって重み付けされます(たとえば、バイアスが低いと、地球に似た分散した大陸が生成されますが、中央のバイアスが高いと、パンゲア)。次に、成長の反復ごとに、「シード」は、最大土地面積に達するまで、分散アルゴリズム(詳細は後で説明します)に従って土地タイルを割り当てます。
土地分布アルゴリズムは必要に応じて正確にすることができますが、さまざまな遺伝的アルゴリズムを適用してサイコロを振ると、より興味深い結果が得られました。コンウェイの「ライフゲーム」は、始めるのが本当に簡単なものです。大陸が互いに成長するようなことを避けるために、いくつかのグローバルに認識されたロジックを追加する必要がありますが、ほとんどの場合、物事は自分で処理します。よりフラクタルベースのアプローチ(これが私の最初の傾向でした)で私が見つけた問題は、結果がパターン化されすぎているか、またはまだ十分に動的でないと感じられる結果を得るためにハッキーな感じの回避策ルールを必要とするシナリオが多すぎることでした。使用するアルゴリズムによっては、結果に「ぼかし」パスを適用して、豊富な単一の正方形の海のタイルや市松模様の海岸線などを排除することができます。大陸が他のいくつかに囲まれてスポーンされ、成長する場所がなくなった場合は、シードをマップ上の新しいポイントに移動して、成長パスを続行します。はい、それはあなたが計画よりも多くの大陸になってしまうことを意味する可能性がありますが、それが本当にあなたが強く望んでいないものである場合、それを回避するのに役立つ別の方法は、成長アルゴリズムにバイアスをかけて、他の最も近い方向への成長を優先することです種子。最悪の場合(とにかく私の意見では)、シードが成長して新しいマップを生成する場所が残っていない場合、シリーズに無効のフラグを立てることができます。最大試行回数を設定して、非現実的なものが指定されている場合(10x10ボードに50の均等な重みの大陸を合わせるなど)、有効な解決策を見つけるために永遠に費やすことはありません。
Civなどがどのようにそれを行うかを保証することはできません。もちろん、気候や土地の年齢などはカバーしていませんが、シード成長アルゴリズムを試してみると、大陸や諸島などに似た非常に興味深い結果を得ることができます。同じアプローチを使用して、「有機的」に見える川、山脈なども作成します。