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].

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

Takes damage to save time

[править | править код]

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

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

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

Abuses programming errors (Heavy glitch abuse)

[править | править код]

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

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

Иногда такие мувики могут поразить зрителя феерией непонятных событий.[источник не указан 2159 дней] Некоторые спидраны буквально балансируют на грани зависания игры.[источник не указан 2159 дней] Данный класс прохождений подразумевает, что человек управляет глюком, рассчитывая, какое ненормальное поведение игры ему более выгодно: проверяются возможности поведения персонажа для каждого кадра и ответы игрового движка на это поведение[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 года.
  • Официальный сайт TASVideos.org Архивная копия от 8 февраля 2010 на Wayback Machine (англ.)
  • Проект TAStools Архивная копия от 10 января 2011 на Wayback Machine
  • Christopher Hanson. Game Time. Understanding Temporality in Video Games (англ.). — Indiana University Press, 2018. — P. 132. — 296 p. — ISBN 9780253032829.
  • James Newman. Playing with Videogames (англ.). — Taylor & Francis, 2008. — P. 140. — 224 p. — ISBN 9781134173013.
  • David Snyder. Speedrunning. Interviews with the Quickest Gamers (англ.). — McFarland, Incorporated, Publishers, 2017. — P. 22—23. — 260 p. — ISBN 9781476670805.
  • Stephen Totilo. Gamers Divided Over Freakish Feats Achieved With Tool-Assisted Speed Runs. mtv.com (17 апреля 2006). Дата обращения: 4 марта 2022. Архивировано из оригинала 1 октября 2007 года.