Age of Empires IIがランダムマップを生成する方法(多様性、適切なバイオームトランジション、混chaを感じずにランダムに感じられるマップ)が好きですが、スタイルを再現するのに苦労しています。たとえば、Perlinノイズを使用しようとしましたが、すべてが均一すぎるか、そうでない場合はPerlin値->地形ヒューリスティックが敏感で壊れやすいため、さまざまなワールドタイプを作成できません。
AoE2マップタイプ「不明」が「100,000個のマップ」を宣伝し、シード番号の使用を示唆していることを覚えていますが、シード番号を使用して見た品種を作成する方法がわかりません。
AoE2ランダムマップのように感じるランダムマップを作成するには、どのアルゴリズムとヒューリスティックを使用できますか?
より具体的に編集してください:
私の問題についてさらに考え、AoE2のランダムマップエンジンについて気に入っていることを研究しているとき、私の最大の問題は、地図上の水と植物の分布を管理することだと思います。私はそれを「意味のあるバイオーム遷移」と結びつけていることを知っていますが、それは別の問題です(ただし、Perlinノイズを引き続き使用すると解決が難しくなります)。
私は、AoE2のランダムマップをいくつか追加しました。これらのマップは、自分の努力が再現に失敗している、マッピングエンジンの好きな点を強調しています。すべてのスクリーンショットは、ランダムなマップタイプ「カスタム」->「不明」から取得されます。私は、群島のような特定の地域を使用するようにゲームに指示しませんでした。
さらに以下は、自分のマップエンジンからの画像です。各ピクセルは、1つのAoE2マップタイルに対応します。
私のプロジェクトの複雑な点の1つは、マップをAoE2マップよりも何倍も大きくしたいことです。したがって、私が使用するエンジンは、AoE2が使用するようなマップごとの狭いバイオームのセットではなく、各マップでバイオームの全範囲を作成できる必要があります。
Age of Empires IIマップ
内陸の湖とある種の川のようなものを特徴とする例があります。マップに散在する大量の水が含まれているのが好きですが、その水はまだいくらか濃縮されています-あなたの帝国を構築するために利用可能な土地の大きな帯があります。ゲーム全体を使って水辺の都市を計画する必要はありません。
ゲームが島を横断可能な沼地に接続するのに十分なほどスマートだった同様の例を次に示します。ノイズベースのアルゴリズムがそこに沼地を作成する方法を想像することはできません、それらの場所だけ。また、ゲームで土地がどのように作成されたかに注意してください。各プレイヤーは、最初からすべての土地を所有しています。土地のランダムなパッチを作成しませんでした。次に、各プレイヤーが開始するのにどれが最もひどいものでないかについて、ベストな推測をしました。
この地図は水も多用しますが、内陸の湖はあまり含まれていません。最初の画像と比較してください。AoE2が同じビルディングブロックを使用してまったく異なる地域を作成する方法が気に入っています。パーリンノイズを使用する私の試みはここで失敗しました-私は、土地の塊を萎縮させる広大な広大な海、または10,000の湖の土地を得ます。また、島と接続された大陸の両方を取得するのは難しいと感じました(北アメリカ/南アメリカを考えてください)。
この画像とその上の画像を比較してください。彼らは、地図の乾燥が水位に依存しないことを示しています。最初の画像は、ほとんど水がなく、森林と草が含まれている地図を特徴としています。2番目の画像には適度な量の水が含まれていますが、砂漠です。それが可能だと思います(あなたの世界にニューメキシコまたはサハラとコスタリカの両方があると考えてください)。
自分の地図
多くの場所で、マップを作成する良い方法は、それぞれ異なるデータの次元を表す複数レベルのPerlinノイズを重ねることです。一般的な推奨事項に従って、私はここでウィテッカーテーブルから地形タイプを選択して、標高と湿度を調整しました。
2つのperlinマップを取得し、それぞれの値を単純なを介して整数に量子化しif perlin_val < x { i=some_int } else if perlin_val < y...
、(標高、水分)整数ペアを地形タイプのテーブルにマッピングしました(例:[1,0]-> tropical desert、[1,1 ]->草原)。このシステムには海洋が含まれていました-標高= 0の海洋が定義されています。
さまざまなバリエーションがあり、多くの点で実世界のように感じられますが、いくつかの問題があります。
まず、海の深さにパターンはありません。海岸近くの浅い水とさらに深い水が期待できますが、どこにどこにいるかについての韻や理由はありません
第二に、水はすべて海洋に集中しています。湖や川はありません。Perlinのノイズは、大陸の中央で突然低い値に落ちないからです。
各バイオームの量のバランスをとることは非常に困難です。私はこれを次のものに帰します。
パーリンノイズは正規分布に従うため、各次元マッピングの確率を調整する方法を推定することは困難です。
複数の次元のバランスを取ることは困難です-多分(2,3)が欲しいので、(n、3)を得る確率を上げます。さて、今私は(3,3)が多すぎて、すべてが間違っているように見えます。
滑らかなデータを得るのに十分なほどノイズをズームすると、Perlin値の完全なサンプルが得られませんでした。そのため、目の前のマップの分布を微調整し、新しいランダムマップをリロードして、非常に異なる結果を得ます。
私は、Perlin値の3番目のセットから水を作ることによって、川/湖の問題を解決しようとしました。バイナリの水/土地の決定。その後、上記のものをすべて土地に適用します。これにより、配水を非常に簡単に制御できるようになりますが(完全ではありませんが、より優れています)、意味をなさない多くのバイオーム遷移があるという問題が生じます。例えば、緑豊かな草原の真ん中の砂漠の不可解なパッチ、浜辺の雪など。また、上記の理由から、土地のバイオームの割合を制御することはまだ困難です。
上記の問題を見て、Perlinノイズを1次元にのみマッピングする単純なアルゴリズムを試しました。現在、0 =深海-> 1 =浅い海-> 2 =ビーチ...-> N =雪からエスカレートする地形タイプの配列があります。これにより島と大陸が得られ、各地形の割合のバランスを取るのがはるかに容易になりますが、地形タイプはあまりにもクラスター化されています。すべての陸地は標高マップのように見えますが、通常、その表面全体に地形タイプは散在していません。すべての陸地にはほぼ同じ特徴があり、常に同じ順序で、常に同じリング状の形をしています。