デバッグを支援するプラグイン – DebugToolEx.js

タイトル
デバッグを支援するプラグイン
作者名
ヘルプ
デバッグを支援するプラグインです。

【特徴】
・特定のキー(初期設定はタブキー)を押すと、コマンドパレットが起動します。
・コマンドパレットにコマンドを入力することにより、予約された機能を実行できます。
・コマンドを指定しない場合、スクリプトとして実行されます。
・変数やスイッチの管理ウィンドウを表示させることができます。
・入力補完機能があります。
・ローカル環境でのテストプレイ時のみ有効になります。
・現在有効になっているプラグインが一瞥でわかります。
・ゲーム実行時にエラーが発生した場合、エラー発生元のプラグインを特定しようと試みます。

【使用方法】
当プラグインはローカル環境でのテストプレイ時のみ有効になります。
プラグインの導入後、所定の「debug.html」ファイルをプロジェクトフォルダ(index.htmlの置いてあるフォルダ)に設置することで利用が可能になります。
また、デプロイメント時は当プラグインをプラグインリストから消去することを推奨します。

このプラグインは「コマンドパレット」から操作します。
コマンドパレットを起動するには、ゲーム起動後に「コマンドパレット起動キー」を押す必要があります(初期設定はタブキー)。
コマンドパレット起動後、もう一度「コマンドパレット起動キー」を押すと、コマンドパレットに入力したスクリプトやコマンドが実行されます。
実行後はデベロッパーツールのコンソール画面に結果が表示されるので、ご確認ください。

なお、当プラグインはWindows10以外での動作確認をしていません。

【コマンドパレット】
コマンドパレットにはコマンドもしくはスクリプトを入力します。
全てのコマンドは「->」もしくは「=>」から始まります(どちらも同じ意味です。好みの方を使用してください)。
コマンドは一行目に書く必要があり、二行目以降は認識しません。
また、説明上では視認性のためにカギカッコを使用していますが、実際にコマンドパレットに入力する際にはカギカッコの入力は不要です。

全てのコマンドは大文字と小文字を区別します。
各単語の間は半角スペースで区切ります(全角では認識しません)。
間違わないように気をつけてください。

「-> save 保存名」 : コマンドパレット上のスクリプト(2行目以降)を「保存名」で保存します。
「-> exe 保存名」 : saveコマンドで保存した「保存名」のスクリプトを実行します。
「-> bind オブジェクト名」 : コマンドパレット上のthisを指定します(詳細は後述)。
「-> open」 : 管理ウィンドウを起動します。
「-> com 番号」: 「番号」で指定した番号のコモンイベントを実行します。
「-> e 番号 ページ」 : 現在のマップ上にあるイベント番号「番号」の、指定された「ページ」のイベントを実行します。
「-> memo」 : メモシステムを起動します(詳細は後述)。

【thisについて】
コマンドパレットに入力するthisは、現在のシーンのインスタンスへの参照を指します(つまりSceneManager._scene)。
マップ画面のみ、thisは$gameMap._interpreterを指すようになっています(こちらの方が使いやすいと僕が感じるため)。
また、マップ上ではイベントの実行も可能です。
戦闘画面は$gameTroop._interpreterではなく、他と同じくシーンを指します(つまり戦闘画面では、スクリプトの実行は工夫しないと不可)。

コマンド「bind」でthisを変更した場合、そちらの設定が優先されます。
「bind」を解除したい場合、「-> bind null」とするか、そのまま「-> bind」とだけコマンドパレットに入力してください。

【管理ウィンドウ】
管理ウィンドウでは、スイッチや変数の操作ができます。
ゲーム内の値を変えると、管理ウィンドウ内の値も変わります。逆も同じです。

管理ウィンドウを通じて変数へ値を代入する際、気をつけなければならないことが一つあります。
それは、変数への代入は全てプリミティブ型の文字列として認識されることです。
オブジェクトや文字列以外のプリミティブ型として代入したい場合、文頭に半角のアットマークもしくは「#」をつけてください。
このドキュメンテーション内ではアットマークを使用できないので全て「#」で表現しますが、半角のアットマークに置き換えても動作します。

また、計算式の結果を代入することも可能です。
例:「#1000」「#100+$gameParty.gold()」「#false」「#undefined」
計算式の結果を代入する場合、Game_Variables.prototype.setValue()の挙動に準拠します。
すなわち、setValueメソッドに特に何も変更を加えていない場合、小数点以下は切り捨てられます。

オブジェクトや、メソッド(関数)の結果を代入することも可能です。
メソッドの結果を代入したい場合、末尾を「);」で終わらせてください。
また、オブジェクトを代入する場合、グローバルオブジェクトを暗黙的に参照します。
例:「#$gameActors.actor(1);」「#$gameParty.steps();」「#$gameSystem」
「#$gameParty._weapons」「#$gameParty['_weapons']」

管理ウィンドウ内の「登録済みコマンド一覧」にあるボタンをクリックすると、登録済みのコマンドが実行されます。
これはパレットウィンドウで「-> exe コマンド名」を実行することと等価です。

【メモシステム】
コマンド「-> memo」を実行すると、メモシステムが起動します。
通常のテキストエリアとは違い、コマンドの入力は受け付けません。
また、入力終了後(タブキーを押した時点)、テキストエリアの文字列がファイルに保存されます。
この保存されたファイルは、次回のメモシステム起動時に読み込まれます。

【ファイルの保存先】
コマンド「save」を実行すると、jsフォルダ内に「dte_commands.txt」というファイルが作られます。
コマンド「exe」を実行する際はこのファイルを読み取ります。
つまり、直接ファイルを編集することも可能です。

また、コマンド「memo」を実行すると、jsフォルダ内の「dte_memo.txt」というファイルを読み込みます。
コマンド「memo」を終了した時点(タブキーを押した時点)で、jsフォルダ内に「dte_memo.txt」は上書きされます。

【ショートカットキー】
コマンドパレット起動後、Ctrl+Shift+Pキーを押すと「->」が自動で入力されます。


【変数入力中の補完】
変数に値を代入するとき、ツクールMVに用意されているグローバル変数に対して入力補完が働きます。
値を返さない(ことを意図している)メソッドについては、undefinedしか返ってこないため入力補完から除外しています。
未対応の入力補完もあるかと思いますので、抜けがあればご報告ください。

また、現在は$gameXXX系に属する直接のメソッドのみに対応しています。
$gameXXX系のメソッドから派生するプロパティに対する入力補完や、$dataXXX系への対応も一応は予定しています。

【プラグイン管理機能】
管理ウィンドウ内には、現在のプロジェクトで使用されているプラグインの一覧が表示されます。
プラグインパラメーターで設定をおこなうと、プラグインの一覧はプラグインのON/OFF順でソートさせることもできます。

ゲームの実行時にエラーが発生した場合、エラー発生元と思われるプラグインをリストアップします。
この機能により、エラー発生元のプラグインを特定しやすくなります。
ただし読み込み時のエラー(例えば画像ファイルの指定が不正だった場合など)は捕捉しません。
また、エラーの発生元を正確に捕捉し、情報を提供するものでもありません。
詳細なエラー情報を知りたい場合、必ずコンソール画面のスタックトレースをご確認ください。

なお、コアスクリプト内でエラーが発生したとしても、そのエラーは捕捉されません。
コアスクリプトを直接編集している方はご注意ください。

【プラグインコマンド】
このプラグインにプラグインコマンドはありません。

【プラグインの更新方法】
プラグインを更新する場合、DebugToolEx.jsとdebug.htmlの二つを更新する必要があります。
DebugToolEx.jsはプラグインフォルダに設置し、debug.htmlはプロジェクトフォルダ(index.htmlの置いてあるフォルダ)に設置してください。

【既知の不具合】
現在はありません。

【その他のデバッグツール】
他の制作者様によるデバッグツールの紹介です。

・総合開発支援プラグイン(トリアコンタンさん)
https://triacontane.blogspot.jp/2016/04/blog-post_23.html
・変数スイッチ監視ウインドウ(奏ねこまさん)
http://makonet.sakura.ne.jp/rpg_tkool/contents/MPI_ValueMonitor.js
・イベントデバッグプラグイン(トリアコンタンさん)
https://triacontane.blogspot.jp/2017/01/blog-post.html

特に総合開発支援プラグインは多機能なので、ぜひ一度導入してみてください。

【更新履歴】
1.0.1 2017/10/07 ゲームパッドの接続を監視する機能を追加。入力補完機能の調整と追加。
1.0.0 2017/10/04 コマンドパレットに入力補完機能を追加。MadeWithMV.jsとの衝突を解消。
0.9.4 2017/10/01 説明を少し変更。
0.9.3 2017/09/30 GitHubのアドレスを追加。
0.9.2 2017/09/21 変数入力欄におけるエラー出力の調整。
0.9.1 2017/09/21 変数入力欄に「#」を指定しても文字列として認識されていた不具合の修正。
0.9.0 2017/09/20 バグ修正。プラグイン管理機能の追加。入力補完機能の向上。デザインの改善。
0.8.2 2017/09/18 バグ修正。変数入力欄に入力補完機能を実装。
0.8.1 2017/09/17 細かい修正と英語版に対応。
0.8.0 2017/09/16 公開。

【備考】
当プラグインを利用したことによるいかなる損害に対しても、制作者は一切の責任を負わないこととします。

【利用規約】
ソースコードの著作権者が自分であると主張しない限り、
作者に無断で改変、再配布が可能です。
利用形態(商用、18禁利用等)についても制限はありません。
自由に使用してください。
パラメータ
param ----基本的な設定----
desc
default


param コマンドパレット起動キー
type select
option F1
value F1
option F2
value F2
option F3
value F3
option F4
value F4
option F5
value F5
option F6
value F6
option F7
value F7
option F8
value F8
option F9
value F9
option F10
value F10
option F11
value F11
option F12
value F12
option Tab
value Tab
option Ctrl
value Ctrl
option Alt
value Alt
desc コマンドパレットを起動するキーを設定します。
default Tab

param ゲーム起動時に管理ウィンドウを表示
type boolean
desc ゲーム起動時に管理ウィンドウを表示させるかどうかを設定します。
default false

param プラグインリストをソートする
type boolean
desc プラグインリストをON/OFFでソートします。
default true


ライセンス表記
当プラグインを利用したことによるいかなる損害に対しても、制作者は一切の責任を負わないこととします。
ソースコードの著作権者が自分であると主張しない限り、
作者に無断で改変、再配布が可能です。
利用形態(商用、18禁利用等)についても制限はありません。
Copyright (c) 2017 Tsumio
This software is released under the MIT License.
http://opensource.org/licenses/mit-license.php

紹介ページ https://github.com/Tsumio/rmmv-plugins/blob/master/plugins/DebugToolEx.js