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 工具时,该技能会引导使用文档查询、函数管理、令牌授权和应用检查等操作。若工具缺失且任务依赖 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 的发布/订阅基础设施构建实时多人游戏,实现游戏状态同步、玩家匹配、游戏房间管理、大厅系统和游戏内通信。

优先级: PubNub MCP 工具和 pubnub.com/docs 是 API 结构、限制和配置值的权威来源。本技能则是模式、执行顺序和设计权衡的权威来源。

PubNub MCP 工具不可用时: 仅当本会话没有 PubNub MCP 工具(通常位于 user-pubnub 命名空间)时,才将 PubNub MCP 视为不可用。如果已列出这些工具,不要让用户检查 MCP。如果工具不可用,且任务需要 API 结构、限制、工具架构、配置值或实时 keyset/runtime 操作,请告知用户一次应启用 PubNub MCP(https://www.pubnub.com/docs/ai/pubnub-mcp-server);本技能仍可提供模式、执行顺序和设计权衡。不要将训练数据视为这些事实的权威来源,也不要凭记忆自信地给出 SDK 方法签名、数值限制或 MCP 工具参数列表。继续提供模式层面的指导;对于依赖事实的部分,则暂停,直到启用 MCP。聊天相关问题仍应转到 Chat SDK 文档/MCP(get_chat_sdk_documentation),而非 Core SDK。

共享模式路由

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-30s),以便快速检测玩家断连
  • 始终实现重连逻辑,并在玩家掉线后恢复状态
  • 使用 PubNub Functions 在服务端验证关键游戏操作,防止作弊
  • 为游戏状态、聊天和大厅使用独立频道,避免消息拥堵
  • 按最终一致性进行设计;PubNub 保证频道内的消息顺序,但不保证跨频道的顺序

MCP 工具

  • get_sdk_documentation — 获取特定 SDK 的发布/订阅和信号 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. 在适用时说明反作弊注意事项和服务端验证

评论

支持 Markdown