「BootOpeningDemo」と「UTA_CommonSave」の競合について

アバター
進撃のエレン
記事: 78
登録日時: 2017年5月13日(土) 21:01

「BootOpeningDemo」と「UTA_CommonSave」の競合について

投稿記事by 進撃のエレン » 2019年7月10日(水) 15:38

いつもありがとうございます。

今回解決したい内容は件名にも記載しております通り、

スモールオメガωシロガネ様の
「BootOpeningDemo」と
http://smallomega.com/main.html

うたかたの夢跡様の
「UTA_CommonSave」
https://www.utakata-no-yume.net/gallery ... /cmn_save/
の競合についてです。

最初に「UTA_CommonSave」を導入して、様々なスイッチ&変数を共有セーブデータに保存しておりました。

後に「BootOpeningDemo」を導入して、オープニングデモを作成していた所、
共有セーブデータが全てクリアされてしまう現象が発生致しました。

コード: 全て選択

    // 最初のシーンに遷移している部分を書き換え
    var _Scene_Boot_start = Scene_Boot.prototype.start;
    Scene_Boot.prototype.start = function()
    {
        if (DataManager.isBattleTest() || DataManager.isEventTest())
        {
            // デバッグ機能だけは通常の動作
            _Scene_Boot_start.call(this);
        }
        else
        {
            // 開始フラグリセット
            openingDemoEnd = false;
            // 開始初期化処理
            Scene_Base.prototype.start.call(this);
            this.updateDocumentTitle();
            SoundManager.preloadImportantSounds();
            DataManager.createGameObjects();
            DataManager.selectSavefileForNewGame();
            Graphics.frameCount = 0;
            // エラーチェック
            if (firstMapId == 0) {
                throw new Error("(BootOpeningDemo) parameter firstMapId is invalid");
            }
            this.checkPlayerLocation();
            // マップ呼び出し
            $gamePlayer.reserveTransfer(firstMapId,
                firstStartX, firstStartY);
            SceneManager.goto(Scene_Map);
        }
    };


恐らくこの辺りが関係しているのかなと思うのですが、
どの様にしたら良いのか分かりません。

お力を貸して頂けないでしょうか?

宜しくお願い致します。

アバター
剣崎 宗二
記事: 678
登録日時: 2016年11月12日(土) 20:36
連絡を取る:

Re: 「BootOpeningDemo」と「UTA_CommonSave」の競合について

投稿記事by 剣崎 宗二 » 2019年7月10日(水) 16:15

一応まずは確認。
・UTA_CommonSave側で「Auto on Gameover」「Is Auto」をOFFにしてみましたでしょうか。
・オープニングデモ中に、セーブ関係やCommonSaveプラグインコマンドを動かしておりませんでしょうか。
・「共有セーブデータが全てクリアされてしまう」と言うのはどうやって確認しましたでしょうか?(他のデータをロードしての確認、common.rpgsaveを開いてみた、etc)
----
-出先に居る場合回答が未テスト状態である事が多い為、テストは重々にお願いいたします。
-基本自分や友人の問題解決は自分で1からプラグインを書いているので、「こういうプラグインはありますか」に対しては助けになれません。ご了承ください。
アバター
進撃のエレン
記事: 78
登録日時: 2017年5月13日(土) 21:01

Re: 「BootOpeningDemo」と「UTA_CommonSave」の競合について

投稿記事by 進撃のエレン » 2019年7月10日(水) 16:26

ご連絡ありがとうございます。

>UTA_CommonSave側で「Auto on Gameover」「Is Auto」をOFFにしてみましたでしょうか。
こちら、両方ともOFFでもクリアされてしまいます。

>オープニングデモ中に、セーブ関係やCommonSaveコモンイベントを動かしておりませんでしょうか。
オープニングデモ中に、デモ後のタイトル画面で流す効果音をランダムで指定するために、
変数Xに乱数Yを入れて、その後「CommonSave」でセーブしております。

>「共有セーブデータが全てクリアされてしまう」と言うのはどうやって確認しましたでしょうか?(他のデータをロードしての確認、common.rpgsaveを開いてみた、etc)

共有セーブの対象に指定してあるスイッチXをONにしてファイル1にセーブ、
その語、再起動した後にファイル1をロードした後にスイッチXがONになるはずがOFFの状態だった。

以上です。
アバター
剣崎 宗二
記事: 678
登録日時: 2016年11月12日(土) 20:36
連絡を取る:

Re: 「BootOpeningDemo」と「UTA_CommonSave」の競合について

投稿記事by 剣崎 宗二 » 2019年7月10日(水) 16:58

私の理解が間違っていたなら申し訳ないのですが。

1.ゲームの中でCommonSave saveを行う(スイッチXをCommonSaveに入れた)
2.再起動し、OPデモ内にてCommonSave saveを行う(変数AをCommonSaveに入れた)
3.ゲーム内に入り、CommonSave loadを行う(スイッチXをロード)と、スイッチXの値がリセットされていた。

簡略化すると、以上が現象と言う事でよろしいでしょうか?
----
-出先に居る場合回答が未テスト状態である事が多い為、テストは重々にお願いいたします。
-基本自分や友人の問題解決は自分で1からプラグインを書いているので、「こういうプラグインはありますか」に対しては助けになれません。ご了承ください。
アバター
進撃のエレン
記事: 78
登録日時: 2017年5月13日(土) 21:01

Re: 「BootOpeningDemo」と「UTA_CommonSave」の競合について

投稿記事by 進撃のエレン » 2019年7月10日(水) 17:11

ありがとうございます。
2までは合っています。

通常、セーブされたどのセーブデータをロードしても、
共有セーブされたスイッチXはONになっているはずが、OFFになっているのです。

「BootOpeningDemo」プラグインをOFFにすると、共有セーブされたスイッチXはONのままです。

オープニングデモ内で共有セーブがクリアされた?と思っております。
アバター
剣崎 宗二
記事: 678
登録日時: 2016年11月12日(土) 20:36
連絡を取る:

Re: 「BootOpeningDemo」と「UTA_CommonSave」の競合について

投稿記事by 剣崎 宗二 » 2019年7月10日(水) 17:19

であれば、逆に「Is Auto」をtrueにしていれば直りませんか?

Is AutoがOffの状況ですと、OPデモが開始した際に全てのスイッチはOFFの状態になっております。
その状態でCommonSave saveを(OPデモ中に、変数をセーブするために)実行すれば、無論CommonSaveにセーブされたそのスイッチはOFFになると思われますが…
----
-出先に居る場合回答が未テスト状態である事が多い為、テストは重々にお願いいたします。
-基本自分や友人の問題解決は自分で1からプラグインを書いているので、「こういうプラグインはありますか」に対しては助けになれません。ご了承ください。
アバター
進撃のエレン
記事: 78
登録日時: 2017年5月13日(土) 21:01

Re: 「BootOpeningDemo」と「UTA_CommonSave」の競合について

投稿記事by 進撃のエレン » 2019年7月10日(水) 17:43

>であれば、逆に「Is Auto」をtrueにしていれば直りませんか?
元々trueの状態で今回の現象が起きてしまったのです。
説明足らずで申し訳ございません。
アバター
にゃたま
記事: 837
登録日時: 2016年1月13日(水) 23:53
お住まい: 床下の猫王国-すみませんが体調悪いのでサポートはお休みさせていただきます
連絡を取る:

Re: 「BootOpeningDemo」と「UTA_CommonSave」の競合について

投稿記事by にゃたま » 2019年7月10日(水) 21:50

進撃のエレン様

横から失礼します。

共有セーブデータがクリアされるとのことですが
セーブした時の共有セーブデータの中身はどうなっているのでしょうか?
通常は暗号化されていて見れないのでUTA_CommonSaveの
536行付近に以下のコードを挿入して"中身を見れる化"してみてはいかがでしょうか?
fs.writeFileSync(filePath + '.json', json);//ADD

fs.writeFileSync(filePath, data);の下の行あたりが良いと思います。
これはあくまでデバッグ用としての出力なのでデバッグが終わったらコメント化するか
削除することを忘れないでください。

クリアされた状態でセーブされれば中身は何も入ってないということになるかと思います。
もし入っているのでしたらセーブは正常にできているはずです。
そうやって少しずつどこでデータがクリアされているかを追ってみてはいかがでしょうか?

そしてセーブが正常にされていればCommonSave loadのプラグインコマンドを実行してみて
共有セーブデータがロードできているかの確認をされてみては??
アバター
剣崎 宗二
記事: 678
登録日時: 2016年11月12日(土) 20:36
連絡を取る:

Re: 「BootOpeningDemo」と「UTA_CommonSave」の競合について

投稿記事by 剣崎 宗二 » 2019年7月10日(水) 21:55

進撃のエレン さんが書きました:>であれば、逆に「Is Auto」をtrueにしていれば直りませんか?
元々trueの状態で今回の現象が起きてしまったのです。
説明足らずで申し訳ございません。


すみません、私の見間違いでした。

BootOpeningDemoを入れている場合、例えIs Autoがtrueだとしても、開始時に自動的にCommonSaveのロードは為されません。その為、
OPデモが開始した際に全てのスイッチはOFFの状態になっております。
その状態でCommonSave saveを(OPデモ中に、変数をセーブするために)実行すれば、無論CommonSaveにセーブされたそのスイッチはOFFになると思われますが…

これと同等の状況が発生しております。

回避する為には、オープニングデモ開始時に手動でCommonSave loadを実行してから、変数の変更及び再度のCommonSave saveを行う必要があります。
当方の方でこれを実行した所、ゲーム内でスイッチがリセットされない事が確認できました。
----
-出先に居る場合回答が未テスト状態である事が多い為、テストは重々にお願いいたします。
-基本自分や友人の問題解決は自分で1からプラグインを書いているので、「こういうプラグインはありますか」に対しては助けになれません。ご了承ください。
アバター
進撃のエレン
記事: 78
登録日時: 2017年5月13日(土) 21:01

Re: 「BootOpeningDemo」と「UTA_CommonSave」の競合について

投稿記事by 進撃のエレン » 2019年7月10日(水) 22:10

にゃたま 様

コメントありがとうございます!

通常は暗号化されていて見れないのでUTA_CommonSaveの
536行付近に以下のコードを挿入して"中身を見れる化"してみてはいかがでしょうか?


こんな方法もあったのですね!
知りませんでした!
教えて頂きましてありがとうございます!


剣崎 宗二 様

ありがとうございます!

回避する為には、オープニングデモ開始時に手動でCommonSave loadを実行してから、変数の変更及び再度のCommonSave saveを行う必要があります。


こちらでセーブされたデータが問題なくロードされた事が確認できました!

BootOpeningDemoを入れている場合、例えIs Autoがtrueだとしても、開始時に自動的にCommonSaveのロードは為されません。


これが原因だったのですね。
コードの書き換えが必要な状況では無くて良かったです。

問題の解決、本当にありがとうございました!! :D :D :D

“MV:質問” へ戻る