Files
pixelheros/.qoder/repowiki/zh/content/地图系统/肉鸽关卡配置/怪物配置体系.md
panw 4235e3b776 refactor(game): 移除已弃用的事件常量
- 删除 UpdateHero 和 UpdateFightHero 事件
- 移除 MISSION_UPDATE 事件常量
- 优化游戏事件枚举定义
2025-10-28 16:15:47 +08:00

435 lines
13 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 怪物配置体系
<cite>
**本文档引用的文件**
- [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)
</cite>
## 目录
1. [概述](#概述)
2. [项目结构](#项目结构)
3. [核心组件](#核心组件)
4. [架构概览](#架构概览)
5. [详细组件分析](#详细组件分析)
6. [依赖关系分析](#依赖关系分析)
7. [性能考虑](#性能考虑)
8. [故障排除指南](#故障排除指南)
9. [结论](#结论)
## 概述
RogueConfig.ts是肉鸽模式中的核心怪物配置管理系统提供了完整的怪物类型定义、关卡配置规则、强度计算机制和随机事件系统。该系统通过分层的配置结构实现了怪物的差异化管理支持普通怪物、精英怪物和Boss怪物三种类型并能够根据关卡进度动态调整怪物数量和强度。
系统的主要功能包括:
- **怪物类型管理**通过MonsterType枚举定义三种怪物类型
- **关卡配置系统**支持普通关卡、精英关卡、Boss关卡和事件关卡
- **强度计算引擎**:基于关卡号和等级计算怪物强度倍率
- **随机事件系统**:提供宝箱、陷阱、增益和减益事件
- **程序化关卡生成**:支持怪物数量随关卡递增的动态配置
## 项目结构
```mermaid
graph TB
subgraph "怪物配置模块"
RC[RogueConfig.ts<br/>核心配置管理]
MC[MissionMonComp.ts<br/>怪物生成控制]
end
subgraph "数据源模块"
HS[heroSet.ts<br/>英雄/怪物数据]
Mon[Mon.ts<br/>怪物实体管理]
end
subgraph "配置系统"
SC[StageConfigRules<br/>关卡配置规则]
EM[EliteMonsterList<br/>精英怪物配置]
BM[BossMonsterList<br/>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 {
<<enumeration>>
+NORMAL : "normal"
+ELITE : "elite"
+BOSS : "boss"
}
class StageType {
<<enumeration>>
+NORMAL : "normal"
+ELITE : "elite"
+BOSS : "boss"
+EVENT : "event"
}
class EventType {
<<enumeration>>
+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[计算关卡倍率<br/>stageMultiplier = 1 + (stage-1) * 0.1]
CalcStage --> CalcLevel[计算等级倍率<br/>levelMultiplier = 1 + (level-1) * 0.05]
CalcLevel --> Multiply[相乘得到最终倍率<br/>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. **可视化编辑**:开发关卡配置的可视化编辑器
该系统为肉鸽游戏提供了坚实的基础架构,支持开发者根据具体需求进行定制和扩展,是构建高质量肉鸽游戏的重要组件。