DASのテクニック (2): DASをチャージする

壁チャージ (wall charge)

NESテトリスのDASの仕様として、以下のものがありました。

  • 横を押し続けても壁があってそれ以上移動できない場合、DASカウンターは最大値をとり続ける
  • 壁方向に新たに横を入力した時に、即座にDASカウンターが最大値となる

壁チャージは、これらの仕様を利用するものです。

ここで言う壁とは、フィールドの端に限らず、ミノの移動に障害となるブロックも指します。つまり、横に入力をしていてもミノが移動できない場合は常に、DASカウンターが最大値 (16) となっていることが保証されるのです!

横を押し続けて壁にぶつかった時の、DASの挙動です。

横を1回ずつ押して壁にぶつかった時の、DASの挙動です。

実際のゲームでは、ミノを端まで持っていった後にも横を離さないことでチャージしたり、

次のミノを遠くまで持っていきたい時やDASが切れてしまった時に「壁に引っ掛け」たりします。

後者の引っ掛けは、段差さえあればどこでも使うことができますので、慣れればほぼいつでもDASチャージを行うことができます。

引っ掛けて次に切り返すという芸当も可能です。最初のミノを左に移動して、地面で右に壁チャージ。AREの間に左に振り替えて、フルチャージで棒を移動できます。

壁チャージの効能はこれだけではありません。DASの基本において、チャージ状態にも10~16の値があると述べました。この違いは、以下のような「届く/届かない」の違いをもたらします。

DASが15あるいは16の場合は、棒が高さ6の壁を越えて左に移動できます。

一方、DASが10の場合、高さ5の壁すら越えることができません。

実際のゲームではDASの値を見ることは出来ませんから、届く/届かないは時の運ということになってしまうのでしょうか?それともDASの値を、自身の操作から精密に予測あるいは調整する必要があるのでしょうか?答えは否です。壁チャージが成功すれば、フルチャージになっていることが保証されていますから、必ず「届く」のです。

壁ではなくブロックに引っ掛ける壁チャージには、ある程度精密な操作が必要となります。例えば、入力(今回は右です)が遅すぎると、チャージが起こる前に接地してしまい、次の棒がフルチャージで移動を開始しないために、左に持っていくことができなくなります。

逆に入力が早すぎると、引っ掛ける予定の壁の上にミノが移動してしまい、そこで接地してしまいます。新しく右入力をしてしまったため、DASがリセットされ、次のミノは全くと言っていいほど動かすことができません。

壁チャージが成功する時間範囲は、落下速度と引っ掛ける壁の高さによって変わります。上の場合は2フレームに1マス落下する1/2Gの速度で、壁の高さが1マスなので、壁チャージが成功するのはたった2フレーム (1/30秒) となります。高速域ではもっと高い壁に引っ掛けた方がより安全ということは意識しておくべきでしょう。

横の長押し (extended tap)

執筆中

DASのテクニック (1): DASを使い回す

「DASを使い回す」とは?

DASの基本でも少し触れましたが、DASが16フレーム、ARRが6フレームであるNESテトリスの横移動の仕様では、高速域でミノを端まで持っていくには不十分です。「DASを使い回す」ことにより、この問題をある程度解決することができます。「DASを使い回す」とは、DASカウンターがチャージ状態にある状態を維持しながら次のミノの操作を始めることを指し、これによって16フレームの待ち時間を取り除くことができます。

DASを使い回すことの重要性を理解するため、次の図をご覧ください。Lv19~28の間は、2フレームにつき1マス落下する「1/2G」の落下速度となっており、横移動の速度よりもずっと速くなっています。まず、これがDASを使い回さない「未チャージ」の状態での移動です。

次に、これがDASを使い回した「フルチャージ」状態からの移動です。

未チャージでは棒を左端に持っていくことが不可能ですが、チャージ状態を維持したまま移動を始めることでそれが可能になります。落下が高速であればあるほど、DASを使い回す場合と使い回さない場合の可動域は大きく異なってきます。

どうやってDASを使い回すのか

さて、それではどのようにしてDASを使い回すのでしょうか。DASの基本の最後で、以下の性質を紹介しました。

  • ミノの落下中に、新たに左や右だけを入力した時にのみ、DASカウンターが0にリセットされる

言い換えると、以下の2つが言えることになります。

  • 落下中でなければ、新たに横移動の入力を行っても、DASがリセットされない
  • 左または右を離しただけでは、DASがリセットされない

前者について詳しく見てみましょう。「落下中でなければ」とありますが、具体的にどのような時が「落下中ではない」のでしょう?答えは「現在のミノがフィールドに接着し、移動ができなくなってから、次のミノが出現し操作できるようになるまでの間」です。以降これを「ARE」と呼びます[1]

この2つから、「横タメの振り替え」と「ビタ止め」という技術が導かれます。

横タメの振り替え

「横タメの振り替え」とは、このAREの間に新たに横入力を行うことで、DASをリセットせずに、新たな方向で横移動を行うことができるテクニックです。AREの間は、DASカウンターが更新されないため、いくら左右を新しく入力してもリセットされないというわけです。ミノが出現した後は、現在入力されている方向にミノが移動してくれます。

上の例では、最初のTミノでDASがチャージされたまま接地し、AREの間に左入力を始めることで、DASをリセットせずに次のミノをスムーズに移動させることに成功しています。

これの難しさは、AREの間に、次のミノをどちらの方向に動かすかを決めなければならないということです。NEXTをよく見て、次のミノをどこに置くかを予め考えておく習慣をつけましょう。

ビタ止め

「ビタ止め」とは、ミノを指定の位置へ移動するために、1回の横タメ操作のみを用いることで、DASをリセットさせないテクニックです。

例えば、Oミノを左端から1マス離して置くことを考えます。まず考えられる操作方法は、左を3回連打することです。対戦テトリスや、TGMシリーズでの最適化操作に慣れている方でしたら、横タメで左端に持っていって、右に1回入力することでこの操作を行うことでしょう。

前者では横に入力するごとに、後者では右に折り返し入力をした時に、DASカウンターが0にリセットされます。

一方、「ビタ止め」操作では、横タメで左に持っていって、置きたい場所まで移動できた時点で横入力を離します。離しただけではDASがリセットされないという仕様により、DASカウンターを維持することが可能となっているのです。

チャージ状態にある間は、1マス移動してからもう1マス移動するまでに6フレームかかりました。この6フレーム、つまり1/10秒の間に入力を離さなければならないということになります。慣れれば大した短さではないですが、習得するまでは離すタイミングを掴むのに苦労するでしょう。

また、移動が足りなかった、あるいは、移動しすぎたのを修正しようとしてもう一度入力をすると、そこでDASがリセットされてしまいます。ビタ止めが失敗した場合は、後述の「壁チャージ」というテクニックを使えなければどうしようもないということは注意しなければならないでしょう。

「ビタ止め」と「振り替え」によりDASをリセットさせないことで、チャージ状態を維持したまま次々とミノの操作が行えることが分かります。この2つが、DASの基本テクニックとなります。


  1. AREにはライン消去時間を含めないのが普通ですが、説明を簡潔にするため含めることにします。 ↩︎

DASの基本

ここでは、テトリスにおけるDASについて概説します。

DASとは?

DAS (Delayed Auto Shift) にはいくつかの意味が存在し、文脈によって使い分けられます。いずれの意味でも、日本語では「横タメ」と呼称することがあります。

多くのテトリスでは、横方向に入力をし続けた時、キーボードのキーを押し続けた時の文字入力と同じような挙動を示します。つまり、まず入力が始まった瞬間に横に1マス移動し、その後一定の間を置いてから、入力が途切れるまで短い間隔で移動し続ける、という振る舞いです。

まず、この横移動のシステム全体を広くDASと呼ぶことがあります。

このシステムは、テトリスの操作性の向上に大きく役立っています。もしこれが搭載されていなかったら、端までミノを動かすために連打をすることが必要になってしまいます。

また、「間を置いてから」「短い間隔で移動し続ける」という要素は非常に重要なものです。押し続けても横移動の間隔が長い場合、レベルが上がり高速に落下する中でミノを端まで持っていくことが難しくなります。一方、1回目の移動から2回目の移動までの「間」が存在せず、最初から短い間隔で移動し続けるとするとどうでしょうか。横に1マス移動したい場合、横を押してからすぐに離すという操作を行わなければなりませんが、離すまでの時間が少しでも長くなってしまうと、その間に2回目の移動が行われてしまい、意図した位置に移動できない、ということになります(これをミノが「滑る」と表現することがあります)。

つまり、この「間があること」はミノの小回りに影響し、「間隔の短さ」はミノの移動速度に影響することになります。この「間」「間隔」の時間をそれぞれ定量化した値のことをそれぞれ「DAS」「ARR (Auto Repeat Rate)」と呼びます[1]

また、このようなシステムを実装するために、ゲーム内部に、横を入力し続けている間加算されるカウンター(変数)が存在することがほとんどです。これをDASカウンターと呼び、省略してDASと呼んでしまうことがあります。横を入力し続けることで素早く移動できる状態に移行することを「DASが溜まる」と表現したり、新たに横移動の入力を行うことで、このカウンターをリセットさせることを、「DASが切れる」「DASがリセットされる」と言ったりします。

ゲーム間の横移動システムの比較

ゲーム DAS ARR サンプル
テトリスオンライン (横移動4) 110 ms (≒7 f) 55 ms (≒3 f)
ぷよぷよテトリス 11 f 2 f
TGM (初代) 14 f 1 f
NESテトリス 16 f 6 f
GBテトリス 24 f 9 f

NESテトリスにおけるDAS

上の表にある通り、NESテトリスにおけるDASは16フレーム、ARRは6フレームです。ゲームボーイ版ほどでは無いですが、他のゲームに比べてかなり遅く、高速域でミノを端まで持っていくためには不十分です。

しかしNESテトリスには、この困難をある程度克服できる仕様が存在します。それは、

  • DASカウンターは左右で共通
  • DASカウンターは、ミノの落下中にのみ更新される
  • ミノの落下中、新たに左や右だけを入力した時にのみ、DASカウンターが0にリセットされる
  • 横を押し続けても壁があってそれ以上移動できない場合、DASカウンターは最大値をとり続ける
  • 壁方向に新たに横を入力した時に、即座にDASカウンターが最大値となる

ということです。

この特徴的な性質を活かし、様々なテクニックが考案されてきました。これからの記事では、それらを一つずつ紹介していきますが、その前に予備知識として、NESテトリスのDASカウンターについてもう少し詳しく学んでおきましょう。

NESテトリスのDASカウンターは、0から16までの値を取ります。新たに横が入力された時には、これが0にリセットされ、ミノが1マス移動します。その後、横が入力されているフレーム毎にカウンターが1加算されます。カウンターが15または16の状態で、更に横が入力され続けていると、カウンターが10にセットされ、ミノが1マス移動します。なお、カウンターの最大値が15ではなく16となっているのは、上に挙げた仕様の4つ目と5つ目に該当する場合にカウンターの値が16となるためです。

DASカウンターが0~15に増加するまでの間がDASの16フレームとなり、10~15を繰り返す間がARRの6フレームとなっているわけです。

今後の記事では、DASカウンターが0~9の値を取る間の状態を「未チャージ状態」、10~16の値を取る間の状態を「チャージ状態」、15または16の状態を「フルチャージ状態」と呼ぶことにします。画像においてはそれぞれ、赤、黄色、緑の色で示すことがあります。


  1. 前者を「DAS Delay」、後者を「DAS」と呼ぶ流派もあります。「60Hz DAS」と書いてあればこちらです。ややこしいですね。 ↩︎