Server di gioco PlayDrop: Colyseus, MongoDB e SDK server
Multiplayer ospitato facoltativo: carica un server.js Colyseus con MongoDB, provalo con i giocatori di prova e usa l’SDK server per amici e IA.
Un server di gioco è facoltativo. Il tuo gioco può chiamare qualsiasi server che gestisci tu. Se preferisci, PlayDrop ospita per il tuo gioco un server Colyseus standard con un database MongoDB: caricalo come server.js accanto a index.html tramite PlayDrop Connector, oppure chiedi a PlayDrop Cloud di costruirlo. Anche il pacchetto @playdrop/server è facoltativo.
Scrivi un server Colyseus standard
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) };Esporta una mappa rooms da server.js ed elenca i nomi delle stanze in catalogue.json come "server": { "rooms": ["game"] }. PlayDrop esegue il server, quindi non avviarne uno tu. Salva i dati con il driver MongoDB standard tramite PLAYDROP_MONGO_URL, dentro il ciclo di vita della stanza.
Regole del server ospitato
- Colyseus 0.17 (
colyseus0.17.10,@colyseus/schema4.0.30), il driver MongoDB 7.5 e Node 22. - Un unico modulo ES autonomo fino a 2 MiB. Può importare solo
colyseus,@colyseus/core,@colyseus/schema,mongodbe@playdrop/server; includi nel file qualsiasi altro codice. - Fino a 2 tipi di stanza, 8 giocatori per stanza, 4 ore per stanza, 30 messaggi al secondo per giocatore e 512 KiB per messaggio.
- Nessun accesso a internet dal server: sono raggiungibili solo MongoDB e i servizi di PlayDrop.
- I giocatori devono aver effettuato l’accesso. PlayDrop verifica ogni giocatore quando entra; non implementare
onAuth. - Un database MongoDB per gioco, conservato tra le versioni e conteggiato nella tua quota di spazio. Non inviare mai le sue credenziali al browser.
Collega il browser e prova
Nel browser, sdk.multiplayer.getConnection() dell’SDK client restituisce l’indirizzo del server e il token del giocatore; entra con il client Colyseus (@colyseus/sdk 0.17). Durante lo sviluppo, esegui in locale Colyseus 0.17 e MongoDB 8 e collegati direttamente al tuo server locale. Per provare il server ospitato, carica una versione privata, poi apri https://www.playdrop.ai/create/games/<slug>/test?v=<version>&player=1 e lo stesso link con player=2 in una seconda finestra: ogni finestra gioca come un account di prova separato. Rendi pubblica la versione dalla pagina del gioco quando funziona.
SDK server facoltativo: amici e IA
@playdrop/server aggiunge playdrop.social (gli amici che giocano a questo gioco e le carte di gioco nella Chat di PlayDrop) e playdrop.ai (generazione di testo, immagini, 3D, video, suoni, voce e musica pagata dal creator). Queste chiamate funzionano solo sui giochi caricati, non nello sviluppo locale. Scarica sul server i contenuti multimediali privati generati con playdrop.ai.tasks.downloadFile e invia i byte solo al giocatore interessato; le richieste di voce accettano al massimo 40 parole.
Gruppo e voce della stanza
await playdrop.social.getParty(client.auth) legge i membri del gruppo attualmente autorizzati. Non espone la chat del gruppo né l’attività in altri giochi e non concede la gestione del gruppo. Le API social esistenti mantengono il loro comportamento.
Un catalogo che dichiara roomVoice: true parte con una politica per tutta la stanza; per questa impostazione predefinita non serve alcuna chiamata al server. Per personalizzarla, associa const platform = playdrop.multiplayer.forRoom(this) alla vera stanza Colyseus. Usa platform.voice.setPolicy("all" | "team" | "proximity" | "off", { range: 20 }), setTeam(client.auth, teamId), setAudience(client.auth, audience) e updatePositions([{ player: client.auth, position: { x, y, z } }]). Passa null per cancellare un override di squadra o di giocatore. La prossimità richiede posizioni autorevoli aggiornate.
Il runtime affidabile unisce le modifiche di idoneità, riserva i seguaci del gruppo accettati dopo l’ingresso ordinario del leader e ripulisce i permessi. I giochi non inviano mai audio, credenziali del provider o richieste di microfono. Mantieni la stessa stanza tra un round e l’altro. Usa i giocatori di prova privati già esistenti con un creator idoneo per provare l’integrazione prima di pubblicare; la sola pubblicazione non attiva il rollout.