refactor(game): 移除已弃用的事件常量
- 删除 UpdateHero 和 UpdateFightHero 事件 - 移除 MISSION_UPDATE 事件常量 - 优化游戏事件枚举定义
This commit is contained in:
435
.qoder/repowiki/zh/content/地图系统/肉鸽关卡配置/怪物配置体系.md
Normal file
435
.qoder/repowiki/zh/content/地图系统/肉鸽关卡配置/怪物配置体系.md
Normal file
@@ -0,0 +1,435 @@
|
||||
# 怪物配置体系
|
||||
|
||||
<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. **可视化编辑**:开发关卡配置的可视化编辑器
|
||||
|
||||
该系统为肉鸽游戏提供了坚实的基础架构,支持开发者根据具体需求进行定制和扩展,是构建高质量肉鸽游戏的重要组件。
|
||||
Reference in New Issue
Block a user