超级旋转系统
该页面原文来自 Hard Drop Wiki,原页面链接:SRS。 |
这篇文章需要改进。你可以帮助俄罗斯方块中文维基进行编辑。 |
超级旋转系统(Super Rotation System,简称SRS,别称标准旋转系统)是一套由俄罗斯方块准则定义,供四连方块使用的旋转系统。该系统决定了方块生成、旋转、踢墙的方式。大多数现代官方俄罗斯方块都采用了该旋转系统,而现代非官方官块的旋转系统大都以 SRS 为基础。
SRS 最早可追溯至1991年的 Tetris 2 + BomBliss,这一版本中引入了SZI 三种方块的另外两种朝向。在1993年的俄罗斯方块武斗外传中, BPS 修改了 TLJ 三块的初始朝向,让它们生成时最长边朝下。踢墙系统直到 2001 年的 Tetris Worlds 才首次出现。至此,SRS 基本成型。亨克·罗杰斯为了让所有新发布的俄罗斯方块游戏符合准则,要求 Arika 在 2005 年发布的俄罗斯方块特级大师3:恐怖本能中附带 SRS。在这一版本中,SRS 被称作 "World" 规则,以致敬 Tetris Worlds。
初始朝向和位置
初始朝向如右图所示。
- 所有方块在场地上方水平生成
- I 块与 O 块在中部生成,其他三格宽的四连方块偏左一格生成。
- J 块、L 块与 T 块背部朝下生成。
- Tetris Worlds 中,方块在第 22 与 23 行生成(I 块于 22 行生成);
之后的大多数游戏中,方块生成的位置下降了一格。
有部分游戏,例如俄罗斯方块 99 采取初始生成位置较低,若窒息再抬高到最高第 21、22 行的生成方法。
俄罗斯方块效应的方块生成位置又下降一格,于第 20 与 21 行生成。
基本旋转
基本旋转方式如右图所示。 注意:
- 若没有阻挡,方块只会绕着一个固定点旋转,称作旋转中心,在图中用圆圈标出。
- 在数学意义上,“旋转”为纯粹的几何旋转,与其他平台(如 世嘉旋转系统 与 雅达利旋转系统)不同,旋转不会导致额外的位移。
- SZI 块分别有两个水平朝向和竖直朝向。可以说,两种不同的竖直朝向减少了多余操作。
- 对于 IO 两块,旋转中心位于格点;对于 JLSTZ 块,旋转中心位于砖格中心。
踢墙
方块尝试旋转时,若旋转的终点被原有的方块或场地边上的墙阻挡,系统会对方块测试一系列位移值(即踢墙),以进入其他位置。 注意:
- 旋转尝试通常测试五个位置(包括基本旋转);若都不可用,则旋转失败。
- 测试的位置由初始朝向和最终朝向决定。由于可顺时针和逆时针旋转方块,共有四种初始朝向和两个最终朝向。因此,每种方块共有八种可能的状态,须给定八组踢墙表。
- 位置通常用 (x , y) 踢墙值描述,踢墙值给出了方块踢墙时的位移量;通常以向右为 x 的正方向,向上为 y 的正方向。如(-1,+2) 表示向左一格、向上两格。
- JLSTZ 块踢墙表相同,I 块有独自的踢墙表,O 块没有踢墙。
- 通常用数字和字母描述旋转方向。本条目中,描述方式如下:
- 0 = 初始态
- R = 初始态顺时针旋转(右转)后的状态
- 2 = 初始态旋转 180° 后的状态
- L = 初始态逆时针旋转(左转)后的状态
测试 1 | 测试 2 | 测试 3 | 测试 4 | 测试 5 | |
---|---|---|---|---|---|
0->R | ( 0, 0) | (-1, 0) | (-1,+1) | ( 0,-2) | (-1,-2) |
R->0 | ( 0, 0) | (+1, 0) | (+1,-1) | ( 0,+2) | (+1,+2) |
R->2 | ( 0, 0) | (+1, 0) | (+1,-1) | ( 0,+2) | (+1,+2) |
2->R | ( 0, 0) | (-1, 0) | (-1,+1) | ( 0,-2) | (-1,-2) |
2->L | ( 0, 0) | (+1, 0) | (+1,+1) | ( 0,-2) | (+1,-2) |
L->2 | ( 0, 0) | (-1, 0) | (-1,-1) | ( 0,+2) | (-1,+2) |
L->0 | ( 0, 0) | (-1, 0) | (-1,-1) | ( 0,+2) | (-1,+2) |
0->L | ( 0, 0) | (+1, 0) | (+1,+1) | ( 0,-2) | (+1,-2) |
测试 1 | 测试 2 | 测试 3 | 测试 4 | 测试 5 | |
---|---|---|---|---|---|
0->R | ( 0, 0) | (-2, 0) | (+1, 0) | (-2,-1) | (+1,+2) |
R->0 | ( 0, 0) | (+2, 0) | (-1, 0) | (+2,+1) | (-1,-2) |
R->2 | ( 0, 0) | (-1, 0) | (+2, 0) | (-1,+2) | (+2,-1) |
2->R | ( 0, 0) | (+1, 0) | (-2, 0) | (+1,-2) | (-2,+1) |
2->L | ( 0, 0) | (+2, 0) | (-1, 0) | (+2,+1) | (-1,-2) |
L->2 | ( 0, 0) | (-2, 0) | (+1, 0) | (-2,-1) | (+1,+2) |
L->0 | ( 0, 0) | (+1, 0) | (-2, 0) | (+1,-2) | (-2,+1) |
0->L | ( 0, 0) | (-1, 0) | (+2, 0) | (-1,+2) | (+2,-1) |
踢墙实例:
需要方块从初始位置左转,查上表可得,踢墙测试为
( 0, 0), (+1, 0), (+1,+1), ( 0,-2), (+1,-2)。
1. 初始位置 |
2. 测试 1,( 0, 0) |
3. 测试 2,(+1, 0) | ||||||
4. 测试 3,(+1,+1) |
5. 测试 4,( 0,-2) |
6. 最终位置 |
工作原理
俄罗斯方块公司实际上并没有直接采用将 (x, y) 位移量赋予八种不同的旋转,而是为四种朝向设置了数个锚点,每个锚点拥有一个编号;试图应用第 n 位移时,将两个编号为 n 的锚点对齐,于是两方块的相对位置就是第 n 位移(见右图)。
可以推得,这种方法同时满足两个性质:
- 若每次旋转都应用第 n 位移,则向同一个方向旋转四次后,方块必定回到原位;
- A 转向 B 时的所有位移与 B 转向 A 时的位移一一对应,互为相反矢量,也就是,大多数旋转可逆,转过去还能转回来。
因此,SRS 实际上隐式定义了 180° 旋转位移表,表内的值相当于一个块进行两次顺时针/逆时针旋转,同序号的位移矢量叠加。但是很遗憾这样得出的 180° 踢墙用处很小
但 TTC 采用的方法有一个点令人困惑:位移值的计算方法与基本朝向不太一致,实际上是用另一套方块数据得出的。本章节之前,所述踢墙偏移均基于基本朝向,但 TTC 使用一种被 HardDrop 论坛用户 nightmareci 称为 真正的旋转 的方法。“真正的旋转”仍然是纯粹的几何旋转,不带偏移;然而,旋转中心总是在方格中心(不同于其他版本中 I 块与 O 块的旋转中心位于格点)。这意味着,对于“真正的旋转”,O 块的旋转中心不是其几何中心,其旋转时会颠簸。第一次踢墙的位移抵消了颠簸。
姿态 | 锚点 1 | 锚点 2 | 锚点 3 | 锚点 4 | 锚点 5 |
---|---|---|---|---|---|
0 | ( 0, 0) | ( 0, 0) | ( 0, 0) | ( 0, 0) | ( 0, 0) |
R | ( 0, 0) | (+1, 0) | (+1,-1) | ( 0,+2) | (+1,+2) |
2 | ( 0, 0) | ( 0, 0) | ( 0, 0) | ( 0, 0) | ( 0, 0) |
L | ( 0, 0) | (-1, 0) | (-1,-1) | ( 0,+2) | (-1,+2) |
姿态 | 锚点 1 | 锚点 2 | 锚点 3 | 锚点 4 | 锚点 5 |
---|---|---|---|---|---|
0 | ( 0, 0) | (-1, 0) | (+2, 0) | (-1, 0) | (+2, 0) |
R | (-1, 0) | ( 0, 0) | ( 0, 0) | ( 0,+1) | ( 0,-2) |
2 | (-1,+1) | (+1,+1) | (-2,+1) | (+1, 0) | (-2, 0) |
L | ( 0,+1) | ( 0,+1) | ( 0,+1) | ( 0,-1) | ( 0,+2) |
姿态 | 锚点 1 | 锚点 2 | 锚点 3 | 锚点 4 | 锚点 5 |
---|---|---|---|---|---|
0 | ( 0, 0) | 仅有一个锚点 | |||
R | ( 0,-1) | ||||
2 | (-1,-1) | ||||
L | (-1, 0) |
通过锚点计算位移量的实例:
J 块状态 0 的锚点为:( 0, 0), ( 0, 0), ( 0, 0), ( 0, 0), ( 0, 0).
J 块状态 R 的锚点为:( 0, 0), (+1, 0), (+1,-1), ( 0,+2), (+1,+2).
( 0, 0) - ( 0, 0) = ( 0, 0),
( 0, 0) - (+1, 0) = (-1, 0),
( 0, 0) - (+1,-1) = (-1,+1),
( 0, 0) - ( 0,+2) = ( 0,-2),
( 0, 0) - (+1,+2) = (-1,-2).
因此,基于“真正的旋转”,J 方块 0->R 的踢墙位移为(与其基本旋转相同):( 0, 0), (-1, 0), (-1,+1), ( 0,-2), (-1,-2)。
user:Farter 认为这只是一种分析角度。“可逆、成环”性质[1]确实存在,但不确定官方是否如此实现,旋转中心不一定必须定义在格心。
踢墙图解
除了 I 块,SRS 踢墙均为对称。这意味着对于镜像场地和镜像方块(JL 块、SZ 块、左右朝向),踢墙值互补(y 值相同,x 值互为相反数)。因此,除了 I 块,方块的踢墙系统可只用顺时针旋转描述。
踢墙测试 | 实例 | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0⇒R | ( 0, 0)
|
(-1, 0)
|
(-1,+1)
|
( 0,-2)
|
(-1,-2)
|
(-1, 0)
|
(-1,-2)
| |||||||
R⇒2 | ( 0, 0)
|
(+1, 0)
|
(+1,-1)
|
( 0,+2)
|
(+1,+2)
|
(+1,-1)
|
(+1, 0)
| |||||||
2⇒L | ( 0, 0)
|
(+1, 0)
|
(+1,+1)
|
( 0,-2)
|
(+1,-2)
|
(+1,-2)
|
||||||||
L⇒0 | ( 0, 0)
|
(-1, 0)
|
(-1,-1)
|
( 0,+2)
|
(-1,+2)
|
(-1,-1)
|
踢墙测试 | 实例 | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0⇒R | ( 0, 0)
|
(-1, 0)
|
(-1,+1)
|
(0,-2)
|
(-1,-2)
|
(-1, 0)
|
( 0,-2)
| |||||||
R⇒2 | ( 0, 0)
|
(+1, 0)
|
(+1,-1)
|
( 0,+2)
|
(+1,+2)
|
(+1,-1)
|
(+1, 0)
| |||||||
2⇒L | ( 0, 0)
|
(+1, 0)
|
(+1,+1)
|
( 0,-2)
|
(+1,-2)
|
(+1,-2)
|
||||||||
L⇒0 | ( 0, 0)
|
(-1, 0)
|
(-1,-1)
|
( 0,+2)
|
(-1,+2)
|
(-1,-1)
|
(-1, 0)
|
踢墙测试 | 实例 | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0⇒R | ( 0, 0)
|
(-1, 0)
|
(-1,+1)
|
无法实现
|
(-1,-2)
|
(-1,-2)
|
(-1, 0)
| |||||||
R⇒2 | ( 0, 0)
|
(+1, 0)
|
(+1,-1)
|
( 0,+2)
|
(+1,+2)
|
( 0, 0)
|
(+1,-1)
| |||||||
2⇒L | ( 0, 0)
|
(+1, 0)
|
无法实现
|
( 0,-2)
|
(+1,-2)
|
(+1,-2)
|
( 0,-2)
| |||||||
L⇒0 | ( 0, 0)
|
(-1, 0)
|
(-1,-1)
|
( 0,+2)
|
(-1,+2)
|
(-1,-1)
|
(-1, 0)
|
踢墙测试 | 实例 | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0⇒R | ( 0, 0)
|
(-1, 0)
|
(-1,+1)
|
(0,-2)
|
(-1,-2)
|
(-1,-2)
|
(0,-2)
| |||||||
R⇒2 | ( 0, 0)
|
(+1, 0)
|
(+1,-1)
|
( 0,+2)
|
(+1,+2)
|
(+1,-1)
|
(+1, 0)
| |||||||
2⇒L | ( 0, 0)
|
(+1, 0)
|
(+1,+1)
|
( 0,-2)
|
(+1,-2)
|
( 0,-2)
|
||||||||
L⇒0 | ( 0, 0)
|
(-1, 0)
|
(-1,-1)
|
( 0,+2)
|
(-1,+2)
|
(-1, 0)
|
踢墙测试 | 实例 | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0⇒R | ( 0, 0)
|
(-1, 0)
|
(-1,+1)
|
( 0,-2)
|
(-1,-2)
|
( 0,-2)
|
( 0, 0)
| |||||||
R⇒2 | ( 0, 0)
|
(+1, 0)
|
(+1,-1)
|
( 0,+2)
|
(+1,+2)
|
(+1,-1)
|
(+1, 0)
| |||||||
2⇒L | ( 0, 0)
|
(+1, 0)
|
(+1,+1)
|
( 0,-2)
|
(+1,-2)
|
(+1,-2)
|
||||||||
L⇒0 | ( 0, 0)
|
(-1, 0)
|
(-1,-1)
|
( 0,+2)
|
(-1,+2)
|
( 0, 0)
|
踢墙测试 | 实例 | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
0⇒R | ( 0, 0)
|
(-2, 0)
|
(+1, 0)
|
(-2,-1)
|
(+1,+2)
|
(-2,-1)
| ||||||
R⇒2 | ( 0, 0)
|
(-1, 0)
|
(+2, 0)
|
(-1,+2)
|
(+2,-1)
|
(+2,-1)
| ||||||
2⇒L | ( 0, 0)
|
(+2, 0)
|
(-1, 0)
|
(+2,+1)
|
(-1,-2)
|
|||||||
L⇒0 | ( 0, 0)
|
(+1, 0)
|
(-2, 0)
|
(+1,-2)
|
(-2,+1)
|
(+1,-2)
|
踢墙测试 | 实例 | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
0⇒L | ( 0, 0)
|
(-1, 0)
|
(+2, 0)
|
(-1,+2)
|
(+2,-1)
|
|||||||
L⇒2 | ( 0, 0)
|
(-2, 0)
|
(+1, 0)
|
(-2,-1)
|
(+1,+2)
|
(-2,-1)
| ||||||
2⇒R | ( 0, 0)
|
(+1, 0)
|
(-2, 0)
|
(+1,-2)
|
(-2,+1)
|
(+1,-2)
| ||||||
R⇒0 | ( 0, 0)
|
(+2, 0)
|
(-1, 0)
|
(+2,+1)
|
(-1,-2)
|
(-1,-2)
|
Arika SRS
Arika 的俄罗斯方块特级大师系列诞生于准则之前,但在准则出现之后俄罗斯方块公司要求 Arika 将 SRS 作为默认旋转系统。因此 Arika 在系列的 TGM3 与 TGM Ace 中引入了自己版本的 SRS,与准则略有不同。
在 Arika SRS 中,JLSTZ 方块的踢墙与准则相同;然而,I 块的踢墙表不同,如下所示:
测试 1 | 测试 2 | 测试 3 | 测试 4 | 测试 5 | |
---|---|---|---|---|---|
0->R | ( 0, 0) | (-2, 0) | (+1, 0) | (+1,+2) | (-2,-1) |
R->0 | ( 0, 0) | (+2, 0) | (-1, 0) | (+2,+1) | (-1,-2) |
R->2 | ( 0, 0) | (-1, 0) | (+2, 0) | (-1,+2) | (+2,-1) |
2->R | ( 0, 0) | (-2, 0) | (+1, 0) | (-2,+1) | (+1,-1) |
2->L | ( 0, 0) | (+2, 0) | (-1, 0) | (+2,+1) | (-1,-1) |
L->2 | ( 0, 0) | (+1, 0) | (-2, 0) | (+1,+2) | (-2,-1) |
L->0 | ( 0, 0) | (-2, 0) | (+1, 0) | (-2,+1) | (+1,-2) |
0->L | ( 0, 0) | (+2, 0) | (-1, 0) | (-1,+2) | (+2,-1) |
Arika 认为,当 I 转向水平朝向、或从水平朝向旋转时,其踢墙应关于 y 轴对称,故做出如此修改。下面的例子给出了这一更改的一大影响:
|
若从阴影位置右转,基准和 Arika 的 SRS 都可完成消四。 |
|
若镜像,只有 Arika SRS 可通过左转成消四。 |
|
Arika SRS 也允许这样的旋转(右转)。然而基准 SRS 中,无论是左转还是右转都会旋入左侧无法消四。 |
值得注意的是,这样的更改使得 I 块的踢墙不再具有基准版工作原理中所述的性质(或不能再用此种方式分析)。
评价
SRS 虽在多人对战中有良好的表现,但在高重力模式下更易出现失误,因此经常受到玩家的诟病。
与此同时,一些经典方块玩家指责 SRS 的移动重置过分降低了游戏的难度。
优点
- 无重力情况下,方块旋转顺畅。即使是方块新手,也可很快地将方块旋至正确位置。
|
SRS: 零重力下 严谨一致的旋转 |
|
ARS: 朝上的姿态 略显奇怪 |
|
MTC: 旋转中心 位于方块外部 |
|
Atari: 方块靠左上角 对齐 | |||||||
|
|
|
| |||||||||||
|
|
|
|
- SRS 可利用踢墙将方块塞入原本无法达到的位置。
|
| |||
|
|
- 移动重置和踢墙衍生出了多人游戏中有趣的规则和 T-Spin 招式。高水平玩家通常构造窄洞和屋檐,可使方块离谱地向下踢墙。
|
|
|
红色的格子为屋檐。 |
|
|
|
- SZI 的四种朝向允许玩家灵活选择左转和右转,来做到更高效的极简操作。并且,完成一些视觉上合理的旋转可以不需要踢墙。
|
SRS 中可行。 ARS 中不可行。 |
|
逆时针旋转 类似向左移动一格。 逆转+左移≈左移两格。 |
|
顺时针旋转 类似向右移动一格。 顺转+右移≈右移两格。 | |||||
|
|
|
- 几乎每种旋转都可逆。即每种踢墙都有其相反方向的对应。
|
|
4w 时临时决定取消 T-Spin Mini |
缺点
- SRS 将向上作为初始朝向(背部朝下)。若方块贴地,则无法原位旋转。
|
|
| |||||
|
|
|
- 但踢地在常见情况下都会将方块左移或者右移,方块最终会处于“另一列”。对于 SZ 两块,这样的踢墙极为迷惑,顺时针的踢墙类似非踢墙的逆时针旋转,反之亦然。
|
|
S 块落地前 进行顺时针旋转 |
|
|
S 块落地前 进行逆时针旋转 | |||||
|
|
S 块落地后 进行顺时针旋转 |
|
|
S 块落地后 进行逆时针旋转 |
- 移动延迟与踢地降低了高重力下的生存难度。这导致了大部分与重力相关的模式最终都会达到 20G。但这同时也带来了两个问题:
- 在高锁定延迟的 20G 环境下,生存对于高端玩家仍不是件难事。
- 为了避免方块锁定,玩家不能按住一个键不放,而是连续按不同的键。
- 在低重力下游玩时,踢地可重置锁定延迟(无限重置),该特性可用于避免因方块锁定而死亡,即拖时间(见下组图)。
|
|
|
|
|
| |||||||||||
|
|
|
|
|
|
- 踢墙系统大多情况下违背常识,只能记忆特例:一半的踢墙中,方块中心偏移了两格及以上。
|
SZT块消三? 旋转中心下移两格。 被命名为大外回旋 |
|
常见的 T-Spin Triple |
- 然而,下面这种情况下,Z 块无法右转,因为所有踢墙尝试全部失败(镜像 S 块亦然)。
- 20G 下需要留意这一情况,一不留神就会丢歪。
|
- 对于一些本符合直觉的踢墙,SRS 反而不会检测(如向下踢墙一格)。
|
ARS 中可行。 |
|
ARS 中可行。 |
|
C2 中可行。 |
|
C2 中可行。 |
|
C2 中可行。 | |||||||||
|
|
|
|
|
- 对于一些常见的 SZ 踢墙,旋转方向同样重要。有时必须是逆转两次,而有时必须是顺转两次。
|
必须是顺转两次。 |
|
必须是逆转两次。 |
- I 块的踢墙不对称。这意味着有些情况下 I 块可以踢入,而镜像的场地中却无法踢入。
|
左转可进入。 |
|
镜像地形却无法踢入。 |
- 若堆叠极高,或处于 20G 状态,常常很难将 I 块竖直丢入右列。仍是由于踢墙表的不对称,从初始姿态,I 块会朝错误的方向踢墙,方块需要旋转三次才能到达想要的位置。
|
|
当从朝上的姿态旋转时 方块先向左踢墙。 |
|
|
当从朝下的姿态旋转时 方块先向右踢墙。 | |||||
|
|
|
|