PlayDrop
PlayDrop 无法加载

页面的必要部分下载失败。请重新加载。

STYLESHEET_ERROR
PlayDrop logoPlayDrop Studio
PlayDrop logoPlayDrop Studio
创作PlayTrade赚取学习连接器社区支持
服务器 SDK
文档

从这里开始

概览你的第一款游戏

使用 Cloud 创作

Cloud 创作发布与导入方案与生成次数点数与奖励

连接你的代理

所有连接器ClaudeChatGPTClaude CodeCodexCursorGeminiAntigravityGrok BuildGrok BotGrok ChatLovableReplit

技术参考

游戏文件catalogue.json客户端 SDK服务器 SDK问题排查常见问题
文档服务器 SDK
技术参考

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 服务器

js
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(colyseus 0.17.10、@colyseus/schema 4.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 个单词。

队伍与房间语音

await playdrop.social.getParty(client.auth) 读取当前获授权访问的队伍成员信息。它不会公开队伍聊天或其他游戏中的活动,也不会授予队伍管理权限。现有社交 API 的行为保持不变。

在目录中声明 roomVoice: true 后,默认采用全房间语音策略;此默认设置无需调用服务器。如需自定义,请将 const platform = playdrop.multiplayer.forRoom(this) 绑定到实际的 Colyseus 房间。使用 platform.voice.setPolicy("all" | "team" | "proximity" | "off", { range: 20 })、setTeam(client.auth, teamId)、setAudience(client.auth, audience) 和 updatePositions([{ player: client.auth, position: { x, y, z } }])。传入 null 可清除队伍分配或玩家专属的覆盖设置。近距离模式需要服务器维护的最新权威位置信息。

可信运行时会合并资格变更,在队长正常加入后为获准跟随的队伍成员预留名额,并清理权限。游戏绝不发送音频、供应商凭证或麦克风请求。请在不同回合之间保留同一个房间。发布前,请使用符合资格的创作者账号和现有的私密 Test Players 测试集成;仅发布游戏不会启用此功能的分阶段推出。

上一页适用于浏览器游戏的 PlayDrop 客户端 SDK下一页PlayDrop Cloud 制作与发布疑难排解
查看 Markdown
EnglishFrançaisDeutsch日本語한국어EspañolPortuguês (Brasil)Bahasa Indonesia繁體中文简体中文ItalianoPolskiNederlandsSvenskaNorsk bokmålSuomiTürkçeไทยTiếng Việtالعربية

本页内容

编写标准 Colyseus 服务器托管服务器规则连接浏览器并测试可选的服务器 SDK:好友和 AI队伍与房间语音
查看 Markdown