بنقرة واحدة
pubnub-multiplayer-gaming
Build real-time multiplayer games with PubNub game state sync
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
Build real-time multiplayer games with PubNub game state sync
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
Build real-time applications with PubNub pub/sub messaging. Covers SDK initialization, persistent userId, channel design and naming, publish/subscribe basics, message listeners, and connection state. Use when bootstrapping a PubNub project, adding pub/sub to an app, designing channel hierarchies, or working out userId / channel naming rules.
Deliver real-time sports scores, play-by-play, and scoreboards with PubNub
Create, configure, and deploy PubNub Functions 2.0 event handlers, triggers, and serverless endpoints. Covers Before/After Publish, On Request, On Interval; built-in modules (kvstore, xhr, vault, pubnub, crypto, jwt, ugc, jsonpath, advanced_math, codec/*); chaining (3 hops, 5 consecutive, Chaining vs Forking, kvstore state sharing); runtime quirks (3-call external cap, 10-call vault cap, cold start, request.path normalization, vault availability, sendFile message); DB-trigger patterns; and bundling/TypeScript workflow (esbuild externals, 64KB guard, __require shim stripping, default-export shape). Use when building real-time message transformations, edge data processing, REST endpoints backed by PubNub, webhook integrations, or shipping bundled/transpiled TypeScript Functions from inside the message pipeline.
Builds real-time analytics and automation with PubNub Illuminate. Covers Business Objects (schema), Metrics (aggregations), Decisions (threshold-triggered actions with the 4-step PUT workflow), Queries (ad-hoc vs saved pipelines), and Dashboards. Use when tracking KPIs, building threshold alerts, automating mute/publish/App-Context-update actions, detecting spam or anomalies, or visualizing live activity.
Scale PubNub applications for high-volume real-time events using channel groups, wildcard subscriptions, sharding, and large-event readiness. Covers Stream Controller add-on, hard caps, payload coalescing referenced into pubnub-observability, and the engagement model for 10K+ concurrent live events. Persistence/history is owned by pubnub-history.
Deliver real-time stock quotes and market data with PubNub
| name | pubnub-multiplayer-gaming |
| description | Build real-time multiplayer games with PubNub game state sync |
| license | PubNub |
| metadata | {"author":"pubnub","version":"0.2.0","domain":"real-time","triggers":"pubnub, multiplayer, gaming, game state, player matching, game rooms, lobby, sync","role":"specialist","scope":"implementation","output-format":"code"} |
Canonical owners (link-don't-copy): This vertical relies on cross-cutting skills. Always link to the canonical owner instead of duplicating. Foundations: SDK initialization (
new PubNub(,userId/UUID), pub/sub basics (pubnub.publish(,pubnub.subscribe(,addListener), channel naming, message filters, SDK upgrades, REST API. Environment: keysets, env separation, publish/subscribe/secret keys, key rotation hygiene, demo keys, custom origin. Security: Access Manager /grantToken, AES-256 / message encryption, IP allowlisting, DoS mitigation, compliance / SOC 2 / HIPAA. Real-time features: presence events /withPresence, presence setup / heartbeat, dropped connections, multi-device sync. History: Message Persistence andfetchMessages, offline catch-up, retention. App Context: users / user metadata, channels and memberships, metadata and filtering. Functions: Before/After Publish,request.ok()/request.abort(),require('kvstore')/xhr/vault, chaining (3-hop limit), DB triggers and runtime quirks, common patterns. Reliability: exponential backoff and jitter, idempotent publish / message id, dedup on merge, queue and retry, schema version. Scale: channel groups, wildcard subscribe, Stream Controller, performance tuning, 10K+ live events. Observability: logging correlation (channel + message_id + user_id + timetoken), test pyramid, payload sizing / cost, incident triage runbook, usage metrics / transaction count. Events & Actions: event types, action targets (webhook / SQS / Kafka / Lambda), filters / JSONPath. Illuminate: Business Objects, Metrics, Decisions (4-step workflow), Queries, service integration auth. Chat: Chat SDK setup, message actions / reactions, file sharing /sendFile, threading. Routing: intent-to-tool decision tree (get_sdk_documentation,write_pubnub_app, etc.).
You are a PubNub multiplayer gaming specialist. Your role is to help developers build real-time multiplayer games using PubNub's publish/subscribe infrastructure for game state synchronization, player matchmaking, game room management, lobby systems, and in-game communication.
Invoke this skill when:
| Reference | Purpose |
|---|---|
| gaming-setup.md | Game room creation, lobby management, and PubNub initialization |
| gaming-state-sync.md | Game state synchronization, delta updates, and conflict resolution |
| gaming-patterns.md | Matchmaking, turn-based/real-time patterns, anti-cheat, and leaderboards |
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 };
}
// Send delta state updates (only changed properties)
async function sendStateUpdate(pubnub, stateChannel, deltaUpdate) {
await pubnub.publish({
channel: stateChannel,
message: {
type: 'state-delta',
senderId: pubnub.getUserId(),
timestamp: Date.now(),
sequenceNum: ++localSequence,
delta: deltaUpdate
}
});
}
// Listen for state updates and apply them
pubnub.addListener({
message: (event) => {
if (event.channel.endsWith('.state')) {
const { type, delta, sequenceNum, senderId } = event.message;
if (type === 'state-delta' && senderId !== pubnub.getUserId()) {
applyDelta(gameState, delta, sequenceNum);
renderGame(gameState);
}
}
},
presence: (event) => {
if (event.action === 'leave' || event.action === 'timeout') {
handlePlayerDisconnect(event.uuid, event.channel);
} else if (event.action === 'join') {
handlePlayerJoin(event.uuid, event.channel);
}
}
});
get_sdk_documentation — pull SDK-specific publish/subscribe and signal APIs (route via intent-to-tool)create_pubnub_function — scaffold the Before-Publish anti-cheat / state validatorgrant_token — issue scoped grants per game roommanage_apps — verify Stream Controller for room and lobby fan-outrequire('kvstore') for authoritative state; chaining for enrich-then-broadcastsignal over publish for high-frequency state via payload hygieneWhen providing implementations: