石器时代客户端重构 — 协议

石器时代客户端重构 — 协议

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/recv
  • GameClient.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% ← 完整复刻

评论

评论功能即将上线,敬请期待。