検索
現代SFRPG「重力ルーペ/探求リバーブ」

ドラマティックRPG「バンドワゴン」

ハートフルRPG「地図の時間」

新作「日向と香水」
カテゴリ
リンク集
【スポンサードリンク】


【創作全般】






シナリオ制作


設定作り


最近読んでよかった本五選





創作意欲を掻き立てる本


自己管理術


クリエイター向けノウハウ

2018年01月08日

イベントデバッグプラグイン、Developer Toolsを活用したエラー調査

◆イベントデバッグプラグイン、Developer Toolsを活用したエラー調査
エラー発生時に問題解決を図るための手法について、備忘録かねて記事にしました。

■準備
 次のプラグインを導入する

・イベントデバッグプラグイン
 制作者:トリアコンタン様
 説明/ダウンロード先:
 https://triacontane.blogspot.jp/2017/01/blog-post.html

・デバッグ機能詰め合わせ
 制作者:かめお (Kamesoft)様
 説明/ダウンロード先:
 http://ytomy.sakura.ne.jp/tkool/rpgtech/tech_mv/develop/debug_util.html

■プラグインを活用した実践

ここから目的に応じて読み分けてください。
基礎知識として@Aを知っておけばデバッグ効率が上がります。
エラー時の対応力をつけたい方はBまたはCまで読み進めください。

1.テストプレイモードで起動し、F7キーを押下
2.イベントの実行を一時停止して、一つずつイベントを実行(ステップ実行)
20180108_12.jpg
※画像をクリックすると別ウィンドウで表示

 画像の場合、次の@〜Dが実行される

 @SEの演奏
 A移動ルートの設定
 B移動ルートの設定
 CSEの演奏
 D場所移動

F11キー/Enter/左クリック:イベントを1つずつ進める。コモンイベントが含まれる場合も同じ
F10キー:イベントを1つずつ進める。コモンイベントが含まれる場合は一括実行する
F6キー:ステップ実行を終了して通常の処理を行う
F9キー:マップ画面にいる場合、デバッグ画面を開く(スイッチ、変数を操作できる)

デバッグ機能詰め合わせプラグインでF9キーを拡張しているため、アイテムやアクターなど各種条件を変えながら試すことができる
20180108_16.jpg


3.エラーが発生するとDeveloper Toolsに赤字で表示される
20180108_13.jpg

 Dでは行き先のマップを指定後に削除したため、行き場がなくエラーが発生

 GET file:///<ゲームファイルの場所>/data/Map003.json

 [メッセージから読み取れる内容]
 ・Map003.jsonが見つからないためのエラー発生
 ・4回とも同原因によるエラー(4回発生しているのはリトライを繰り返した結果と推測)

 この時点で次の対処が考えられる
 ・Map003.json(MAPID3)が存在するか確認
 ・イベントの移動先をMAPID3以外に指定する

 ※ここではより細かく調べるため4に進む(普通は必要ない)

4.エラーの折りたたみ箇所を展開すると詳細なプロセスが表示される
20180108_14.jpg


net::ERR_FILE_NOT_FOUND
DataManager.loadDataFile  //a
DataManager.loadMapData  //b
SceneManager.changeScene  //c
SceneManager.changeScene  //c
SceneManager.updateMain  //d
SceneManager.update  //e

net::ERR_FILE_NOT_FOUND
DataManager.loadDataFile  //a

net::ERR_FILE_NOT_FOUND
DataManager.loadDataFile  //a

net::ERR_FILE_NOT_FOUND
DataManager.loadDataFile  //a

5.4のa行とe行が何を指しているか名称から推測する

DataManager.loadDataFile  //a データのロード
DataManager.loadMapData  //b MAPデータのロード
SceneManager.changeScene  //c 画面切り替え処理
SceneManager.changeScene  //c 画面切り替え処理
SceneManager.updateMain  //d 画面切り替えの更新処理
SceneManager.update  //e 画面切り替えの更新処理

より詳細な部分はコアスクリプトを参照することで調べることができる
参照先は右側に「コアスクリプト名:コアスクリプトの行」として表示されている

aの場合はコアスクリプトrpg_managers.jsの93行目の処理を表す


DataManager.loadDataFile = function(name, src) {
var xhr = new XMLHttpRequest();
var url = 'data/' + src;
xhr.open('GET', url);
xhr.overrideMimeType('application/json');
xhr.onload = function() {
if (xhr.status < 400) {
window[name] = JSON.parse(xhr.responseText);
DataManager.onLoad(window[name]);
}
};
xhr.onerror = this._mapLoader || function() {
DataManager._errorUrl = DataManager._errorUrl || url;
};
window[name] = null;
xhr.send();//★93行目
};


eの場合はコアスクリプトrpg_managers.jsの1907行目の処理を表す


SceneManager.update = function() {
try {
this.tickStart();
if (Utils.isMobileSafari()) {
this.updateInputData();
}
this.updateManagers();//★1907行目
this.updateMain();
this.tickEnd();
} catch (e) {
this.catchException(e);
}
};

 [分かること]
 ・4回とも同じエラー(4回中3回はDataManager.loadDataFileが終点)
 ・1回目の処理だけSceneManager.updateまで進んでいるのはリソース読み込みと平行してMAP切り替えの描画処理を行っているから
(しかし移動先のMAPが見つからないので画面が暗転した状態で停止)

リンクをクリックすることで該当箇所を表示することもできる
Developer Toolsの機能なので、Google Chromeでブラウザプレイ中ならF12キー押下、テストプレイ中ならF8キー押下で呼び出し可能


エラー発生時はエラーメッセージを読むこと、読んでわからない場合は再現方法を確立させ然るべき相手に相談することが基本だと思います。
再現性が低いトラブルの場合や自己解決する力を養いたい時(解決速度を上げたいとき)はこのような手法で調べることも視野に入れてみてはいかがでしょうか。

以上、備忘録かねた内容が制作のお役に立てれば幸いです。

◆補足
スクリプトエラーはこのように表示してくれました。

20180108_21.jpg
ファイル指定で「.png」まで含めたことが原因
この記事へのコメント
コメントを書く

お名前:

メールアドレス:


ホームページアドレス:

コメント:

※ブログオーナーが承認したコメントのみ表示されます。

この記事へのトラックバックURL
http://fanblogs.jp/tb/7173405
※ブログオーナーが承認したトラックバックのみ表示されます。

この記事へのトラックバック