Skip to content

Instantly share code, notes, and snippets.

@wilfrem
Created August 24, 2022 13:30
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save wilfrem/2cce508acb9ead1e11d582128d690b4f to your computer and use it in GitHub Desktop.
Save wilfrem/2cce508acb9ead1e11d582128d690b4f to your computer and use it in GitHub Desktop.
マップ生成方式の調査メモ

マップ生成方式の調査メモ

自分用メモとして残す。

重ね合わせ simplex noise によるバイオーム決定法

概要

  • 出力値の範囲を区間で区切り、適切にバイオームを割り当てる。
  • simplex noise の特性的に値は波形的な変化をするので、海 → 砂 → 平地 → 山 → 雪みたいな高さにちなんだ変化をさせる
  • simplex noise の周期はかなり大きめにする。大体幅や高さの 1/10 とかその辺。もっと大きくても良い
  • 生成されるマップは factorio っぽいマップになる。
  • 推測だが、factorio は「資源出現マップ」「バイオームマップ」など、複数の周期の違うマップを組み合わせて生成している

ボロノイ分割を利用した blue noise 生成法

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

概要

  • xy 座標にランダムに複数点プロットする
  • プロットした点を元にボロノイ分割をする
  • 分割した各セルの重心を求める
  • プロットした点を重心に移動する
  • 再度ボロノイ分割を繰り返す
  • 繰り返すと座標が平準化する

多層セルオートマトンからのヒント

概要

  • セルオートマトンの計算時に同一の座標の別のレイヤーのデータを参照する
  • これにより、例えば経路を優先して生成させるみたいな技法がある
  • 先に経路を生成して、それを別のデータでの生成に影響させるとかの使い方ができる

影響拡散方式(Ooze-Style)によるバイオーム決定法

https://www.procjam.com/tutorials/en/ooze/

概要

  • マップをマスで区切る
  • ランダムにマスを選択する
  • ランダムに影響する内容を選択する(高さの変化、温度、湿度など)
  • 選択した影響を選択したマスから拡散する。
  • 拡散した影響は一定距離まで隣のマスを通じて広がる
  • 以上のマス選択と影響を繰り返す
  • 元々の状態+ Σ 影響を計算して最終的な状態を計算する
  • 最終的な状態からバイオームを決定する

手続き型生成の一般規則

https://pavcreations.com/procedural-generation-of-2d-maps-in-unity/

  • 大きなオブジェクトは小さなオブジェクトに囲まれる必要がある
  • オブジェクト同士の交差は意識されやすいので、アルゴリズム側で対応が必要
  • 複数のオブジェクトの組み合わせでのディティールアップルール(メモ: 多分 oxygen の遺跡とかを指す?)
  • ゲームを進めるうえでの明瞭で明確なパスを手続きに含める必要がある。もちろんパスは隠しても良いがプレイヤーは発見できなければならない
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment