【プラグイン/ver1.1.1】ランダムダンジョン

んーぞー

ユーザー
スクリーンショット 2021-05-01 15.19.53.png
あらかじめ用意したマップの部品をランダムに組み合わせて、ダンジョンを自動生成するプラグインです。
ダンジョンの大きさは任意に設定できます。
イベントのランダム出現機能が用意されており、宝箱などで利用できます。
またイベントの排他出現機能も用意されており、マップ上のどこかにいずれか一つだけが出現するイベント(階段など)に利用できます。
なおランダムマップから別のマップに移動すると、配置されていた全てのイベントの全てのセルフスイッチが自動的にオフになります。
これにより、同じマップにひたすら移動し続けても何度でも宝箱を開けられます。


使用方法
導入方法は通常のプラグインと同様です。
添付に同梱されているRandomDungeon.jsjs/pluginsフォルダ内にコピーし、プラグイン管理にて有効にしてください。
その後プラグイン説明文とプラグインパラメータをよくお読みください。説明文は日英2ヶ国語に対応しています。
なお添付ファイルにはサンプルプロジェクト用のデータも同梱されており、マップおよびイベントの設定方法の参考にすることができます。

スクリーンショット 2021-05-01 15.19.11.png

以下はその使用方法です。

サンプルプロジェクト使用方法
  1. RPGツクールMZで新規プロジェクトを作成してください。
  2. 添付ファイルを解凍し、dataフォルダの中身をすべて1のdataフォルダにコピー(既存ファイルと置き換え)してください。
  3. RandomDungeon.jsを1のjs/pluginsフォルダ内にコピーしてください。
  4. 1をRPGツクールMZで開き、プラグイン管理を開いてください。
  5. RandomDungeonを有効にしてください。また、プラグイン説明文をよくお読みください。
  6. テストプレイで動作を確認してください。


利用規約
本プラグインはMITライセンスのもとにリリースされています。


GitHub
スレッドの最新投稿までスクロールせずともここで最新版をダウンロードできます。


よろしくお願いいたします。
 

Attachments

  • RandomDungeon.zip
    43.5 KB · 閲覧: 82
最後に編集:

むぎわら猫

ユーザー
初めまして、このプラグインを使わせていただいています。
これだけでゲームのアイデアが湧いてくる、とても良いプラグインだと思います。
しかしマップを設定していろいろプラグインを追加していくと、私の環境だと二つ競合するプラグインがありました。

二つともトリアコンタン氏のプラグインで
一つは公式プラグインの
PluginCommonBase.js

TypeError
Cannot read property 'forEach' of undefined
を返してきます。

もう一つは
ApngPicture.js

ReferenceError
PluginManagerEX is not defined
を返してきます。

ApngPicture.jsのライブラリのPixiApngAndGif.jsはエラーがでませんでした。

PluginCommonBase.jsのほうは外してもそこまで困らないのですがApngPicture.jsの方はゲームの印象が変わってしまうので、なんとか修正をお願いできないでしょうか?
 

んーぞー

ユーザー
ミルクレープさん、初めまして!
プラグインをご利用いただき、またフィードバックをお寄せくださり誠にありがとうございます。

どちらの現象も再現できました。ご不便をおかけしてしまい申し訳ありません。
つきましては、PluginCommonBase.jsとの競合を修正したver 1.0.1にアップデートしたものを添付致しましたので、こちらをお試しください。
なおApngPicture.jsのエラーは前提プラグインであるPluginCommonBase.jsがオフになっているために起こるものであり、PluginCommonBase.jsとの競合が解消すれば自動的に解決します。

ご不明点等ございましたらお知らせください。
よろしくお願いいたします。
 

Attachments

  • RandomDungeon.js
    31 KB · 閲覧: 6

んーぞー

ユーザー
申し訳ありません、1.0.1にてイベントにマップタイルの画像を設定すると正常に機能しなくなるバグが見つかりました。
これを修正した1.0.2にアップデートいたしましたので、こちらをお使いください。

ご不明点等ございましたらお知らせください。
よろしくお願いいたします。
 

Attachments

  • RandomDungeon.js
    31.1 KB · 閲覧: 11

むぎわら猫

ユーザー
お礼が遅れてしまって申し訳ありません。
通知設定が消えていたようです…。
さきほど1.0.2を入れて試してみましたが問題なく動いていると思います。
迅速な対応、ありがとうございました。

ところで、フィードバックついでに、ゲームを作っていてこうゆう機能があったらもっといいなぁと思う部分があったので、不躾かと思いますが何かのお役に立つかもしれないので書いておこうかと思います。
要望…というものでは全然なくて「一部の人にはこうゆう需要もある」くらいの話です。

1、ベースマップ以外に必ず出現するマップの設定
現在のデザインですとマップ移動はイベントの階段で処理する想定になっていると思うのですが、このプラグインの良さは「ランダムマップだけど事前にマップを作り込める」ところにあると思うので、この機能があればマップで表現した豪華な階段や、装飾したボス部屋等のストーリーイベントにも使えるかと思います。
ただ、生成アルゴリズムが変わってしまうと思うので、簡単ではないですよね…?
複数あると破綻してしまうのでフロアに一つ、かつ、接続する出入り口が一つという条件で十分だと思います。

2、ベースマップのバリエーション
現在はベースマップが一つですが、よりランダム感を出すために複数のベースマップから一つをランダムで選べるようになるといいと思います。
1で書いたイベント用のマップも複数から選べると完全なランダムマップが作れると思います。

3、生成したマップをリセットするまで保持する機能
現在は別マップに移動すると生成した組み合わせが消えてしまいますが、プラグインコマンド等でリセットするまで保持できると、マップ移動しても探索の続きができるので、例えば、死にそうになったら街に戻りつつ少しづつダンジョン探索みたいな「Diablo風ランダムダンジョン」とか、ニューゲームすると部屋が入れ替わるホラゲの館みたいな「クロックタワー風ランダムダンジョン」とか、ダンジョン最終階から歩いて戻る場合の不自然さの解消等が可能になると思います。
復元の処理やセーブデータ等、複雑になってしまうと思うので、これも簡単ではないですよね。

以上三つですが、もし、こうゆう機能があったらより夢が広がるんじゃないかなぁと思います。
 
最後に編集:

んーぞー

ユーザー
動作確認ありがとうございます。
問題なく動いているとのことで安心しました。

また、貴重なご意見ありがとうございます。
今後のアップデートの参考にさせていただきます!

今後ともよろしくお願いいたします。
 

finga

ユーザー
お世話になっております。
検索でたどり着きました。

まさに私が欲しい、と思っていたプラグインなのでありがたく使わせていただこうと思っております。

サンプルプロジェクトで動作を確認してみたのですが、uniqueで出現するイベントがどうも右下の方向に偏っているようです。
まずは右下を目指して進み、そこになければその上にいく、という方式でダンジョンを探索すると大抵すぐに階段がみつかってしまいます。

均等に出現を割り振る方法などはございますでしょうか。
よろしくお願いいたします。
 

んーぞー

ユーザー
fingaさん、はじめまして!
この度は貴重なフィードバックをお寄せくださりありがとうございます。
お返事が遅れてしまい申し訳ありません。

uniqueイベントの出現が偏るという現象について調査したところ、バグであると判明しました。
そのためこれを修正したバージョン1.0.3にアップデートいたしましたので、更新いただくようお願いいたします。

なお添付にはサンプルマップの更新データも含まれています。ほとんど以前のものと変わりませんが、uniqueイベントの配置を若干見直しています。
プラグイン自体の修正と合わせ、右下に偏る現象は解決されるかと存じます。


ご不明点等ございましたらお知らせください。
よろしくお願いいたします。
 

Attachments

  • RandomDungeon.zip
    43.4 KB · 閲覧: 12

finga

ユーザー
んーぞーさん

ご丁寧にご対応いただき、ありがとうございました。
サンプルプロジェクトで動作確認を行い、右下に偏る現象が解消されていることを確認いたしました。

ご活用させていただきます。

今後ともよろしくお願いいたします。
 

んーぞー

ユーザー
fingaさん

ご確認ありがとうございます。
正常に動作しているとのことで、安心しました。

ご不明点等ございましたらお気軽にお声がけください。
こちらこそ今度ともよろしくお願いいたします。
 

んーぞー

ユーザー
バージョン1.1.0に更新いたしました。
  • マップの表示名に変数の値を埋め込むことのできる機能を追加

この更新により、ランダムダンジョンの階層を表示することが可能になります。
スクリーンショット 2022-03-21 21.51.37.png


添付ファイルにてプラグインファイルを上書きすることで更新可能です。
また、サンプルマップも更新されたものが同梱されています。上記手順にてサンプルプロジェクトを作成してご確認ください。

よろしくお願いいたします。
 

Attachments

  • RandomDungeon.zip
    45.8 KB · 閲覧: 10

んーぞー

ユーザー
バージョン1.1.1に更新いたしました。
  • 稀なケースにて発生するエラーを修正
添付ファイルにてプラグインファイルを上書きすることで更新可能です。

よろしくお願いいたします。
 

Attachments

  • RandomDungeon.js
    33.5 KB · 閲覧: 15

むぎわら猫

ユーザー
トリアコンタン氏のTemplateEvent.jsと併用するとテンプレートイベントが正常に読み込まれない場合があるみたいです。
症状としては
1.特定のピースマップのイベントからテンプレートイベントが読み込めない(元のまま置き換わらない)
2.特定のピースマップで設定していないテンプレートイベントが出現する場合がある。
3.特定のベースマップでテンプレートイベントの内容が二重に読み込まれている場合がある(一回のアクションで二回実行されているような挙動)
正常に置き換わるピースの方が多い印象で、問題が発生する特定のピースの条件はわかりませんでしたが、何度実行しても同じマップIDのピースで起こります。
同一ピース内でも、複数のイベントがある場合、置き換わるイベントと置き換わらないイベントが出るパターンもありました。
2と3については発生したり発生しなかったりします。
2については勝手に出現するテンプレートイベントの種類と座標は固定でした。

もしかしたら私の環境だけかもしれませんが、一応報告しておきます。
 

んーぞー

ユーザー
むぎわら猫さん、こんにちは!
プラグインをご利用くださりありがとうございます。

大変申し訳ありませんが私の環境では再現できませんでした。
どちらのプラグインも最新バージョンになっているかどうかをご確認ください。

特にTemplateEvent.jsはバージョン1.0.6にて本プラグインとの競合を正式に解消いただいております(バージョン履歴をご覧ください)。
そのため最新版に更新されていれば競合は起きないものと認識しております。


ご不明な点などございましたらお知らせください。
よろしくお願いいたします。
 
最後に編集:

むぎわら猫

ユーザー
どうもです。
既存のプロジェクトでRandomDungeonとTemplateEventとPluginCommonBaseのみで動作させてみましたが、やはり同じ現象がおきました。

ですので、新規にプロジェクトを作って最新のRandomDungeonとTemplateEventとPluginCommonBaseのみでテストしてみました。
テンプレートイベントは正常に置き換わっているように見えましたが、設置していないイベントが特定の場所に出現する現象は毎回起こりました。
特定のピースというわけではなく特定の位置(サイズ3で作成した場合、左中央の位置。サイズ5では左下)のマップ上に固定で出現します。
試行錯誤した結果、ベースマップ上に設置したイベントと同期しているようで、ベースマップ上のイベントを消したところ固定の出現も消えました。

コピーせずに新規に作成したため、もしかしたらランダムマップの設定に何かしらの不備が残っているかもしれません(初期設定が複雑なので)
 

んーぞー

ユーザー
発生タイミングを詳細に調査してくださりありがとうございます。
おかげでこちらでも現象が再現できました。

原因を調査し、TemplateEvent.jsのコードを1箇所修正したところ当該事象が起きなくなることを確認いたしました。
そこでトリアコンタン様にご報告したところ、快く修正してくださいました。
最新バージョンは以下で入手できます。


この度は貴重なフィードバックをお寄せくださりありがとうございました。
 

んーぞー

ユーザー
むぎわら猫さん
このたびはありがとうございました。
ご不明点等ございましたらお気軽にお声がけください。
よろしくお願いいたします。


トリアコンタン様
このたびはご多忙の折にも関わらず、迅速にご対応くださり誠にありがとうございました。
この場をお借りして、改めてお礼申し上げます。
 
トップ