アフィリエイト広告を利用しています
検索
言葉を集めて世界を旅するRPG「地図の時間〜言葉集めの冒険譚〜」
timeofmapworks_logo_2020.png
ハートフルRPG「地図の時間」

地図の時間スピンオフRPG「影泥棒と魔法の手記」

リソース管理ダンジョンRPG「琥珀の道具士」

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

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

ビジュアルノベル「日向と香水」

ノベル×ADV「ストーリーテラー」 title1_2.png
カテゴリ
プロフィール/制作環境(3)
制作記(674)
ニュース(ツクールMV)(222)
技術情報(ツクールMV)(203)
JavaScript/スクリプト(ツクールMV)(9)
プラグイン情報(ツクールMV)(11)
素材情報(ツクールMV)(15)
アップデート情報(ツクールMV)(45)
トラブル&解決情報(ツクールMV)(18)
ツクール製作品(ツクールMV)(42)
関連情報(ツクールフェス)(2)
投稿イベント情報(ツクールMV)(4)
関連情報(ラノゲツクールMV)(9)
Benchmark MV(個人作品:試作)(1)
manurpg(個人作品:試作)(2)
ブックモービル(個人作品)(10)
重力ルーペ(個人作品)(11)
そして魔女に会う(個人作品)(7)
バンドワゴン(個人作品)(1)
地図の時間(個人作品)(14)
日向と香水(個人作品)(3)
ストーリーテラー(個人作品)(1)
嘘つきのノブレスオブリージュ(2)
お役立ちツール/素材サイト(創作全般)(12)
創作アイディア(創作全般)(7)
保存用コラム(創作全般)(10)
コラム(144)
オススメ作品(8)
当ブログへのお問い合わせ(contact me)(2)
琥珀の道具士(3)
最果てのギルド(1)
読書メモ(1)
Steam展開ノウハウ(21)
RPGツクールMZ(3)
地図の時間〜名前探しの物語(1)
プラグイン情報(ツクールMZ)(1)
技術情報(ツクールMZ)(13)
国内展開ノウハウ(1)
素材情報(ツクールMZ)(4)
AI(8)
RPG Maker Unite(2)
DAW(1)
翻訳(1)
リンク集

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
https://fanblogs.jp/tb/7173405
※ブログオーナーが承認したトラックバックのみ表示されます。

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