Reaaliaikaiset pelipalvelimet PlayDropissa: Colyseus ja MongoDB
Aja pelillesi isännöityä Colyseus 0.17 -palvelinta MongoDB-tietokannalla, yhdistä selaimesta SDK:lla, testaa kahdella pelaajalla ja tunne rajat.
PlayDrop voi isännöidä pelisi palvelinpuolen: tavallisen Colyseus-palvelimen omalla MongoDB-tietokannallaan, varmennetut pelaajat eikä ylläpidettävää infrastruktuuria. Käytä sitä reaaliaikaisiin otteluihin, vuoropohjaisiin peleihin, jaettuihin maailmoihin ja kaikkeen, missä pelaaja ei saa pystyä huijaamaan. Palvelin on valinnainen; pelisi voi myös kutsua itse isännöimääsi palvelinta.
Kirjoita palvelin
Vie rooms-olio yhdestä ES-moduulista. PlayDrop käynnistää palvelimen; älä kutsu listen() äläkä määrittele onAuth, koska PlayDrop varmentaa jokaisen pelaajan ennen onJoin-kutsua.
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) };Yhdistä MongoDB:hen huoneen elinkaaren sisällä, ei koskaan moduulin tasolla: PLAYDROP_MONGO_URL on olemassa vain ajon aikana. Luo indeksit kyselyillesi.
Ilmoita se
Paketoi palvelin yhdeksi tiedostoksi ja osoita katalogi siihen:
{ "server": { "entry": "server/index.mjs", "rooms": ["game"] } }Lataa se paketissa; yksinkertainen HTML-tapa ei voi sisältää palvelinta.
Isännöidyn ajoympäristön säännöt
- Colyseus 0.17 (
colyseus0.17.10,@colyseus/schema4.0.30), MongoDB-ajuri 7.5, Node.js 24.22.1. - Yksi itsenäinen ES-moduuli, enintään 2 MiB. Se voi tuoda vain paketit
colyseus,@colyseus/core,@colyseus/schema,mongodbja@playdrop/server; paketoi kaikki muu mukaan. - Enintään 2 huonetyyppiä, 8 pelaajaa huonetta kohden, 4 tuntia huonetta kohden, 30 viestiä sekunnissa pelaajaa kohden ja 512 KiB viestiä kohden.
- Ei internetyhteyttä: vain MongoDB ja PlayDropin palvelut ovat tavoitettavissa.
- Pelaajien on oltava kirjautuneita.
- Yksi tietokanta peliä kohden, säilyy versiosta toiseen ja lasketaan tekijän tallennustilaan. Älä koskaan lähetä sen osoitetta tai tunnistetietoja selaimeen.
Yhdistä selaimesta
const sdk = await playdrop.init();
const room = await sdk.multiplayer.join("game");
room.onStateChange((state) => render(state));
room.send("move", { x: 1 });join hoitaa PlayDropin ryhmäpaikat ja kirjautumisen; katso verkkoryhmät. Matalamman tason hallintaa varten sdk.multiplayer.getConnection() palauttaa { endpoint, token, expiresAt } virallista Colyseus-asiakasohjelmaa varten, jonka saat kutsulla sdk.libs.colyseus.load().
Server SDK
@playdrop/server lisää luotetut alustakutsut: ystävät ja pelikortit (playdrop.social), ostojen varmennus (playdrop.shop), tekijän maksama tekoälyluonti (playdrop.ai) ja huoneen puhe (playdrop.multiplayer.forRoom). Ne toimivat vain palveluun ladatuissa peleissä. Katso server SDK -viite.
Testaa
Kehityksen aikana aja Colyseus 0.17:ää ja MongoDB:tä paikallisesti ja yhdistä paikallinen asiakasohjelmasi paikalliseen palvelimeesi. Testataksesi isännöityä palvelinta lataa yksityinen versio ja avaa https://www.playdrop.ai/create/games/<slug>/test?v=<version>&player=1 ja sitten sama linkki arvolla player=2 toisessa ikkunassa. Kumpikin ikkuna pelaa omana testipelaajanasi. Julkaise testattu versio kutsulla publish_game_version, kun se toimii.
Suunnittele yhteyskatkoja varten: Colyseuksen uudelleenyhdistäminen pitää paikan varattuna lyhyen ajan, ja huoneen tilan pitäisi antaa palaavan pelaajan jatkaa.