自分用メモとして残す。
概要
- 出力値の範囲を区間で区切り、適切にバイオームを割り当てる。
- simplex noise の特性的に値は波形的な変化をするので、海 → 砂 → 平地 → 山 → 雪みたいな高さにちなんだ変化をさせる
- simplex noise の周期はかなり大きめにする。大体幅や高さの 1/10 とかその辺。もっと大きくても良い
- 生成されるマップは factorio っぽいマップになる。
- 推測だが、factorio は「資源出現マップ」「バイオームマップ」など、複数の周期の違うマップを組み合わせて生成している
http://www-cs-students.stanford.edu/~amitp/game-programming/polygon-map-generation/
概要
- xy 座標にランダムに複数点プロットする
- プロットした点を元にボロノイ分割をする
- 分割した各セルの重心を求める
- プロットした点を重心に移動する
- 再度ボロノイ分割を繰り返す
- 繰り返すと座標が平準化する
概要
- セルオートマトンの計算時に同一の座標の別のレイヤーのデータを参照する
- これにより、例えば経路を優先して生成させるみたいな技法がある
- 先に経路を生成して、それを別のデータでの生成に影響させるとかの使い方ができる
https://www.procjam.com/tutorials/en/ooze/
概要
- マップをマスで区切る
- ランダムにマスを選択する
- ランダムに影響する内容を選択する(高さの変化、温度、湿度など)
- 選択した影響を選択したマスから拡散する。
- 拡散した影響は一定距離まで隣のマスを通じて広がる
- 以上のマス選択と影響を繰り返す
- 元々の状態+ Σ 影響を計算して最終的な状態を計算する
- 最終的な状態からバイオームを決定する
https://pavcreations.com/procedural-generation-of-2d-maps-in-unity/
- 大きなオブジェクトは小さなオブジェクトに囲まれる必要がある
- オブジェクト同士の交差は意識されやすいので、アルゴリズム側で対応が必要
- 複数のオブジェクトの組み合わせでのディティールアップルール(メモ: 多分 oxygen の遺跡とかを指す?)
- ゲームを進めるうえでの明瞭で明確なパスを手続きに含める必要がある。もちろんパスは隠しても良いがプレイヤーは発見できなければならない