投稿記事

Purple 2024/04/07 23:00

ウディタでローグライク制作.1 ランダム生成ダンジョンについて

こんにちは、Purpleです。
今回から本格的にローグライクゲームの話に入りたいと思います。

さて、本題に入る前にこの記事を読んでくださっている皆様に少々(?)残念なお知らせがあります。

今回の記事ではまだ実践には入りません。
何故かと言いますと、まだ説明しなくてはならないことが残っているからです。

ローグライクゲームといえばランダム生成ダンジョン、あれがどういう理屈で作られているか、今回の記事ではそれについて触れていきたいと思います。

退屈な時間が続くかと思われますが、あと少しだけ辛抱して頂けますと幸いです。

1. ダンジョン自動生成の仕組み

筆者の調べた限りでは、いわゆる「ランダム生成ダンジョン」と呼べるものは概ね以下の3つの手順によってつくられているようです。

1.空間分割:マップにランダムに仕切りを置く

2.部屋生成:仕切りの中にこれまたランダムに部屋を生成する

3.通路生成・連結:部屋同士を通路で結ぶ

これだけだと説明が大雑把過ぎて分かりにくいので、それぞれもう少し詳しく見ていきたいと思います。

2. 空間分割

マップ全体を一度まっさらな(何もない)状態にして、それをいくつかの空間に分けていく処理です。

イメージとしては概ねこんな感じかと。


まっさらなマップがあります。※記事では見やすいように色を付けています。


適当な位置に仕切りをおきます。


これを何度か繰り返します。


最終的にこんな感じになりました。

分割してできた空間の情報(角の座標や仕切り線同士の間隔など)はデータベースや変数に格納しておきます。

※今回の記事では横→縦の順に分割していますが、分割の順番に決まりはないようですので、お好みで大丈夫かと。

3. 部屋生成

各仕切りの中に、これまたランダムな大きさの床を置いていきます。

まず、データベースなどから分割した空間の情報を取得します。


今回の場合は始点(左上)と終点(右下)のX/Y座標になります。

この中に、


このように適当なサイズの床を置いていきます。


繰り返すと、こんな感じに床が置けました。

4.通路連結

最後に、部屋同士を繋ぐ通路を作ります。

まずは通路の入口の座標を決め、
(下図の黄色の点)


そこから仕切りの外に向けて足(通路)を伸ばします。

部屋を含む空間の端っこに到達したら、


足を空間の外に1マス分だけ延長します。

(水色で囲んだ、仕切り線に被っている部分)

最後に足と足を直線で繋ぎます。

これを繰り返して、


通路の完成です。

仕上げに仕切り線を消します。


マップができました。

5.終わりに

ここまでお付き合いいただき、ありがとうございました。
次回からはいよいよ実践パートに入っていきたいと思います。
それでは、またお会いしましょう。

Purple 2024/04/02 09:27

ウディタでローグライク制作.0 制作の前に

記事の閲覧ありがとうございます、Purpleです。
今回から早速ローグライク制作に挑戦…といきたい所ではあるのですが、
実際にゲームを作る前に知っておきたい知識がいくつかあります。

※この記事で紹介するのはあくまで「ウディタでRPGを作るために"最低限"必要な知識」程度のものだと思ってください。実際にゲームを完成させたことのある方は既にご存じのものであると思われますので、この記事を飛ばして次に進んでも大丈夫だと思います。

1. イベント

ゲームにおける「イベント」とは、『ゲーム中に起きるすべての出来事』の事です。
つまり「話しかけると喋る町の住人」、「マップ間の移動」、「調べるとアイテムが入手できる壺」などは皆この「イベント」に該当します。

ウディタにおけるイベントは大別して「マップイベント」「コモンイベント」のどちらかに分類されます。

マップイベント

「マップイベント」はその名の通り「マップ上で設定するイベント」の事です。


例:話しかけると返事をしてくれるNPC

マップイベントの特徴は「作成したマップの中でのみ有効であること」です。
「マップA」のイベントを「マップB」で呼び出したりすることはできません。

コモンイベント

「コモンイベント」は「ゲーム全体のどこでも有効なイベント」です。
つまり「どのマップにいても」呼び出すことができます。
※コモンイベントの「コモン」には「一般、共通」といった意味があります。


例:キャンセルキーを押すとメニュー画面を開くことができる

ウディタではデフォルトのメニュー画面や戦闘システムもこのコモンイベントを利用して作られているため、対応するイベントを消してしまうとメニュー画面が開けなくなったりもしてしまいます。

ローグライクゲームのターン制やダンジョンの自動生成もコモンイベントで作ります。

2. 変数について

ゲーム制作ツールにおける変数は端的に言えば「数値などを記憶しておくもの」です。

「一度開けると空っぽになる宝箱」「特定のアイテムを一定数以上所持していると進行するイベント」などを作る際には必須と言えるでしょう。

ウディタで使える変数にはいくつかの種類があります。…が、変数の種類を羅列されても覚えられないし筆者自身もややこしいと思うので、今後講座の中で登場した際に適宜解説していきたいと思います。

3. データベース

ウディタには、「ユーザーDB」「可変DB」「システムDB」の3種類のデータベース(DB)があります。

ダンジョン生成の際などにもデータベースに情報を格納すると効率的です。

ユーザーデータベース

ユーザーDBは、アイテムやスキルの情報のような、基本的にプレイ中に変化しない情報を管理するためのデータベースです。ゲーム中に参照することはできますが、値の変更(書き換え)はできません。

可変データベース

可変DBは、各値をゲーム中に変更することのできるデータベースです。
主人公やパーティーメンバーのステータス(能力値)、装備品や所持金といった「ゲームプレイ中に変化する情報」を保存するときに使います。

もちろん、登録したデータを参照することもできます。

システムデータベース

システムDBには、マップやBGMの設定などの「ウディタを動かすために必要なデータ」がウディタ側であらかじめ設定されています。

ゲームシステムが動作しなくなる可能性があるため、「タイプ」の変更や削除は推奨されません。

終わりに

拙い内容ですがここまでお付き合いいただき、ありがとうございました。
次回からは本格的にローグライクの話に移りたいと思いますので、引き続きお付き合いいただけると幸いです。

それでは、また。

Purple 2024/04/01 15:39

はじめまして

はじめまして。Purpleと申します。
ここにはゲーム制作の講座・小ネタなどを投稿していく予定です。

講座…と言いましても私は大した知識・技術を持ち合わせている訳ではないので、あまり高度な内容のものは(少なくとも現時点では)取り扱うことができません。

何卒ご容赦ください。

当面の予定ですが、Wolf RPGエディター(ウディタ)によるローグライクゲームの作成についての記事を考案中です。

拙い内容になるかと思われますが、どうぞよろしくお願いします。

記事のタグから探す

月別アーカイブ

限定特典から探す

記事を検索