ロード不可のズル出来ないセーブシステム。

七尾あかね
記事: 3
登録日時: 2017年11月13日(月) 21:04

ロード不可のズル出来ないセーブシステム。

投稿記事by 七尾あかね » 2017年11月16日(木) 22:38

戦闘に緊張感を持たせたくて、アクターが死亡したら復活できない&セーブデータは1つだけのロード不可のシビアなシステムのゲームを作りたいと考えています(*´∇`*)

現在トリアコンタン様による設定したアクターが死亡したらゲームオーバーになるプラグインを使わせて頂いています。
viewtopic.php?t=1081

これで死亡したらゲームオーバーになる設定にしてるキャラは主人公一人だけに当てています。
RPGゲームですがシュミレーションゲームの名作、ファイアーエムブレムのように主人公以外のアクターが死亡した場合は二度と復活出来ないゲームを作っています。
死亡したキャラが復活出来ないようにするのは単純に復活魔法や回復出来る手段を製作時に用意しなければいいだけだと思いますのでプラグインは必要ないと思いますが、ゲームをいつ消してもズルをしてロードでやり直しを出来ないようにしたいのです。
それで常に例え戦闘中でもゲーム自体を強制終了させても常にセーブが更新されるオートセーブはどうかと考えました。


① 戦闘中アクターが死亡した時点でゲームを消して、セーブデータをロードしても戦闘の直前からスタート&死亡したキャラは死亡したまま。戦闘中受けたダメージや消費したアイテム、MPなどもそのまま。

② オートセーブという機能ではなく『中断』というセーブ&ゲームを終了を同時に行う項目を作り、タイトル画面での項目はロードではなく『再開』という項目で、この項目からロードした瞬間セーブデータは消去する。要するにきちんと『中断』から終了せずに、途中でゲームを無理に消した場合今までのゲームデータは消失したまま、という手法。

③ ゲーム自体をきちんと『中断』コマンドで中断しないと重大なペナルティ。「お金が0円になる」「仲間アクター全員消去」など。

という方法を思いつきました。
優先順位は2番、3番、1番で考えています。1番の場合は戦闘終了後にセーブ、では結局戦闘中にゲームを消せばズル出来てしまうので戦闘中もターン毎にセーブの必要があります。しかしそれでは中ボス戦などで戦闘中に中途半端に変数やスイッチが進んでしまっていた場合にゲームを強制終了すると再開しておかしな事になりそうなので難しいかなと思っています。

そして2番の『中断』コマンドの場合ですがこの場合ステータス画面からのセーブ項目から実行ではなく、出来ればイベントとの会話で実行&アイテムの使用で実行、であるとありがたいです。

どの手法を取るにしても主人公が死んだり全滅したりでゲームオーバーになった場合ゲームデータは消去。最初からやり直しというかなりシビアなゲームにしたいです。
どの方法もセーブデータ自体をコピーされていると意味をなさないのですが、出来ればそれさえもさせない方法などがありましたらそれがベストです。
スクリプトなどが完全に素人の私が願望を述べているだけですので無茶な事や失礼な事を言ってしまっている場合があると思いますがその場合はご容赦下さいませ(;´д`)
とにかくプレイヤー側がやり直しやズル出来ないようにしたいです。よろしくお願いいたします(*´∇`*)

他に導入している主なプラグインは

YEP_CoreEngine
YEP_BattleEngineCore
YEP_X_ActSeqPack1~3
YEP_X_BattleSysATB
YEP_BattleStatusWindow
AltMenuScreen3

などになります。

それと蛇足なのですが、アクターが死亡した時に指定した音楽とセリフが表示されるようなプラグインをご存知の方がいらっしゃいましたらご教授下さいませm(_ _)m

ちなみに追記なのですが、トリアコンタン様の「セーブ数の変更」プラグインはきちんと動作したのですが、
こちらのオートセーブプラグインは私の環境では動作致しませんでした。
http://torigoya.hatenadiary.jp/entry/save_command_mv

kiki_32
記事: 7
登録日時: 2017年12月30日(土) 08:15
お住まい: 神奈川県
連絡を取る:

Re: ロード不可のズル出来ないセーブシステム。

投稿記事by kiki_32 » 2017年12月30日(土) 08:54

初めまして。

私もズルできないようにローグライク的なものを作ってます。
中断セーブを設ける場合、やり方としては以下になります。発展していけば望む形になるかもしれません。
なにぶん作ったばっかりですのでバグがあるかもですが、ご容赦ください。

1.セーブ前にセーブ正常終了フラグをオンにする
2.セーブ後にセーブ正常終了フラグがオフだったら、全滅扱いとする
3.ロード時にセーブ正常終了フラグをオフにしてセーブする
4.セーブしたらタイトルに戻る

1.セーブ前にセーブ正常終了フラグをオンにする

コード: 全て選択

    var K_Game_System_prototype_onBeforeSave = Game_System.prototype.onBeforeSave;
    Game_System.prototype.onBeforeSave = function() {
        K_Game_System_prototype_onBeforeSave.call(this);
  //セーブ正常終了フラグ
        this._saveSuccess = true;
    };

2.セーブ後にセーブ正常終了フラグがオフだったら、全滅扱いとする
3.ロード時にセーブ正常終了フラグをオフにしてセーブする

コード: 全て選択

    var K_Scene_Load_prototype_onLoadSuccess = Scene_Load.prototype.onLoadSuccess
    Scene_Load.prototype.onLoadSuccess = function() {
        K_Scene_Load_prototype_onLoadSuccess.call(this);
        if(!$gameSystem._saveSuccess){
            //ここに全滅時の処理を入力
        }else{
            //セーブ正常終了フラグをオフにしてセーブする
            $gameSystem._saveSuccess = false;
            DataManager.saveGame(this.savefileId());
        }
    };

4.セーブしたらタイトルに戻る

コード: 全て選択

    var K_Scene_Save_prototype_onSaveSuccess = Scene_Save.prototype.onSaveSuccess
    Scene_Save.prototype.onSaveSuccess = function() {
        K_Scene_Save_prototype_onSaveSuccess.call(this);
        //タイトルに戻る
        SceneManager.goto(Scene_Title);
    };

“MV:プラグイン素材のリクエスト” へ戻る