【ダンジョン】 自動生成 2 【地形】
■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。
2007/06/19(火) 12:21:35ID:oqLsw/raローグタイプやシレンタイプのダンジョンや、街並みや地形など。
※過去スレ
ダンジョン自動生成
http://pc11.2ch.net/test/read.cgi/gamedev/1027084016/
関連サイトは>>2>>3
0008名前は開発中のものです。
2007/06/21(木) 22:47:19ID:xkoA9L90| |
| / ̄ ̄ ヽ, |
| / ', |
| {0} /¨`ヽ {0}, !
|.l ヽ._.ノ ', |
リ `ー'′ ',|
| |
 ̄ ̄ ̄ ̄ ̄ ̄ ̄
5代目住職 ジュウシマツ和尚
0009名前は開発中のものです。
2007/06/21(木) 22:48:29ID:xkoA9L90呼ばれたので貼っておく
0010名前は開発中のものです。
2007/06/22(金) 00:53:20ID:75RtLnUp0011名前は開発中のものです。
2007/06/22(金) 12:34:51ID:sSnTAJt3ローグのマップ作成は、長方形の分割から成り立っているが
必ず縦か横に真っ二つに分断されるラインがある。
こういう分断ラインの無い長方形分割を、ランダムにできないか?
0012名前は開発中のものです。
2007/06/22(金) 13:36:30ID:DWPFVMFv0013名前は開発中のものです。
2007/06/22(金) 16:54:03ID:FZ1SN4S3いったん小さめの格子状に分割して、それを結合するってのはどうよ?
0014名前は開発中のものです。
2007/06/23(土) 12:23:19ID:HwqlnVzg0015名前は開発中のものです。
2007/06/23(土) 12:42:24ID:qIz7htblローグのソースよまんとわからんのじゃ、面倒でやってられんw
0016名前は開発中のものです。
2007/06/23(土) 14:26:04ID:HwqlnVzgこういう分割方式って、部屋が被らないことが簡単に保障できる代わりに
特定のパターンでの生成を諦めるって趣旨だと思うが……。
まともなの作ろうとすると、掘削していくとか、ボトムアップなやり方じゃないと無理があるだろう。
迷路の棒倒し法と穴掘り法をどちらも実装した経験があるが、
同じ経験をした奴ならこのイメージが分かると思う。
0017名前は開発中のものです。
2007/06/24(日) 10:31:59ID:6NHXjMln俺は>>11をこんな感じに解釈してみた。
これで質問の意図と合ってるか、これがローグの方法かはわからないが。
マップを二つに縦か横の直線で分けて部屋を二つ作る。ここでは部屋A、Bとする。
部屋Aを同様に分割、これを新しく部屋C、Dとする。ここで部屋Aはなくなる。
同様に、[B→E、F]、[C→G、H]、[F→J、K]といった感じに分割していく。
で、こんなマップが出来るはず。ちなみにIが飛んでるのは図にする都合。
GGHHEEEE
GGHHEEEE
GGHHEEEE
GGHHJKKK
DDDDJKKK
DDDDJKKK
DDDDJKKK
今回問題になってるのは、HとE、DとJの境目。最初にAとBの境界線になっていたライン。
できたマップ全体がこのラインで分断されている。
0018名前は開発中のものです。
2007/06/24(日) 10:42:22ID:UL6BJzHS部屋自体は分割線からはみ出ないように配置していけば、
ぱっと見判らないし比較的空間のロスも少ないんじゃね?
廊下が長めになるかもしれないけど。
0019名前は開発中のものです。
2007/06/24(日) 10:45:32ID:6NHXjMln始めにマップを小さい格子状の部屋で分割しておく。部屋は多めにしておく。
AABBCCCDD
AABBCCCDD
EEFFGGGHH
EEFFGGGHH
EEFFGGGHH
JJKKLLLMM
JJKKLLLMM
これを[A=A+E][C=C+D][H=H+M][J=J+K+L]といった感じに結合。
AABBCCCCC
AABBCCCCC
AAFFGGGHH
AAFFGGGHH
AAFFGGGHH
JJJJJJJHH
JJJJJJJHH
このとき結合の仕方により、図のように全体を分断するラインがないマップが出来る、ってわけ。
ちなみに最終的なマップは、ここで決めた部屋の中に空洞(実際の部屋)と通路を配置する形で行えばいい。
0020名前は開発中のものです。
2007/06/24(日) 11:15:44ID:R5Lvu8dkだと、細かいマス目があちこちできそうだな。
そういえばランダム室内割りは、まだ出てきてなかったよな?
>2 のD&D風だけど未使用空間が無いようなタイプ
00211/2
2007/06/24(日) 16:31:00ID:PG/TOCa7my ($width, $height) = (60, 25);
my (@x, @y);
my ($i, $j, $k) = (0, 0, 0);
# x 方向に適当に分割
push @x, $j += (int rand 5) + 2 while $j < $width; # 2 - 6
delete $x[-1];
($i, $j, $k) = (0, 0, 0);
# y 方向に適当に分割
push @y, $j +=(int rand 5) + 2 while $j < $height; # 2 - 6
delete $y[-1];
print +(join ', ', @x), " [", scalar @x, "]\n", +(join ', ', @y), " [", scalar @y, "]\n";
00222/2
2007/06/24(日) 16:32:33ID:PG/TOCa7# 適当に結合
for (1 .. (int rand 15) + 15) { # 15 - 29
my ($x, $y) = (int rand scalar @x, int rand scalar @y);
print "$x : $y (";
my $dir = int rand 4;
if ($dir == 0) {
print $x . "," . ($y - 1) . "-" . $y . ")\n"; $no_wall{$x . "," . ($y - 1) . "-" . $y} = 1;
} elsif ($dir == 1) {
print $x . "-" . ($x + 1) . "," . $y . ")\n"; $no_wall{$x . "-" . ($x + 1) . "," . $y} = 1;
} elsif ($dir == 2) {
print $x . "," . $y . "-" . ($y + 1) . ")\n"; $no_wall{$x . "," . $y . "-" . ($y + 1)} = 1;
} elsif ($dir == 3) {
print +($x - 1) . "-" . $x . "," . $y . ")\n"; $no_wall{($x - 1) . "-" . $x . "," . $y} = 1;
}
}
my (@x_wall, @y_wall) = (map { 0 } 1 .. $width, map { 0 } 1 .. $height);
$x_wall[$_] = 1 for @x; $y_wall[$_] = 1 for @y;
my (@x_room, @y_room);
$i = 0; @x_room = map { ++$i if $x_wall[$_]; $i; } 0 .. $width - 1;
$i = 0; @y_room = map { ++$i if $y_wall[$_]; $i; } 0 .. $height - 1;
for my $y (0 .. $height - 1) {
for my $x (0 .. $width - 1) {
my ($xr, $yr) = ($x_room[$x], $y_room[$y]);
$x_wall[$x] and (!$no_wall{($xr - 1) . "-" . $xr . "," . $yr} and ($y_wall[$y] and print "+" or print "|") or print ".");
$y_wall[$y] and !$no_wall{$xr . "," . ($yr - 1) . "-" . $yr} and print "-" or print ".";
} print "\n";
}
----
ごめん俺は投げた
0023SDL厨 ◆SDL/2aFg42
2007/06/25(月) 15:37:54ID:J2r3CUKyJavaApplet製
http://www.aarg.net/~minam/dungeon_design.html
(↑リンク先にcgiが設置されています)
これをJavaで実装し直しました。
0024名前は開発中のものです。
2007/06/25(月) 16:02:01ID:c6qTjBeC0025名前は開発中のものです。
2007/06/26(火) 09:34:24ID:dcv1CRzJWizの疑似3D表示ではないようだし。
すごいな。というか、めんどうそうだ。
0026SDL厨 ◆SDL/2aFg42
2007/06/26(火) 13:11:17ID:OiO3IbCXども。自分(描画周り・その他担当)と、
自分の上の人(ダンジョンジェネレータ移植・全体マップ描画担当)も喜んでおります。
>>25氏
[CodeZine:3Dモデルを表示するJavaアプレットの作成]
http://codezine.jp/a/article/aid/38.aspx
を参考にしました。
表示物はメタセコイア形式(*.mqo)のものを表示しています。
テクスチャとかは未対応。
0027名前は開発中のものです。
2007/06/27(水) 19:57:28ID:20eQoNFI0028名前は開発中のものです。
2007/06/28(木) 10:30:11ID:X6Tc3KBe華麗に28get
>>19の説明はわかり易いね
rogueはただ単に定量に6分割する方法だったと思う。
俺は>>20の方法で分割したなー、分割領域x, y, w, hを乱数で出す。
ただ、重なる時は分割せず、なにもせずcontinueしてループを200回くらい回すといい感じに分割できてるっていう力技
でも>19のほうがよさげだね
0029名前は開発中のものです。
2007/06/28(木) 16:57:41ID:0LCmgY9D通路を先に書いて部屋を後で置くアルゴリズムをオススメする
0030名前は開発中のものです。
2007/06/29(金) 23:57:27ID:/p5LguVV生成過程がテキストで表示されてる。
0031名前は開発中のものです。
2007/06/30(土) 01:03:39ID:/+SdN5yY0032名前は開発中のものです。
2007/07/04(水) 17:19:27ID:aaRt4w6Sソースが汚なくてすまんです。
ttp://gamdev.org/up/img/9705.zip
>>11が言うように全体での上下分割の弊害がある気がする。
0033名前は開発中のものです。
2007/07/05(木) 10:20:47ID:0KprI8jrGJ!
たしかに通路が縦か横方向に端から端まで一直線にのびて
分断されている感じのマップができる傾向にあるな。
でも、ちゃんとウィザードリィ系3DダンジョンRPG風のマップが生成されているね。
あと、今時、MS-DOS用のプログラムだと、一瞬でウィンドウが閉じてしまって
意味が分からんっていう人もいると思うから、
a.exe > a.txt
pause
みたいなバッチファイルを同梱しといた方が良かったんじゃないかと思う。
0034名前は開発中のものです。
2007/07/05(木) 11:44:11ID:KBujyH/D他にフリーのあったかしらw
0035名前は開発中のものです。
2007/07/05(木) 11:45:48ID:KBujyH/D0036名前は開発中のものです。
2007/07/06(金) 10:27:17ID:rpbXgl/Gいい感じですね。でも縦横区切りはやっぱり宿命だなー
部屋の形を長方形以外でも可にすればもうちょっと減るか?
0037名前は開発中のものです。
2007/07/06(金) 11:14:59ID:88c1VINIGJ!ビルみたいな実際の建造物の内部を想起させていいね
void makeCorridor()<ここで通路の配置予約を行っているみたいだから
const int CORRIDOR_FIRST_CHANCE = 90;
const int CORRIDOR_SECOND_CHANCE = 80;
↓
const int CORRIDOR_FIRST_CHANCE = 50;
const int CORRIDOR_SECOND_CHANCE = 30;
みたいにすると通路自体は短くならないけど通路の数は減ってちょっとすっきりする
>>33
DOS窓もわからんのはソース読んでもわからんだろうし問題ねえよw
0038名前は開発中のものです。
2007/07/06(金) 11:20:09ID:88c1VINI素直に
cygwin
Mingw32
あたりを使うとか
DOS窓強化だけならNYACUS。
0039名前は開発中のものです。
2007/07/11(水) 20:00:36ID:zTPJwsaehttp://www.dev-spot.com/forums/index.php?topic=4.msg10
> This contest ends: August 5th, 2007 at midnight.
こんなんあるぜ
0040名前は開発中のものです。
2007/07/13(金) 01:59:18ID:tCDmKrq1http://www.jimrandomh.org/rldev/digging_features/
0041名前は開発中のものです。
2007/07/16(月) 00:04:18ID:6K/3CZwtブラウザ上でWiz風(だと思ってる)ダンジョンを生成する
http://gamdev.org/up/img/9779.lzh
最初は何もないマップで、一つだけ部屋を作ってやって、
あとは各マスが自分で周囲の状況を見て部屋なり通路なりを
伸ばしていくという感じなんだけどどうよ
0042名前は開発中のものです。
2007/07/16(月) 00:19:14ID:0Em9YSSh0043名前は開発中のものです。
2007/07/16(月) 00:43:18ID:wEYo3U1W0044名前は開発中のものです。
2007/07/16(月) 01:07:19ID:6K/3CZwtうむー。
0045名前は開発中のものです。
2007/07/18(水) 01:22:09ID:f5H7l50chttp://forums.introversion.co.uk/introversion/viewtopic.php?t=733
0046名前は開発中のものです。
2007/07/18(水) 01:44:12ID:pZOnhFxe0047名前は開発中のものです。
2007/07/19(木) 19:15:47ID:uplTSKzq0048名前は開発中のものです。
2007/07/20(金) 00:11:36ID:XTdst9jDhttp://forums.introversion.co.uk/introversion/viewtopic.php?t=600
0049名前は開発中のものです。
2007/07/20(金) 02:13:39ID:bApg5afG0050名前は開発中のものです。
2007/07/21(土) 18:09:51ID:zXVxsGbI0051名前は開発中のものです。
2007/07/21(土) 19:23:31ID:44Fkc2D+0052名前は開発中のものです。
2007/07/24(火) 11:18:46ID:joQZgMIsパラメータいじくれば応用範囲も広いし
一部屋を基点にして増殖、っていうのがマップ構成に独特の雰囲気を出している
0053hp+ZzJpD0 ◆tdos3yGGco
2007/07/29(日) 08:11:12ID:jExIUSGR水際処理まではさすがに断念。
ttp://www.voidelement.com/randqmap/
0054名無しさん@そうだ選挙に行こう
2007/07/29(日) 08:40:52ID:Xzvd7jFc0055名無しさん@そうだ選挙に行こう
2007/07/29(日) 17:43:54ID:I8FDzYW40056名前は開発中のものです。
2007/07/29(日) 19:54:24ID:YgssoeS40057名前は開発中のものです。
2007/07/30(月) 00:04:33ID:s7cNDyJ90058名前は開発中のものです。
2007/07/30(月) 00:10:12ID:yphm74U50059名前は開発中のものです。
2007/07/30(月) 02:40:47ID:PEc7Ld9xこれ面白いなぁ
0060hp+ZzJpD0 ◆tdos3yGGco
2007/08/01(水) 07:52:16ID:iM9ravM5コンボリューションフィルタ駆使してみたら意外と軽くいけたので満足。
ついでにスムージングON/OFFも追加。
0061名前は開発中のものです。
2007/08/01(水) 09:28:25ID:lNtVBUSY職業天ぷら詐欺師wwwwっっwうぇうぇww
0062名前は開発中のものです。
2007/08/01(水) 12:32:04ID:Hoz61AAF0063名前は開発中のものです。
2007/08/01(水) 12:48:14ID:h2WH7o/bなんか料理の模型が並んでるショーケースみたいなサイトだね。
0064名前は開発中のものです。
2007/08/01(水) 12:51:12ID:bZpIGDHs0065名前は開発中のものです。
2007/08/01(水) 12:56:54ID:G1X+Fstuお、必死だな本人w
0066名前は開発中のものです。
2007/08/01(水) 20:06:44ID:PHJ5d3dlhttp://www.interq.or.jp/moonstone/person/RRL/index.html
0067名前は開発中のものです。
2007/08/01(水) 20:09:03ID:PHJ5d3dlって、これすげえなw
ドラクエってだけで、wktkするw
0068名前は開発中のものです。
2007/08/02(木) 01:40:04ID:tW/BiuTt0069名前は開発中のものです。
2007/08/02(木) 06:52:48ID:k9KZi+UU0070名前は開発中のものです。
2007/08/02(木) 07:05:33ID:DbqHXc5c0071名前は開発中のものです。
2007/08/02(木) 07:42:21ID:k9KZi+UU0072名前は開発中のものです。
2007/08/02(木) 07:58:56ID:y196QZ4K0073名前は開発中のものです。
2007/08/02(木) 09:41:42ID:fmxyYPUr0074名前は開発中のものです。
2007/08/02(木) 10:01:03ID:eQe0hbZW0075名前は開発中のものです。
2007/08/02(木) 20:55:14ID:tfcWOmvo見栄えがずっと良くなってGood!
これで生成したマップを何かに使えないかなーとか刺激されマスタ
0076名前は開発中のものです。
2007/08/02(木) 21:30:13ID:MP5ocgXV0077名前は開発中のものです。
2007/08/03(金) 01:06:26ID:WkRBiNtL0078名前は開発中のものです。
2007/08/03(金) 04:50:18ID:eMY8tx2X0079名前は開発中のものです。
2007/08/03(金) 07:57:24ID:e2Qiydbk0080名前は開発中のものです。
2007/08/03(金) 08:00:37ID:okXpPYte0081名前は開発中のものです。
2007/08/03(金) 08:39:45ID:VKCtddo40082名前は開発中のものです。
2007/08/03(金) 08:49:13ID:jkXm9wBz0083名前は開発中のものです。
2007/08/03(金) 08:59:24ID:rvwQ978oどのスレを開いても夏な展開になってるから困る
0084名前は開発中のものです。
2007/08/03(金) 09:02:48ID:VKCtddo4夏厨も裸足で逃げ出すんじゃないか
0085名前は開発中のものです。
2007/08/03(金) 09:15:47ID:7UxPsFEw0086名前は開発中のものです。
2007/08/03(金) 13:17:35ID:Q8cuV4eO0087名前は開発中のものです。
2007/08/03(金) 16:11:10ID:Y/HlBCq4夏は露骨ですげえ
単発IDがどうとか言い出すからな・・・
0088名前は開発中のものです。
2007/08/03(金) 16:54:26ID:uCXrv81G0089進可 ◆Sinka1my5k
2007/08/09(木) 00:13:33ID:5x3ECIuyGJ!
0090名前は開発中のものです。
2007/08/09(木) 12:09:31ID:cz7TfNwMその上の建物とかはまた別に普通のモデルとして表しているのでしょうか?
何か参考になる本がありましたら教えてください。
0091名前は開発中のものです。
2007/08/09(木) 18:39:09ID:f1Ms1wCQ0092名前は開発中のものです。
2007/08/10(金) 02:04:49ID:BQLhEe793DのHeightMap的な考えならそうだろうと思う。
0093名前は開発中のものです。
2007/09/13(木) 00:01:35ID:z8NXjx1m0094名前は開発中のものです。
2007/09/21(金) 22:12:54ID:qTGljLSzちなみに最初はRacanhack コード解説を参考にしてみてたんだけどうまくいかなかったから自己流にしてみたんさ。
作り方は、ランダムに生成する部屋の数を決める。
部屋のサイズを決定し、各部屋が重ならないようにランダムに配置。
二つ目の部屋からは部屋の中に通路の基点を用意。
一つ前の段階で作った部屋にも通路の基点を設定して二つの起点を直線的に結ぶ。
これを最後の部屋まで繰り返す。
したがって、一つ目の部屋と最後の部屋には通常一本しか通路がつかない。
また、通路の交差および関係ない部屋と通路の接触は判定しないので、十字路や通路と混じっていびつな形になった部屋も生成される可能性がある。
けっこういびつなんだけど、これはこれでいいかなーとか思う。
0095SDL厨 ◆SDL/2aFg42
2007/10/22(月) 22:48:43ID:xmLMehyOJavaApplet製
・テクスチャ貼ってみました。重い。't'を押したらテクスチャ解除。
・画面下の数値は飾りです。
0096名前は開発中のものです。
2007/10/23(火) 17:34:42ID:kEBy9ORT>>95
重いよ。
テクスチャ解除すると普通に動くのに・・・・・
0097名前は開発中のものです。
2007/10/23(火) 18:22:05ID:kEBy9ORT0098名前は開発中のものです。
2007/10/23(火) 22:00:43ID:HvHbfAAD0099SDL厨 ◆SDL/2aFg42
2007/10/24(水) 01:07:23ID:8LaMeF2Rすまんこってす。
もっと軽くする工夫が必要ですね。
>>98氏
了解。
http://www.chukkysoft.com/m-bara/My3D/main.html
暗い・暗くないの二値ですが出来ました。
さらに重くなったのでとりあえずテクスチャ解像度落としました。
0100名前は開発中のものです。
2007/10/24(水) 01:43:43ID:ZJmVIrZFテクスチャのふちで段差ができるせいじゃないかな
0101SDL厨 ◆SDL/2aFg42
2007/10/24(水) 23:11:16ID:8LaMeF2R通路が分かりやすいように壁と床のテクスチャをてきとーに代えてみた。
テクスチャの横線がガクガクしてる事に気付いた。
もっと軽くする工夫を思いついたけどあんまり時間が無い。
まとまった時間欲しい・・・
0102名前は開発中のものです。
2007/11/14(水) 15:43:19ID:2PAcQd+EWizでK(Kick)で進んでたの思い出した。
敵と宝箱、そしてレベルアップがあればブラウザのタブを切り替えて、ちょこちょこっと遊んでしまいそうだ。
ただそれはすれ違いになってしまうけど。ともかく頑張ってください。
0103名前は開発中のものです。
2007/12/19(水) 00:19:15ID:UPCgpToM保守ついでに投下
アルゴリズムは掘削式にちょっと手を加えた感じ
0104名前は開発中のものです。
2007/12/19(水) 06:32:25ID:ejSDpWvFこれは地上マップ生成かな?
実行ファイルもあげてほしい
0105名前は開発中のものです。
2007/12/19(水) 08:23:53ID:UPCgpToMダンジョン自動生成
まだ未完成なので、出来上がったら再度来ます
0106名前は開発中のものです。
2007/12/19(水) 08:30:48ID:qunHTsYl0107名前は開発中のものです。
2007/12/19(水) 23:30:02ID:2Mp0D9Cnttp://www.inside-games.jp/news/258/25833.html
0108名前は開発中のものです。
2007/12/21(金) 23:44:22ID:dB2xCSTpシナリオを自動生成ってどうやるんだろうね?
誰が何をどうしたのランダムぐらいしか思いつかない。
ダンスで、アフロを、でかくしろ!とか。
■ このスレッドは過去ログ倉庫に格納されています