Files
rougelike-demo/server/.github/instructions/development-tasks.md
2025-12-18 12:03:03 +08:00

129 lines
4.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 开发任务清单
## 项目概述
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<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消息架构请严格按照消息协议规范开发