设想同一个生成器先后收到两句话:“做个足球小游戏”和“做个赛车小游戏”。如果它的内部只有一套“通用体育游戏模板”——一块场地、若干个可移动单位、一个计分器、一个计时器——那么它确实能很快交出两个东西。但试玩一下就会发现:足球里的电脑球员像赛车一样沿固定路线跑圈,赛车里的电脑车辆像足球运动员一样一窝蜂追着领头车撞。

问题不在参数,而在逻辑。足球和赛车在“这个游戏到底在比什么”这件事上就完全不同。下面以乐鱼体育生成流程中的两个模拟场景为参照,逐项拆开看。

先看一张对比表

维度 足球赛车
比赛本质多人协作,两队争夺同一个球 个体竞速,各自驾驶各自的车
核心资源 球权:同一时刻只有一方控球 路线与速度:每辆车独立拥有
规则重点进球、越位、界外、犯规、换边 圈数、赛道界限、碰撞处罚、进站
物理重点 球的滚动、弹跳、摩擦;人与球的接触轮胎抓地、加减速、刹车距离、转向与漂移
地图要素 边线、中线、禁区、球门,尺寸相对标准化 弯道、直道、刹车区、超车区、赛道宽度,形态自由
AI决策 跑位:根据球权和队友位置选择站位 走线:沿赛车线行驶,判断刹车点与超车时机
胜负条件 固定时间内进球多者胜,可平局先完成规定圈数者胜,或按用时排名

Sport Rules:球权与圈数,两种不同的“状态”

足球规则的核心是球权。几乎所有规则都围绕“谁控球、球在哪里、球怎么离开场地”展开:球出边线由对方掷界外球,出底线要区分最后触球的是进攻方还是防守方,决定是球门球还是角球;越位要在传球瞬间比较进攻球员和倒数第二名防守球员的位置。规则层需要持续追踪一个全局共享的状态——球。

赛车规则的核心是每辆车自己的进度。第几圈、是否经过了所有检查点、是否冲出赛道界限、是否在碰撞中负有责任。这里没有一个共享的“球”,每辆车的状态彼此独立,只在位置排名和碰撞时产生联系。一个检查点缺失,就可能让某辆车抄近路完成一圈,这是足球规则里根本不存在的问题。

Physics:球是被动物体,车是主动系统

足球的物理重点在球:它被踢出后如何滚动、在草皮上减速多快、碰到门柱如何反弹、高空球落地如何弹起。球员本身的物理相对简单,更多是动画和碰撞体积的问题。难点在人与球的接触——带球时球要保持在脚下合理距离,抢断时要判断谁先触球。

赛车的物理重点在车本身:油门、刹车、方向盘输入如何转化为速度和方向变化,轮胎在弯中能提供多少侧向抓地力,超过极限时是推头还是甩尾。即便是简化的街机风格,也至少要有加速曲线、刹车距离和过弯速度上限,否则所有弯道都能全速通过,赛道设计就失去了意义。

Map:标准化场地与自由形态赛道

足球场的形态高度标准化,生成时的自由度主要在尺寸比例、草皮风格和看台环境上,真正的难点是把中线、禁区、球门这些区域定义成规则可以引用的逻辑区域。

赛道则几乎完全自由,而自由恰恰意味着更多可能出错的地方:弯道半径是否与车辆速度匹配,长直道末端有没有足够的刹车距离,赛道宽度是否允许两车并排超车,发车格能不能容下全部车辆。AI画出赛车场容易、难在能不能跑一文专门讨论了这类问题。可以说,足球地图的难点是“把线画对”,赛车地图的难点是“让路能跑”。

AI:跑位与走线

两种运动的AI对手差异最大。足球AI的决策单位是“一个球员在一个团队里应该站在哪里”:本方控球时,边锋拉开宽度,中场找接应角度,后卫压上保持阵型紧凑;对方控球时,离球最近的一两人上抢,其他人回收封堵传球线路。常见的实现方式是以球权为核心的状态机,加上根据球和队友位置计算的目标点,也有用影响力图来评估空间价值的做法。它的难点在协作:十个人要像一个整体一样移动。

赛车AI的决策单位是“一辆车在这条赛道上的下一段该怎么开”:沿着预先计算的赛车线行驶,外—内—外切过弯心,在刹车点开始减速,出弯尽早加油。在此之上,再叠加超车判断——前车在哪个弯道防守薄弱、哪条直道足够长。它的难点在精确:刹车点晚十米就冲出赛道,早十米就被超车。

如果把足球AI的“追球”逻辑套到赛车上,电脑车会紧咬领头车而不顾赛车线;把赛车AI的“沿路径行驶”套到足球上,电脑球员会沿固定轨迹跑动,完全不理会球在哪里。

Win Condition:平局与名次

足球的胜负条件是“固定时间内比进球数”,因此天然存在平局,生成时必须明确平局如何处理:接受平局、加时、还是点球大战。赛车的胜负条件是“冲线顺序”,几乎不会平局,但要处理另一类问题:没有完赛的车怎么排名,被套圈的车是否需要跑完最后一圈,计时赛里撞墙重置后时间怎么算。

哪些可以共用

这并不是说两者之间毫无共享。输入系统、镜头管理、比分与计时UI、暂停与重开的游戏循环框架、版本管理和自动测试工具,都可以作为通用底座,这部分在不同运动之间复用得越多,维护成本越低。但规则、物理、地图生成约束和AI决策这四层,必须按运动类型分别设计。在乐鱼体育的生成流程里,运动类型是最先被确认的字段,正是因为它决定了后面这四层走哪一套逻辑;关于从规则到游戏循环的完整链路,可以参考从地图、球队、规则一直生成到可玩小游戏一文。

通用的是框架,专用的是逻辑。一个生成器能不能同时做好足球和赛车,不看它有没有一套万能模板,而看它是否清楚两者在比什么。