超级旋转系统

来自俄罗斯方块中文维基
(重定向自Super Rotation System
这篇文章需要改进。你可以帮助俄罗斯方块中文维基编辑

超级旋转系统Super Rotation System,简称 SRS),别称「标准旋转系统」(Standard Rotation System),是一套由俄罗斯方块准则定义,供四连方块使用的旋转系统。该系统决定了方块生成、旋转踢墙的方式。大多数现代官方俄罗斯方块都采用了该旋转系统,而现代非官方方块的旋转系统大都以 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 = 初始态逆时针旋转(左转)后的状态
J、L、S、T、Z 方块踢墙表
测试 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)
I 方块踢墙表
测试 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. 初始位置
尝试从初始位置
逆时针旋转(0->L)

2. 测试 1,( 0, 0)
失败(基础旋转失败)

3. 测试 2,(+1, 0)
失败。

4. 测试 3,(+1,+1)
失败。

5. 测试 4,( 0,-2)
失败。

6. 最终位置
测试 5,(+1,-2)
成功。

准则中描述的工作原理

SRS 内部“真正的旋转”

在泄露的 2009 年准则中,俄罗斯方块公司实际上并没有直接采用将 (x, y) 位移量赋予八种不同的旋转,而是为四种朝向设置了数个锚点(Rotation Points),每个锚点拥有一个编号;试图应用第 n 位移时,将两个编号为 n 的锚点对齐,于是两方块的相对位置就是第 n 位移(见右图)。
可以推得,这种方法同时满足两个性质:

  • 若每次旋转都应用第 n 位移,则向同一个方向旋转四次后,方块必定回到原位;
  • A 转向 B 时的所有位移与 B 转向 A 时的位移一一对应,互为相反矢量,也就是,大多数旋转可逆,转过去还能转回来。

因此,SRS 实际上隐式定义了 180° 旋转位移表,表内的值相当于一个块进行两次顺时针/逆时针旋转,同序号的位移矢量叠加。

有玩家认为,通过这种方式实现的 180°踢墙作用很小[需要来源]

J, L, S, T, Z 方块锚点(值为相对于旋转中心的位置,下同)
姿态 锚点 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)
I 方块锚点
姿态 锚点 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)
O 方块锚点
姿态 锚点 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)

准则中描述的方法有一个点令人困惑:位移值的计算方法不完全基于上文的基本朝向,实际上是用另一套方块数据得出的。本章节之前,所述踢墙偏移均基于基本朝向,但准则中使用的是另一种方法,被 HardDrop 论坛用户 nightmareci 称为“真正的旋转”(True Rotation)。“真正的旋转”仍然是纯粹的几何旋转,不带偏移;然而,旋转中心总是在方格中心(不同于其他版本中 I 块与 O 块的旋转中心位于格点)。这意味着,对于“真正的旋转”,O 块的旋转中心不是其几何中心,其旋转时会颠簸。第一次踢墙的位移抵消了颠簸。

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 在系列的 TGM3TGM Ace 中引入了自己版本的 SRS,与准则略有不同。

在 Arika SRS 中,JLSTZ 方块的踢墙与准则相同;然而,I 块的踢墙表不同,如下所示:

Arika 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 招式。尽管有些许不合常理,高水平玩家通常构造窄洞和屋檐,可使方块向下踢墙。这里以红色格标记屋檐。

绯红之王

T3 塔

Trinity

DT 炮

TD 攻击

皇家十字

  • SZI 的四种朝向允许玩家灵活选择左转和右转,来做到更高效的极简操作。并且,完成一些视觉上合理的旋转可以不需要踢墙。
SRS 中可行。
ARS 中不可行。
逆时针旋转
类似向左移动一格。
逆转+左移≈左移两格。
顺时针旋转
类似向右移动一格。
顺转+右移≈右移两格。
  • 几乎每种旋转都可逆。即每种踢墙都有其相反方向的对应。
4w 时临时决定取消 T-Spin Mini

缺点

  • SRS 将向上作为初始朝向(背部朝下)。若方块贴地,则无法原位旋转。
    • 若方块出现时面向下(就像 BPS 旋转系统 中一样),或面向上时的姿态位置向下移动一格(就像 ARSDTET 中一样),就不会出现这个问题。
  • 但踢地在常见情况下都会将方块左移或者右移,方块最终会处于“另一列”。对于 SZ 两块,这样的踢墙极为迷惑,顺时针的踢墙类似非踢墙的逆时针旋转,反之亦然。
S 块落地
进行顺时针旋转
S 块落地
进行逆时针旋转
S 块落地
进行顺时针旋转
S 块落地
进行逆时针旋转
  • 移动延迟与踢地降低了高重力下的生存难度。这导致了大部分与重力相关的模式最终都会达到 20G。但这同时也带来了两个问题:
  1. 在高锁定延迟的 20G 环境下,生存对于高端玩家仍不是件难事。
  2. 为了避免方块锁定,玩家不能按住一个键不放,而是连续按不同的键。
  • 在低重力下游玩时,踢地可重置锁定延迟(无限重置),该特性可用于避免因方块锁定而死亡,即拖时间(见下组图)。
    • 为此,一些更新的方块不再试图通过实心垃圾行来缩短对局时长,而是加大消行的攻击和/或加快方块下落的速度。
    • 多数较新的方块游戏(如 TGM3Techmino 等)采取有限重置/踢墙次数,限制了这种无限拖延的操作。
  • 踢墙系统大多情况下违背常识,只能记忆特例:一半的踢墙中,方块中心偏移了两格及以上。
SZT块消三
旋转中心下移两格
被命名为大外回旋
常见的 T-Spin Triple
  • 然而,下面这种情况下,Z 块无法右转,因为所有踢墙尝试全部失败(镜像 S 块亦然)。
    • 20G 下需要留意这一情况,一不留神就会丢歪
  • 对于一些本符合直觉的踢墙,SRS 反而不会检测(如向下踢墙一格)。
ARS 中可行。
ARS 中可行。
C2 中可行。
C2 中可行。
C2 中可行。
  • 对于一些常见的 SZ 踢墙,旋转方向同样重要。有时必须是逆转两次,而有时必须是顺转两次。
必须是顺转两次。
必须是逆转两次。
  • I 块的踢墙不对称。这意味着有些情况下 I 块可以踢入,而镜像的场地中却无法踢入。
    • 一些官方(如 TGM3)或非官方游戏(如 TETR.IOTechmino)自创的旋转系统对 I 块的踢墙表做了微调,令其更加合理。
左转可进入。
镜像地形却无法踢入。
  • 若堆叠极高,或处于 20G 状态,常常很难将 I 块竖直丢入右列。仍是由于踢墙表的不对称,从初始姿态,I 块会朝错误的方向踢墙,方块需要旋转三次才能到达想要的位置。
当从朝上的姿态旋转时
方块先向左踢墙。
当从朝下的姿态旋转时
方块先向右踢墙。

外链