Skip to content

活动优化方案

一、业务逻辑代码

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 # 继承 ActivityBaseRankItemController

Controller 目录结构(旧,仅供参考)

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.js

4.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: 修复 bug
  • docs: 文档更新
  • style: 代码格式调整
  • refactor: 重构
  • test: 测试相关
  • chore: 构建/工具链相关

app (type)

  • CV: classic vegas
  • DH: 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网络请求封装
ActivityBaseUIMngUI 弹窗管理
ActivityBaseGuideController新手引导
ActivityBaseRankUIController排行榜界面
ActivityBaseRankItemController排行榜项

Released under the MIT License.