Gruppi online e chat vocale nei giochi PlayDrop
Fai giocare gli amici insieme online: dimensioni dei gruppi, finestra del gruppo di PlayDrop, stanze riservate con sdk.multiplayer.join e voce della stanza.
Un gruppo PlayDrop è un insieme di amici che si sposta da un gioco all’altro insieme. Quando un gruppo avvia il tuo gioco, PlayDrop riserva i posti ai suoi membri in una delle stanze del tuo server, così gli amici arrivano nella stessa partita invece di essere divisi. La chat vocale funziona in PlayDrop, non nel tuo gioco.
Cosa ti serve
- Un server di gioco in tempo reale: i gruppi giocano nelle tue stanze Colyseus.
- Giocatori che hanno effettuato l’accesso: le stanze rifiutano gli ospiti.
- Queste dichiarazioni in catalogue.json:
{
"types": ["solo", "online", "party"],
"party": { "online": [2, 3, 4] },
"roomVoice": true,
"server": { "entry": "server/index.mjs", "rooms": ["game"] }
}party.online elenca le dimensioni esatte dei gruppi, fino a 4, che possono arrivare insieme; [2, 4] esclude 3. È la dimensione del gruppo in arrivo, non la capienza della stanza: due gruppi da quattro possono condividere una stanza da otto posti. party richiede il tipo party e party.online richiede online. roomVoice: true attiva la voce della stanza e richiede online.
Entra nella stanza giusta
if (!sdk.me.isLoggedIn) {
await sdk.me.promptLogin();
}
const room = await sdk.multiplayer.join("game", { mode: "versus" });join usa il posto riservato al giocatore nel gruppo quando è stato PlayDrop ad avviare un gruppo, altrimenti entra in modo indipendente. Se l’ingresso di un gruppo non riesce, la chiamata viene rifiutata; non sposta mai il giocatore in un’altra stanza senza dirlo. Un ospite riceve authentication_required e PlayDrop mostra l’accesso; entra di nuovo da sdk.me.onAuthChange. Mantieni la stessa stanza tra un round e l’altro.
Dopo un ricaricamento, sdk.multiplayer.reconnect(roomName, token) ripristina il posto riservato con un token di riconnessione che hai salvato in privato per questo gioco, questa versione e questo utente. Scarta il token e chiama join in caso di multiplayer_reconnect_expired, multiplayer_reconnect_unavailable o party_reconnect_mismatch.
La finestra del gruppo
Da un pulsante, sdk.social.openParty({ mode: "online" }) apre la finestra del gruppo di PlayDrop, dove i giocatori invitano gli amici e attivano o disattivano la voce. Un gruppo esistente viene riutilizzato. openParty() apre il menu del gruppo e openParty({ section: "voice" }) apre le impostazioni della voce; non combinare mode e section. La promise si risolve quando la finestra si chiude, anche in caso di annullamento.
Leggi il gruppo con sdk.social.getParty() oppure sdk.social.onPartyChange(callback), che fornisce per primo lo stato attuale: { partyId, leaderUserId, revision, members, launch }. launch.status vale joining o ready quando il gruppo sta giocando a questo gioco. Far parte dello stesso gruppo non significa che i giocatori condividano una stanza; usa join.
L’appartenenza al gruppo è gestita da PlayDrop: i giochi non possono aggiungere o rimuovere membri del gruppo né controllare i microfoni, e i giocatori invitano gli amici nel gruppo da questa finestra. Un gioco può comunque inviare a un amico una propria carta di invito o di sfida con sdk.social.sendMessage; vedi condivisione, amici e inviti.
Voce della stanza
Con roomVoice: true, tutti in una stanza possono parlare, senza codice server. Per cambiare chi sente chi, collega la stanza sul tuo server e imposta una regola:
import { playdrop } from "@playdrop/server";
const platform = playdrop.multiplayer.forRoom(this);
platform.voice.setPolicy("team");
platform.voice.setTeam(client.auth, "red");Le regole sono all, team, proximity (con { range }) e off. setAudience(player, audience) imposta un’eccezione per un giocatore e updatePositions([{ player, position: { x, y, z } }]) fornisce i dati per la prossimità; passa null per rimuovere una squadra o un’eccezione. È PlayDrop a imporre chi può sentire chi. Nel browser, sdk.multiplayer.voice.updateSpatialState({ listener: { position, forward, up }, speakers: [{ userId, position }] }) regola solo il volume e il bilanciamento stereo.
La voce dipende dal consenso dei giocatori, dall’audio disattivato e dai blocchi, oltre che dalla build dell’host e dal rilascio graduale.
Pausa
La capsula del gruppo non mette in pausa il gioco. La pausa di PlayDrop ferma il tuo client, ma la stanza resta connessa e il tuo server continua a funzionare. La pausa di un giocatore non deve fermare la partita per gli altri; implementa sul server un’eventuale pausa della partita.
Prova
Carica una versione privata, poi apri il link di prova in due finestre con player=1 e player=2, come descritto in server di gioco in tempo reale. I gruppi locali con i controller sono una modalità separata: vedi gruppi locali e controller.