Pull to refresh

Tool-assisted speedrunning

Reading time 5 min
Views 26K
Много в наши дни существует игрушек — и 3D, и 2D; и браузерные, и standalone; под Windows и под UNIX. Все их объединяет одно — запускаются они на компьютере. Но ещё совсем недавно, в 90-е годы XX века, самыми популярными, несомненно, были приставочные игры. Игровые приставки были наверняка почти у всех, чьё детство пришлось на тот период времени.

Казалось бы, эти примитивные игры давно уже отжили свой век. И так оно и было бы, если бы однажды не родилось такое явление как TASинг. Аббревиатура TAS означает «Tool-assisted Speedrun» и по сути под ней скрывается давнее развлечение — прохождение игр на скорость. Однако, если традиционный спидраннинг подразумевает игру в реальном режиме времени и наличие огромного игрового опыта, то при TASинге определяющими факторами становятся терпение, понимание принципов функционирования игр и наличие достаточного количества свободного времени.

Описание


TASинг появился как следствие обыкновенного человеческого любопытства («а как быстро можно пройти эту игру?») и представляет собой технику скоростного прохождения игр при помощи специальных эмуляторов. Функциональный базис таких эмуляторов включает:

  • возможность сохранения и восстановления;
  • полный контроль над ходом игрового времени;
  • просмотр содержимого памяти;
  • скриптинг;
  • генерирование файлов ввода.


Возможность сохранения и восстановления состояния игры — это первое, что приходит на помощь игроку, когда он допускает какую-то ошибку. В процессе прохождения игрок периодически нажимает горячие клавиши сохранения, а допустив ошибку, восстанавливает состояние игры с тем, чтобы повторить свои действия. Уже эта возможность сама по себе способна принести очень многое. Однако, игровой процесс почти всегда слишком быстр, чтобы игрок мог успевать реагировать на игровые события. Обладая даже отточенной годами реакцией, невозможно полностью уйти от законов физики, поэтому вторым обязательным элементом эмуляторов является возможность замедления игрового времени вплоть до возможности ручного покадрового продвижения игры специальной клавишей. Это делает возможным оперировать с минимальной неделимой единицей игрового времени — кадром. При генерировании каждого кадра игра фиксирует состояние кнопок джойстиков, таким образом, игрок имеет возможность полностью абстрагироваться от скорости своей реакции и обдумывать каждое действие. В совокупности с сохранением-восстановлением технология покадрового продвижения даёт игроку возможность методом проб и ошибок подбирать наиболее оптимальный вариант действий.

Но как определить, какой из вариантов является оптимальным? Казалось бы, если в первом случае игрок «добежал» до какого-то пункта и игровой счётчик в этот же момент времени показал 13 секунд, а во втором случае в этой же самой точке на счётчике всё ещё 12 секунд, то вторая попытка успешнее? Но не всё так просто. Скажем, в первой ситуации игрок мог прийти к отметке позднее, но с большей скоростью, позволяющей ему впоследствии опередить свою вторую попытку. Возникает необходимость получить некоторую дополнительную информацию, которую сама игра не предоставляет. И здесь приходит на помощь функция просмотра содержимого памяти. Зная, по какому адресу расположены те или иные данные, и в каком виде они представлены (однобайтовое беззнаковое целое, 2-байтовое целое со знаком и так далее), средствами эмулятора можно включить отображение этой информации. Таким образом можно не только максимизировать скорость движения персонажа, но и, к примеру, просмотреть содержимое ячейки, в зависимости от состояния которой в игре происходит некоторое случайное действие — например, выпадает какой-то случайный бонус. Это называется манипуляцией удачей. Манипулируя удачей, игрок может, к примеру, максимально быстро получить наиболее разрушительное для своих врагов оружие и благодаря этому расправиться с ними быстрее, чем он сделал бы это, не имея возможности манипулировать удачей.

Возможности скриптинга, наверное, в той или иной степени всем понятны. Эмулятор предоставляет API, посредством которого игрок, обладающий навыками программирования на Lua, может решать для себя какие-то определённые задачи. Например, можно пойти дальше встроенной в эмулятор функции просмотра содержимого памяти и вывести нужную информацию прямо в игровом кадре; можно нарисовать хитбоксы персонажей и врагов и так далее.

Пример хождения сквозь стенку

Наконец, эмулятор генерирует файл, в точности воспроизводящий кнопочный ввод, необходимый для прохождения данной игры. Реакция игры на нажатия всегда одинаковая, что даёт возможность «воспроизвести» файл ввода даже на настоящей игровой приставке, используя специальное устройство. Файлы ввода получили в русскоязычном TASерском сообществе неофициальное прозвище «мувики».

Тонкости


Многие игры можно пройти быстрее, чем это задумано разработчиками. Из-за различных программных ошибок в процедурах определения столкновений игрок во многих случаях может буквально «войти в стенку». Если это происходит, начинает работать wall ejection — «костыль», корректирующий положение персонажа так, чтобы он покинул рельеф. Цель игрока — заставить этот механизм работать на него, выталкивая персонажа именно туда, куда это нужно игроку. При использовании инструментов для TASинга эта цель становится достижимой. Такой подход порой позволяет пройти тот или иной уровень в десятки раз быстрее, чем при нормальной игре.

Sonic the Hedgehog 3 с Lua HUD

Когда же прохождение игр на скорость наскучивает, игрок может задаться какой-либо другой целью. Например, показать как можно больше программных ошибок в игре. Такие пробеги называются glitchfest-ами и часто не менее интересны и зрелищны, чем прохождения на скорость. Словом, цели играющего могут быть различными, но каковы бы они ни были, средства TASинга позволяют достичь их малой кровью.

Видео


Конечно, всё вышесказанное нужно как-то проиллюстрировать. Например, в этом видео TASер, зная, как функционирует игра, обманывает её, рисуя в игровом поле рисунки и заставляя игру «думать», что он вводит правильные ответы.



Здесь же мы наблюдаем типичное прохождение игры на скорость, в котором, однако, в моменты ожидания игрок не стоит на месте, а занимается тем, что стреляет и прыгает под музыку, что придаёт прохождению особый вкус. Развлечение зрителей — важная особенность TAS, которая часто встречается, когда игрок вынужден ожидать какого-то события (как, например, в этом случае он ожидает момента, когда босс готов принять очередной удар).



Те же, кому незнакомы эти игры, могут посмотреть пробег Sonic the Hedgehog 3 and Knuckles. Эта игра примечательна тем, что в ней можно быстро «телепортироваться» в конец уровня, переполнив беззнаковую X-координату персонажа путём «вылета» (к примеру, при помощи механизма wall ejection) за левую границу уровня.



Сообщество


Существует международное сообщество людей, занимающихся TASингом игр. Сайт сообщества включает в себя wiki, форум (в том числе русскоязычный) и систему публикаций. Игрок, создавший новый пробег, отправляет его на рассмотрение, состоящее из двухэтапной модерации: сначала все участники сообщества дают пробегу оценку «да» или «нет» (то есть должен ли быть этот пробег принят к публикации), затем его оценивают привилегированные участники сообщества — судьи. Если по итогам голосования судей пробег является хорошим, он экспортируется в видеофайл и публикуется на сайте. Сообщество TASvideos существует с 2003 года и насчитывает сотни постоянных участников.

Литература


Tags:
Hubs:
+30
Comments 7
Comments Comments 7

Articles