Groupes en ligne et chat vocal dans les jeux PlayDrop
Faites jouer des amis ensemble en ligne : tailles de groupe, fenêtre de groupe PlayDrop, salles réservées avec sdk.multiplayer.join et voix de salle.
Un groupe PlayDrop, ce sont des amis qui passent d’un jeu à l’autre ensemble. Quand un groupe lance votre jeu, PlayDrop réserve des places pour ses membres dans l’une des salles de votre serveur : les amis arrivent ainsi dans le même match au lieu d’être séparés. Le chat vocal fonctionne dans PlayDrop, pas dans votre jeu.
Ce qu’il vous faut
- Un serveur de jeu temps réel : les groupes jouent dans vos salles Colyseus.
- Des joueurs connectés : les salles refusent les invités.
- Ces déclarations dans catalogue.json :
{
"types": ["solo", "online", "party"],
"party": { "online": [2, 3, 4] },
"roomVoice": true,
"server": { "entry": "server/index.mjs", "rooms": ["game"] }
}party.online liste les tailles exactes de groupe, jusqu’à 4, qui peuvent arriver ensemble ; [2, 4] exclut 3. Il s’agit de la taille du groupe qui arrive, pas de la capacité de la salle : deux groupes de quatre peuvent partager une salle de huit places. party exige le type party et party.online exige online. roomVoice: true active la voix de salle et exige online.
Rejoignez la bonne salle
if (!sdk.me.isLoggedIn) {
await sdk.me.promptLogin();
}
const room = await sdk.multiplayer.join("game", { mode: "versus" });join utilise la place réservée du joueur quand PlayDrop a lancé un groupe, et sinon rejoint une salle de façon indépendante. Si l’arrivée d’un groupe échoue, la promesse est rejetée ; le joueur n’est jamais placé discrètement dans une autre salle. Un invité reçoit authentication_required et PlayDrop affiche la connexion ; rejoignez de nouveau depuis sdk.me.onAuthChange. Gardez la même salle d’une manche à l’autre.
Après un rechargement, sdk.multiplayer.reconnect(roomName, token) restaure la place réservée grâce à un jeton de reconnexion que vous avez stocké en privé pour ce jeu, cette version et cet utilisateur. Abandonnez le jeton et appelez join en cas de multiplayer_reconnect_expired, multiplayer_reconnect_unavailable ou party_reconnect_mismatch.
La fenêtre de groupe
Depuis un bouton, sdk.social.openParty({ mode: "online" }) ouvre la fenêtre de groupe de PlayDrop, où les joueurs invitent des amis et activent ou désactivent la voix. Un groupe existant est réutilisé. openParty() ouvre le menu du groupe et openParty({ section: "voice" }) ouvre les réglages de la voix ; ne combinez pas mode et section. La promesse se résout à la fermeture de la fenêtre, y compris en cas d’annulation.
Lisez le groupe avec sdk.social.getParty() ou sdk.social.onPartyChange(callback), qui transmet d’abord l’état actuel : { partyId, leaderUserId, revision, members, launch }. launch.status vaut joining ou ready quand le groupe joue à ce jeu. Faire partie du groupe ne signifie pas à soi seul que les joueurs partagent une salle ; utilisez join.
Les membres du groupe sont gérés par PlayDrop : les jeux ne peuvent ni ajouter ni retirer de membres, ni contrôler les microphones, et les joueurs invitent leurs amis dans le groupe depuis cette fenêtre. Un jeu peut tout de même envoyer à un ami sa propre carte d’invitation ou de défi avec sdk.social.sendMessage ; consultez partage, amis et invitations.
Voix de salle
Avec roomVoice: true, tout le monde dans une salle peut parler, sans code serveur. Pour changer qui entend qui, liez la salle sur votre serveur et définissez une règle :
import { playdrop } from "@playdrop/server";
const platform = playdrop.multiplayer.forRoom(this);
platform.voice.setPolicy("team");
platform.voice.setTeam(client.auth, "red");Les règles sont all, team, proximity (avec { range }) et off. setAudience(player, audience) définit une dérogation pour un joueur et updatePositions([{ player, position: { x, y, z } }]) alimente la proximité ; passez null pour effacer une équipe ou une dérogation. PlayDrop fait respecter qui peut entendre qui. Dans le navigateur, sdk.multiplayer.voice.updateSpatialState({ listener: { position, forward, up }, speakers: [{ userId, position }] }) ne règle que le volume et la position stéréo.
La voix dépend du consentement des joueurs, de la sourdine et des blocages, ainsi que de la version de l’hôte et du déploiement.
Pause
La capsule du groupe ne met pas le jeu en pause. La pause de PlayDrop arrête votre client, mais la salle reste connectée et votre serveur continue de tourner. La pause d’un joueur ne doit pas arrêter le match des autres ; si le match doit pouvoir être mis en pause, gérez-le sur le serveur.
Tester
Envoyez une version privée, puis ouvrez le lien de test dans deux fenêtres avec player=1 et player=2, comme décrit dans serveurs de jeu temps réel. Les groupes locaux avec manettes forment un mode distinct : consultez groupes locaux et manettes.