Age of Empires IIランダムマップのように感じるランダムマップを生成するにはどうすればよいですか?


18

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の海洋が定義されています。

g1_success

さまざまなバリエーションがあり、多くの点で実世界のように感じられますが、いくつかの問題があります。

  • まず、海の深さにパターンはありません。海岸近くの浅い水とさらに深い水が期待できますが、どこにどこにいるかについての韻や理由はありません

  • 第二に、水はすべて海洋に集中しています。湖や川はありません。Perlinのノイズは、大陸の中央で突然低い値に落ちないからです。

  • 各バイオームの量のバランスをとることは非常に困難です。私はこれを次のものに帰します。

    • パーリンノイズは正規分布に従うため、各次元マッピングの確率を調整する方法を推定することは困難です。

    • 複数の次元のバランスを取ることは困難です-多分(2,3)が欲しいので、(n、3)を得る確率を上げます。さて、今私は(3,3)が多すぎて、すべてが間違っているように見えます。

    • 滑らかなデータを得るのに十分なほどノイズをズームすると、Perlin値の完全なサンプルが得られませんでした。そのため、目の前のマップの分布を微調整し、新しいランダムマップをリロードして、非常に異なる結果を得ます。

x-分離水

私は、Perlin値の3番目のセットから水を作ることによって、川/湖の問題を解決しようとしました。バイナリの水/土地の決定。その後、上記のものをすべて土地に適用します。これにより、配水を非常に簡単に制御できるようになりますが(完全ではありませんが、より優れています)、意味をなさない多くのバイオーム遷移があるという問題が生じます。例えば、緑豊かな草原の真ん中の砂漠の不可解なパッチ、浜辺の雪など。また、上記の理由から、土地のバイオームの割合を制御することはまだ困難です。

一次元故障

上記の問題を見て、Perlinノイズを1次元にのみマッピングする単純なアルゴリズムを試しました。現在、0 =深海-> 1 =浅い海-> 2 =ビーチ...-> N =雪からエスカレートする地形タイプの配列があります。これにより島と大陸が得られ、各地形の割合のバランスを取るのがはるかに容易になりますが、地形タイプはあまりにもクラスター化されています。すべての陸地は標高マップのように見えますが、通常、その表面全体に地形タイプは散在していません。すべての陸地にはほぼ同じ特徴があり、常に同じ順序で、常に同じリング状の形をしています。


元の開発チームにいない人があなたの質問に本当に答えられるとは思いませんが、シードはあなたが予想するよりもはるかに低いことをお勧めします。シードはほぼ確実にベースマップタイプごとに異なるマップを生成し、それらをすべて組み合わせて含めると、100,000に達する可能性が最も高くなります。
メイガス14年

この質問は、ゲームの作成ではなく、特定の既存のゲームに関する実装の詳細を求めているため、トピック外のようです。
トレバーパウエル14年

@TrevorPowellこのサイトのトピックに関する質問のガイドラインを確認した後、私は質問を言い換えました。
spiffytech 14年

あなたは私の編集の約10秒後にその編集を投稿しました。これがサービスです!;)
トレバーパウエル14年

1
-1まだ広すぎると思います。「気分がよいマップ」の意味について具体的に説明する必要があります。この質問に答えるには、話している内容の具体例が必要です。手続き型生成は、人々がしばしば考えるよりも芸術的です。アートの創造と知覚は主観的なトピックです。注目したい具体的なものを選んで、それについてのみ質問してください。この質問の範囲は現在非常に広いです。
マイケルハウス

回答:


9

Amit Patelの優れた記事をご覧ください。これは、手順を生成する地形の典型的なリソースのようなものです。...

http://www-cs-students.stanford.edu/~amitp/game-programming/polygon-map-generation/

彼が行う重要なことは、グラフ構造を使用して、まっすぐなノイズマップではなく、地形をモデル化することです(Perlin et al)。彼のイラストを埋め込むつもりはありませんが、記事を読んでください。異なるアプローチについて考えさせるのに役立つと思います。

CIV / AOEタイプのゲームを作成している場合、リソースの配置が重要になります。重要なリソースがあまりにもまれであったり、価値の高いものが一般的であったりすることはできません。各ポリゴンが特定の特性を持つゾーンであると仮定すると(記事の図を参照してください、それはより理にかなっています)、選択したアルゴリズムに基づいて各ポリゴンにリソースを割り当てることがわかります。ポリゴン内のリソースを統計的に近隣から偏らせることで、砂漠の隣の森林はまれですが、たとえば草原の隣の森林がより一般的であるようにすることで、かなり賢くなります。


2
Amitのガイドは、Age of Empiresにとって現実的すぎる地形を作成します。:)
セスバッティン14年

うん、はい、本当。しかし、さまざまなサイズのセル(それぞれが特定の地形タイプ)を使用する基本的な概念は、私が考えるアプローチとしてはうまく機能するでしょう。方程式から地形の高さの概念を削除します。
ティムホルト14年

私はAmitの記事をレビューしましたが、単一の島を持つことに関してあまりにも厳密に最適化されています。標高を海岸からの距離の単純な関数にすると、複数の島またはより大きな大陸で厄介な結果が生成され、彼の配水方法は、最終的に海に流れる景観の顕著なピークを想定しています。Amitのスキームから地形の高さを削除する場合、彼のバイオーム分布のアイデアを私のプロジェクトに適合させる方法がわかりません。
spiffytech

5

Age of Empires 2用のランダムマップスクリプトを作成します。私の最新版はHDバージョン用です。

Age of Empires 2のマップの作成方法を理解したい場合は、RMS(ランダムマップスクリプト)の優れたガイドがあります。

Age of Empiresはエキスパートシステムを使用しており、スクリプトで生成ルールのルーチンを記述できます。このルールから多くのことを学ぶことができます。地域に関しては、単にエリアをマスクし、それに応じて異なるスクリプト/ルーチンをマスクされたエリアに適用するだけの場合だと思います。既存のマップスクリプトの生成ルールは、テキストエディターで開くことで簡単に確認できます。メモ帳で書きます

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.