PlayDrop-spillservere: Colyseus, MongoDB og server-SDK-en
Valgfri hostet flerspiller for PlayDrop-spill: last opp en Colyseus-server.js med MongoDB, test med testspillere, og bruk server-SDK-en for venner og KI.
En spillserver er valgfri. Spillet ditt kan kalle hvilken som helst server du kjører selv. Hvis du foretrekker det, hoster PlayDrop en standard Colyseus-server med en MongoDB-database for spillet ditt: last den opp som server.js ved siden av index.html via PlayDrop Connector, eller be PlayDrop Cloud bygge den. Pakken @playdrop/server er også valgfri.
Skriv en standard Colyseus-server
import { Room, defineRoom } from "colyseus";
import { MongoClient } from "mongodb";
class GameRoom extends Room {
async onCreate() {
this.mongo = new MongoClient(process.env.PLAYDROP_MONGO_URL);
await this.mongo.connect();
}
onJoin(client) {
// client.auth is the verified PlayDrop player, for example client.auth.userId.
}
async onDispose() { await this.mongo?.close(); }
}
export const rooms = { game: defineRoom(GameRoom) };Eksporter et rooms-kart fra server.js og list romnavnene i catalogue.json som "server": { "rooms": ["game"] }. PlayDrop kjører serveren, så ikke start en selv. Lagre data med den vanlige MongoDB-driveren via PLAYDROP_MONGO_URL, innenfor romlivssyklusen.
Regler for hostet server
- Colyseus 0.17 (
colyseus0.17.10,@colyseus/schema4.0.30), MongoDB-driveren 7.5 og Node 22. - Én selvstendig ES-modul på opptil 2 MiB. Den kan bare importere
colyseus,@colyseus/core,@colyseus/schema,mongodbog@playdrop/server. Bunt all annen kode inn i filen. - Opptil 2 romtyper, 8 spillere per rom, 4 timer per rom, 30 meldinger per sekund per spiller og 512 KiB per melding.
- Ingen internettilgang fra serveren: bare MongoDB og PlayDrop-tjenester er tilgjengelige.
- Spillere må være logget inn. PlayDrop verifiserer hver spiller når de blir med. Ikke implementer
onAuth. - Én MongoDB-database per spill, beholdt på tvers av versjoner og regnet med i lagringskvoten din. Send aldri påloggingsopplysningene til nettleseren.
Koble til nettleseren og test
I nettleseren returnerer sdk.multiplayer.getConnection() fra klient-SDK-en serveradressen og spillerens token. Bli med via Colyseus-klienten (@colyseus/sdk 0.17). Under utvikling kjører du Colyseus 0.17 og MongoDB 8 lokalt og kobler direkte til den lokale serveren. For å teste den hostede serveren laster du opp en privat versjon, og åpner deretter https://www.playdrop.ai/create/games/<slug>/test?v=<version>&player=1 og den samme lenken med player=2 i et andre vindu: hvert vindu spiller som en egen testkonto. Gjør versjonen offentlig fra spillsiden når den fungerer.
Valgfri server-SDK: venner og KI
@playdrop/server legger til playdrop.social (venner som spiller dette spillet og spillkort i PlayDrop Chat) og playdrop.ai (generering av tekst, bilder, 3D, video, lyd, tale og musikk, betalt av skaperen). Disse kallene fungerer bare på opplastede spill, ikke i lokal utvikling. Last ned private genererte medier på serveren med playdrop.ai.tasks.downloadFile, og send bytene bare til den tiltenkte spilleren. Talebestillinger godtar høyst 40 ord.
Gruppe og romstemme
await playdrop.social.getParty(client.auth) leser gjeldende autorisert gruppemedlemskap. Den eksponerer ikke gruppechat eller aktivitet i andre spill, og gir ikke gruppeadministrasjon. Eksisterende sosiale API-er beholder oppførselen sin.
En katalog som deklarerer roomVoice: true, starter med en regel for hele rommet. Ingen serverkall er nødvendig for den standarden. For å tilpasse den binder du const platform = playdrop.multiplayer.forRoom(this) til det faktiske Colyseus-rommet. Bruk platform.voice.setPolicy("all" | "team" | "proximity" | "off", { range: 20 }), setTeam(client.auth, teamId), setAudience(client.auth, audience) og updatePositions([{ player: client.auth, position: { x, y, z } }]). Send null for å fjerne en lag- eller spillerinnstilling. Nærhet krever ferske, autoritative posisjoner.
Den pålitelige kjøretiden slår sammen endringer i kvalifisering, reserverer plass for aksepterte gruppefølgere etter lederens vanlige innmelding, og rydder opp tillatelser. Spill sender aldri lyd, leverandørlegitimasjon eller mikrofonforespørsler. Behold det samme rommet gjennom rundene. Bruk de eksisterende private testspillerne med en kvalifisert skaper for å teste integrasjonen før publisering. Publisering alene slår ikke på utrullingen.