ResumeSave詳細



あるスクリプトコードの実行時にResumeSaveしたセーブデータを、 修正を加えた後のスクリプトコードでもResumeSaveが正しく動作 する条件があります。

ゲーム出荷後にスクリプトコードを変更する場合、その条件のみ の修正をおこなえばセーブデータの互換性は保たれます。

まず、ResumeSave時に現在の実行状態になるまでに呼び出された 関数に関しては、一切修正することは出来ません。例をあげると、

int main(void)
{
    func1();

    func2();

    return 0;
}

void func1(void) { }
void func2(void) { system.ResumeSave(...); }
というコードの場合、system.ResumeSaveに至るまでに呼び出された 関数は、

main
func2

です。なので、この2つの関数は修正できません。func1は呼び出されては いますが、呼び出しから戻ってきているので修正可能です。

他にも以下の条件の修正は可能です。

・変数名の変更
・グローバルオブジェクトの後方追加
・メンバオブジェクトの後方追加
・関数・メソッドの追加
・構造体の追加
・HLL関数の後方追加
・即値の変更
・呼び出す関数/メソッドの変更(戻り型・引数型リストが同じ場合のみ)
・呼び出すHLL関数の変更(戻り型・引数型リストが同じ場合のみ)
・メッセージ文字列の変更
・文字列の変更
・構造体オブジェクトの型(メンバ構造が同じ場合のみ)
・ソースファイルの追加・削除

以下の条件は禁止条件例です。

・グローバルオブジェクトの削除・入れ替え
・メンバオブジェクトの削除・入れ替え
・ローカルオブジェクトの入れ替え
・HLLの削除
・HLL関数の削除・入れ替え

ゲームシステム部分を作る際、ResumeSaveを呼び出す時の関数スタック状態を 出来る限り浅くすることをお勧めします。