ダンジョン世代のコンテキストでの手続き型コンテンツの生成に関する優れたリソースは何ですか?
私が見つけた最も近い記事は、2d迷路を生成するアルゴリズムでした。これは、私が探しているものとはまったく異なります。部屋や接続された廊下などの機能が理想的です。
ありがとう!
ダンジョン世代のコンテキストでの手続き型コンテンツの生成に関する優れたリソースは何ですか?
私が見つけた最も近い記事は、2d迷路を生成するアルゴリズムでした。これは、私が探しているものとはまったく異なります。部屋や接続された廊下などの機能が理想的です。
ありがとう!
回答:
これは以前に多かれ少なかれ回答されています。あなたの最初の立ち寄り場所はhttp://pcg.wikidot.com/である必要が
あります。これはまったく有益な回答ではないと非難されたので(実際に? )、wikiのこのページでは、Dungeonジェネレーターを具体的に扱っており、このテーマに関するさまざまな記事へのリンクがあります。
http://pcg.wikidot.com/pcg-algorithm:dungeon-generation
手続き型コンテンツの生成は非常に創造的なアプローチであり、あらゆるアイデアが有効であるため、ウィキ全体を閲覧することをお勧めします。これは、ラテラル思考の課題であり、それは楽しいものです。
正方形グリッドに基づいて次のアルゴリズムを使用することで、かなり良いレベルを得ることができました。
最初に、部屋のセットを作成します。ランダムパラメーターは、部屋のサイズと部屋の数を定義します。適応アルゴリズムは、大きな廊下で作られたゾーンと非常に小さな部屋のゾーンを定義することさえできます。
次に、すべての部屋が互いに接続されていることを確認する必要があります。このために、パスファインダーを実行して、各部屋のペアで廊下(たとえばA *)を掘り、既存のスペース(部屋または他の廊下)にランダムに選択した重みを、まだ刻まれていないスペース(壁)と比較して与えます。重量の差が小さい場合、新しい廊下を掘るのはかなり安くなり、アルゴリズムは部屋の間で多くの廊下を作り、場所から別の場所に行く可能性が多くなります。重みの差が大きい場合、アルゴリズムは既存の部屋と廊下を通過することを好み、特定の目的地に到達するための経路をより蛇行させ、選択肢を少なくします。
これにより、少数のパラメーターから、非常に異なる外観レベルを作成することができます。狭い廊下が密に相互接続された部屋の巣のような迷路にリンクしているまばらな巨大ホールから。
このアルゴリズムに基づいて、ゾーンに依存する壁の装飾を追加したり、廊下を小さくしたり大きくしたり、特別な部屋を作成したりできます。
コードを読むのが好きでC#を解析できる場合、私のローグライクアマランスが使用するダンジョンジェネレーターを提案できますか?それはですここ。接続された部屋、拡張可能な機能、その他の便利な機能を処理します。
プロジェクト全体をプルダウンしてビルドする場合、ダンジョンを生成および描画するスタンドアロンツールがあり、ダンジョンを微調整して動作を確認できます。
これらはすべて素晴らしいアイデアです。RogueBasinとpcg.wikidot.com から少し取って、C#で独自の実装を作成しました。
私は、セルオートマトン法を使用して生成できる洞窟のようなレベルの「自然な」外観が本当に好きでした。セルオートマトン法の意味を理解するには、ConwayのGame of Lifeを想像してください。私のコードは4-5メソッドと呼ばれるものを使用しています。つまり、タイルが壁であり、その9つの隣人の4つ以上が壁である場合、または壁ではなく5つ以上の隣人が壁である場合、タイルは壁になります。マップを壁またはスペースでランダムに埋めることから始め、次に各x / y位置に繰り返しアクセスして、4-5ルールを適用します。孤立した洞窟を形成する問題を軽減するために、マップをランダムに埋めた後、各タイルに4-5ルールを適用する前に、マップ全体の水平線を空白にして、壁ではなくスペースに設定します。
マップハンドラクラスのコードと、ここで行った改善を表示できます。
またはここにアーカイブされたバージョン。
これを見つける最も直接的な場所は、ソースコードを実際に見ることだと思います。この分野の2つの主要なプレーヤー、AngbandとNethackは両方ともオープンソースです。