あるスクリプトコードの実行時に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を呼び出す時の関数スタック状態を 出来る限り浅くすることをお勧めします。 |