Spelservrar i realtid på PlayDrop: Colyseus och MongoDB
Kör en hostad Colyseus 0.17-server med en MongoDB-databas för ditt spel, anslut från webbläsaren med SDK:t, testa med två spelare och känn till gränserna.
PlayDrop kan hosta serverdelen av ditt spel: en vanlig Colyseus-server med en egen MongoDB-databas, verifierade spelare och ingen infrastruktur att driva. Använd den för matcher i realtid, turordningsbaserade spel, delade världar och allt som en spelare inte får kunna fuska med. En server är valfri; ditt spel kan också anropa en server som du hostar själv.
Skriv servern
Exportera en rooms-karta från en ES-modul. PlayDrop startar servern; anropa inte listen() och definiera inte onAuth, eftersom PlayDrop verifierar varje spelare före 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) };Anslut till MongoDB inom rummets livscykel, aldrig på modulnivå: PLAYDROP_MONGO_URL finns bara när servern körs. Skapa index för dina frågor.
Deklarera den
Bunta ihop servern till en fil och peka katalogen mot den:
{ "server": { "entry": "server/index.mjs", "rooms": ["game"] } }Ladda upp den i ett paket; den enkla HTML-vägen kan inte ha med en server.
Regler för den hostade körmiljön
- Colyseus 0.17 (
colyseus0.17.10,@colyseus/schema4.0.30), MongoDB-drivrutin 7.5, på Node.js 24.22.1. - En fristående ES-modul på högst 2 MiB. Den får bara importera
colyseus,@colyseus/core,@colyseus/schema,mongodboch@playdrop/server; bunta ihop allt annat. - Upp till 2 rumstyper, 8 spelare per rum, 4 timmar per rum, 30 meddelanden per sekund och spelare och 512 KiB per meddelande.
- Ingen internetåtkomst: bara MongoDB och PlayDrops tjänster går att nå.
- Spelare måste vara inloggade.
- En databas per spel, som behålls mellan versioner och räknas in i skaparens lagring. Skicka aldrig dess adress eller inloggningsuppgifter till en webbläsare.
Anslut från webbläsaren
const sdk = await playdrop.init();
const room = await sdk.multiplayer.join("game");
room.onStateChange((state) => render(state));
room.send("move", { x: 1 });join hanterar PlayDrops gruppplatser och inloggning; se onlinegrupper. För mer kontroll på lägre nivå returnerar sdk.multiplayer.getConnection() { endpoint, token, expiresAt } för den officiella Colyseus-klienten från sdk.libs.colyseus.load().
Server-SDK
@playdrop/server lägger till betrodda plattformsanrop: vänner och spelkort (playdrop.social), verifiering av köp (playdrop.shop), AI-generering som skaparen betalar (playdrop.ai) och rumsröst (playdrop.multiplayer.forRoom). De fungerar bara i uppladdade spel. Se referensen för server-SDK:t.
Testa
Under utvecklingen kör du Colyseus 0.17 och MongoDB lokalt och ansluter din lokala klient till din lokala server. För att testa den hostade servern laddar du upp en privat version och öppnar https://www.playdrop.ai/create/games/<slug>/test?v=<version>&player=1, och sedan samma länk med player=2 i ett andra fönster. Varje fönster spelar som en separat testspelare som hör till dig. Publicera den testade versionen med publish_game_version när den fungerar.
Planera för frånkopplingar: Colyseus-återanslutningen håller en plats en kort stund, och rummets tillstånd bör låta en återvändande spelare fortsätta.