今回の記事のサンプルプロジェクトは下記からダウンロードできます。
参照しながらお読みいただければ、より理解が早いと思います。
今回ご紹介するランダムダンジョンの作成には「イベント動的生成プラグイン」(トリアコンタン様作)を使用します。
下記よりダウンロードしてください。
Delusional Field: イベント動的生成プラグイン
triacontane.blogspot.com/2016/08/blog-post.html
今回はプラグインの設定は必要ありません。
プラグインファイルを指定場所に入れ、プラグイン管理でONにするだけです。
下記マップを作ります。
- ダンジョンの入口
- ダンジョンの1階
2.のダンジョンのマップに障害物となるイベントを1つ作成します。
今回は行き止まりになってもとりあえずは通れるように、ダメージを受けるマグマを配置します。
このイベントのIDを覚えておいてください。
サンプルでのIDは2です。
次に、「イベント動的生成プラグイン」を動かすイベントを作成します。
イベントコマンド>3>プラグインコマンド…
から、下記のように記述します。
ERS_MAKE_RANDOM 2 1 0 3 0 0
これを配置したい数だけコピー&ペーストします。
今回は12個配置します。
このプラグインコマンドの意味は、プラグインのヘルプにありますが、下記のようになります。
ERS_MAKE_RANDOM (ID) (a) (b) (c) (d) (e)
(ID)コピー元のイベントのID番号か名前
(a)通行可能かどうか(0:判定なし 1:通行可能タイルのみ)
(b)画面内 or 画面外(0:判定なし 1:画面内 2:画面外)
(c)他のキャラとの重なり(0:判定なし 1:プレイヤー 2:イベント 3:両方)
(d)地形タグ(0:判定なし 1..:指定した地形タグ)
(e)リージョン(0:判定なし 1..:指定したリージョン)
コピーが終わったら、コピー元のイベントを消去するスクリプトを追加します。
イベントコマンド>3>スクリプト…
から、下記のように記述します。
$gameMap.eraseEvent(2);
これを入れないと、コピー元のイベントが残ったままになります。
消さなくても大きな問題はありませんが、通路の何処かにコピー元を置いて消さない場合、そのコピー元は必ずそこに残ることになります。
そこにランダム性はありません。
マップのセットの処理が終わったら、最後の行に
イベントコマンド>2>イベントの一時消去
を入れましょう。
これで、このフロアに入る度にマグマの配置が異なるマップが完成です。
同じ手法で、敵シンボルや宝箱、出入口や次のフロアへの階段もランダムに配置することが可能です。
コメントを投稿するにはログインしてください。