feat(怪物系统): 重构怪物类型与属性计算系统
引入MonType枚举支持普通、精英、BOSS三种怪物类型 新增getMonAttr函数实现基于等级和类型的动态属性计算 更新Mon.ts的load和hero_init方法以支持新参数 扩展heroSet.ts添加多种新怪物类型配置 重构属性初始化流程,移除strengthMultiplier机制 更新相关文档和流程图反映最新设计
This commit is contained in:
@@ -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三种怪物类型,并通过属性倍率配置实现了差异化的设计。系统采用的异步队列模式、事件驱动架构和单例管理模式,为游戏开发提供了坚实的基础框架。通过合理的配置和优化,这套系统能够支持大型游戏项目的开发需求,同时保持良好的性能表现和用户体验。
|
||||
Reference in New Issue
Block a user