Save & Load
試合途中の再開、完全バックアップ、復元をゲーム内に実装。
今回できるようになったこと
試合の途中でも閉じて再開できる。編成・契約・成長と、旧シーズンの記録・追加KIT画像を一つのファイルで保管・復元できる。
上部の保存アイコンから開く専用メニュー。日付・シーズンと試合の対戦カードを確認し、最近のセーブへ戻る、ファイルへ保管する、ファイルから戻す操作ができる。現在のキャリアを初期化する変更はしていない。
実画面では、2027年7月1日・2027/28のキャリアの保持、手動セーブの「Game saved.」、書き出しの「Backup exported.」を確認。4–2–3–1のClub Base、Second Teamの選択肢、獲得選手と成長・衰退値も画面で確認した。検証用の試合・年度移行は別のブラウザーで実施した。
使い方
| 操作 | 使う場面 | 結果 |
|---|---|---|
| Save game | 節目を手動で残す。 | 現在の進行を通常セーブと手動履歴へ保存。手動履歴は直近5件。 |
| Export backup | ブラウザーの外にも保管する。 | TOUCHLINE-日付-シーズン.touchline をダウンロード。旧季の完全記録と追加KIT画像も同梱。 |
| Recent saves → Load | 自動・手動セーブ、Before loadへ戻る。 | 日付・シーズン・試合・アーカイブ・KITをプレビューする。確認してLoad careerで適用。 |
| Import backup | 書き出したファイルから戻す。 | .touchline を選ぶ。破損と内容を検査し、プレビュー後に適用する。選んだだけでは現在の進行を置き換えない。 |
- Import backupファイルを選ぶ
- Load this career?日付・記録を確認
- Load career現在の進行を自動退避
- 再起動同じキャリアへ戻る
Save & Loadを開くと進行中の試合は停止する。再読込で戻った試合も停止状態。Match画面で再開する。未適用の交代は下書きとして戻り、適用するまでは交代枠を消費しない。
最近のセーブとBefore loadはこのブラウザー内にある。ブラウザーのデータを削除する前や、しばらく進めた節目にはExport backupを使って、ダウンロードしたファイルを別に保管する。
困ったときの復旧
| 表示・状況 | 対応 |
|---|---|
| Unable to open your career | 保存データの破損なら、起動画面のSave & Loadを開く。読み取れるRecent saves、またはImport backupから復元する。壊れた本体を新規キャリアで上書きしない。 |
| Browser storage is full | タブを開いたままExport backupを実施。通常セーブに書けなかった最新のメモリー上の進行も書き出せる。保存エラーはメニューと保存アイコンで分かる。 |
| The backup is damaged | チェックサムが一致しないファイル。適用せず、別のバックアップを選ぶ。アーカイブやKITの欠落、対応しない形式も確定前に拒否する。 |
| Updated in another tab | 別タブの新しい進行を保護している。古いタブからの保存・復元は実行せず、そのタブを再読込して最新の状態へ戻す。 |
| 復元するキャリアを間違えた | Recent savesのBefore loadから、置き換える前のキャリアを確認して戻す。成功した復元後は直近2件を保持する。 |
読み込み上限は128 MB。バックアップにゲームのプログラムや既存の公式画像一式は含めないため、対応するTOUCHLINEの版で読み込む。外部ファイルなしでブラウザー内の全保存を消した場合まで復元できる仕組みではない。
保存処理の改善
試合中は約1秒ごとに、試合の状態だけを小さなチェックポイントへ記録する。キャリア全体の圧縮は通常の確定操作と約30秒ごとの保存にまとめた。時計を進めるたびに世界全体を圧縮し直さない。
起動時に読み取ったキャリアを共有して、重複した展開を減らした。短い起動処理を一つずつ画面待ちにせず、まとまって実行する。長い処理は引き続き進捗を表示し、画面の更新を挟む。最終デザインが揃うまでの起動カバーも維持する。
復元では、新しい領域へ年度記録・画像を準備し、キャリア本体を最後に確定する。確定前に失敗したら本体と編成を維持。書込み途中の中断、古いタブ、圧縮中に発生した別タブの更新も検出する。
処理時間の実測
このPCの独立したEdge・同じ保存データで、起動処理の画面待ち方式だけを比較した1組の測定。外部画像の通信は除外。端末一般の保証値、複数季すべての操作の平均値ではない。
| 処理 | 実測 | 読み方 |
|---|---|---|
| 起動 | 2,171 → 1,418 ms | 各処理後の画面待ちと、短い処理をまとめる方式の比較。約35%短縮。 |
| 翌日進行 | 576 ms | 改善後の初期キャリアで1日の運営と保存。以前比の短縮を主張する測定ではない。 |
| 通常セーブ | 57 ms | 上記キャリアの保存。本体は約84万文字。長期キャリアでは容量・時間が変わる。 |
| 移籍交渉 | 開始 57 ms / 提案 49 ms | 提案の状態変更と保存。追加AI通信を含まない。交渉相手の返答はゲーム日付に連動する。 |
| 年度切替 | 904 ms / 1,879 ms | 昇降格の統合検証における2027/28・2028/29への切替。順位設定にテスト用スコアを一部使用。初回EFL補完の時間は別。 |
起動・翌日・交渉の測定記録 / 年度切替の測定記録。年月と試合数が増えたセーブの負荷測定、重複計算と画面更新の整理は続ける。
検証結果
| 対象 | 確認できたこと |
|---|---|
| 試合途中と編集 | 31分の時計・内部秒・乱数・確定交代と戦術・両チームのエンジン状態を保持。未適用の交代下書きは出場資格を消費せず戻る。下書きを破棄して再開した後の結果が同じ。相手メンバー表への編成ロックも維持。 |
| 試合の段階 | ハーフタイム・カード・体力、追加時間・延長と交代機会、確定PK結果。終了済みの結果・大会成績の二重集計防止。 |
| 完全バックアップ | 書き出し→ファイル選択→プレビュー→復元をUIで実行。アーカイブと画像の実体を同梱し、新しい領域で復元。KIT画像は同じバイト列、旧季のキャリア参照も一致。 |
| 失敗と競合 | 復元の本体書込み失敗時に元の本体と編成を維持。壊れた本体から復旧画面で復元。容量不足でも最新進行をファイルへ救出。破損ファイルを拒否。中断した復元の整理と、別タブ・圧縮中の更新による上書き防止。 |
| 旧セーブ・年度切替 | 無圧縮、LZ、現行形式の移行と再読込。6選手の復旧と契約満了確認の回帰。イングランド降格→2部の実試合→再昇格と2028/29への切替を再検証。 |
| 表示 | 320/390/1280pxで横あふれなし。Save & Loadとプレビューを画面で確認。iPhone実機の受入を済ませた意味ではない。 |
プロジェクトでの位置づけ
M1の保存・再開・完全バックアップ/復元は実装し、関連する個別検証を通過。現在はPCで遊べる開発版を改善した段階。全機能の横断受入、3季以上の通常操作による継続検証を終えてPC安定版を固定する判断は別に残る。
次の大きな機能はM2のアカデミー・引退・若手供給。保存改善の回帰と長期キャリアの計測を続けながら進める。PC API+SQLiteとiPhone共有は未実装であり、今回の保存形式と既存キャリアを引き継げる単位で後続を判断する。