feat(怪物系统): 重构怪物类型与属性计算系统

引入MonType枚举支持普通、精英、BOSS三种怪物类型
新增getMonAttr函数实现基于等级和类型的动态属性计算
更新Mon.ts的load和hero_init方法以支持新参数
扩展heroSet.ts添加多种新怪物类型配置
重构属性初始化流程,移除strengthMultiplier机制
更新相关文档和流程图反映最新设计
This commit is contained in:
panw
2025-10-29 16:50:30 +08:00
parent 9dc1126dfe
commit edb7f23918
6 changed files with 648 additions and 432 deletions

View File

@@ -12,8 +12,17 @@
- [event.md](file://doc/core/common/event.md)
- [loader.md](file://doc/core/common/loader.md)
- [storage.md](file://doc/core/common/storage.md)
- [RogueConfig.ts](file://assets/script/game/map/RogueConfig.ts) - *新增怪物类型配置与属性倍率*
- [MissionMonComp.ts](file://assets/script/game/hero/Mon.ts) - *更新怪物生成逻辑*
</cite>
## 更新摘要
**变更内容**
- 新增怪物类型系统,支持普通/精英/Boss三种类型
- 添加怪物属性倍率配置,不同类型的怪物具有差异化属性
- 更新关卡生成逻辑,支持程序化生成不同类型的怪物组合
- 增强资源引用追踪,添加新修改文件的来源标注
## 目录
1. [简介](#简介)
2. [项目架构概览](#项目架构概览)
@@ -22,13 +31,14 @@
5. [资源加载系统](#资源加载系统)
6. [本地存储系统](#本地存储系统)
7. [碰撞分组配置](#碰撞分组配置)
8. [系统集成与工作流程](#系统集成与工作流程)
9. [最佳实践与优化建议](#最佳实践与优化建议)
10. [总结](#总结)
8. [怪物生成系统](#怪物生成系统)
9. [系统集成与工作流程](#系统集成与工作流程)
10. [最佳实践与优化建议](#最佳实践与优化建议)
11. [总结](#总结)
## 简介
本游戏采用基于Oops Framework的模块化架构核心运行系统包含初始化流程、事件系统、资源加载与本地存储四大核心模块。系统通过异步队列管理初始化顺序使用事件总线实现模块间解耦采用分层资源管理模式并提供安全可靠的本地存储机制。
本游戏采用基于Oops Framework的模块化架构核心运行系统包含初始化流程、事件系统、资源加载与本地存储四大核心模块。系统通过异步队列管理初始化顺序使用事件总线实现模块间解耦采用分层资源管理模式并提供安全可靠的本地存储机制。新增的怪物生成系统支持多种怪物类型和差异化属性配置。
## 项目架构概览
@@ -54,6 +64,7 @@ Loader[异步队列]
end
subgraph "游戏内容"
Map[GameMap]
Monster[怪物生成系统]
Scene[场景管理]
end
Main --> Init
@@ -64,6 +75,7 @@ SMC --> Event
SMC --> Storage
Init --> ResMgr
ResMgr --> Loader
Map --> Monster
```
**图表来源**
@@ -347,6 +359,125 @@ D --> E
**章节来源**
- [BoxSet.ts](file://assets/script/game/common/config/BoxSet.ts#L1-L109)
## 怪物生成系统
### RogueConfig.ts - 怪物类型与属性配置
RogueConfig.ts重构了怪物生成逻辑支持多种怪物类型和差异化属性配置。
#### 怪物类型枚举
```typescript
export enum MonType {
NORMAL = 0, // 普通怪物
ELITE = 1, // 精英怪物
BOSS = 2 // BOSS怪物
}
```
**章节来源**
- [RogueConfig.ts](file://assets/script/game/map/RogueConfig.ts#L21-L23)
#### 怪物属性倍率配置
不同类型的怪物具有不同的属性倍率通过MonAttrSet配置
```mermaid
graph LR
subgraph "属性倍率"
A[普通怪物] --> |HP_MAX:1.1| B[生命值+10%]
A --> |AP:1.05| C[攻击力+5%]
D[精英怪物] --> |HP_MAX:2| E[生命值+100%]
D --> |AP:1.1| F[攻击力+10%]
G[BOSS怪物] --> |HP_MAX:5| H[生命值+400%]
G --> |AP:2| I[攻击力+100%]
end
```
**图表来源**
- [RogueConfig.ts](file://assets/script/game/map/RogueConfig.ts#L69-L73)
#### 属性计算函数
```typescript
export const getMonAttr=(lv:number,uuid:number,MonType:MonType)=>{
let mon=HeroInfo[uuid]
let hp=mon.hp*lv*MonAttrSet[MonType].HP_MAX
let mp=mon.mp*lv*MonAttrSet[MonType].MP
let ap=mon.ap*lv*MonAttrSet[MonType].AP
let map=mon.map*lv*MonAttrSet[MonType].MAP
let def=mon.def*lv*MonAttrSet[MonType].DEF
let mdef=mon.mdef*lv*MonAttrSet[MonType].MDEF
return {hp:hp,mp:mp,ap:ap,map:map,def:def,mdef:mdef}
}
```
**章节来源**
- [RogueConfig.ts](file://assets/script/game/map/RogueConfig.ts#L79-L88)
### MissionMonComp.ts - 关卡怪物生成
MissionMonComp负责根据关卡配置生成相应的怪物。
#### 关卡配置生成逻辑
```mermaid
flowchart TD
A[开始生成怪物] --> B{是否为Boss关卡?}
B --> |是| C[添加Boss怪物]
B --> |否| D{是否为精英关卡?}
D --> |是| E[添加精英怪物]
D --> |否| F[添加普通怪物]
C --> G[减少普通怪物数量]
E --> H[减少普通怪物数量]
F --> I[按基础数量生成]
G --> J[生成额外怪物?]
H --> J
I --> J
J --> K[返回怪物配置数组]
```
**图表来源**
- [RogueConfig.ts](file://assets/script/game/map/RogueConfig.ts#L95-L173)
#### 怪物生成流程
1. **关卡类型判断**根据关卡编号判断是否为Boss或精英关卡
2. **特殊怪物添加**Boss关卡添加Boss怪物精英关卡添加精英怪物
3. **普通怪物生成**:根据剩余数量生成普通怪物
4. **额外怪物**:有一定概率生成额外怪物
**章节来源**
- [MissionMonComp.ts](file://assets/script/game/map/MissionMonComp.ts#L15-L199)
#### 代码示例:获取关卡怪物配置
```typescript
// 根据波次生成怪物配置
export function getStageMonConfigs(stage: number): IMonsConfig[] {
const monsterConfigs: IMonsConfig[] = [];
// 判断是否为Boss波次
const isBossStage = BossStage.includes(stage);
// 如果是Boss波次增加一个Boss怪物
if (isBossStage) {
const bossUUID = BossMons[Math.floor(Math.random() * BossMons.length)] || 5201;
monsterConfigs.push({
uuid: bossUUID,
buff: [],
level: stage,
monType: MonType.BOSS
});
}
return monsterConfigs;
}
```
**章节来源**
- [RogueConfig.ts](file://assets/script/game/map/RogueConfig.ts#L95-L173)
## 系统集成与工作流程
### 整体工作流程
@@ -369,12 +500,16 @@ O --> P[云端数据同步]
Q[资源系统] --> R[异步加载队列]
R --> S[进度监控]
S --> T[资源释放]
U[怪物系统] --> V[RogueConfig配置]
V --> W[MissionMonComp生成]
W --> X[属性计算]
```
**图表来源**
- [Main.ts](file://assets/script/Main.ts#L1-L41)
- [Initialize.ts](file://assets/script/game/initialize/Initialize.ts#L1-L207)
- [SingletonModuleComp.ts](file://assets/script/game/common/SingletonModuleComp.ts#L1-L194)
- [RogueConfig.ts](file://assets/script/game/map/RogueConfig.ts#L0-L178)
### 数据流管理
@@ -413,8 +548,15 @@ S --> T[资源释放]
3. **备份策略**:建立数据备份和恢复机制
4. **权限控制**:限制对敏感数据的访问权限
### 怪物系统优化
1. **类型区分**合理配置普通、精英、Boss怪物的比例
2. **属性平衡**通过MonAttrSet调整不同类型怪物的属性倍率
3. **关卡设计**:结合关卡编号动态调整怪物配置
4. **性能优化**:批量生成怪物,减少频繁的资源加载
## 总结
本游戏的核心运行系统通过模块化设计实现了高度的可维护性和扩展性。初始化系统确保游戏启动的稳定性和效率,事件系统提供了灵活的模块间通信机制,资源管理系统支持复杂的资源加载和管理需求,本地存储系统保障了数据的安全性和持久性。
系统采用的异步队列模式、事件驱动架构和单例管理模式,为游戏开发提供了坚实的基础框架。通过合理的配置和优化,这套系统能够支持大型游戏项目的开发需求,同时保持良好的性能表现和用户体验。
新增的怪物生成系统通过RogueConfig.ts和MissionMonComp.ts实现了程序化的怪物生成逻辑支持普通、精英、BOSS三种怪物类型并通过属性倍率配置实现了差异化的设计。系统采用的异步队列模式、事件驱动架构和单例管理模式,为游戏开发提供了坚实的基础框架。通过合理的配置和优化,这套系统能够支持大型游戏项目的开发需求,同时保持良好的性能表现和用户体验。