13 KiB
13 KiB
怪物配置体系
**本文档引用的文件** - [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)目录
概述
RogueConfig.ts是肉鸽模式中的核心怪物配置管理系统,提供了完整的怪物类型定义、关卡配置规则、强度计算机制和随机事件系统。该系统通过分层的配置结构实现了怪物的差异化管理,支持普通怪物、精英怪物和Boss怪物三种类型,并能够根据关卡进度动态调整怪物数量和强度。
系统的主要功能包括:
- 怪物类型管理:通过MonsterType枚举定义三种怪物类型
- 关卡配置系统:支持普通关卡、精英关卡、Boss关卡和事件关卡
- 强度计算引擎:基于关卡号和等级计算怪物强度倍率
- 随机事件系统:提供宝箱、陷阱、增益和减益事件
- 程序化关卡生成:支持怪物数量随关卡递增的动态配置
项目结构
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
图表来源
章节来源
核心组件
怪物类型枚举系统
系统定义了三个核心的怪物类型,通过枚举确保类型安全和可维护性:
| 怪物类型 | 描述 | 特征 |
|---|---|---|
| NORMAL | 普通怪物 | 基础属性,随机选择 |
| ELITE | 精英怪物 | 强化配置,固定列表 |
| BOSS | Boss怪物 | 高强度,特殊配置 |
关卡类型系统
| 关卡类型 | 触发条件 | 怪物组成 |
|---|---|---|
| NORMAL | 1-9关1-4级 | 普通怪物为主 |
| ELITE | 1-9关5级/10关4级 | 精英+普通怪物 |
| BOSS | 10关5级 | Boss+精英+普通怪物 |
| EVENT | 每5关特殊事件 | 少量普通怪物 |
章节来源
架构概览
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 : 关卡准备就绪
图表来源
详细组件分析
怪物类型管理系统
MonsterType枚举定义
系统通过清晰的枚举定义区分不同类型的怪物:
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 : "可能触发"
图表来源
怪物UUID获取机制
getMonsterUUIDsByType函数实现了根据不同怪物类型获取对应配置表的功能:
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
图表来源
章节来源
关卡配置系统
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函数实现了基于关卡进度的强度倍率计算:
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([结束])
图表来源
章节来源
怪物生成流程
getStageMonsterConfigs函数详解
该函数是怪物配置生成的核心,整合了关卡配置、强度计算和UUID选择:
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 : 返回完整怪物配置数组
图表来源
章节来源
怪物数据源关联性
Mon.ts与heroSet.ts的数据绑定
怪物实体通过Mon.ts加载来自heroSet.ts的配置数据:
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 : "应用属性"
图表来源
章节来源
随机事件系统
EventConfig配置表
系统提供了完整的随机事件配置,支持四种事件类型:
| 事件类型 | 触发概率 | 效果描述 |
|---|---|---|
| TREASURE | 30% | 获得额外奖励 |
| TRAP | 25% | 受到一定伤害 |
| BUFF | 25% | 获得临时增益效果 |
| DEBUFF | 20% | 受到临时减益效果 |
章节来源
依赖关系分析
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
图表来源
章节来源
性能考虑
怪物生成优化策略
- 延迟加载:怪物实体采用延迟初始化机制,避免一次性加载过多资源
- 随机选择优化:使用Math.random()进行高效随机选择,避免复杂算法
- 配置缓存:关卡配置结果被缓存在MissionMonComp中,减少重复计算
- 内存管理:怪物实体销毁时正确释放组件和资源
强度计算优化
- 使用简单的数学运算替代复杂的属性计算
- 强度倍率计算结果被缓存,避免重复计算
- 关卡类型判断采用分支预测友好的条件语句
故障排除指南
常见问题及解决方案
怪物配置不生效
问题现象:关卡中没有生成预期的怪物类型
排查步骤:
- 检查EliteMonsterList和BossMonsterList是否包含正确的UUID
- 验证getMonsterUUIDsByType函数的返回值
- 确认generateStageConfig生成的怪物类型数组
解决方案:
- 在heroSet.ts中添加缺失的怪物UUID
- 检查MonsterType枚举定义是否正确
- 验证关卡配置规则中的怪物数量设置
强度倍率异常
问题现象:怪物强度不符合预期的增长曲线
排查步骤:
- 检查calculateMonsterStrengthMultiplier函数的计算逻辑
- 验证关卡号和等级参数传递是否正确
- 确认基础属性值是否合理
解决方案:
- 调整关卡倍率和等级倍率的计算公式
- 检查HeroInfo中的基础属性配置
- 验证强度倍率的应用逻辑
随机事件不触发
问题现象:事件关卡中没有随机事件发生
排查步骤:
- 检查EventConfig的概率设置
- 验证getRandomEvent函数的随机性
- 确认事件处理逻辑是否正确
解决方案:
- 调整事件概率分布,确保总和为1
- 检查随机数生成器的实现
- 验证事件处理函数的调用时机
章节来源
结论
RogueConfig.ts构建了一个完整而灵活的怪物配置体系,通过分层的设计实现了怪物类型的差异化管理和关卡的程序化生成。系统的三大核心特性——类型管理、强度计算和随机事件——为肉鸽模式提供了丰富的游戏体验。
主要优势
- 类型安全:通过枚举确保怪物类型的一致性
- 可扩展性:配置表设计支持轻松添加新怪物类型
- 动态平衡:强度计算机制保证游戏难度的渐进式提升
- 随机性:事件系统增加了游戏的不确定性和趣味性
改进建议
- 配置验证:添加配置完整性检查机制
- 性能监控:在大型关卡中监控怪物生成性能
- 平衡调整:提供更精细的强度调节工具
- 可视化编辑:开发关卡配置的可视化编辑器
该系统为肉鸽游戏提供了坚实的基础架构,支持开发者根据具体需求进行定制和扩展,是构建高质量肉鸽游戏的重要组件。