ハイスコアが残る、つづきから遊べる、音量の設定を覚えている。セーブ機能があると、ゲームは何度も遊びたくなるものになります。

CraftNovaのゲームでもセーブは使えます。このページでは、セーブ機能をAIに作ってもらう方法と、CraftNovaでセーブを使うときに知っておきたいことを説明します。

セーブでできること

たとえば、次のようなものを保存できます。

  • ハイスコア・ベストタイム:自分の記録をこえたくて、もう一回遊びたくなる
  • 進み具合:クリアしたステージ、レベル、持っているアイテムなど
  • 設定:音のオン・オフ、むずかしさ、言語など
  • 図鑑・実績:集めたキャラクターや、達成したことの記録

AIへの頼み方

セーブは、ブラウザに備わっている localStorage という保存場所を使います。むずかしく考えなくても、AIに次のように頼めば作ってくれます。

このゲームにセーブ機能をつけてください。
・ハイスコアと、クリアしたステージを localStorage に保存すること
・保存するデータは1つのキーにまとめて、JSONで保存すること
・データが読み込めなかったときは、はじめから遊べるようにすること
・タイトル画面に「セーブデータを消す」ボタンをつけること

投稿ページの「ゲーム作成ガイドライン」にもセーブの書き方が入っているので、ガイドラインを渡してから頼むと、より確実です。

AIが作るコードのイメージ

だいたい次のような形になります。中身を全部わからなくても大丈夫です。

// 保存する
const save = { highScore: 1200, clearedStage: 3 };
localStorage.setItem('mygame-save', JSON.stringify(save));

// 読み込む(読めなかったら、はじめから)
let data = { highScore: 0, clearedStage: 0 };
try {
  data = JSON.parse(localStorage.getItem('mygame-save')) || data;
} catch (e) {}

CraftNovaでのセーブのしくみ

CraftNovaのゲームは、遊ぶ人を守るための「守られた箱」の中で動いています(くわしくは「CraftNovaのゲームが安全に遊べるしくみ」)。 この箱の中では、本当はブラウザの保存場所が使えません。

そこでCraftNovaでは、ゲームが localStorage に保存しようとすると、CraftNovaが代わりに保存するしくみを用意しています。次にゲームを開いたときは、保存しておいたデータをゲームに渡します。 ゲームを作る人は、ふつうに localStorage を使うだけでOKです。

知っておきたい注意点

保存されるのは、その端末・そのブラウザだけ

セーブデータは、遊んでいる人のブラウザの中に保存されます。スマホで遊んだ続きをパソコンで遊ぶ、ということはできません。 また、ブラウザの履歴やサイトのデータを消すと、セーブデータも消えます。シークレットモードで遊んだときは、ブラウザを閉じると消えます。

保存できるのは1ゲームにつき約1MBまで

ハイスコアや進み具合なら、1MBで十分すぎるほど保存できます。ただし、画像やたくさんの記録をそのまま保存しようとすると、上限をこえて保存されなくなることがあります。保存するのは、必要な数字や文字だけにしましょう。

使えるのは localStorage だけ

IndexedDB や Cookie など、ほかの保存方法はCraftNovaでは使えません。AIがほかの方法を使っていたら、「localStorage で保存するように直して」と頼みましょう。

ゲームを更新しても、セーブデータは残る

マイページからゲームのHTMLを貼りかえても、遊んでいる人のセーブデータはそのまま残ります。 もし保存するデータの形を大きく変えたときは、古いデータを読み込んでもこわれないように作っておく必要があります。AIに「前のバージョンのセーブデータが残っていても動くようにして」と頼んでおくと安心です。

「セーブデータを消す」ボタンをつけておくと、遊ぶ人が自分ではじめからやり直せます。CraftNovaにはゲームごとにセーブを消す機能がないので、ゲームの中に用意しておくのがおすすめです。

セーブが動いているか確かめる方法

  1. ゲームを非公開で投稿する(ほかの人には見えません)
  2. CraftNovaでゲームを開いて、少し遊んでスコアや進み具合を残す
  3. ページを再読み込みするか、一度ほかのページに移ってから、もう一度ゲームを開く
  4. 記録が残っていれば成功。うまく動いたら公開にしましょう

まとめ

  • CraftNovaのゲームでも、localStorage を使えばセーブできる
  • AIには「localStorage に、1つのキーにまとめてJSONで保存して」と頼む
  • 保存はその端末・そのブラウザだけで、1ゲームにつき約1MBまで
  • 「セーブデータを消す」ボタンもいっしょに作っておくと親切

ゲームの作り方や投稿の手順は「ゲームの投稿方法」で説明しています。