部分セーブ | 本棚のガチなRPG製作日記

本棚のガチなRPG製作日記

ツクールでゲームを製作していくっぽい謎の日記。
なぜか名前はばどですがツクール界では「本棚」として活動しています。

今日は、聖おぶ4で作っていた部分セーブシステムをイマジナに移植しました。


部分セーブは、ふつうプレイヤが気づかないうちに利用する機能で、セーブデータの一部のデータを必要に応じて書き換えるというものです。


聖おぶ4ではボス戦の直前にセーブ画面を開くことなく「ボス戦前のイベントを見た」というフラグを立てるために使っていました。

そうすることで、ボス戦に負けてリセットし、再戦するようなときに同じイベントを見ずに済むので、再戦が楽になるし、ボス戦前のイベントを比較的長くしたりもできます。


イマジナでも同じように利用するつもりです。



今回は割と手間取りました。


まず聖おぶ4の部分セーブは、今回ソースを見て気づいたんですが、セーブファイル操作で不正ツールなどなしに普通にデータを不正に書き換えられてしまう可能性がありました。

まずそこを修正。

でもやっぱり抜け目はあります。普通にプレイする分には問題ないので、あえてその抜け目を言ったりはしませんが。


次に

File.open(name, "rb") do |file| 処理 end

の周辺でエラーになって気づいたんですが、ブロックの「処理」の部分で定義した普通のローカル変数はそのブロック内でしか有効ではないんですね。

何気に初めて知りました・・。


最後に、インタプリタのインデックスがダンプされるたび必ず1進むために、部分セーブした後に改めてセーブすることなくゲームを終了した場合、次回ロード時にイベント再開位置がずれてしまうんですね。

これは原因を探し始めてから直すまでに1時間くらいかかりました。



今日は異常に眠い・・早めに寝ようかな。