ダンジョン自動生成
■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。
02/07/19 22:06ID:o6Bp.wT2どうやるんですか
0213名前は開発中のものです。
04/06/14 23:46ID:HxZhdP5qis_all_connected();
9つの小領域分用意された、部屋訪問フラグをクリアする。同時に、部屋が
あるかどうかを調べて、あれば、その部屋の番号を覚えておく。(starting_room)
その部屋から訪問調査する。
visit_rooms(roomnum);
roomnum部屋の訪問フラグをオンにする。
roomnum部屋にある4つの扉に対して・・・
扉から接続されている別の部屋の扉を調べて、
その部屋に対してvisit_rooms()する。再帰呼び出しですよ。
※先に書き忘れたけど、部屋に扉と通路を作成する時に、どこの部屋の
扉につながっているのかを記録してあるので、それを参照している。
また、一つの部屋には最大で4つの扉が設置される。上下左右の壁に一つずつ。
全部屋訪問フラグがONになっていれば、全部屋が接続されているとみなされる。
なぜか、
if ((rooms[i].is_room & (R_ROOM | R_MAZE)) && (!rooms_visited[i])) {
部屋だけでなく、迷路も部屋と同じ扱いになってる。
0214ぐぅ@氷解 ◆Mn5mzn8hAQ
04/06/14 23:51ID:0lapHs9Hヽ(`Д´)ノ うぉ〜
あれ、部屋が通路になってしまう仕掛けはいったい・・
0215名前は開発中のものです。
04/06/14 23:51ID:HxZhdP5q隠し扉それです、ThanX!
>>209
その1 ... 隠し扉
その2 ... is_all_connected();が真の場合、通路作成のfor()ループをbreakしてます。
つまり、ぐるっとまわって別の部屋へつながっている場合、直通路は作成されないのだと思います。
0216名前は開発中のものです。
04/06/14 23:59ID:HxZhdP5q0217ぐぅ@氷解 ◆Mn5mzn8hAQ
04/06/15 00:02ID:f1MiYXarif ((rn != r1) && (rn != r2) && (rn != r3) && rand_percent(40)) {
goto END;
}
の処理、必須の3部屋でなければ40%の確率で
通路に変貌すると見た。つぅか既出だったっけかな・・
0218ID変わっちゃった
04/06/15 01:58ID:aIwm2r1B部屋に扉がない場合(どこにもつながってない壁がある)、
行き止まりの通路を作成してる?
まぁ、ローグの部屋と通路の作成方法はこれでわかった、ということでいっかな。
このアルゴリズムのキモは“空間を3x3に分割する”ということに尽きますね。
これで部屋の重なりを防げるし、ある程度のばらつきを保証できるわけです。
0219ぐぅ@氷解 ◆Mn5mzn8hAQ
04/06/15 02:25ID:f1MiYXarウンウン
おれっちも3X3が肝とおもふさ〜
あと、再帰して繋がりチェックしるやつ
あれないと全部の部屋がつながってしまうわけだけど
ランダムな部屋から通路つくるから絶妙に無駄な通路ができたりする。
必ずしも最低限の通路ではないちうとこもよくできてる。
まとめでもアップしようと思ったけど(カッタルイからw)やめて
このアルゴリズムの簡易版でも作ってアップしようかな。
ID変わっちゃったさんありがとう
おかげでかなりスムーズに解析できた。
というわけで、とりあえずどもおつかれさました〜
0220名前は開発中のものです。
04/06/15 16:40ID:vSxhBobb労をねぎらう意味で、
Delphianで人気の「Delphiゲームプログラミングのエッセンス」
からロジックを転載します。
フロアを3×5のブロックに分ける
1ブロックは、10×10のマス
部屋番号
□□□□□ 0〜4
□□■□□ 5〜9
□□□□□ 10〜14
部屋の数は、5〜10として、最低3個は偶数の部屋番号に配置する
1ブロックには、最大9×9マスの部屋が作られる。
(1マス分は通路に充てる。)
1ブロックには、必ず部屋か通路が存在する。ただし■は何も無し。
2と12(■の上下にあるブロック)はどちらかを必ず両隣とつなぐ。
2と12を隔てて左右のフロアで各6ブロック毎に部屋や通路を作成する。
そのとき通路を繋ぐロジックは、絶対に繋がっていない部屋を作らないこと。
これが基本。
3×3のブロックに分けるロジックよりは、ダンジョンっぽい造りになると思う
後は、部屋を迷路状にしてしまうとか、ブロックをまたいだ中部屋をつくるとか、
隣り合わせのブロックに向かう通路を必ず作るとか(円形のフロアになる)、
適当に部屋や通路を加工していけば面白くなるかもね。
0221ぐぅ@夜更かし ◆Mn5mzn8hAQ
04/06/16 03:10ID:wguEk+iTらしくなってるじゃろうか?
http://namihei.zone.ne.jp/upup/up/12992.jpg
http://namihei.zone.ne.jp/upup/up/12991.jpg
0222名前は開発中のものです。
04/06/16 06:49ID:4vCvzbx3おおっ、トルネコっぽい。グッド。
0223名前は開発中のものです。
04/06/16 17:06ID:wxXigfIiいい感じだね。
しかも、ローグのソースをもとにちょこっと拡張しました?
せっかく結果も出てきたことですし、
ここらで、ダンジョン自動生成のルールを決めたらどうでしょうか?
とりあえず、たたき台
1.「風来のシレン」を習い、1フロアの面積を50x30とする
2.1フロアの情報は、部屋・通路・壁の3種類として、出力を区別する
3.サンプル出力は、画像とし、2パターン以上提出する
意見等あればどうぞ。
0224名前は開発中のものです。
04/06/16 18:17ID:E0t6wJPTここまでくるとあとはゲームバランスになってしまう。
1フロアに部屋をいくつ配置するのかっていうのは、
腹の減り具合とか、敵の強さとかに依存するし。
0225ぐぅ@腹ペコ ◆Mn5mzn8hAQ
04/06/16 18:30ID:wguEk+iTさんくすこ
究極的ダンジョン生成エンジンを開発して
それはもう愉快なローグ系携帯アプリを作るのが夢ですの。
もちろん主人公はカシワモーチですわ。
>>223
現状1フロアは64x48。
4x3のエリアにわけて生成。
部屋を配置して通路でつないでるだけ。
ここまできて気づいたのだが
俺っちには今のところ
「どんなマップを生成したいのか」という具体的なビジョンがない。
究極的てなんやねん、て話。
夕飯買いに逝ってきます。
0226名前は開発中のものです。
04/06/16 19:21ID:7o6/4sW2ttp://www.aarg.net/%7Eminam/dungeon.cgi
0227ぐぅ@アイスクリーム ◆Mn5mzn8hAQ
04/06/16 19:31ID:wguEk+iTむぅ
それすごいね。
それで生成したマップで内容がシレンだったら面白いのだろうか。
0228名前は開発中のものです。
04/06/16 19:37ID:7o6/4sW2シレンとかはフィールドを巡るって感じだけどWizは部屋を漁るって感じだから。
0229名前は開発中のものです。
04/06/16 19:52ID:umWV/n6Xよさげだ
0230名前は開発中のものです。
04/06/16 20:07ID:6hhIabkQ0231ぐぅ@満腹 ◆Mn5mzn8hAQ
04/06/16 20:24ID:wguEk+iTなるほど・・・
0232名前は開発中のものです。
04/06/16 21:20ID:MyHIRJr2RPGツクールだけど
0233223
04/06/17 09:19ID:gyW9IQUR>現状1フロアは64x48。
だったか、スマソ 適当に書いたのが悪かった
ただ、ここは自動生成スレだし、いろんなロジックを考えるのは無駄じゃないと思うんだが・・・
シレンにしろ、明らかにひとつのロジックで書かれていないでしょ?
まぁ、いいけど( ゚Д゚)y─┛~~
0234ぐぅ@D言語研究中 ◆Mn5mzn8hAQ
04/06/17 14:17ID:loWtexz3なんで謝ってるのかわかんないジョ
俺もいろんなロジックを考えるのは無駄じゃないと思うジョ
0235名前は開発中のものです。
04/06/17 17:10ID:ItiRVkb7ブロック単位で生成させるなら三次元のダンジョンも応用で出来そう
ただ完全にベクターというか、アリの巣のようなダンジョンを作るのはもうどうやったらいいのかわからん
0237ぐぅ@裸ネクタイ ◆Mn5mzn8hAQ
04/06/18 18:00ID:q/zHUwKW@通路をなるべくグネグネしない
という方針で
マップ生成アルゴリズムに手を加えてみますた。
意見きかせてくださいまし
Javaアプレットで、クリックするたびに新しいマップを生成しる。
http://namihei.zone.ne.jp/upup/up/13101.lzh
0238ぐぅ@裸ネクタイ ◆Mn5mzn8hAQ
04/06/18 18:01ID:q/zHUwKW0239名前は開発中のものです。
04/06/18 19:26ID:1IDEdqU+それならツクール2003で作れ
ダンジョン自動作成機能あるぞw
0240名前は開発中のものです。
04/06/18 19:56ID:oZgvjvN9物事の仕組みがどうなっているかを知ろうとしない奴にはプログラミングの素質はない。一生ツクールやってろ。
0241名前は開発中のものです。
04/06/18 20:22ID:A6zOKkuBおーすげー。
けど、「ローカを極力直線的にする」という方針のせいで
「同じようなマップばかり」感が出来てしまっている気もしまつ
0242名前は開発中のものです。
04/06/18 22:10ID:Gazkyfw7角が丸くなってるのとか
□□□□
□□□□
□□
0243ぐぅ@裸エプロン ◆Mn5mzn8hAQ
04/06/18 23:35ID:q/zHUwKW>「同じようなマップばかり」感が・・
了解。
それは俺っちも感じてたので現在調整中。
>>242
なるほど部屋自体もバリエーションがあると・・
それはあまり考えてなかったカモ。
あとで考えてみる。
マップ生成のイメージができあがったので
もう一息で完成しる予定。
0244名前は開発中のものです。
04/06/19 01:47ID:eD4/Os/Tでも具体的な使い方が思いつかない orz
0245ぐぅ@夜這い中 ◆Mn5mzn8hAQ
04/06/19 02:59ID:YWlxQVDJ生成アルゴリズム学習の効能を考えてみた。
●うぃざ〜どり〜タイプ(>>229-230参照)
●Quakeなどの3Dアクションゲームのステージ
●各種ゲームの一場面にスパイスとして
●パズルゲームとして
●電流イライラ棒のステージとして(゚Д゚)ハァ?
●追いかけっこ、レースゲームなど
ステージを巡回することに意味があるゲームすべて
使えそうな場面てイッパイありそうだね。ららら。
0246名前は開発中のものです。
04/06/19 09:16ID:VrZX8wM90247名前は開発中のものです。
04/06/19 16:54ID:TP5uiroQ0248名前は開発中のものです。
04/06/19 20:27ID:zNSAKAYY0249名前は開発中のものです。
04/06/19 21:21ID:CFVCgowpこれだと通路がごちゃごちゃになりやすい罠。
http://namihei.zone.ne.jp/upup/up/13183.zip
窓用バイナリです。マカやウニな方すいません。
Rで再生成。起動時にオプションに"-nowait"付けるとウェイト無しになります。
0250ぐぅ@ディープブルー ◆Mn5mzn8hAQ
04/06/19 22:25ID:YWlxQVDJ生成してる様子が見れて面白いねヽ(´ー`)ノ
んでアルゴリズムを想像してみた。
穴掘り系のアルゴリズムで(見たまんまだがw)
再帰的に通路を延ばして
既存の部屋や通路と重ならないことを条件に
部屋を配置しているとみた。
通路の問題と部屋の数とマップの大きさの
制御ができれば究極かもね〜とおもた。
0251名前は開発中のものです。
04/06/20 10:48ID:IVN9/P8pダンジョンに飽きが来る前に、あまりの作業ゲーっぷりに飽きたが。
0252249
04/06/21 19:22ID:Yt6BBulPバージョンアップしてみたよ。
主な変更点は、
通路を作る時に周囲の壁比率を調べて、壁が多い方に向かって掘り進む様にしてみたぐらい。
起動オプションの内容が変わってるので一応readme読んどいて。
>>250
マップのサイズは一応引数で指定できる様になってまつ。
通路の問題も少しはよくなったはず。かな? 部屋の数はとりあえず放置。
とりあえずマップ生成はこの辺で中断して、
簡単なローグライクな物体を作ってみようかと思ってます。
0253名前は開発中のものです。
04/07/08 00:08ID:cqJ2IUqs0254名無しさん@そうだ選挙に行こう
04/07/11 14:17ID:N5viEg7j0255名前は開発中のものです。
04/07/13 02:42ID:jJo7FGn+http://pc5.2ch.net/test/read.cgi/gamedev/1010018331/l50
ここの323が迷路自動生成のRPGつくってるよ
0256名前は開発中のものです。
04/08/01 15:21ID:usbW8wJj通路2本がこんがらがったりしてる
0257名前は開発中のものです。
04/08/27 18:39ID:6G59GEgA0258名前は開発中のものです。
04/09/01 00:10ID:lhDgMKCuttp://gamdev.org/up/img/1143.jpg
0259名前は開発中のものです。
04/09/01 00:28ID:Gy9xIV4Cおまいこんなただの白黒画像をJPGにすんなよ。
GIFのほうがよっぽど容量少ないぞ。
0260名前は開発中のものです。
04/09/01 01:02ID:lhDgMKCuゲムデヴのトコ、jpgで上げてるヒト多かったんで・・・
以後気を付けます。
0261名前は開発中のものです。
04/09/01 01:34ID:IwX3QeYNむしろtxtでも良いくらいだ。
俺も現在作成中。廊下が上手くうごかん。
0262名前は開発中のものです。
04/09/10 15:25:48ID:BWQ15nVCこのスレで挙げられたようなのとは違うやつ。
0263名前は開発中のものです。
04/09/10 16:20:26ID:TY6UsWtD1.単純な棒倒し法、穴掘り法等をそのまま利用した迷路のみのダンジョン
2.nethack、rouge等の部屋と通路に分けられるダンジョン
面白いアルゴリズムって言ってもなあ…
0264名前は開発中のものです。
04/09/10 16:54:00ID:+r9mwvZc何重もの円を書いて適当にブッタ切る
そして内側の円から外側の円に向けて通路をわたす
0265名前は開発中のものです。
04/09/10 17:08:05ID:0YuGbAclアルゴリズムというよりは様々な細かい要素を組み込むことが必要なのかな
0266名前は開発中のものです。
04/09/10 17:09:05ID:CkYRmAwD0267名前は開発中のものです。
04/09/10 19:14:10ID:FL6ftGDh0268名前は開発中のものです。
04/09/10 19:27:32ID:oQTQ81fiダンジョンデータにコンバートする
どの文字かはランダム
プレイヤーは予測しながら進む
0269名前は開発中のものです。
04/09/10 20:07:04ID:sRVfUITO半裸の女の子を生成しないといけないわけか、今までのアルゴリズム
では確かに解決できないな…
期待させてもらいます。
0270名前は開発中のものです。
04/09/10 21:02:44ID:BWQ15nVC指針というか、作り方がわかれば、自動生成にも応用できそうなんだけどね・・。
0271名前は開発中のものです。
04/09/10 21:05:40ID:u8u8k9wkhttp://f25.aaacafe.ne.jp/~nullpo/
0272名前は開発中のものです。
04/09/11 00:07:12ID:qXK5hJccそのままダンジョンにコンバートしたらいい
0273名前は開発中のものです。
04/09/12 00:09:09ID:csUOVR/aこのスレで重要なのは構造の方だよな。
例えば1つのフロアでもタクティクスみたいに山あり谷ありにするとか。
0274名前は開発中のものです。
04/09/12 00:14:29ID:6giDMfAq山アリ谷アリんを作るとしたら・・・
まったいらの床にてきとーに縦軸の起伏の最大値を設定して段々と・・・よくわかんね
0275名前は開発中のものです。
04/09/12 00:51:56ID:7YwXfMXJ一定以上段差があると通行できない。
0276名前は開発中のものです。
04/09/12 04:11:27ID:5jJEqSKaどこかで見たおぼえがある
0277名前は開発中のものです。
04/09/12 16:27:13ID:DirlIiFv3ページくらいだけど・・・。
0278名前は開発中のものです。
04/09/13 01:02:22ID:/TWcsktV職人デザイナが丁寧に作り上げたダンジョンの方がいいよ。
プログラマにできることは前者なんだけどさ。
0279名前は開発中のものです。
04/09/13 01:12:33ID:4vmv6GkS・・・あれ?
0280名前は開発中のものです。
04/09/18 13:11:14ID:kb7Apco/そこから共通点を見つけ出し、アルゴリズム化…
うん、俺はやらない
0281名前は開発中のものです。
04/09/18 13:37:59ID:xT0CmM480282名前は開発中のものです。
04/09/27 18:01:27ID:4SFuLUec0283名前は開発中のものです。
04/09/27 18:12:21ID:mSnDxcyL・・・。
0284名前は開発中のものです。
04/09/28 00:22:03ID:GU2B02zvいや、そういうダンジョンを作って遊びあうのも面白そうだ。
・・・しまった、確か前にナムコが似たようなの出してた。
0285名前は開発中のものです。
04/09/28 04:45:49ID:Sc/T2jjq0286名前は開発中のものです。
04/09/28 18:00:05ID:ofbRvjxBでもそういうところに罠が多いと覚えられたら逆に攻略が簡単になる罠。
0287名前は開発中のものです。
04/09/28 22:33:54ID:UcoBfAAY0288名前は開発中のものです。
04/09/29 19:45:00ID:376p4p/M0289名前は開発中のものです。
04/09/29 21:02:10ID:gBf9GxrK0290名前は開発中のものです。
04/09/30 14:32:14ID:0ISGzMLp想定襲撃者設定
予想攻略順路設定
クライマックスシーン設定
くらいは内部で考えてほしいやん
0291名前は開発中のものです。
04/09/30 20:01:00ID:OuTCYL2Uこの解説があれば簡易roguelikeを作って遊べるかな?
>>226のWiz風小部屋cgiもすごそう。
0292名前は開発中のものです。
04/10/03 23:00:30ID:QZ2qsdxk遺跡に面倒な迷路作ったりしねーし、洞窟だってRPGに出てくるようなのとは全然違うし。
探鉱なんかは割とそっくしっぽいかな。
0293名前は開発中のものです。
04/10/03 23:15:43ID:8EPrF2Db0294名前は開発中のものです。
04/10/04 05:47:00ID:0YxQ3kRH無計画に建て増しを重ねた家とか、ダンジョンっぽいけどね。
うちの大学の法経本館って建物が、まさしくそんな感じだった。
0295名前は開発中のものです。
04/10/04 08:08:55ID:KgUV+MGE三次元迷路の難しさ(作る方じゃなくて解く方)は並大抵じゃない
無重力だったら更に難易度アップ
0296名前は開発中のものです。
04/10/04 09:19:42ID:uBXpC+200297名前は開発中のものです。
04/10/04 09:44:56ID:tjHvNagT0298名前は開発中のものです。
04/10/05 00:05:27ID:yY4LedyX昔、無重力三次元の迷路にハマってたことがある。解く方ね。
マス目状でできている限りは、三次元右手法というのを使えば
一応解けるか、または出発点に帰って来れるのだけど…。
0299名前は開発中のものです。
04/10/05 23:11:17ID:HWPrXU8U0300名前は開発中のものです。
04/10/10 18:52:00ID:ztmRv9+O詳細キボンヌ
三次元右手法でぐぐったらこのスレが一番上だった。
0301名前は開発中のものです。
04/10/10 21:51:28ID:hLLwP255googleの検索ロボットって優秀だよなw
0302名前は開発中のものです。
04/10/11 00:16:28ID:yRIcbrcSそういうときって、かなり鬱になるよな。
さらに 先が真っ暗にw
0303名前は開発中のものです。
04/10/11 14:19:33ID:JIBMCEks0304名前は開発中のものです。
04/10/12 01:50:59ID:INg1LVSW0305名前は開発中のものです。
04/10/12 02:35:23ID:sUyOixh10306298
04/10/12 15:39:49ID:qEbFSq6qじゃあ長文になるけど書くよ。
そもそも右手法って何のためのものかって言えば、交差点でどっちへ進むかを
指し示すものなんだよね。で、この時肝心なのは、「今は北に向いてるから…」とか
考えなくても、目の前の情報だけから判断して行く方向を決めれるということ。
通常の右手法では、現在の進行方向と、伸ばしている手とに従って、交差点では
「手の側」「直進」「手の反対側」「戻る」というこの4方向を、この順に優先して選ぶ。
手の側が空いていればそっちへ、だめなら直進、それもだめなら手の反対側へ、
それもだめなら戻るという具合で。
ところで、三次元の迷路では、体の向きというのは「進行方向」だけでは決まらない。
たとえば同じ「北行き」でも、足元が地面方向のこともあれば、足元が東とか、西とか
天の方向になっていることがあるから。
0307名前は開発中のものです。
04/10/12 15:40:13ID:qEbFSq6qまず、常に一方の壁面に足をつけて歩くのと、片手を上げて歩いてることが前提で。
交差点で進行方向を選ぶときの優先順位は次のとおり。
「足元」「手の側」「直進」「頭上」「手の反対側」「戻る」
たとえば、右手を上げながら歩いている人は、まず足元が空いていれば必ず足元へ、
もし右側が空いていればそっちへ、それもだめなら直進、それもだめなら頭上へ、
それもだめなら左側へ、それもだめなら戻る、という具合になります。
それで、足元へ入るとか右へ曲がるとか言っても、曲がった後足元をどっちにするかが
問題になるわけですが、それはこうです。
「優先順位が一つ低かった進行方向が、頭上になるように」。
たとえば、手の側へ曲がるときは、直進方向が頭上になるようにしますから、つまり
今来た方向が足元になることになります。
それから、「手の側」「頭上」「戻る」を使ったときは、上げる手の左右を変えます。
このようにして歩けば、通常の右手法と同様に、ループのない迷路では必ず出口に
行けるし、ループのある迷路でも、最低でも入口に帰ってくることができます。
0308名前は開発中のものです。
04/10/12 23:41:46ID:anbCpzYg解説どうも。進む方向をあらかじめ一定順序に決めておくのね。
しかし3Dだとややこしいな。
0309名前は開発中のものです。
04/10/20 15:45:07ID:OESpaijF0310名前は開発中のものです。
04/10/20 16:09:17ID:EZg4Amvo書き込まないだけでチェックはしてるぞ。
0311名前は開発中のものです。
04/10/20 19:52:07ID:DmOOtTYD0312名前は開発中のものです。
04/10/21 07:49:28ID:7EH9XTP2■ このスレッドは過去ログ倉庫に格納されています