去,速度越来越快。
下落的速度比正常的重力加速度快了一倍,画面里的背景飞快往上窜,云朵城堡一下子就被甩出了屏幕。
掉到画面底部的时候弹了一下,又往上弹回来,再往下掉,再弹回来,反复了三次才停在底部的死亡判定区域里。
角色躺在那里,身体压扁了一点,然后闪了一下,消失了。
屏幕上跳出一行灰色小字:“角色已死亡,是否复活?”李轩没有马上点复活。
“抛物线的问题。”李轩说,声音里没有沮丧,只有一种把问题摊开之后开始逐条拆解的冷静。
他把键盘往自己面前拉了拉,手指在桌面上点了两下,像在数拍子。
“重力参数设得太高了,下落加速度是现实重力的三倍。
跳跃高度够,但滞空时间太短,玩家没有足够的时间在空中做方向调整。
你看刚才,从起跳到落地,大概只有零点几秒,方向键按下去的时候角色已经快到底了。
不是方向键没响应,是窗口太窄。”
他切到了第二个测试场景。
场景切换的时候屏幕黑了一下,再亮起来时,平台变成了一个方形石台,边缘有青苔贴图,中间站着一个怪物。
那是一个q版的蘑菇怪,身体是棕色的圆形,头顶上顶着一朵红色的菌盖,菌盖上有白色斑点。
蘑菇怪在原地一弹一弹地动,像在呼吸。
李轩操作角色从旁边的矮台上跳过去,跳到蘑菇怪头顶的位置,按下空格键执行踩踏动作。
角色在空中把腿缩起来,脚底朝下,姿势很标准。
角色的脚底接触到蘑菇怪头顶的那一瞬间,系统判定触发了,但触发的方向不对。
角色没有被弹起来,而是穿过了蘑菇怪的身体,从另一边掉了出去。
蘑菇怪的红菌盖晃了一下,身体转了个方向,像什么事都没发生。
角色落在地上,摔死了。
屏幕又跳出灰色小字。
“踩踏判定。”李轩把键盘往前推了半寸,又拉回来。
他伸出手指,在屏幕上点了点角色脚底和蘑菇怪头顶重合的位置。
“碰撞箱的位置不对。
角色的脚底和蘑菇怪的头顶只有在特定的帧数窗口内重合才判定成功,早了或者晚了都会失败。
现在这个窗口太窄,大概只有两到三帧。
理论上三帧以上的窗口才够玩家做出反应。
两帧,人眼能看见,手跟不上。”
抱白色键盘的程序员终于把视线从天花板收回来,问了一句:“那现在这个窗口是多少?”
“两帧半。”李轩说,“测试数据里写的是两帧半,实际跑起来有时候两帧,有时候三帧,不稳定。”
“两帧半。”那个程序员重复了一遍,摇了摇头,但没有再说什么。
李轩把键盘拉回来继续跑测试。
接下来的二十分钟里,屏幕上的q版小人经历了各种失败的死法。
有一次跳上平台的时候卡在边缘,身体一半在上一半在下,抖了三四秒,然后自己滑下去摔死。
有一次跳起来之后在空中转向失败,撞上墙壁,角色贴着墙往下滑,滑到一半又弹了一下,落进死亡区域。
有一次踩蘑菇怪的时候判定滞后,脚底已经碰到蘑菇怪了,但系统没反应,角色落下去,蘑菇怪反咬了一口,角色头顶冒出一个红色的伤害数字,然后倒地。
还有一次跳得太远,越过平台边缘,落进两个平台之间的空隙,下落的时候弹了两次,第三次才停住。
每一次失败之后李轩都会在笔记本上记一行字。
笔记本是普通的横线本,封面卷了角。
他写字很快,字迹潦草,但每一条都指向一个具体的参数。
比如“重力3.0,降”“滞空窗口0.2s,加”“边缘判定脚底,改”“踩踏帧窗2-3,扩”。
有时候他会在数字旁边画一个圈,有时候画一个箭头,箭头指向另一行字。
三个程序员坐在对面,开始还笑,后来不笑了。
抱黑色键盘的那个一直记笔记,偶尔抬头看屏幕,偶尔低头写。
抱白色键盘的那个把椅子往后挪了挪,双手抱在胸前,眉头慢慢皱起来。
抱灰蓝键盘的那个把键盘从腿上放到桌上,手指不再敲键帽,而是安静地搭在键盘边缘。
会议室里的空调还在吹,纸杯还在轻轻晃。
窗外有同事走过,脚步声从走廊传来,又远去。
没有人推门进来。
测试跑到第三十七分钟的时候,屏幕上那个角色又一次跳上了平台边缘。
身体卡在“站立”和“下落”之间反复切换,动画抖得像一张被风吹动的纸。
角色的手臂上下摆动,腿一会儿伸直一会儿弯曲,脚下的草皮贴图一闪一闪。