PlayDrop logoPlayDrop Studio
CreatePlayTradeEarnLearnConnectorsAssetsCommunitySupport
PlayDrop logoPlayDrop Studio
CreatePlayTradeEarnLearnConnectorsAssetsCommunitySupport
Sign in
Online parties and voice
Documentation

Start here

OverviewYour first gamePlayDrop gamesFAQ

Create with Cloud

Cloud creationPlans & generations

Connect your AI app

All connectorsClaudeChatGPTClaude CodeCodexCursorGeminiAntigravityGrok BuildGrok BotGrok ChatLovableReplit

Publish and share

Publish from your AI appSimple HTML gamesPackaging and .playPublish & importGame filesVisibility and reachListing art and videoGenres and tagsLocalizationInstant games

Game experience

Loading, pause and audioFull screen and safe areasCloud savesLocal parties and controllers

Play together

Sharing, friends and invitesLeaderboardsAchievementsOnline parties and voiceRealtime game servers

Earn

MonetizationCredits & rewards

Assets

Game assetsAI asset generationCustom formats and player creations

Reference

Client SDKServer SDKcatalogue.jsonErrors and recoveryTroubleshooting
DocumentationOnline parties and voice
Play together

Online parties and voice chat in PlayDrop games

Let friends play together online: declare party sizes, open PlayDrop's party window, join reserved rooms with sdk.multiplayer.join and control room voice.

A PlayDrop party is a group of friends that moves between games together. When a party starts your game, PlayDrop reserves seats for its members in one of your server's rooms, so friends arrive in the same match instead of being split up. Voice chat runs in PlayDrop, not in your game.

What you need

  • A realtime game server: parties play in your Colyseus rooms.
  • Signed-in players: rooms refuse guests.
  • These declarations in catalogue.json:
json
{
  "types": ["solo", "online", "party"],
  "party": { "online": [2, 3, 4] },
  "roomVoice": true,
  "server": { "entry": "server/index.mjs", "rooms": ["game"] }
}

party.online lists the exact group sizes, up to 4, that may arrive together; [2, 4] excludes 3. It is the size of the arriving group, not the room capacity: two parties of four can share an eight-seat room. party requires the party type and party.online requires online. roomVoice: true turns on room voice and requires online.

Join the right room

js
if (!sdk.me.isLoggedIn) {
  await sdk.me.promptLogin();
}
const room = await sdk.multiplayer.join("game", { mode: "versus" });

join consumes the player's reserved party seat when PlayDrop launched a party, and otherwise joins independently. If a party join fails it rejects; it never silently puts the player in a different room. A guest gets authentication_required and PlayDrop shows sign-in; join again from sdk.me.onAuthChange. Keep the same room across rounds.

After a reload, sdk.multiplayer.reconnect(roomName, token) restores the reserved seat with a reconnection token you stored privately for this game, version and user. Discard the token and call join on multiplayer_reconnect_expired, multiplayer_reconnect_unavailable or party_reconnect_mismatch.

The party window

From a button, sdk.social.openParty({ mode: "online" }) opens PlayDrop's party window, where players invite friends and turn voice on or off. An existing party is reused. openParty() opens the party menu and openParty({ section: "voice" }) opens voice settings; do not combine mode and section. The promise resolves when the window closes, including on cancel.

Read the party with sdk.social.getParty() or sdk.social.onPartyChange(callback), which delivers the current state first: { partyId, leaderUserId, revision, members, launch }. launch.status is joining or ready when the party is playing this game. Membership alone does not mean the players share a room; use join.

Party membership belongs to PlayDrop: games cannot add or remove party members or control microphones, and players invite friends to the party from this window. A game can still send its own invite or challenge card to a friend with sdk.social.sendMessage; see sharing, friends and invites.

Room voice

With roomVoice: true, everyone in a room can talk, with no server code. To change who hears whom, bind the room on your server and set a policy:

js
import { playdrop } from "@playdrop/server";

const platform = playdrop.multiplayer.forRoom(this);
platform.voice.setPolicy("team");
platform.voice.setTeam(client.auth, "red");

Policies are all, team, proximity (with { range }) and off. setAudience(player, audience) overrides one player and updatePositions([{ player, position: { x, y, z } }]) feeds proximity; pass null to clear a team or override. PlayDrop enforces who may hear whom. In the browser, sdk.multiplayer.voice.updateSpatialState({ listener: { position, forward, up }, speakers: [{ userId, position }] }) only adjusts volume and panning.

Voice is subject to player consent, mute and blocks, and depends on the host build and rollout.

Pausing

The party capsule does not pause gameplay. PlayDrop's pause stops your client, but the room stays connected and your server keeps running. One player's pause must not stop the match for others; implement any match pause on the server.

Test

Upload a private version, then open the test link in two windows with player=1 and player=2, as described in realtime game servers. Local parties with controllers are a separate mode: see local parties and controllers.

Related guides

  • Realtime game serversRun a hosted Colyseus 0.17 server with a MongoDB database for your game, connect from the browser with the SDK, test with two players and know the limits.
  • Local parties and controllersRead physical gamepads and PlayDrop phone controllers through sdk.device, follow local player slots, declare controller support and local party sizes.
  • Sharing, friends and invitesShare a game with an image or clip, read launch payloads, pick friends, send invite and challenge cards in PlayDrop Chat, and recommend other games.
PreviousAchievements for PlayDrop gamesNextRealtime game servers on PlayDrop: Colyseus and MongoDB
View Markdown
EnglishFrançaisDeutsch日本語한국어EspañolPortuguês (Brasil)Bahasa Indonesia繁體中文简体中文ItalianoPolskiNederlandsSvenskaNorsk bokmålSuomiTürkçeไทยTiếng Việtالعربية

On this page

What you needJoin the right roomThe party windowRoom voicePausingTest
View Markdown