【ダンジョン】 自動生成 2 【地形】
■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。
2007/06/19(火) 12:21:35ID:oqLsw/raローグタイプやシレンタイプのダンジョンや、街並みや地形など。
※過去スレ
ダンジョン自動生成
http://pc11.2ch.net/test/read.cgi/gamedev/1027084016/
関連サイトは>>2>>3
0109名前は開発中のものです。
2007/12/22(土) 01:39:31ID:mYtBb4dP物語の流れにはいくつか基本的な組み合わせがあるので、
その流れの組み合わせをランダムに繋げる方法があるよ。
その組み合わせ方について書かれている本としては、
ウラジミール・プロップの『昔話の形態学』が有名だね。
詳しくは↓のサイトでも読んでくれ。
ttp://www.trpg.net/user/el./fct/labo/u_p.htm
ttp://gumina.sakura.ne.jp/CREATION/OLD/STORY/OLDTALE.htm
ttp://gumina.sakura.ne.jp/CREATION/OLD/STORY/OLDTALE2.htm
0110名前は開発中のものです。
2007/12/22(土) 14:12:51ID:TbioTVeu前スレでもシナリオの話題は出てたね
でも、あれはドラクエタイプのシナリオだったけど
(金の鍵を設置→金の扉の向こうに次の世界への入り口を設置、とか)
TRPGには前からノウハウがあって、俺もサイコロを振ってシナリオ作ったりしてたよ
こことか詳しい
http://www.trpg-labo.com/modules/article/index.php?articleid=38
>>109の方法論と組み合わせれば、結構実用的なものができるかも?
0111名前は開発中のものです。
2007/12/23(日) 22:53:27ID:7Ch2cFyT0112名前は開発中のものです。
2007/12/23(日) 23:00:04ID:PQd2o1nK七度文庫を思い出した。
0113名前は開発中のものです。
2007/12/23(日) 23:45:07ID:sYYhIO4qそのTCGが「物語を作って得点を競う」っていうものだったそうなんで、ちょっと関係あるかもしれませんね。
0114名前は開発中のものです。
2007/12/24(月) 00:13:58ID:iCCURTXIつーか、PC98の頃の話なんてしてもだれもわからんか・・・・。orz.
0115名前は開発中のものです。
2007/12/24(月) 17:22:07ID:cKY7rpLD物語主体のシナリオ生成ではなかったような・・・?
0116名前は開発中のものです。
2007/12/24(月) 18:25:05ID:s6ioOBVTこれを読む限りでは>109なのかな。
0117名前は開発中のものです。
2007/12/25(火) 05:04:41ID:f266Y5WJElona
http://homepage3.nifty.com/rfish/elona_top.html
シナリオといっても、基本、おつかいだけど
0118名前は開発中のものです。
2007/12/25(火) 11:10:25ID:45JhSWjC○○は××だと思っていたが、実は真相は△△だった!
みたいなどんでん返しが欲しいところだけど
まさかそこまで実装できてるものはないよなぁ。
0119名前は開発中のものです。
2007/12/25(火) 11:14:12ID:6WgQSOPlどちらにしろテンプレートを考えれば実装は難しくもない
需要が無いだけ
0120名前は開発中のものです。
2007/12/26(水) 12:47:24ID:LPlmC5KA水声社から出ている
「可能世界・人工知能・物語理論」
マリー=ロール・ライアン 著
岩松正洋 約
ISBN4-89176-550
…を先日入手したが、まだ読む時間がとれない。・゚・(ノД`)・゚・。
0121名前は開発中のものです。
2007/12/27(木) 11:28:11ID:Ytg+YzMm0122名前は開発中のものです。
2007/12/30(日) 00:55:54ID:R2ZefpMo0123名前は開発中のものです。
2007/12/30(日) 05:57:27ID:gh2DPire昔出てた、天国から来た男というゲーム?が、
シナリオ自動生成だった気がする
しかし、当時、クソ高くて手が出なかった orz
天国から来た男
http://www.electricsheep.co.jp/amfh.shtml
0124名前は開発中のものです。
2007/12/30(日) 15:52:49ID:GdVUAPHc0125名前は開発中のものです。
2007/12/30(日) 17:12:09ID:GelyN0Wd0126名前は開発中のものです。
2008/01/01(火) 00:12:45ID:fTSX/zU4俺のところの教授の分野じゃないか……
0127名前は開発中のものです。
2008/01/02(水) 16:12:12ID:SvgGyawT0128名前は開発中のものです。
2008/01/03(木) 19:42:38ID:m4afjvCW0129名前は開発中のものです。
2008/01/03(木) 20:02:55ID:DnILrl9Jコンピュータ系なんだぜ?
AI系
0130名前は開発中のものです。
2008/01/04(金) 01:35:35ID:0eO4bikWたぶん文系教授はものごっつ嫌がりそうだ。
0131名前は開発中のものです。
2008/01/04(金) 01:58:27ID:osyt6r0V物語要素事典
ttp://www.agu.ac.jp/~kamiyama/index.html
0132名前は開発中のものです。
2008/01/10(木) 04:35:59ID:PkUQ+U0ahttp://pdos.csail.mit.edu/scigen/
論文自動生成機らしい
英語なので、評価できんけど
0133名前は開発中のものです。
2008/01/12(土) 23:58:19ID:Sk9TeTsY0134名前は開発中のものです。
2008/01/13(日) 03:30:41ID:X4JKR+6eおまはや
0135名前は開発中のものです。
2008/01/13(日) 05:42:26ID:t2Ib2ko/前スレもダンジョン以外をやって今回スレタイ変わったんだし
0136名前は開発中のものです。
2008/01/13(日) 09:32:42ID:WGuhQnKH0137名前は開発中のものです。
2008/01/13(日) 13:43:50ID:6dlu7jBB0138名前は開発中のものです。
2008/01/13(日) 15:27:39ID:qr0K3hAQ0139名前は開発中のものです。
2008/01/13(日) 23:38:43ID:V1w7zyd40140103
2008/01/14(月) 00:40:52ID:OMKohYtzttp://gamdev.org/up/img/10938.zip
ttp://gamdev.org/up/img/10939.png
■動作環境
・.NetFrameWork 2.0 が動くこと
■操作方法
ReadMe読んでください
自然窟っぽいダンジョン生成を目標に作りました。
0141名前は開発中のものです。
2008/01/14(月) 01:46:09ID:2cfS3gf50142名前は開発中のものです。
2008/01/14(月) 08:58:47ID:KMhCtH8Lいいね!
部屋だけの生成だったのか
繋がってない部屋にはうねうねした通路を
渡してやると完璧かも
0143名前は開発中のものです。
2008/01/14(月) 11:09:37ID:X3lp6un1小さい四角を重なり合うように配置している?
大きくすると時間かかるのはコリジョンチェックのため?
どういうアルゴリズムでやっているのか興味がある。
0144名前は開発中のものです。
2008/01/14(月) 16:34:50ID:OMKohYtzあー恥ずかしい、ずっと たんけい って読んでた そりゃ変換できないわな
■アルゴリズム
1)フィールド(200x200のマップの描画先)からランダムで一点選び、基点とする
2)左右、上下をそれぞれランダムでどちらかに絞り、矩形サイズ定数内の値をランダムに取得して矩形のX,Yを得る
3)基点から 2) で求めた値を使って矩形を生成。このとき、矩形がフィールドからはみ出すことがあれば、 2) からやり直す
4) 3) で生成した矩形内からランダムで一点選び、基点とする。矩形数が設定値に達していなかったら 2) へもどる
Mキーを1回押すと、これが実行される。
矩形が大きいと時間がかかるのは、 3) で処理戻りが発生しやすいからだと思うけど、とてもトレースできないので定かではない。
矩形サイズ下限を100とかにすると、基点によっては無限ループが発生する
0145名前は開発中のものです。
2008/01/14(月) 16:52:08ID:OMKohYtzttp://gamdev.org/up/img/10940.zip
0146名前は開発中のものです。
2008/01/14(月) 20:39:34ID:dLp72EAgそうすれば戻りはなくせる
もちろん結果は変わってしまうけど
0147名前は開発中のものです。
2008/01/19(土) 22:54:02ID:lZOHlVzAGJ
Shash&Hack系のダンジョンに合いそう
つながらねーと思って繰り返すと、それっぽくなるんだよなー。
面白い
0148名前は開発中のものです。
2008/01/28(月) 00:09:54ID:icdx03N7ttp://gamdev.org/up/img/10989.zip
■動作環境
・.NetFrameWork 2.0 が動くこと
■操作方法
ReadMe読んでください
部屋の連結などを実装
処理時間が猛烈にかかるのは、私が言語仕様をしっかり理解していないから、な気がする
0149名前は開発中のものです。
2008/01/29(火) 16:53:20ID:ubNaezabプロファイラでメモリ使用状況見てみたけど(個=インスタンス数)
・全体 - 5.670.000個 - 約117M
・Dictionary<T,U>.Entry - 270,000個 - 41M(34.2%)
・DungeonAutoCreate.Data.arrow - 3,300,000個 - 38M(32.2%)
・Int32 - 1,600,000個 - 18M(15.5%)
・Int32[] - 270,000個 - 13M(10.5%)
・Dictionary<T,U> - 90,000個 - 4.5M(3.8%)
これで全体の96.2%を占めている。
・DungeonAutoCreate.Block - 90,000個 - 1.7M(1.5%)
・DungeonAutoCreate.Block[] - 10,000個 - 1.7M(1.4%)
ここまで入れると99.1%
330万インスタンスあるData.arrowってのも気にはなるけど、何で辞書がこんなに大量に使われてるの?
GCも何度か発生して殆どのインスタンスがGEN2になっている辺りも改善の余地がある(=無駄なGCが発生している)
処理速度に関しては明らかにボトルネックは別なので見ていない。
あと、ReadMeに書いてあるサイズ変更した場合に大量のメモリが消費される問題だけど
「古いフィールドを破棄→新しいフィールドを作成」の間で手動でGCを実行してやるのが効果的だと思う。
0150名前は開発中のものです。
2008/01/29(火) 20:19:35ID:ubNaezabDictionary<Data.arrow, Block> 互換の辞書クラスを作成
・IDictionary<Data.arrow, Block>を実装
> ArrowDict.cs
・Dictionaryとして使えるが、実態は配列として実装されている
internal class ArrowDict : IDictionary<Data.arrow, Block>
ttp://gamdev.org/up/img/10994.zip
↑実際のコード例(ちょっと手抜き)
> Block.cs
・ArrowDictを使うように修正
// public Dictionary<Data.arrow, Block> arw = new Dictionary<Data.arrow, Block>();
public ArrowDict arw = new ArrowDict();
これでメモリ使用量が激減(117M→10M)して、処理速度が大幅に改善する筈。
これ以上の最適化が必要なら、自分でパフォーマンス計測して頑張ってくださいな。
0151名前は開発中のものです。
2008/01/29(火) 23:14:51ID:T50arNCm最初は部屋一つとそこの主である親が一つ。親は通路を掘る子供を作る。
子供はある程度通路を掘ると、エネルギーが貯まって親になり
そこに新しく部屋を作り、動かなくなる。そして通路を掘る子供を作る。
別な部屋に突き当たった子は、その部屋の主に吸収されて消滅。
吸収した親は増えたエネルギーのぶん部屋を大きくする。
0152名前は開発中のものです。
2008/01/29(火) 23:49:44ID:Pi9FjTVd0153名前は開発中のものです。
2008/01/30(水) 14:31:24ID:JO1v1kVl>吸収した親は増えたエネルギーのぶん部屋を大きくする。
ってのはいいな
0154名前は開発中のものです。
2008/01/30(水) 20:06:27ID:haTlidy2占有メモリがかなーり減りました。サンクス。
Dictionaryのパフォーマンスがよろしくない、というよりenumの使い方がまずかったんだろうか。
>330万インスタンスあるData.arrowってのも気にはなるけど、何で辞書がこんなに大量に使われてるの?
もうお察しかもわかりませんが、Data.Arrowは方向を示すenumです。(ナナメ有り上下左右の8つ)
マップチップ(Block)のインスタンスに Dictionary<Data.Arrow,Block> を持たせて、マップチップの隣接を表現しよう、という考えです。
0155名前は開発中のものです。
2008/01/31(木) 01:02:39ID:cyh1Enm0お役に立てたようで嬉しいです。
# 解決の為にコードを覗き見したのはすまなかった。
enumの使い方は特に間違ってないと思いますよ。
今回のケースでは"大量の辞書を使用した"のが直接の問題ですかねぇ
・辞書自体がインデックスを管理したりするためにメモリを消費する
・後から追加するために余分な領域を確保する(コレクション全般)
(ただし、最初に大きさを指定してやれば必要以上に確保してしまう事はない)
この辺が影響してるのかな?とは思うけどあまり詳しくは分からない。
(実際に>>149で使用状況見た時に「こんなに使うのか?!」と衝撃を受けました)
最後に何かの時に役に立つかも知れないので、>>149で使ったツールを貼っておきま
CLR Profiler 2.0
ttp://www.microsoft.com/downloads/details.aspx?familyid=A362781C-3870-43BE-8926-862B40AA0CD0&displaylang=en
0156名前は開発中のものです。
2008/02/25(月) 11:00:41ID:ErmfSiFs0157名前は開発中のものです。
2008/03/18(火) 12:55:32ID:h6Yy+dcr0158名前は開発中のものです。
2008/03/18(火) 22:15:21ID:Ncc283w3どれもこれも似たり寄ったりすぎるので、恋愛ストーリーを
自動で作成できないかと考えてた時期があったな。
しかも物理的なシミュレーションを使用www
線で結んだ距離で縁を、好き嫌いを引力斥力に設定。
さすがに他のパラメーターが多すぎて諦めたが。
0159名前は開発中のものです。
2008/03/18(火) 22:29:25ID:7C0sKKNU韓流ドラマもいけそうだなw
0160名前は開発中のものです。
2008/03/19(水) 09:41:49ID:RshlZjYv18禁ノベルの濡れ場シーン自動生成のほうがまだ簡単そうだな。
0161名前は開発中のものです。
2008/03/19(水) 11:48:06ID:4ojlhiyFっ七度文庫
0162名前は開発中のものです。
2008/03/19(水) 13:22:30ID:iyq7/Nu/どっかで必ず打ち砕かれるのには笑った。
0163名前は開発中のものです。
2008/03/20(木) 05:27:11ID:3mOwhcLnなんとかの賞を取ったシナリオと、シナリオと独立して動作するリーダーがダウンロードできた気がする。
そのシナリオだと18禁シーンもそれなりに描写があったような。
0164名前は開発中のものです。
2008/03/25(火) 23:18:56ID:Jw4j25nhttp://www.amazon.co.jp/dp/4797346280/
内容分からんがとりあえず買ってみるわ。
0165名前は開発中のものです。
2008/03/26(水) 00:53:46ID:4A1mGavU0166名前は開発中のものです。
2008/03/26(水) 01:17:57ID:nCV15gelこれがほんとの男女ンげーむ
0167名前は開発中のものです。
2008/03/26(水) 19:38:30ID:GuggIAK/|┃三 ,イ,,i、リ,,リ,,ノノ,,;;;;;;;;ヽ
|┃ .i;}' "ミ;;;;:}
|┃ |} ,,..、_、 , _,,,..、 |;;;:|
|┃ ≡ |} ,_tュ,〈 ヒ''tュ_ i;;;;|
|┃ | ー' | ` - ト'{
|┃ .「| イ_i _ >、 }〉} _________
|┃三 `{| _;;iill|||;|||llii;;,>、 .!-' /
|┃ | ='" | < 同志>>166。シベリアが君を待っている
|┃ i゙ 、_ ゙,,, ,, ' { \ 一日中 木でも数えていたまえ
|┃ 丿\  ̄ ̄ _,,-"ヽ \
|┃ ≡'"~ヽ \、_;;,..-" _ ,i`ー-  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
|┃ ヽ、oヽ/ \ /o/ | ガラッ
http://etc7.2ch.net/siberia/
0168名前は開発中のものです。
2008/04/07(月) 23:02:44ID:aFuiPKn1生成に関してはここ見てる人には目新しいことはないかもしれない。
0169名前は開発中のものです。
2008/04/08(火) 01:14:25ID:IH5KFq6M0170名前は開発中のものです。
2008/04/08(火) 08:13:27ID:WqF7UXjlローグライクのゲームを作ってみたいって人に薦めるのは適当?
0171名前は開発中のものです。
2008/04/10(木) 00:43:50ID:lumidyYwいいんじゃね?
ダンジョン、敵、移動方法、アイテムなんかに触れてたし、
ダンジョンゲームをこれから作りたいって人には導入としていいと思う。
こういう本ではあたりまえだけど、最低限のプログラムの知識があるのは前提ね。
0172名前は開発中のものです。
2008/04/10(木) 19:07:14ID:QtItRuRvそのうち立ち読みしてみるが…
0173名前は開発中のものです。
2008/04/10(木) 21:51:57ID:lumidyYw・全ての区画に壁がある状態を始めに作って、
そこから各区画から壁を一枚取り除く
・一つの大きい部屋を半分に区切る。 一方の部屋をさらに半分に区切る。 何回か繰り返す。
区切った時の境界に向かって道を作る
余談だけど、流石にランダム生成ってだけあってMT法の紹介はあった。
0174名前は開発中のものです。
2008/04/11(金) 01:01:15ID:sQH8+WJ6洞窟風ダンジョンの作り方とかそういうのとか無かったの。
0175名前は開発中のものです。
2008/04/11(金) 23:14:28ID:1ybktL4tない。 その後は他の話になる。
0176名前は開発中のものです。
2008/04/12(土) 01:32:55ID:Zbgrn6lI0177名前は開発中のものです。
2008/04/12(土) 01:41:00ID:8nY+ZFqqそれはどうよ。
0178名前は開発中のものです。
2008/04/12(土) 01:49:04ID:Zbgrn6lI2Dのスプライトをずらして云々とか?
0179名前は開発中のものです。
2008/04/12(土) 17:37:58ID:FLaYueYh0180名前は開発中のものです。
2008/04/13(日) 00:10:40ID:VNOh5k7z床穴
だったらすり抜けOKだけど
壁床
床壁
だったらすり抜けは不可。
壁床
床穴
だったら・・・・どうしよう?
0181名前は開発中のものです。
2008/04/13(日) 01:04:48ID:iWmiDLX3それも、不可だね。
0182名前は開発中のものです。
2008/04/13(日) 01:45:36ID:2scEuJqa0183177
2008/04/13(日) 03:34:13ID:D/ezqLyq未読だからひょっとすると本当に@の移動かもしれないけど。
0184名前は開発中のものです。
2008/04/13(日) 04:03:09ID:2scEuJqa馬鹿のように@に寄っていくのではなく
ときどきは乱数的に動くとよいとかそういう話か
0185名前は開発中のものです。
2008/04/13(日) 17:59:53ID:+mxfzAK9自キャラも敵キャラも扱ってるよ。
トラッキングアルゴリズムを利用して自キャラに近づいたり、体力が減ったら逆に自キャラから離れたり。
ページ数的に何種類も掲載できないのかもしれないし、作者が単に知らないのかもしれない。
0186名前は開発中のものです。
2008/04/14(月) 10:11:01ID:U/+nV06X0187名前は開発中のものです。
2008/04/14(月) 21:17:24ID:Oh7heXaP確かに@って普通意味分からないよね
0188名前は開発中のものです。
2008/04/15(火) 00:47:48ID:qTt4TZlP0189名前は開発中のものです。
2008/04/15(火) 17:51:14ID:Gsie4GoD犯人はヤス
0190名前は開発中のものです。
2008/04/22(火) 00:52:52ID:JaVu6xi2出だしからRogueのヘビは's'とか書いてあるし、まぁ気持ちは分かる。
0191名前は開発中のものです。
2008/05/23(金) 21:25:30ID:m3SMzaPsタイトル絵の下のSMALL・MEDIUM・LARGEで別画面JAVAによる自動生成。
ほっておくと、どんどん細かくなる。
http://www.complexification.net/gallery/machines/substrate/index.php
再帰で描画するJAVAソフトのうちの一つの模様らしい。
http://www.complexification.net/gallery/
0192名前は開発中のものです。
2008/05/24(土) 00:05:58ID:bUApjuE70193名前は開発中のものです。
2008/05/24(土) 04:41:52ID:LhwHWrjW0194名前は開発中のものです。
2008/05/25(日) 01:57:31ID:RMqyGIJmでもここまでリアルだと逆に
この無秩序で均等なスプロールぶりが薄気味悪くなってくる
ロボットがあまりにリアルだと逆に薄気味悪くなるのと同じか
0195名前は開発中のものです。
2008/05/25(日) 10:47:05ID:zLdTr8ko0196名前は開発中のものです。
2008/05/27(火) 07:19:57ID:193EKqKt手軽さが素敵よね
このコード自体は、大きさに意味付けしにくそうだよな
ある段階で建物の単位固定して埋め尽くすロジックに切り替えないとゲーム転用は無理かなー
0197名前は開発中のものです。
2008/05/28(水) 01:13:49ID:v7lt4WzW改造して自動生成にしてみた
ttp://www11.axfc.net/uploader/20/so/He_104434.html
pass: @
0198名前は開発中のものです。
2008/05/28(水) 20:46:17ID:XTYEcsnc0199名前は開発中のものです。
2008/05/28(水) 23:40:21ID:v7lt4WzW楽しいかもなって思ってる
0200名前は開発中のものです。
2008/05/30(金) 12:43:40ID:3NyhZgg40201名前は開発中のものです。
2008/05/30(金) 13:15:09ID:2xfSftaX町の中って感じだね。
PC版のAD&D思い出した。なつかすぃ。
0202名前は開発中のものです。
2008/06/05(木) 00:19:36ID:Td2FN367Javaより遅いなんて。
ところで、これで生成された画像を見てて、
ブロックごとに適当な高さを設定して3Dで俯瞰できたら町並みっぽくて面白いんじゃないかと思った。
0203名前は開発中のものです。
2008/06/05(木) 00:26:24ID:tizdosBH色をつけてるところを高さにおきかえて
その高さの分だけ上にずれた場所へプロットするみたいな。
陰線処理ができればできるような
0204名前は開発中のものです。
2008/06/05(木) 07:32:30ID:vIW8vPrg0205名前は開発中のものです。
2008/06/05(木) 17:30:04ID:XY25gCyE体感速度に差が出るほど遅いってのは考え難い。
どこが遅いのかプロファイルしてみた?
0206202
2008/06/06(金) 01:35:31ID:wpqXPDRQ効率とか全然考えてなかったけど、遅いのは多分ピクセル描画かなぁ。α合成毎回計算してるし。
ヒマだったらManaged DirectXででもやってみよう。
0207名前は開発中のものです。
2008/06/13(金) 11:29:39ID:fRpYBYI7ttp://www.tell-me.sakura.ne.jp/dungeon.zip
0208名前は開発中のものです。
2008/06/13(金) 11:33:26ID:fRpYBYI7■ このスレッドは過去ログ倉庫に格納されています