Oneshot Gems
今すぐプレイ

ゲーム開発者向け

古い保存シェイプを意図的に移行する

状態保存テストでは、意図した値が持続するかどうかが尋ねられます。バージョン管理は、別の質問に答えます。それは、新しいゲーム ビルドが古いビルドによって書き込まれたデータを読み込んだ場合に何が起こるべきかということです。バージョン 1 がベスト スコアを数値として保存し、バージョン 2 がプロファイル オブジェクトを保存している場合、古い形状を新しいものであるかのように読み取ると、メニューが中断されたり、進行状況が黙って破棄されたりする可能性があります。保存されたデータの横にバージョンを配置し、既知の以前のシェイプの明示的な移行を記述します。

このページの内容

小さなバージョン付きデータオブジェクトに値を保存する

240 などの単純なスコアを保存する代わりに、{ version: 2, bestScore: 240, settings: { sound: true } } などの JSON オブジェクトを保存します。ロード時にテキストを解析し、それがオブジェクトであることを確認し、フィールドを使用する前にそのバージョンを検査します。 JSON.parse は無効な JSON に対して SyntaxError をスローする可能性があるため、プレーヤーが開始する前に起動を停止するのではなく、定義されたフォールバックを使用して不正なテキストを処理します。

データオブジェクトを小さく保ち、各バージョンの意味を記録します。バージョン番号だけで検証が済むと考えないでください。バージョン2と記された値でも、不完全だったり型が違っていたりすることがあります。現行ビルドが実際に依存するフィールドを確認します。たとえばbestScoreは有限かつ0以上の数値、サウンド設定は真偽値である必要があります。

対応する旧形式ごとに移行処理を用意する

バージョン1からの移行では、古い数値を新しいオブジェクトに変換し、既定の設定を補い、バージョン2の形式で保存できます。複数の旧バージョンに対応する場合は、バージョン1から2、続いて2から3のように順に移行します。キーの欠落、不正なJSON、未知の将来バージョン、途中まで書き込まれた値など、それぞれのテストケースを個別に確認します。未知のデータを保持、無視、リセットのどれにするか決め、必要な場合は復旧メッセージを表示します。

ブラウザーのストレージに関する制約を把握する

MDNによると、localStorageはオリジンに紐づき、ブラウザーのセッションをまたいで保持されることがあるデータです。ただし、利用可能であることや内容が維持されることは、アカウントのバックアップとして保証されません。秘密情報や信頼性が必要な判断を保存しないでください。ゲームがセーブデータを読めない場合は、定義済みの状態から再開できるようにし、失敗した同じ移行を起動のたびに再試行しないでください。

⁨localStorage ゲームデータのバージョン管理⁩についての質問

フォーマットが変更された場合、すべての保存をクリアする必要がありますか?

それが明確な製品決定である場合に限ります。重要な値を安全にマップできる場合は、小規模なテスト済みの移行でそれらを保存できます。それ以外の場合は、明確なフォールバックを定義し、リセットについて説明します。

バージョン フィールドは localStorage データの信頼性を高めますか?

いいえ。期待される形状を識別するので、ゲームはそれを移行または拒否できます。データがまだ欠落している、形式が間違っている、古い、または利用できない可能性があるため、使用する前に検証してください。

関連情報

古い情報を見つけましたか? 訂正を連絡

もっと遊ぼう。

いつでも遊べる無料ブラウザーゲーム。楽しいゲームを見つけて、次のお気に入りにしよう。

気になることを、もっと