「在线联机原型全集」扩展篇之三:AI 陪练机器人(AI Sparring Bot)

扩展篇之三:AI 陪练机器人。设计了基于规则+行为树+难度自适应的陪练 AI,支持新手陪练、冷启动补位、延迟补偿与真人/机器人混合对局,帮助联机游戏解决匹配等待与新手挫败两大问题。

陪练 AI 是联机游戏的「隐形队友」:它在新手期陪练、在人少时补位、在玩家想练习时当陪打。本 PRD 是《在线联机原型全集》的扩展篇之三,聚焦可复用的陪练 AI 框架——从规则脚本到难度自适应,能横向接入任意 PvP 原型。


1. 目标与验证点

编号验证能力说明
B1规则陪练新手可稳定击败的陪练,覆盖基础操作
B2行为树决策多策略 AI,支持进攻/防守/资源切换
B3难度自适应根据对局表现实时调整强度
B4真人补位匹配冷启动时以 AI 补位,不露馅
B5与真人混合同一对局真人 + 机器人并存

一句话目标:让玩家「随时能练、永远有人陪」,且 AI 强度平滑贴合玩家水平,不明显「太蠢」或「开挂」。


2. 系统架构

flowchart TD
A["AI Bot Manager"] -->|spawn| B["Bot Runtime"]
B --> C["Behavior Tree"]
C --> D["Action Executor"]
B --> E["Difficulty Tuner"]
E -->|perf feedback| B
F["Matchmaker"] -->|fill slot| A
B -->|same protocol| G["Game Room"]

说明:

  • Bot Manager:负责 Bot 的生命周期与池化(避免每次对局重建)
  • Bot Runtime:跑行为树,输出与真人玩家相同的操作协议
  • Difficulty Tuner:采集对局指标,动态调参
  • 关键约束:Bot 必须走与真人一致的协议,才能复用反作弊与回放体系

3. 行为树设计

3.1 三层决策

层级内容示例
目标层当前策略目标进攻 / 防守 / 资源
战术层达成目标的动作序列接近 → 攻击 → 撤退
执行层具体操作移动、放技能、拾取
flowchart TD
S["Selector: 选择策略"] --> A{"血量 < 30%?"}
A -->|是| D["防守: 回血 + 规避"]
A -->|否| B{"目标距离 < 攻击范围?"}
B -->|是| C["进攻: 追击 + 攻击"]
B -->|否| E["移动: 拉近距离"]
C --> F["检测技能冷却 → 释放"]

3.2 行为树与规则脚本对比

维度规则脚本行为树
简单策略快,够用略重
多状态切换状态机爆炸天然支持
可扩展性改代码配置化
调试日志可视化节点
适用简单陪练复杂度高的对局

选型建议:新手陪练用规则脚本起步;涉及攻防切换、资源取舍时升级行为树。不要一开始就上复杂框架。


4. 难度自适应

4.1 感知-决策-执行三层调参

感知层:反应延迟(Bot 的「看到」有多快)
决策层:策略选择质量(失误率、激进程度)
执行层:操作精度(命中率、反应阈值)

4.2 动态调整算法

// 基于对局表现平滑调整难度(Elo 对标)
type Tuner struct {
    targetDiff  float64 // 期望 Bot 与玩家胜率差距
    reactionMS  int
    errorRate   float64
}

func (t *Tuner) Adjust(botResult float64) {
    // botResult: 0 = Bot 被碾压, 1 = Bot 碾压对手
    if botResult > 0.6 { // 太强,调弱
        t.reactionMS += 50
        t.errorRate += 0.05
    } else if botResult < 0.4 { // 太弱,调强
        t.reactionMS = max(100, t.reactionMS-50)
        t.errorRate = max(0.0, t.errorRate-0.05)
    }
}

原则:难度变化要「平滑渐进」,不能让玩家突然面对完全不同的对手。胜率目标通常设定在 45%-55% 之间,让玩家「有压力但能赢」。


5. 冷启动补位与真人混合

5.1 匹配冷启动

当匹配等待超过阈值(如 30s):
  方案 A:降匹配精度(扩大 Elo 范围)
  方案 B:注入 Bot 补位(填满空位)

注入策略:优先「技能对标」的 Bot,伪装 ID/行为
需要后台标记,回放/对局可标注「含 AI 补位」

5.2 真人/机器人混合

场景混合方式
新手局真人 + Bot 各半,Bot 略弱
人少时段真人为主,Bot 补足空位
单人对练纯 Bot,可调难度

合规与体验:注入 Bot 必须透明可查(后台标记、对局后披露),否则会被视为「假对局」,损害玩家信任。


6. 接口与协议

模块接口描述
BotManagerPOST /bot/spawn创建陪练 Bot,指定难度与模式
BotManagerPOST /bot/pool/acquire从池中取用 Bot(补位)
TunerPOST /bot/{id}/feedback上报对局结果,触发调参
RuntimePOST /bot/{id}/pause暂停/恢复 Bot 行为
AdminGET /bot/statsBot 胜率分布、混入率监控

7. 数据模型

表字段
bot_profilebot_id、mode、base_reaction_ms、base_error_rate、tree_version
bot_instanceinstance_id、bot_id、room_id、difficulty、created_at、is_fill
bot_feedbackinstance_id、player_id、result、adjusted_params

8. 里程碑与验收

M1 规则陪练(1 周)
  ✅ Bot 能完成基础对局,走与真人一致的协议
M2 行为树决策(1 周)
  ✅ 攻防切换、资源取舍生效
M3 难度自适应(1 周)
  ✅ 对局后参数平滑调整,胜率收敛到目标区间
M4 冷启动补位(1 周)
  ✅ 匹配超时自动补位,后台可标记

验收指标:Bot 对局胜率收敛于 45%-55%;Bot 行为 P99 决策延迟 < 10ms;补位场景玩家投诉「明显是机器人」占比 < 5%。


9. 相关原型衔接

扩展篇定位:陪练 AI 是「永远在线的陪练伙伴」。它解决两个最痛的体验问题——新手没人带、深夜没人陪。与成就系统结合,陪练也能成为成就目标的一部分(「击败 100 个 AI」)。

延伸阅读

下一扩展篇:自定义房间与模组。AI 陪练解决「和谁玩」,自定义房间解决「玩什么、怎么玩」。

继续阅读

探索更多技术文章

浏览归档,发现更多关于系统设计、工具链和工程实践的内容。

全部文章 返回首页

「products」更多文章

  1. 「在线联机原型全集」扩展篇之十二:赛季通行证与商业化(Battle Pass & Monetization)
  2. 「在线联机原型全集」扩展篇之十一:本地化与多语言(Localization & i18n)
  3. 「在线联机原型全集」扩展篇之十:经济风控与反作弊(Economy Risk & Anti-Fraud)