【マリオ64 RTA】BBH テキストスキップの条件を調べてみた
以下の動画はikori氏がテレサのホラーハウスのおやかたテレサをさがせ(BBHボステレサスター)を練習していた時に出た記録だ。
最後のちびテレサ2匹を倒すところで、本来2つ出るはずのテキストが1つだけしか出ずに進むことができているのが分かるだろう。この現象が『テキストスキップ(Text Skip)』である。
「どうしてこんなことが起こるのだろう」と疑問に思った私は、2019年2月頃、この現象がが発生する条件を調べてみたことがある。
今回はその時どのような流れで調べたのかを語る。
事前: テキストスキップを決めるとどれぐらい変わる?
条件を調査する前に、まずはテキストスキップを決めた時のタイム差を見てみた。
参考にしたのは冒頭で挙げたikori氏の動画や、phantaxx氏の配信切り抜きである。
120枚idealrunの入力をそのまま使いまわした結果、最終扉のタッチタイム(カメラ×)は以下となった。
- 2テキスト(120枚idealrun): 38.60x
- 1テキスト: 37.43x
おおよそ1秒変わるらしい。リスクも特に無いので1秒変わるのであれば狙っていきたいといったところか。
テキストスキップが発生した時の状態を確認してみる
最初にドアを開けた時のテレサの位置を確認する。初期位置は以下となっていた。
2枚目の画面で、左側(壁沿い)にいるテレサを『左側のテレサ』、真ん中にいるテレサを『右側のテレサ』と呼ぶことにする。
先に動いたのは右側のテレサだった。『マリオとテレサが一定距離になると動き出す』仕様なのではないかと推測している。
左側のテレサが動き出すのは、右側のテレサが動き出したフレームより0.1秒ぐらい後であった。
この間も右側のテレサはマリオに向かって動き続けているのが分かった。
透明[!]箱壁キックまでは2匹ともマリオに向かって動き続けていて、壁キックを出した時の位置は以下だった。
もうじき2匹のテレサがこちらに顔を出しそうだということが分かるだろう。
続いて、ヒップを出した時は以下となっていた。
マリオと各テレサ間の距離が大体一緒になっていることが分かると思う。
その後のヒップ着地シーン。
左側のテレサには既に攻撃が入っていて、右側のテレサにちょうど攻撃が入るぐらいとなっていた。
マリオが動き出すシーンでは、2匹のテレサが仲良く右方向に飛ばされていた。
最後、テキストが出るシーン。2匹のテレサは赤く塗りつぶした壁にぶつかって死んでいるように見えた。
ただ、壁にぶつかったのは同時ではなく、『右側のテレサ』『左側のテレサ』の順に壁にぶつかっていた。
以上がテキストスキップが発生した時の状態である。
これを踏まえてテキストスキップが発生する条件を考えてみる。
いつテレサは死亡判定となる?
テキストスキップが発生する条件を考える上で、『いつテレサは死亡判定となるのか』を理解していることが必須である。
この質問の答えを知らない方もいると思うので、このセクションで説明することにしよう。
テレサが死亡判定となるのは、テレサがマリオに攻撃された時ではなく、テレサがマリオに攻撃された後白い煙になった時である。
例えば、このスターの1匹目のテレサでは、以下が攻撃を与えたフレームになるのだが、
実際にテレサが死ぬのは壁に激突して煙になった時となっている。
煙になった時にテレサのステータスが変わり、その後、テキストが表示されるわけだ。
これを理解していれば、バルコニーやメリーゴーランドにいるボステレサも速く倒すことができるだろう。
テキストスキップが発生する理由の仮説を立てる
1つ目のセクションでテキストスキップが発生した時の状態を確認したが、そこでは、『右側のテレサ』『左側のテレサ』の順に壁にぶつかっていたと思う。
直観で考えると『2匹のテレサが同フレームで壁にぶつかり白い煙になると発生する』と考えることができるが、そうではなかったわけだ。
理由に全く見当が付かなかった私は、自身の経験から以下の仮説を立てた。
『片方のテレサが白い煙になってからマリオが硬直するまでの間に二匹目を倒せていればテキストスキップできる説』
次のセクションでこの説が正しいかどうかを検証した結果を話す。
仮説が正しいかどうかを検証
先で挙げた仮説の具体的内容は、以下の画像を見るとすぐに意味が分かると思う。
- 11.90秒にテレサが白い煙となる
- 12.00秒でマリオが硬直している
- つまり、0.1秒だけラグがある
これを2匹のテレサに当てはめ、「この0.1秒の間に2匹目が白い煙になったらテキストスキップできるのでは?」というのがこの仮説である。
私はこの説を以下のように検証した。
(1) 1匹目のテレサが白い煙になる
(2) 次のフレームで2匹目のテレサが白い煙になる
(3) テキストが1つになれば仮説が正しい、ならなければ仮説が間違い
面白いエピソードなどは無いので実際の検証風景は割愛するが、残念ながら予想とは反してテキストが2つ発生した。
「うーん」と悩んだ私は、この後、原点に立ち返り2匹のテレサの状態を確認してみることにしたのだ。
2匹のテレサは同時に白い煙になっていた!
ちびテレサはActionという値を持っており、この値が4になると白い煙になる。
まず先に、右側のテレサがAction=4(白い煙状態)になるフレームを確認してみた。
「このフレームでもう片方(左側)のテレサはどういう状態になっているんだろう」と見てみると……。
左側のテレサもAction=4(白い煙状態)となっていたのだ!
しかも、Actionの時間を数えるタイマー値を見る限り、2匹のテレサとも同フレームでAction=4(白い煙状態)になっているようだ。
本当に同フレームで白い煙になっているかを自分の目で確かめたかったので、特殊なカメラを使って実際に確認してみた。
フレーム送りで見てみると、同フレームで白い煙になるのが間違いではないことが確定する。
以上から、私は以下のように予想した。
- 直感で考えた『テキストスキップは2匹のテレサが同時に白い煙になることで発生する』というのは当たっているっぽい。
- 『白い煙になる条件が壁衝突だけ』というのが外れている可能性が高い。
テレサが白い煙になる条件は?
この後、あれこれ試行していると、とあるひとつの条件を見逃していたことに気づく。
その条件というのは、『マリオの攻撃を受けたテレサは一定時間経つと白い煙になる』という条件である。
これは、例えば、最初の扉抜けをする場合で確認できる。
以下のような角度でテレサに攻撃した場合、テレサは手前側に飛んでいく。
しかし、飛んでいく先に壁が無いため、ずっと同じ位置で回転したのち、一定時間経過したら白い煙となる。
つまり、テレサが白い煙になる条件は、
- マリオから攻撃を受けたテレサが壁にぶつかる
- マリオから攻撃を受けたテレサが一定時間経つ
の2条件あったわけだ。
この見逃しに気づいた私は、次に、『一定時間』がどれぐらいのタイムなのかを調べることにした。
何フレーム経つとテレサが白い煙になる?
テレサがマリオから攻撃を受けた時、テレサのActionは3になる。
Action=3になってから何フレームでAction=4(白い煙状態)になるのかを最初のテレサを使って調べてみた。
初めてAction=3になったのは10.66秒だった。
続いて、テレサが完全に消えるフレーム。Action=3のままで18フレーム目であることが分かった。
続いて、Action=4に変わるひとつ前のフレームは31フレーム目=1.03秒だった。
この次のフレームでAction=4になることを確認できた。
つまり、マリオから攻撃を受けて1.06秒後に白い煙になるわけだ。
その他のテレサでやってみても同じだったので、これは乱数などではなく固定タイムだと思われる。
もう一回テキストスキップ時のテレサを見てみる
今まで考察してきたことを踏まえて、もう一度テキストスキップ時のテレサ達を見てみた。
2匹のテレサがAction=4(白い煙状態)になる一歩手前のフレームは以下となっていた。
この時の各テレサの状態は以下。(1枚目が『左側のテレサ』、2枚目が『右側のテレサ』)
左側のテレサが次のフレームで一定時間(1.06秒)経つことが分かるだろう。
つまり、両者はそれぞれ別の条件により同フレームで白い煙になっていたのである。
- 左側のテレサは一定時間(1.06秒)経ったことで白い煙になった
- 右側のテレサは壁にぶつかったことで白い煙になった
むすび
今回の調査では、2匹のテレサが同フレームで白い煙になるとテキストスキップが起こることが分かり、白い煙になる条件は以下2つあることが分かった。
- マリオから攻撃を受けたテレサが壁にぶつかる
- マリオから攻撃を受けたテレサが一定時間(1.06秒)経つ
2つ条件があるということは、テキストスキップを発生させる方法が3パターンあると予想できる。
A. 両者が同時に壁にぶつかって白い煙になる
B. 両者が同時にマリオから攻撃を受け、一定時間経って白い煙になる
C. 片方は壁にぶつかって白い煙になり、もう片方は一定時間経って白い煙になる
今回の調査サンプルではCパターンだったということになる。
今回はテキストスキップの条件のみを語ったが、この後に実践で使うための調査もしたので、後日その結果も語る予定だ。
ちなみに、その調査では、「Cパターン以外でテキストスキップが起こるのか?」も検証しているので、興味のある方は読んでみてほしい。