下载 App

《跳一跳大冒险》开发者日志:

8 小时前4 浏览
新增限时挑战,以及两个"提速"带来的意外
这次聊三件事:一个新玩法、一次换装提速,还有一个我自己改出来的事故。
一、新增「限时挑战」
之前游戏只有两种玩法:轻松漫游和连击挑战,本质上都是"看你能走多远"。有玩家提到想要更有目标感的东西,于是做了这个模式。
入口在顶部那一排按钮里,「限时挑战」。
点进去是一张关卡地图,一共 30 关。每关给出两个硬指标:在多少秒内,跳到第几站。跳到就算过关,时间耗尽或落空就失败。
关卡是真的逐关变难,而且是三个维度同时加码:
目标站数变多:第一关只要 5 站,最后一关要 31 站
每站时间变少:从 3.0 秒收紧到 1.6 秒
小岛更小更远:每 4 关提升一档,落脚点越来越窄
这里我特意留了个底线:每站时间最低不会低于 1.6 秒。算过账——再往下压,满蓄力都跳不完,那不叫难,叫不可能。
过关会按剩余时间给 1 到 3 星,并奖励小花。失败或超时可以选择看一次广告续关(每关限一次,还会补回一半时间)。进度会写进存档,下次进来接着打。
二、换装速度:从 41 毫秒到 1.5 毫秒
有玩家反馈在动物商城里来回点选时,每次切换会顿一下。
我先做了测量,没有凭感觉猜。结果很明确:切换一只动物平均要 41.8 毫秒。这个数字在一帧(16.7 毫秒)之内做不完,所以点一下就会卡那么一下。背景切换也要 28 毫秒。
原因不难找:每次换装都在把整只动物拆了重建,上百个节点、上百个组件——而这只是一次"看一眼"的操作。
改法是给动物做缓存:每只动物第一次构建后留起来,再切回来直接复用。同时打开商城时先静默把所有背景素材预热好,玩家看不到画面变化,但第一次点选不再冷启动。
结果:切换动物 41.8 毫秒 → 1.5 毫秒,切背景 28 毫秒 → 0.4 毫秒。 手感上是点哪只立刻出哪只。
三、我改出来的事故:模型全叠在一起了
上面那个缓存,我用 enabled = false 来隐藏不用的动物。看起来天经地义——禁用节点,不就是隐藏吗?
但这个引擎的 enabled 只影响节点本身,不会传递到子节点里的模型。 隐藏了三只动物,三只的模型部件还在各画各的,画面就变成了多只小动物叠在一起。
这个问题是在真机截图里才暴露出来的。我一开始也怀疑是缓存逻辑写错,于是写了诊断脚本去数:父节点的确已经禁用了,但它下面 77 个模型部件全部报告"可见"。原因就在这里。
修复过程中还踩了第二个坑:改用"清空子节点再挂新的",结果画面里动物直接消失了——因为那个清空接口是销毁节点,缓存下来的对象变成了空壳。
最终做法是把旧模型"摘下来"而不是"销毁",保留引用和组件,下次再挂回去。
现在连续点选六只动物,预览区始终只有一只,模型部件完整(67 个)。我也把"切换后只能保留一只模型"写成自动检查,这类问题以后会被测试直接拦住。
一点感想
这轮里最有价值的其实是那个测量。如果只凭手感觉得"有点卡",我可能会去优化错的环节;量出 41.8 毫秒之后,"重建上百个节点"这个方向就没什么可犹豫的了。
而那个重叠事故提醒我另一件事:优化必须回到画面里验证。我的验收脚本当时只检查了"逻辑上应该只显示一只",完全没看实际渲染结果——所以它给了我一个绿色通过,截图却是一团糊。
现在所有跟视觉相关的改动,我都会真的截一张图来看。
如果你在玩的时候觉得限时挑战某几关难度跳得太快,或者后面 1.6 秒/站太紧,告诉我具体是第几关,我再调。手感这种事,还是得靠玩的人说了算。