4.0 KiB
4.0 KiB
开发任务清单
项目概述
Roguelike 游戏服务端开发任务追踪
当前项目规划
1. 世界系统初始化 ✅
- 服务器启动时初始化游戏世界
- 世界配置参数
- 世界尺寸: 800x800
- 出生区域: 距离中心点 200 范围内
- 世界数据结构设计
- 地图管理
- 坐标系统
2. 玩家系统 ✅
- 玩家登录流程(统一接口)
- 查找已有角色
- 若无角色,服务端自动注册
- 服务端自动创建角色
- 服务端自动分配随机出生点(出生区域内)
- 返回角色信息给客户端
- 玩家数据结构
- 角色ID
- 位置坐标
- 生命值(初始10点)
- 出生点记录
3. 游戏机制
- 移动系统 ✅
- 移动指令协议
- 位置验证
- 位置同步广播
- 战斗系统
- 攻击指令协议
- 伤害计算
- 生命值管理
- 死亡判定
- 复活系统
- 死亡处理
- 出生点复活
- 生命值重置
4. 协议定义
- PtlLogin - 登录协议(服务端自动处理注册和创角) ✅
- PtlMove - 移动协议 ✅
- MsgPlayerJoin - 玩家加入广播 ✅
- MsgPlayerMove - 玩家移动广播 ✅
- PtlAttack - 攻击协议
- MsgPlayerDeath - 玩家死亡广播
- MsgPlayerRespawn - 玩家复活广播
- MsgPlayerAttack - 玩家攻击广播
开发进度
已完成
- 项目初始化
- 基础消息发送 (ApiSend.ts)
- 世界系统初始化 (2025-12-14)
- 世界配置文件 (world.config.ts)
- 位置坐标模型 (Position.ts)
- 世界数据模型 (World.ts)
- 数学工具函数 (math.ts)
- 世界管理器 (WorldManager.ts)
- 服务器启动时初始化世界
- 玩家系统 (2025-12-14)
- 玩家数据模型 (Player.ts)
- 玩家管理器 (PlayerManager.ts)
- 登录协议定义 (PtlLogin.ts)
- 登录API实现 (ApiLogin.ts)
- 自动注册和创角流程
- 出生点分配逻辑
- 在线玩家管理
- 移动系统 (2025-12-14)
- 移动协议定义 (PtlMove.ts)
- 移动广播协议 (MsgPlayerMove.ts)
- 玩家加入广播协议 (MsgPlayerJoin.ts)
- 广播工具函数 (broadcast.ts)
- 移动API实现 (ApiMove.ts)
- 位置验证和边界检查
- 登录时广播玩家加入
- 架构重构:从HTTP API到WebSocket消息 (2025-12-18)
- 删除旧的API实现 (src/api目录)
- 删除旧的API协议 (PtlLogin.ts, PtlMove.ts, PtlSend.ts)
- 创建消息协议文件 (MsgReq*/MsgRes*)
- 创建消息处理器 (src/msg目录)
- 更新服务器配置为消息监听模式
- 重新生成serviceProto.ts文件
- 修复所有消息名称映射问题
进行中
- 等待下一阶段开发...
待办事项
- 按照上述规划顺序实施开发
重要架构说明
🚨 消息协议设计规范 (2025-12-18更新)
本项目使用WebSocket服务器,后续所有接口设计必须使用消息(Message)方式,而非API方式!
消息命名规范:
- 请求消息:
MsgReq{功能名}.ts(如:MsgReqLogin.ts) - 响应消息:
MsgRes{功能名}.ts(如:MsgResLogin.ts) - 广播消息:
Msg{事件名}.ts(如:MsgPlayerMove.ts)
消息处理器位置:
- 文件位置:
src/msg/MsgReq{功能名}.ts - 处理函数:使用
MsgCall<MsgReq{功能名}>参数 - 响应方式:
call.conn.sendMsg('Res{功能名}', response) - 注册方式:
server.listenMsg('Req{功能名}', handler)
协议文件生成:
- 使用
npm run proto自动生成serviceProto.ts - 禁止直接修改
serviceProto.ts文件 - 协议文件会自动去掉 "Msg" 前缀进行注册
技术栈
- TSRPC 框架
- TypeScript
- Node.js
备注
- 本文档由 AI 助手维护
- 更新日期: 2025-12-18
- 开发过程中会根据实际情况调整任务优先级和细节
- 重要:项目已从HTTP API架构迁移到WebSocket消息架构,请严格按照消息协议规范开发