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».
  • На сегодняшний день это крупнейшее[источник не указан 284 дня] интернет-сообщество, посвящённое tool-assisted speedrun, архив которого насчитывает более полутора тысяч эмуляторных мувиков.[5] Сайт содержит детальную документацию по предмету и имеет форум, на котором обсуждаются вопросы, связанные с TAS. Принятый язык сайта и форума — английский, однако аудитория сайта многонациональна (есть подфорумы для разных языков).
Огонь не касается Марио по причине своего быстрого движения. Вращение в игре прерывисто, и нет кадра, в котором бы пламя соприкасалось с зоной поражения игрового персонажа.

Реализация[править | править вики-текст]

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

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

Замедление эмуляции[править | править вики-текст]

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

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

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

Перезапись[править | править вики-текст]

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

Просмотр памяти игры[править | править вики-текст]

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

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

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

Скриптинг[править | править вики-текст]

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

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

Просмотр счётчика кадров и счётчика лага[править | править вики-текст]

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

Индикация нажимаемых клавиш[править | править вики-текст]

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

Дизассемблирование[править | править вики-текст]

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

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

Игровые боты[править | править вики-текст]

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

Теги[править | править вики-текст]

Каждый демо-мувик на сайте «TASVideos» помечается соответствующими тегами, по которым зрители могут составить примерное представление о содержимом.[9] Многие теги отражают уникальные особенности TAS-прохождений, невозможные для игрока в реальном времени, однако теоретически воспроизводимые не только на эмуляторе, но и на настоящей консоли[источник не указан 284 дня].

Aims for fastest time[править | править вики-текст]

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

Multiple games in one movie[править | править вики-текст]

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

Uses warps[править | править вики-текст]

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

Takes damage to save time[править | править вики-текст]

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

Manipulates luck[править | править вики-текст]

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

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

Abuses programming errors (Heavy glitch abuse)[править | править вики-текст]

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

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

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

Uses death as shortcut[править | править вики-текст]

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

One player controls two characters[править | править вики-текст]

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

Plays at hardest level[править | править вики-текст]

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

Эмулируемые системы[править | править вики-текст]

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

См. также[править | править вики-текст]

Примечания[править | править вики-текст]

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

Ссылки[править | править вики-текст]