KUMODeck
EN

友だちとオンラインで遊べるようにする

ゲーム向け。 AIエージェントに 「オンラインで対戦できるようにして」(または「友だちと遊べるようにして」)と頼みます。エージェントは全テンプレートに入っているmultiplayerのSkill(.claude/skills/multiplayer/と.agents/skills/multiplayer/)に沿って、KUMODeckのマルチプレイのルームの上に組み立てます。サーバーのコードを書く必要はありません。

最初に 1 回だけ質問します(料金つき)#

オンラインの遊び方に「これが正解」はないので、エージェントは作る前に 1 回だけ、ふつうの言葉で聞きます。番号で答えても、「おまかせ」と言うだけでもかまいません。

  1. 誰と遊ぶ? 友だち(6文字の番号を送って同じ部屋に入る)/知らない人とも(自動で組み合わせる)/両方
  2. ゲームの速さは? 順番に動かす・会話が中心/のんびりリアルタイム(協力・パーティー)/速いアクション
  3. ずる(ありえない点数など)を止めたい? 気にしない(仲間うちで遊ぶだけ)/止めたい(順位に残るスコアや賞品がある)
  4. おまかせ:ゲームに合う中でいちばん安いやり方をエージェントが選びます

どのやり方も、まず料金を出します。4人で30分遊んだ1回あたり、前払いの残高から原価どおりです(数字は目安で、約束ではありません)。

やり方1回あたりの料金あきらめること
リンクかQRを送り、返事のリンクを送り返してもらう(友だち)完全に0セント(KUMODeckを通りません)やり取りが2回になります。回線によっては直接つながらず、遊べないことがあります(そのときは6文字の番号で)
6文字の番号を1回伝える部屋に入る分:100万回で約50セント(目安)+下のどれかのやり方の料金—
KUMODeckを通して届ける順番に動かす 約0.31セント($5で約1,600回)・のんびりリアルタイム 約0.39セント(約1,280回)・速いアクション 約0.47セント(約1,060回)ほかの人に見えるものはありません。ゲームのルールの判定まではしません(下の表)
プレイヤーどうしを直接つなぐゲーム中のやり取り 0セント・部屋に入る分 0.01セント未満(目安・まだ計測していません)相手に住んでいる地域の目安が見えます。ずるは止められません。最大8人
直接つなぎ、必要なときだけKUMODeckを通す直接の料金+通した分(送った量で計算・1 GBあたり$0.05):順番に動かす0.01セント未満・のんびり約0.2セント・速いアクション約0.3セント(目安)ずるは止められません。通したときは住んでいる地域は隠れます
直接だけ(KUMODeckを通さない)やり取り 0セント・部屋に入る分 0.01セント未満直接つながらない組み合わせの人どうしは、いっしょに遊べません

答えからエージェントが選ぶ設定:

答えエージェントが書く設定
ずるを止めたい、または9人以上"transport": "server"(既定)
友だちだけ+おまかせリンクかQRで招待(部屋を使わない・SDKのリンクでつなぐ道具)。つながらないときは6文字の番号
友だちだけ"transport": "p2p"、"p2p": { "relay": "fallback" }(まず直接、つながらないときだけ通す)
知らない人とも、または両方"transport": "p2p"、"p2p": { "relay": "always" }(知らない人に住んでいる地域を見せない)
おまかせ合う中でいちばん安いもの:"p2p": { "relay": "fallback" }。順位に残るスコアや賞品があるゲームならserver
通す料金を0にしたいと頼んだとき"p2p": { "relay": "never" }(つながらない人が出ることがあります)

エージェントがすること#

  1. ルームをONにし、答えに合うモードを足します(たとえば1対1なら2人)。 ``sh kumodeck features on multiplayer kumodeck config push # 開発用 ` `json { "multiplayer": { "modes": [{ "key": "duel", "minPlayers": 2, "maxPlayers": 2, "fillTimeoutSeconds": 20 }] } } ``
  2. オンラインで遊ぶボタンを足します。知らない人とのクイックマッチか、6文字の部屋コードと招待リンクで友だちだけを呼ぶプライベートルームです(kumo.rooms.quickMatch、kumo.rooms.create(mode, { private: true })、kumo.rooms.join(code))。
  3. 手をroom.sendで送り、全員がそろえるべきもの(誰の番か・盤面・スコア)は共有状態(room.setState)に置きます。つなぎ直した人にも同じ試合が見えます。
  4. つなぎ直しを生かします。SDKが自分でつなぎ直し、サーバーは切れた人の席を20秒残します(ページを読み込み直しても同じ)。
  5. 開発用に出し(kumodeck deploy --env development)、試し方を伝えます。URLを2つのタブで開き、2つ目に?player=2を付けます。本番に出すのは頼んだときだけです。

期待してよいこと・よくないこと#

サーバーが守ること誰がどのルームにいるか、部屋コード、ホスト、全員に同じ順で届く共有状態、大きさと回数の上限、BANした人は入れない
ゲームの役目ルール(手・当たり・勝敗)。改造したクライアントは何でも送れます。ホストに決めさせ、ずるをする価値のあるもの(順位に残るスコア・報酬)は自分のFunctionsとデータベースで確かめます
上限1ルーム最大64人、1人あたり毎秒30通、1通16 KB、共有状態64 KB
向いているターン制・ボードゲーム・カードゲーム、クイズ、パーティーゲーム、協力プレイ、少人数のカジュアルなリアルタイムのゲーム
向いていないサーバーがゲームを動かす必要のある速い対戦(FPS、ロールバックのある格闘ゲーム、ラグの補正)

ルームは全員が抜けると何も残しません。進み具合はクラウドセーブに、履歴のあるチャットはリアルタイムの部屋(chatのSkill)を使います。利用料は前払いの残高から原価どおりです(料金に例があります)。