Files
heros/assets/script/Design.md
2025-07-10 23:22:55 +08:00

215 lines
6.5 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.

# 英雄等级成长系统设计文档
## 概述
本文档总结了游戏中英雄等级成长系统的设计,包括经验值计算、属性增长机制和英雄类型分类。
## 英雄类型分类
### 基础类型 (HType)
- **战士 (warrior = 0)**: 近战物理输出,高生存能力
- **远程 (remote = 1)**: 远程物理输出,中等生存能力
- **法师 (mage = 2)**: 魔法输出,低生存能力但高伤害
## 经验值系统
### 升级经验计算
- **基础经验值**: 100
- **递增规律**: 每级递增10且递增值本身也会递增
- **公式**: 基础经验值 + 递增值累加
### 升级经验示例
- 1级→2级: 100经验
- 2级→3级: 110经验
- 3级→4级: 120经验
- 4级→5级: 130经验
## 属性增长机制
### 攻击力增长
| 英雄类型 | 增长公式 | 说明 |
|---------|---------|------|
| 战士 | `Math.floor(baseAp * 0.05) + 3` | 固定增长为主 |
| 远程 | `Math.floor(baseAp * 0.10) + 2` | 平衡增长 |
| 法师 | `Math.floor(baseAp * 0.15) + 1` | 百分比增长为主 |
### 生命值增长
| 英雄类型 | 增长公式 | 说明 |
|---------|---------|------|
| 战士 | `Math.floor(baseHp * 0.08) + 10` | 高增长 |
| 远程 | `Math.floor(baseHp * 0.05) + 5` | 中等增长 |
| 法师 | `Math.floor(baseHp * 0.03) + 3` | 低增长 |
## 怪物配置
### 基础属性
- **普通怪物**: HP 25, AP 8, 经验值 15
- **远程怪物**: HP 20, AP 12, 经验值 25
- **法师怪物**: HP 18, AP 15, 经验值 35
### 配置原则
- 怪物HP ≤ 英雄AP × 3 (确保3次攻击击杀)
- 怪物AP = 英雄AP × (0.8-1.5倍)
- 经验值与怪物威胁度成正比
## 怪物波次系统设计
### 游戏模式设定
- **我方阵容**: 2个英雄1主将+1伙伴
- **战斗方式**: 怪物从右侧单线路向我方攻击
- **失败条件**: 主英雄死亡
- **装备系统**: 武器、盾牌、饰品各1件
### 每波怪物数量设计
#### 第1-5波新手期
```typescript
// 单一怪物类型,便于熟悉机制
波次1: 3只普通怪物 (总HP: 75, 总AP: 24)
波次2: 4只普通怪物 (总HP: 100, 总AP: 32)
波次3: 2只普通 + 1只远程 (总HP: 70, 总AP: 28)
波次4: 5只普通怪物 (总HP: 125, 总AP: 40)
波次5: 3只普通 + 1只远程 (总HP: 95, 总AP: 36)
```
#### 第6-10波成长期
```typescript
// 引入法师怪物,增加战术深度
波次6: 2只普通 + 2只远程 (总HP: 90, 总AP: 40)
波次7: 4只普通 + 1只法师 (总HP: 118, 总AP: 47)
波次8: 1只普通 + 3只远程 (总HP: 85, 总AP: 44)
波次9: 3只普通 + 1只远程 + 1只法师 (总HP: 113, 总AP: 51)
波次10: 2只普通 + 2只远程 + 1只法师 (总HP: 108, 总AP: 56)
```
#### 第11-15波挑战期
```typescript
// 混合搭配,考验装备和技能运用
波次11: 6只普通怪物 (总HP: 150, 总AP: 48)
波次12: 2只普通 + 3只远程 (总HP: 110, 总AP: 52)
波次13: 5只普通 + 2只法师 (总HP: 161, 总AP: 70)
波次14: 3只普通 + 2只远程 + 2只法师 (总HP: 151, 总AP: 74)
波次15: 1只普通 + 4只远程 + 2只法师 (总HP: 141, 总AP: 78)
```
#### 第16波+ (无限模式)
```typescript
// 每5波一个难度递增周期
基础公式:
- 普通怪物数 = 3 + floor(波次/5)
- 远程怪物数 = 1 + floor(波次/8)
- 法师怪物数 = 0 + floor(波次/10)
- 最大单波总数限制: 12只
```
### 怪物等级提升机制
#### 每10波等级提升
```typescript
怪物等级 = 1 + floor(波次/10)
// 怪物属性随等级增长
getMonsterStats(baseStats, level) {
return {
hp: Math.floor(baseStats.hp * (1 + (level-1) * 0.3)),
ap: Math.floor(baseStats.ap * (1 + (level-1) * 0.25)),
exp: Math.floor(baseStats.exp * (1 + (level-1) * 0.4))
}
}
```
#### 等级对应的怪物强度示例
| 等级 | 普通怪物 | 远程怪物 | 法师怪物 |
|------|----------|----------|----------|
| 1级 | HP:25, AP:8 | HP:20, AP:12 | HP:18, AP:15 |
| 2级 | HP:33, AP:10 | HP:26, AP:15 | HP:23, AP:19 |
| 3级 | HP:41, AP:12 | HP:32, AP:18 | HP:29, AP:23 |
| 4级 | HP:49, AP:14 | HP:38, AP:21 | HP:35, AP:27 |
| 5级 | HP:57, AP:16 | HP:44, AP:24 | HP:41, AP:31 |
## 装备石系统设计
### 装备石获取机制
```typescript
// 每只怪物掉落装备石数量
getEquipStoneDrops(monsterType, level) {
const baseDrops = {
[HType.warrior]: 2, // 普通怪物
[HType.remote]: 3, // 远程怪物
[HType.mage]: 4 // 法师怪物
};
return Math.floor(baseDrops[monsterType] * (1 + (level-1) * 0.2));
}
```
### 装备获取/升级成本
```typescript
// 装备石需求量
getEquipUpgradeCost(equipLevel, quality) {
const baseCosts = {
[Quality.GREEN]: 50,
[Quality.BLUE]: 80,
[Quality.PURPLE]: 120
};
// 每次升级成本翻倍
return baseCosts[quality] * Math.pow(2, equipLevel - 1);
}
```
### 装备石需求示例
| 装备等级 | 绿色品质 | 蓝色品质 | 紫色品质 |
|----------|----------|----------|----------|
| 1级→2级 | 50石 | 80石 | 120石 |
| 2级→3级 | 100石 | 160石 | 240石 |
| 3级→4级 | 200石 | 320石 | 480石 |
| 4级→5级 | 400石 | 640石 | 960石 |
### 装备掉落策略
```typescript
// 每5波可能掉落新装备类型
每波次奖励:
- 波次5: 解锁绿色武器选择
- 波次10: 解锁绿色盾牌选择
- 波次15: 解锁绿色饰品选择
- 波次20: 解锁蓝色装备选择
- 波次30: 解锁紫色装备选择
```
## 平衡性分析
### 装备影响下的战力增长
```typescript
// 玩家战力发展曲线
初期无装备: AP 20, HP 100
5波后(绿武器1): AP 30, HP 100
10波后(+绿盾1): AP 30, HP 140
15波后(+绿饰品1): AP 36, HP 160
20波后(蓝装备2): AP 50, HP 200
30波后(紫装备3): AP 80, HP 300
```
### 难度递增合理性验证
- **初期(1-5波)**: 怪物总威胁度略低于玩家,学习期
- **成长期(6-15波)**: 怪物威胁度与玩家装备提升同步
- **挑战期(16波+)**: 需要技能配合和装备优化才能通过
## 核心函数
### 经验值相关
- `getUpExp(currentLevel)`: 获取升级所需经验
- `getTotalUpExp(currentLevel, targetLevel)`: 获取总经验需求
### 属性增长相关
- `getUpAp(heroId)`: 获取攻击力增长
- `getUpHp(heroId)`: 获取生命值增长
- `getHeroTotalAp(heroId, level)`: 获取总攻击力
- `getHeroTotalHp(heroId, level)`: 获取总生命值
- `getLevelUpStats(heroId, currentLevel, targetLevel)`: 获取完整属性信息
### 怪物波次相关
- `getWaveMonsters(waveNumber)`: 获取指定波次的怪物配置
- `getMonsterLevel(waveNumber)`: 获取怪物等级
- `getEquipStoneDrops(monsterType, level)`: 计算装备石掉落
- `getEquipUpgradeCost(equipLevel, quality)`: 计算装备升级成本