Nettgrupper og stemmechat i PlayDrop-spill
La venner spille sammen på nett: deklarer gruppestørrelser, åpne PlayDrops gruppevindu, bli med i reserverte rom med sdk.multiplayer.join og styr romstemme.
En PlayDrop-gruppe er en gjeng venner som går fra spill til spill sammen. Når en gruppe starter spillet ditt, reserverer PlayDrop plasser til medlemmene i ett av serverens rom, slik at vennene havner i samme kamp i stedet for å bli delt opp. Stemmechatten kjører i PlayDrop, ikke i spillet ditt.
Hva du trenger
- En sanntidsserver for spill: grupper spiller i Colyseus-rommene dine.
- Innloggede spillere: rom avviser gjester.
- Disse deklarasjonene i catalogue.json:
{
"types": ["solo", "online", "party"],
"party": { "online": [2, 3, 4] },
"roomVoice": true,
"server": { "entry": "server/index.mjs", "rooms": ["game"] }
}party.online lister de nøyaktige gruppestørrelsene, opptil 4, som kan komme inn sammen; [2, 4] utelukker 3. Det er størrelsen på gruppen som kommer inn, ikke romkapasiteten: to grupper på fire kan dele et rom med åtte plasser. party krever typen party, og party.online krever online. roomVoice: true slår på romstemme og krever online.
Bli med i riktig rom
if (!sdk.me.isLoggedIn) {
await sdk.me.promptLogin();
}
const room = await sdk.multiplayer.join("game", { mode: "versus" });join bruker spillerens reserverte gruppeplass når PlayDrop har startet en gruppe, og blir ellers med på egen hånd. Hvis det ikke lykkes å bli med i gruppen, avvises kallet; det setter aldri spilleren i et annet rom uten å si fra. En gjest får authentication_required, og PlayDrop viser innlogging; bli med igjen fra sdk.me.onAuthChange. Behold det samme rommet på tvers av runder.
Etter en ny innlasting gjenoppretter sdk.multiplayer.reconnect(roomName, token) den reserverte plassen med et gjenoppkoblingstoken du har lagret privat for dette spillet, denne versjonen og denne brukeren. Forkast tokenet og kall join ved multiplayer_reconnect_expired, multiplayer_reconnect_unavailable eller party_reconnect_mismatch.
Gruppevinduet
Fra en knapp åpner sdk.social.openParty({ mode: "online" }) PlayDrops gruppevindu, der spillere inviterer venner og slår stemme av eller på. En eksisterende gruppe gjenbrukes. openParty() åpner gruppemenyen, og openParty({ section: "voice" }) åpner stemmeinnstillingene; ikke kombiner mode og section. Promisen fullføres når vinduet lukkes, også ved avbryt.
Les gruppen med sdk.social.getParty() eller sdk.social.onPartyChange(callback), som leverer den nåværende tilstanden først: { partyId, leaderUserId, revision, members, launch }. launch.status er joining eller ready når gruppen spiller dette spillet. Medlemskap alene betyr ikke at spillerne deler et rom; bruk join.
Gruppemedlemskap hører til PlayDrop: spill kan ikke legge til eller fjerne gruppemedlemmer eller styre mikrofoner, og spillere inviterer venner til gruppen fra dette vinduet. Et spill kan likevel sende sitt eget invitasjons- eller utfordringskort til en venn med sdk.social.sendMessage; se deling, venner og invitasjoner.
Romstemme
Med roomVoice: true kan alle i et rom snakke, uten serverkode. For å endre hvem som hører hvem, binder du rommet på serveren og setter en regel:
import { playdrop } from "@playdrop/server";
const platform = playdrop.multiplayer.forRoom(this);
platform.voice.setPolicy("team");
platform.voice.setTeam(client.auth, "red");Reglene er all, team, proximity (med { range }) og off. setAudience(player, audience) overstyrer for én spiller, og updatePositions([{ player, position: { x, y, z } }]) gir posisjoner til nærhetsregelen; send null for å fjerne et lag eller en overstyring. PlayDrop håndhever hvem som kan høre hvem. I nettleseren justerer sdk.multiplayer.voice.updateSpatialState({ listener: { position, forward, up }, speakers: [{ userId, position }] }) bare volum og panorering.
Stemme er underlagt spillerens samtykke, demping og blokkeringer, og avhenger av vertsappens versjon og utrulling.
Pause
Gruppekapselen setter ikke spillingen på pause. PlayDrops pause stopper klienten din, men rommet forblir tilkoblet, og serveren din fortsetter å kjøre. At én spiller setter på pause, må ikke stoppe kampen for de andre; lag en eventuell kamppause på serveren.
Test
Last opp en privat versjon, og åpne deretter testlenken i to vinduer med player=1 og player=2, som beskrevet i sanntidsservere for spill. Lokale grupper med kontrollere er en egen modus: se lokale grupper og kontrollere.