マガジン

古いセーブは新しい版へ何を持ち越すのか:version1からversion2への移行を3作品で確かめる

遊びを見つける

執筆にClaudeを使用しています。

スマートフォンとノートパソコンの枠を、赤いゲームの駒と雲のアーチがつなぐ切り絵
記事のテーマをもとに制作したAI生成イラスト。

「古いセーブ(version1)は新しい形式(version2)へ移行する」。公式作品の共通仕様として確認できる記述は、ほぼこの一文だけです。そのため、変換で何を守り、何を捨てたのかという細部は、ここでは言えません。開発の経緯や変換の中身を推測で語ることもしません。 この記事が扱うのは、細部が分からない状態でも言えることと、読者が自分で確かめられることです。移行は、どの作品にも起こるわけではありません。起こる作品の顔ぶれには、保存の設計の考え方が表れています。そのうえで「守ったもの・捨てたもの」を見分ける物差しを用意し、3作品それぞれの確認手順を示します。 先に注意しておきます。version1の保存は、以前その作品を遊んだ端末にしか残っていません。新しく用意することもできません。そのため、手順は「いま保存されている範囲を測る」ものと、「次の更新に備えて記録を残す」ものの2本立てです。移行の成否を直接判定する手順ではありません。

この記事の目次
  1. 移行があるのは3作品だけ:確認済みの事実
  2. 「守る」と「捨てる」を分ける四つの物差し
  3. 3作品で見る場所
  4. 自分で確かめる手順と、結果の読み方
  5. 作る人へ:自作で移行を考える最小の形
  6. 次の行動

移行があるのは3作品だけ:確認済みの事実

最初に、確認済みの事実を並べます。

  • 公式13作品のうち、保存があるのは「余白の庭」「WAVE / WAVE」「かたちのあいだ」の3作品です。
  • 残りの10作品の記録や録音は、画面を開いている間だけ残ります。
  • 古い保存(version1)は、新しい形式(version2)へ移行します。
  • v1.1で、各作品に難易度・ヒント・記録などが拡張されました。

ここから「設計から読み取れること」が二つあります。

一つ目は、保存の対象が選ばれていることです。保存があるのは、庭、ループ、パズルの途中経過のように、遊んだ後に残る「状態」を持つ作品です。残りの10作品の最高記録や録音は、開いている間だけの記録として扱われています。たとえば「雨音のピアノ」の録音は30秒・128音までで、画面を閉じれば消えます。保存は、すべての作品に付けるものではなく、残す価値が大きい作品に絞った機能として設計されているようです。

二つ目は、保存の形式に番号が振られていることです。version1、version2と呼べるのは、保存データが自分の版を名乗れる形になっているからだと読み取れます。版を名乗れれば、新しい版は古いデータを見分けて変換できます。そうでなければ、読み込みに失敗したり、別物として解釈したりしかねません。

なお、この保存が、アソバースのクラウドセーブ(作品ごとにJSONで128KiBまで)とどう関わるかは、ここでは確認済みではありません。クラウドセーブの案内にある「未同期の端末セーブはクラウドの古いデータより優先して再送する」という仕様も、別の層の話です。公式作品の保存がどちらに当たるかは、現在の案内で確認してください。

「守る」と「捨てる」を分ける四つの物差し

変換で何を守り、何を捨てたのかは、保存データを四つの層に分けると整理しやすくなります。個々の作品がどう扱ったかは、次の節で読者が確かめる対象です。

  1. 作ったもの本体:庭に置いた物、並べたリズムなど、利用者の手で作った中身です。失うと「消えた」と感じやすい層です。
  2. 設定:テンポ、季節、難易度など、作品の見え方や遊び方を決める値です。失っても作り直しやすい層です。
  3. 履歴:戻す、やり直す、取り消しのために積まれた操作の記録です。一般に、版が変わると互換性を保ちにくい層です。
  4. 記録・進行:最少の手数や最高の記録、どこまで進んだかです。「前より良い」を示すための層です。

この分け方の利点は、「消えた」に程度が付けられることです。履歴が空になっても、作ったもの本体が残っていれば、移行の中心は守られていると言えます。逆に、本体が残っても設定が初期値に戻っていれば、見た目の印象は大きく変わります。

もう一つ、v1.1の拡張が関わります。難易度やヒント、記録といった項目が後から増えた場合、古いデータにはその項目がありません。そのため、新しい項目は「持ち越す」のではなく、既定値で埋める形になるのが一般的です。移行後に新しい項目が空や初期値でも、それは捨てたのではなく、元から無かったものである可能性があります。見分けるには、古い版でその項目が存在したかを知る必要があります。

3作品で見る場所

作品ごとに、確認済みの機能から「保存の対象になりうるもの」を挙げます。実際に何が保存されるかは、次の節の手順で確かめます。

余白の庭

置けるのは木・石・草・花・池・灯りで、最大80個です。物は移動と大きさ調整ができ、季節(四季)と昼夜があります。戻す/やり直す(Z/Y)もあります。

  • 作ったもの本体:置いた物の種類、位置、大きさ、総数。
  • 設定:季節と昼夜。
  • 履歴:戻す/やり直しの積み重ね。

「以前の庭を引き継げる」ことは確認済みです。庭の中身が戻るかどうかが、最も見やすい確認点になります。

WAVE / WAVE

4つの音を16ステップに並べてループ再生します。パッド演奏の録音、テンポ、スウィング、トラックごとのミュート、3つのお手本、取り消しがあります。

  • 作ったもの本体:4トラック×16ステップの並びと、パッドの録音。
  • 設定:テンポ、スウィング、ミュートの状態。
  • 履歴:取り消しの積み重ね。

お手本から作り始めた場合、保存されるのはお手本そのものではなく、手を加えた後の並びなのかどうかも気になる点です。ここも作品を開いて確かめます。

かたちのあいだ

数字を順にそろえるスライドパズルで、3×3の入門と4×4の2段階があります。次の一手のヒント、一手戻す(手数は減らない)、同じ配置の再挑戦、時計の一時停止があります。

  • 作ったもの本体に近いもの:現在の盤面の配置と、再挑戦用の元の配置。
  • 設定:選んでいる難易度。
  • 履歴:一手戻すの積み重ね。
  • 記録・進行:手数と時計の経過。

「一手戻しても手数は減らない」ため、手数は盤面とは別の値として持たれていると読めます。これは仕様の説明から読み取れることで、保存でも別扱いかどうかは確かめる対象です。

自分で確かめる手順と、結果の読み方

同じ端末・同じブラウザで行ってください。ブラウザや端末が変わると、保存が見えない場合があります。プライベートブラウズや、サイトデータの削除でも消える可能性があります。

手順

  1. 作品を開き、状態を作ります。庭なら物を数個置いて大きさを変え、季節を変えます。WAVE / WAVEなら数ステップを並べ、テンポとミュートを変えます。かたちのあいだなら数手動かします。
  2. 手順1の内容を、紙やメモに書き出します。種類・個数・位置・設定値を、言葉で書き留めます。スクリーンショットも有効です。
  3. タブを閉じ、開き直します。1作品につき、この操作を2回繰り返します。
  4. 手順2のメモと見比べ、次の表に「同じ/違う/空」を記録します。
  • 本体、庭:物の種類・数・位置・大きさ、WAVE / WAVE:並び・録音、かたちのあいだ:盤面の配置
  • 設定、庭:季節・昼夜、WAVE / WAVE:テンポ・スウィング・ミュート、かたちのあいだ:難易度
  • 履歴、庭:戻す/やり直しが効くか、WAVE / WAVE:取り消しが効くか、かたちのあいだ:一手戻すが効くか
  • 記録、庭:(該当なし)、WAVE / WAVE:(該当なし)、かたちのあいだ:手数・時計

以前その作品を遊んだことがある方は、古い庭や古いループが残っているかも見てください。遊んだ時期の記憶やメモがあれば、それと比べます。

結果の読み方

  • 「本体」が同じで「履歴」が空なら、作ったものは守られ、履歴は引き継がれない設計の可能性があります。
  • 「本体」が違う、または空なら、保存の失敗や、環境側の消去を疑います。別のブラウザで開いていないか、サイトデータを消していないか、まず確認してください。
  • 「設定」だけが初期値なら、設定が保存の対象外か、拡張で増えた項目が既定値のままかのどちらかです。この二つは外から見分けられません。

起こりやすい誤り

ここで見られるのは、現在の版が保存する範囲です。これは「version1から何を持ち越したか」とは別の問いです。履歴が空でも、移行で捨てたのか、そもそも保存しない仕様なのかは、この手順では分かりません。結論は「この範囲が保存される」までにとどめ、移行の判断には使わないでください。

また、1回の確認で断定せず、2回繰り返してください。開き直しのタイミングによって、直前の操作が保存に反映されていない可能性もあります。

次の更新に備えるなら、気に入った庭やループは、手順2のメモとスクリーンショットで残しておきます。移行後に見比べる材料になります。

作る人へ:自作で移行を考える最小の形

投稿作品のセーブ設計にも、同じ考え方が使えます。要点は、保存データに版番号を持たせ、読み込み時に古い版を新しい版へ変換することです。次は一般的な考え方を示す最小の例で、公式作品の実装ではありません。

js
// 一般的な例:version 1 は {version, name, best}、
// version 2 は {version, title, best, settings} とします。
function migrate(raw) {
  let data;
  try { data = JSON.parse(raw); } catch { return null; }
  if (!data || typeof data !== "object") return null;

  if (data.version === 2) return data;

  if (data.version === 1) {
    return {
      version: 2,
      title: typeof data.name === "string" ? data.name : "",
      best: Number.isFinite(data.best) ? data.best : null,
      settings: { sound: true }   // 新設の項目は既定値で埋める
    };
  }
  return null; // 未知の版は上書きせず、呼び出し側で扱う
}

押さえたいのは三点です。

  • 変換できない場合に、古いデータを黙って上書きしないこと。
  • 新設の項目は、既定値で埋めると決めておくこと。
  • 何を引き継ぎ、何を引き継がないかを、先に書き出しておくこと。

作品を更新するときは、上の四つの物差しで項目を仕分けるとよいでしょう。

投稿作品の保存については、アップロード作品内のlocalStorageとsessionStorageは一時メモリーの互換処理とされています。進行を残したい場合は、SDKのクラウドセーブ(作品ごとにJSONで128KiBまで)を使う設計が前提になります。ゲームにFirebaseのUID、認証トークン、メールアドレスを渡してはいけない点も、あわせて確認してください。

次の行動

「余白の庭」「WAVE / WAVE」「かたちのあいだ」のうち、遊んだことのある1作品を開き、表の手順で保存される範囲を記録してみてください。以前遊んだ記憶やメモがあれば、それと見比べると、移行の痕跡が見つかるかもしれません。変換の細部や、クラウドセーブとの関係は、現在の案内で確認してください。