- NES TetrisでWillis、通称 Blue Scuti が初めてレベル157に到達してゲームクラッシュを引き起こし、34年の歴史を持つプロClassic Tetrisコミュニティで初の True Killscreen を記録
- かつて「キルスクリーン」と呼ばれたレベル29は、コード上の欠陥ではなく 操作速度の限界 であり、hypertappingとrollingの登場によって人間プレイヤーの限界線は押し広げられ続けた
- レベル138以降に現れる glitched colors は視認性と持久力の両方を圧迫し、単に速く押せるだけでは記録を伸ばしにくくなる
- 2022年のクラッシュ機構研究により、オリジナルのNES Tetrisで最も早くクラッシュ可能な地点はレベル155突入時の single line clear だと整理され、Blue Scutiはレベル157でついにクラッシュを成功させた
- ゲームを「攻略」した後も、競争はクラッシュまでの速度、クラッシュ前の最高スコア、クラッシュを回避してレベル255以降の rebirth screen 到達を目指すなど、新たな目標へと続いていく
レベル29が作った最初の限界
- NES Tetrisは1989年に Nintendo Entertainment System 向けに発売され、落ちてくるブロックを組み合わせて完成した列を消すゲームである
- 10列消すごとにレベルが上がって速度が速くなり、レベル29でゲーム内最高速度に到達する
- 長い間、レベル29はピースを左右ボタンの押しっぱなしで安定して端まで送るのが難しかったため、killscreen と呼ばれていた
- ただしPac-Manのレベル256のように、コード上の欠陥で進行不能になる伝統的な意味でのキルスクリーンではなかった
- より速くピースを動かす方法があれば、NES Tetrisはレベル29以降もクリア可能である
HypertappingとRollingが限界を押し上げる
- 2011年、Thor Aackerlundは指を振動させるようにコントローラーを素早く押す hypertapping により、レベル30に到達した最初の動画記録を残した
- レベル29以降はゲーム速度がそれ以上速くならないため、理論上はさらに高いレベルまで進めた
- Joseph Saeleeは2018年に初めてレベル31に到達し、2018年と2019年のTetris世界選手権で優勝、レベル記録を35まで引き上げた
- より高速なhypertapperだったEricICXは、初めてレベル37と38に到達した
- hypertappingはレベル29の速度をかろうじてさばける程度だったため、30代半ばから後半の記録には良いピース運とほぼ完璧な配置が必要だった
- 2020年、cheezは複数のボタン連打戦略を見た後、アーケード筐体で使われていたHector Flyの多指テクニックと、コントローラー下側の指で押して上側の指に当てる手法を組み合わせ、rolling を生み出した
- rollingは、最速のhypertapperより2倍以上速い連打速度を可能にした
- cheezは初めてレベル40に到達した
- その後、上位プレイヤーたちはrollingへ移行し、EricICXは2021年にレベル95まで到達した
色のグリッチが生んだ新たな壁
- NES Tetrisは本来、レベル0〜9に明るく見やすい10種類のカラーパレットを持ち、10レベルごとに同じ配色を繰り返す
- レベル138からはレベル色を決めるコードが壊れ、パレット外のデータを読み込むことで、見づらい 異常なカラーパレット が現れる
- Fractal161はあまり使われないPAL版で先にglitched colorsへ到達したが、PALは選手権や主要リーダーボードで使われるNTSCより20%遅い
- EricICXはNTSC版で初めてglitched colorsに到達し、実際のトーナメント試合でレベル146まで進んだものの、暗いレベルでtop outした
- その後の記録更新では視認性と持久力の両方が足かせとなり、EricICXの世界記録ゲームはほぼ40分間続いた
- PixelAndyはEricICXを敗退させた暗いレベルを越えたが、ほぼ黒いピースが出るさらに難しいレベルで敗れた
True Killscreenの仕組みとBlue Scutiの成功
- 2021年、Cannonは人間の限界を超えてみるため、TetrisプレイAI stackrabbit を作った
- stackrabbitは体力や視認性の制約がないため、難しいglitched colorレベルを突破し、level 235のように通常の10列ではなく800列続く奇妙なグリッチも通過した
- 非常に高いレベルではゲームコードが非効率に動作し、ゲームが命令コードの代わりにRAMをコードとして読み込む状況が生じる
- その結果が停止命令につながるとゲームは完全に壊れ、これを true killscreen と呼ぶ
- クラッシュは常に同じ地点で発生するわけではない
- レベル、現在のピース、一度に消した列数などの条件によって、非常に限定された地点で引き起こされうる
- stackrabbitはスコアカウンターが6桁から7桁に変更された改造版でプレイしていたため、オリジナルとクラッシュ地点が同じではなかった
- 2022年、HydrantDudeはクラッシュを引き起こしうるすべての状況をスプレッドシートに整理し、無改造のオリジナル版で最も早いクラッシュ可能地点はレベル155突入時の single だと確認した
- 2023年、Fractalは世界選手権優勝後、毎日クラッシュ挑戦配信を始めたが、初日にBlue Scutiが先にcharcoalを越えてレベル153に到達した
- この記録は新たなレベル世界記録であり、同時にスコア世界記録でもあり、初のクラッシュまであと18列という状態だった
- その後Blue ScutiはFractalとクラッシュ挑戦の競争に入り、レベル154でsingleではなくtripleを消してしまい、クラッシュの機会を逃した
- 次の目標はレベル157で、このレベルでは1列消去ごとにクラッシュ確率が73%だった
- Blue Scutiはレベル157でJ pieceを左側に置く最後の試みで列を消し、ゲームクラッシュを引き起こして、NES Tetrisで人間プレイヤーが初めてゲームを「打ち負かした」瞬間を作った
クラッシュ後の記録競争と残された目標
- rolling登場時、cheezはこの技法が強すぎてコミュニティを壊すのではないかと心配していたが、実際にはClassic Tetrisに renaissance をもたらした
- トーナメントの試合がendless lineoutで長引きすぎる懸念は、レベル39にさらに速い速度を追加するROMパッチにつながり、試合はより大きなline clearを狙う形へ変わった
- レベルとスコアの世界記録は単なる持久戦に固定されるかに見えたが、クラッシュ挑戦の過程で週に何度も記録が塗り替わる追撃戦へと変わった
- クラッシュ後の目標は複数の方向に分かれうる
- クラッシュまで素早く到達する speedrun
- クラッシュ前に可能な限り高いスコア
- クラッシュ条件を避けながらさらに先へ進む挑戦
- コミュニティの一部は、ツール支援スピードラン(TAS)であらゆる操作を手動入力し、クラッシュの罠を避けるルートをシミュレーションしている
- すべてのクラッシュを回避すると、最後に到達できるレベルは 255 で、これはゲームメモリに保存可能な最後のレベルである
- 色は純粋な赤のグリッチパレットである
- 7種類のピースのうち5種類は通常落下だけでもクラッシュを引き起こしうるため、生き残るにはほぼすべてのピースを下押ししなければならない
- レベル255をクリアすると、ゲームはレベル0に戻る
- レベル255後にレベル0へ戻るその瞬間は、プレイヤーがゲームを攻略することを超え、プレイヤーとゲームが共に生き残る rebirth screen として残る
1件のコメント
Hacker News のコメント
ここ数年の Tetris 界隈は本当に目まぐるしく変わった
子どもの頃から伝統的な DAS[1] スタイルで遊んでいて、hypertapping を習得する時間も取れなかったが、数年前に rolling が登場してからは追いつこうとするのを完全に諦めた。自己ベストは 29 レベルでほぼ maxout 寸前だった
さらに目立つのは、若いプレイヤーたちがルールそのものを変えて、伝統派を圧倒していることだ。CTWC ではもう誰も DAS ではプレイしておらず、Jonas が tapping に移る前は最後の大物 DAS プレイヤーだった気がする。30 代以上は DAS で覚えたが、若い選手たちは最初から rolling で始められるからだと思う
RIP Jonas Neubauer(NubbinsGoody https://www.twitch.tv/nubbinsgoody)。映画が出た後、Thor がほぼ引退した時期に Tetris ブームを牽引した人物で、2018 年に maxout を目指していた自分に、彼と奥さんが CRT モニターを手に入れろと助言してくれた。当時はそれがボトルネックだった
[1] https://tetris.fandom.com/wiki/DAS
Tetris の話が出たついでに、SSH 経由でターミナル上の シングルプレイ/マルチプレイ Tetris が遊べる
ssh playnetris.comコード: https://code.rocket9labs.com/tslocum/netris
Connection to playnetris.com closed by remote host.Connection to playnetris.com closed.>ssh playnetris.comssh: connect to host playnetris.com port 22: Connection refused十分に練習すれば、人は高速で複雑な 筋肉の動き をほとんど人間離れしたレベルまで高められるのが驚きだ。本当にすごい達成だと思う
だから若いプレイヤーの方がたいてい一人称シューティングも上手いし、自分が CoD で 1 分以上生き残れない理由でもある :)
2020 年には別の形で Tetris を攻略していた: https://jasoneckert.github.io/myblog/i-finally-beat-tetris/
自分が知っていた Tetris は Windows Entertainment Pack に入っていた版だけだった <https://en.wikipedia.org/wiki/Microsoft_Entertainment_Pack>
この版は 16 ビット Windows 向けなので、スコアを 16 ビット整数で保存していたのは驚きではなかった。驚いたのは、符号付き 16 ビット整数を使っていたせいで、32,767 点を超えるとスコアが負に回ったことだ
10 代の頃の自分はかなり上手くて、毎回スコアが負にならないとがっかりするほどだった
数年後に Guinness Book of World Records を見たら、Minesweeper エキスパートの記録は 25 秒くらいだった。もちろん証明するには埋め立て地から昔のコンピューターを掘り出さないといけないので、公認されなかった世界記録保持者として生きていくしかない
自分もスコアを負にできないとがっかりする。調子がよく、時間が十分あり、少し運も味方すれば、1 ゲームの中で正から負、また正、また負へと何度も行き来できる。数えたことはないが、1 ゲームを少なくとも 45 分以上続けたことがある
ただ、どちらにせよ符号付き整数を使っていたのがそこまで驚きというわけでもない。自分が関わったどのコードベースでも、符号付き整数は単なる数値に対する当然の選択としてデフォルトのように使われていた。
uintを見かけるのは、本当に重要なときか、開発者がかなり厳格なときだけだった関連記事もある: Celebrating the first NES Tetris game crash (biggieblog.com)
10 日前に davidrjones1977 が投稿、197 ポイント、コメント 56 件
https://news.ycombinator.com/item?id=38734106
本当に刺激を受ける動画だ。このレベルの オタク気質 が私たちの文明を前へ進めているとまで言える気がする
最近の進歩を見るのは驚きだし、GameScout は今もっともゲームの物語をうまく語る人の一人で、Summoning Salt と並べてもいい
John Green が 2018 年に作った Tetris コミュニティ入門動画も素晴らしい:
https://www.youtube.com/watch?v=twS0SrDg-fc
Tetris には興味がないのに、意外なほど面白かった
今の疑問は、RAM 上でのコード実行 が Pokémon Yellow Total Control Hack のような面白いゲーム状態やエクスプロイトにつながるかどうかだ: https://youtube.com/watch?v=p5T81yHkHtI
ただし準備は恐ろしく複雑かつ精密だ。ほぼ不可能なスコアを出し、ハイスコア一覧に特定の名前を入力し、そのうえで乱数生成の内部値が偶然そのハイスコア一覧へジャンプする命令を表すちょうどそのフレームでクラッシュに到達しなければならない。しかも複数のレジスタも必要な値をたまたま保持している必要がある
その後、完全な制御権を得るまで少しブートストラップが続く