28

マインクラフトのように島の構造物や丘の構造物を生成する方法を誰か教えてもらえますか?

そのランダムな形状を生成するための適切な理論を探しているだけですが、定義された基本パターンを保持する必要があります..

のように: 島は丸みを帯びている必要がありますが、形状とスケールが異なります (最小/最大幅と高さ)。

または:川は直線であってはならず、曲線とランダムな幅を持つ必要があります。

またはさらに: ユーザーがまだ森の中を歩くことができるように木が配置されている、ある種の森を生成します (これは単純なものだと思います。コードが配置しようとした場合、木の周りのいくつかのブロックは空白のままにしておく必要があるとだけ言ってください)。最後の木の周りにもっと木があります)

そのようなことを行うために、どのような種類の数学を使用できますか?

チュートリアルや参考文献へのリンクがあれば幸いです。何時間も Web を検索しましたが、見つけたのは「ゲーム数学」か何かのような本を購入することだけでしたが、私の予算はゼロに設定されていました。

編集:

まず、下手な英語で申し訳ありません。

第二に、皆さんの回答に感謝したいと思います。これらは素晴らしい参考文献であり、私はそれについてより深く掘り下げるために多くの時間を費やします.

4

3 に答える 3

38

Amit の Game Programming Informationと、彼による他のブログ投稿を参照することを強くお勧めします。彼は、川や海岸線などを含む写実的な地図を作成するシリーズ全体を持っていました。

建物の世界

プロシージャル マップ生成は非グリッド ワールドに適用できますが、最もよく使用されるのはグリッドです。ある時点で見た場合、生成されたゲーム マップが手作りの世界ほど素晴らしいものになることはめったにありません。ただし、これらには次の 3 つの利点があります。(1) 作成するワールドが多い場合、ワールドあたりのコストが低くなる、(2) 次回ワールドを通過する時間が異なるため、リプレイの価値が高くなる、(3) 進行中にワールドが進化する可能性がある。ゲームが進行します。

  • アミットの世界地図ジェネレーター
  • 手続き型コンテンツの生成: 地形、都市、建物の生成
  • ウナンバンドのダンジョン生成
  • 特定の部屋が他の部屋からのオブジェクトを必要とするように、ロック アンド キー構造でゲーム ワールドを生成する
  • 川を作るアルゴリズム
  • ランダムに生成された地形に川を追加する
  • ダンジョンを生成するためのオリジナルの Rogue アルゴリズム
  • デモとコードを使用した 11 の迷路生成アルゴリズム
  • ノイズ関数を使用して Terraria や Minecraft のような洞窟を生成する
  • 不規則な形の部屋、単純なアルゴリズム
  • サイズ変更可能な室内領域
  • DungeonMaker でダンジョンを掘るための Tunneler アルゴリズム
  • ランダム地形生成テクニックのガイド
  • 手続き型コンテンツ生成の Wiki ガイド
  • 大規模な仮想世界のシミュレーション

ゲームのための Amit のPolygonal Map Generation (リストの最初の項目) は、非常に印象的な記事で、適切な形状の海岸線、島、川、山などを生成するロジックについて説明しています。

ランダムに生成された世界で川を「成長」させる方法 [上記のリストに含まれる] マップ内の他の「タイル」、たとえばタイプや標高に基づいて川の経路を生成するためのかなり単純なアルゴリズム。

于 2012-08-15T11:09:10.797 に答える
4

ルージュライクを作ったときに、理論の素晴らしいサイトを見つけたことがあります。見てください

于 2012-08-15T11:15:03.517 に答える
3

多くの場合、マップは「基本地形の高さ」、「水位」、「高地」、「樹木」、「住宅」などのレイヤー/オーバーレイに論理的に分割されています。

次に、レイヤーごとに異なる種類のジェネレーターが実行されます。フラクタルは興味深い形状を生成する傾向があり、予測が難しいため、非常に頻繁に使用されます。ただし、フラクタルの一部のみが使用されます。全体を使用すると、構造がすぐに明らかになり (トップレベルのフラクタルは非常に反復的です)、視聴者はそれに気付くでしょう。そのため、生成されたフラクタルは歪曲/修正/フィルタリング/カットされるため、明らかではありません。たとえば、いくつかの単純な XY 三角関数オシレータを使用してベース テレイン レベルを生成し、それをフラクタル イメージの一部と合計して、いくつかの最小値と最大値に制限すると、顕著な丘とドロップのある不均一なテレインが得られます。 ..

他のすべてのレイヤーでは、地形以外のレイヤーは「高さ」や「密度」ではなく、0/1 であるため、通常「合計」することはできません。ここに木を配置するか、ここに木を配置しないか? しかし、繰り返しますが、同じように実行します: いくつかの画像 (おそらく再びフラクタル) を生成し、数値を検査してしきい値を設定します: 数値が X よりも高い/低い場合はどこでも、物を配置する/配置しない. 追加でフィルタリングまたは分岐することもできます。たとえば、木が水中の位置にぶつかる場合は、そこに魚を配置するか、木をまったく配置しないようにします。

私はあなたがそれにリソースを見つけることができなかったことに驚いています. 数年前、「地形生成アルゴリズム」をグーグルで検索すると、多くのヒットが返されました。

于 2012-08-15T11:16:06.073 に答える