RPGツクールMV未使用ファイルを含まないプラグインExcludeMaterialGuardで画像を一括登録する方法(Bash)
RPGツクールMVでデプロイメント時のオプションで
"未使用ファイルを含まない"にチェックすると未使用のファイルを消してくれてトータルの容量の圧縮になる。
なので出来ればつけたほうがよいオプションだが、非公式の外部プラグインが管理している画像ファイルは、ゲーム内で使用しているはずのなのに未使用とみなされて消されてしまう。という問題がある。
それを解決してくれるのが
トリアコンタン様のプラグイン
ExcludeMaterialGuard.js
https://tkooler-guild.org/plugin/excludematerialguard-js/
プラグインのメニューのパラメータ->画像素材で右クリック
編集->テキストから
[]
の中にファイルのパスを追記していきます。
拡張子までの記載は不要で、例えば
hoge/以下に a.png b.png c.png が存在する場合
["hoge/a","hoge/b","hoge/c"]
というような感じで記載する。
しかし未使用素材削除対象となってしまった画像達をぽちぽちと一個ずつ追加するのは骨が折れる。このプラグイン自体にフォルダ全体を指定する機能はまだないらしい。
ExcludeMaterialGuard.js 引用
素材を選択しておくことで未使用素材削除機能の対象から外すことができます。
ツクールMVの本体バージョン1.5.0で実装された型指定機能に対応することでファイルダイアログから複数のファイルを選択することができます。
指定したフォルダ以下の全てのファイルを残す、といったことはできません。その場合は全ファイルをひとつずつ選択する必要があります。
どうするか。
結論
何かしらのCLI(今回はGit bashを使用)でファイル検索して文字列処理してから、プラグインのメニューにコピペする。
前提
menus/以下に存在するpng(未使用素材とみなされてしまったもの)を探しだして、ExcludeMaterialGuardのパラメータへ一括登録したい。
方法
未使用素材削除対象となっているフォルダで下記コマンドを実行。
その結果をExcludeMaterialGuardプラグインのパラメータへ張り付ける。
$ find menus/ -name *.png | awk -F . '{print $(NF-1)}' | sed -e "s/^/\"/" -e "s/\$/\",/" | sed -e ':loop;N;$!b loop;s/\n//g'
コマンドの解説(パイプ「|」毎)
1,findで、menus以下のpngファイルを探しだす。
$ find menus/ -name *.png
menus/actorwindow/AllMembers.png
menus/actorwindow/Arrow.png
menus/actorwindow/HPMeter.png
menus/actorwindow/Layout.png
....
2,プラグインのコマンドに張り付ける際は拡張子.pngは不要なので
$ find menus/ -name *.png | awk -F . '{print $(NF-1)}'
menus/actorwindow/AllMembers
menus/actorwindow/Arrow
menus/actorwindow/HPMeter
menus/actorwindow/Layout
....
3,フォーマットに合わせるために行頭に" を入れて、行末に", を挿入する
$ find menus/ -name *.png | awk -F . '{print $(NF-1)}' | sed -e "s/^/\"/" -e "s/\$/\",/"
"menus/actorwindow/AllMembers",
"menus/actorwindow/Arrow",
"menus/actorwindow/HPMeter",
"menus/actorwindow/Layout",
....
4,1~3の結果で改行を削除する。(今回のコマンド)
$ find menus/ -name *.png | awk -F . '{print $(NF-1)}' | sed -e "s/^/\"/" -e "s/\$/\",/" | sed -e ':loop;N;$!b loop;s/\n//g'
"menus/actorwindow/AllMembers","menus/actorwindow/Arrow","menus/actorwindow/HPMeter","menus/actorwindow/Layout",
改行が削除されるので、この出力されたテキストをExcludeMaterialGuardプラグインのパラメータへコピーペーストする。
最期のカンマ,までコピーするとプラグインのフォーマットエラーになるので"までのコピペとすることに注意。
["menus/actorwindow/AllMembers","menus/actorwindow/Arrow","menus/actorwindow/HPMeter","menus/actorwindow/Layout"]
以上、これでExcludeMaterialGuardプラグインに登録される。menus以下の画像達が未使用素材対象から外れ、無罪となる。
今回の例はmenus/以下という前提ですが、複数フォルダも指定できるし適宜読み替えてください
ちなみに js/plugins.js の ExcludeMaterialGuard の行を直接編集するのはうまくいかなかった気がします。
各コマンドの詳細は下記をみると勉強になります
1:https://qiita.com/pugiemonn/items/df491fbc34a599495cf2
2:http://shinya131-note.hatenablog.jp/entry/2015/06/10/224110
3:https://qiita.com/hirohiro77/items/7fe2f68781c41777e507
4:https://qiita.com/hidekuro/items/56acc773db777100bf09
今回のプラグインを使用して制作したフリーゲーム配信中