保存・復旧設計

中断した試合とクラブ運営へ戻る。現在のキャリアを保ち、保存と復元をゲーム内の操作にする。

M1 · 設計 v1.0 · 2026年9月29日

操作と再開

上部の保存アイコンから「Save & Load」を開く。現在のゲーム日付とシーズン、試合中なら対戦カード・スコア・時間を示す。手動セーブ、最近のセーブ、ファイルの書き出しと読み込みを一つの画面にまとめる。

試合の中断と再開
  1. プレイ時計・戦術・統計が更新
  2. 自動保存小さな試合チェックポイント
  3. 再読込同じ時計・スコアへ復元
  4. 一時停止で復帰ユーザーが試合を再開

メニューを開くと試合を停止する。再読込後も停止状態から戻り、見ていない間に試合を進めない。相手メンバー表へ進んだ後の編成ロックは保持する。

保存するもの

範囲保持する状態
クラブの基準Club Base、Rotation、フォーメーション、戦術プラン、個別指示、セットプレー担当。試合当日と試合中の一時変更を基準へ混入させない。
進行中の試合時計と内部の秒、追加時間、スコア、両チームの選手・体力・カード・負傷・交代資格、交代履歴/残枠、戦術、個人成績・統計、試合とイベント時刻の乱数状態、延長・PKに関する状態。
編集途中未適用のメンバー変更と戦術の下書き。再開時も下書きのままとし、交代枠や出場資格を消費しない。適用前の状態へ戻す操作も保持する。
キャリアゲーム日付、確定試合・Table・ランキング・表彰、所属・契約・交渉・登録待ち合意・ローン、予算、成長・衰退、疲労・コンディション、トレーニング進行、大会・年度カレンダー、昇降格、シーズン状態。
過去シーズンとKIT年度アーカイブの完全データ、EFL補足記録、アップロードしたKIT画像、選定・画像参照。ファイル形式のバックアップへ実体を同梱する。

保存は試合の現在地を記録する。再開時に過去の得点・交代を再計算しない。終了済みの試合は記録済みの結果へ戻し、順位・成長・体力を二重に集計しない。

自動保存と履歴

保存タイミング・保持数
通常セーブ既存の確定操作・日付進行と連動。進行中の試合も約30秒ごとにキャリア全体へ保存する。
試合チェックポイント試合中は約1秒ごと。停止・編成操作・画面を離れる時にも記録する。同じキャリア、日付、保存版に一致したものだけを採用する。
最近のセーブ自動3件、手動5件。新しいものから表示し、保存日時とゲーム日付・シーズンを併記。読み込む前に内容を確認する。
Before load復元前の現在のキャリアを完全バックアップとして退避。成功した復元後は直近2件を保持する。未保存の現在の進行も含める。

1秒ごとの保存では世界全体を圧縮し直さない。試合だけを小さく書き、通常セーブと組み合わせる。プロセスの強制終了では直近のチェックポイントまで戻る場合がある。

完全バックアップと復元

読み込みは確認してから確定
  1. Import backup / Load形式・チェックサムを検査
  2. プレビュー日付・試合・年度記録・KIT
  3. Load career現在の進行を退避
  4. 復元して再起動保存したキャリアで再開

書き出す形式はバージョン付きの .touchline。キャリア、基準編成とRotation、年度記録、追加画像を一つにし、SHA-256で破損を検出する。通常の手動セーブはブラウザー内の履歴であり、ファイルの書き出しとは区別する。

復元ではアーカイブ・画像を新しい保存領域へ書き、編成を準備し、キャリア本体を最後に確定する。途中で失敗したら元の本体を保持し、編成を戻す。確定前に中断した復元処理も、次回起動時に整理する。旧キャリアの画像を新しい画像で上書きしない。

ゲーム内の翌日処理・年度移行中は復元を始めない。別タブでキャリアが更新・初期化された場合は古いタブの保存と復元を拒否し、再読込を求める。

エラー時の扱い

現行構成での範囲

PCのブラウザー内の保存を改善する。キャリア本体と小さな試合チェックポイントはlocalStorage、履歴・年度記録・KIT画像はIndexedDB。既存の無圧縮・LZ形式と現行圧縮形式を読み取り、現行形式へ保存する。

ブラウザーのデータを消すと、ブラウザー内のセーブと履歴も失われる。外部ファイルのバックアップを別に保管する。バックアップにゲームのプログラムや既存の公式画像一式は含めず、対応するTOUCHLINEの版で読み込む。PC API+SQLiteへの移行、PCとiPhoneの共通保存は別工程。

検証条件

独立したテスト用キャリアで、試合途中と下書き、ハーフタイム・追加時間・延長、終了とPK、旧形式の移行、容量不足、復元途中の保存失敗、別タブ更新、破損ファイル、年度記録と画像の保持を検証する。ゲームを続けるためのキャリアを検証用に初期化しない。

起動・翌日・交渉・年度移行を計測し、実測した重い処理から整理する。完了した個別検証と、全機能・複数シーズンの統合受入は分けて報告する。