活动优化方案
一、业务逻辑代码
1.1 Activity 模块
1.1.1 核心功能
- 按照配置自行注册到 ActivityMan
- 如果与关卡有相关交互,则暴露出自定义接口由 Manager 统一监听
1.1.2 代码加载(✅暂缓)
- 添加代码加载方法
- 根据不同的活动皮肤导入(相同模块,但是表现或者功能可能出现差异)
1.2 Widget 模块
1.2.1 部分功能优化组件
- 气泡提示(✅)(组件化)
- 红点提示(✅)(组件化)
- Bet Up、Bet Lock(封装到基类,并不对外暴露)(✅)
1.2.2 待优化项
- 整理气泡关逻辑
- 新增配置
1.3 Entrance 模块
1.3.1 功能点
- 红点提示
二、自动化及相关工作
2.1 优化创建脚本
- 按照活动所需的功能点,创建活动时可选择插入相关代码块
2.2 AI 文档建设
- 逐渐完善补充 AI 相关文档,并按照功能或者模块进行区分。
2.3 AI 功能迭代
- 创建好完整的流程后,尝试使用 AI 进行功能迭代、优化等
- 逐渐使用 AI 覆盖以下体力工作:(✅skill)
- 创建活动
- 移植功能
- 更新赛季资源
- 模块化功能开发
- 初步代码测试
- 文档自迭代
三、资源相关
美术规范
3.1 制作规范要求
3.1.1 资源检查
- 检查多余资源、引用错误等(图片、CCB 等)
- ccb中是否存在占位检查或者查看时显隐的部分
3.1.2 命名规范
- 格式:
活动名称_功能块_功能 - 复制的资源如果不符合规范,按照规范重命名
- 符合规范的资源只改活动名称
3.1.3 Label 使用规范
- Label 不要直接添加缩放
- 时间线中也要避免缩放
3.1.4 资源打包规范
- 同功能的 plist 放在一起
- 背景图不要打入 plist
3.2 功能模板
- 以通用功能模块为基本单位
- 创建对应功能模板(要跟代码对应)
- 包括但不限于:
- Rank(排行榜)
- Pass(通行证)
- 搭售
- 地图
3.3 程序资源规范
3.3.1 模板创建优化
- 优化模板创建脚本
- 支持功能块创建资源模板
3.3.2 UI 接口开放
- 实现功能时尽量开放 UI 相关接口
- 统一节点命名
- 尽可能支持美术通过 CCB 调节 UI 布局,包括但不限于:
- 领奖弹板奖励的奖励分布
- 棋盘类等功能布局
- 形成对应的规范文档交付美术
3.4 冗余资源处理
- 过期活动资源归档
- 通用资源
- 合并常用相同资源,并转移到通用资源中
四、程序 - 前端开发
4.1 协议规范
- 固定前后端协议字段
- 同功能保持结构、字段名称相同
4.2 代码封装
- 前端封装功能模块
- 统一枚举定义
4.3 代码规范
4.3.1 注释规范
- 规范注释格式
- 方便 AI 读取和理解
4.3.2 命名规范
- 统一命名规则
- 提高代码可读性
4.4 测试数据模块
- 添加测试数据模块
- 定义通用活动数据
- 可自定义数据结构
- 创建开关控制
- 通过数据结构便可先于后端开发(先有结构即可开始逻辑开发)
4.5 文件结构规范
活动目录结构(新)
src/activity/
├── base/ # 基类层
│ ├── ActivityBaseData.js # 数据管理基类
│ ├── ActivityBaseRequest.js # 网络请求基类
│ ├── ActivityBaseUIMng.js # UI管理基类
│ └── controller/
│ ├── ActivityBaseGuideController.js
│ └── rank/
│ ├── ActivityBaseRankUIController.js
│ └── ActivityBaseRankItemController.js
│
└── {活动名}/ # 具体活动目录
├── XXXActivity.js # 主活动类,继承 BaseActivity
├── XXXActivityData.js # 继承 ActivityBaseData
├── XXXActivityEnums.js # 枚举定义
├── XXXActivityRequest.js # 继承 ActivityBaseRequest
├── XXXActivityUIMng.js # 继承 ActivityBaseUIMng
└── controller/
├── XXXEntranceController.js
├── XXXWidgetController.js
├── XXXGuideController.js # 继承 ActivityBaseGuideController
├── main/
│ └── XXXMainUIController.js
├── pay/
│ ├── XXXPayController.js
│ └── XXXPayResultController.js
└── rank/
├── XXXRankUIController.js # 继承 ActivityBaseRankUIController
└── XXXRankItemController.js # 继承 ActivityBaseRankItemControllerController 目录结构(旧,仅供参考)
controller/
├── game/
│ └── ActivityGameLogic.js # 消耗类活动玩法相关
├── ui/
│ ├── pass/
│ │ ├── XXPassController.js
│ │ ├── XXPassFreeItemController.js
│ │ ├── XXPassNextAndUnlockController.js
│ │ ├── XXPassNextController.js
│ │ ├── XXPassPaidItemController.js
│ │ ├── XXPassPointItemController.js
│ │ ├── XXPassRewardController.js
│ │ └── XXXPassUIController.js
│ ├── rank/
│ │ ├── XXRankUIController.js
│ │ └── XXRankItemController.js
│ ├── dialog/
│ │ ├── RewardDialogController.js # 领奖弹板
│ │ ├── InfoDialogController.js # 信息弹窗
│ │ └── ConfirmDialogController.js # 确认弹窗
│ ├── XXActivityRewardHandlersEnum.js.js
│ ├── title.js
│ └── faq.js
├── model/
│ ├── UIModel.js # ui管理,获取不同皮肤的文件地址等
│ └── ActivityDataModel.js # 活动数据管理
├── service/
│ ├── net.js # 网络请求服务
│ ├── test.js # 提供数据请求返回接口,模拟服务器返回数据发送
│ └── cache.js # 缓存服务
├── config/
│ ├── ActivityConfig.js # 活动配置
│ ├── EventEnum.js # 活动内部时间枚举
│ └── TestDataConfig.js # 测试数据配置(✅)
├── mainUi.js
├── widget.js
└── entrance.js4.6 模块职责说明
4.6.1 Controller 层
- 职责:处理用户交互、协调 Model 和 View
- 规范:
- 不直接操作 DOM,通过 View 层进行
- 不包含业务逻辑计算,委托给 Model 或 Service
- 保持单一职责,一个 Controller 只负责一个功能模块
4.6.2 Model 层
- 职责:数据管理、业务逻辑计算
- 规范:
- 提供数据的增删改查接口
- 包含数据验证逻辑
- 触发数据变更事件通知
4.6.3 Service 层
- 职责:提供通用服务(网络、缓存等)
- 规范:
- 提供统一的错误处理
- 支持可配置和可扩展
4.7 版本控制规范
4.7.1 提交信息规范
类型 (type):
feat: 新功能fix: 修复 bugdocs: 文档更新style: 代码格式调整refactor: 重构test: 测试相关chore: 构建/工具链相关
app (type):
CV: classic vegasDH: double hit
示例:
[feat] CV:活动优化验证五、测试
5.1 美术自测
- 使用检测脚本进行初次测试,检查过大、丢失引用等
- 确认有无冗余资源
- 检查结构,确认遮罩大小、位置等
- 是否存在异常缩放
5.2 程序自测
- 引入AI对脚本和代码进行初次检查,是否存在书写规范异常、注释异常、冗余代码、遗漏log等
- 导入测试模块数据,初步检测活动运行中是否存在报错、内存泄露等异常
- 预测帧率、dc数量等(待确认)
活动组织结构优化总结(✅已完成)
优化前后对比
| 方面 | 优化前 | 优化后 |
|---|---|---|
| 代码位置 | 分散在 src/task/entity/ 和 src/task/controller/ | 独立目录 src/activity/{活动名}/ |
| 代码复用 | 每个活动重复实现相同逻辑 | 继承基类,只需实现差异部分 |
| 文件组织 | 活动文件与其他业务混杂 | 每个活动自成模块,内聚性强 |
主要优势
1. 减少代码重复
- 排行榜、引导、数据管理等通用逻辑提取到基类
- 模板文件减少 600+ 行重复代码
- 新活动只需关注业务差异
2. 提升可维护性
- 修复基类 bug 自动惠及所有活动
- 统一的代码风格和接口规范
- 便于代码审查和问题定位
3. 加速开发效率
- 新活动开发只需继承 + 覆写
- 模板生成后可直接运行
- 降低新人学习成本
4. 清晰的模块边界
src/activity/
├── base/ # 基类层(稳定、可复用)
└── {活动名}/ # 业务层(变化、可定制)基类层清单
| 基类 | 职责 |
|---|---|
ActivityBaseData | 数据管理(排行榜、支付、收集) |
ActivityBaseRequest | 网络请求封装 |
ActivityBaseUIMng | UI 弹窗管理 |
ActivityBaseGuideController | 新手引导 |
ActivityBaseRankUIController | 排行榜界面 |
ActivityBaseRankItemController | 排行榜项 |