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