用途
该技能用于指导开发者构建可同时发布到移动端(iOS/Android)与 WebGL2 浏览器的 Unity 实时多人游戏。它围绕两个主要服务器框架展开:Colyseus(基于房间、自动状态同步)与 Nakama(含认证、存储、匹配的完整游戏后端),网络传输统一走 WebSocket。
主要能力
- 服务器框架选型决策:给出选择 Colyseus 或 Nakama 的判断依据。
- WebGL2 约束说明:WebGL 构建无法使用原始 TCP/UDP 套接字、无法使用 C# 线程、无法自建服务器;生产环境 HTTPS 页面要求 wss:// 连接。提供跨平台条件编译模式(WebGL 用 WebSocketNetworkInterface,原生平台可用 UDPNetworkInterface)。
- WebSocket 库对比:列出 NativeWebSocket(免费,随 Colyseus SDK 提供,v2.x 自动派发到主线程)、Best WebSockets(约 €18,支持 WSS、压缩、性能分析器集成)、unity-websocket(免费,MonoBehaviour API,内置 ping/RTT)、Unity Transport(UTP,免费,官方包,可同时监听 UDP+WebSocket);并提示避免使用 WebSocketSharp,因其依赖 System.Net.Sockets,在 WebGL 构建中不可用。
- 架构模式选择:按游戏类型给出同步策略——FPS/动作类用客户端预测+服务器回滚(同步状态+输入);MMO/RPG 用快照插值(仅状态);RTS/格斗用确定性锁步/回滚(仅输入);回合制用请求-响应(仅动作);休闲/社交用 Colyseus 自动同步或 Nakama 中继。
- 快速上手代码:提供 Colyseus 的 TypeScript 服务端房间示例与 Unity C# 客户端示例;提供 Nakama 的 TypeScript 运行时 match 示例与 Unity C# 客户端示例。
- 性能优化清单:按优先级给出减少发送内容(增量压缩、量化、smallest-three 四元数编码)、降低发送频率(20-30 tick/秒,Colyseus 默认 patchRate 为 20Hz)、减少接收方(兴趣管理/区域过滤)、使用二进制序列化(MessagePack for C#,比 JSON 快 10-100 倍)、对象池化(WebGL GC 每帧仅运行一次)、移动端批处理(减少蜂窝无线电激活、提供 30 FPS 选项)。
- 部署概览:Colyseus 与 Nakama 均通过 Docker 部署;生产环境需 Nginx 反向代理并配置 WebSocket 升级头、WebGL 客户端需 SSL/TLS(wss://);Colyseus 用 Redis 做 presence 与 driver、PM2 fork 模式扩展;Nakama 用 CockroachDB 集群、多节点加 gossip 发现。
使用方式
技能以参考文件与资产模板组织,按需读取而非一次性加载:
参考文件:references/architecture-patterns.md(网络拓扑、状态同步、ECS 网络)、references/colyseus-integration.md(Colyseus 服务端、Unity SDK、房间、schema、匹配)、references/nakama-integration.md(Nakama 服务端、Unity SDK、认证、多人、存储)、references/websocket-networking.md(WebSocket 库选择与配置、重连逻辑)、references/webgl2-constraints.md(WebGL2 限制与条件编译)、references/performance-optimization.md(带宽、序列化、GC、移动端电量、对象池)、references/deployment-guides.md(Docker、Nginx、SSL、Redis、扩展、托管方案)。
资产模板:assets/colyseus-room-template.ts(含认证、重连、时钟同步的生产级房间)、assets/nakama-match-handler-template.ts(带 tick 循环与在线状态跟踪的权威 match)、assets/unity-colyseus-manager.cs(管理 Colyseus 连接、加入房间、状态回调的 Unity 单例)、assets/unity-nakama-manager.cs(管理 Nakama 客户端、socket、认证、match 生命周期的 Unity 单例)、assets/unity-websocket-client.cs(带指数退避重连的独立 WebSocket 客户端)。
适用场景
需要将 Unity 多人游戏同时发布到移动端与 WebGL2 浏览器、并选用 Colyseus 或 Nakama 作为后端的开发场景;也适用于需要了解 WebGL2 网络限制、WebSocket 库选型、同步架构模式或移动端网络性能优化的项目。
限制
WebGL 构建不支持原始 TCP/UDP 套接字、C# 线程与自建服务器;生产环境 HTTPS 页面必须使用 wss://。WebSocketSharp 在 WebGL 构建中不可用。关于具体收费、价格、平台支持范围、实际效果或未在资料中列出的使用步骤,暂未提供。