Asobiai SDK

Asobiai で公開したゲームには、Asobiai SDK(window.AIGame)が自動で入ります。インストールは不要で、ゲームの中から関数を呼ぶだけで、ランキング・セーブ・トロフィー・みんなの集計・オンライン対戦が使えます。

v2.4.0ゲームの中からは window.AIGame?.version で確認できます。更新履歴

まんがでわかる Asobiai SDK
  1. アソビ「ハイスコア出た!みんなと比べたいな」
  2. アイ「ゲームオーバーで1行呼ぶだけ!」(AIGame.submitScore(score))
  3. アソビ「ランキングができた!」
  4. アイ「エラーもボクがお知らせするよ」 アソビ「直すのもラクだね!」

できること

呼ぶときは ?. を付ける

window.AIGame があるのは、Asobiai から配信されているときだけです。手元で HTML を直接開いたときには無いので、window.AIGame?.submitScore(score) のように ?. を付けて呼んでください。こうしておけば、Asobiai の外でもエラーにならずに遊べます。

js
// ?. を付けると、AIGame が無いときは何もしない
window.AIGame?.submitScore(score);

// 結果を使うときは await (Asobiai の外では undefined)
const result = await window.AIGame?.submitScore(score);

SDK が自動でしていること

  • エラーと console の出力を親ページに送り、作者だけが見られるコンソールに出します(「AIに修正を頼む」の文面にも入ります)。
  • 矢印キーやスペースでページがスクロールしないよう止めます。
  • サムネイルを撮れるよう、WebGL の preserveDrawingBuffer を有効にします。
  • iframe の大きさが読み込んだあとに決まって resize が届かないときは、代わりに resize を送ります(起動時の大きさでキャンバスを作るゲームが、単色の画面のままになるのを防ぎます)。
  • AIGame.gameOver({ score }) でゲームオーバーを知らせられます(連続プレイの「次へ」の案内などに使います)。

実行環境

  • ゲームはゲームごとに別のドメイン({ゲームID}.asobiaiplay.com)の iframe で動きます。localStorage や IndexedDB はゲームごとに分かれ、ほかのゲームやサイト本体のデータには触れません。
  • iframe の中で動くため、ページ全体をほかのページに移すことはできません。リンクは新しいタブで開いてください。
  • 外部の CDN や API はふつうに使えます。
  • Godot の Web 書き出し(スレッド無効)や Unity の WebGL ビルドも、フォルダごとアップロードすれば動きます。 エンジンから SDK を呼ぶ方法