# 怪物配置体系 **本文档引用的文件** - [RogueConfig.ts](file://assets/script/game/map/RogueConfig.ts) - [Mon.ts](file://assets/script/game/hero/Mon.ts) - [heroSet.ts](file://assets/script/game/common/config/heroSet.ts) - [MissionMonComp.ts](file://assets/script/game/map/MissionMonComp.ts) - [SkillSet.ts](file://assets/script/game/common/config/SkillSet.ts) - [HeroAttrs.ts](file://assets/script/game/common/config/HeroAttrs.ts) ## 目录 1. [概述](#概述) 2. [项目结构](#项目结构) 3. [核心组件](#核心组件) 4. [架构概览](#架构概览) 5. [详细组件分析](#详细组件分析) 6. [依赖关系分析](#依赖关系分析) 7. [性能考虑](#性能考虑) 8. [故障排除指南](#故障排除指南) 9. [结论](#结论) ## 概述 RogueConfig.ts是肉鸽模式中的核心怪物配置管理系统,提供了完整的怪物类型定义、关卡配置规则、强度计算机制和随机事件系统。该系统通过分层的配置结构实现了怪物的差异化管理,支持普通怪物、精英怪物和Boss怪物三种类型,并能够根据关卡进度动态调整怪物数量和强度。 系统的主要功能包括: - **怪物类型管理**:通过MonsterType枚举定义三种怪物类型 - **关卡配置系统**:支持普通关卡、精英关卡、Boss关卡和事件关卡 - **强度计算引擎**:基于关卡号和等级计算怪物强度倍率 - **随机事件系统**:提供宝箱、陷阱、增益和减益事件 - **程序化关卡生成**:支持怪物数量随关卡递增的动态配置 ## 项目结构 ```mermaid graph TB subgraph "怪物配置模块" RC[RogueConfig.ts
核心配置管理] MC[MissionMonComp.ts
怪物生成控制] end subgraph "数据源模块" HS[heroSet.ts
英雄/怪物数据] Mon[Mon.ts
怪物实体管理] end subgraph "配置系统" SC[StageConfigRules
关卡配置规则] EM[EliteMonsterList
精英怪物配置] BM[BossMonsterList
Boss怪物配置] end RC --> SC RC --> EM RC --> BM MC --> RC MC --> Mon Mon --> HS ``` **图表来源** - [RogueConfig.ts](file://assets/script/game/map/RogueConfig.ts#L1-L311) - [MissionMonComp.ts](file://assets/script/game/map/MissionMonComp.ts#L1-L209) **章节来源** - [RogueConfig.ts](file://assets/script/game/map/RogueConfig.ts#L1-L50) - [MissionMonComp.ts](file://assets/script/game/map/MissionMonComp.ts#L1-L35) ## 核心组件 ### 怪物类型枚举系统 系统定义了三个核心的怪物类型,通过枚举确保类型安全和可维护性: | 怪物类型 | 描述 | 特征 | |---------|------|------| | NORMAL | 普通怪物 | 基础属性,随机选择 | | ELITE | 精英怪物 | 强化配置,固定列表 | | BOSS | Boss怪物 | 高强度,特殊配置 | ### 关卡类型系统 | 关卡类型 | 触发条件 | 怪物组成 | |---------|----------|----------| | NORMAL | 1-9关1-4级 | 普通怪物为主 | | ELITE | 1-9关5级/10关4级 | 精英+普通怪物 | | BOSS | 10关5级 | Boss+精英+普通怪物 | | EVENT | 每5关特殊事件 | 少量普通怪物 | **章节来源** - [RogueConfig.ts](file://assets/script/game/map/RogueConfig.ts#L35-L55) ## 架构概览 ```mermaid sequenceDiagram participant Player as 玩家 participant MC as MissionMonComp participant RC as RogueConfig participant Mon as Monster participant HS as HeroSet Player->>MC : 开始关卡 MC->>RC : getStageType(stage, level) RC-->>MC : 返回关卡类型 MC->>RC : getStageMonsterConfigs(stage, level) RC->>RC : calculateMonsterStrengthMultiplier() RC->>RC : generateStageConfig() RC->>RC : getMonsterUUIDsByType() RC-->>MC : 返回怪物配置数组 MC->>Mon : 创建怪物实例 Mon->>HS : 加载怪物数据 HS-->>Mon : 返回属性配置 Mon-->>MC : 怪物实例完成 MC-->>Player : 关卡准备就绪 ``` **图表来源** - [MissionMonComp.ts](file://assets/script/game/map/MissionMonComp.ts#L102-L136) - [RogueConfig.ts](file://assets/script/game/map/RogueConfig.ts#L269-L310) ## 详细组件分析 ### 怪物类型管理系统 #### MonsterType枚举定义 系统通过清晰的枚举定义区分不同类型的怪物: ```mermaid classDiagram class MonsterType { <> +NORMAL : "normal" +ELITE : "elite" +BOSS : "boss" } class StageType { <> +NORMAL : "normal" +ELITE : "elite" +BOSS : "boss" +EVENT : "event" } class EventType { <> +TREASURE : "treasure" +TRAP : "trap" +BUFF : "buff" +DEBUFF : "debuff" } MonsterType --> StageType : "映射到" StageType --> EventType : "可能触发" ``` **图表来源** - [RogueConfig.ts](file://assets/script/game/map/RogueConfig.ts#L35-L55) #### 怪物UUID获取机制 getMonsterUUIDsByType函数实现了根据不同怪物类型获取对应配置表的功能: ```mermaid flowchart TD Start([开始获取怪物UUID]) --> CheckType{检查怪物类型} CheckType --> |NORMAL| GetNormal[调用getMonList获取普通怪物] CheckType --> |ELITE| GetElite[使用EliteMonsterList配置表] CheckType --> |BOSS| GetBoss[使用BossMonsterList配置表] CheckType --> |其他| ReturnEmpty[返回空数组] GetNormal --> FilterMonsters[过滤怪物数据] FilterMonsters --> ReturnUUIDs[返回UUID数组] GetElite --> ReturnEliteUUIDs[返回精英怪物UUID] GetBoss --> ReturnBossUUIDs[返回Boss怪物UUID] ReturnEmpty --> End([结束]) ReturnUUIDs --> End ReturnEliteUUIDs --> End ReturnBossUUIDs --> End ``` **图表来源** - [RogueConfig.ts](file://assets/script/game/map/RogueConfig.ts#L225-L247) **章节来源** - [RogueConfig.ts](file://assets/script/game/map/RogueConfig.ts#L225-L247) ### 关卡配置系统 #### StageConfigRules配置表 系统通过StageConfigRules定义了四种关卡类型的怪物配置规则: | 关卡类型 | 普通怪物 | 精英怪物 | Boss怪物 | 数量范围 | |---------|----------|----------|----------|----------| | NORMAL | 3-6只 | 0只 | 0只 | 基础3只递增 | | ELITE | 2-5只 | 1-4只 | 0只 | 混合配置 | | BOSS | 1-4只 | 1-3只 | 1只 | 高强度组合 | | EVENT | 1-4只 | 0只 | 0只 | 少量怪物 | #### 强度计算引擎 calculateMonsterStrengthMultiplier函数实现了基于关卡进度的强度倍率计算: ```mermaid flowchart TD Start([开始计算强度倍率]) --> CalcStage[计算关卡倍率
stageMultiplier = 1 + (stage-1) * 0.1] CalcStage --> CalcLevel[计算等级倍率
levelMultiplier = 1 + (level-1) * 0.05] CalcLevel --> Multiply[相乘得到最终倍率
strengthMultiplier = stageMultiplier * levelMultiplier] Multiply --> Return[返回强度倍率] Return --> End([结束]) ``` **图表来源** - [RogueConfig.ts](file://assets/script/game/map/RogueConfig.ts#L175-L180) **章节来源** - [RogueConfig.ts](file://assets/script/game/map/RogueConfig.ts#L65-L132) - [RogueConfig.ts](file://assets/script/game/map/RogueConfig.ts#L175-L180) ### 怪物生成流程 #### getStageMonsterConfigs函数详解 该函数是怪物配置生成的核心,整合了关卡配置、强度计算和UUID选择: ```mermaid sequenceDiagram participant Caller as 调用者 participant Func as getStageMonsterConfigs participant Gen as generateStageConfig participant Calc as calculateMonsterStrengthMultiplier participant UUID as getMonsterUUIDsByType Caller->>Func : getStageMonsterConfigs(stage, level) Func->>Gen : 生成关卡配置 Gen-->>Func : 返回怪物类型数组 Func->>Calc : 计算强度倍率 Calc-->>Func : 返回倍率值 loop 遍历每个怪物类型 Func->>UUID : 获取该类型UUID列表 UUID-->>Func : 返回UUID数组 Func->>Func : 随机选择UUID Func->>Func : 构建怪物配置对象 end Func-->>Caller : 返回完整怪物配置数组 ``` **图表来源** - [RogueConfig.ts](file://assets/script/game/map/RogueConfig.ts#L269-L310) **章节来源** - [RogueConfig.ts](file://assets/script/game/map/RogueConfig.ts#L269-L310) ### 怪物数据源关联性 #### Mon.ts与heroSet.ts的数据绑定 怪物实体通过Mon.ts加载来自heroSet.ts的配置数据: ```mermaid classDiagram class Monster { +load(pos, scale, uuid, is_boss, strengthMultiplier) +hero_init(uuid, node, scale, box_group, is_boss, is_call, strengthMultiplier) -init() -destroy() } class HeroInfo { +uuid : number +name : string +path : string +fac : FacSet +type : HType +hp : number +mp : number +ap : number +def : number +skills : number[] } class MonModelComp { +base_hp : number +base_mp : number +base_ap : number +base_def : number +strengthMultiplier : number } Monster --> HeroInfo : "使用数据" Monster --> MonModelComp : "包含组件" MonModelComp --> HeroInfo : "应用属性" ``` **图表来源** - [Mon.ts](file://assets/script/game/hero/Mon.ts#L20-L110) - [heroSet.ts](file://assets/script/game/common/config/heroSet.ts#L80-L151) **章节来源** - [Mon.ts](file://assets/script/game/hero/Mon.ts#L20-L110) - [heroSet.ts](file://assets/script/game/common/config/heroSet.ts#L80-L151) ### 随机事件系统 #### EventConfig配置表 系统提供了完整的随机事件配置,支持四种事件类型: | 事件类型 | 触发概率 | 效果描述 | |---------|----------|----------| | TREASURE | 30% | 获得额外奖励 | | TRAP | 25% | 受到一定伤害 | | BUFF | 25% | 获得临时增益效果 | | DEBUFF | 20% | 受到临时减益效果 | **章节来源** - [RogueConfig.ts](file://assets/script/game/map/RogueConfig.ts#L134-L165) ## 依赖关系分析 ```mermaid graph TD subgraph "外部依赖" ECS[ECS框架] Oops[Oops插件框架] CC[Cocos Creator] end subgraph "内部模块" RC[RogueConfig] MC[MissionMonComp] Mon[Monster实体] HS[HeroSet] end subgraph "配置数据" HeroInfo[HeroInfo配置] SkillSet[SkillSet配置] HeroAttrs[HeroAttrs配置] end RC --> HS MC --> RC MC --> Mon Mon --> HS Mon --> HeroInfo Mon --> SkillSet Mon --> HeroAttrs RC -.-> ECS MC -.-> Oops Mon -.-> CC ``` **图表来源** - [RogueConfig.ts](file://assets/script/game/map/RogueConfig.ts#L1-L10) - [MissionMonComp.ts](file://assets/script/game/map/MissionMonComp.ts#L1-L15) **章节来源** - [RogueConfig.ts](file://assets/script/game/map/RogueConfig.ts#L1-L10) - [MissionMonComp.ts](file://assets/script/game/map/MissionMonComp.ts#L1-L15) ## 性能考虑 ### 怪物生成优化策略 1. **延迟加载**:怪物实体采用延迟初始化机制,避免一次性加载过多资源 2. **随机选择优化**:使用Math.random()进行高效随机选择,避免复杂算法 3. **配置缓存**:关卡配置结果被缓存在MissionMonComp中,减少重复计算 4. **内存管理**:怪物实体销毁时正确释放组件和资源 ### 强度计算优化 - 使用简单的数学运算替代复杂的属性计算 - 强度倍率计算结果被缓存,避免重复计算 - 关卡类型判断采用分支预测友好的条件语句 ## 故障排除指南 ### 常见问题及解决方案 #### 怪物配置不生效 **问题现象**:关卡中没有生成预期的怪物类型 **排查步骤**: 1. 检查EliteMonsterList和BossMonsterList是否包含正确的UUID 2. 验证getMonsterUUIDsByType函数的返回值 3. 确认generateStageConfig生成的怪物类型数组 **解决方案**: - 在heroSet.ts中添加缺失的怪物UUID - 检查MonsterType枚举定义是否正确 - 验证关卡配置规则中的怪物数量设置 #### 强度倍率异常 **问题现象**:怪物强度不符合预期的增长曲线 **排查步骤**: 1. 检查calculateMonsterStrengthMultiplier函数的计算逻辑 2. 验证关卡号和等级参数传递是否正确 3. 确认基础属性值是否合理 **解决方案**: - 调整关卡倍率和等级倍率的计算公式 - 检查HeroInfo中的基础属性配置 - 验证强度倍率的应用逻辑 #### 随机事件不触发 **问题现象**:事件关卡中没有随机事件发生 **排查步骤**: 1. 检查EventConfig的概率设置 2. 验证getRandomEvent函数的随机性 3. 确认事件处理逻辑是否正确 **解决方案**: - 调整事件概率分布,确保总和为1 - 检查随机数生成器的实现 - 验证事件处理函数的调用时机 **章节来源** - [RogueConfig.ts](file://assets/script/game/map/RogueConfig.ts#L175-L200) - [MissionMonComp.ts](file://assets/script/game/map/MissionMonComp.ts#L135-L169) ## 结论 RogueConfig.ts构建了一个完整而灵活的怪物配置体系,通过分层的设计实现了怪物类型的差异化管理和关卡的程序化生成。系统的三大核心特性——类型管理、强度计算和随机事件——为肉鸽模式提供了丰富的游戏体验。 ### 主要优势 1. **类型安全**:通过枚举确保怪物类型的一致性 2. **可扩展性**:配置表设计支持轻松添加新怪物类型 3. **动态平衡**:强度计算机制保证游戏难度的渐进式提升 4. **随机性**:事件系统增加了游戏的不确定性和趣味性 ### 改进建议 1. **配置验证**:添加配置完整性检查机制 2. **性能监控**:在大型关卡中监控怪物生成性能 3. **平衡调整**:提供更精细的强度调节工具 4. **可视化编辑**:开发关卡配置的可视化编辑器 该系统为肉鸽游戏提供了坚实的基础架构,支持开发者根据具体需求进行定制和扩展,是构建高质量肉鸽游戏的重要组件。