Files
heros/assets/script/Design.md
2025-07-11 11:12:06 +08:00

7.2 KiB
Raw Blame History

游戏总设计

游戏模式(已确定)

玩家角色固定在左边位置,不可移动,怪物从右边进入,玩家主英雄死亡后,游戏失败,干掉 4个boss后胜利(胜利条件还在设计中),boss随机,怪物随机,通过达成一定条件完成事件,获得特定分值,不管输赢,计算最终分值 并排名

玩家角色: 主英雄 + 副英雄

装备栏: 武器,盾牌,饰品

武器:剑,刀,斧,锤

盾牌:盾

饰品:饰品

武器获取和升级方式:

怪物掉落装备石,达到一定要求数量后可以 选择或升级装备 lv1:10个 lv2:20个 lv3:40个 ...以此类推, 每达到一次要求 可以选择获取当前还未获取的装备,或升级现有装备,武器,盾牌,饰品,共用一个装备石要求池(如lv1 选择了1级武器,lv2 可以选择升级武器到lv2,或者获取lv1的盾牌和饰品)

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

基础类型 (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波新手期

// 单一怪物类型,便于熟悉机制
波次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波成长期

// 引入法师怪物,增加战术深度
波次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波挑战期

// 混合搭配,考验装备和技能运用
波次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波+ (无限模式)

// 每5波一个难度递增周期
基础公式:
- 普通怪物数 = 3 + floor(波次/5)
- 远程怪物数 = 1 + floor(波次/8) 
- 法师怪物数 = 0 + floor(波次/10)
- 最大单波总数限制: 12只

怪物等级提升机制

每10波等级提升

怪物等级 = 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

装备石系统设计

装备石获取机制

// 每只怪物掉落装备石数量
getEquipStoneDrops(monsterType, level) {
  const baseDrops = {
    [HType.warrior]: 2,  // 普通怪物
    [HType.remote]: 3,   // 远程怪物  
    [HType.mage]: 4      // 法师怪物
  };
  
  return Math.floor(baseDrops[monsterType] * (1 + (level-1) * 0.2));
}

装备获取/升级成本

// 装备石需求量
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石

装备掉落策略

// 每5波可能掉落新装备类型
每波次奖励:
- 波次5: 解锁绿色武器选择
- 波次10: 解锁绿色盾牌选择  
- 波次15: 解锁绿色饰品选择
- 波次20: 解锁蓝色装备选择
- 波次30: 解锁紫色装备选择

平衡性分析

装备影响下的战力增长

// 玩家战力发展曲线
初期无装备: 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): 计算装备升级成本