マップ上に手続き的に生成された2Dカーブ道路


9

自分が取り組んでいるゲームのロードマップを自動的に生成するアルゴリズムを試しています。

Kingdom Rush」ゲームは見栄えのするマップがいくつかあるので、参照ポイントとして使用しています。

ゲーム「キングダムラッシュ」のロードマップの例

私は手続き型のコンテンツ生成に不慣れで、ここに誰かがポインタを持っているのではないかと思っていました。いくつかの入口/ソースノード、いくつかの内部ノード(分岐とマージ)、いくつかの出口シンクノードなどのランダムな道路トポロジを生成し、グラフレイアウトアルゴリズムを使用して、この情報に基づいて実際の道路地図を作成する実験をしました。

以下は、道路レイアウトにFruchterman-Reingoldアルゴリズムを使用した1つの例です。

PCG生成マップ1

青いグラフは、ランダムに生成されたベジェコントロールポイントを使用して、エッジの直線性を低下させています。

同じアルゴリズムを使用して生成された別の例ですが、乱数は異なります。

PCG生成マップ2

問題は、ほとんどの結果が非常によく似たものになってしまうことであり、手順で生成されたマップの制御性と多様性を改善するためにどのルールを追加できるかわかりません。

助言をいただければ幸いです。


素晴らしい質問です。参照画像は、これまでに試したものを含め、非常に役立ちます。「制御可能性」の意味についてもう少し詳しく教えてください。あなた制御できることはたくさんあります。いくつかの例が役立ちます。
ピカレク

こんにちは!ご回答ありがとうございます。制御可能性とは、特定のルールを作成して(たとえば、交差点を特定の距離よりも近くに配置せず、x度よりも鋭角を許可しない)、生成アルゴリズムにこれらの制約を尊重させることを意味しますか?さらに、これらのルールは、さまざまな範囲の興味深いマップを生成するアルゴリズムの機能を妨げてはなりません。あなたの励ましは心強いですが。これを機能させる方法の詳細に不満を感じ始めました!
SixTwoOne 2018年

回答:


2

例の道路では、交差点間のセグメントに曲線があり、生成された道路にはありません。道路にさらに「冗長な」制御点を追加してみましたか?

ループの数を生成パラメーターにするのはどうですか?また、「曲線度」(冗長制御点の数)出口の数は別になります。

交差点にぶつかったときに、2点のコントロールポイントを与えることで道路を終わらせることもできると思います。交差点がよく見えるはずです。


中間管理ポイントの提案は良いと思います!現時点で使用しているグラフレイアウトアルゴリズムは直線のみを生成しますが、他の2つのノードの間に「曲がった曲げ」ノードを配置し、ヒューリスティックを使用して近くに制御点を配置すると、見栄えがよくなります。見栄えのよい交差点を作成することとも関連しているので、私は間違いなくこれをさらに検討する必要があります。
SixTwoOne 2018年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.