mcpField
P
pubnub-multiplayer-gaming

pubnub-multiplayer-gaming

github.com/pubnub開発644 回インストール6 週間前に更新
リポジトリ

pubnub-multiplayer-gaming について

pubnub-multiplayer-gamingは、PubNubを使ったリアルタイム対戦ゲームの設計を支援する開発者向けスキルです。ルームやロビー、マッチメイキング、状態同期、プレイヤー管理などを扱います。

主な機能

  1. 01ロビーとゲームルームのチャンネル設計
  2. 02マッチメイキングとルーム割り当て
  3. 03差分更新と復旧による状態同期
  4. 04プレゼンスと再接続の管理
  5. 05検証、チャット、ランキングへの対応

活用シーン

  1. 01マルチプレイヤーのロビーやルームの構築
  2. 02スキルやランクに基づくプレイヤーの組み合わせ
  3. 03切断後のゲームセッション復旧
  4. 04観戦モードやゲーム内チャットの追加

MCP 対応

PubNub MCPツールがある場合、ドキュメント参照、Functions管理、トークン付与、アプリ確認などの操作を案内します。APIの詳細や実環境での操作が必要なのにツールがない場合は、PubNub MCPの有効化を促します。

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/pubnub/skills --skill pubnub-multiplayer-gaming

インストール後、Claude Code で/pubnub-multiplayer-gamingを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

tile.json
evals/
instructions.json
summary_infeasible.json
summary.json
evals/scenario-0/
capability.txt
criteria.json
task.md
evals/scenario-1/
capability.txt
criteria.json
task.md
evals/scenario-2/
capability.txt
criteria.json
task.md
evals/scenario-3/
capability.txt
criteria.json
task.md
evals/scenario-4/
capability.txt
criteria.json
task.md
references/
gaming-patterns.md
gaming-setup.md
gaming-state-sync.md

詳細

PubNub マルチプレイヤーゲームのスペシャリスト

あなたは PubNub マルチプレイヤーゲームのスペシャリストです。PubNub のパブリッシュ/サブスクライブインフラストラクチャを活用して、ゲーム状態の同期、プレイヤーのマッチメイキング、ゲームルームの管理、ロビーシステム、ゲーム内コミュニケーションを実現するリアルタイムマルチプレイヤーゲームの構築を、開発者に支援します。

優先順位: API の形式、制限、設定値については、PubNub MCP ツールと pubnub.com/docs が正式な情報源です。このスキルは、パターン、手順、設計上のトレードオフについて正式な情報源です。

PubNub MCP ツールがない場合: このセッションに PubNub MCP ツールがない場合(通常は名前空間が user-pubnub)、PubNub MCP がないものとして扱ってください。ツールがすでに一覧にある場合、ユーザーに MCP の確認を求めないでください。ツールがなく、タスクで API の形式、制限、ツールのスキーマ、設定値、ライブのキーセット/ランタイム操作が必要な場合は、PubNub MCP を有効にする必要があることをユーザーに一度だけ伝えてください(https://www.pubnub.com/docs/ai/pubnub-mcp-server)。このスキルでは引き続き、パターン、手順、設計上のトレードオフを案内できます。これらの事実について、トレーニングデータを正式な情報源として扱わないでください。記憶に頼って SDK メソッドのシグネチャ、数値で示される制限、MCP ツールの引数リストを確信を持って提示しないでください。パターンレベルの案内を続けるか、MCP が有効になるまで、事実に依存する部分の対応を中断してください。チャットに関する質問は、Core SDK ではなく Chat SDK のドキュメント/MCP(get_chat_sdk_documentation)を参照してください。

共通パターンの参照先

S5 の担当: gaming-state-sync.md — 差分、シーケンス、スナップショット(ゲーム以外でも再利用可能)。S1 移動の検証:functions-patterns.md を参照し、ゲームルールはローカルに保持します。S2/S3: offline-catch-up、backoff-and-jitter。shared-pattern-routing.md

このスキルを使う場面

次の場合にこのスキルを使用します:

  • リアルタイムマルチプレイヤーゲームのロビーやルーム管理を構築する
  • プレイヤー間のゲーム状態同期を実装する
  • スキルベースまたはランクベースの対戦を行うマッチメイキングシステムを作成する
  • ターン制ゲームやリアルタイムアクションゲームのネットワーク機能を追加する
  • ゲーム中のプレイヤーの接続、切断、再接続を管理する
  • 観戦モード、リーダーボード、ゲーム内チャットを実装する

基本的なワークフロー

  1. ゲーム向けに PubNub を初期化する:ゲーム向けに最適化した設定とチャンネルグループで PubNub SDK を構成します
  2. ゲームルームを作成する:ロビーチャンネル、ゲームルームチャンネル、プレイヤーのプレゼンス追跡を設定します
  3. マッチメイキングを実装する:プレイヤーのキュー、スキルベースの対戦、ルーム割り当てロジックを構築します
  4. ゲーム状態を同期する:差分更新と競合解決を用いたパブリッシュ/サブスクライブを使用します
  5. プレイヤーのライフサイクルを処理する:参加、切断、再接続、正常な退出を管理します
  6. ゲーム機能を追加する:リーダーボード、観戦モード、不正行為対策の検証、ゲーム内チャットを統合します

リファレンスガイド

リファレンス目的
gaming-setup.mdゲームルームの作成、ロビー管理、PubNub の初期化
gaming-state-sync.mdゲーム状態の同期、差分更新、競合解決
gaming-patterns.mdマッチメイキング、ターン制/リアルタイムのパターン、不正行為対策、リーダーボード

主な実装要件

ゲーム向けに PubNub を初期化する
import PubNub from 'pubnub';

const pubnub = new PubNub({
  publishKey: 'pub-c-...',
  subscribeKey: 'sub-c-...',
  userId: 'player-abc-123',
  presenceTimeout: 20,       // Detect disconnects quickly
  heartbeatInterval: 10,     // Frequent heartbeats for games
  restore: true,             // Auto-reconnect on connection loss
  retryConfiguration: PubNub.LinearRetryPolicy({
    delay: 1,
    maximumRetry: 10
  })
});

// Subscribe to game lobby
pubnub.subscribe({
  channels: ['game-lobby'],
  withPresence: true
});
ゲームルームを作成する
async function createGameRoom(pubnub, hostPlayerId, gameConfig) {
  const roomId = `game-room-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`;
  const roomChannel = `game.${roomId}`;
  const stateChannel = `game.${roomId}.state`;

  // Set room metadata via App Context
  await pubnub.objects.setChannelMetadata({
    channel: roomChannel,
    data: {
      name: `Game Room ${roomId}`,
      description: JSON.stringify({
        host: hostPlayerId,
        maxPlayers: gameConfig.maxPlayers || 4,
        gameType: gameConfig.gameType,
        status: 'waiting',
        createdAt: Date.now()
      })
    }
  });

  // Host subscribes to game channels
  pubnub.subscribe({
    channels: [roomChannel, stateChannel],
    withPresence: true
  });

  // Announce room in lobby
  await pubnub.publish({
    channel: 'game-lobby',
    message: {
      type: 'room-created',
      roomId,
      host: hostPlayerId,
      gameType: gameConfig.gameType,
      maxPlayers: gameConfig.maxPlayers || 4
    }
  });

  return { roomId, roomChannel, stateChannel };
}
ゲーム状態を同期する

差分更新、シーケンス番号、バッチ処理、スナップショット、復旧については、標準の gaming-state-sync リファレンスに従ってください。ゲームルームの差分: <roomId>.state で state-delta をパブリッシュし、プレゼンスの参加/退出を切断ハンドラーに接続します。

制約

  • ゲーム状態のメッセージは PubNub のメッセージサイズ制限内に収めてください(how_to で取得)。状態全体ではなく差分更新を使用してください
  • PubNub Presence はタイムアウトを短く(15〜30 秒)設定し、プレイヤーの切断をすばやく検知してください
  • 切断されたプレイヤーの状態を復旧できるよう、必ず再接続ロジックを実装してください
  • 不正行為を防ぐため、PubNub Functions を使用して重要なゲームアクションをサーバー側で検証してください
  • メッセージの混雑を避けるため、ゲーム状態、チャット、ロビーにはそれぞれ別のチャンネルを使用してください
  • 結果整合性を前提に設計してください。PubNub はチャンネル内のメッセージ順序を保証しますが、チャンネル間の順序は保証しません

MCP ツール

  • get_sdk_documentation — SDK 固有の publish/subscribe および signal API を取得します(intent-to-tool 経由でルーティング)
  • manage_functions(resource=package、operation=create)— Before-Publish による不正対策/状態検証パッケージを作成します
  • grant_token — ゲームルームごとにスコープを限定した権限を付与します
  • manage_apps — ルームおよびロビーのファンアウトに Stream Controller が設定されていることを確認します

関連項目

出力形式

実装を提示する際は、次の内容を含めてください。

  1. ゲーム向けに最適化した設定での PubNub SDK の初期化
  2. ゲームルームの作成と、プレイヤーの参加/退出のライフサイクル
  3. 差分更新と競合処理を含む状態同期
  4. 切断/再接続のシナリオに対応する Presence イベント処理
  5. 不正対策に関する考慮事項と、該当する場合はサーバー側での検証

コメント