把VR拳击从“普通”调到“困难”以后,不少玩家的第一感受是:对手的拳变快了,但并没有变聪明。它还是站在同一个距离,按同一套组合出拳,只是节奏更紧。打过几局,玩家就会发现一个窍门——每次被压到角落,往右横移一步,对手的左勾拳就一定落空。从这一刻起,困难模式就不再困难,只是更累。
这就是只按难度等级调整出拳速度的结果:对手变成一个更快的木桩。对老玩家来说,它很快被摸透;对新手来说,快到看不清的拳又毫无乐趣。问题不在速度调得不对,而在对手根本没有在看玩家。下面用一场设想中的三回合对局,按照玩家站位、身体动作、对手决策、场地环境、双方交互的顺序,拆开一个“会看人”的AI对手在每一步读什么。
开赛之前:对手先要知道你站在哪、够得着多远
VR头显和两只手柄持续提供六自由度的位置和朝向,这是AI对手最基础的输入。它首先要算的不是“该出什么拳”,而是三个空间量:你和它之间的 Distance,你伸直手臂能打到的 Reach,以及你在房间里的 Position。臂展可以在开局时让玩家平举双臂测一次,再用对局中的最远出拳位置不断修正。
有了这三个量,对手的站位才有意义。一个臂展较短的玩家,喜欢贴近打;一个身材高大的玩家,往往习惯在外围用直拳控制距离。示例设定里,对手会记录玩家在无压力状态下最常停留的距离区间,把它当作这位玩家的“舒适距离”。后面几乎所有战术,都是在打破或者利用这个距离。
站架也在这一步确定。玩家哪只手习惯放在前面、哪只手更多用来发力,决定了他是正架还是反架。对手不需要玩家在菜单里手动选择,只要观察开局几十秒里哪只手柄出拳更频繁、哪只手出拳速度峰值更高,就能做出判断。站架决定了玩家的强侧和弱侧,也决定了对手绕步时应该朝哪个方向走,才不会一直撞在玩家的重拳上。
同样重要的是玩家在真实房间里的位置。游戏里的擂台可以很大,但玩家身后可能两步就是沙发。头显自带的边界或 Guardian 安全区告诉系统哪里能走,对手在决定前压还是后撤之前,必须先知道玩家还剩多少退路。
第一回合,对手在记笔记:你往哪边躲,爱出哪种拳
第一回合的对手看起来比较“老实”,出拳节奏平稳,组合也不复杂。这是有意为之:它需要足够多、足够相似的试探,才能看清玩家的反应模式。
闪躲方向来自头部轨迹,而不只是手柄
拳击里的闪躲主要靠头和躯干。头显位置在对手出拳前后的横向与纵向位移,可以区分向左、向右侧闪,下潜,或者后撤。结合两只手柄的相对位置,还能粗略推断躯干是否在转动。对手会把“我出了什么拳、玩家往哪边躲”配成一对对记录。
拳种来自手柄的运动轨迹
刺拳和直拳的手柄轨迹接近一条向前的直线,勾拳是一段横向的弧,上勾拳则有明显的自下而上分量。根据速度峰值和轨迹形状,对手可以统计玩家最常用的拳种,以及习惯用什么组合收尾。关于对手为什么还要理解躯干转动、重心和步伐,可以延伸阅读VR体育里的AI对手为什么需要理解玩家真实身体动作。
样本少的时候不下结论
一个回合的数据量很有限。如果玩家只向右躲了三次,这更可能是巧合而不是习惯。对手给每条规律附带一个置信程度,只有同类情况重复出现、并且比例明显偏向一侧时,才把它当成可以利用的模式。追踪短暂丢失时,比如手柄被身体挡住,这几帧数据会被标记为不可靠,不进入统计。
第二回合,对手开始回应:右勾拳守在你习惯的退路上
假设第一回合里,对手发现玩家打完两记连续刺拳后,大多数时候会向右侧横移,准备从侧面进攻。第二回合里,同样的时机出现时,对手会提前把重心转向那一侧,用一记右勾拳封住这条路线。玩家第一次撞上这一拳时,会明显意识到:这个对手在看我。
关键在于它不能每次都封。如果玩家每次向右都一定吃拳,体验会从“被看穿”变成“被读心”,玩家会认为游戏在作弊。更合理的做法是让对手按一定概率使用已学到的规律,其余时候维持原有节奏,同时继续观察玩家有没有调整。玩家开始改向左躲,对手的记录也跟着更新,这才形成一来一回的博弈,而不是单向的惩罚。
拆开来看,对手在每一次攻防交换前大致要走这样几步:
- 确认当前情境:距离是否在玩家舒适区内,玩家刚打出的是什么组合,身后还剩多少空间。
- 查找匹配的规律:在相似情境下,玩家过去最常怎么躲、怎么接拳,这条规律的置信程度够不够。
- 决定是否使用:按当前难度对应的概率,决定这一次是针对玩家习惯出招,还是维持常规节奏。
- 生成带前摇的动作:先播放重心转移和肩部回拉,再出拳,给玩家留出看清和反应的时间。
- 记录结果:这一拳命中、被躲开还是被格挡,玩家这次往哪边走,写回规律统计,供下一次决策使用。
对手的进攻选择也会参考玩家的常用拳种。一个习惯用右直拳收尾的玩家,出完这一拳后右侧往往有短暂的空档,对手就在这个窗口里安排反击。它不需要比玩家快多少,只需要出现在对的地方。
体力下降的信号:拳慢了一点,手也低了一点
到了中后段,玩家的动作会发生两种可观察的变化:出拳的手柄速度峰值下降,以及两次出拳之间回防的手放得越来越低。示例设定里,对手会把本局前段的数据当作玩家当天的参照,当这两个指标同时持续偏离时,判断玩家进入体力下降阶段。
只看单一指标很容易误判。有经验的玩家会故意把手放低引诱对手进攻,再用反击得分;也有人本来就习惯低位防守。因此对手会同时看几件事:手放低是否伴随出拳速度下降,是否伴随步伐变少、头部位移幅度变小,这种状态是否持续了一段时间而不是只出现一两次。几项信号一起出现,才更可能是真的累了,而不是一个战术动作。
对手如何回应,取决于玩家选择的模式。在竞技模式里,它会更多攻击下降的那一侧防守,因为这就是拳击;在训练模式里,它反而会放慢节奏、延长两轮组合之间的间隔,让玩家有机会调整呼吸,保持动作质量。这两种处理都来自同一个判断,只是目标不同。这里的判断只是游戏对动作表现的估计,并不是身体状态的检测;如果感到头晕或身体不适,应该立即摘下头显、停止训练,必要时咨询专业人士。
擂台不能比客厅大:对手要在你的安全区里移动
VR拳击最容易被忽视的,是对手的移动会直接推动玩家的真实移动。对手往前压,玩家就会本能地后退;对手绕到左边,玩家就会转身。如果对手完全按照虚拟擂台的尺寸行动,很可能把玩家一路逼到安全区边缘,甚至让人撞上墙或茶几。
所以对手需要真正的空间意识。示例设计里,它在决定前压之前,会先估算玩家身后到安全区边界的剩余距离;距离不足时,改为横向绕圈,用站位把玩家引回场地中央,而不是继续逼近。虚拟擂台的围绳也可以按照玩家的安全区尺寸缩放,让“被逼到围绳”这件事发生在真实空间的安全范围之内。对于空间较小的玩家,对手会更多使用原地的攻防交换,而减少大范围的步伐移动。
房间里也不只有固定的墙和家具。家人突然走进来、宠物跑到脚边,这些动态情况头显不一定每次都能及时识别。当玩家越过安全区边界、系统切换到透视画面,或者玩家本人触发暂停时,对手必须立刻停止进攻,不能趁这个时候补一拳。恢复对局时,对手也应该先退回到舒适距离之外,给玩家几秒重新站定,而不是从中断前的压迫状态直接接上。
第三回合,读得懂才公平:前摇、反应窗口和命中反馈
一个会学习的对手,如果出拳没有任何预兆,玩家就只能靠猜。公平性的关键在于前摇:真实拳手出拳前会有肩部回拉、重心转移、脚步调整,这些信号比拳本身更早出现。九游体育的VR拳击对手会把前摇当作难度参数,等级越低前摇越明显、持续越久,等级越高前摇越短、越细微,但永远不会为零。
反应窗口还要把系统延迟算进去。从玩家移动头部到画面更新、从手柄挥动到命中判定,每一步都有时间开销。如果对手的拳在画面上出现时已经来不及躲,再明显的前摇也没用。关于真实动作进入游戏需要经过哪些环节,可以参考动作延迟这篇的分析。
命中反馈同样是交互的一部分。玩家打中对手时,手柄震动、对手身体后仰、节奏被打断,这些反馈告诉玩家“这一拳是有效的”。对手被连续命中后短暂退守,也让玩家有机会从被动转为主动,而不是一直被压着打。
那么难度等级还调什么
在这样的设计里,难度等级依然存在,只是调的东西变了。它决定对手使用已学规律的频率、前摇的长短、留给玩家的反应窗口、在玩家体力下降时的压迫程度,出拳速度只是其中一项。新手面对的是一个节奏平稳、预兆清楚、很少针对习惯的对手;老玩家面对的是一个会记住你每一次向右闪躲、并在合适时机等着你的对手。
还有一点值得区分:对手在一局里学到的是玩家当天的状态,而长期的风格档案需要跨很多局慢慢积累。九游体育把两者分开保存,当天的疲劳不会被写成长期的弱点,玩家某一局的特殊打法也不会永久改变对手对他的认识。对玩家来说,最直接的感受是:这个对手打得越久,越像一个真正在观察你的人,而不只是一台更快的出拳机器。