TAS (ゲーム)

TAS（英語: tool-assisted speedrun, もしくはtool-assisted superplay）とは、エミュレータ上の操作で行うことにより、スピードラン（日本で言うタイムアタック）をしたり、人間には出来ないようなプレイをすることである。可能な限り速くゲームをクリアしたり、人間には難しい動きをする動画や操作記録（リプレイ）を後述のような方法で作成し、これをエミュレータ上で再生するものである。TASによる最適化に特化したエミュレータが開発されることもある。以下では、主にスピードランについて解説する。 TASは主に、理論上で速度面における極限値を目指す参考記録的な目的、あるいは一種の芸術的な目的で行われ、ただ単純に理論値を目指すだけではなく、大道芸のような「魅せる」操作を取り入れる事が多々ある。 理論上、実機でも再現可能なものでないといけない（例: チート・通常ではない挙動などは禁止）。記録として扱われる「クリアタイム」の数値は、ソフトの起動から最後のキー入力までのタイム（フレーム）、また、『メトロイド』などソフト自体にクリアタイムが表示されるタイトルでは、そのタイム（In Game Time、IGT）が別の記録として扱われる。これは、ソフト内のタイムを意図的に操作するテクニックにより、連続してプレイするよりもクリアタイムが早くなるタイトルがあるからである。前者の場合では、タイトル画面でスタートを押す前から既にカウントは始まっており、通常、操作を受け付けていないタイミングでも、一見無駄に思えるコントローラの入力が後に影響することもあるので、理論値を求める行為は始まっている。また特別な事情が無い限りパスワードは使用せず、バッテリーバックアップのあるゲームはこれを初期化された状態から始める。 メジャーなTAS（ゲーム内容による）は any% - 制限無し。アクションゲームにおいてルートを問わないタイプ。 low% - 最小アイテム取得数クリア。場合によってはクリアまでの最小ターン数、ノーミス・ノーダメージでのクリアなど、何らかの要素を最小にする内容となる。 100% - 全アイテム取得クリア。ゲーム内容によってイベントコンプリートなどにも変化する の3部門（難易度を表記する場合はそれに沿う）に分かれていて、実機プレー（RSR=リアルタイムスピードラン、RTSとも）、RTA（リアルタイムアタック）などと呼ばれる）でもこれに準じた世界記録を認定している。ただRSRの場合にはセーブの有無が増えて6種類となっている。また、バグ技（グリッチ）利用についても、使用した場合は題名に記入することが通例となる。 TASでは具体的な操作として、以下のものが挙げられる。 ムービーの追記 メモリ上のデータを小まめにセーブしながらゲームの操作を記録していき、失敗した時は直前のデータをロードし直して良い結果のみを残す。一般にメディアプレイヤーで視聴可能な動画形式（AVI形式やMKV形式など）での公開時には、その追記回数、プレイヤーのクレジットと「This is a tool-assisted movie.（ツールでアシストされた動画）」等を記すことがある。これは、TASVideosの動画の作成者に対する方針のひとつである。繰り返しが発生する個所などでは、手動の追記作業を省力化するため、Luaなどによるスクリプトbotを組み、部分的な作業効率を図るものもある。また、追記では再生時に操作が誤作動を起こす場合などでは、追記の代替手段として、ゲーム内のリプレイ機能が使用できるならその機能を使用し、またあらかじめ操作処理の手順をバイナリファイルに記述し、マクロ（キーボードマクロ）を使用して始めから操作を再現するものもある。 メモリビューア メモリ内容を表示させ、特定アドレスのメモリ内容からアイテムの出現やエンカウントなど、ゲーム内の処理内容を把握する。一見すると無駄に思える操作（例えば、突然操作を止めて待つ、その場で高速旋回する、電源パターンで最適な乱数にするためリセットを繰り返すなど）をしてメモリ内の乱数を変更する、いわゆる運操作（luck manipulation）、乱数調整を行ったり、メモリを利用したバグ・誤処理（別名メモリ破壊、任意コード実行=意図的にエンディング処理などのコードをメモリ上に揃える）を引き出す上で欠かせない。この他、キー操作の最適化などにも使われる。 フレームレートの操作 スローモーション状態、またはコマ送りでプレイして、正確で細かい動きを実現する。エミュレータによってはフレーム単位の操作から、機械語の命令1個単位の操作に対応する（データセーブ中にリセットを使用したメモリ上書きによる参照番地の任意設定〈破損データと認識されるのを回避〉）。 他にもあるが、主に上記3つの機能を駆使して、通常プレイでは成功確率がかなり低く簡単に再現できないような現象を何度も発生させるなど、ゲーム上の仕様（バグも含む）をフル活用し、タイム（フレーム）を短縮する。記録として提出する際は、行動内容やテクニック、短縮についての発見・検証経緯を付記することも多い。 これらは、コンピュータゲームで言うチートのように、外部操作で直接メモリを書き換えるわけではない（書き換えるとしてもあくまでゲーム内でのメモリ動作を利用する）ため、実機上で再現は理論上は実行可能であるが、あくまでも数値やデータでの理論上であり、人間の能力（反射神経・動体視力・または天文学的な運など）上で再現可能とはいえない。例えば、『スーパーメトロイド』のあるテクニックは、誤差0フレーム（1フレーム=1/60秒）の連続入力が必要となり、「サブフレームリセット」と呼ばれるテクニックではプレイヤーには不可視であるメモリの動作を利用するため、実機で人間の操作では再現不能、また再現可能な猶予がある場合でも非常に容易ではない。 操作記録を再生すると通常のプレイと同じ様に見えるが、データ改造などは行っていないので、これらの特殊な操作の有無を見分けるのが難しい場合がある。よってデータ改造を行っていない事を証明するために、操作記録のデータを公開する事が慣例となっている。しかし、これらの実現の困難な操作記録を作成する行為を「広義の意味でのチート行為のひとつ」と認識している者もいることは確かである[要出典]。タイムアタック系にはチートの使用は禁止されているが、ルート検証のために使うのは有用とされている。理論上実機で再現可能なバグの再現方法を探すため、逆アセンブルを行いプログラム内部のメモリ参照動作を探ることもある。ただし、最速記録を実現するには相当の試行錯誤と追記回数が必要であり、追記回数が30万回超の例や、BOTによるテストランも含めなくとも30万回超。中には400万回に近づく例もあるため、簡単にできるものではない。 また、バグを使用する場合、使用するソフトのROM（別言語版も含む）によってはバグの修正という要素があるため、同一ソフトでもリプレイの再現が可能かどうか検証しなければならない。他、エミュレーターによっては、操作再現時に画面と操作が同期しないdesyncを起こすこともある。 エミュレータの特性を応用し、複数(主に操作体系が同一のシリーズ作)のゲームを同時に起動し、1つのデバイスで同時に操作してクリアを目指すものも存在する。 同様の作業だがスピードランを目的としないものであっても、一般的な総称としてTAS（Tool-Assisted Superplay）あるいは単にTA（Tool-Assisted）と呼ばれる。場合によってはプレイするビデオゲームの内容やプレイ内容の頭文字を当てることもある。日本では和製英語のタイムアタックをTAと略した場合の混同を避けるため、TAP（Tool-Assisted Play/Performance）と呼び分けることがあるが、このような略称の差別化は主にニコニコ動画内でのローカルな文化であり、通常は目的問わず「TAS（Tool-Assisted Superplay）」と呼ぶ方が一般的である。