Verkkoryhmät ja puhechat PlayDrop-peleissä
Anna ystävien pelata yhdessä: ilmoita ryhmäkoot, avaa ryhmäikkuna, liity varattuihin huoneisiin sdk.multiplayer.join-kutsulla ja hallitse huoneen puhetta.
PlayDrop-ryhmä on joukko ystäviä, joka siirtyy yhdessä pelistä toiseen. Kun ryhmä käynnistää pelisi, PlayDrop varaa sen jäsenille paikat yhdestä palvelimesi huoneesta, joten ystävät päätyvät samaan otteluun sen sijaan, että heidät jaettaisiin eri huoneisiin. Puhechat toimii PlayDropissa, ei pelissäsi.
Mitä tarvitset
- Reaaliaikainen pelipalvelin: ryhmät pelaavat Colyseus-huoneissasi.
- Kirjautuneet pelaajat: huoneet eivät päästä vieraita sisään.
- Nämä ilmoitukset tiedostossa catalogue.json:
{
"types": ["solo", "online", "party"],
"party": { "online": [2, 3, 4] },
"roomVoice": true,
"server": { "entry": "server/index.mjs", "rooms": ["game"] }
}party.online luettelee tarkat ryhmäkoot, enintään 4, jotka voivat saapua yhdessä; [2, 4] sulkee pois kolmen hengen ryhmät. Se on saapuvan ryhmän koko, ei huoneen kapasiteetti: kaksi neljän hengen ryhmää voi jakaa kahdeksan paikan huoneen. party vaatii party-tyypin, ja party.online vaatii arvon online. roomVoice: true ottaa huoneen puheen käyttöön ja vaatii arvon online.
Liity oikeaan huoneeseen
if (!sdk.me.isLoggedIn) {
await sdk.me.promptLogin();
}
const room = await sdk.multiplayer.join("game", { mode: "versus" });join käyttää pelaajalle varatun ryhmäpaikan, kun PlayDrop käynnisti ryhmän, ja muuten liittyy itsenäisesti. Jos ryhmän liittyminen epäonnistuu, kutsu hylätään; se ei koskaan siirrä pelaajaa hiljaa toiseen huoneeseen. Vieras saa virheen authentication_required, ja PlayDrop näyttää kirjautumisen; liity uudelleen sdk.me.onAuthChange-tapahtumasta. Pidä sama huone kierroksesta toiseen.
Uudelleenlatauksen jälkeen sdk.multiplayer.reconnect(roomName, token) palauttaa varatun paikan uudelleenyhdistämistunnuksella, jonka tallensit yksityisesti tälle pelille, versiolle ja käyttäjälle. Hylkää tunnus ja kutsu join, kun saat virheen multiplayer_reconnect_expired, multiplayer_reconnect_unavailable tai party_reconnect_mismatch.
Ryhmäikkuna
Painikkeesta sdk.social.openParty({ mode: "online" }) avaa PlayDropin ryhmäikkunan, jossa pelaajat kutsuvat ystäviä ja kytkevät puheen päälle tai pois. Olemassa olevaa ryhmää käytetään uudelleen. openParty() avaa ryhmävalikon ja openParty({ section: "voice" }) puheasetukset; älä yhdistä arvoja mode ja section. Lupaus täyttyy, kun ikkuna sulkeutuu, myös peruutettaessa.
Lue ryhmä kutsulla sdk.social.getParty() tai sdk.social.onPartyChange(callback), joka toimittaa ensin nykyisen tilan: { partyId, leaderUserId, revision, members, launch }. launch.status on joining tai ready, kun ryhmä pelaa tätä peliä. Pelkkä jäsenyys ei tarkoita, että pelaajat ovat samassa huoneessa; käytä join-kutsua.
Ryhmän jäsenyys kuuluu PlayDropille: pelit eivät voi lisätä tai poistaa ryhmän jäseniä eivätkä hallita mikrofoneja, ja pelaajat kutsuvat ystäviä ryhmään tästä ikkunasta. Peli voi silti lähettää ystävälle oman kutsu- tai haastekorttinsa kutsulla sdk.social.sendMessage; katso jakaminen, ystävät ja kutsut.
Huoneen puhe
Kun roomVoice: true on käytössä, kaikki huoneessa olevat voivat puhua ilman palvelinkoodia. Jos haluat muuttaa, kuka kuulee kenet, sido huone palvelimellasi ja aseta käytäntö:
import { playdrop } from "@playdrop/server";
const platform = playdrop.multiplayer.forRoom(this);
platform.voice.setPolicy("team");
platform.voice.setTeam(client.auth, "red");Käytännöt ovat all, team, proximity (ja { range }) sekä off. setAudience(player, audience) ohittaa yhden pelaajan asetuksen ja updatePositions([{ player, position: { x, y, z } }]) syöttää sijainnit läheisyyttä varten; anna null tyhjentääksesi tiimin tai ohituksen. PlayDrop valvoo, kuka saa kuulla kenet. Selaimessa sdk.multiplayer.voice.updateSpatialState({ listener: { position, forward, up }, speakers: [{ userId, position }] }) säätää vain äänenvoimakkuutta ja panorointia.
Puhe edellyttää pelaajan suostumusta, noudattaa mykistyksiä ja estoja ja riippuu isännän versiosta ja käyttöönotosta.
Tauot
Ryhmäkapseli ei keskeytä pelaamista. PlayDropin tauko pysäyttää asiakasohjelmasi, mutta huone pysyy yhdistettynä ja palvelimesi jatkaa toimintaansa. Yhden pelaajan tauko ei saa pysäyttää ottelua muilta; toteuta mahdollinen ottelun tauko palvelimella.
Testaa
Lataa yksityinen versio ja avaa testilinkki kahdessa ikkunassa arvoilla player=1 ja player=2, kuten sivulla reaaliaikaiset pelipalvelimet kuvataan. Paikalliset ryhmät ohjaimilla ovat erillinen tila: katso paikalliset ryhmät ja ohjaimet.