Tool-assisted speedrun

Эта статья находится на начальном уровне проработки, в одной из её версий выборочно используется текст из источника, распространяемого под свободной лицензией
Материал из энциклопедии Руниверсалис

Tool-assisted speedrun (сокращенно TAS[1]) — скоростное прохождение игры с использованием встроенных инструментов эмулятора, таких как сохранение и перезапись, замедление и покадровый ввод, просмотр содержимого памяти и анализ исполняемого кода. Идея TAS заключается в том, чтобы превзойти ограничения человеческой реакции и способностей игрока ради достижения теоретических пределов игры, то есть границ реальных возможностей игрового движка. Главной целью работы над TAS является создание развлекательных видеороликов, демонстрирующих полное прохождение выбранной игры.

История

  • 1999 год — Andy «Aurican» Kempling выпустил модификацию исходного кода игры Doom, позволившую записывать демо-мувики[2] с замедлением и в несколько заходов. До этого фанаты игры могли делать записи демок лишь в реальном времени. В июне Esko Koskimaa, Peo Sjoblom и Yonatan Donner создали сайт для хранения таких tool-assisted демок, назвав его «Tools-Assisted Speedruns»[3]. С ростом его популярности контент стал пополняться по несколько раз в неделю: новые демо-файлы загружали создатели сайта и посетители.
  • 2001 год — сайт переехал на другой хостинг, популярность начала спадать, хотя новые демки продолжали заливаться до ноября 2005 года.
  • 2003 год — японец под псевдонимом Morimoto опубликовал в интернете видео с записью скоростного прохождения игры Super Mario Bros. 3[4]. Известная игра была пройдена всего за 11 минут. Прохождение содержало трюки, неизвестные на то время, о которых рядовые пользователи даже не догадывались и почувствовали себя обманутыми, когда выяснилось, что пробег был записан при помощи эмулятора. Однако Joel «Bisqwit» Yliluoma вдохновился на создание собственного сайта «NESvideos», целью которого стало просвещение интернет-общественности на предмет феномена TAS и коллекционирование подобных эмуляторных прохождений игр для платформы NES. Поначалу сайт содержал movie-файлы только для данной платформы, но с ростом сообщества нашлись программисты, добавившие инструменты для записи TAS в эмуляторы других консолей. В 2006-м году название сайта сменилось на «TASVideos». Сайт содержит детальную документацию по предмету и имеет форум, на котором обсуждаются вопросы, связанные с TAS. Принятый язык сайта и форума — английский, однако аудитория сайта многонациональна (есть подфорумы для разных языков).
Огонь не касается Марио по причине своего быстрого движения. Вращение в игре прерывисто, и нет кадра, в котором бы пламя соприкасалось с зоной поражения игрового персонажа.

Реализация

Демо-мувик, записанный при помощи эмулятора, не является видеофайлом. Это лишь записанная во времени последовательность кнопочных нажатий (input log). Если она просматривается на тех же (либо совместимых) версиях эмулятора и РОМа, на которых была записана, ответная реакция игры на вводимые действия игрока будет всегда одной и той же, включая действия игрового ИИ и генерацию псевдослучайных чисел. Вследствие детерминизма игровых движков одинаковые по времени нажатия клавиш дают одинаковый результат.

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

Замедление эмуляции

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

Появление в современных эмуляторах функции frame advance, то есть покадрового[5] продвижения игры, позволило заранее зажимать нужные клавиши для каждого отдельно взятого кадра. Запись TAS в таком режиме позволяет вводить в игру последовательности нажатий, выверенных с точностью до кадра (минимальной неделимой единицы игрового времени).

Пример манипуляции удачей. Выстрелив кадром раньше или позже, можно получить разный результат.

Перезапись

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

Просмотр памяти игры

Просмотр памяти необходим для получения точной информации о различных элементах игры, таких как здоровье/статус персонажей, их координаты и скорость с точностью до дробной доли пиксела. Подобная информация значительно облегчает анализ и принятие игроком оптимальных решений.

Для наблюдения за этими значениями необходимо знать адреса соответствующих ячеек в памяти приставки. В каждой игре они различны. Интересующую ячейку можно найти посредством постепенного отсева. Далее эта ячейка добавляется в список постоянно просматриваемых игроком адресов.

Просмотр памяти в сочетании с замедлением и перезаписью позволяет с предельной точностью контролировать игрового персонажа, а значит, и ход событий всей игры.

Скриптинг

Современные TAS-еры используют широкие возможности скриптового языка Lua[6], чтобы сделать процесс прохождения более простым и удобным. Известные ситуации применения Lua:

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

Просмотр счётчика кадров и счётчика лага

Счётчик кадров помогает отследить, сколько кадров длится то или иное действие, чтобы объективно сравнить разные игровые стратегии, оценивая их с точки зрения затраченного времени. Счётчик лага позволяет выявить закономерности нежелательного замедления игры и выработать оптимальную стратегию минимизации потерянного из-за лага времени.

Индикация нажимаемых клавиш

Просмотр кнопочных нажатий позволяет каждому зрителю TAS-мувиков составить понятие о выполняемых манипуляциях и, зачастую, повторить трюки, не вдаваясь в их суть[7].

Дизассемблирование

Дизассемблирование кода игры открывает доступ к скрытым закономерностям. Работа с встроенным в эмулятор отладчиком, как правило, требует специальных знаний, однако она позволяет разобрать логику игры, понять принципы работы отдельных механизмов (например, алгоритм генерации псевдослучайных чисел, чтобы манипулировать удачей, не прибегая к методу проб и ошибок), обнаружить возможные баги и уязвимости игрового движка.

Дизассемблирование приставочных игр тесно связано со сферой ромхакинга.

Игровые боты

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

Особенности и приёмы

Прохождения различаются по поставленным целям и используемым для их достижения приёмам. Вот некоторые из них[8]:

Ускорение свободного падения на NES.

Aims for fastest time

Цель — дойти до финала максимально быстро. Основной тег большинства прохождений. В угоду времени игрок часто пропускает призы, так как подсчёт призовых очков занимает лишнее время, пропускает удары противников, уворачивание от которых займет несколько кадров, уничтожение же противников часто происходит самым неожиданным образом[9].

Multiple games in one movie

Несколько разных игр проходятся одновременно, то есть записывается такой input-файл, который работает в них всех. При перекодировании в видеофайл все прохождения помещают на один экран[10].

Uses warps

По ходу прохождения автор пропускает некоторые уровни с помощью общедоступных приёмов, таких как секретные переходы и бонус-телепорты. Иногда перепрыгнуть через несколько уровней удаётся с помощью ошибки в коде или дизайне карты. Наряду с такими пробегами на сайт обычно выкладывается прохождение игры без пропусков — No warps.

Takes damage to save time

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

Manipulates luck

Дословно — манипуляция удачей. Достаточно сложная техника, подразумевающая понимание логики игры. Так как всякое значение всякой ячейки памяти строго детерминировано, есть возможность управлять тем, что обычный игрок посчитает случайным элементом. Само по себе управление этими элементами не так сложно, как нахождение фактора, влияющего на них.

Из-за ошибки в процедуре определения столкновений Скрудж Макдак проникает в непроходимые места.

Abuses programming errors (Heavy glitch abuse)

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

На примере платформы NES, для того, чтобы разгрузить память, разработчики упрощают проверки, совершаемые игрой. Если персонаж начнёт идти в стену, стена будет его отталкивать от себя, не позволяя проникнуть внутрь. Однако, если он уже оказался в этой стене — она начнет выталкивать его в направлении, противоположном движению. А оказаться в ней можно, если не зайти в неё, а, например, запрыгнуть сидя[11].

Иногда такие мувики могут поразить зрителя феерией непонятных событий.[источник не указан 2195 дней] Некоторые спидраны буквально балансируют на грани зависания игры.[источник не указан 2195 дней] Данный класс прохождений подразумевает, что человек управляет глюком, рассчитывая, какое ненормальное поведение игры ему более выгодно: проверяются возможности поведения персонажа для каждого кадра и ответы игрового движка на это поведение[12].

Uses death as shortcut

В некоторых играх персонаж при умирании не отбрасывается в начало уровня. Кроме того, после смерти во многих играх герою даётся неуязвимость на короткое время[13].

One player controls two characters

Один человек контролирует сразу двоих персонажей (иногда и больше — до четырёх). Есть два способа реализации этой идеи, каждая по-своему сложна. Либо обеспечивать главным героям кооперацию, одновременно зажимая клавиши за обоих, либо использовать скрипт multitrack.lua, позволяющий прописать управление для каждого персонажа отдельно примерно на несколько секунд: один стоит на месте, другой движется, и скрипт «запоминает» input, потом игра отматывается назад и прописывается управление для стоявшего персонажа. Сложность в том, что пока второй игрок стоит, поведение врагов одно, а когда он тоже движется, уже другое; приходится вновь корректировать движения первого.[14]

Plays at hardest level

Чтобы больше заинтересовать зрителей, автор фильма выбирает максимальную сложность. Такое применимо лишь в тех играх, которые становятся объективно сложнее в этом случае. Если же усложнение только увеличивает энергию врагов, либо уменьшает отведённое герою время — оно использоваться не будет.

Эмулируемые системы

Список эмуляторов, пригодных для TAS[15]
Система/консоль Эмуляторы
NES FCEUX, BizHawk, FCE Ultra
Super Nintendo Snes9x, BizHawk, lsnes
Virtual Boy VBjin
Nintendo 64 BizHawk, mupen64
Game Boy, Game Boy Color, Game Boy Advance BizHawk, VisualBoyAdvance
Nintendo DS DeSmuME
Playstation BizHawk, PSXjin, PCSX
Master System BizHawk
Sega Mega Drive BizHawk, Gens
Saturn BizHawk, Yabause
Arcade, Neo Geo Final Burn Alpha rerecording
PC-Engine BizHawk, PCЕjin, Mednafen
DOS JPC-rr
MSX OpenMSX
Windows Hourglass
Linux libTAS

См. также

Примечания

  1. Иногда расшифровывается как tool-assisted superplay.
  2. Мувик (англ. movie — кинокартина, фильм) — жаргонное слово, происходящее от названия лог-файла с записью кнопочных нажатий. [1] Архивная копия от 28 ноября 2010 на Wayback Machine
  3. Именно так, с ошибкой, название сайта было написано и на его логотипе. Впрочем, авторы сайта отказались её исправлять. Doomworld.com / tas Архивная копия от 13 августа 2001 на Wayback Machine
  4. NES Super Mario Bros. 3 (JPN) in 11:03.95 by Morimoto (англ.). TASVideos (20 ноября 2003). Дата обращения: 23 октября 2013. Архивировано 6 октября 2013 года.
  5. По стандарту NTSC на одну секунду приходится 60 кадров. Стандарт PAL — 50 кадров в секунду.
  6. TASVideos / Lua Scripting. Дата обращения: 15 сентября 2010. Архивировано 28 ноября 2010 года.
  7. Пример использования Архивная копия от 30 апреля 2015 на Wayback Machine на YouTube
  8. TASVideos / Movie Class Guidelines. Дата обращения: 15 сентября 2010. Архивировано 28 ноября 2010 года.
  9. Пример на Youtube.com Архивная копия от 9 сентября 2016 на Wayback Machine — игра Darkwing Duck.
  10. Пример на Youtube.com Архивная копия от 1 февраля 2018 на Wayback Machine — игры Mega Man 3, 4, 5 и 6.
  11. Архивированная копия. Дата обращения: 12 февраля 2011. Архивировано 12 апреля 2012 года.
  12. Пример на Youtube.com Архивная копия от 25 июля 2018 на Wayback Machine — игра Battletoads.
  13. Пример на Youtube.com Архивная копия от 12 февраля 2021 на Wayback Machine — игра Chip 'n Dale.
  14. Примеры на Youtube.com:
  15. TASVideos / Emulator Resources. Дата обращения: 20 сентября 2010. Архивировано 12 апреля 2012 года.

Ссылки