最后3秒的一次出手,同时经过十个系统
先设定一个模拟场景:乐鱼体育里一场玩家生成的3v3半场篮球,第4节还剩3秒,蓝队48比50落后,玩家操控的蓝队7号在左侧底角接球,准备压哨三分。对面是AI控制的橙队。
这一个回合里,发生了这些事:7号站在哪里、脚有没有踩线,是Map的问题;球出手后的弧线和打框反弹,是Physics的问题;出手时间是否早于终场、这一球算2分还是3分,是Rule的问题;7号此刻的体力和投篮能力,是Player的问题;场边裁判是否吹犯规、记分台是否确认,是NPC的问题;“接球”“起跳”“出手”“封盖”这些动作被记录下来,是Event的问题;橙队防守者要不要扑出去、扑的时候会不会犯规,是AI的问题;比分从48变成51,是Score的问题;这一球之后要被标为关键回合,是Replay的问题;比分反超、时间归零以后进入结算而不是继续开球,是Game Loop的问题。
如果把AI引擎理解为“一个会做决策的模型”,就会漏掉大部分内容。AI做出的每一个决策,都依赖其他九个系统给它的状态。
空间和物理:AI先得知道“底角”意味着什么
Map系统给AI的不应只是坐标,而是带语义的区域:三分线内外、底角、弱侧、禁区、边线。底角三分在很多篮球规则里距离更短,这是空间语义,AI需要知道底角是一个高价值投篮点,防守时要优先照顾。
如果这张场地是玩家生成的,比如把篮筐挪到了场地中央、改成双向进攻(模拟示例),那“底角”这个概念可能根本不存在。AI引擎不能写死“底角要防”,而要从Map系统读取当前场地的投篮价值分布。
Physics系统决定球的飞行、篮筐和篮板的碰撞、球员之间的身体接触。AI在防守扑出时,需要估计自己以当前速度能否在出手前到位,以及急停距离够不够避免撞人。这个估计必须用和实际物理一致的参数,否则AI会做出看起来合理、落地却总是慢半拍的决策。
规则和比分:AI必须知道这一球值多少
Rule系统告诉AI的是:当前比分差2分,一个三分球会让蓝队反超,而一个两分球只会打平进加时。这个信息直接改变防守策略:落后方需要三分,领先方的最优解是宁可让对方投两分,也要封死三分线外。
一个不理解规则的AI会平均用力,每个位置都差不多地防,最后恰好在底角漏人。玩家看到的现象是:AI在最关键的一球上“犯傻”。这不是决策模型不够强,而是它没读到“比分差2、剩3秒”这个组合意味着什么。
Score系统则要保证比分更新的时机和规则一致。压哨球的判定依赖出手时刻和终场时刻的先后,如果Score在球落网时才读取时间,就会把一个有效的压哨球判成无效。
球员、NPC和AI:谁在做决定
Player系统维护每名球员的属性和实时状态:体力、投篮能力、当前是否在起跳中。AI防守时需要知道7号的底角命中能力是高还是低,才能决定扑不扑;如果7号已经连续打了很长时间、体力下降,AI也可以据此选择更保守的防守。
NPC在体育游戏里常被忽略。裁判、记分员、观众、场边教练都是NPC。裁判NPC决定犯规判罚,它的判罚尺度会影响AI防守者敢不敢伸手。如果玩家在乐鱼体育的MOD里把裁判改成“宽松尺度”,AI应该能读到这个变化,防守动作可以更积极。
AI系统本身要区分两件事:战术决策和数值能力。AI在最后3秒选择换防、夹击或放两分守三分,属于战术;偷偷提高防守者的反应速度,属于数值作弊。下一代体育游戏AI引擎应该只在前者上变聪明。
事件、复盘和Game Loop:比赛之后的系统
Event系统把连续的比赛切成可以理解的事件:接球、突破、传球、出手、封盖、犯规、得分。AI需要事件流来理解“刚才发生了什么”,比如对手连续三次在底角出手,这是战术学习的原始材料。
Replay系统读事件流,挑出关键回合并解释原因。示例里这个压哨三分,复盘应该能说明:橙队防守者在7号接球前0.8秒做了一次无意义的换防(模拟数据),导致底角空位。关于怎样从一场比赛里找出这类回合,可以看体育游戏复盘的方法。
Game Loop是整个比赛的状态机:开球、进行、暂停、得分重置、节间、加时、结束、结算。它看起来和AI无关,但AI的很多决策依赖它,比如知道下一节是不是最后一节、知道平局会不会进入加时。玩家生成的比赛里,如果Game Loop缺少加时状态,AI就无从判断“打平”和“输掉”的区别。
这里要把“理解”和“运行”分开。AI需要理解十个系统的状态,但真正让比赛按帧推进、处理手柄输入、同步球的位置和比分的是Runtime,也就是游戏的运行环境;碰撞与弹跳由物理引擎计算,进球是否有效由规则引擎判定,文字大模型只在生成阶段帮忙把玩家的描述翻译成规则和设计。AI对手读取的是Runtime里的实时状态,而不是自己去“想象”比赛。
十个系统,AI各自需要读什么
| 系统 | AI需要读取的信息 | 读不懂时玩家会看到 |
|---|---|---|
| Map | 区域语义、投篮价值分布 | 在高价值位置漏防 |
| Physics | 速度、加速、碰撞参数 | 扑防总是慢半拍或撞人 |
| Rule | 得分规则、时间规则、犯规规则 | 关键时刻策略错误 |
| Player | 属性、体力、当前动作 | 对所有球员一视同仁 |
| NPC | 裁判尺度、记分确认 | 防守动作过于保守或频繁犯规 |
| Event | 连续事件和模式 | 不会针对对手习惯调整 |
| AI | 战术选择与数值边界 | 靠加属性变强,玩家觉得被针对 |
| Score | 比分变化和判定时机 | 压哨球判错 |
| Replay | 关键回合与原因 | 复盘只剩统计数字 |
| Game Loop | 当前阶段与后续状态 | 不知道加时,决策短视 |
这张表也说明了为什么AI引擎不能只靠一个文字大模型。大模型能理解“底角三分很重要”这句话,但真正的底角坐标、球的飞行和压哨判定,要由其他系统提供,具体分工可以看为什么文字大模型不够的拆解。
AI行为异常时,按这个顺序查
在乐鱼体育的创作流程里,如果玩家试玩后觉得“AI很奇怪”,与其直接调AI参数,不如先按顺序排除其他系统:
- 先查Rule和Score:AI是否读到了正确的比分、时间和得分规则。
- 再查Map:玩家修改过的场地,区域语义是否重新计算。
- 再查Physics和Player:AI使用的速度和能力参数是否与实际一致。
- 再查Game Loop:当前阶段、加时和结束条件是否完整。
- 最后才查AI本身的策略和难度设置。
多数“AI犯傻”的问题,在前四步就能找到原因。