ダンジョン半自動生成 - KURAGE_SemiAutoDungeon.js

▼ダンジョン半自動生成(くらげや様作) - KURAGE_SemiAutoDungeon.js
https://plugin.fungamemake.com/archives/12601
簡易に作成したマップから自然なダンジョンを生成します。
ふりがな:だんじょんはんじどうせいせい
機能概要: 簡易に作成したマップから自然なダンジョンを生成します。
利用規約(ライセンス): MITライセンス
作者:くらげや
作者サイト:https://x.com/kurageya0307
解説ページ:https://github.com/kurageya0307/SemiAutoDungeon
ダウンロードページ:https://raw.githubusercontent.com/kurageya0307/SemiAuto…
ファイル名:KURAGE_SemiAutoDungeon.js
プラグインのヘルプ:
/*: * @plugindesc v1.0.0 簡易に作成したマップから自然なダンジョンを生成します。 * @author KURAGE * * @param ダンジョン素材マップID * @desc ダンジョンの素材を配置したマップのマップIDをコンマ区切りで指定します。スペースは無視されます。 * 0を指定することはできません。 * @default 1, 2, 3 * * @param 屋外マップ素材マップID * @desc 屋外マップの素材を配置したマップのマップIDをコンマ区切りで指定します。スペースは無視されます。 * 0を指定することはできません。 * @default 4, 5, 6 * * @param コンソール出力モード(ON/OFF) * @desc ONにした場合,生成したマップのJSONデータをコンソール出力します。 * @default OFF * * @help * *----------------------------------------------------------------------------- * Introduction *----------------------------------------------------------------------------- * ダンジョン半自動生成機能 * 素材を配置したマップと簡易に作成したマップから, * 以下のアルゴリズムに基いて自然なダンジョンを生成します。 * 1. 角を削る。 * 2. 道を拡げ,ガタガタにする。 * 3. 通行可能なオブジェ・通行不可能なオブジェ・壁の飾りをランダムに配置する。 * 4. 影をつける。 * 屋外マップ自動生成機能 * フラクタル地形(パリンノイズ)を用いて高低差のあるマップを自動生成し, * 素材を配置したマップの情報をもとに屋外マップを作成します。 * *----------------------------------------------------------------------------- * Usage *----------------------------------------------------------------------------- * ダンジョン半自動生成 * 以下の二種類のマップを作成してください。 * 1. 素材を配置したマップ * 2. 通路を直線で適当につないだマップ * * 1.のマップは以下の規格のとおり素材を配置してください。 * Y座標 : 素材内容 * 0 : 「床」「壁」「天井」 * 1 : 通行可能でオートタイルで塗りつぶしするタイプの床(例:「床の苔」「床の汚れ」「毒の沼」など) * 2 : 通行可能で床に置くタイプのオブジェクト(例:「砂利」「草」など) * 3 : 通行不可能で床に置くタイプの1x1サイズのオブジェクト(例:「岩」「掘られた床」など) * 4~5 : 通行不可能で床に置くタイプの1x2サイズのオブジェクト(例:「大きな岩」「石像」など) * 6 : 1x1サイズの壁の飾り(例:「壁の苔」など) * 7~8 : 1x2サイズの壁の飾り(例:「壁のツタ」など) * * 2.のマップは通路を直線で迷路状に繋いでください。 * 【重要】通路の幅は3,通路と通路の間の何もない空間の幅は6以上を推奨します。 * ~~~~ ~~~~~~~~ * 屋外マップ自動生成 * 以下の二種類のマップを作成してください。 * 1. 素材を配置したマップ * 2. 素材マップと子の関係にある空マップ * * 1.のマップは以下の規格のとおり素材を配置してください。 * Y座標 : 素材内容 * 0 : 「床」(実は使ってません(;´∀`)) * 1 : 通行可能でオートタイルで塗りつぶしするタイプの床(例:「床の苔」「床の汚れ」「毒の沼」など) * 2 : 通行可能で床に置くタイプのオブジェクト(例:「砂利」「草」など) * 3 : 通行不可能で床に置くタイプの1x1サイズのオブジェクト(例:「岩」「掘られた床」など) * 4~5 : 通行不可能で床に置くタイプの1x2サイズのオブジェクト(例:「大きな岩」「石像」など) * 6 : 1x1サイズの壁の飾り(例:「壁の苔」など) * 7~8 : 1x2サイズの壁の飾り(例:「壁のツタ」など) * 9~11 : 崖や縁,2×2サイズの木を規格通り配置してください。 * 配置図は以下を参考にしてください。 * https://github.com/kurageya0307/SemiAutoDungeon/blob/pictures/SOZAI_FIELD.png * * テストプレイを行い,どこかのマップにて以下のプラグインコマンドを実行してください。 * 「KURAGE_SemiAutoDungeon」 * (F8キーを押してコンソール画面を開くとダンジョン生成の進行具合を確認できます。) * * dataフォルダに作成された「_Map***.json」をMap***.jsonにリネームしてください。 * Windows環境の場合,同梱のバッチファイル「__SwapMap.bat」をダブルクリックすると * 全てのファイルが自動でリネームされます。 * * RPGツクールMVの「プロジェクトを開く(Ctrl+O)→Game.rpgproject」で * 再度プロジェクトファイルを開き直すとマップデータが反映されます。 * *----------------------------------------------------------------------------- * Options *----------------------------------------------------------------------------- * マップのメモ欄に以下のノートタグを記入することで, * オプションの設定をすることができます。 * * <seed: 数字> * 乱数のシード値を指定します。デフォルトではマップのマップIDがシード値になっています。 * * <field_type系> * <field_type: shield>(デフォルト) * <field_type: terrace> * <field_type: mix> * (屋外マップ限定)屋外マップの地形を指定します。 * shieldでは地形が楯状地のようになり,等高線を引いた地図のように高い所・低い所の入り混じった形になります。 * terraceでは地形が段々畑のようになり,北(画面上)に向かうほど高いようになります。 * mixは基本を段々畑としshieldのようなランダムな高低差が追加された地形になります。 * * <max_depth: 数字> デフォルト値 4 * (屋外マップ限定)高低差の最大値を指定します。 * * <relief: 数字> デフォルト値 20 * (屋外マップ限定)高低差の彫りの深さ・周期を指定します。 * X・Yをそれぞれ指定可能であり,その場合relief_x,relief_yとタグを入力してください。 * * <tree_density: 数字> デフォルト値 6 * (屋外マップ限定)木々の密集度を指定します。 * この数字が大きいほど木々と木々の間の距離が大きくなります。 * X・Yをそれぞれ指定可能であり,その場合tree_density_x,tree_density_yとタグを入力してください。 * * <tree_size: 数字> デフォルト値 25 * (屋外マップ限定)一つ一つの木々の集まりの大きさを指定します。 * この数字が大きいほどある木々集合のサイズが大きくなります。 * * <dungeon_symmetry: on> デフォルト値 off * (ダンジョンマップ限定)ダンジョンを左右対称にします。 * 砦や塔など人工物のダンジョン作成時にお使いください。 * * <add系> * <add_all: off> * <add_a_obj: off> * <add_w_obj: off> * <add_u_obj: off> * <add_wall: off> * <add_tree: off> * 床・壁・天井以外のオブジェクトや壁飾り,木などを出力するかどうかを制御します。 * デフォルトでは全て「出力する」となっています。 * 例えば,<add_all: off>とすると床・壁・天井のみを出力し,オブジェクト等は全て出力しません。 * それぞれのオプションの意味は以下のようになっています。 * add_all :全てのオブジェクトの出力をoff * add_a_obj :オートタイルで塗りつぶしをするタイプの床の出力をoff (aはautotileの略) * add_w_obj :通行可能で床に置くタイプのオブジェクトの出力をoff (wはwalkableの略) * add_u_obj :通行不可能のオブジェクトの出力をoff (uはunwalkableの略) * add_wall :壁の飾りの出力をoff * add_tree :(屋外マップ限定)2×2の木の出力をoff * * <block系> * <block_a_obj: 数字> デフォルト値 10 * <block_w_obj: 数字> デフォルト値 5 * <block_u_obj: 数字> デフォルト値 10 * <block_wall: 数字> デフォルト値 10 * オブジェクトなどはマップ全体を小さなサブ領域にわけ,サブ領域内に配置されるように実装されています。 * (詳細はhttp://kurageya0307.hatenadiary.com/entry/2018/01/23/112017の6章を参照してください。) * block系のオプションではこの小さなサブ領域のサイズを指定できます。 * また,全てのオプションがX・Yそれぞれ別々に指定可能です。その場合,タグをblock_a_obj_xなどとしてください。 * おそらくはデフォルト値のままでよいと思います。 * * <limit系> * <limit_u_obj: 数字> デフォルト値 1 * <limit_a_obj: 数字> デフォルト値 2 * <limit_w_obj: 数字> デフォルト値 3 * <limit_wall: 数字> デフォルト値 4 * <limit_tree: 数字> デフォルト値 5 * limit系で指定した数字のリージョンを設定した座標には該当するオブジェクトなどを設置しないようになります。 * これもおそらくはデフォルト値のままご使用していただければよいかと思います。 * *----------------------------------------------------------------------------- * License *----------------------------------------------------------------------------- * This plugin is released under the MIT License. * Copyright (c) 2018 Y.K * http://opensource.org/licenses/mit-license.php * *----------------------------------------------------------------------------- * Acknowledgements *----------------------------------------------------------------------------- * このプラグインは以下のソースコードを流用しております。 * ・SupponChangeTileId.js : 作成者 Suppon 氏 * ・GraphicalDesignMode.js : 作成者 Triacontane 氏 * ・perlin.js : 作成者 Joseph Gentle 氏 * ・シード値つき乱数 : 作成者 古都こと 氏 * 素敵なプラグインを作成いただいた皆様に感謝いたします。 * *----------------------------------------------------------------------------- * Others *----------------------------------------------------------------------------- * * v1.0.0 - 2018/01/11 : 新規作成 * v1.1.0 - 2018/02/18 : 屋外マップの作成機能の追加 * v1.2.0 - 2018/10/07 : コンソール出力の追加 * v1.2.1 - 2018/10/31 : 屋外マップの仕様変更 * *----------------------------------------------------------------------------- */