延迟自动移动

来自俄罗斯方块中文维基
(重定向自ASP)
本条目介绍的是俄罗斯方块游戏中的基本机制。
如果您寻找的是 NES 方块中以该机制命名的游戏技巧,请参阅 长按。
长按移动键让 I 块左右移动。

延迟自动移动(Delayed Auto Shift,社区多用简称 DAS)[注 1]是移动操作的基本机制,用于区分按键的单击与长按。一般而言,单击移动键方块只移动一格,而长按会使得方块加速移动。

当玩家持续按住移动键时,方块会先移动一格,延迟一定时间,然后开始以固定速度自动连续移动。玩家如果在这段延迟时间内及时松开移动键,则会被视为单击,方块只会移动一格。[注 2]

DAS 机制有两个参数:

  • 自动移动延迟(Delayed Auto Shift,DAS)[注 3]:从玩家按下移动键,到方块开始以固定速度自动连续移动的间隔时间。
  • 自动重复速率(Auto Repeat Rate,ARR):在方块以固定速度自动连续移动时,两次移动之间的间隔时间(即移动一格所需时间)。

DAS 机制在绝大多数方块游戏中都存在,但两个参数的具体选择各不相同,很多非官方游戏还允许玩家自行设定参数。同时,在大多数游戏中都存在利用 DAS 机制的技巧,通过「充满」和「保存」DAS 来跳过延迟时间直接连续移动方块,以提高速度。

命名

DAS 机制实际上存在三个概念:游戏机制本身的名字、延迟时间参数的名字、移动间隔参数的名字。

目前,这三个概念通用的中英文命名是:

概念 缩写 英文 中文 问题
游戏机制 DAS Delayed Auto Shift 自动移动延迟 中文习惯译名改变了语序
延迟时间 DAS Delayed Auto Shift 自动移动延迟 短语主体是「Shift」而非「Delay」
而且与机制命名相同容易混淆
移动间隔 ARR Auto Repeat Rate 自动重复速率 「速率」的量纲应为时间的倒数
但现在多习惯使用时间作为单位

有批评观点认为,这套命名方式存在诸多问题:不仅混淆了机制与参数的名字,而且参数名字的主体、量纲都存在问题,并且两个参数的命名方式完全不对称。

对此,以 MrZ 为首的中文开发者提出了新的一套中英文命名方式:

概念 缩写 英文 中文 备注
游戏机制 DAS Delayed Auto Shift 延迟自动移动 中文名恢复原本语序
延迟时间 ASD Auto Shift Delay 自动移动延迟 解决主体问题
并与其他延迟的命名保持一致
移动间隔 ASP Auto Shift Period 自动移动周期 解决量纲问题
并使两个参数的命名保持对称

不过,这套新的命名暂时还没有得到广泛使用。在本条目中,俄罗斯方块中文维基将试用「相对更正确」的新命名。

单位

不同年代的不同游戏可能使用不同的参数单位。

ASD 与现在常见的 ASP 的量纲是时间,单位通常是帧或毫秒。

在一些早期游戏中,它们使用的是 ARR 的正确定义——自动重复「速率」,量纲是时间的倒数,单位通常是赫兹或 G(在俄罗斯方块语境中代表「格每帧」)。

不同游戏的参数

由于几乎所有游戏都拥有 DAS 机制,因此它们全都拥有自己的参数,难以尽述。这里只列出一部分较为有名的游戏。

参数较大的「慢速」游戏

大部分官方俄罗斯方块游戏都拥有较大且不可调的参数设置。NES 方块的连续移动速度过慢,有时玩家会使用连点来更快地让方块到达想要的位置。

以下参数中 f 为帧(frame),默认 [math] 1f = 1/60 s [/math]。画「-」的项目为待查。

游戏 ASD ASP
俄罗斯方块 (任天堂, NES) 16f 6f
俄罗斯方块 (Game Boy) 23f 9f
The New Tetris 约 10f 5f
Tetris DS 11f 5f
Tetris Online - -
噗哟噗哟俄罗斯方块 及 续作 - -
俄罗斯方块效应:连接 - -

现在的官方游戏大多拥有较大的 ASD、ASP 和消行延迟。因此,中文玩家社区通常会用「延迟块」来称呼这类游戏,而英文玩家社区通常称之为「慢速块」(Slow Tetris)。不过需要注意,这是较为感性的而非严格的区分,而且并不是所有官方游戏都是延迟块、并不是所有延迟块都是官方游戏。

参数较小的「快速」游戏

少部分官方俄罗斯方块游戏拥有较小的参数设置,但大多也不可调。还有如 TGM 系列这样的个别游戏,会随着游戏难度和速度的提升逐渐降低参数,以适应更高的降落重力与更低的锁定延迟。

以下参数中的 f 为帧(frame),默认 [math] 1f = 1/60 s [/math]。画「-」的项目为待查。

游戏 ASD ASP
俄罗斯方块 (世嘉, 1988) 20f -
Tetris Blast_(Game Boy) - -
Tetris DX - -
俄罗斯方块特级大师系列 见右表 -
Tetris Friends - -
Lockjaw: The Overdose - -
俄罗斯方块特级大师系列 自动移动延迟表
游戏 ASD
TGM1 16f
TAP 最快 8f
TGM3 Easy 14f
Master 最快 6f
Shirase 最快 4f
TGM4 Marathon 9f
Normal 最快 10f
Asuka 最快 8f
Master 最快 4f
Konoha 17f
Shiranui 9f

可自行调整参数的游戏

相当数量的非官方游戏,尤其是较新的非官方游戏,都允许玩家自行设定参数。

允许玩家调整参数的游戏中,大部分还允许玩家将 ASP 设为 0,即方块会在按下移动键超过 ASD 时间后立即滑过整个版面撞墙。配合适当的极简操作,这样的设置不仅完全可以游玩并且还能大大提升玩家的速度上限,现在绝大多数顶级玩家都采用这样的设置。

对于允许玩家将 ASP 与消行延迟设为零的游戏,中文玩家社区通常称之为「无延迟块」,而英文玩家社区通常称之为「快速块」(Fast Tetris)。同样,这是较为感性的而非严格的区分,而且并不是所有非官方游戏都是无延迟块。

利用 DAS 机制的技巧

DAS 的充能、打断、接力

主条目:DAS 的利用
在消行延迟期间提前按下移动键为 DAS 充能,跳过延迟直接自动移动。

在很多游戏中,为了提升速度,玩家希望跳过延迟时间,让方块总是直接进入自动移动阶段。由此衍生了一些利用 DAS 机制的技巧。

极简操作

主条目:极简操作
主条目:零重力 SRS 极简

极简操作(Movement Finesse)是让方块以最少的按键数达到既定位置的操作。结合考虑 DAS 机制的参数大小和特定的旋转系统,所有方块到达任何位置都有最少按键数的方法。

其中最主流的极简操作体系就是符合俄罗斯方块准则的零重力 SRS 极简。其他旋转系统以及 20G 等高重力下的极简体系暂时还没有得到系统研究。

尽管极简操作更多依赖旋转系统,但 ASD 与 ASP 参数的设置同样会影响效果。在设置参数过大的极端情况下,长按使方块自动移动的速度甚至会慢于连点移动。

NES 方块移动技巧

主条目:NES 方块移动技巧

Tetris (NES, Nintendo) 是一个典型的参数较大的游戏,因此在重力较高时,长按使方块自动移动就很难及时到位。加上游戏拥有较为独特的 DAS 机制,历代玩家开发出了一系列独特的 NES 方块移动技巧来让方块尽量及时到位。

在 NES 方块英文玩家社区中,玩家习惯将这种长按方块移动、利用 DAS 机制的风格称为「DAS 风格」。不过,这种命名方法也存在与另外两种指法(连点 Hypertap 与轮指 Roll)的命名词性不对称的问题。为保持对称且区分条目,俄罗斯方块中文维基暂将其命名为长按。

相关机制

设定问题

osk 关于这一问题的图解

按照俄罗斯方块准则规定,在 ASD 时间结束后,方块会立刻移动一格,然后再按照 ASP 的时间间隔自动连续移动。遵守准则的官方游戏都采用这一设定。

但是,一些热门非官方游戏,例如 Jstris 与 ALPHA 2.0.0 版本以前的 TETR.IO 都采用了不一样的设定:在 ASD 时间结束后,方块会再等待一个 ASP 的时间才开始自动连续移动。在这种情况下,实际的 ASD 时间是玩家设定的 ASD + ASP 的时间。这样就影响了 ASP 设置不为零的玩家的手感,且 ASP 设置越高影响越大。

TETR.IO 的作者 osk 自己发现和指出了这一问题。在 TETR.IO 的 ALPHA 2.0.0 更新中,这一问题得到修复。

DAS 取消延迟

DAS 取消延迟(DAS Cancel Delay,DCD)是一些较新的非官方游戏新设置的可调参数,以减少玩家的误操作。设置这一参数的游戏包括 TETR.IO、Techmino 等。

DCD 的提出基于 DAS 充能技巧与极简操作:玩家有时可能期望按照极简操作的思路,长按使方块撞墙、然后旋转后直接硬降方块;或者玩家可能期望在硬降当前方块后下一块不使用长按移动。但是,在玩家持续按下移动键「充满」DAS 的情况下,如果松开移动键稍慢,则可能出现方块旋转后继续移动撞墙、或者下一块也立即充满 DAS 快速移动到边缘的问题。

因此,一些游戏允许玩家设置一个新的额外延迟时间 DCD。在 DAS 充满的情况下旋转或硬降方块,则在 DCD 延迟时间内 DAS 充能的效果会被「取消」,旋转过的方块或者新出现的下一块不会自动连续移动。这样,玩家只要在 DCD 时间内松开移动键,就可以避免操作失误,提高了容错率。如果 DCD 设置为零,则与不存在 DCD 机制的情况相同。

例如,玩家设置的 ASD 为8帧,ASP 为1帧,DCD 为3帧。那么,当玩家长按移动键超过8帧,当前方块会按1帧每格的速度自动连续移动。

  • 假设玩家希望按照极简操作让方块撞墙后旋转,停在离墙1列的位置。那么,玩家只需在按下旋转键后的3帧内松开方向键即可避免方块继续移动。否则在没有 DCD 的情况下,若玩家松开移动键比按下旋转键慢了1帧,则方块还会按照 ASP 周期再移动1列,导致失误。
  • 假设玩家希望这一块撞墙后硬降,但下一块只需要移动1列。那么,玩家同样只需在按下硬降键后的3帧内松开方向键即可避免下一块被充满 DAS。否则在没有 DCD 的情况下,若玩家松开移动键比按下硬降键慢了2帧,则下一块会直接按照 ASP 周期移动2列,导致失误。

很多速度较快的玩家会将 ASP 设置为零。在这种情况下,一旦松开移动键稍晚,下一块就会立即滑过整个版面撞墙,导致更大的问题。而 DCD 机制就能发挥更大的作用。

软降机制

大部分游戏的软降机制与「自动连续移动」类似,也有自己的 ASP。一些游戏还允许玩家自行设定软降的 ASP。

在大部分游戏中,软降机制并没有 ASD,即按下软降键后,方块会不经延迟立即以固定速度(即按照 ASP 的时间间隔)向下降落。不过,一些较新的非官方游戏也会提供软降 ASD 作为可调参数,如 Techmino。

还有一些较新的非官方游戏使用不同的软降加速规则,以区别不同重力下的软降加速、避免玩家设定的软降速度甚至慢于重力的情况,如 TETR.IO。游戏允许玩家自行设定一个软降参数(Soft Drop Factor,SDF),作为倍率与方块自然降落的重力相乘,得到软降的速度。这样,在设定倍率不为无穷大的情况下,当前重力越高,软降速度越快。在这种情况下,软降机制就与 DAS 机制完全不同了。

附录

理解 DAS 机制

实践表明,很多新玩家难以快速理解 DAS 机制的定义和解释。因此玩家社区提出了一个例子来辅助说明,被认为卓有成效:

  • 在打字时长按一个键,你会看到这个字母立即出现一个,稍作停顿后,以固定速率快速连续出现。
  • 以字母 o 为例,在时间轴上,表现为:o-----o-o-o-o-o-o-o-o-o-o……
  • 第一和第二个 o 之间的等待时间就是 ASD,后续的 o 之间的重复时间就是 ASP。

单位对照表

由于不同的游戏可能使用不同的单位,因此这里提供一个简易对照表以便玩家换算。

帧 毫秒 赫兹 G
0.5 ~8 120 2
1 ~17 60 1
2 ~33 30 1/2
3 50 20 1/3
4 ~67 15 1/4
5 ~83 12 1/5
6 100 10 1/6
8 ~133 7.5 1/8
10 ~167 6 1/10
12 200 5 1/12

注意,如果参数的单位是帧或赫兹,一般需要按照游戏刷新率为 60Hz 来换算,而不是根据玩家自己的显示器刷新率。这是因为 60Hz 作为一个时代的主流刷新率是游戏业界常见的设定,例如格斗游戏领域都默认帧率为 60Hz,而在俄罗斯方块领域同样基本默认这一帧率。实际上,一些较新的游戏为了使操作判定更精准,内部的逻辑帧率远高于 60Hz。此时若以帧为单位设置 ASD 与 ASP,参数精度就可以更高,例如玩家可以设置5.5帧的 ASD。

通过操作系统设置参数

大部分允许玩家调整参数的游戏都会将选项放在游戏设置中。但是,一些较早期的游戏依赖硬件或操作系统实现自动重复,即 ASD 与 ASP 和打字时相同。在这种情况下,玩家需要在操作系统中设置 ASD 与 ASP:

  • 在 Windows 中,这项设置位于控制面板 -> 键盘 -> 速度 -> 字符重复。
    • 该设置最初见于 Windows 2000,在最新的 Windows 11 中依然可通过传统的控制面板(而不是 Windows 10 之后的「设置」菜单)访问该项设置。
  • 在 Mac OS X 中,这项设置位于键盘&鼠标偏好。
  • 在 Linux 或 Xorg 服务器的 Unix 系统中,则需使用 xset(1) 指令。
    • 例如,要想将 ASD 设为 200 毫秒,ASP(ARR)设为 45Hz,则可输入指令 xset r rate 200 45。注意单位。

注释

  1. ↑ 实际上在中文玩家社区中,更广泛使用的译名是被更换语序的「自动移动延迟」。俄罗斯方块中文维基在此处选择采用「相对更正确」的语序。
  2. ↑ 如果新玩家难以快速理解该机制,请阅读附录中的理解 DAS 机制一节。
  3. ↑ 此处英文命名的语序存在问题,导致术语主体有误。而广泛使用的中文译名因为更换了语序,反而无误。因此俄罗斯方块中文维基在此处选择采用正确的语序。
  4. ↑ 在为非官方服务器开发的客户端中,玩家可以自行调整 ASD 与 ASP 设置,但 ASP 最小为15毫秒。
    进一步修改的客户端程序可让游戏内部的刷新率由 60Hz 提升至 1000Hz,从而允许玩家设置最小为1毫秒的参数。中文玩家社区将这类修改过的客户端称为 Zero 客户端。
    这些非官方客户端与服务器仅作为学习交流使用,与 Tetris Online、Tetris Online Japan 或 Tetris Holding, LLC 等公司没有任何关系。

参见