RPGツクール2000

ランダムマップ

更新日:

少しずつ、自分がやってきて学んだことを書いていこうと思います。

まず、先日の投稿で触れた知人作品のデバッグです。
内容が多すぎるので、1投稿に1種類ずつ書くことにします。

この作品ではランダムダンジョン、ランダム宝箱を採用していました。
恐らく、下記の記事を参考にして作ったのだと思います。

宝箱をランダムに設置する - Newt Net(ひよっこプログラマー日記)
newtgecko.blog.fc2.com/blog-entry-114.html

ざっくり言うと、
1.宝箱を置いて良い地形か予めマップチップで決める。
2.ランダムに座標を決める。
3.その座標が問題ない地形か確認する。
4.NGなら2.に戻る。OKなら、そこに宝箱を置く。

というような処理で、宝箱、障害物、出口を置くことでランダムマップを作っていました。

しかし、問題がいくつかありました。
1つ目は、宝箱と障害物を適当に置くため、どうしても通行不可になってしまうケースが出てきました。
ベースになるマップで通路を広くしておけば、滅多に起こらないとは言え、確率の問題です。
そりゃ運が悪いで済ませるってのは、ユーザに酷なんじゃない?

自分が考えた解決策は
1.宝箱を通行可能にし、上から調べて開けるタイプにする。
2.障害物ではなく、ダメージ床にして、どうしても通らなくてはならない時はダメージを覚悟する。
ということで、とりあえず回避しました。

で解決かと思ったら、次の問題が出てきました。

2つ目の問題、出口も同じ処理をしているので、運が悪いと宝箱と重なってしまいます。
そうすると出られません。
そんなハマリって酷いだろ…。
ということで、ランダム配置の処理に追加をしました。
追加後の処理は下記になります。

1.宝箱を置いて良い地形か予めマップチップで決める。
2.ランダムに座標を決める。
3.その座標が問題ない地形か確認する。
4.NGなら2.に戻る。OKなら、5.に進む。
5.その座標に既に別のイベント(宝箱、障害物、出口)がないか確認する。
6.NGなら2.に戻る。OKなら配置する。

これで、全ての配置問題は解決しました。

今考えると、障害物には別の解決策がありますね。

空イベントをいくつか通路上に配置しておいて、絶対に一本道は通れるようにするとか。
出口をランダムにするので、それを候補地を10個位に絞って(例えば別地形番号を指定するとか)、そこに配置させるとか。

別の事を色々やってみてから振り返ると、違うことを思いついたりして面白いですね。

スポンサードリンク

スポンサードリンク

-RPGツクール2000

Copyright© RPGツクールMV初心者的備忘録 , 2019 All Rights Reserved.