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