比赛时钟:同一道浪在第2分钟和第19分钟价值不同

冲浪比赛通常以二三十分钟为一个小组赛段(Heat),每名选手可以冲多道浪,最后取得分最高的两道相加。这条规则决定了AI冲浪对手不能见浪就上。

比赛刚开始时,AI手里没有分数,一道6分左右的中等浪值得拿下来先保底;到第15分钟,它已有一道7分和一道5分,再拿一道6分只是替换掉那道5分,净收益1分,还要花几分钟划回排队区,这段时间可能正好错过浪组里的大浪。到最后两分钟,如果它落后对手4分,就必须抢任何有可能超过所需分数的浪,哪怕风险很高。

所以在im体育里,AI选手做决定的第一个输入是比赛状态:剩余时间、自己的两道最高分、对手的分数、追平或反超所需的分数。浪好不好,是第二个问题。

观察浪组:只能看到玩家也能看到的东西

AI要判断浪的质量,但我们对它的信息来源有严格限制:它不能读取生成器的随机种子,不能提前拿到下一组浪的参数,也不知道这道浪最终会在哪里闭合。它能用的信息和玩家一样:

  • 赛前预报:涌浪周期、方向、浪高,以及风和潮位。
  • 外海的隆起:浪组到达前,远处会出现明显更高的涌起。
  • 本场已经过去的浪:它们在哪里破、剥离快慢、有几道闭合。
  • 潮位和风向的变化趋势。

基于这些,AI维护一个对当前浪组的估计:这组大概几道,第几道可能最大,峰值大约在什么位置。估计会出错,这很正常,真实冲浪者也常看错。估计的精度和AI选手的经验挂钩:新入行的NPC只能分辨“大”和“小”,常常把浪组的第一道当成最大的一道;在这个浪点比过很多场的老将,则能从外海隆起的形状判断峰值会偏里还是偏外,甚至会根据潮位变化提前挪位置。强弱差距体现在读浪的准确度上,而不是信息量的多少。浪组节奏如何生成、为什么不可背,见海浪生成一文。

优先权规则:先判断“我能不能冲”

职业冲浪比赛常用优先权(Priority)制度:持有优先权的选手可以选择任意一道浪,其他人不得在其骑乘时干扰;一旦他接浪,或者划水追浪却没追上,优先权就转给其他人。干扰(Interference)会被处罚,并直接影响计分。im体育的冲浪赛事沿用了这一思路,它给选浪加了一层博弈:

  1. 持有优先权时:AI不应随便用掉它。把优先权用在一道平平的浪上,等于把接下来的大浪让给对手。它更可能坐在峰值,等一道能达到目标分数的浪。
  2. 没有优先权时:AI需要预测对手会不会接这道浪。对手放弃的浪,或者对手来不及接的浪组第二道,才是它的机会。
  3. 对手用掉优先权之后:浪组里剩下的浪归自己优先,AI要评估能否在对手骑乘期间赶到合适位置。

规则对AI一视同仁:它同样会因干扰受罚,也同样不能在对手持有优先权时抢同一道浪。AI不会因为是AI就享受更宽松的规则。

期望分估算:浪质量、位置与风险一起算

当AI可以冲一道浪时,它会粗略估算这道浪的期望分。用一个模拟示例说明思路:

  • 浪质量上限:根据浪高、剥离情况和已观察到的同类浪,估计这道浪冲好了能拿8分左右。
  • 自己的位置:AI此刻在峰值外侧约6米,只能从肩部起乘,上限打折到6.5分左右。
  • 完成概率:结合自身技术和这道浪的陡度,估计完整骑乘的把握约七成。
  • 机会成本:接这道浪要花约三分钟回到排队区,期间可能错过浪组后面更大的一道。

把这些合起来,再对照比赛状态中“需要多少分才有意义”,AI就得到接或不接的倾向。不同性格的AI在这里会有差异:激进型会看重管浪机会,更愿意在低完成率下出手;稳健型更看重完成概率;技术型偏好剥离角大的长浪。这些偏好会随它在世界里的经历缓慢变化——作为NPC运动员,它会记住自己在这个浪点吃过的亏、赢过的比赛,以及某个玩家总喜欢抢浪组第一道的习惯。

放弃也是一种决策

一个好的AI冲浪对手,大部分时间其实是在放弃浪。放弃的理由可以被读出来:浪闭合太早、位置不对、对手有优先权、这道浪即使完美也改变不了排名,或者它在等浪组后面那道。

我们让放弃变得可见:AI选手会有明确的观察动作,比如坐起身看外海、在浪到达前小幅调整位置、放掉一道浪后立刻划向下一个峰值。玩家看回放时,能理解它为什么没接那道看上去不错的浪。

也要避免反向的问题:AI放弃得太“准”,每次都恰好放掉会闭合的浪,玩家就会怀疑它提前知道结果。所以AI的判断带有与技术水平相符的误差,它也会接到闭合浪、看错浪组、在最后一分钟押错。强的AI强在误判更少、位置更好,而不是从不犯错。

im体育希望的AI冲浪对手,是一个能被读懂、能被学习、也能被击败的选手:玩家通过观察它的选浪习惯,找到它不擅长的浪型和时间窗口,这本身就是冲浪比赛的乐趣之一。