PlayDrop 遊戲伺服器:Colyseus、MongoDB 與伺服器 SDK
PlayDrop 遊戲的選用託管多人連線:上傳使用 MongoDB 儲存的 Colyseus server.js,用測試玩家進行測試,並可選用伺服器 SDK 加入好友與 AI 功能。
遊戲伺服器是選用的。你的遊戲可以呼叫任何你自行架設的伺服器。若你偏好,PlayDrop 也能為你的遊戲託管一個附帶 MongoDB 資料庫的標準 Colyseus 伺服器:透過 PlayDrop Connector 將它以 server.js 上傳到 index.html 旁,或請 PlayDrop Cloud 為你打造。@playdrop/server 套件同樣是選用的。
撰寫標準 Colyseus 伺服器
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) };從 server.js 匯出 rooms 對照表,並在 catalogue.json 中以 "server": { "rooms": ["game"] } 列出房間名稱。伺服器由 PlayDrop 執行,請勿自行啟動。在房間生命週期內,透過 PLAYDROP_MONGO_URL 使用標準 MongoDB 驅動程式儲存資料。
託管伺服器規則
- Colyseus 0.17(
colyseus0.17.10、@colyseus/schema4.0.30)、MongoDB 驅動程式 7.5 與 Node 22。 - 單一獨立完整的 ES 模組,最大 2 MiB。只能匯入
colyseus、@colyseus/core、@colyseus/schema、mongodb與@playdrop/server;其他程式碼請打包進該檔案。 - 最多 2 種房間類型、每個房間 8 名玩家、每個房間 4 小時、每位玩家每秒 30 則訊息,以及每則訊息 512 KiB。
- 伺服器無法存取網際網路:只能連線到 MongoDB 與 PlayDrop 服務。
- 玩家必須登入。PlayDrop 會在每位玩家加入時進行驗證;請勿實作
onAuth。 - 每款遊戲一個 MongoDB 資料庫,跨版本保留,並計入你的儲存空間配額。切勿將其憑證傳送到瀏覽器。
連接瀏覽器並測試
在瀏覽器中,用戶端 SDK 的 sdk.multiplayer.getConnection() 會回傳伺服器位址與玩家的權杖;請使用 Colyseus 用戶端(@colyseus/sdk 0.17)加入。開發期間,請在本機執行 Colyseus 0.17 與 MongoDB 8,並直接連線到本機伺服器。若要測試託管伺服器,請上傳私人版本,然後開啟 https://www.playdrop.ai/create/games/<slug>/test?v=<version>&player=1,並在第二個視窗開啟改為 player=2 的同一連結:每個視窗都會以不同的測試帳號遊玩。確認運作正常後,再從遊戲頁面將該版本設為公開。
選用的伺服器 SDK:好友與 AI
@playdrop/server 提供 playdrop.social(正在玩這款遊戲的好友,以及 PlayDrop Chat 中的遊戲卡片)與 playdrop.ai(由創作者付費的文字、圖片、3D、影片、音效、語音與音樂生成)。這些呼叫僅適用於已上傳的遊戲,無法在本機開發環境中使用。請在伺服器上使用 playdrop.ai.tasks.downloadFile 下載私人生成的媒體,並只將位元組傳送給預定的玩家;語音請求最多接受 40 個字詞。