Files
heros/assets/script/Design.md

11 KiB
Raw Blame History

英雄等级成长系统设计文档

概述

本文档总结了游戏中英雄等级成长系统的设计,包括经验值计算、属性增长机制和英雄类型分类。

英雄类型分类

基础类型 (HType)

  • 战士 (warrior = 0): 近战物理输出,高生存能力
  • 远程 (remote = 1): 远程物理输出,中等生存能力
  • 法师 (mage = 2): 魔法输出,低生存能力但高伤害

元素类型 (HeroKind)

  • 烈焰 (fire = 1): 攻击带击退效果
  • 寒冰 (water = 2): 攻击带速度效果
  • 自然 (nature = 3): 攻击偷取生命
  • 暗影 (shadow = 4): 攻击偷取攻击
  • 神圣 (holy = 5): 攻击带2倍伤害

经验值系统

经验值计算公式

  • 基础经验值: 100
  • 递增值规律: 每级递增10且递增值本身也会递增
  • 公式: 基础经验值 + 递增值累加
  • 递增值规律: 第1级递增值=10第2级递增值=20第3级递增值=30...

升级经验示例

  • 1级→2级: 100经验
  • 2级→3级: 110经验
  • 3级→4级: 120经验
  • 4级→5级: 130经验
  • 以此类推...

属性增长机制

攻击力增长 (AP Growth)

根据英雄类型采用不同的增长模式:

英雄类型 增长公式 说明
战士 Math.floor(baseAp * 0.05) + 3 固定增长为主(每级+3+5%
远程 Math.floor(baseAp * 0.10) + 2 平衡增长(每级+2+10%
法师 Math.floor(baseAp * 0.15) + 1 百分比增长为主(每级+1+15%

生命值增长 (HP Growth)

根据英雄类型采用不同的增长模式:

英雄类型 增长公式 说明
战士 Math.floor(baseHp * 0.08) + 10 高增长(每级+10+8%
远程 Math.floor(baseHp * 0.05) + 5 中等增长(每级+5+5%
法师 Math.floor(baseHp * 0.03) + 3 低增长(每级+3+3%

英雄成长特点分析

战士型英雄

  • 特点: 高生存能力,稳定输出
  • AP增长: 固定增长为主,适合持续战斗
  • HP增长: 高增长,提供优秀的生存能力
  • 适用场景: 前排坦克,持续输出

远程型英雄

  • 特点: 平衡型输出,中等生存能力
  • AP增长: 平衡增长,既有固定加成又有百分比提升
  • HP增长: 中等增长,提供基本生存能力
  • 适用场景: 后排输出,灵活战斗

法师型英雄

  • 特点: 高伤害输出,低生存能力
  • AP增长: 百分比增长为主,后期伤害爆发
  • HP增长: 低增长,需要保护
  • 适用场景: 后排爆发输出,需要团队保护

核心函数说明

经验值相关函数

  • getUpExp(currentLevel): 获取指定等级升级所需经验
  • getTotalUpExp(currentLevel, targetLevel): 获取从当前等级升级到目标等级所需总经验

属性增长相关函数

  • getUpAp(heroId): 获取英雄升级增加的攻击力
  • getUpHp(heroId): 获取英雄升级增加的生命值
  • getHeroTotalAp(heroId, level): 获取英雄在指定等级的总攻击力
  • getHeroTotalHp(heroId, level): 获取英雄在指定等级的总生命值
  • getLevelUpStats(heroId, currentLevel, targetLevel): 获取升级后的完整属性信息

初始怪物配置分析

英雄基础属性分析

主将英雄 (5001-5007)

  • HP: 50 (所有主将)
  • AP: 10 (所有主将)
  • 攻击距离: 700
  • 冷却时间: 1.5秒
  • 移动速度: 50

伙伴英雄 (5021-5028)

  • HP: 50 (所有伙伴)
  • AP: 10-15 (大部分10远程15)
  • 攻击距离: 700
  • 冷却时间: 1.5秒
  • 移动速度: 50

当前怪物配置分析

普通怪物 (5201-5206, 5219-5224)

  • HP: 200 (是英雄的4倍)
  • AP: 5 (是英雄的1/2-1/3)
  • 攻击距离: 250 (比英雄短很多)
  • 冷却时间: 1.5秒
  • 移动速度: 50

精英怪物 (5225-5227)

  • HP: 200
  • AP: 5
  • 攻击距离: 250
  • 冷却时间: 1.5秒
  • 移动速度: 50

初始怪物配置建议

重要前提: 初始英雄只有一个人需要在3次攻击内击杀普通怪物

计算分析

  • 英雄AP: 10
  • 3次攻击总伤害: 10 × 3 = 30
  • 怪物HP上限: 30 (确保3次攻击击杀)

1. 普通怪物 (5201-5206) - 重新配置

// 兽人战士、兽人刺客、兽人护卫、石卫、土卫、树人
{
  hp: 25,         // 降低到英雄的0.5倍确保3次攻击击杀 (10×3=30)
  ap: 8,          // 提升到英雄的80% (原5)
  dis: 300,       // 提升攻击距离 (原250)
  cd: 1.5,        // 保持不变
  speed: 45       // 稍微降低移动速度 (原50)
}

2. 远程怪物 (5203, 5220, 5224) - 重新配置

// 兽人护卫、牛头战士(远程)、独眼巨人(远程)
{
  hp: 20,         // 降低到英雄的0.4倍确保3次攻击击杀
  ap: 12,         // 提升到英雄的120%
  dis: 500,       // 提升远程攻击距离
  cd: 1.5,        // 保持不变
  speed: 50       // 保持移动速度
}

3. 法师怪物 (5216-5218, 5225-5227) - 重新配置

// 元素1-3、精英独眼、精英牛头、精英兽人
{
  hp: 18,         // 降低到英雄的0.36倍确保3次攻击击杀
  ap: 15,         // 提升到英雄的150%
  dis: 600,       // 提升法师攻击距离
  cd: 1.2,        // 降低冷却时间
  speed: 40       // 降低移动速度
}

平衡性考虑

战斗时长控制

  • 目标: 英雄3次攻击击杀普通怪物
  • 普通怪物: 25HP ÷ 10AP = 2.5次攻击 (3次内击杀)
  • 远程怪物: 20HP ÷ 10AP = 2次攻击 (3次内击杀)
  • 法师怪物: 18HP ÷ 10AP = 1.8次攻击 (3次内击杀)

伤害输出平衡

  • 英雄: AP 103次攻击总伤害 30
  • 普通怪物: AP 8对英雄威胁适中
  • 远程怪物: AP 12对英雄威胁较高
  • 法师怪物: AP 15对英雄威胁最高

生存压力分析

  • 英雄HP: 50
  • 普通怪物: 需要6.25次攻击击杀英雄 (50÷8)
  • 远程怪物: 需要4.17次攻击击杀英雄 (50÷12)
  • 法师怪物: 需要3.33次攻击击杀英雄 (50÷15)

配置调整原则

  1. HP配置: 怪物HP ≤ 英雄AP × 3确保3次攻击击杀
  2. AP配置: 怪物AP = 英雄AP × (0.8-1.5倍),提供适当威胁
  3. 攻击距离: 远程怪物 > 法师怪物 > 战士怪物
  4. 移动速度: 战士怪物 > 远程怪物 > 法师怪物
  5. 冷却时间: 法师怪物 < 其他类型,体现爆发特性

难度递进设计

第一波怪物 (推荐)

  • 普通怪物: HP 25, AP 8
  • 特点: 基础威胁,适合新手熟悉战斗机制

第二波怪物 (推荐)

  • 远程怪物: HP 20, AP 12
  • 特点: 增加攻击距离威胁,需要战术考虑

第三波怪物 (推荐)

  • 法师怪物: HP 18, AP 15
  • 特点: 高伤害但脆弱,需要优先击杀

注意事项

  • 所有怪物HP都确保在英雄3次攻击内击杀
  • 怪物AP根据类型递增提供递进式挑战
  • 保持攻击距离和移动速度的差异化
  • 为后续多人团队战斗预留调整空间

怪物经验值系统设计

经验值设置原则

1. 基于怪物威胁度设置

  • 普通怪物: 基础经验值,适合新手
  • 远程怪物: 中等经验值,提供战术挑战
  • 法师怪物: 高经验值,高风险高回报

2. 基于英雄升级需求

  • 英雄升级经验: 1级→2级需要100经验
  • 怪物经验分配: 确保合理的升级节奏

推荐经验值配置

1. 普通怪物 (战士型) - 推荐经验值

// 兽人战士、兽人刺客、石卫、土卫、树人、牛头战士、独眼巨人
{
  exp: 15,        // 基础经验值
  reason: "普通怪物,基础威胁,适合新手"
}

2. 远程怪物 - 推荐经验值

// 兽人护卫、牛头战士(远程)、独眼巨人(远程)
{
  exp: 25,        // 中等经验值
  reason: "远程威胁,需要战术考虑"
}

3. 法师怪物 - 推荐经验值

// 元素1-3、精英独眼、精英牛头、精英兽人
{
  exp: 35,        // 高经验值
  reason: "高伤害但脆弱,高风险高回报"
}

升级节奏分析

单人英雄升级路径

  • 1级→2级: 需要100经验
  • 击杀普通怪物: 需要7只 (100÷15≈6.67)
  • 击杀远程怪物: 需要4只 (100÷25=4)
  • 击杀法师怪物: 需要3只 (100÷35≈2.86)

混合怪物组合升级

  • 2只普通 + 2只远程: 15×2 + 25×2 = 80经验
  • 1只普通 + 1只远程 + 2只法师: 15 + 25 + 35×2 = 110经验
  • 3只法师: 35×3 = 105经验

经验值平衡考虑

1. 战斗时长与经验值平衡

  • 普通怪物: 3次攻击击杀15经验
  • 远程怪物: 2次攻击击杀25经验
  • 法师怪物: 1.8次攻击击杀35经验
  • 效率比: 法师怪物 > 远程怪物 > 普通怪物

2. 风险与回报平衡

  • 普通怪物: 低风险,低回报
  • 远程怪物: 中等风险,中等回报
  • 法师怪物: 高风险,高回报

3. 新手友好性

  • 第一波: 普通怪物,让新手熟悉机制
  • 第二波: 远程怪物,引入战术考虑
  • 第三波: 法师怪物,提供高经验奖励

经验值计算公式建议

基础公式

// 基于怪物类型和等级的经验值计算
const getMonsterExp = (monsterType: HType, level: number = 1): number => {
  const baseExp = {
    [HType.warrior]: 15,  // 普通怪物
    [HType.remote]: 25,   // 远程怪物
    [HType.mage]: 35      // 法师怪物
  };
  
  return baseExp[monsterType] * level;
};

等级递增公式

// 高等级怪物经验值递增
const getLeveledMonsterExp = (baseExp: number, level: number): number => {
  if (level <= 1) return baseExp;
  return Math.floor(baseExp * (1 + (level - 1) * 0.5));
};

经验值配置示例

1级怪物经验值

怪物类型 基础经验值 说明
普通怪物 15 基础威胁,适合新手
远程怪物 25 中等威胁,需要战术
法师怪物 35 高威胁,高风险高回报

2级怪物经验值 (等级递增)

怪物类型 2级经验值 说明
普通怪物 22 15 × 1.5
远程怪物 37 25 × 1.5
法师怪物 52 35 × 1.5

实现建议

1. 在怪物配置中添加经验值字段

// 在HeroInfo中添加exp字段
5201: {
  uuid: 5201,
  name: "兽人战士",
  // ... 其他属性
  exp: 15,  // 新增经验值字段
  info: "普通怪物-战士型"
}

2. 经验值获取函数

// 获取怪物经验值
export const getMonsterExp = (monsterId: number): number => {
  const monsterInfo = HeroInfo[monsterId];
  return monsterInfo?.exp || 10; // 默认10经验
};

3. 升级检查函数

// 检查英雄是否可以升级
export const checkLevelUp = (currentExp: number, currentLevel: number): boolean => {
  const requiredExp = getUpExp(currentLevel);
  return currentExp >= requiredExp;
};

注意事项

  • 经验值设置要考虑游戏节奏,避免升级过快或过慢
  • 不同类型怪物提供不同的经验值,增加战术选择
  • 为后续多人团队和高级怪物预留经验值空间
  • 经验值要与怪物的威胁度和击杀难度成正比