215 lines
6.5 KiB
Markdown
215 lines
6.5 KiB
Markdown
# 英雄等级成长系统设计文档
|
||
|
||
## 概述
|
||
本文档总结了游戏中英雄等级成长系统的设计,包括经验值计算、属性增长机制和英雄类型分类。
|
||
|
||
## 英雄类型分类
|
||
|
||
### 基础类型 (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)`: 计算装备升级成本
|