ページ 11

【解決済み】蔦森くいな様の「トリガー拡張 - TriggerExtension.js」について

Posted: 2021年2月16日(火) 00:10
by ドラムカン
いつもお世話になります。

蔦森くいな様の「トリガー拡張プラグイン」について
フィールドマップ(縦横256)に20コほど当プラグインの機能を使用したイベントがあり、
内容は全て同じで、「イベントに接触: イベントが接触:」の2つがそれぞれ設定されています。

このプラグインを導入してから、
フィールドマップがとてもカクカクになったので、
プラグインをOFFにしたところ、カクつきが改善されました。

イベントの設定方法が悪いのか、あるいは
プラグイン側のイベントの更新にかかわる処理で、
パフォーマンスに悪影響を与えている部分があるのではないかと
こちらにご報告させていただきました。

追記:
トリガーイベントの有無に関係なく、
大量にイベントが配置されているマップ(私の例では381コ:内、自動実行や並列処理なし)で
このプラグインを導入している時のみ、カクカクになることが分かりました。

元々、1マップに大量のイベントを配置するとカクカクになるのはMVの仕様なのですが
このプラグインを導入しなければカクつかず、FPSも安定するため
やはりこのプラグインの構造に問題があると断定せざるを得ない結果となりました。

ちなみに、プラグインの競合問題も調べましたが、すべてのプラグインを停止して
このプラグインのみを実行しても再現されました。

プラグインの内容を調べてみると
以下の処理でマップイベントの更新をしており、
試しに削除してみると、処理が劇的に改善されました。

コード: 全て選択

    var pd_TE_Game_Event_update = Game_Event.prototype.update;
    Game_Event.prototype.update = function() {
        
        pd_TE_Game_Event_update.call(this);
        
        if (!$gameMap.isEventRunning()) {
            if (this.pd_TE_CheckTouchEvent()) {
                this.pd_TE_SetSwitchIndex(this.__pd_TE.touchSwitchIndex);
                if(this.__pd_TE.touchTriggerType === 1 || this.__pd_TE.touchTriggerType === 3){
                    this.start('pd_TE_enable');
                    this.unlock();
                }
            }
        }
    };
削除したことによる不具合は今のところ発生しておりませんが
できれば削除せずに改善されることを切に祈っております。

Re: 蔦森くいな様の「トリガー拡張 - TriggerExtension.js」についての不具合

Posted: 2021年2月16日(火) 15:14
by jp_asty
こんにちは。

コード: 全て選択

    var pd_TE_Game_Event_update = Game_Event.prototype.update;
    Game_Event.prototype.update = function() {
       
        pd_TE_Game_Event_update.call(this);
       
        if (!$gameMap.isEventRunning()) {
            if (this.pd_TE_CheckTouchEvent()) {
                this.pd_TE_SetSwitchIndex(this.__pd_TE.touchSwitchIndex);
                if(this.__pd_TE.touchTriggerType === 1 || this.__pd_TE.touchTriggerType === 3){
                    this.start('pd_TE_enable');
                    this.unlock();
                }
            }
        }
    };
この該当コード部分は、基本的に「タッチ」と「タップ」の機能のためのものであり、この機能を利用しない限りはコメントアウトして無効化してしまっても、問題ないように思います。
削除したことによる不具合は今のところ発生しておりませんが
できれば削除せずに改善されることを切に祈っております。
一番良いのは作者の方に該当部分を検討いただくことだと思いますが、個人的にも気になったということもあり、
パフォーマンスの改善バージョンを作成してみました。
一応イベントを最大の1000個置いたマップでテストしましたが、自分の環境では60fps安定でした。

パッチプラグイン化も検討しましたが、書き換える箇所の都合により難しそうであったため、
TriggerExtension.js自体を直接書き換えることで対応させて頂きました。

また、細かいことですが今回の件は不具合というよりはパフォーマンスの問題に該当すると思われます。
(イベント数が少ないときは問題なく、数が多くなることで問題になるというケースであるため)

以上、ご検討いただけますと幸いです。
テスト.png
TriggerExtension.js
(27.77 KiB) ダウンロード数: 30 回

Re: 蔦森くいな様の「トリガー拡張 - TriggerExtension.js」について

Posted: 2021年2月16日(火) 23:52
by ドラムカン
jp_asty 様

なんとこちらにもご回答くださっていたとは……
何から何まで感謝申し上げます。

「タッチ」と「タップ」の機能に付随する処理でしたか。
それでキーボード操作の場合は問題が発生しなかったのですね。
大変スッキリ致しました。

それから、
パフォーマンスの改善バージョンまで拵えてくださり、
本当にありがとうございます。
早速、導入させていただきましたところ、
以前よりも明らかに軽く、とても快適になりました。

1000イベント配置しての検証も大変参考になります。
400イベントでももう限界を感じていたところ、今後の希望が湧きました。

「不具合」と表記していた点、訂正いたしました。
パフォーマンスに影響を与える問題を「不具合」とは捉えない旨、理解いたしました。

この度は、様々大変お世話になりました。
今後ともどうかよろしくお願いいたします。