七秒区段:TUNL 如何把控一局的节奏
难度曲线告诉你游戏在某一刻有多难。它不会告诉你那一局玩起来是什么感觉。这是一个用一份方案取代一堆独立曲线,并衡量它是否奏效的故事。
在最初的十几个版本里,TUNL 的难度是一组各自独立的曲线。钟乳石间距有一条曲线,地雷间距有一条曲线,金币间距有一条曲线,每一条都是"深入洞穴多远"的函数。每条曲线单独看都合理。但合在一起,产生的却是一局手感参差不齐的游戏,等我终于把它量化出来时,数字和手感说的是同一件事。
审计发现了什么
我用四个技能等级的机器人重放了真实的生成器和真实的物理系统,每个等级各跑一百局,跨越 24 个不同的每日种子。然后我查看了新元素何时出现,以及机器人在哪里死亡。四个问题格外突出:
- 节奏参差不齐。前九秒里出现了七个新元素,然后整整十三秒没有任何新东西,接着又在接下来的十四秒里出现五个,此后整局剩下的时间里再也没有任何新东西。
- 第一个失误对新手来说是致命的。最弱机器人的局中有 41% 在墙壁开始致命之后八分之内就结束了,而这个机器人 91% 的死亡都是撞墙造成的。开局那段开阔的安全区只会把玩家弹回去,因此无法教会新手真正需要学会的那一件事。
- 中段是一道悬崖。钟乳石密度在得分 300 到 1150 之间两次翻倍,这让每一个专家级机器人的对局都在 500 到 900 分区间的某处结束。
- 地雷意外地增加到了三倍。更稀疏的钟乳石导致某条放置规则无法否决地雷和金币,于是在没有人要求的情况下,地雷数量增加到了三倍。这个耦合关系在后面会很关键。
这个想法:一局是一串区段
我没有再写各自独立的曲线,而是写了一份方案。一局是一串区段,每个区段在固定的参考速度下持续七秒。区段 0 是安全的开局飞行。此后的每个区段要么恰好引入一个新东西,要么强化一个玩家已经了解的东西。从第三个区段开始,每个边界处都会出现"区段 n"的提示,让玩家能感受到这种结构。
长度被有意用秒来度量,而不是像素。洞穴一直在加速,所以固定数量的世界像素,随着对局推进代表的时间会越来越短。如果用像素定义区段,区段只会变得越来越短。用参考秒来定义,再通过对参考速度趋势积分换算回世界位置,区段边界就依然是位置的一个纯函数。这一点很重要,因为整个游戏必须对每个玩家保持完全一致:我在关于每日洞穴的文章中写过原因。
| 区段 | 得分 | 新增内容 |
|---|---|---|
| 0 | 0 - 50 | 开阔通道。金币和沙漏金币。 |
| 1 | 50 - 110 | 最初的钟乳石,护盾金币 |
| 2 | 110 - 180 | 弹药,磁铁 |
| 3 | 180 - 250 | 第一个地雷(单独出现,居中),炸弹金币 |
| 4 | 250 - 330 | 巨石 |
| 5 | 330 - 410 | 交错通道,逐渐淡入 |
| 6 | 410 - 490 | 加农炮 |
| 7 | 490 - 580 | 坠落的钟乳石 |
| 8 | 580 - 680 | 毒药金币 |
| 9 | 680 - 770 | 吸取金币 |
| 10+ | 770 及以上 | 没有新东西。各项速率持续增长。 |
两条规则决定顺序。工具要先于它们所应对的威胁出现。护盾金币在第一个地雷出现前一个区段就已登场,好让玩家手上有一个可用。而且工具也不能来得太晚,因为每日任务("收集五个弹药"、"拿到两个磁铁"、"使用三颗炸弹")是按天累计的,必须让那些对局大约在第二或第三区段就结束的休闲玩家也能达成。在移动任何一个金币出现的门槛之前,我先检查了任务列表。
密度是速率,不是间距
在一个区段内,某种危险的密度是一个每参考秒的速率:钟乳石槽位在区段 1 中是每秒两个,每区段增长 14%,从区段 8 起放缓为每区段 8%。地雷在区段 3 中从每秒 0.28 个开始,每区段增长 20%,之后是 10%。像素单位的间距是从速率推导出来的,并保留一个硬性下限,因此速率可以无限增长,而每一局依然会结束。地雷正是保证这一点的东西,因为地雷可以出现在通道的任何位置,所以无论通道多宽,都无法让一个足够快的洞穴变得可以幸存。
每个区段同时也是一个锯齿波。它的前五分之一以目标密度的 55% 运行,并额外提供更多金币候选作为回报,然后向着下一个边界从 80% 攀升到 115%。这样玩家在每个区段开始时都能喘口气,接着压力上升,然后迎来一个新点子。持续攀升会让人疲惫,带有休息的攀升,人们才会称之为公平。
按实测速率来调整,绝不要按间距数字调整。放置规则会否决那些会落在不公平位置的物体,而被否决的比例会随密度变化。把间距值减半并不会让危险物翻倍,而这种耦合正是地雷数量第一次变成三倍的原因所在。所以每一次调优都以一次重放收尾,统计每个真实秒钟内实际放置的物体数量。
船体擦痕:原谅撞墙,不原谅尖刺
第二个重大改动是为那些死在第一面墙上的新手做的。现在飞船有两次船体擦痕机会。撞墙一次会消耗一次,把飞船弹回通道内并显示"擦伤!"。用完之后,下一次接触就会结束这局游戏。
它们最初是一种临时辅助,会在区段 3 失效。一旦每局游戏都从飞入隧道口、墙壁从一开始就致命起就开始了,让它们贯穿整局就变得合理,现在也确实如此。擦痕之后的宽限期只保护玩家不被墙壁伤害。钟乳石、地雷、巨石和射击仍然是致命的,飞船也不会闪烁。如果宽限期覆盖一切,一个厉害的玩家就能故意蹭一下墙来穿过一片钟乳石区,所以规则是:擦痕原谅撞墙的失误,直接命中则是护盾该管的事。
我也尝试过一个显而易见的替代方案:在同一时刻给予一次免费护盾。结果这主要帮助了强者段位的玩家,他们用它在之后活过一次钟乳石撞击,中位数对局分数提升了约 72%。这是在奖励本就不需要帮助的技巧,所以我放弃了这个方案。
有效果吗?
同样的机器人,在同样的种子上,对比修改前后。"平均"是在上一版本中行为最接近真实玩家的那个段位。
| 机器人段位 | 中位数得分 | 达到 100 分 | 在墙壁变得致命之后的 8 分之内死亡 |
|---|---|---|---|
| 新手 | 65 → 95 | 4% → 39% | 41% → 3% |
| 平均 | 107 → 155 | 32% → 70% | 16% → 2% |
| 优秀 | 205 → 401 | 80% → 91% | 1% → 1% |
| 专家 | 715 → 928 | 100% | 0% |
平均段位每区段的死亡率变成了一条斜坡(前三个危险区段依次为 38%、60%、68%),而不是一道悬崖。这正是我想要的形状:一局游戏应该逐渐变得更有可能结束,而不是突然一定会结束。
没能解决的问题
专家玩家仍然会在区段 10 和 11 附近撞上一道反应时间的墙,那里有 63%、随后 77% 的专家对局在此结束。在这份方案之前,这个数字在区段 7 和 8 是 100%,所以这确实是一次真正的改善,但它并不像前面区段那样是平滑的斜坡。我尝试了两个显而易见的修复方案:让钟乳石长度增长得更慢,以及让交错通道概率的上升更慢。两者实测都没有效果。剩下的杠杆是速度本身,而我有意保留了它,因为速度从不刻意进入平台期,而一个不再加速的洞穴,也就是一个已经不再向非常厉害的玩家提出新要求的洞穴。
我会保留的做法
两个习惯。第一,规划玩家会遇到什么的先后顺序,而不只是每样东西有多难:一次只出现一个新点子,读起来像是游戏在教你;一次出现五个,读起来像是游戏在往你身上堆东西。第二,在模拟测试告诉你每种类型的玩家会死在哪里之前,永远不要相信任何难度改动。这里最大的两个意外,地雷数量和撞第一面墙而死,光靠游玩是看不出来的,但从表格上一目了然。
你可以在玩法指南中读到面向玩家的同一份方案说明。