Asobiai SDK
Asobiai で公開したゲームには、Asobiai SDK(window.AIGame)が自動で入ります。インストールは不要で、ゲームの中から関数を呼ぶだけで、ランキング・セーブ・トロフィー・みんなの集計・オンライン対戦が使えます。
v2.4.0ゲームの中からは window.AIGame?.version で確認できます。更新履歴
できること
ランキングゲームオーバーで1回呼ぶだけで、ゲームページにランキングが出ます。
window.AIGame?.submitScore(score);セーブ・ロードログインしている人はアカウントに保存。ほかの端末でも続きから遊べます。await window.AIGame?.save("slot1", data);トロフィー条件を満たしたら渡すだけ。ゲームページとプロフィールに出ます。window.AIGame?.unlockAchievement("first_clear");みんなの集計結果を1票入れて、みんなの分布を読めます。誰が何を選んだかは残りません。window.AIGame?.tally("d20261031.moves", 5);オンライン対戦部屋に入って送り合うだけ。サーバーのコードは書かなくていい。const room = await window.AIGame.joinRoom({ maxPlayers: 2 });Godot・Unity から使うゲームエンジンで作ったゲームから呼ぶ方法です。JavaScriptBridge.eval("window.AIGame?.submitScore(%d)" % score)呼ぶときは ?. を付ける
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 を呼ぶ方法




