未同期の端末セーブがクラウドより優先される理由
遊びを見つける執筆にClaudeを使用しています。

電車の中で、クラウドセーブに対応したゲームを遊んでいる場面を考えてみます。トンネルに入って通信が途切れましたが、ゲームは動き続け、数ステージ進みました。家に着いて通信が戻ったとき、クラウドには出発前の古い進行が残っていて、端末には新しい進行が残っています。ここでどちらを正とするかが、同期の衝突です。 アソバースの確認済みの仕様では、未同期の端末セーブは、クラウドの古いデータより優先して再送されます。この記事ではその理由を、仕様から読み取れる範囲で整理します。開発側の発言や内部の経緯は確認できないので、記事中の理由づけは「設計から読み取れること」にとどまります。あわせて、読者が自分で挙動を確かめる手順も示します。
食い違いが起きる場面
食い違いは、データが二か所にあるから起きます。端末の中にあるセーブと、クラウドにあるセーブです。通常は、端末で進めるたびにクラウドへ送られ、二つは同じ内容に揃います。
揃わなくなるのは、送る前に何かが起きたときです。通信が切れた、アプリを閉じた、別の端末で先に進めた、といった場合です。このとき端末側には、クラウドがまだ知らない進行が残ります。この「まだ送れていない端末側のデータ」が、この記事でいう未同期の端末セーブです。
どちらを残すかは、どちらかが失われる判断です。二つを自動で混ぜる方法もありますが、ゲームごとにデータの形が違うので、一般的な混ぜ方は決めにくいのが実情です。そのためプラットフォームは、どちらかを選ぶ方針を取ることになります。
確認済みの事実
仕様のうち、この話題に関わるものを整理します。
- 未同期の端末セーブは、クラウドの古いデータより優先して再送されます。
- ゲストの履歴・進行は端末内に保存され、ログイン後のアカウントへ自動では混ざりません。
- ログイン中は、クラウドセーブ、作品ごとのプレイ履歴などが使えます。
- アップロードしたゲームにはSDK(ゲームとアソバースをつなぐ部品)が自動で追加されます。URL投稿のゲームは、作者がSDKを読み込むと、作品専用のプレイヤーIDとクラウドセーブを使えます。
- クラウドセーブは作品ごとにJSON形式で128KiBまでです。
- ゲームには、FirebaseのUID、認証トークン、メールアドレスを渡しません。
- アップロード作品内のlocalStorage/sessionStorageは、一時メモリーの互換処理です。
- 退会すると、アップロードファイル、履歴・セーブを含む個人データ、認証アカウントが削除されます。
一方、次の点は確認済み事項にありません。再送が起きる具体的なタイミング、複数の端末がともに未同期だった場合の扱い、競合の際にユーザーへ確認画面が出るかどうかです。これらは現在の案内か作品の画面で確認してください。
四つの方針を比べる
衝突の扱いには、一般に次のような方針があります。アソバースがここに挙げた全部を採用しているわけではありません。確認済みなのは二つ目だけです。判断の幅を見るための比較です。
- クラウドを常に優先する、守れるもの:複数端末で内容が揃いやすい、失うもの:通信できない間に進めた分が消える
- 未同期の端末を優先して再送する、守れるもの:最後に手元で進めた分、失うもの:別端末で先に進んだ分を上書きする可能性
- 新しい日時の方を採用する、守れるもの:直感に近い結果、失うもの:端末の時計がずれていると誤判定する
- 内容を自動で混ぜる、守れるもの:双方の進行、失うもの:ゲームごとにデータの形が違い、一般的な規則を作りにくい
アソバースの確認済みの仕様は、二つ目にあたります。時計の判定や自動マージに頼らず、「まだ届いていないものを先に届ける」という形です。
「未同期を優先する」から読み取れること
この方針から読み取れることを、三つ挙げます。
一つ目は、未同期という状態そのものが手がかりになることです。クラウドにあるのは、サーバーへ最後に届いた状態です。端末側に未同期のデータがあるなら、届いていない作業が手元にあるということです。多くの場合、それはクラウドの状態より後に起きた操作です。クラウド側を「古いデータ」と位置づけているのも、この見方と合います。
二つ目は、遊んだ人の時間を無駄にしにくい点です。クラウド優先にすると、通信状態が悪い場所で遊んだ分が、後から黙って消えるかもしれません。進めたはずのステージが戻る体験は、ゲームの印象を大きく損ないます。未同期を優先すれば、少なくともその種の消え方は避けられます。
三つ目は、混ぜる判断をしない一貫性です。ゲストの進行が、ログイン後のアカウントへ自動では混ざらないことにも、同じ考え方を読み取れます。共有の端末で誰かが遊んだ履歴が、別の人のアカウントに流れ込むのは避けたいところです。どちらも「持ち主がはっきりしないデータを、勝手に結びつけない」という方向です。
ただし、この方針は万能ではありません。別の端末で先に進めていた場合に、クラウドの内容が上書きされる可能性は、方針の性質上ありえます。実際にどう扱われるかは確認済み事項にないので、重要な進行がある場合は、端末を切り替える前に同期を済ませておくのが安全です。
自分で確かめる手順と、立場ごとの注意
確かめる問い
「通信できない間に進めた分は、通信が戻ったあと残るか」を確かめます。結果は作品と環境によって変わるので、読者自身で行ってください。
準備するもの
- クラウドセーブに対応した作品。対応しているかは、作品ページの案内か、作品を開いて確かめます。
- ログイン済みのアカウント。
- 進行を判別できる目印。たとえば「ステージ3まで」「得点が何点」といったものです。
- メモ(紙でも端末でも構いません)。
手順
- ログインして作品を開き、進行を一つ進めます。これを進行Aとして、時刻とあわせてメモします。
- 作品を開いたまま、端末の通信を切ります(機内モードなど)。ページを読み込み直すと開けなくなる場合があるので、切るのは読み込み後にします。
- 通信が切れた状態で、さらに進行を一つ進めます。これを進行Bとしてメモします。
- 通信を戻し、しばらく待ちます。待った時間もメモします。
- 同じ端末で作品を開き直し、見える進行を記録します。
- 可能なら、別の端末や別のブラウザで同じアカウントにログインし、同じ作品を開いて、見える進行を記録します。
記録の単位は「どの手順の時点で、進行AとBのどちらまで見えたか」です。同じ条件で3回繰り返すと、偶然を見分けやすくなります。
結果の読み方
- 別の端末でも進行Bまで見えた場合は、未同期だった分がクラウドへ届いたと読めます。
- 同じ端末では進行Bが見え、別の端末ではAまでしか見えない場合は、端末には残っているが、まだ届いていないと読めます。時間を置いて再度確かめてください。
- どちらでもAまでしか見えない場合は、この作品がクラウドセーブを使っていない可能性があります。作品側の仕様か、ブラウザの保存設定も疑ってください。
起こりやすい誤り
- 通信を戻す前にページを閉じたり再読み込みしたりして、条件が変わってしまうことです。
- プライベートモードや、ブラウザのデータ消去の設定で、端末側の保存が残らないことです。
- 作品がクラウドセーブ未対応なのに、同期の失敗だと思い込むことです。
- 公式作品のうち、保存があるのは余白の庭、WAVE / WAVE、かたちのあいだの3作品で、ほかの10作品の記録は画面を開いている間だけです。これらの保存がクラウドセーブとどう関わるかは、作品を開いて確かめてください。
作る人が押さえる点
- 保存データは作品ごとにJSONで128KiBまでです。大きな素材はセーブに入れず、進行を表す最小限の値にとどめます。
- アップロード作品内のlocalStorageやsessionStorageは一時メモリーの互換処理です。永続的な保存先としては頼らず、残したい進行はSDKのクラウドセーブを使います。
- SDKにはFirebaseのUID、認証トークン、メールアドレスを渡しません。セーブにこれらを入れる設計にしてはいけません。
- 衝突の扱いを作品側でも決める場合は、データに版や更新の順序を示す値を入れておくと、何が起きたかを追いやすくなります。この助言は一般的な設計上の考え方で、アソバースの内部処理を説明するものではありません。
保護者や学習者が押さえる点
- ログインせずに遊んだ進行は、端末内に保存され、後でログインしてもアカウントへ自動では混ざりません。大切な進行は、ログインしてから遊びます。
- 共有の端末では、誰のアカウントでログインしているかを確かめてから遊びます。
- 退会すると、セーブや履歴を含む個人データが削除されます。残したいものがないか、退会の前に確認してください。
次の行動
クラウドセーブに対応した作品を一つ選び、上の手順で、進行AとBのどちらが残るかを3回記録してみてください。結果が想定と違った場合は、作品の案内か現在の公式の案内で、同期の扱いを確認します。作る人は、自作のセーブデータが128KiBに収まっているかと、UIDやメールアドレスが入っていないかを、公開前に見直してください。

