Skip to content

01 - 项目概述与迁移目标

返回目录


1.1 源项目概况

技术栈

项目技术
引擎Cocos2d-html5 v3.13-lite-wtc
语言ES5 JavaScript(严格模式)
UI 编辑CocosBuilder (CCB)
模块化Browserify
平台iOS/Android (JSB) + Web (Facebook Canvas)

关卡规模

分类数量架构基类文件结构
新架构-模块化11 个 (284-293, 297)SlotMachineScene2022独立子目录,含 _action/_components/_controller/_process
新架构-单文件84 个SlotMachineScene2022单个 MachineScene.js 文件
遗留架构140 个SlotMachineScene / ClassicSlotMachineScene单个 MachineScene.js 文件
合计235 个关卡413 个 JS 文件

框架文件规模

目录文件数说明
component_new2022/202022 版基础组件类
component/57遗留版组件类
process/35流程基类(含 FlowDispatcher)
actions/27动作基类(含 SlotAction 注册表)
controller_new2022/162022 版控制器
controller/34遗留版控制器
tools/8工具类(SlotUtil, WinEffectHelper 等)
enum/4枚举定义
合计201 个框架文件

核心架构模式:CPA (Component-Process-Action)

源代码库使用统一的 CPA 架构,所有 2022 架构关卡 100% 遵循:

SlotMachineScene2022 (基类)
├── Components (可插拔 UI/逻辑模块)
   ├── SpinPanelComponent      ── 卷轴面板
   ├── SymbolLayerComponent    ── 符号层
   ├── DrumModeComponent       ── 鼓点模式
   ├── WinLineComponent        ── 赢线
   ├── ... (20 个基类)
   └── 关卡自定义组件
├── Processes (状态机流水线)
   ├── FlowDispatcher          ── 流程引擎
   ├── WaitForSpinProcess      ── 等待旋转
   ├── SpinProcess             ── 发送请求
   ├── ... (35 个基类)
   └── 关卡自定义流程
└── Actions (可插拔行为)
    ├── FreeSpinAction          ── 免费旋转
    ├── QianyaoAction           ── 期待动画
    ├── ... (27 个基类)
    └── 关卡自定义动作

主循环流程(FlowDispatcher DSL)

EnterRoomChecking
["loop",                              ── 外层循环(永续)
    WaitForSpin                       ── 等待用户点击/自动旋转
    FreeSpinBeginChecking             ── 检查是否进入免费旋转
    RoundStart                        ── 开始一局
    ["loop",                          ── 内层循环(子回合:免费旋转/重转)
        SubRoundStart
        Spin                          ── 发送旋转请求,等待结果
        SpecialGame                   ── 特殊游戏
        Jackpot                       ── 奖池展示
        ShowWinEffect                 ── 大赢/超级赢动画
        BlinkAllWinLine               ── 闪烁赢线
        PanelWinUpdate                ── 赢分更新 UI
        BlinkBonus                    ── 闪烁 Bonus 符号
        BlinkScatter                  ── 闪烁 Scatter 符号
        SubRoundEnd                   ── 子回合结束(ConditionProcess 控制循环退出)
    ],
    RoundEnd                          ── 结束一局,结算
    FreeSpinEndChecking               ── 检查免费旋转是否结束
    InteractiveGameChecking           ── 互动游戏检查
]

1.2 迁移范围

本期范围

95 个 SlotMachineScene2022 架构关卡,包括:

  • 11 个模块化关卡(284-293, 297):独立子目录结构,共 184 个 JS 文件
  • 84 个单文件关卡:各自一个 MachineScene.js 文件

不在本期范围

  • 140 个遗留架构关卡(使用 SlotMachineScene / ClassicSlotMachineScene)
  • 活动系统(Activity)、社交系统(CardSystem)、支付系统等非 Slot 模块
  • 服务端逻辑(协议层保持不变,客户端只做展示层迁移)

范围选择理由

  1. 统一架构:95 个 2022 关卡 100% 共享同一套 CPA 框架,迁移模式高度一致
  2. 投入产出比:覆盖约 40% 的关卡数量,但覆盖近 100% 的新开发关卡
  3. 验证优先:先用统一架构验证流水线,再考虑遗留架构的适配方案

1.3 迁移目标

功能目标

目标说明
功能一致迁移后的 Unity 关卡在玩法、表现上与 Cocos 版本一致
协议兼容复用现有服务端协议,客户端仅做展示层替换
性能达标Unity 版本性能不低于 Cocos 版本

工程目标

目标说明
可批量转换建立 4 层架构使关卡逻辑可近乎机械化翻译
可 AI 协作制定明确的执行规范,使 AI 能独立完成单关卡转换
可追溯每个 JS API → C# 方法的映射有完整记录,可查可验
可渐进L1 + L2 先独立完成并验证,再逐步推进关卡转换

质量目标

目标说明
零遗漏映射所有被调用的 JS API 必须有对应的 C# 实现
零 TODO 交付每层交付时不允许有 TODO 占位符
双关卡验证L1+L2 完成后至少转换 2 个关卡验证流水线有效性

1.4 关键约束

约束说明
Unity 版本Unity 6(LTS)
C# 版本C# 9.0+(Unity 6 支持)
补间动画DOTween Pro(已决策,替代 cc.Action 体系)
渲染管线待定(不影响本方案的逻辑层迁移)
UI 框架待定(Prefab 替代 CCB,NameBinder 替代 controller 绑定)

1.5 Cocos API 调用量全景

以下是源代码库中各命名空间的 API 调用量统计,这是 L1 兼容层设计的基础数据:

命名空间定义文件唯一方法数总调用次数
game.util.*src/common/util/Util.js (1805 行)78~31,237
game.nodeHelper.*src/common/util/NodeHelper.js (491 行)23~17,283
game.slotUtil.*src/newdesign_slot/tools/SlotUtil.js (1211 行)62~10,199
game.aUtil.*src/task/tools/ActivityUtil.js (1784 行)74~5,275
cc.* ActionsCocos 引擎内置27 + 17 easing~9,256
cc.* 几何/类型Cocos 引擎内置~30~14,000+
.controller.*CCB 绑定模式~24,000
.runAction()Cocos 引擎内置1~3,124
game.uIHelper.*src/common/util/UIHelper.js (1222 行)34待统计
game.aUIHelper.*src/task/tools/ActivityUIHelper.js (1100+ 行)35待统计
game.eventDispatcher.*src/common/events/EventDispatcher.js (197 行)3+~167
game.audioPlayer.*src/common/audio/AudioPlayer.js (381 行)15+待统计
其他辅助类各自独立~30待统计
合计~400+~114,000+

调用集中度

Top 20 API 覆盖约 65% 的总调用量

排名API调用次数
1game.nodeHelper.setNodeVisible10,105
2game.util.playAnim7,369
3cc.p()4,815
4game.util.inherits4,170(C# 不需要)
5cc.sys.isObjectValid4,108
6game.slotUtil.playAnim3,927
7cc.callFunc()2,781
8game.util.playCCBAnimation2,647
9game.util.registerController2,561
10game.util.unRegisterController2,547
11cc.delayTime()2,373
12cc.sequence()2,183
13game.util.loadNodeFromCCB2,186
14game.nodeHelper.setNodeText2,692
15game.nodeHelper.setNodeEnabled1,929
16game.slotUtil.playEffect1,566
17game.slotUtil.delayCall1,312
18game.aUtil.setNodeTextAutoScale1,248
19cc.isFunction()1,103
20cc.isUndefined()998

1.6 JS 源文件清单

框架文件

src/newdesign_slot/
├── scene/
   ├── SlotMachineScene.js              # 基类(原始版)
   ├── SlotMachineScene2022.js          # 基类(2022 版,所有新关卡继承此类)
   ├── NewSlotMachineScene.js           # 包装基类
   └── SlotMultiPanelMachineScene.js    # 多面板变体基类
├── component/Component.js               # 组件基类
├── component_new2022/                   # 20 个 2022 版基础组件
├── process/Process.js                   # 流程基类
├── process/FlowDispatcher.js            # 流程引擎
├── process/                             # 35 个流程类
├── actions/SlotActon.js                 # 动作基类
├── actions/SlotActionEasy.js            # 轻量动作基类
├── actions/QianyaoAction.js             # 期待动画动作
├── actions/SlotActionRegistry.js        # SA/SAT 注册表
├── actions/                             # 27 个动作类
├── enum/                                # 4 个枚举文件
└── tools/                               # 8 个工具文件

工具库文件

src/common/util/
├── Util.js              # game.util(1805 行,78 方法)
├── NodeHelper.js        # game.nodeHelper(491 行,23 方法)
└── UIHelper.js          # game.uIHelper(1222 行,34 方法)

src/task/tools/
├── ActivityUtil.js      # game.aUtil(1784 行,74 方法)
└── ActivityUIHelper.js  # game.aUIHelper(1100+ 行,35 方法)

src/newdesign_slot/tools/
├── SlotUtil.js          # game.slotUtil(1211 行,62 方法)
├── HighRollerSlotUtil.js
├── SlotPopupUtil.js
└── WinEffectHelper.js

src/common/events/EventDispatcher.js
src/common/audio/AudioPlayer.js
src/common/popup/DialogManager.js
src/gameCommon.js                    # 全局命名空间注册中心(125 行)

11 个模块化关卡目录

关卡目录JS 文件数
284 Santa Giftstormscene/284_santa_giftstorm/21
285 Carnival Blastscene/285_carnival_blast/13
286 Halo and Hornsscene/286_halo_and_horns/13
287 Wilds Starburstscene/287_wilds_starburst/16
288 Three Little Piggiesscene/288_three_little_piggies/17
289 Yay Yeti Glitzyscene/289_yay_yeti_glitzy/19
290 Dazzling Diamondsscene/290_dazzling_diamonds/23
291 Ducky Dollarsscene/291_ducky_dollars/19
292 Rose Romancescene/292_rose_romance/9
293 Trio Wheels Deluxescene/293_trio_wheels_deluxe/16
297 Goldpot Partyscene/297_goldpot_party/18

下一章:02 - 4 层架构设计方案

Released under the MIT License.