PlayDrop logoPlayDrop Studio
創作互玩賺取學習連接器素材社群支援
PlayDrop logoPlayDrop Studio
創作互玩賺取學習連接器素材社群支援
登入
即時遊戲伺服器
文件

從這裡開始

總覽你的第一款遊戲PlayDrop 遊戲常見問題

用 Cloud 創作

Cloud 創作方案與生成次數

連接你的 AI App

所有連接器ClaudeChatGPTClaude CodeCodexCursorGeminiAntigravityGrok BuildGrok BotGrok ChatLovableReplit

發布與分享

從你的 AI App 發布簡易 HTML 遊戲打包與 .play發布與匯入遊戲檔案可見性與觸及上架圖片與影片類型與標籤在地化即玩遊戲

遊戲體驗

載入、暫停與音訊全螢幕與安全區域雲端存檔本機派對與控制器

一起玩

分享、好友與邀請排行榜成就線上派對與語音即時遊戲伺服器

賺取收益

營利點數與獎勵

素材

遊戲素材AI 素材生成自訂格式與玩家創作

參考資料

用戶端 SDK伺服器 SDKcatalogue.json錯誤與復原疑難排解
文件即時遊戲伺服器
一起玩

PlayDrop 的即時遊戲伺服器:Colyseus 與 MongoDB

為你的遊戲執行附帶 MongoDB 資料庫的託管 Colyseus 0.17 伺服器,用 SDK 從瀏覽器連線,用兩位玩家測試,並了解各項限制。

PlayDrop 可以託管遊戲的伺服器端:一個標準 Colyseus 伺服器,附帶專屬的 MongoDB 資料庫與經過驗證的玩家,不需要自行維運任何基礎架構。可用於即時對戰、回合制遊戲、共享世界,以及任何不能讓玩家作弊的內容。伺服器是選用的;你的遊戲也可以呼叫你自行架設的伺服器。

撰寫伺服器

從一個 ES 模組匯出 rooms 對照表。PlayDrop 會啟動伺服器;請勿呼叫 listen() 或定義 onAuth,因為 PlayDrop 會在 onJoin 之前驗證每位玩家。

js
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) };

在房間生命週期內連線到 MongoDB,絕不要在模組範圍內連線:PLAYDROP_MONGO_URL 只在執行時存在。請為你的查詢建立索引。

宣告伺服器

將伺服器打包成一個檔案,並在目錄中指向它:

json
{ "server": { "entry": "server/index.mjs", "rooms": ["game"] } }

請以套件上傳;簡易 HTML 方式無法攜帶伺服器。

託管執行環境的規則

  • Colyseus 0.17(colyseus 0.17.10、@colyseus/schema 4.0.30)、MongoDB 驅動程式 7.5,執行於 Node.js 24.22.1。
  • 單一獨立完整的 ES 模組,最大 2 MiB。只能匯入 colyseus、@colyseus/core、@colyseus/schema、mongodb 和 @playdrop/server;其他程式碼請打包進去。
  • 最多 2 種房間類型、每個房間 8 名玩家、每個房間 4 小時、每位玩家每秒 30 則訊息,以及每則訊息 512 KiB。
  • 無法存取網際網路:只能連線到 MongoDB 與 PlayDrop 服務。
  • 玩家必須登入。
  • 每款遊戲一個資料庫,跨版本保留,並計入創作者的儲存空間。切勿將它的位址或憑證傳送到瀏覽器。

從瀏覽器連線

js
const sdk = await playdrop.init();
const room = await sdk.multiplayer.join("game");
room.onStateChange((state) => render(state));
room.send("move", { x: 1 });

join 會處理 PlayDrop 的派對座位與登入;請參閱線上派對。若需要更底層的控制,sdk.multiplayer.getConnection() 會傳回 { endpoint, token, expiresAt },供 sdk.libs.colyseus.load() 提供的官方 Colyseus 用戶端使用。

伺服器 SDK

@playdrop/server 加入受信任的平台呼叫:好友與遊戲卡片(playdrop.social)、購買驗證(playdrop.shop)、由創作者付費的 AI 生成(playdrop.ai),以及房間語音(playdrop.multiplayer.forRoom)。這些呼叫只適用於已上傳的遊戲。請參閱伺服器 SDK 參考。

測試

開發期間,請在本機執行 Colyseus 0.17 與 MongoDB,並將本機用戶端連線到本機伺服器。若要測試託管伺服器,請上傳私人版本並開啟 https://www.playdrop.ai/create/games/<slug>/test?v=<version>&player=1,再於第二個視窗開啟改為 player=2 的同一連結。每個視窗都會以你名下不同的測試玩家身分遊玩。運作正常後,用 publish_game_version 發布已測試的版本。

為斷線做好設計:Colyseus 的重新連線會短暫保留座位,房間狀態應讓回來的玩家能繼續遊戲。

相關指南

  • 線上派對與語音讓朋友一起線上玩你的遊戲:宣告派對人數、開啟 PlayDrop 的派對視窗、用 sdk.multiplayer.join 加入預留的房間,並控制房間語音。
  • 伺服器 SDKPlayDrop 託管遊戲伺服器參考:執行環境規則、經過驗證的 PlayDropPlayer,以及 playdrop.social、playdrop.shop、playdrop.ai 和 playdrop.multiplayer。
  • 打包與 .play安排根目錄含 catalogue.json 的建置遊戲資料夾、ZIP 或 .play,宣告上架媒體與伺服器,並用 prepare_catalogue_upload 上傳。
上一頁PlayDrop 遊戲中的線上派對與語音聊天下一頁PlayDrop 遊戲中的評論、打賞、遊戲內購買與廣告
檢視 Markdown
EnglishFrançaisDeutsch日本語한국어EspañolPortuguês (Brasil)Bahasa Indonesia繁體中文简体中文ItalianoPolskiNederlandsSvenskaNorsk bokmålSuomiTürkçeไทยTiếng Việtالعربية

本頁內容

撰寫伺服器宣告伺服器託管執行環境的規則從瀏覽器連線伺服器 SDK測試
檢視 Markdown