こちらはRPGツクールMZ用の記事です。
RPGツクールMV版の記事もあります。
RPGツクールMZでのランダムダンジョンType2として、サンシロ様作「SAN_MapGenerator」プラグインをMZへ移植いたしました。
プラグインは下記からダウンロードできます。
「SAN_MapGenerator」は機能豊富なプラグインのため、簡単な把握は難しいです。
まず、サンプルプロジェクトをダウンロードして、テストプレイやサンプルプロジェクトの中を見た方が理解が早いと思います。
こちらのサンプルプロジェクトはサンシロ様が公開されているサンプルプロジェクトにムノクラが少し手を加えたものになります。
目次
- 1 ヘルプを読み解く
- 2 ランダムマップへの入口を作る
- 3 注意点
- 4 再設置されたイベントID
- 5 セーブポイントの作成
- 6 ランダムマップ上でセーブを禁止するイベント追加
- 7 セーブポイントのマップを追加
- 8 Start、Goal、SavePointでスイッチとイベント設定
- 9 イベント設定の情報の整理
- 10 他の配置イベントの設定
- 11 ランダムマップへの入口を作る
- 12 注意点
- 13 再設置されたイベントID
- 14 セーブポイントの作成
- 15 ランダムマップ上でセーブを禁止するイベント追加
- 16 セーブポイントのマップを追加
- 17 Start、Goal、SavePointでスイッチとイベント設定
- 18 イベント設定の情報の整理
- 19 プラグインの設定を見る
- 20 他の配置イベントの設定
- 21 ランダムマップへの入口を作る
- 22 注意点
- 23 再設置されたイベントID
- 24 セーブポイントの作成
- 25 ランダムマップ上でセーブを禁止するイベント追加
- 26 セーブポイントのマップを追加
- 27 Start、Goal、SavePointでスイッチとイベント設定
- 28 イベント設定の情報の整理
- 29 プラグインの設定を見る
- 30 他の配置イベントの設定
- 31 ランダムマップへの入口を作る
- 32 注意点
- 33 再設置されたイベントID
- 34 セーブポイントの作成
- 35 ランダムマップ上でセーブを禁止するイベント追加
- 36 セーブポイントのマップを追加
- 37 Start、Goal、SavePointでスイッチとイベント設定
- 38 イベント設定の情報の整理
ヘルプを読み解く
サンプルプロジェクトをツクールで開いた画面とヘルプの引用とで情報を整理します。
■設定
ツクールMZのエディタ上でベースとなるマップの下記の座標に
タイルとイベントを配置して下さい。・タイル
空白:{x:0, y:0}
部屋:{x:0, y:1}
通路:{x:0, y:2}
天井:{x:0, y:3}
壁 :{x:0, y:4}
瓦礫:{x:0, y:5}・イベント
入口:{x:1, y:0}
出口:{x:1, y:1}
他 :上記以外の座標
用意するイベントで考えやすいものとして、宝箱やシンボル敵がありますが、それらを出現させるのに必要な設定です。
上記の部屋数が各イベントの出現率の参考になると思います。
全部の部屋に出すものは と記載します。
1マップ(フロア)で1つを 50% の確率で出すのであれば <RateMap: 0.5> と記載します。
同じイベントを複数コピーして、出現数を変えることもできます。
このプラグインのキモは、
・マップの大きさ
・部屋の大きさ
・イベントの数と内容
これらのバランスの良いところを探すところになると思います。
ランダムマップへの入口を作る
◆SEの演奏:Move1 (90, 100, 0) ◆画面のフェードアウト ◆コモンイベント:下り階段 ◆場所移動:マップ1-3 (0,0) (向き: 下, フェード: なし) ◆プラグインコマンド:MNKR_SAN_MapGenerator, マップ生成 :プラグインコマンド:mapType = RoomAndPass ◆文章:なし, なし, 暗くする, 中 :文章:地下\V[1]階 ◆画面のフェードイン
ランダムマップへの入口イベントには下記の順でイベントを記述して下さい。
- 画面のフェードアウト
- 場所移動:(ランダムマップの位置の座標は0,0)
- プラグインコマンド:MapGenerator RoomAndPass
※MapGenerator FillRoom を入れるとマップ全体に及ぶ一つの部屋を生成します。 - 画面のフェードイン
注意点
ランダムマップ中でセーブした場合、プラグイン設定等を変更した後にロードすると上記のようになります。
こちらのプラグインを使って公開した後に、バージョンアップをすると同じことが起こる可能性があると思います。
ですので、こちらのランダムダンジョンの中ではセーブを禁止しておく方が無難かと思います。
再設置されたイベントID
このプラグインはGoal(下り階段)を降りて、Start(上り階段)に主人公が出てくるところまでが一度に処理されます。
そして、事前に配置したイベントのIDはリセットされ、再配置する処理になっているようです。
スタート地点のイベントIDが1になり、ゴール地点のイベントIDが2になるようです。
全てのイベントを別途バックアップして削除し、再配置する最初にスタート地点、ゴール地点、という処理なのだと予想します。
セーブポイントの作成
上述でランダムマップの中でセーブした後に、設定を変更してしまうと、不都合が生じるケースがある事をお知らせしました。
しかし、長くランダムマップを続けて、途中でセーブしたいというケースを想定し、セーブポイントを追加することでトラブルが避ける方法を考えました。
- ランダムマップ上でセーブを禁止するイベント追加(これはコモンイベント中に入れても良いです)
- セーブポイントのマップを追加
- Start(上り階段)、Goal(下り階段)、SavePoint(ワープホール)のどれを使ったかでスイッチを設定。
- イベントが入れ替わる処理を行う。
大まかに上記の流れになります。
1つずつ分解してまとめます。
ランダムマップ上でセーブを禁止するイベント追加
◆セーブ禁止の変更:禁止 ◆イベントの一時消去
トリガー:自動実行
メモ:<RateMap:1>
このイベントを各ランダムマップに入れます。
セーブポイントのマップを追加
どんな形でも良いので、セーブができる部屋を別のマップとして作ります。
下記のようなイベントを作成して下さい。
◆セーブ禁止の変更:許可 ◆セーブ画面を開く ◆イベントの一時消去
トリガー:自動実行
Start、Goal、SavePointでスイッチとイベント設定
各マップのStart(上り階段)、Goal(下り階段)、Savepoint(ワープホール)のイベントを下記のように設定します。
コモンイベント
最後に入ったイベントでコモンイベントを実行し、スイッチで移動先のスタート地点とゴール地点を変更する処理をしています。
下記はイベントを使った場合に指定したスイッチです。
Goal(下り階段) = 1
Start(上り階段) = 2
ワープホール = 3
後はマップイベントの「出現条件」を上記のスイッチに合わせて設定し、互いのイベント内容をコピーしました。
サンプルプロジェクトの1-3階とセーブポイントのイベントを代表として下記に載せます。
Start(上り階段)
Goal(下り階段)
Savepoint(ワープホール)
最後にセーブポイントから出てくるワープホールのイベントを設定します。
◆画面のフェードアウト ◆SEの演奏:Move1 (90, 100, 0) ◆変数の操作:#0005 = 2 ◆条件分岐:階数 ≤ 3 ◆場所移動:マップ1-3 (0,0) (向き: 下, フェード: なし) ◆ラベルジャンプ:End ◆ :分岐終了 ◆条件分岐:階数 ≤ 6 ◆場所移動:マップ4-6 (0,0) (向き: 下, フェード: なし) ◆ラベルジャンプ:End ◆ :分岐終了 ◆条件分岐:階数 ≤ 9 ◆場所移動:マップ7-9 (0,0) (向き: 下, フェード: なし) ◆ラベルジャンプ:End ◆ :分岐終了 ◆ラベル:End ◆プラグインコマンド:MNKR_SAN_MapGenerator, マップ生成 :プラグインコマンド:mapType = RoomAndPass ◆文章:なし, なし, 暗くする, 中 :文章:地下\V[1]階 ◆画面のフェードイン
イベント設定の情報の整理
「SAN_MapGenerator」プラグインの動作は、大まかに下記のように動いています。
- 指定されたタイル・イベントを読み込む。
- マップをまっさらにする。
- ランダムマップを生成する。
- Start(上り階段)を設置する。
- 主人公をStart(上り階段)の位置へ移動する。
- Goal(下り階段)を設置する。
- 各種イベントを確率に合わせて設置する。
通常通り使用すると、マップを生成した時点で主人公はStart(上り階段)地点にいます。
コモンイベントでスイッチを切り替えることで、主人公を移動させずにイベントをスイッチで変化させる設定をしました。
マップイベントのEVページの出現条件はページ数が大きいものから順に当てはまったイベントが出現します。
この仕様により、ページの順が入れ替わると正しく動作しないので、ご注意下さい。
ちょっとしたアイディアレベルの使い方でしたが、よりスムーズにプラグイン使用の一助になれば幸いです。
- 設定項目
- WallHight:1 壁の高さ(1~3)
- MinRoomSize:5 部屋の大きさの最小値(3~)
- MxxRoomSize:10 部屋の大きさの最大値(3~)
- ShowOuterWall:ON 部屋の外側の壁を表示(ONで有効)
- プラグイン設定:デフォルト値
- マップの大きさ:48x48
上記の場合での部屋数は3~5くらいになることが多いようです。
ランダムなので、行き止まりだったり輪になっていたり様々です。
ここで、気になるのは階段(出入口)の出現位置です。
階段(スタート地点とゴール地点)は部屋の中に発生しますが、通路との境目に現れないようにプラグインが改変されています。
ここまで触れていないプラグイン設定の下記ですが、
WallHight:1 壁の高さ(1~3)
ShowOuterWall:ON 部屋の外側の壁を表示(ONで有効)
デフォルトのままで良いと思います。
壁の高さを変えると、絶壁の中にいる印象にはなります。
部屋の外側の壁を表示しなく変更すると、妙な違和感があります。
興味があったら変更してみてください。
他の配置イベントの設定
次に各イベントの出現率の設定です。
・イベント出現率
入口と出口以外のイベントには出現率を設定できます。
イベントのメモ欄に下記を記載して下さい。
出現率設定がないイベント生成されません。マップ毎の出現率:
部屋毎の出現率:
用意するイベントで考えやすいものとして、宝箱やシンボル敵がありますが、それらを出現させるのに必要な設定です。
上記の部屋数が各イベントの出現率の参考になると思います。
全部の部屋に出すものは と記載します。
1マップ(フロア)で1つを 50% の確率で出すのであれば <RateMap: 0.5> と記載します。
同じイベントを複数コピーして、出現数を変えることもできます。
このプラグインのキモは、
・マップの大きさ
・部屋の大きさ
・イベントの数と内容
これらのバランスの良いところを探すところになると思います。
ランダムマップへの入口を作る
◆SEの演奏:Move1 (90, 100, 0) ◆画面のフェードアウト ◆コモンイベント:下り階段 ◆場所移動:マップ1-3 (0,0) (向き: 下, フェード: なし) ◆プラグインコマンド:MNKR_SAN_MapGenerator, マップ生成 :プラグインコマンド:mapType = RoomAndPass ◆文章:なし, なし, 暗くする, 中 :文章:地下\V[1]階 ◆画面のフェードイン
ランダムマップへの入口イベントには下記の順でイベントを記述して下さい。
- 画面のフェードアウト
- 場所移動:(ランダムマップの位置の座標は0,0)
- プラグインコマンド:MapGenerator RoomAndPass
※MapGenerator FillRoom を入れるとマップ全体に及ぶ一つの部屋を生成します。 - 画面のフェードイン
注意点
ランダムマップ中でセーブした場合、プラグイン設定等を変更した後にロードすると上記のようになります。
こちらのプラグインを使って公開した後に、バージョンアップをすると同じことが起こる可能性があると思います。
ですので、こちらのランダムダンジョンの中ではセーブを禁止しておく方が無難かと思います。
再設置されたイベントID
このプラグインはGoal(下り階段)を降りて、Start(上り階段)に主人公が出てくるところまでが一度に処理されます。
そして、事前に配置したイベントのIDはリセットされ、再配置する処理になっているようです。
スタート地点のイベントIDが1になり、ゴール地点のイベントIDが2になるようです。
全てのイベントを別途バックアップして削除し、再配置する最初にスタート地点、ゴール地点、という処理なのだと予想します。
セーブポイントの作成
上述でランダムマップの中でセーブした後に、設定を変更してしまうと、不都合が生じるケースがある事をお知らせしました。
しかし、長くランダムマップを続けて、途中でセーブしたいというケースを想定し、セーブポイントを追加することでトラブルが避ける方法を考えました。
- ランダムマップ上でセーブを禁止するイベント追加(これはコモンイベント中に入れても良いです)
- セーブポイントのマップを追加
- Start(上り階段)、Goal(下り階段)、SavePoint(ワープホール)のどれを使ったかでスイッチを設定。
- イベントが入れ替わる処理を行う。
大まかに上記の流れになります。
1つずつ分解してまとめます。
ランダムマップ上でセーブを禁止するイベント追加
◆セーブ禁止の変更:禁止 ◆イベントの一時消去
トリガー:自動実行
メモ:<RateMap:1>
このイベントを各ランダムマップに入れます。
セーブポイントのマップを追加
どんな形でも良いので、セーブができる部屋を別のマップとして作ります。
下記のようなイベントを作成して下さい。
◆セーブ禁止の変更:許可 ◆セーブ画面を開く ◆イベントの一時消去
トリガー:自動実行
Start、Goal、SavePointでスイッチとイベント設定
各マップのStart(上り階段)、Goal(下り階段)、Savepoint(ワープホール)のイベントを下記のように設定します。
コモンイベント
最後に入ったイベントでコモンイベントを実行し、スイッチで移動先のスタート地点とゴール地点を変更する処理をしています。
下記はイベントを使った場合に指定したスイッチです。
Goal(下り階段) = 1
Start(上り階段) = 2
ワープホール = 3
後はマップイベントの「出現条件」を上記のスイッチに合わせて設定し、互いのイベント内容をコピーしました。
サンプルプロジェクトの1-3階とセーブポイントのイベントを代表として下記に載せます。
Start(上り階段)
Goal(下り階段)
Savepoint(ワープホール)
最後にセーブポイントから出てくるワープホールのイベントを設定します。
◆画面のフェードアウト ◆SEの演奏:Move1 (90, 100, 0) ◆変数の操作:#0005 = 2 ◆条件分岐:階数 ≤ 3 ◆場所移動:マップ1-3 (0,0) (向き: 下, フェード: なし) ◆ラベルジャンプ:End ◆ :分岐終了 ◆条件分岐:階数 ≤ 6 ◆場所移動:マップ4-6 (0,0) (向き: 下, フェード: なし) ◆ラベルジャンプ:End ◆ :分岐終了 ◆条件分岐:階数 ≤ 9 ◆場所移動:マップ7-9 (0,0) (向き: 下, フェード: なし) ◆ラベルジャンプ:End ◆ :分岐終了 ◆ラベル:End ◆プラグインコマンド:MNKR_SAN_MapGenerator, マップ生成 :プラグインコマンド:mapType = RoomAndPass ◆文章:なし, なし, 暗くする, 中 :文章:地下\V[1]階 ◆画面のフェードイン
イベント設定の情報の整理
「SAN_MapGenerator」プラグインの動作は、大まかに下記のように動いています。
- 指定されたタイル・イベントを読み込む。
- マップをまっさらにする。
- ランダムマップを生成する。
- Start(上り階段)を設置する。
- 主人公をStart(上り階段)の位置へ移動する。
- Goal(下り階段)を設置する。
- 各種イベントを確率に合わせて設置する。
通常通り使用すると、マップを生成した時点で主人公はStart(上り階段)地点にいます。
コモンイベントでスイッチを切り替えることで、主人公を移動させずにイベントをスイッチで変化させる設定をしました。
マップイベントのEVページの出現条件はページ数が大きいものから順に当てはまったイベントが出現します。
この仕様により、ページの順が入れ替わると正しく動作しないので、ご注意下さい。
ちょっとしたアイディアレベルの使い方でしたが、よりスムーズにプラグイン使用の一助になれば幸いです。
「部屋」通行可タイル
「通路」通行可タイル
「天井」通行不可タイル
「壁」通行不可タイル
のタイルがどのように反映されているか見比べて下さい。
作りたいダンジョンの雰囲気に合わせてタイルを設定しましょう。
サンプルプロジェクトでは、すでに3パターン用意されているので、それを流用するのも良いかと思います。
なお、マップの「遠景」画像は必須ではありません。
指定しない場合、背景が真っ暗になります。
プラグインの設定を見る
プラグインの設定とマップの大きさ、部屋の数を見ていきましょう。
- 設定項目
- WallHight:1 壁の高さ(1~3)
- MinRoomSize:5 部屋の大きさの最小値(3~)
- MxxRoomSize:10 部屋の大きさの最大値(3~)
- ShowOuterWall:ON 部屋の外側の壁を表示(ONで有効)
- プラグイン設定:デフォルト値
- マップの大きさ:48x48
上記の場合での部屋数は3~5くらいになることが多いようです。
ランダムなので、行き止まりだったり輪になっていたり様々です。
ここで、気になるのは階段(出入口)の出現位置です。
階段(スタート地点とゴール地点)は部屋の中に発生しますが、通路との境目に現れないようにプラグインが改変されています。
ここまで触れていないプラグイン設定の下記ですが、
WallHight:1 壁の高さ(1~3)
ShowOuterWall:ON 部屋の外側の壁を表示(ONで有効)
デフォルトのままで良いと思います。
壁の高さを変えると、絶壁の中にいる印象にはなります。
部屋の外側の壁を表示しなく変更すると、妙な違和感があります。
興味があったら変更してみてください。
他の配置イベントの設定
次に各イベントの出現率の設定です。
・イベント出現率
入口と出口以外のイベントには出現率を設定できます。
イベントのメモ欄に下記を記載して下さい。
出現率設定がないイベント生成されません。マップ毎の出現率:
部屋毎の出現率:
用意するイベントで考えやすいものとして、宝箱やシンボル敵がありますが、それらを出現させるのに必要な設定です。
上記の部屋数が各イベントの出現率の参考になると思います。
全部の部屋に出すものは と記載します。
1マップ(フロア)で1つを 50% の確率で出すのであれば <RateMap: 0.5> と記載します。
同じイベントを複数コピーして、出現数を変えることもできます。
このプラグインのキモは、
・マップの大きさ
・部屋の大きさ
・イベントの数と内容
これらのバランスの良いところを探すところになると思います。
ランダムマップへの入口を作る
◆SEの演奏:Move1 (90, 100, 0) ◆画面のフェードアウト ◆コモンイベント:下り階段 ◆場所移動:マップ1-3 (0,0) (向き: 下, フェード: なし) ◆プラグインコマンド:MNKR_SAN_MapGenerator, マップ生成 :プラグインコマンド:mapType = RoomAndPass ◆文章:なし, なし, 暗くする, 中 :文章:地下\V[1]階 ◆画面のフェードイン
ランダムマップへの入口イベントには下記の順でイベントを記述して下さい。
- 画面のフェードアウト
- 場所移動:(ランダムマップの位置の座標は0,0)
- プラグインコマンド:MapGenerator RoomAndPass
※MapGenerator FillRoom を入れるとマップ全体に及ぶ一つの部屋を生成します。 - 画面のフェードイン
注意点
ランダムマップ中でセーブした場合、プラグイン設定等を変更した後にロードすると上記のようになります。
こちらのプラグインを使って公開した後に、バージョンアップをすると同じことが起こる可能性があると思います。
ですので、こちらのランダムダンジョンの中ではセーブを禁止しておく方が無難かと思います。
再設置されたイベントID
このプラグインはGoal(下り階段)を降りて、Start(上り階段)に主人公が出てくるところまでが一度に処理されます。
そして、事前に配置したイベントのIDはリセットされ、再配置する処理になっているようです。
スタート地点のイベントIDが1になり、ゴール地点のイベントIDが2になるようです。
全てのイベントを別途バックアップして削除し、再配置する最初にスタート地点、ゴール地点、という処理なのだと予想します。
セーブポイントの作成
上述でランダムマップの中でセーブした後に、設定を変更してしまうと、不都合が生じるケースがある事をお知らせしました。
しかし、長くランダムマップを続けて、途中でセーブしたいというケースを想定し、セーブポイントを追加することでトラブルが避ける方法を考えました。
- ランダムマップ上でセーブを禁止するイベント追加(これはコモンイベント中に入れても良いです)
- セーブポイントのマップを追加
- Start(上り階段)、Goal(下り階段)、SavePoint(ワープホール)のどれを使ったかでスイッチを設定。
- イベントが入れ替わる処理を行う。
大まかに上記の流れになります。
1つずつ分解してまとめます。
ランダムマップ上でセーブを禁止するイベント追加
◆セーブ禁止の変更:禁止 ◆イベントの一時消去
トリガー:自動実行
メモ:<RateMap:1>
このイベントを各ランダムマップに入れます。
セーブポイントのマップを追加
どんな形でも良いので、セーブができる部屋を別のマップとして作ります。
下記のようなイベントを作成して下さい。
◆セーブ禁止の変更:許可 ◆セーブ画面を開く ◆イベントの一時消去
トリガー:自動実行
Start、Goal、SavePointでスイッチとイベント設定
各マップのStart(上り階段)、Goal(下り階段)、Savepoint(ワープホール)のイベントを下記のように設定します。
コモンイベント
最後に入ったイベントでコモンイベントを実行し、スイッチで移動先のスタート地点とゴール地点を変更する処理をしています。
下記はイベントを使った場合に指定したスイッチです。
Goal(下り階段) = 1
Start(上り階段) = 2
ワープホール = 3
後はマップイベントの「出現条件」を上記のスイッチに合わせて設定し、互いのイベント内容をコピーしました。
サンプルプロジェクトの1-3階とセーブポイントのイベントを代表として下記に載せます。
Start(上り階段)
Goal(下り階段)
Savepoint(ワープホール)
最後にセーブポイントから出てくるワープホールのイベントを設定します。
◆画面のフェードアウト ◆SEの演奏:Move1 (90, 100, 0) ◆変数の操作:#0005 = 2 ◆条件分岐:階数 ≤ 3 ◆場所移動:マップ1-3 (0,0) (向き: 下, フェード: なし) ◆ラベルジャンプ:End ◆ :分岐終了 ◆条件分岐:階数 ≤ 6 ◆場所移動:マップ4-6 (0,0) (向き: 下, フェード: なし) ◆ラベルジャンプ:End ◆ :分岐終了 ◆条件分岐:階数 ≤ 9 ◆場所移動:マップ7-9 (0,0) (向き: 下, フェード: なし) ◆ラベルジャンプ:End ◆ :分岐終了 ◆ラベル:End ◆プラグインコマンド:MNKR_SAN_MapGenerator, マップ生成 :プラグインコマンド:mapType = RoomAndPass ◆文章:なし, なし, 暗くする, 中 :文章:地下\V[1]階 ◆画面のフェードイン
イベント設定の情報の整理
「SAN_MapGenerator」プラグインの動作は、大まかに下記のように動いています。
- 指定されたタイル・イベントを読み込む。
- マップをまっさらにする。
- ランダムマップを生成する。
- Start(上り階段)を設置する。
- 主人公をStart(上り階段)の位置へ移動する。
- Goal(下り階段)を設置する。
- 各種イベントを確率に合わせて設置する。
通常通り使用すると、マップを生成した時点で主人公はStart(上り階段)地点にいます。
コモンイベントでスイッチを切り替えることで、主人公を移動させずにイベントをスイッチで変化させる設定をしました。
マップイベントのEVページの出現条件はページ数が大きいものから順に当てはまったイベントが出現します。
この仕様により、ページの順が入れ替わると正しく動作しないので、ご注意下さい。
ちょっとしたアイディアレベルの使い方でしたが、よりスムーズにプラグイン使用の一助になれば幸いです。
まず、上記の中で「瓦礫」は必須ではないようです。
スクリプトコマンドで壁を生成するのに使用します。
このコマンドを使用しない場合には「瓦礫」は使われません。
「部屋」通行可タイル
「通路」通行可タイル
「天井」通行不可タイル
「壁」通行不可タイル
のタイルがどのように反映されているか見比べて下さい。
作りたいダンジョンの雰囲気に合わせてタイルを設定しましょう。
サンプルプロジェクトでは、すでに3パターン用意されているので、それを流用するのも良いかと思います。
なお、マップの「遠景」画像は必須ではありません。
指定しない場合、背景が真っ暗になります。
プラグインの設定を見る
プラグインの設定とマップの大きさ、部屋の数を見ていきましょう。
- 設定項目
- WallHight:1 壁の高さ(1~3)
- MinRoomSize:5 部屋の大きさの最小値(3~)
- MxxRoomSize:10 部屋の大きさの最大値(3~)
- ShowOuterWall:ON 部屋の外側の壁を表示(ONで有効)
- プラグイン設定:デフォルト値
- マップの大きさ:48x48
上記の場合での部屋数は3~5くらいになることが多いようです。
ランダムなので、行き止まりだったり輪になっていたり様々です。
ここで、気になるのは階段(出入口)の出現位置です。
階段(スタート地点とゴール地点)は部屋の中に発生しますが、通路との境目に現れないようにプラグインが改変されています。
ここまで触れていないプラグイン設定の下記ですが、
WallHight:1 壁の高さ(1~3)
ShowOuterWall:ON 部屋の外側の壁を表示(ONで有効)
デフォルトのままで良いと思います。
壁の高さを変えると、絶壁の中にいる印象にはなります。
部屋の外側の壁を表示しなく変更すると、妙な違和感があります。
興味があったら変更してみてください。
他の配置イベントの設定
次に各イベントの出現率の設定です。
・イベント出現率
入口と出口以外のイベントには出現率を設定できます。
イベントのメモ欄に下記を記載して下さい。
出現率設定がないイベント生成されません。マップ毎の出現率:
部屋毎の出現率:
用意するイベントで考えやすいものとして、宝箱やシンボル敵がありますが、それらを出現させるのに必要な設定です。
上記の部屋数が各イベントの出現率の参考になると思います。
全部の部屋に出すものは と記載します。
1マップ(フロア)で1つを 50% の確率で出すのであれば <RateMap: 0.5> と記載します。
同じイベントを複数コピーして、出現数を変えることもできます。
このプラグインのキモは、
・マップの大きさ
・部屋の大きさ
・イベントの数と内容
これらのバランスの良いところを探すところになると思います。
ランダムマップへの入口を作る
◆SEの演奏:Move1 (90, 100, 0) ◆画面のフェードアウト ◆コモンイベント:下り階段 ◆場所移動:マップ1-3 (0,0) (向き: 下, フェード: なし) ◆プラグインコマンド:MNKR_SAN_MapGenerator, マップ生成 :プラグインコマンド:mapType = RoomAndPass ◆文章:なし, なし, 暗くする, 中 :文章:地下\V[1]階 ◆画面のフェードイン
ランダムマップへの入口イベントには下記の順でイベントを記述して下さい。
- 画面のフェードアウト
- 場所移動:(ランダムマップの位置の座標は0,0)
- プラグインコマンド:MapGenerator RoomAndPass
※MapGenerator FillRoom を入れるとマップ全体に及ぶ一つの部屋を生成します。 - 画面のフェードイン
注意点
ランダムマップ中でセーブした場合、プラグイン設定等を変更した後にロードすると上記のようになります。
こちらのプラグインを使って公開した後に、バージョンアップをすると同じことが起こる可能性があると思います。
ですので、こちらのランダムダンジョンの中ではセーブを禁止しておく方が無難かと思います。
再設置されたイベントID
このプラグインはGoal(下り階段)を降りて、Start(上り階段)に主人公が出てくるところまでが一度に処理されます。
そして、事前に配置したイベントのIDはリセットされ、再配置する処理になっているようです。
スタート地点のイベントIDが1になり、ゴール地点のイベントIDが2になるようです。
全てのイベントを別途バックアップして削除し、再配置する最初にスタート地点、ゴール地点、という処理なのだと予想します。
セーブポイントの作成
上述でランダムマップの中でセーブした後に、設定を変更してしまうと、不都合が生じるケースがある事をお知らせしました。
しかし、長くランダムマップを続けて、途中でセーブしたいというケースを想定し、セーブポイントを追加することでトラブルが避ける方法を考えました。
- ランダムマップ上でセーブを禁止するイベント追加(これはコモンイベント中に入れても良いです)
- セーブポイントのマップを追加
- Start(上り階段)、Goal(下り階段)、SavePoint(ワープホール)のどれを使ったかでスイッチを設定。
- イベントが入れ替わる処理を行う。
大まかに上記の流れになります。
1つずつ分解してまとめます。
ランダムマップ上でセーブを禁止するイベント追加
◆セーブ禁止の変更:禁止 ◆イベントの一時消去
トリガー:自動実行
メモ:<RateMap:1>
このイベントを各ランダムマップに入れます。
セーブポイントのマップを追加
どんな形でも良いので、セーブができる部屋を別のマップとして作ります。
下記のようなイベントを作成して下さい。
◆セーブ禁止の変更:許可 ◆セーブ画面を開く ◆イベントの一時消去
トリガー:自動実行
Start、Goal、SavePointでスイッチとイベント設定
各マップのStart(上り階段)、Goal(下り階段)、Savepoint(ワープホール)のイベントを下記のように設定します。
コモンイベント
最後に入ったイベントでコモンイベントを実行し、スイッチで移動先のスタート地点とゴール地点を変更する処理をしています。
下記はイベントを使った場合に指定したスイッチです。
Goal(下り階段) = 1
Start(上り階段) = 2
ワープホール = 3
後はマップイベントの「出現条件」を上記のスイッチに合わせて設定し、互いのイベント内容をコピーしました。
サンプルプロジェクトの1-3階とセーブポイントのイベントを代表として下記に載せます。
Start(上り階段)
Goal(下り階段)
Savepoint(ワープホール)
最後にセーブポイントから出てくるワープホールのイベントを設定します。
◆画面のフェードアウト ◆SEの演奏:Move1 (90, 100, 0) ◆変数の操作:#0005 = 2 ◆条件分岐:階数 ≤ 3 ◆場所移動:マップ1-3 (0,0) (向き: 下, フェード: なし) ◆ラベルジャンプ:End ◆ :分岐終了 ◆条件分岐:階数 ≤ 6 ◆場所移動:マップ4-6 (0,0) (向き: 下, フェード: なし) ◆ラベルジャンプ:End ◆ :分岐終了 ◆条件分岐:階数 ≤ 9 ◆場所移動:マップ7-9 (0,0) (向き: 下, フェード: なし) ◆ラベルジャンプ:End ◆ :分岐終了 ◆ラベル:End ◆プラグインコマンド:MNKR_SAN_MapGenerator, マップ生成 :プラグインコマンド:mapType = RoomAndPass ◆文章:なし, なし, 暗くする, 中 :文章:地下\V[1]階 ◆画面のフェードイン
イベント設定の情報の整理
「SAN_MapGenerator」プラグインの動作は、大まかに下記のように動いています。
- 指定されたタイル・イベントを読み込む。
- マップをまっさらにする。
- ランダムマップを生成する。
- Start(上り階段)を設置する。
- 主人公をStart(上り階段)の位置へ移動する。
- Goal(下り階段)を設置する。
- 各種イベントを確率に合わせて設置する。
通常通り使用すると、マップを生成した時点で主人公はStart(上り階段)地点にいます。
コモンイベントでスイッチを切り替えることで、主人公を移動させずにイベントをスイッチで変化させる設定をしました。
マップイベントのEVページの出現条件はページ数が大きいものから順に当てはまったイベントが出現します。
この仕様により、ページの順が入れ替わると正しく動作しないので、ご注意下さい。
ちょっとしたアイディアレベルの使い方でしたが、よりスムーズにプラグイン使用の一助になれば幸いです。
コメントを投稿するにはログインしてください。