前回の記事の続きです。
イベント検索にgrep
grepとは複数のファイルの中から、一致する文字列を検索できるツールです。
mac ならば標準でこのツールが実装されています。
Windowsの場合は別途インストールする必要があります。
「秀丸エディタ」や「サクラエディタ」など、一部のテキストエディタではgrep機能がついているのでそれを利用するのが簡単でしょう。
macの場合
macではターミナル.appを使います。
[アプリケーション] -> [ユーティリティ] -> [ターミナル]もしくは spotlight検索で ターミナル と打ち込めば出てきます。
起動した状態です。
ここに
cd[半角スペース]
を打ち込みます。
cdの後ろに半角スペースを一つ入れるのを忘れないでください。
次にFinderでRPGツクールMVで制作しているゲームのプロジェクトフォルダを開いてください。
中にdataフォルダがありますね。
それをターミナルにマウスでドラッグ&ドロップします。
dataフォルダのパスが代入されました。
Enterを押して決定します。
カレントディレクトリがdataフォルダに移動しました。
cd "ファイルパス"
これはターミナル上でのカレントディレクトリ(現在のフォルダ位置)を変更する命令です。
上記処理を実行したことでターミナルの指す現在位置がdataフォルダになったということです。
RPGツクールMVで制作したイベントデータは、dataフォルダに保存されているので、ここでgrepを実行して旧アイテム名が残っていないかチェックするわけです。
grep -c "太陽の杖" *.json
と入力してEnterを押してください。
このようになります。
「grep -c "太陽の杖" *.json」はカレントディレクトリのjsonファイル全てを対象に"太陽の杖"を検索、という命令です。
-c はオプションで、あってもなくても構いません。
-c を付けているとヒットする行数の数を出力してくれます。
-c を省いた場合はヒットした行をそのままターミナル上に表示してくれます。
今回は 太陽の杖 が残っているかどうかを知りたいだけなので見やすいように-cオプションをつけています。
grep結果
Map005.json:1 となっていて、1行データが残っているのが判明しました。
(Weapons.jsonも1となっていますが、これはデータベースの武器ファイルです。データベースの太陽の杖もまだマグマの杖に変更していないのでヒットしています)
Map005.jsonとはどのマップでしょうか?
これはRPGツクールMVが管理しているID番号です。
これを調べるためにはdataフォルダの中にある Mapinfos.json ファイルをテキストエディタで開きます。(mac標準付属のテキストエディットや、mi、Windowsなら秀丸やメモ帳 など)
このようにID5(Map005.json)が「牢屋:隣」マップだということがわかります。
配置していたイベントの文章に太陽の杖が残っているのでヒットした、ということです。
2つあるのに、なぜヒット行数が1だったのか。
これはgrep の -c オプションはヒットした行数を数えます。
RPGツクールMVは配置したイベントはまるごと1行に出力します。
つまり上記スクリーンショットで確認できるイベントは全て1行で出力されているため、grep -cの結果も1となるわけです。
単純に”太陽の杖"が残っているかどうか、ヒット件数が0なのか1以上なのか、で判断すればよいでしょう。
では変更します。
データベースを変更し、
イベントを変更します。
grepで確かめてみましょう。
ヒット件数が0になりました。
今度はマグマの杖でgrepしてみると…
ヒットしますね。
ちゃんと入れ替わったのが確認できました。
最初こそgrepは複雑なツールに感じてしまいますが、慣れてしまえば簡単です。
この一手間でアイテム名変更によるバグが潰せるのであれば是非実行すべきでしょう。
grep自体はとても高機能なツールで、正規表現という複雑な検索方法や、-c 以外にも色々なオプションがあります。
興味があれば「grep コマンド」などで検索してみてください。
Windowsの場合
ここでは秀丸のgrepを利用して説明します。
秀丸は昔からWindowsの定番テキストエディタとしてプログラマにはおなじみのツールです。
秀丸は有料ソフトですが、無料で全機能を気の済むまで試用ができます。
秀丸を起動して、[検索]メニューから[grepの実行]を選んでください。
検索する文字列には「太陽の杖」
検索するファイルには「*.json」
検索するフォルダにはRPGツクールMVで制作しているゲームのプロジェクトフォルダの中にあるdataフォルダを選択してください。
スクリーンショットでは「ファイル名一覧だけ作成」にチェックをいれていますが、説明がしやすいためチェックをいれているだけなので、どちらでも構いません。
RPGツクールMVで制作したイベントデータは、dataフォルダに保存されているので、ここでgrepを実行して旧アイテム名が残っていないかチェックするわけです。
それでは[OK]をクリックしてgrepを実行しましょう。
このように、「太陽の杖」が残っているマップがヒットしました。
カッコの中の数字は行数です。macのgrep -c とは違いヒット件数ではありません。
あとはmacと共通ですので、こちらをクリックしてください。