本项目为平面肉鸽射击游戏提供一个基于 TypeScript + Express + WebSocket 的多人联机后端,实现 docs/ONLINE_PROTOCOL.md 中定义的房间流程、消息协议与服务端权威模拟基础能力。
- WebSocket JSON 协议(统一消息信封)
- 房间生命周期:创建 / 加入 / 离开 / 主机迁移
- 角色选择与准备状态同步
- 主机发起游戏、生成种子并锁房
- 服务端固定 Tick(60Hz)权威模拟
- 客户端输入缓冲(允许小范围 Tick 容错)
- 周期性快照(10Hz)与状态哈希(2s)
- 基础房间切换与炸弹事件广播
- 心跳检测与断线清理
src/server.ts:主服务端实现docs/ONLINE_PROTOCOL.md:联机协议与生命周期说明docs/FRONTEND_OVERVIEW.md:前端架构与玩法概览
- Node.js 18+(推荐 20+)
- npm 9+
npm install开发模式(自动监听):
npm run dev生产模式:
npm run build
npm start服务默认监听端口:80001
- 消息统一信封:
{
"t": "message_type",
"roomId": "123456",
"seq": 42,
"clientTime": 1700000000000,
"payload": { }
}- 房间流程:
room.create->room.createdroom.join->room.joinedroom.leave->room.player_left
- 游戏流程:
game.start(仅房主)game.input(玩家输入)game.snapshot(服务器快照)game.hash(状态哈希)
详细字段与规则请查看 docs/ONLINE_PROTOCOL.md。
- 当前为最小可用的服务端权威模拟骨架,实体、房间与掉落等复杂逻辑可按
docs继续扩展。 - 房间数据保存在内存,服务重启会清空。
- WebSocket / HTTP:
80001 - 健康检查:
GET /health