ローグライクゲーム制作日記-1- ダンジョンの自動生成

jay
記事: 314
登録日時: 14年前
住所: 大阪市
連絡を取る:

ローグライクゲーム制作日記-1- ダンジョンの自動生成

投稿記事 by jay » 12年前

ローグライクゲームの特徴と言えば、自動生成される毎回ランダムなダンジョン
当然僕もこれを作っている訳ですが、これが想像を凌駕する難しさでした

大まかな流れとしては

①、部屋を配置する

②、部屋と部屋を通路で繋ぐ

③、プレイヤー・敵・アイテム等を配置する


という流れを流れで開発するつもりでした
①の部屋の配置は簡単に作ることができました(もう少し部屋のサイズが大きくてもいいかもですが)
画像左上の青いのが全体を縮小したミニマップです
画像


問題は②の部屋と部屋を繋ぐ処理

当然ですが全ての部屋を繋がなければならないのです
例えば1の部屋と2の部屋を繋いで、次に2の部屋と3の部屋を…
という風にすると、どう考えても一本道で退屈なダンジョンになってしまう

なのでまずは隣接する部屋同士をつないで、それらをグループで考えて、と思ったのですが
これが全く上手くいかない
かと言ってあんまり無駄な処理を詰め込むと生成処理が入るごとにプレイヤーを無駄に待たせてしまうことになりかねないので、ごちゃごちゃした処理を書くのも問題なんですよね

部屋のサイズの問題もありますし、もう1回組み直しますかねぇ・・・

ちなみに今はこんな感じになってしまいます、ダンジョンの完成には程遠いですね
画像


この処理さえできればアルファ版のアップが見えてくるのですが…
前途遼遠ですね、まぁ地道に頑張って行くとしましょう


では、今回はこの辺りで~
最後に編集したユーザー jay on 2013年7月07日(日) 15:44 [ 編集 1 回目 ]

zxc
記事: 79
登録日時: 13年前

Re: ローグライクゲーム制作日記-1- ダンジョンの自動生成

投稿記事 by zxc » 12年前

  多分自動生成については検索すれば、いろんなアルゴリズムが出てくると思うので参考にしてはどうでしょう。
  作ろうと思ったことさえないので的外れでしょうが、不思議のダンジョンシリーズだと部屋の出入り口の数は大体0~5程度だと思います。そこで自分だったらまず出入り口の数を決めてから通路を生成しようとします。通路の生成は「すべての線を交差させずにすべての数字(もしくはマークなど)を繋ぐゲーム」の応用で作るでしょう。

(略して)将軍
記事: 4
登録日時: 12年前

Re: ローグライクゲーム制作日記-1- ダンジョンの自動生成

投稿記事 by (略して)将軍 » 12年前

ローグライクの部屋は作ったことあるので、自分の場合の適当なアルゴリズムをば

1.適当な四角形を縦横に数回ほど直線できる(これが通路になる)
2.切った四角形それぞれの中に部屋を作成
3.部屋から、1つにつき最低1個、切った線にぶつかるまで線を延ばす(これも通路になる)
4.部屋に繋がっていない切り跡を消す

鉛筆で紙に書いて見ると判りますが、これだけでフロアが出来上がってしまいます。
ざっと見た感じ、このプログラムからなら部屋を作る前に、フロアの元を切って見るといいかもしれません

jay
記事: 314
登録日時: 14年前
住所: 大阪市
連絡を取る:

Re: ローグライクゲーム制作日記-1- ダンジョンの自動生成

投稿記事 by jay » 12年前

>>zxcさん
愚かな僕は誰かの真似をするよりも
どうしても自分でやりたがっちゃうんですよね(苦笑)

>すべての線を交差させずにすべての数字(もしくはマークなど)を繋ぐゲームの応用
なるほど、全ての部屋を一度繋いだ後で分岐を作るわけですね
これはアリかもしれませんねぇ



>>(略して)将軍さん
はじめましてですね~

そのやり方、前にどこかで見聞きした覚えがあるんですよね
そして「なるほど、これならそんなに難しくは無いな」と思った僕ですが
上で書いたのとは違う、とある理由から自分なりのやり方を考えようとしたのです

でもそれで必要以上に時間をくっていたら元も子も無いんですよねぇ
プログラミングのスキルよりも、アルゴリズムを思いつくセンスが欲しい…w