Sanntidsservere for spill på PlayDrop: Colyseus og MongoDB
Kjør en hostet Colyseus 0.17-server med en MongoDB-database for spillet ditt, koble til fra nettleseren med SDK-en, test med to spillere og kjenn grensene.
PlayDrop kan hoste serversiden av spillet ditt: en standard Colyseus-server med sin egen MongoDB-database, verifiserte spillere og ingen infrastruktur å drifte. Bruk den til kamper i sanntid, turbaserte spill, delte verdener og alt en spiller ikke skal kunne jukse med. En server er valgfri; spillet ditt kan også kalle en server du hoster selv.
Skriv serveren
Eksporter et rooms-kart fra én ES-modul. PlayDrop starter serveren; ikke kall listen() og ikke definer onAuth, fordi PlayDrop verifiserer hver spiller før onJoin.
import { Room, defineRoom } from "colyseus";
import { MongoClient } from "mongodb";
class GameRoom extends Room {
maxClients = 8;
async onCreate() {
this.mongo = new MongoClient(process.env.PLAYDROP_MONGO_URL);
await this.mongo.connect();
this.onMessage("move", (client, move) => this.applyMove(client.auth.userId, move));
}
onJoin(client) {
// client.auth is the verified PlayDrop player: userId, username, appRole, isTestPlayer…
}
async onDispose() { await this.mongo?.close(); }
}
export const rooms = { game: defineRoom(GameRoom) };Koble til MongoDB inne i romlivssyklusen, aldri på modulnivå: PLAYDROP_MONGO_URL finnes bare under kjøring. Lag indekser for spørringene dine.
Deklarer den
Bunt serveren i én fil og la katalogen peke på den:
{ "server": { "entry": "server/index.mjs", "rooms": ["game"] } }Last den opp i en pakke; den enkle HTML-veien kan ikke ha med en server.
Regler for den hostede kjøretiden
- Colyseus 0.17 (
colyseus0.17.10,@colyseus/schema4.0.30), MongoDB-driveren 7.5, på Node.js 24.22.1. - Én selvstendig ES-modul på høyst 2 MiB. Den kan bare importere
colyseus,@colyseus/core,@colyseus/schema,mongodbog@playdrop/server; bunt alt annet 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: bare MongoDB og PlayDrop-tjenester er tilgjengelige.
- Spillere må være logget inn.
- Én database per spill, beholdt på tvers av versjoner og regnet med i skaperens lagringsplass. Send aldri adressen eller påloggingsopplysningene til en nettleser.
Koble til fra nettleseren
const sdk = await playdrop.init();
const room = await sdk.multiplayer.join("game");
room.onStateChange((state) => render(state));
room.send("move", { x: 1 });join håndterer PlayDrops gruppeplasser og innlogging; se nettgrupper. For mer detaljert kontroll returnerer sdk.multiplayer.getConnection() { endpoint, token, expiresAt } for den offisielle Colyseus-klienten fra sdk.libs.colyseus.load().
Server-SDK
@playdrop/server legger til klarerte plattformkall: venner og spillkort (playdrop.social), verifisering av kjøp (playdrop.shop), KI-generering betalt av skaperen (playdrop.ai) og romstemme (playdrop.multiplayer.forRoom). De kjører bare på opplastede spill. Se referansen for server-SDK-en.
Test
Under utvikling kjører du Colyseus 0.17 og MongoDB lokalt og kobler den lokale klienten til den lokale serveren. For å teste den hostede serveren laster du opp en privat versjon og åpner https://www.playdrop.ai/create/games/<slug>/test?v=<version>&player=1, deretter den samme lenken med player=2 i et nytt vindu. Hvert vindu spiller som en egen testspiller på kontoen din. Publiser den testede versjonen med publish_game_version når den fungerer.
Planlegg for brudd i tilkoblingen: gjenoppkobling i Colyseus holder av en plass en kort stund, og romtilstanden bør la en spiller som kommer tilbake, fortsette.