[過去ログ]
ダンジョン自動生成 (1001レス)
ダンジョン自動生成 http://mevius.5ch.net/test/read.cgi/gamedev/1027084016/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
179: 名前は開発中のものです。 [sage] 04/06/14 09:47 ID:5+/Otxjs で、もまいら具体的なソースはできたのかい? http://mevius.5ch.net/test/read.cgi/gamedev/1027084016/179
180: 名前は開発中のものです。 [sage] 04/06/14 11:25 ID:HxZhdP5q 思っていたより厄介なソースだなぁ、コメント少ないし。 get_rand(x, y); xからyまでの範囲の乱数値を得る 例) get_rand(5, 2); 5から7までの間の乱数値 http://mevius.5ch.net/test/read.cgi/gamedev/1027084016/180
181: 名前は開発中のものです。 [sage] 04/06/14 11:26 ID:HxZhdP5q coin_toss(); 0か1の値をランダムに返す http://mevius.5ch.net/test/read.cgi/gamedev/1027084016/181
182: ◆Mn5mzn8hAQ [sage] 04/06/14 12:04 ID:0lapHs9H >>180 なるほど、ここで判明した関数かきだして リファレンスみたいにすれば みんなで読めるね と、get_randの説明がおかしいある・・ get_rand(5, 2)なら2〜5の乱数を返す get_rand(5, 7)なら5〜7の乱数を返す だわいね 乱数に関する関数はrandom.cに入っております。 >>178 最短経路探索、お、と思ったけどローグのソースはなんか違う気がしる >>179 他のしとは知らんけど俺はまだ読むばかりなり。アンタも読むなり。 http://mevius.5ch.net/test/read.cgi/gamedev/1027084016/182
183: 2時間しか寝てませんよ? ◆Mn5mzn8hAQ [sage] 04/06/14 12:19 ID:0lapHs9H 画面ORマップまわりの重要な定数(Rogue.h) #define ROW1 7 #define ROW2 15 #define DROWS 24/*縦の最大*/ #define COL1 26 #define COL2 52 #define DCOLS 80/*横の最大*/ ※〜1、〜2は マップを3x3の領域にきりわける際に利用している http://mevius.5ch.net/test/read.cgi/gamedev/1027084016/183
184: 2時間しか寝てませんよ? ◆Mn5mzn8hAQ [sage] 04/06/14 12:54 ID:0lapHs9H ●rm = room・・・部屋を表現する構造体。 Y2、X2、Y1、X1、door[4], is_room で構成される is_roomはR_NOTHIN、R_ROOM、R_MAZE、R_CROSSなどの定数が入り、 部屋の種類をあらわす。 ●door = dr・・・ドアに関する情報をつめこむ構造体 ペアになる部屋番号、ペアのドアのY、ペアのドアのX、X、Yで構成される 一つの部屋は最大4つのドアをもっていて しかもペアになる部屋のドアの座標ももっており かつ部屋ではなく通路になったりもする、と。 http://mevius.5ch.net/test/read.cgi/gamedev/1027084016/184
185: 名前は開発中のものです。 [sage] 04/06/14 13:08 ID:HxZhdP5q >>183 まだ読みかけだから間違っているかもしれないけど補足すると・・・ 部屋の最大数は9で、80x24の空間をを9個に分割して 部屋を配置しているっぽい。 例外はBIG_ROOM。空間内に一部屋だけという状態。部屋のサイズは画面内でランダム。 これはゲーム中、いずれかの階に一度だけ かつ 1/100の確率で出現する。 http://mevius.5ch.net/test/read.cgi/gamedev/1027084016/185
186: 名前は開発中のものです。 [sage] 04/06/14 13:09 ID:HxZhdP5q >>185 あ、0lapHs9H氏の書き込みみると、9個じゃなくて8個なのかな。 http://mevius.5ch.net/test/read.cgi/gamedev/1027084016/186
187: 2時間しか寝てませんよ? ◆Mn5mzn8hAQ [sage] 04/06/14 13:17 ID:0lapHs9H >>185 あ、ほんとだ部屋の数9だね for WonderWitchのソースはなぜか8ですた #define MAXROOMS 9(rogue.h) 100分の1の確率なのか、なーる http://mevius.5ch.net/test/read.cgi/gamedev/1027084016/187
188: 2時間しか寝てませんよ? ◆Mn5mzn8hAQ [sage] 04/06/14 13:24 ID:0lapHs9H ぶっちゃけてしまうが 風来のシレン月影村の怪物インターネット版の体験版 を画面キャプチャしながら4階層遊んでみたが 今わかっている時点だけであきらかにRogueと 生成方法が違いますケドw http://mevius.5ch.net/test/read.cgi/gamedev/1027084016/188
189: 名前は開発中のものです。 [sage] 04/06/14 14:21 ID:CyVM64I2 rogueのソース読むのもいいけど自分で書いちゃった方が早いし面白いんじゃないかなあ http://mevius.5ch.net/test/read.cgi/gamedev/1027084016/189
190: 名前は開発中のものです。 [sage] 04/06/14 16:11 ID:5+/Otxjs そうして、他人のソースを読まずに突き進んできた奴があwqせdrftgyふじこlp; http://mevius.5ch.net/test/read.cgi/gamedev/1027084016/190
191: 名前は開発中のものです。 [sage] 04/06/14 17:06 ID:rnOPv/om せっかくだから斬新な自動生成段ジョンを開発しようぜ http://mevius.5ch.net/test/read.cgi/gamedev/1027084016/191
192: 名前は開発中のものです。 [sage] 04/06/14 19:04 ID:HxZhdP5q ダラダラと別のことしながらローグIIのソース読んでる。 部屋生成について補足。make_level()から呼び出される、make_room()は以下の通り。 画面を3x3に分割して、その分割された領域内に矩形を作ることで部屋にしている。 サイズはランダムで、領域内の左上からの位置もランダム。この時、他の領域には 踏み入らないように計算しているので、部屋の重なりをチェックする必要はない。 必ず9個の部屋があるわけでない。条件によって部屋のあるなしが決められる。 条件は単なるランダムではなく、ある程度の法則性がある。 これはゲームバランス的なものだと思うので詳しい説明は省略。 1/2の確率で縦に3部屋並ぶ構成になる・1/2の確率で3種類の部屋の並びになる、 一つのフロアには、少なくとも3つの部屋が生成される、とか。 部屋のあるなしを決定したら、フロアマップに部屋の構成を記録すると同時に、 部屋の位置やサイズを別に記憶しておく。 http://mevius.5ch.net/test/read.cgi/gamedev/1027084016/192
193: 名前は開発中のものです。 [sage] 04/06/14 19:18 ID:HxZhdP5q おっと、一部読み間違えた。 >部屋の位置やサイズを別に記憶しておく。 サイズではなく、左上の座標と右下の座標っぽい。 あと、条件チェックで部屋がないと判断されても、先に計算した部屋の位置・・・ つまり、小領域内での左上と右下の座標値を保存している。どうやら通路?を 生成する時に利用しているっぽい。 http://mevius.5ch.net/test/read.cgi/gamedev/1027084016/193
194: ぐぅ ◆Mn5mzn8hAQ [sage] 04/06/14 19:40 ID:0lapHs9H だいたいわかったんだが、 わからないのが ペアの部屋を選定するコード。 add_maze/make_maze。 add_mazeは>>193の「部屋ではなく通路にする」場合の処理で 座標を保存して範囲を限定することで どこまでも無駄に通路を延ばしてしまうことを避け るためと読んだ。 月曜日は面白いテレビ番組がなくて退屈である。 http://mevius.5ch.net/test/read.cgi/gamedev/1027084016/194
195: 名前は開発中のものです。 [sage] 04/06/14 19:42 ID:HxZhdP5q 部屋を作ったら、次は迷路の作成らしい。通路ではない。 9個の小領域内に、ある条件を満たしたら、迷路を作る。 基点は先の部屋を作成した時に保存した左上の位置から、掘り進む。 1回(1文字)掘るごとに1/3の確率で進行方向を変える。 掘り進む方向+1と、その左右方向(画面の左右ではなく進行方向に対して)、 それから、掘り進む方向+2を調べて、すでに掘った通路があったら迷路作成終了。 掘る範囲は先にランダムに決定した部屋サイズ内なので、小領域を出ることはない。 迷路が生成される条件はゲームバランス的なので詳しい説明は略。 最初の階では絶対に迷路がない。16階以降は階を増やすごとに迷路が作られる確率が高まる。 迷路は1つの階につき1つっぽい。 http://mevius.5ch.net/test/read.cgi/gamedev/1027084016/195
196: 名前は開発中のものです。 [sage] 04/06/14 19:45 ID:HxZhdP5q >>195は、make_maze()の処理内容です。 http://mevius.5ch.net/test/read.cgi/gamedev/1027084016/196
197: 名前は開発中のものです。 [sage] 04/06/14 19:49 ID:HxZhdP5q >>195 また読み違えた。 > 掘る範囲は先にランダムに決定した部屋サイズ内なので、小領域を出ることはない。 掘る範囲は少領域内。 基点が、部屋サイズ内。 http://mevius.5ch.net/test/read.cgi/gamedev/1027084016/197
198: ぐぅ ◆Mn5mzn8hAQ [sage] 04/06/14 19:52 ID:0lapHs9H ははぁなるほど。 するってぇと通路への変更は別のコードか。 http://mevius.5ch.net/test/read.cgi/gamedev/1027084016/198
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 803 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.012s