[過去ログ] ダンジョン自動生成 (1001レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
213: 04/06/14 23:46 ID:HxZhdP5q(17/19) AAS
通路を一本作成したら、全ての部屋がつながっているかを調べる。

is_all_connected();
9つの小領域分用意された、部屋訪問フラグをクリアする。同時に、部屋が
あるかどうかを調べて、あれば、その部屋の番号を覚えておく。(starting_room)
その部屋から訪問調査する。

visit_rooms(roomnum);
roomnum部屋の訪問フラグをオンにする。
roomnum部屋にある4つの扉に対して・・・
扉から接続されている別の部屋の扉を調べて、
その部屋に対してvisit_rooms()する。再帰呼び出しですよ。
省7
214: ぐぅ@氷解 ◆Mn5mzn8hAQ 04/06/14 23:51 ID:0lapHs9H(19/19) AAS
おおお、謎がほぼすべて解けた
ヽ(`Д´)ノ うぉ〜

あれ、部屋が通路になってしまう仕掛けはいったい・・
215: 04/06/14 23:51 ID:HxZhdP5q(18/19) AAS
>>212
隠し扉それです、ThanX!

>>209
その1 ... 隠し扉
その2 ... is_all_connected();が真の場合、通路作成のfor()ループをbreakしてます。
つまり、ぐるっとまわって別の部屋へつながっている場合、直通路は作成されないのだと思います。
216: 04/06/14 23:59 ID:HxZhdP5q(19/19) AAS
fill_out_level()ながーい!休憩。
217: ぐぅ@氷解 ◆Mn5mzn8hAQ 04/06/15 00:02 ID:f1MiYXar(1/2) AAS
make_room()内の
if ((rn != r1) && (rn != r2) && (rn != r3) && rand_percent(40)) {
goto END;
}
の処理、必須の3部屋でなければ40%の確率で
通路に変貌すると見た。つぅか既出だったっけかな・・
218
(1): ID変わっちゃった 04/06/15 01:58 ID:aIwm2r1B(1) AAS
fill_out_level()はよくわからない。
部屋に扉がない場合(どこにもつながってない壁がある)、
行き止まりの通路を作成してる?
まぁ、ローグの部屋と通路の作成方法はこれでわかった、ということでいっかな。

このアルゴリズムのキモは“空間を3x3に分割する”ということに尽きますね。
これで部屋の重なりを防げるし、ある程度のばらつきを保証できるわけです。
219: ぐぅ@氷解 ◆Mn5mzn8hAQ 04/06/15 02:25 ID:f1MiYXar(2/2) AAS
>>218
ウンウン
おれっちも3X3が肝とおもふさ〜
あと、再帰して繋がりチェックしるやつ
あれないと全部の部屋がつながってしまうわけだけど
ランダムな部屋から通路つくるから絶妙に無駄な通路ができたりする。
必ずしも最低限の通路ではないちうとこもよくできてる。

まとめでもアップしようと思ったけど(カッタルイからw)やめて
このアルゴリズムの簡易版でも作ってアップしようかな。

ID変わっちゃったさんありがとう
省2
220: 04/06/15 16:40 ID:vSxhBobb(1) AAS
ローグのソース解析お疲れさんです
労をねぎらう意味で、
Delphianで人気の「Delphiゲームプログラミングのエッセンス」
からロジックを転載します。

フロアを3×5のブロックに分ける
1ブロックは、10×10のマス
          部屋番号
 □□□□□ 0〜4
 □□■□□ 5〜9
 □□□□□ 10〜14
省12
221
(2): ぐぅ@夜更かし ◆Mn5mzn8hAQ 04/06/16 03:10 ID:wguEk+iT(1/4) AAS
このようなものを生成できるようになりました。
らしくなってるじゃろうか?

画像リンク[jpg]:namihei.zone.ne.jp
画像リンク[jpg]:namihei.zone.ne.jp
222
(1): 04/06/16 06:49 ID:4vCvzbx3(1) AAS
>>221
おおっ、トルネコっぽい。グッド。
223
(3): 04/06/16 17:06 ID:wxXigfIi(1) AAS
>>221
いい感じだね。
しかも、ローグのソースをもとにちょこっと拡張しました?

せっかく結果も出てきたことですし、
ここらで、ダンジョン自動生成のルールを決めたらどうでしょうか?
とりあえず、たたき台
1.「風来のシレン」を習い、1フロアの面積を50x30とする
2.1フロアの情報は、部屋・通路・壁の3種類として、出力を区別する
3.サンプル出力は、画像とし、2パターン以上提出する

意見等あればどうぞ。
224: 04/06/16 18:17 ID:E0t6wJPT(1) AAS
いや、技術的な話は、もう特にないんだよ。
ここまでくるとあとはゲームバランスになってしまう。
1フロアに部屋をいくつ配置するのかっていうのは、
腹の減り具合とか、敵の強さとかに依存するし。
225
(1): ぐぅ@腹ペコ ◆Mn5mzn8hAQ 04/06/16 18:30 ID:wguEk+iT(2/4) AAS
>>222
さんくすこ
究極的ダンジョン生成エンジンを開発して
それはもう愉快なローグ系携帯アプリを作るのが夢ですの。
もちろん主人公はカシワモーチですわ。

>>223
現状1フロアは64x48。
4x3のエリアにわけて生成。
部屋を配置して通路でつないでるだけ。

ここまできて気づいたのだが
省4
226
(3): 04/06/16 19:21 ID:7o6/4sW2(1/2) AAS
ローグ系アルゴリズムが落ち着いたところでこんなものを放り出してみるテスト
外部リンク[cgi]:www.aarg.net
227: ぐぅ@アイスクリーム ◆Mn5mzn8hAQ 04/06/16 19:31 ID:wguEk+iT(3/4) AAS
>>226
むぅ
それすごいね。
それで生成したマップで内容がシレンだったら面白いのだろうか。
228: 04/06/16 19:37 ID:7o6/4sW2(2/2) AAS
もともとD&D用だからシレンよりWizとか3D系の方が相性がいいだろう。
シレンとかはフィールドを巡るって感じだけどWizは部屋を漁るって感じだから。
229
(1): 04/06/16 19:52 ID:umWV/n6X(1) AAS
うむ、それみると、自動生成でWiz作れそうだね
よさげだ
230
(1): 04/06/16 20:07 ID:6hhIabkQ(1) AAS
外部リンク[html]:www.vector.co.jp
231: ぐぅ@満腹 ◆Mn5mzn8hAQ 04/06/16 20:24 ID:wguEk+iT(4/4) AAS
そうか自動生成でウィザードリ〜。
なるほど・・・
232: 04/06/16 21:20 ID:MyHIRJr2(1) AAS
自動生成でWizといったらヘルドアか
RPGツクールだけど
1-
あと 769 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.014s