一个初中生花了一个周末,用无代码编辑器做了一个校园跑酷闯关游戏:从教学楼门口出发,翻过花坛、跳上看台、穿过操场,最后冲到校门口的终点旗。为了让起点好看一些,他在出生点周围摆了一圈装饰性的矮栏杆。发给同学之后,第一条回复是:“怎么一步都走不出去?”那圈栏杆带有碰撞体积,高度刚好比角色最大跳跃高度高一点,角色被困在了里面。
他自己为什么没发现?因为在编辑器里,他习惯从中途某个位置开始试玩,从来没有从正式出生点开局过。这是普通创作者最典型的情况:不是不认真,而是没有意识到哪些地方需要检查。无代码平台要做的,就是在点击发布之前,让系统替他从头到尾玩一遍。
四种“一开局就没法赢”的问题
出生点被围
出生点被围有两种形态:一种是像上面那样被障碍物包围,角色走不出去;另一种是出生点本身落在了某个物体内部,比如一块被拉大的广告牌恰好覆盖了出生位置,角色一出现就卡在模型里。检测方法比较直接:从出生点开始做一次区域连通检查,看角色按照自己的移动和跳跃能力能到达多大范围。如果可到达区域只有几平方米,并且不包含任何检查点或终点,就可以判定为被围。
终点不可达
比出生点被围更隐蔽的是终点不可达。地图看起来连成一片,但角色实际走不过去。常见原因有三个:两块平台之间的沟宽3米,而角色最远只能跳2.5米;一段斜坡过陡,角色爬到一半就滑下来;或者路径上有一扇需要钥匙才能打开的门,而钥匙被放在门的另一侧。检测这类问题要用考虑角色能力的寻路,比如在导航网格上运行A*算法,把跳跃距离、跳跃高度、可攀爬坡度都作为连接条件,而不是只看两个区域在图上是否相邻。钥匙和门这类有先后顺序的问题,还需要按照道具获取顺序逐步推演。
电脑对手难度过高
在有对手的游戏里,另一种“无法通关”是赢不了。一个把电脑对手速度调成最高、又关闭了失误的竞速游戏,在技术上可以通关,但普通玩家几乎不可能获胜。这类问题静态检查看不出来,需要模拟。系统可以用一个按“普通玩家水平”设定的测试角色,与当前的电脑对手进行多局对战,比如跑200局,统计测试角色的胜率。以一个模拟设计为例,如果默认难度下测试角色胜率只有2%左右,系统就会提示难度可能过高;如果胜率超过90%,则提示可能过于简单。这里的百分比是设计参考,不同类型的游戏可以有不同的目标区间。
计时太短
最后一种问题是时间根本不够。一条1.2公里的跑酷路线,角色最高速度每秒8米,即使全程保持最高速度、不走任何弯路,理论最快也需要150秒;如果创作者把关门时间设成了120秒,这个游戏就不可能在规定时间内完成。检测方法是沿着寻路找到的最短可行路线,按角色最高速度估算理论最快用时,再加上跳跃、转弯和必经互动的时间。关门时间如果低于这个值,属于必须修改的问题;如果只比这个值多出不到两成,系统会提醒“只有完美操作才可能完成”。
发布前的自动试玩检查清单
把上面这些检查整理成一份清单,在乐鱼体育的发布流程设计里,每次点击发布时按顺序执行:
- 出生点检查:出生点不在任何物体内部,从出生点出发的可到达区域包含至少一个检查点或目标。
- 终点可达:按角色的移动、跳跃、攀爬能力,从出生点能依次到达所有必经检查点和终点。
- 道具顺序:钥匙、开关、传送点等有先后依赖的元素,获取顺序能够成立,不存在“要先过门才能拿到开门钥匙”。
- 规则可结束:胜利条件在当前计分和回合设置下可以达成,比赛存在明确的结束方式,这部分和规则冲突检测共用一套逻辑。
- 最快用时:理论最快用时低于关门时间,并留出合理余量。
- 对手胜率:多局模拟下,普通水平测试角色的胜率落在目标区间内。
- 卡死与死循环:测试角色在任何位置停留超过设定时间都会被记录,找出可能卡住的角落和反复重生的位置。
- 复位点合理:每个复位点本身不在危险区域内,避免角色一复位就再次掉落。
这套流程本质上是生成、模拟、验证三步中的后两步。AI测试角色怎样像玩家一样从起点跑到终点、记录碰撞和死路,在AI自己试玩检查游戏一文中有更详细的说明。
检查结果要让创作者看得懂、改得动
检查发现问题之后,提示方式决定了创作者会不会去修。那个初中生如果只看到“出生点可达区域过小”,大概率不知道该怎么办。更好的呈现是在地图上把问题位置直接标出来,并配一句具体说明:“角色出生后被这圈栏杆围住,栏杆高1.2米,角色最高只能跳1米。可以降低栏杆、拆掉一段做出口,或者把栏杆改成无碰撞的装饰物。”三个方案都是可以直接点击的按钮。
对不同严重程度的问题,处理也要分开。出生点被围、终点不可达、时间不可能完成,属于必须修复才能发布的问题;对手胜率偏低、时间余量偏紧,属于提醒,创作者可以坚持自己的设计,比如他就是想做一个高难度挑战关卡。在乐鱼体育的无代码流程里,所有检查结果都会保存在当前版本下,创作者修改后重新检查,也可以对比两个版本的检查结果,看看改动是否真的解决了问题。
自动检查做不到的事
需要说清楚的是,自动试玩能发现“不能玩”,但不太能判断“好不好玩”。一个所有检查都通过的跑酷关卡,可能每一段都平淡无奇;测试角色的“普通水平”也只是一个近似,真实的同学可能比它更会找捷径,也可能连第一个花坛都跳不上去。所以检查清单通过之后,仍然建议先发给两三个朋友试玩,收集他们在哪里卡住、在哪里放弃。自动检查负责把明显的坑填平,真人试玩负责告诉创作者这个游戏值不值得再玩一次。
那个初中生后来把栏杆改成了无碰撞装饰,又在检查中发现看台那一跳差了半米,顺手把跳台往前挪了一格。第二次发给同学时,第一条回复变成了:“最后那个楼梯太难了,我跳了七次。”这至少说明,他的游戏已经能玩到最后了。