“在旧城区生成一条跑酷路线,从钟楼跑到港口仓库,时长大约3分钟。”这句话交给一个只会寻路的系统,它会在城市的导航网格上跑一遍A*算法,几毫秒后给出结果:沿着主街往南,第二个路口左转,穿过广场,再右转两次到达仓库。路线最短、完全可达,但它不是跑酷,只是一条步行路线。
另一种常见的失败方向正好相反:生成器知道跑酷要上屋顶,于是把路线画在屋顶之间,结果其中一跳的间隙有6米,另一处要从地面直接攀上4米高的墙。画面上很有气势,角色却根本过不去。跑酷路线的难点,就在这两种失败之间。
先定义角色能做什么
跑酷地图的一切约束都来自角色能力。在乐鱼体育的跑酷地图生成流程里,第一步不是看城市,而是先确定一组角色参数,作为模拟示例:
- 助跑跳远最大水平距离约4.0米,需要至少3米助跑;
- 原地跳远约2.0米;
- 攀爬可够到的最高边缘约2.2米,借助蹬墙可达约3.2米;
- 安全落差约4米,带翻滚缓冲可到约6米;
- 可以翻越1.2米以下的矮墙,滑铲通过0.9米以下的低矮间隙。
这些数字决定了哪些地方能连起来,哪些不能。如果用户之后把角色换成更擅长跳跃的类型,整张路线都要根据新参数重新计算,而不是保留原来的路线只换一个角色模型。
从导航网格到动作图
普通寻路用的是导航网格:角色能站立的平面连成一张网,边代表“走过去”。跑酷需要的是动作图:节点是可以站立的表面,比如屋顶、阳台、墙头、护栏和台阶;边是动作,比如跑、跳、攀、翻越、滑铲和下落。每条边都带着条件,一次跳跃要检查水平距离、高度差和助跑长度,一次攀爬要检查边缘高度和墙面是否可抓。
在动作图上仍然可以用A*这类算法搜索,但代价函数完全不同。最短路里代价是距离,跑酷路线里代价还要包括动作风险、节奏中断和重复度。一段连续的跑跳组合应当比一段平地奔跑更“便宜”,因为它更符合跑酷的目标;一次需要停下来调整方向的攀爬则应当更“贵”。
跳得过去之外,还要留余量
角色最大能跳4.0米,并不意味着主线上可以出现4.0米的缺口。玩家起跳时机不可能每次都完美,按最大值设计的跳跃会让大部分玩家失败。比较稳妥的规则是:主线上的跳跃不超过最大能力的约85%,也就是3.4米以内;高度差同样要留余量,主线攀爬点最好不超过2.0米。
超过这个比例的跳跃不是不能出现,而是应该放在捷径或挑战路线上,并在视觉上让玩家看得出这是一次冒险。这和极限运动地图里的风险点是同一个道理:风险可以有,但要让玩家能提前判断、自己选择。
落脚点比跳跃本身更重要
很多不可用的跑酷路线,问题不在起跳处,而在落点。生成器对每个落脚点都要做几项检查:
- 深度:沿跳跃方向至少1.5米可站立空间,否则角色落地后会直接滑出边缘;
- 坡度:斜屋顶坡度超过约20度时,落地后很难稳住,除非路线设计本身就是顺坡滑下;
- 头顶空间:落点上方不能有低矮遮挡,否则跳跃弧线会撞到屋檐;
- 下一步衔接:落点之后是否有足够的助跑距离进行下一次跳跃,或者有明确的下一个动作可以接。
第四项经常被忽略。一个落点本身没问题,但落地后面前就是墙,角色只能停下来转身找路,整条路线的节奏在这里断掉。
Flow:动作之间不能断
跑酷的乐趣来自连贯:跑、跳、攀、翻、滑一气呵成,速度不掉。系统要把这种感觉转成可以统计的指标。以一条模拟生成的约3分钟路线为例,系统沿路线逐段检查以下“Flow中断点”:
- 强制停顿:角色必须完全停下才能进行下一个动作;
- 急转:在狭窄表面上需要超过约120度的转向;
- 连续攀爬:连续两次以上向上攀爬,速度几乎归零;
- 死路回头:路线在某处走不通,必须原路退回;
- 长时间平跑:超过约15秒没有任何动作变化,节奏发平。
初版路线里出现了11个中断点,其中4个是落点后面没有助跑空间。调整方式包括把落点平台加长、把一次攀爬改成从更高处下落,或者在两个动作之间加一段护栏滑行。修改后中断点降到3个,全程平均速度从每秒4.1米提升到每秒5.3米,总时长也更接近3分钟。
主线和捷径各管各的事
一条好的跑酷路线通常不止一条线。主线要稳定、流畅、对大多数玩家可完成;捷径更短但更难,比如一个接近最大能力的3.8米跳跃,或者一段需要精准时机的蹬墙跑,成功可以节省5到8秒,失败则掉回地面,需要绕一段路。
捷径设计有两条硬规则。第一,捷径失败后必须能回到主线,不能掉进一个没有出口的院子;第二,捷径节省的时间要与风险匹配,如果一条捷径几乎没有风险却能省10秒,所有人都会走它,它实际上就成了主线。
让虚拟跑者先跑一百遍
最后一步是模拟。在乐鱼体育的测试流程里,系统让虚拟跑者按照不同的操作精度反复跑这条路线,记录每一次跳跃的成功率、每一个落点的滑落次数、各段用时和总完成时间。模拟中第12跳的失败率高达38%,原因是落点在一个约25度的斜屋顶上,角色落地后有六成概率滑落;把落点移到旁边的平台以后,失败率降到7%。这种检查方式与体育地图的自动验证是同一套流程,只是跑酷更关注每个动作的衔接。
所以,AI生成跑酷路线不能只找从A点到B点的最短路。最短路回答的是“能不能到达”,跑酷路线要回答的是“能不能连贯地、以角色的能力、在合理的风险下到达”。前者是寻路问题,后者是动作设计问题。