石器时代客户端重构 — 协议
Context
原版 C++ 有 64 个核心系统、150+ 协议。当前 Cocos 客户端已实现 85 个模块,28 个协议。分 3 批推进。
已完成(不在本计划中)
| 改动 | 状态 |
|---|---|
| SafeArea 组件 + Widget 对齐 | ✅ |
| Canvas Widget _alignFlags 修复(45→15) | ✅ |
| 移动系统重写(速度向量匹配原版 C++) | ✅ |
| A* 二叉堆优化 | ✅ |
| MapRenderer 脏标记 | ✅ |
| CharacterView 平滑渲染(像素坐标) | ✅ |
第一批:P0 — 战斗可玩 + 核心协议(1 周)
B1-1: BattleView 3 个 TODO
目标: 战斗中道具/宠物/技能可用
涉及: BattleView.ts:286/298/310
方案:
showItemSelect(): 遍历 inventory 中 consumable 物品,生成选择按钮showPetSelect(): 从 battle.allyPets 生成选择按钮showSkillSelect(): 从 SkillTable 查询宠物可用技能
文件: BattleView.ts
B1-2: GameApp 3 个 TODO
目标: MainMenu skill 按钮连线、帮助/设置内容
方案:
skill: () => { this.skillView?.toggle(); }- 帮助/设置: dialogView 显示实际内容
文件: GameApp.ts
B1-3: ProgressBar 组件
目标: StatusView 的 HP/MP/EXP 条用 ProgressBar
方案:
makeBar()改为cc.ProgressBar,保留 Graphics 作为背景轨道
文件: StatusView.ts
B1-4: 协议 58-59 — 宠物技能(PS)
目标: 战斗中使用宠物技能
协议: PS_SEND(havepetindex, havepetskill, toindex, data) → PS_RECV(result, havepetindex, havepetskill, toindex)
方案:
LssProto.ts: 添加sendPetSkill()方法GameClient.ts: 添加petSkill()方法Battle.ts: 扩展sendPetSkill()发送协议BattleView.ts: showSkillSelect() 连接真实协议
文件: LssProto.ts, GameClient.ts, Battle.ts, BattleView.ts
B1-5: 协议 57 — 魔法使用(MU)
目标: 战斗/地图中使用魔法
协议: MU_SEND(x, y, array, toindex) → 无 recv(结果通过 B/EF 体现)
方案:
LssProto.ts: 添加sendMagicUse()方法GameClient.ts: 添加magicUse()方法Battle.ts: 扩展魔法攻击指令
文件: LssProto.ts, GameClient.ts, Battle.ts
第二批:P1 — 引擎优化 + 经济系统(2 周)
B2-1: tween 缓动系统
目标: 面板打开/关闭动画,按钮点击反馈
方案:
GameApp.ts添加showView()/hideView()辅助方法- 全部 34 个 View 的
toggle()包裹 tween
文件: GameApp.ts + 全部 View
B2-2: ScrollView + Layout 组件
目标: 聊天/道具/宠物列表滚动,装备槽位自动排列
方案:
- ChatView: 消息容器挂载 ScrollView + ScrollBar
- InventoryView: 装备面板改用 Layout VERTICAL
- PetView: 宠物列表改用 Layout
- MainMenu: 菜单项改用 Layout
- BattleView: 命令面板改用 Layout HORIZONTAL
文件: ChatView.ts, InventoryView.ts, PetView.ts, MainMenu.ts, BattleView.ts
B2-3: RichText 聊天格式化
目标: 彩色文字、@提及高亮
方案:
- ChatView
refreshMessages()中 Label 替换为 RichText - ChatSystem 消息增加格式化信息
文件: ChatView.ts, game/ChatSystem.ts
B2-4: 协议 116-117 — 摆摊系统(Street Vendor)
目标: 玩家间摆摊交易,20 物品栏
协议: STREET_VENDOR_SEND(data) → STREET_VENDOR_RECV(data)
方案:
- 新建
game/StreetVendorSystem.ts— 摊位状态管理 - 新建
cocos/StreetVendorView.ts— 摊位 UI(商品列表 + 价格 + 购买) LssProto.ts: 添加摆摊协议 send/recvGameClient.ts: 集成摆摊操作GameApp.ts: 添加到 UI 管理
文件: 新建 2 + 修改 4
B2-5: 协议 208-209 — 商城系统(Cash Shop)
目标: 彩币购物车,多页商品浏览
协议: SHOPOK_SEND(data) → SHOPOK_RECV(data)
方案:
- 新建
game/CashShopSystem.ts— 商品数据 + 购物车 - 新建
cocos/CashShopView.ts— 商品列表 + 购物车 + 结算 LssProto.ts: 添加商城协议GameClient.ts: 集成商城操作
文件: 新建 2 + 修改 3
B2-6: 协议 107 — 宠物选择确认(PETST)
目标: 服务器确认宠物出场选择
协议: PETST_RECV(petarray, result)
方案:
LoginFlow.ts: 添加 PETST_RECV 处理器GameState.ts: 更新宠物出场状态Battle.ts: 同步宠物选择结果
文件: LoginFlow.ts, GameState.ts, Battle.ts
B2-7: 协议 127 — 宠物装备(PET_ITEM_EQUIP)
目标: 宠物穿戴装备
协议: PET_ITEM_EQUIP_SEND(data)
方案:
LssProto.ts: 添加sendPetItemEquip()方法PetSystem.ts: 扩展装备槽位管理PetView.ts: 添加装备操作 UI
文件: LssProto.ts, PetSystem.ts, PetView.ts
B2-8: 协议 65 — 宠物改名(KN)
目标: 宠物改名
协议: KN_SEND(havepetindex, data)
方案:
LssProto.ts: 添加sendPetRename()方法PetView.ts: 添加改名输入框
文件: LssProto.ts, PetView.ts
第三批:P2 — 完整复刻 + 引擎升级(2-3 周)
B3-1: 协议 60-62 — 称号系统(ST/DT/FT)
目标: 设置/删除/查询称号
协议:
ST_SEND(titleindex)— 设置称号DT_SEND(titleindex)— 删除称号FT_SEND(data)— 查询称号列表
方案:
LssProto.ts: 添加 3 个 send 方法TitleSystem.ts: 扩展协议交互TitleView.ts: 连接真实协议
文件: LssProto.ts, TitleSystem.ts, TitleView.ts
B3-2: 协议 120-121 — 任务日志(JOBDAILY)
目标: 任务日志记录与查询
协议: JOBDAILY_SEND(data) → JOBDAILY_RECV(data)
方案:
LssProto.ts: 添加任务日志协议QuestSystem.ts: 扩展日志记录QuestView.ts: 添加日志标签页
文件: LssProto.ts, QuestSystem.ts, QuestView.ts
B3-3: 协议 122-123 — 师徒系统(TEACHER)
目标: 师徒关系管理
协议: TEACHER_SYSTEM_SEND(data) → TEACHER_SYSTEM_RECV(data)
方案:
- 新建
game/TeacherSystem.ts— 关系管理 - 新建
cocos/TeacherView.ts— 师徒 UI LssProto.ts: 添加师徒协议
文件: 新建 2 + 修改 2
B3-4: 协议 210-211 — 家族纹章(FAMILYBADGE)
目标: 家族纹章展示
协议: FAMILYBADGE_SEND(data) → FAMILYBADGE_RECV(data)
方案:
LssProto.ts: 添加纹章协议GuildSystem.ts: 扩展纹章数据GuildView.ts: 添加纹章展示
文件: LssProto.ts, GuildSystem.ts, GuildView.ts
B3-5: 协议 212-213 — 角色称号(CHARTITLE)
目标: 角色称号显示
协议: CHARTITLE_SEND(data) → CHARTITLE_RECV(data)
方案:
LssProto.ts: 添加称号协议CharacterView.ts: 称号标签展示
文件: LssProto.ts, CharacterView.ts
B3-6: 协议 218-219 — 宠物祝福(VB)
目标: 宠物属性祝福
协议: VB_SEND(data) → VB_RECV(data)
方案:
LssProto.ts: 添加祝福协议PetSystem.ts: 扩展祝福属性PetView.ts: 祝福操作 UI
文件: LssProto.ts, PetSystem.ts, PetView.ts
B3-7: 协议 220 — 骑宠查询(RIDEQUERY)
目标: 查询可骑乘宠物
协议: RIDEQUERY_SEND(data)
方案:
LssProto.ts: 添加查询方法RideSystem.ts: 扩展查询逻辑
文件: LssProto.ts, RideSystem.ts
B3-8: 协议 221-222 — 宠物皮肤(PETSKINS)
目标: 宠物皮肤切换
协议: PETSKINS_SEND(data) → PETSKINS_RECV(data)
方案:
LssProto.ts: 添加皮肤协议PetSystem.ts: 扩展皮肤数据PetView.ts: 皮肤选择 UI
文件: LssProto.ts, PetSystem.ts, PetView.ts
B3-9: 协议 141 — 签到系统(SIGNDAY)
目标: 月历签到奖励
协议: SIGNDAY_SEND(data)
方案:
- 新建
game/SignInSystem.ts— 签到记录 - 新建
cocos/SignInView.ts— 月历 UI LssProto.ts: 添加签到协议
文件: 新建 2 + 修改 1
B3-10: 协议 138 — 百人斩(HUNDREDKILL)
目标: 100 人挑战模式
协议: HUNDREDKILL_RECV(data)
方案:
LssProto.ts: 添加接收处理Battle.ts: 扩展百人斩状态BattleView.ts: 百人斩 UI
文件: LssProto.ts, Battle.ts, BattleView.ts
B3-11: 协议 139-140 — PK 列表(PKLIST)
目标: PK 排行榜
协议: PKLIST_SEND(data) → PKLIST_RECV(data)
方案:
LssProto.ts: 添加 PK 协议RankingView.ts: 添加 PK 排行标签
文件: LssProto.ts, RankingView.ts
B3-12: 协议 200 — 公告系统(DENGON)
目标: 服务器公告显示
协议: DENGON_RECV(data)
方案:
LoginFlow.ts: 添加公告接收处理- 新建公告显示逻辑(滚动文字或弹窗)
文件: LoginFlow.ts
B3-13: Animation 组件
目标: 角色动作平滑切换
方案:
CharacterView.ts用 tween 做 sprite 透明度交叉淡入淡出
文件: CharacterView.ts
B3-14: ParticleSystem2D
目标: 特效升级
方案:
BattleAnim.ts伤害数字升级WeatherSystem.ts/MapEffects.ts接入引擎粒子
文件: BattleAnim.ts, WeatherSystem.ts, MapEffects.ts
B3-15: AudioSource
目标: 音频现代化
方案:
SoundSystem.ts改用AudioSource组件
文件: SoundSystem.ts
协议实现进度
已实现: ████████████████░░░░░░░░░░░░░░ 28/98 (29%)
第一批后: ████████████████████████░░░░░░ 33/98 (34%)
├── +5: PS, MU, PETST, PET_ITEM, KN
第二批后: ██████████████████████████████░ 41/98 (42%)
├── +8: STREET_VENDOR, SHOPOK, + 已有扩展
第三批后: ████████████████████████████████ 56/98 (57%)
├── +15: ST/DT/FT, JOBDAILY, TEACHER, FAMILYBADGE,
│ CHARTITLE, VB, RIDEQUERY, PETSKINS,
│ SIGNDAY, HUNDREDKILL, PKLIST, DENGON
执行顺序
Session 1: P0 — BattleView TODO + GameApp TODO + ProgressBar + PS + MU(1 周)
Session 2: P1-A — tween + ScrollView + Layout + RichText(1 周)
Session 3: P1-B — 摆摊 + 商城 + 宠物选择 + 宠物装备 + 改名(1 周)
Session 4: P2-A — 称号 + 任务日志 + 师徒 + 纹章 + 祝福 + 骑宠查询 + 皮肤(1-2 周)
Session 5: P2-B — 签到 + 百人斩 + PK + 公告 + Animation + Particle + Audio(1 周)
完成度预估
当前: ████████████████████░░░░░░░░░░ 75%
第一批后: ██████████████████████████░░░░ 85% ← 可玩 MVP
第二批后: █████████████████████████████░ 95% ← 功能完整
第三批后: ██████████████████████████████ 100% ← 完整复刻
评论
评论功能即将上线,敬请期待。