Server game realtime di PlayDrop: Colyseus dan MongoDB
Jalankan server Colyseus 0.17 yang di-hosting dengan MongoDB untuk game Anda, hubungkan dari browser lewat SDK, uji dengan dua pemain, dan pahami batasnya.
PlayDrop bisa meng-hosting sisi server game Anda: server Colyseus standar dengan database MongoDB sendiri, pemain yang terverifikasi, dan tanpa infrastruktur yang perlu Anda jalankan. Gunakan untuk pertandingan realtime, game berbasis giliran, dunia bersama, dan apa pun yang tidak boleh bisa dicurangi pemain. Server bersifat opsional; game Anda juga bisa memanggil server yang Anda hosting sendiri.
Tulis servernya
Ekspor map rooms dari satu modul ES. PlayDrop yang memulai server; jangan memanggil listen() atau mendefinisikan onAuth, karena PlayDrop memverifikasi setiap pemain sebelum 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) };Hubungkan ke MongoDB di dalam siklus hidup room, jangan pernah di level modul: PLAYDROP_MONGO_URL hanya ada saat server berjalan. Buat indeks untuk kueri Anda.
Deklarasikan
Bundel server ke dalam satu berkas dan arahkan katalog ke berkas itu:
{ "server": { "entry": "server/index.mjs", "rooms": ["game"] } }Unggah dalam paket; jalur HTML sederhana tidak bisa membawa server.
Aturan runtime yang di-hosting
- Colyseus 0.17 (
colyseus0.17.10,@colyseus/schema4.0.30), driver MongoDB 7.5, di Node.js 24.22.1. - Satu modul ES mandiri berukuran maksimal 2 MiB. Modul hanya boleh mengimpor
colyseus,@colyseus/core,@colyseus/schema,mongodb, dan@playdrop/server; bundel semua yang lain. - Maksimal 2 jenis room, 8 pemain per room, 4 jam per room, 30 pesan per detik per pemain, dan 512 KiB per pesan.
- Tanpa akses internet: hanya MongoDB dan layanan PlayDrop yang bisa dijangkau.
- Pemain harus masuk.
- Satu database per game, dipertahankan di semua versi dan dihitung dalam penyimpanan kreator. Jangan pernah mengirim alamat atau kredensialnya ke browser.
Hubungkan dari browser
const sdk = await playdrop.init();
const room = await sdk.multiplayer.join("game");
room.onStateChange((state) => render(state));
room.send("move", { x: 1 });join menangani kursi grup dan login PlayDrop; lihat grup online. Untuk kendali tingkat rendah, sdk.multiplayer.getConnection() mengembalikan { endpoint, token, expiresAt } untuk klien Colyseus resmi dari sdk.libs.colyseus.load().
SDK server
@playdrop/server menambahkan panggilan platform tepercaya: teman dan kartu game (playdrop.social), verifikasi pembelian (playdrop.shop), pembuatan AI yang dibayar kreator (playdrop.ai), dan suara ruang (playdrop.multiplayer.forRoom). Panggilan ini hanya berjalan di game yang sudah diunggah. Lihat referensi SDK server.
Uji
Selama pengembangan, jalankan Colyseus 0.17 dan MongoDB secara lokal, lalu hubungkan klien lokal ke server lokal Anda. Untuk menguji server yang di-hosting, unggah versi privat dan buka https://www.playdrop.ai/create/games/<slug>/test?v=<version>&player=1, lalu tautan yang sama dengan player=2 di jendela kedua. Setiap jendela bermain sebagai pemain uji Anda yang berbeda. Terbitkan versi yang sudah diuji dengan publish_game_version setelah berfungsi.
Rancang untuk koneksi yang terputus: fitur sambung ulang Colyseus menyimpan kursi untuk waktu singkat, dan status room harus memungkinkan pemain yang kembali untuk melanjutkan.