プレイ時にある操作でフリーズすることについて

アバター
にいやん
記事: 164
登録日時: 2016年7月02日(土) 00:38
お住まい: 地獄4丁目西のゴミ置き場
連絡を取る:

プレイ時にある操作でフリーズすることについて

投稿記事by にいやん » 2018年1月06日(土) 02:11

ゲームをプレイ時、メニュー画面からアイテムのカテゴリを選択した後にフレームずらしのような感じでキャンセルを押してメニュー画面に戻るとツクールMVがフリーズしてしまう時があるのですが皆さんの環境でも同じように起こったりはしないのでしょうか?
私はMVが発売してからすぐに購入してこのバグ?を見つけたのですが(2015年12月くらい)、実際にツクール公式に発生状況をメールで送ってその結果、検証を行いますとメールが返って来たのですがそれから今に至るまで改善された形跡は無いです。
公式に聞けば良いかもしれないですが、既に聞いて対策が施されていないところを考えるともう一度聞く気になれないのが正直な気持ちです。それに私のパソコンの相性もあるので他の方ではフリーズしないことも考えられます。なのでツクールを始めたばかりの方でも良いので現状での報告をお願いしたいです。

■バージョン
ツクールMV1.5.1 コアスクリプト1.5.1

■発生状況
メニュー画面からカテゴリ欄のアイテムを決定キーで選んだ後に1フレームずらす感じでキャンセルを押す動作を繰り返す。
メニュー画面からカテゴリ欄のスキルを決定キーで選んだ後に1フレームずらす感じでキャンセルを押す動作を繰り返す。

ニコニコのアツマールで他製作者様のゲームでも確認してみましたが同じようにフリーズするので出来ればたくさんの方にご報告頂ければと思っています。私の環境でだけ発生するようでしたら安心出来ますので。

追記:YOUTUBEにフリーズの発生した動画があります。→https://www.youtube.com/watch?v=ni2SWrJcIZs
最後に編集したユーザー にいやん on 2018年1月06日(土) 03:25 [ 編集 1 回目 ]

アバター
しぐれん
記事: 513
登録日時: 2017年3月28日(火) 22:22
連絡を取る:

Re: プレイ時にある操作でフリーズすることについて

投稿記事by しぐれん » 2018年1月06日(土) 02:44

私の手元では確認できませんでした。

フリーズが発生した場合にF8でコンソールは開けますか?
有償でプラグイン作成リクエストに対応しています。
ご興味のある方は、こちらのリンクからどうぞ。
ツクールMV・プラグイン作成依頼受付
アバター
にいやん
記事: 164
登録日時: 2016年7月02日(土) 00:38
お住まい: 地獄4丁目西のゴミ置き場
連絡を取る:

Re: プレイ時にある操作でフリーズすることについて

投稿記事by にいやん » 2018年1月06日(土) 02:55

しぐれんさん
スタックトレースには何も表示されていないです。
プロジェクトは新規で作ったもので確認しています。
動画を撮れる環境はあるのでそれを見てもらったほうが良いと思うので少しお待ち下さい。
アバター
にいやん
記事: 164
登録日時: 2016年7月02日(土) 00:38
お住まい: 地獄4丁目西のゴミ置き場
連絡を取る:

Re: プレイ時にある操作でフリーズすることについて

投稿記事by にいやん » 2018年1月06日(土) 03:26

YOUTUBEに動画を投稿したのでご確認をお願いします。
一番上の追記にリンクを貼っています。
アバター
あかみどり
記事: 50
登録日時: 2017年7月08日(土) 12:07

Re: プレイ時にある操作でフリーズすることについて

投稿記事by あかみどり » 2018年1月06日(土) 06:52

おはよ~ございます

メニューからアイテム選択画面へ何回か連続で高速で切り替える事で再現できました
コントローラの決定ボタンとキーボードのキャンセルボタンで押すと簡単に出来ますね~(連打しやすい)
アイテム画面を開きなおすたびにFPSが下がっていってフリーズしました
メニュー開閉でもFPSガクッと落ち続けるけどこっちではフリーズしないのね……
アバター
ツミオ
記事: 50
登録日時: 2017年4月02日(日) 13:46
連絡を取る:

Re: プレイ時にある操作でフリーズすることについて

投稿記事by ツミオ » 2018年1月06日(土) 10:09

こんにちは。

こちらの環境でも再現しました。
マウス操作・キーボード操作のどちらでも発生するようです。

追記:
少し調査しました。
結論から言うと、何らかのタイミングで以下のウィンドウがdeactivateされているのが原因だと思われます。

・Window_ItemCategory
・Window_SkillType

フリーズ後、僕の制作したデバッグプラグインで上記のコンストラクタ関数から生成されたインスタンスを無理やりactivateさせたところ、フリーズは解除されました。
これらのウィンドウはアイテム画面もしくはスキル画面で使用されています。

また、以下のシーンでのフリーズは確認できませんでした(試行回数が少ないのでフリーズするかも)。
・Scene_ItemBaseを継承した空のシーン
・オプション画面
・セーブ画面

根本的な直し方は不明ですが、とりあえずここまで調査できたので報告しておきます。
最後に編集したユーザー ツミオ on 2018年1月06日(土) 11:01 [ 編集 3 回目 ]
アバター
しぐれん
記事: 513
登録日時: 2017年3月28日(火) 22:22
連絡を取る:

Re: プレイ時にある操作でフリーズすることについて

投稿記事by しぐれん » 2018年1月06日(土) 10:54

再現しつつ原因を特定しました。
_scene._categoryWindow.activeがfalseになっており、何らかの要因でフォーカスを失ってます。
SceneManager._scene._categoryWindow.active=trueとコンソールで入力することによってフリーズから脱出できました。
対処は困難でしょうが、色々さがしてみます。
有償でプラグイン作成リクエストに対応しています。
ご興味のある方は、こちらのリンクからどうぞ。
ツクールMV・プラグイン作成依頼受付
アバター
しぐれん
記事: 513
登録日時: 2017年3月28日(火) 22:22
連絡を取る:

Re: プレイ時にある操作でフリーズすることについて

投稿記事by しぐれん » 2018年1月06日(土) 12:24

修正ができました。
ただし、かなり付け焼刃の対処ですので、絶対にバグが起きないという保証はできません。
rpg_scene.jsに以下のような修正をしてください。

コード: 全て選択

Scene_Item.prototype.create = function() {
    Scene_ItemBase.prototype.create.call(this);
    this.createHelpWindow();
    this.createCategoryWindow();
    this.createItemWindow();
    this.createActorWindow();
    this._categoryWindow.activate();
};


これでもバグが起きたら、改めて対応します。
有償でプラグイン作成リクエストに対応しています。
ご興味のある方は、こちらのリンクからどうぞ。
ツクールMV・プラグイン作成依頼受付
アバター
ツミオ
記事: 50
登録日時: 2017年4月02日(日) 13:46
連絡を取る:

Re: プレイ時にある操作でフリーズすることについて

投稿記事by ツミオ » 2018年1月06日(土) 13:52

こんにちは。

こちらでも修正を試みました。

フリーズが発生する可能性のあるシーンに対策をほどこしました。
具体的には以下の通りです。
・アイテムシーン
・スキルシーン
・装備シーン
・デバッグシーン

ただ安全面で言えば、しぐれんさんが提示しているコードがよいと思います。
つまり、僕のプラグインは別の不具合を誘発するかもしれません(しないかもしれません)。

それでもよければ、以下のURLからDLしてください。
https://raw.githubusercontent.com/Tsumio/rmmv-plugins/master/plugins/BugFixFreezeOfSomeScenes.js

公式が正式に対応してくれるまでの暫定的な処置程度のコードですので、先にも書いた通り不具合があったらすみません :geek:
アバター
剣崎 宗二
記事: 142
登録日時: 2016年11月12日(土) 20:36
連絡を取る:

Re: プレイ時にある操作でフリーズすることについて

投稿記事by 剣崎 宗二 » 2018年1月06日(土) 14:02

あかみどり さんが書きました:おはよ~ございます

メニューからアイテム選択画面へ何回か連続で高速で切り替える事で再現できました
コントローラの決定ボタンとキーボードのキャンセルボタンで押すと簡単に出来ますね~(連打しやすい)
アイテム画面を開きなおすたびにFPSが下がっていってフリーズしました
メニュー開閉でもFPSガクッと落ち続けるけどこっちではフリーズしないのね……


こちらについては当方の方で再現できましたので、調査いたしました。
結論としてはScene系の遷移速度の問題です。

アイテム画面に於いてキャンセルキーを押すと、processCancelによりWindow_ItemCategoryがdeactivateされ、更にSceneManager.popが呼び出されてScene_Menuに遷移する手はずとなっております。
ですが、この際、Scene_Menu->Scene_Itemに遷移するSceneManager.changeSceneが終了していないと(画像のロードが終わっていなくともボタン受付は開始しております)、

コード: 全て選択

SceneManager.changeScene = function() {
    if (this.isSceneChanging() && !this.isCurrentSceneBusy()) {

の部分によりpopScene(実質的にはScene_Item→Scene_Menu)の要求が拒否され、結果として
「キャンセルを押してwindowがdeactivateされたが画面だけ変わらなかった」と言うオチが発生したのがこの問題の正体ではないかと思います。

“MV:質問” へ戻る