3879 字
19 分钟
战斗AI设计文档 - 《无尽牌域》敌人AI系统
战斗AI设计文档
《无尽牌域》敌人AI系统
📋 文档信息
- 版本: v1.0
- 日期: 2026-05-08
- 作者: GameDesigner
- 对应GDD: GDD-roguelike-card-game.md
- 状态: 设计阶段
🎯 AI设计目标
核心原则
- 可预测性 - 玩家能够理解敌人的行动逻辑
- 公平性 - AI不依赖”作弊”数值,而是智能决策
- 多样性 - 不同敌人有不同行为模式,避免单调
- 可调性 - AI难度可以通过参数轻松调整
AI设计禁忌
- ❌ 不允许AI”开图”看到玩家手牌(除非特殊敌人)
- ❌ 不允许AI使用玩家不可用卡牌
- ❌ 不允许AI在普通难度下做出”完美决策”
- ✅ 允许AI在困难模式下有”预判”(模拟高级玩家思维)
🧠 AI决策框架
决策优先级系统
所有敌人AI基于优先级评分系统进行决策:
# 伪代码:敌人决策逻辑def enemy_turn(enemy, player, game_state): # 1. 评估当前局势 threat_level = evaluate_threat(player) self_preservation = evaluate_self_hp(enemy)
# 2. 根据敌人类型选择行为模式 if enemy.type == "AGGRESSIVE": actions = prioritize_damage(enemy, player) elif enemy.type == "DEFENSIVE": actions = prioritize_survival(enemy, player) elif enemy.type == "STRATEGIC": actions = strategic_decision(enemy, player, game_state)
# 3. 选择最高评分行动 best_action = max(actions, key=lambda x: x.score)
# 4. 执行行动 execute_action(best_action)
# 5. 更新意图预告(给玩家看) update_intent_display(best_action)📊 敌人行为模式分类
类型1:激进型 (Aggressive)
设计理念:优先造成伤害,忽视防御
决策权重:
- 攻击玩家:权重 70%
- 防御自己:权重 20%
- 使用特殊技能:权重 10%
典型敌人:哥布林战士、狂暴野猪
AI逻辑示例:
哥布林战士: 类型: 激进型 生命值: 30 攻击力: 8 防御力: 2
决策逻辑: - 如果玩家生命 > 50%: 90%概率攻击 - 如果玩家生命 < 50%: 100%概率攻击(处决模式) - 如果自身体力 < 30%: 40%概率防御
特殊技能: "偷袭" 触发条件: 玩家手牌数 > 5 效果: 偷取玩家1张随机手牌 使用概率: 15%类型2:防御型 (Defensive)
设计理念:优先保证生存,伺机反击
决策权重:
- 防御自己:权重 50%
- 攻击玩家:权重 30%
- 回血/增益:权重 20%
典型敌人:亡灵骑士、铁甲兵团
AI逻辑示例:
亡灵骑士: 类型: 防御型 生命值: 50 攻击力: 6 防御力: 10
决策逻辑: - 如果自身防御 < 10: 80%概率施加防御 - 如果玩家攻击力 > 10: 60%概率使用"盾挡" - 如果自身生命 < 30%: 100%概率使用"生命虹吸"
特殊技能: "亡灵守护" 触发条件: 生命值首次低于50% 效果: 获得"无敌"1回合 使用限制: 每场战斗1次类型3:策略型 (Strategic)
设计理念:根据局势动态调整,模拟”智能对手”
决策权重:动态变化
典型敌人:巫师、首领、智慧型BOSS
AI逻辑示例:
暗影巫师: 类型: 策略型 生命值: 40 攻击力: 10 防御力: 3
决策逻辑: 回合1-2: 优先施加Debuff(弱化玩家) 回合3-5: 如果玩家攻击力 > 12,优先防御 回合6+: 如果自身生命 > 70%,激进攻击;否则保守防御
特殊技能: "暗影诅咒" 触发条件: 玩家生命 > 80% 且 玩家手牌 < 3 效果: 玩家每回合流失3点生命,持续3回合 优先级: 高(如果触发条件满足,90%概率使用)类型4:狂暴型 (Berserker)
设计理念:生命值越低越危险,高压迫感
决策权重:与生命值成反比
典型敌人:狂暴巨魔、血怒狼人
AI逻辑示例:
狂暴巨魔: 类型: 狂暴型 生命值: 80 攻击力: 10 (基础) 防御力: 5
狂暴机制: 生命值 100-70%: 攻击力 = 10,行为 = 普通 生命值 70-40%: 攻击力 = 15,行为 = 激进 生命值 40-10%: 攻击力 = 20,行为 = 疯狂(无视防御) 生命值 < 10%: 攻击力 = 30,行为 = 自杀式攻击
特殊技能: "血怒" 触发条件: 生命值首次低于50% 效果: 攻击力永久+10,防御力永久-5 使用限制: 每场战斗1次🔥 BOSS AI设计
BOSS设计原则
- 阶段性 - BOSS应有至少3个阶段(100-70% / 70-30% / 30-0%)
- 预告性 - 强力技能必须提前1回合预告
- 反制性 - BOSS应针对玩家的卡组类型调整策略
BOSS示例1:炎魔领主
炎魔领主: 生命值: 200 攻击力: 15 (基础) 防御力: 8
=== 第一阶段 (100-70% 生命) === 行为模式: "试探"
回合1: 行动: 施加"AOE火焰" (对所有敌人造成5点伤害) 意图预告: "准备释放火焰"
回合2: 行动: 普通攻击 (造成15点伤害) 意图预告: "攻击最弱的敌人"
回合3: 行动: 防御 (获得10点护甲) 意图预告: "准备防御"
循环: 回合1-3循环
=== 第二阶段 (70-30% 生命) === 行为模式: "狂怒" 解锁新技能: "火焰风暴"
火焰风暴: 效果: 对所有敌人造成12点伤害 + 施加"燃烧"(每回合3点伤害,持续3回合) 使用条件: 每3回合可使用1次 意图预告: "2回合后释放火焰风暴!" (提前2回合预告)
决策变化: - 攻击频率 +30% - 防御频率 -20% - 如果玩家有"燃烧"Debuff: 50%概率使用"AOE火焰"(引爆燃烧)
=== 第三阶段 (30-0% 生命) === 行为模式: "死亡挣扎" 解锁终极技能: "地狱火"
地狱火: 效果: 对所有敌人造成30点伤害 使用条件: 生命值低于10%时必定使用 意图预告: "即将释放地狱火!" (下回合行动) 特殊: 释放后BOSS进入"疲劳"状态(1回合无法行动)
决策变化: - 优先使用高伤害技能 - 不再使用防御 - 如果玩家生命 < 30%: 100%概率使用"地狱火"(提前释放)BOSS示例2:冰霜女巫(策略型BOSS)
冰霜女巫: 生命值: 150 攻击力: 8 (基础) 防御力: 5
核心机制: "冰霜值" - 每回合积累1层"冰霜值" - 冰霜值达到5: 释放"暴风雪"(AOE + 冻结1回合) - 释放后冰霜值清零
=== AI决策树 ===
常态决策: IF 玩家有"燃烧"Debuff: 优先级1: 使用"冰霜冲击"(克制火系) ELSE IF 玩家攻击力 > 15: 优先级1: 使用"冰墙"(获得20点护甲) ELSE IF 冰霜值 >= 4: 优先级1: 保留行动,等待释放"暴风雪" ELSE: 优先级1: 使用"冰锥术"(造成8点伤害 + 减速)
特殊机制: "反制预判" 触发条件: 玩家连续2回合使用同一类型卡牌 效果: 女巫获得"抗性"(对该类型卡牌伤害-50%) 设计目的: 鼓励玩家多样化出牌🎲 意图预告系统 (Intent System)
系统设计目的
- 公平性 - 玩家有知情权,可以提前规划
- 策略性 - 玩家可以根据敌人意图调整出牌
- 可读性 - 用图标+文字清晰展示
意图类型与图标
| 意图类型 | 图标 | 描述文案 | 玩家应对策略 |
|---|---|---|---|
| 普通攻击 | ⚔️ | ”攻击造成X点伤害” | 防御/回血 |
| 强力攻击 | ⚔️🔥 | “强力攻击造成X点伤害” | 优先防御 |
| AOE攻击 | 💥 | “对所有敌人攻击” | 分散火力/防御 |
| 防御 | 🛡️ | ”获得X点护甲” | 蓄力/施加Debuff |
| 回血 | ❤️ | ”回复X点生命” | 尽快输出/沉默 |
| 增益 | ⬆️ | ”提升攻击力” | 尽快打断/控制 |
| 特殊技能 | ⭐ | “准备释放XXX” | 根据技能具体应对 |
| 未知 | ❓ | ”???“ | 保留应对手段 |
预告时机设计
敌人决策时机轴:
我方回合结束 ↓敌人开始"思考"(0.5秒动画) ↓显示意图预告(持续到我方下回合结束) ↓敌人执行行动 ↓(如果有下回合特殊技能)提前显示"下回合:XXX"特殊情况处理:
- 如果敌人被”沉默”:意图图标变灰 + “无法行动”
- 如果敌人被”混乱”:意图随机变化
- 如果敌人死亡:意图消失
⚙️ 难度梯度设计
简单难度 (Story Mode)
AI调整参数:
决策优化: - AI决策延迟: +0.5秒(让玩家有反应时间) - 完美决策概率: 20% (大部分时候会"犯错") - 暴击率: -20% (降低伤害波动)
数值调整: - 敌人攻击力: ×0.8 - 敌人生命值: ×0.9 - 敌人防御力: ×0.7
特殊照顾: - 第一局游戏: 敌人"有意"不使用特殊技能 - 如果玩家连续失败2次: 下场战斗敌人攻击力再-10%普通难度 (Normal)
AI调整参数:
决策优化: - AI决策延迟: 0秒(即时决策) - 完美决策概率: 50% - 暴击率: 正常
数值调整: - 敌人攻击力: ×1.0 (标准) - 敌人生命值: ×1.0 - 敌人防御力: ×1.0
特殊机制: - 敌人会根据玩家卡组调整策略(见下文"智能反制")困难难度 (Hard / Ascension Mode)
AI调整参数:
决策优化: - AI决策延迟: -0.3秒(更快决策,增加压迫感) - 完美决策概率: 80% - 暴击率: +20% - 解锁"预判模式": AI可以"预测"玩家下回合行动(模拟高玩)
数值调整: - 敌人攻击力: ×1.2 - 敌人生命值: ×1.15 - 敌人防御力: ×1.1
特殊机制: - 敌人特殊技能使用频率 +30% - BOSS阶段转换时回复10%生命 - 解锁"组合技"(敌人连续使用配合技能)🧩 智能反制系统 (Smart Counter)
设计目的
让AI看起来”聪明”,而不是靠数值碾压
反制逻辑示例
# 伪代码:AI识别和反制玩家策略
def detect_player_strategy(player): """识别玩家的主要策略""" deck_analysis = analyze_deck(player.deck)
if deck_analysis.avg_cost > 3: return "控制流" # 高费用卡牌多 elif deck_analysis.attack_cards > 0.6: return "快攻流" # 攻击卡牌占比高 elif deck_analysis.defense_cards > 0.4: return "防守流" # 防御卡牌占比高 else: return "均衡流"
def counter_strategy(enemy, player_strategy): """根据玩家策略选择反制方案""" if player_strategy == "控制流": # 反制:快速输出,在玩家抽到高费卡前击杀 enemy.priority = "AGGRESSIVE" enemy.buff("敏捷", 2) # 每回合多抽1张牌
elif player_strategy == "快攻流": # 反制:高防御 + 回血,拖后期 enemy.priority = "DEFENSIVE" enemy.ability("生命虹吸") # 攻击时回血
elif player_strategy == "防守流": # 反制:无视防御的技能 enemy.unlock_ability("穿透攻击") # 攻击时无视50%防御实战示例
场景:玩家使用”快攻流”卡组(低费用高攻击卡牌)
回合1: 玩家出牌: "快速攻击"(1费,造成6点伤害) 敌人AI识别: "快攻流特征检测 +1" 敌人行动: 普通攻击
回合2: 玩家出牌: "连击"(2费,造成10点伤害) 敌人AI识别: "快攻流特征检测 +2 → 确认策略" 敌人行动: 使用"防御姿态"(获得15点护甲)
回合3: 敌人AI决策: "玩家快攻流已确认,启动反制模式" 敌人行动: 使用"生命虹吸"(攻击时回复生命)
结果: 玩家高攻击被敌人高防御抵消,敌人开始回血 → 玩家策略失效设计价值:
- 玩家不能一套卡组通吃所有敌人
- 鼓励玩家根据敌人类型调整卡组
- 增加重玩价值
📈 AI行为调试工具
调试模式功能
为了便于测试和调整AI,建议开发以下工具:
AI调试面板: 功能1: "AI决策可视化" - 显示AI当前考虑的Top 3行动 - 显示每个行动的评分 - 显示AI的决策依据
功能2: "AI参数实时调整" - 滑动条调整:攻击倾向 / 防御倾向 / 技能使用频率 - 开关:开启/关闭"智能反制" - 开关:开启/关闭"预判模式"
功能3: "AI行为日志" - 记录每回合AI的决策过程 - 导出为CSV供数据分析 - 标记"异常决策"(评分异常高/低的行动)AI平衡性测试清单
测试项目 | 通过标准 | 测试结果----------------------------|------------------------|----------简单难度AI是否"放水" | 新手胜率 > 70% | [待测试]普通难度AI是否公平 | 玩家胜率 45-55% | [待测试]困难难度AI是否有挑战性 | 玩家胜率 25-35% | [待测试]AI是否会"作弊"(开图看牌) | 0次检测到 | [待测试]BOSS阶段转换是否清晰 | 100%测试者能理解 | [待测试]意图预告是否准确 | 准确率 100% | [待测试]智能反制是否过于强大 | 玩家能找到破解方法 | [待测试]🔄 AI扩展性设计
未来可添加的AI类型
类型5: 群体协作型 (Swarm) 特征: 多个小怪协同作战 示例: 3只哥布林,一只攻击时其他会"呼应"(额外效果)
类型6: 变身型 (Shapeshifter) 特征: 每回合随机变成不同类型 示例: 史莱姆王,每回合随机变为"攻击型/防御型/回复型"
类型7: 学习型 (Learning) 特征: 记住玩家过去3回合的行动并模仿 示例: 镜像法师,复制玩家上回合使用的卡牌
类型8: 环境型 (Environmental) 特征: 利用场地机制 示例: 沼泽怪物,每回合在场地施加"毒雾"📊 AI数值平衡表
| 参数 | 简单难度 | 普通难度 | 困难难度 | 备注 |
|---|---|---|---|---|
| 攻击力加成 | ×0.8 | ×1.0 | ×1.2 | |
| 生命值加成 | ×0.9 | ×1.0 | ×1.15 | |
| 防御力加成 | ×0.7 | ×1.0 | ×1.1 | |
| 暴击率 | -20% | 标准 | +20% | |
| 特殊技能使用率 | ×0.5 | ×1.0 | ×1.3 | |
| 决策完美度 | 20% | 50% | 80% | |
| 反应延迟 | +0.5秒 | 0秒 | -0.3秒 | |
| 智能反制 | 关闭 | 基础 | 高级 |
⚠️ AI设计风险与应对
风险1:AI过于智能,玩家感到”被针对”
应对:
- 限制AI的”预判”能力(只在困难难度开启)
- 让AI的”失误”看起来合理(不是代码bug,而是”角色性格”)
- 提供”AI行为说明”(在图鉴中解释敌人逻辑)
风险2:AI决策过于随机,玩家感到”不公平”
应对:
- 随机性只体现在”同优先级行动选择”上
- 核心决策逻辑必须稳定可预测
- 用”性格差异”解释随机性(如”哥布林性格鲁莽,有时会犯傻”)
风险3:复杂AI影响性能(移动端)
应对:
- AI决策逻辑放在服务器端(如果是在线游戏)
- 单机游戏:简化AI计算,用”预设行为树”而非实时计算
- 每回合AI思考时间上限:0.1秒
📝 版本日志
v1.0 (2026-05-08)
- 初始版本创建
- 完成4种基础AI类型设计(激进/防御/策略/狂暴)
- 完成2个BOSS的完整AI设计
- 完成意图预告系统
- 完成难度梯度设计
- 完成智能反制系统
附录:AI决策树可视化(示例)
敌人决策树(激进型)
开始敌人回合 ↓生命值 > 30%? ├─ 是 → 优先攻击(70%概率) │ ↓ │ 有强力技能可用? │ ├─ 是 → 使用技能(20%) │ └─ 否 → 普通攻击(80%) │ └─ 否 → 疯狂模式 ↓ 攻击力 ×1.5 ↓ 100%概率攻击
结束敌人回合下一步行动:
- 将AI逻辑转化为技术文档(供程序员实现)
- 在Paper Prototype中测试AI决策
- 调整各类型AI的参数权重
- 设计剩余的敌人类型(目标:20种不同行为模式)
文档结束 | 问题反馈请联系设计团队
战斗AI设计文档 - 《无尽牌域》敌人AI系统
https://021028.xyz/posts/default/58/