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

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

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

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


【新着・注目タイトル】


シナリオ制作


設定作り


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





創作意欲を掻き立てる本


自己管理術


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

2018年01月07日

メニューとアイテム画面の連続切り替えで操作不能になる

ツクールMVの現最新バージョン1.5.1で発生するトラブル情報です。

参考:
プレイ時にある操作でフリーズすることについて(ツクマテ)
https://tm.lucky-duet.com/viewtopic.php?f=23&t=5284

謝辞:
しぐれん様、ツミオ様、剣崎宗二様、あかみどり様、にいやん様
ツクマテ様


■事象
アイテム画面で操作不能になる
20180107_1.jpg

再現動画
https://www.youtube.com/watch?v=ni2SWrJcIZs


■再現方法
・2018/1/7現在、ツクールMVの全コアスクリプト(〜V1.5.1)で再現可能
・メニューからアイテム選択画面へ高速で切り替えると発生
・コントローラで決定ボタン、キーボードでキャンセルボタンを繰り返すと再現させやすい
 (私も同じ操作で11回目、20回目のボタン操作で再現することを確認)
・操作不能になるのはアイテム画面を描画しているタイミング


■原因
メニュー画面とアイテム画面の連続した画面遷移の際に、内部処理で不整合が生じていることが原因のようです。
・正常であればWindow_ItemCategoryでcansel判定(ダブルタップorキャンセルボタン押下)が発生するとSceneManager.popに画面遷移する

//1238行目
Scene_Item.prototype.createCategoryWindow = function() {
this._categoryWindow = new Window_ItemCategory();
this._categoryWindow.setHelpWindow(this._helpWindow);
this._categoryWindow.y = this._helpWindow.height;
this._categoryWindow.setHandler('ok', this.onCategoryOk.bind(this));
this._categoryWindow.setHandler('cancel', this.popScene.bind(this));//★cansel判定時にthis.popSceneへハンドルを渡す
this.addWindow(this._categoryWindow);
};
この処理はアイテムのほか、スキル、装備、ステータス、オプションでも行われており、他の画面遷移でも発生する恐れがあります。

トラブル再現時は連続した画面遷移操作によりビジー状態と判定され、this.popSceneへハンドルを渡す操作が破棄されたため操作不能に陥っているとのことです。(ツクマテ剣崎 宗二氏のコメントを参考に推測)

//rpg_managers.js 1996行目
SceneManager.changeScene = function() {
if (this.isSceneChanging() && !this.isCurrentSceneBusy()) {
if (this._scene) {
this._scene.terminate();
this._scene.detachReservation();
this._previousClass = this._scene.constructor;
}


■対処
2018/1/7現在、安全性が高いと推測される対処は、次の手順で処理を追加することだと思います。
私の環境では200回再現動作(アイテムとメニューの往復)を行いましたが回避しております。

別の問題を引き起こす可能性もありますので、様子見も含めてご判断ください。
特に作品公開が直前に控えている場合、安易に手を加えることはオススメできません。

1.以下の場所から「rpg_scenes.js」をテキストエディタで開く

 場所:
 プロジェクト名\js\rpg_scenes.js
 ※jsファイルは右クリック→プログラムから開く→メモ帳(または「既定のプログラムの選択」からテキストエディタを選ぶ)ことで開くことができます

2.Ctrl+Fキーで「Scene_Item.prototype.create」を検索し、this.addWindow(this._categoryWindow);の次の行にthis._categoryWindow.activate();を追記する


Scene_Item.prototype.createCategoryWindow = function() {
this._categoryWindow = new Window_ItemCategory();
this._categoryWindow.setHelpWindow(this._helpWindow);
this._categoryWindow.y = this._helpWindow.height;
this._categoryWindow.setHandler('ok', this.onCategoryOk.bind(this));
this._categoryWindow.setHandler('cancel', this.popScene.bind(this));
this.addWindow(this._categoryWindow);
this._categoryWindow.activate();//★この行を追記
};


MVバージョン1.5.1(rpg_scenes.jsのバージョンは1.5.0)の場合は1245行目に追記
20180107_2.jpg
※画像クリックで拡大


■補足1)画面遷移の内部処理について
次の記事に画面の遷移の内部処理が記載されていました。

 RPGツクールMVのランタイムコードを読む - Sceneを理解する
 http://gan.hatenablog.jp/entry/2016/01/07/225635

【画面遷移の際に行われる処理】
@initialized:初期化完了
Aready:新画面のリソースの読み込みが完了
Bstart_transition:今の画面から新画面の切り替え処理を開始
Crunning:切り替え処理を実行中
Dstop_transition:今の画面から新画面に切り替え中
Estopped 新画面に置き換わり、前の画面情報を破棄する準備が整う
Fterminated:前の画面情報の破棄が完了

rpg_managers.js 1996行目で実行されているSceneManager.changeSceneの処理はthis.isSceneChanging()がfalseとみなされた場合はthis.isCurrentSceneBusy()が返されるという意味。

連続した画面遷移操作でthis.isSceneChanging()がfalseと判定されたためにthis.isCurrentSceneBusy()が実行されEの状態で停止したというのが今回の事象なのかなと思います。

SceneManager.changeScene = function() {
if (this.isSceneChanging() && !this.isCurrentSceneBusy()) { //★ここでthis.isCurrentSceneBusy()の方に処理が返されたために不整合が生じた?
if (this._scene) {
this._scene.terminate();
this._scene.detachReservation();
this._previousClass = this._scene.constructor;
}


■補足2)アイテム以外の対処
構造上はアイテム以外でも同じ事象が発生するため、次の箇所でも同対処が有効かもしれません。
(ただしアイテム以外は画面遷移の変化が少ないためなのか、私の環境では再現しませんでした)
分かりましたら追記します。

Scene_Item.prototype.createCategoryWindow
1244行目 this.createActorWindow();の下

Scene_Skill.prototype.createSkillTypeWindow
1333行目 this.addWindow(this._skillTypeWindow);の下

Scene_Equip.prototype.createCommandWindow
1443行目 this.addWindow(this._commandWindow);の下

Scene_Status.prototype.create
1554行目 this.addWindow(this._statusWindow);の下

Scene_Options.prototype.createOptionsWindow
1601行目 this.addWindow(this._optionsWindow);の下

Scene_File.prototype.createListWindow
1654行目 this.addWindow(this._listWindow);の下

2017年10月27日

RPGアツマール投稿時に「アップロードキーが正しくありません」と表示され、失敗する

■RPGアツマール投稿時に「アップロードキーが正しくありません」と表示され、失敗する

20171027_error.jpg
発生タイミング:作品投稿中

切り分け:
・新規投稿、更新どちらでも再現を確認
・コアスクリプト1.5.0
・何度かリトライすると成功する場合あり

対処:
・RPGアツマール側で解決

運営さんによると、ファイルサイズや回線状況によりタイムアウトが発生していたとのことでした。
RPGアツマール側でタイムアウトの閾値を下げてくださったのかもしれません。
2017/10/27以降も同エラーが発生する場合は、回線状況を確認して時間がかかるようになっていないか見直してみると良いと思います。




RPGアツマール運営さん
https://twitter.com/nico_indiesgame

運営さんへ朝に質問したところ、夕方には原因究明と解決のご連絡を頂きました。
迅速なご対応ありがとうございました。

2017年09月03日

ツクールMV作品とChromeブラウザで発生するcannot read property 'update' of undefinedについて

◆ツクールMV作品とChromeブラウザの組み合わせ発生するcannot read property 'update' of undefinedについて
公開されてから一ヶ月以上経ちますが、動向が気になりましたので掲載します。

参考情報:ver.60で戦闘中にフリーズ(ツクマテさん投稿)
http://tm.lucky-duet.com/viewtopic.php?t=4292

内容はブラウザプレイ中に特定エラーが発生するというもの。
厄介なのは多くのツクールMV作品で推奨されているChromeで発生しています。

■作者さん向け詳細情報
現象:
ブラウザ版かつGoogle Chrome(バージョン60系)でプレイすると次のエラーが発生

エラーメッセージ:
TypeError
cannot read property 'update' of undefined
0903_1error.jpg

暫定対処:
トリアコンタンさん制作の「BugFixCrashForChrome60.js」適用
https://raw.githubusercontent.com/triacontane/RPGMakerMV/master/BugFixCrashForChrome60.js

有識者によると、正式な対処はいずれChrome側で行われるのではないかと言われています。

■プレイヤーさんへお願い
「TypeError cannot read property 'update' of undefined」が発生した場合、以下をあわせて作者さんにお伝えすることで、改善の手助けになるかもしれません。

・作品のバージョン
・使用ブラウザ(Chromeか)
・Chromeの場合のバージョン(バージョン60系か)

バージョン確認方法
20170903-1.jpg

作品の問題なのか、環境の問題なのかがわかるだけで、作者は非常に助かります。
よろしければご検討ください。

また作品によっては、修正が容易ではない場合もあります。
あわせてローカル版(exe版)や別ブラウザ「Firefox」でのプレイもご検討ください。クロスセーブやサーバーセーブ機能がある場合はこの方が早いかもしれません。

謝辞:
トリアコンタンさん(プラグイン作成)
ツクマテさん(運営:弓猫さん)
メガーヌさん(問題提起)

【2017/9/16追記】
Google Chromeバージョン61系では改善されていることが分かりました。

2017年03月11日

アツマール版コアスクリプトの競合情報

◆アツマール版コアスクリプトの競合情報

webで確認できた情報をまとめてみました。
アツマール版で追加/更新された機能に関わるプラグインが影響を受けやすい傾向があります。
例)2017/3/11現在ではフォント、動作軽量化系、描画系の一部に影響が見られる

競合するが対策が確認できているもの
競合するが対策が確認できていないもの



■競合するが対策が確認できているもの
□FontLoad.js
作者:トリアコンタン様
対策:バージョン1.1.0で対応
https://raw.githubusercontent.com/triacontane/RPGMakerMV/master/FontLoad.js

□PerformanceRefine.js
作者:トリアコンタン様
対策:バージョン1.2.1で対応
https://raw.githubusercontent.com/triacontane/RPGMakerMV/master/PerformanceRefine.js

□ThroughFailedToLoad.js
作者:トリアコンタン様
対策:バージョン2.1.0で対応
https://raw.githubusercontent.com/triacontane/RPGMakerMV/master/ThroughFailedToLoad.js

□Saba_Performance.js
作者:さば缶様
対策:プラグインパラメータ recycleCanvas の値を「0」に指定
http://petitrare.com/blog/%E3%83%84%E3%82%AF%E3%83%BC%E3%83%ABmv%E3%81%AE%E3%83%91%E3%83%95%E3%82%A9%E3%83%BC%E3%83%9E%E3%83%B3%E3%82%B9%E6%94%B9%E5%96%84%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3/



■競合するが対策が確認できていないもの
・Moghunter様のプラグイン系

2017年02月01日

プラグイン導入後のトラブル切り分け方法

プラグインの問題解決に役立つ記事をご紹介します。
執筆されたのは、多くのプラグインを手がけられているトリアコンタンさん。

プラグイン利用者に向けた問題の切り分け方法
http://qiita.com/triacontane/items/2e227e5b5ce9503a2c30

記事をご覧頂くと、トラブル時に何をすれば良いのか分かるようになっています。
トラブル解決も早くなりますし、プラグイン作者さんに連絡をとる際に、有益な情報を伝えやすくなりますよ。

また作品で使用しているバージョンの新規プロジェクトを作成しておくこともオススメします。
(2017/2/1現在ならバージョン1.3.4ですね)

もしハードウェア(機械、パソコン)の不調も含めた話なら、次の記事も参考になるかもしれません。

これで早く解決!問題解決の方法と考え方
http://fanblogs.jp/tabirpglab/archive/254/0

今は役に立たなくても、いつか備えになるかもしれません。
ご参考になれば幸いです。