ゲーバフby AIGameDeck
作り方
ダッシュボード

ゲーバフでゲームを公開する

ゲーバフ(by AIGameDeck)は、ブラウザゲームをアップロードすると、ランキング・シェア・プレイ記録・リアルタイム対戦つきで遊べるようになるサイトです。 この資料は、人と AI(コーディングエージェント)の両方に向けて書いています。AI にはこのページ(https://gebuff.com/llms.txt)をそのまま渡してください。

1. 公開までの流れ

  1. https://gebuff.com/login/ でログインする(Google アカウントかメールアドレス)
  2. https://gebuff.com/dashboard/ の「新しいゲーム」で、URL に使う名前(例: tanetori)とタイトルを決める
  3. ゲームのファイルをアップロードする
    • HTML 1 枚、またはフォルダを zip にしたもの(中に index.html)
    • 画像・音・JS などは相対パスで読み込む(例: ./img/hamster.png)
  4. https://gebuff.com/play/<名前> で遊べるようになる。アップロードし直すと新しいバージョンになる(前のバージョンに戻すこともできる)

AI やコマンドからアップロードする

ダッシュボードの「AI やコマンドからアップロード」でトークンを作り、次のコマンドを使います。

# zip の場合
curl -X POST --data-binary @game.zip \
  -H "Content-Type: application/zip" \
  -H "Authorization: Bearer <トークン>" \
  https://gebuff.com/api/games/<名前>/upload

# HTML 1 枚の場合
curl -X POST --data-binary @index.html \
  -H "Content-Type: text/html" \
  -H "Authorization: Bearer <トークン>" \
  https://gebuff.com/api/games/<名前>/upload

返事の url が遊ぶページです。ゲームの作成も API でできます: curl -X POST -H "Authorization: Bearer <トークン>" -H "Content-Type: application/json" -d '{"id":"<名前>","title":"<タイトル>"}' https://gebuff.com/api/games

2. ゲームの紹介文とサムネイル(検索に出すために必要)

ゲームを載せる前に、ダッシュボードで一度だけ「運営がゲームのプレイ動画・紹介動画を作り、本サイトや YouTube などで公開すること」への同意が必要です(トークンでのアップロードも同じ)。

ゲームページは検索エンジンの入口になります。説明と遊び方がそれぞれ 20 文字以上ないページは、検索に出しません(中身の薄いページはサイト全体の評価を下げるため)。 アップロードするときに、次のどちらかでゲームの情報を入れてください(ダッシュボードの「設定」からも書けます)。

zip の場合は、index.html と同じ場所に aigamedeck.json を置きます。

{
  "title": "タネ取り合戦",
  "description": "ハムスターになって、ひまわりのタネを友達と取り合う 45 秒の対戦ゲーム。",
  "howToPlay": "ステージに落ちているタネに触れると 1 こゲット。45 秒でいちばん多く集めた人の勝ち。招待リンクで友達を呼べます。",
  "controls": "矢印キー/WASD、スマホは行きたい場所をタッチ",
  "tags": ["action", "versus", "kids"],
  "thumbnail": "thumbnail.png",
  "video": "https://youtu.be/xxxxxxxxxxx"
}

HTML 1 枚の場合は、<head> の中に同じ内容を書きます。

<script type="application/json" id="aigamedeck-meta">
{ "description": "…", "howToPlay": "…", "controls": "…", "tags": ["puzzle"] }
</script>

3. SDK

サイトにアップロードしたゲームには、SDK が自動で読み込まれ、window.aigamedeck として使えます。 何も書かなくても、プレイ回数・遊んだ時間・どこから来たかは記録されます。

手元で試すときにも動くように、ゲームのスクリプトの先頭に次の 1 行を入れるのがおすすめです(サイト上では同じものが使われます)。

const aigamedeck = window.aigamedeck ?? (await import("https://gebuff.com/v1/aigamedeck.js")).aigamedeck;

<script type="module"> の中に書いてください(await を使うため)。 以前の名前(window.arcade、arcade.json、<script id="arcade-meta">)で書いたゲームも、そのまま動きます。

4. ランキング

const r = await aigamedeck.submitScore(1234);
// r = { best, isBest, rank, total }  自己ベスト・今回がベストか・順位・参加人数

5. シェア

aigamedeck.share({ score: 1234 });

6. プレイヤー

await aigamedeck.ready;          // サイトとのやりとりの準備ができるまで待つ
aigamedeck.player;               // { id, name, loggedIn }
aigamedeck.on("player", (p) => { /* 名前が変わった */ });

名前の変更やログインは枠でできます。ゲームの中に名前入力を作る必要はありません。

7. リアルタイム対戦

const room = await aigamedeck.join({ max: 4 });

同期のやり方は 3 つ。ゲームに合うものを選びます(混ぜて使えます)。

型 向いているゲーム 書くこと
自分の状態を配る レース、アクション、かくれんぼ 毎フレーム room.me.set({ x, y })。相手は for (const p of room.others) draw(p.state)
ホストが仕切る 共通の敵・アイテム・スコアがある ホストだけが room.world.set({...})。ほかの人は room.toHost("名前", データ) でお願いする
出来事を送る カード、ボード、クイズ room.send("名前", データ) と room.on("名前", (データ, 送った人) => {})

主な API:

8. 動作確認

9. AI 向けチェックリスト

  1. ゲームは index.html から始まり、ほかのファイルは相対パスで読み込む
  2. aigamedeck.json(または <script id="aigamedeck-meta">)に説明・遊び方・操作・ジャンルを書く。1200×630 の thumbnail.png もあるとよい
  3. スクリプトの先頭に const aigamedeck = window.aigamedeck ?? (await import("https://gebuff.com/v1/aigamedeck.js")).aigamedeck;
  4. 1 プレイが終わったら aigamedeck.submitScore(スコア) を 1 回。タイムなら { order: "asc" }
  5. 結果画面に「シェア」ボタン → aigamedeck.share({ score })
  6. ランキング画面・名前入力・ログイン画面はゲームの中に作らない(サイトの枠がやる)
  7. 対戦ゲームなら aigamedeck.join()。位置は room.me.set、取り合うものはホストが決める、時間は room.now()
  8. 手元で開いてエラーが出ないことを確かめてから、アップロードする

10. 利用条件