ハイスコアが残る、つづきから遊べる、音量の設定を覚えている。セーブ機能があると、ゲームは何度も遊びたくなるものになります。
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でゲームを開いて、少し遊んでスコアや進み具合を残す
- ページを再読み込みするか、一度ほかのページに移ってから、もう一度ゲームを開く
- 記録が残っていれば成功。うまく動いたら公開にしましょう
まとめ
- CraftNovaのゲームでも、
localStorageを使えばセーブできる - AIには「localStorage に、1つのキーにまとめてJSONで保存して」と頼む
- 保存はその端末・そのブラウザだけで、1ゲームにつき約1MBまで
- 「セーブデータを消す」ボタンもいっしょに作っておくと親切
ゲームの作り方や投稿の手順は「ゲームの投稿方法」で説明しています。