Comp-SaveData セーブデータ圧縮スクリプトにおいての詳細情報です。
- ※ご注意
-
このスクリプトを導入する前のセーブデータとは互換性がなくなります。
圧縮をかけるセーブデータは、次のように選択されます。
-
グローバル変数で、 $game_ で始まり、 続く文字が、1文字以上、20文字以内の次の条件を満たすもの
-
英小文字、数字またはアンダーバーで構成されている
-
続く文字列の最初の一文字が英小文字または数字
例) $game_temp 、 $game_system 、 $game_self_switches など
-
1.の条件を満たすグローバル変数のうち、次の条件を満たすものがセーブデータとして保存されます。
-
WFRGSS_CompSave::EXCLUSION_MODE の値が true の場合、EXCLUDE_SAVE にクラスが指定されておらず、値が nil (NilClass)でないもの
-
WFRGSS_CompSave::EXCLUSION_MODE の値が false の場合、ALLOW_SAVEにクラスが指定されているもの
規定では、WFRGSS_CompSave::EXCLUSION_MODE は false になっており、次のクラスのインスタンスが保存されるようになっています。
(デフォルトのセーブデータと保存されるものは同じです。)
Game_System, Game_Switches, Game_Variables,
Game_SelfSwitches, Game_Screen, Game_Actors,
Game_Party, Game_Troop, Game_Map, Game_Player
圧縮をかけるセーブデータをカスタマイズするときは、次のように設定します。
-
許可モードか、除外モードかを指定します。
-
WFRGSS_CompSave::EXCLUSION_MODE = true のとき、許可モードで動作します。
-
WFRGSS_CompSave::EXCLUSION_MODE = false のとき、除外モードで動作します。
-
(1) 許可モードで動作させる場合は、セーブデータに含めるオブジェクトのクラス名を ALLOW_SAVEに、クラス名の配列で指定してください。
例)
ALLOW_SAVE = [Game_System,Game_Switches,Game_Variables,Game_SelfSwitches,
Game_Screen,Game_Actors,Game_Party,Game_Troop,
Game_Map,Game_Player].freeze
(2) 除外モードで動作させる場合は、セーブデータに含めないオブジェクトのクラス名を EXCLUDE_SAVE に、クラス名の配列で指定してください。
例)
EXCLUDE_SAVE = [Game_Temp].freeze
- ※ご注意:
-
除外モードで動作させるとき、セーブデータに保存させたくないオブジェクトは、$game_ で始まらない変数名にすることを強く推奨します。
$game_で始まる変数名が付いている場合、意図せずにセーブデータに取り込まれることがあります。
セーブデータウィンドウに表示する項目(このスクリプトの場合、 Game_SaveHeader クラスの内容)は圧縮をかけずに保存するようにしてください。表示する項目を編集する場合は、このインスタンスに行うようにします。
フレームカウントはヘッダ部分に保存しておくことをお勧めします。
本スクリプトでは、Window_SaveFile クラスの、次のメソッドおよびプライベートメソッドはカスタマイズされています。これらのメソッドがカスタマイズされている場合は修正が必要です。
refresh
initialize(file_index, filename)
セーブ失敗のときは、Window_Helpのウィンドウを作成してメッセージを表示します。
セーブデータの形式は次のようになっています。
- ヘッダ部分 (Game SaveHeader)
- 非圧縮。シーンで一覧表示するなどで呼び出されます。
- データ部分 (Game SaveData)
- 圧縮。実際のセーブデータの内容が入ります。解析を防止するのであれば、更に暗号化をかけることを推奨します。
セーブデータは、Zlib圧縮をかけていますが、暗号化ではありませんので解析されることがあります。解析されないようにする目的であれば、更にデータ部分を暗号化することを推奨します。
※セーブヘッダを暗号化することは推奨しません。一覧表示するときに、復号することになり処理が重くなります。
※暗号化アルゴリズムは、自作せずに広く知られたものを利用されることをお勧めします。