Новости :: Переводы :: Наши проекты :: Документация :: Утилиты :: Ромхакинг :: TAS :: GameFAQs
Гостевая книга :: Форум :: 2RTeam :: CaH4e3 :: Zelda64Rus :: RRC2008 :: О нас


Perfecting Contra


Контра - прохождение игры за 8:57.98



РОМ: Gryzor (J).nes
Жанр: 2D-боевик
Страница пробега: 797M
Фильм опубликован: 2007-02-16
Автор: Adelikat
Комментарии автора: в наличии

Характеристики фильма:

* Максимально быстрое прохождение
* Игрок управляет двумя персонажами
* Эксплуатируются ошибки в программе
* Ради ускорения тратятся жизни


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

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

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

Ну что, посмотрели запись? Всё прекрасно в скоростном прохождении - и герои действуют мастерски слаженно, и враги дерутся агрессивно, но безвредно, будто подыгрывая дирижёру-спидраннеру. Но знаете ли вы, что стоит за каждым движением персонажа? Горы убитого времени, горячих дискуссий и кропотливых исследований, иногда сравнимых по трудозатратам с околонаучными. Проще говоря, при Tool-assisted speedrunning в ход пускается самая тяжёлая артиллерия, доступная в наше время.

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

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

Когда эмуляция игры приостановлена, оператор (спидраннер) может рассмотреть и проанализировать все существенные детали текущей ситуации. А ведь по сути любая игра - это совокупность решений игрока. И в режиме паузы на принятие решения у спидраннера бесконечно много времени, враги не сдвинутся с места, пока игрок не отпустит "паузу". После выбора наилучшего решения он может продолжить исполнение кода игры либо в замедленном темпе, либо отрывками. А если выбранное решение в итоге окажется не самым оптимальным, всегда можно отмотать игру назад и изменить его.

Со стороны всё это мало походит на игру в 2D-Action, но к счастью, спектр человеческих удовольствий не ограничивается эйфорией ураганного экшена. Ну действительно, не всё ж Контре тренировать спинномозговые рефлексы? Пришло время поработать над тем же самым материалом головой!

Итак, исследуем первый уровень под микроскопом. Максимально быстрым представляется бег вправо и скорейший расстрел босса. Хорошо, что в Контре персонаж может стрелять по диагонали на бегу - иначе пришлось бы стрелять в прыжке (в большинстве игр персонажи останавливаются при ударе стоя, но продолжают двигаться при ударе в прыжке). А прыжок в Контре реализован довольно необычно. Игрок не может контролировать высоту прыжка, поэтому низкий прыжок осуществить не получится, и приходится внимательно обдумывать, в какой момент прыгать.

Кроме того, при просмотре видеозаписи в сильном замедлении можно заметить, что в самом начале прыжка (на фазе подъёма) персонаж движется строго вертикально, даже если игрок усиленно жмёт ВПРАВО. То есть при каждом прыжке спидраннер теряет 1 кадр (1/60 секунды)! Хотя для обычного игрока это до смешного ничтожно, вы принимайте в расчёт, что за абсолютный рекорд в Контре издавна идёт нешуточное соревнование, в котором даже сотая доля секунды имеет значение. В итоге, игрок-ТАСер старается не прыгать без крайней необходимости. Впрочем, при игре в режиме 2 players второму персонажу позволительно слегка отстать от первого, так как у босса он его всё равно нагонит.


На взрывающемся мосту всё же приходится прыгать, так как по предварительным рассчётам оказалось, что в воде уровень проходится несколько медленнее. Нет, скорость изменения координаты X одинакова как при плавании, так и при ходьбе. Но при взбирании на берег персонаж едва заметно приостанавливается, и только затем появляется на земле. Быстрее будет потерять 3 кадра на мосту, чем 10 кадров в воде.

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

Но в данном случае Adelikat использует принцип мультрекинга (multi-tracking). Управление пишется раздельно - сначала несколько секунд для первого игрока, затем столько же для второго. Конечно, при таком раскладе существует проблема - пока автор управляет первым персонажем, второй стоит на месте, а когда управление переходит ко второму - ситуация в игре может поменяться, и готовая запись кнопок первого персонажа может стать неактуальной. Например, если первый герой стреляет в пехотинцев, а второй сбивает вражеские пушки, может оказаться, что количество появляющихся на экране солдат вычисляется игрой исходя из количества пушек. Пока все пушки на месте, на первого героя выбегает только два солдата, и автор спидрана записывает лишь два выстрела во время ходьбы. Но когда к нему добавляются действия второго героя, который уничтожает одну пушку, игра быстренько генерирует ещё одного солдата у края экрана, так что приходится переписывать действия первого игрока, делая три выстрела на бегу. В общем, много тонкостей в этом процессе, но целеустремлённый человек справится с любыми трудностями.

Контра не была бы Контрой без разнообразного дальнобойного оружия... дополнительной головной боли для ТАСера! В поисках предельного решения спидраннер должен относиться к использованию оружия со всей ответственностью. Для разных игровых ситуаций наиболее подходящим является разное оружия - даже пресловутая "эСка" (S) далеко не всегда срабатывает лучше других видов оружия. Пулями из дробовика (Spread Gun) очень сложно управлять - они вылетают веером и довольно долго летят во все стороны. На экране одновременно может быть максимум 10 пуль каждого персонажа, поэтому после двух разрядов дробовика приходится долго ждать, пока не попавшие в цель пули удалятся с экрана. В этом смысле оружие Laser и самая простая винтовка для ТАСера гораздо удобнее - можно осуществлять выстрелы чётко в нужном направлении, и при нажатии/отпускании кнопки B с частотой 60Hz новые пули будут попадать в цель гораздо чаще, чем это позволяет легендарная "эска".

Вот так обычно и бывает - что для обычного игрока подходит идеально (беги себе вперёд и стреляй из дробовика, покрывая пол-экрана), то для ТАСера подходит лишь отчасти. Из 5 выпущенных пуль цель настигает лишь одна, а зазря использованные выстрелы среди спидраннеров считаются признаком дурного тона (зачем ошарашено выпускать в противника целую очередь, если можно срезать его одной пулей?) Ну а невольные промахи в эпоху quicksave вообще недопустимы!

Да, и ещё одна проблема, связанная с S-кой. Программа "Контры" просчитывает пересечения вражеских спрайтов с каждой пулей, и когда пуль на экране становится слишком много, игра начинает тормозить. Ну, почти как в Contra Force - изображение начинает подёргиваться, игрок передвигается медленнее, а секунды, между тем, отсчитываются - и не в пользу спидраннера! Естественно, с этими лагами борются всеми силами, иногда даже приостанавливаясь на долю секунды, чтобы пропустить врагов за край экрана - пусть пара кадров будет потеряна из-за остановки, но из-за лага ТАСер в будущем потерял бы гораздо больше.

Поэтому некоторое время считалось более эффективным использовать в режиме 2 Players два лазера или "лазер + обычную винтовку". Ведь по-настоящему замедлить инструментально-обеспеченного игрока в Контре могут только боссы, а с ними ситуация особая. Жизненная энергия боссов может уменьшаться лишь с определённой скоростью. Если посылать пули в цель слишком быстро, некоторые из попаданий не будут засчитаны. Всё это звучит так непонятно только на словах, а когда перед глазами светится ряд коэффициентов и видны все таймеры босса (период неуязвимости, остаток энергии) то требуемый темп повреждений чувствуется интуитивно, и игроку остаётся лишь правильно скоординировать действия двух персонажей, чтобы добиться равномерного нанесения урона.


Особенно неэффективно S-оружие в Базах (на 2 и 4 уровне), где для победы требуется лишь уничтожить объект-замок в каждой комнате. Сам замок некоторое время неуязвим, но по состоянию оперативной памяти приставки легко определяется точное время, когда можно начинать жарить его узконаправленной очередью пуль. Лазер в таком случае - идеальное оружие.

Сейчас многие из тех, кто играл в Контру ещё на приставке, закричат: "зачем лазер, эска тоже может стрелять очередью, надо только быстро-быстро нажимать B, и если повезёт, большая часть пуль полетит в одном направлении!" Всё верно, за одним исключением - никакого везения в Tool-assisted superplay нет. Есть лишь коэффициент вероятности события, и если он не нулевой, ТАСер в конце концов сможет добиться наступления этого события и записать его в свой фильм.

Поэтому Adelikat всё же использует Spread Gun, искусственно создавая узкий поток пуль и всё время поддерживая его точными нажатиями кнопки B в нужные мгновения. Делается это так.

Двумя быстрыми нажатиями (1 кадр - B нажата, 2 кадр - B отпущена, 3 кадр - B нажата) игрок выпускает практически сливающиеся друг с другом волны по 5 расширяющихся шариков. Направление выстрела необходимо выбрать таким образом, чтобы улетающие шарики исчезали с экрана по одному. Например, если выстрелить по диагонали вверх, то первым верхней кромки экрана достигнет самый крайний шарик из пяти, через пару кадров нулевой координаты достигнет второй шарик, ещё через кадр - третий и т.д.

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

Ладно, с оружием разобрались - первый игрок берёт эСку сразу, второй - на 5 уровне, так как опытным путём Adelikat определил, что с двумя "S" прохождение Баз замедляется на несколько кадров больше, чем ускоряется прохождение боссов 1-4 уровня. Чёрт, наверное, я не настолько фанатично люблю Контру, и не смог бы часами проходить её уровни по различным стратегиям, чтобы затем сравнить их все и выбрать наилучший результат.

В начале третьего уровня (Водопад) второй игрок всегда появляется немного левее первого, и в предыдущих 2P-спидранах Контры ТАСерам приходилось вести его с некоторым отставанием от первого, что не в лучшую сторону сказывалось на скроллинге экрана вверх. На выравнивание двух персонажей приходилось тратить целых полсекунды, но теперь автор нашёл способ не терять это время. Он просто сбрасывает отстающего мужика-в-красных-штанах в яму, намеренно теряя при этом 1 жизнь. Через некоторое время второй игрок появляется рядом с первым, и они вместе продолжают путь наверх.

Кроме того, в третьем уровне кем-то из старых спидраннеров был обнаружен труднообъяснимый глюк. Иногда высота прыжка чуть увеличивается, и герой может запрыгнуть с первого уступа сразу на третий, а не опускаться сначала на второй, затем делать ещё один прыжок до третьего. Вот это настоящая находка для серьёзного ускорения давно отшлифованного пробега! Суть проста. Обычно при скроллинге бэкграунда программа автоматически корректирует Y-координаты персонажей, но в случае бокового прыжка, плюс стечения некоторых обстоятельств, значение координаты корректируется неточно. Эта мелкая неточность может увеличить или уменьшить высоту прыжка на несколько пикселей, что оказывается достаточным для пропуска некоторых промежуточных уступов.

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

На пятом уровне в J-версии Контры идёт снег. Красотища! Не понимаю, почему в России была больше распространена урезанная американская версия, где не было ни снегопада, ни анимированных ёлок.

Что интересно, раньше рекорды по прохождению Контры ставились в основном американцами и европейцами, для чего использовалась та же ущербная U-версия РОМа (а точнее - лицензионный картридж с американской версией). К счастью, ТАСеры - народ менее закостенелый, и переход на японскую версию произошёл естественно и незаметно.


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

Впрочем, не всё так прискорбно, в общем счёте оказалось, что вдвоём боссов гасить всё же чуть-чуть быстрее. Ну а во время вынужденного ожидания медленного убывания таймера неуязвимости Adelikat демонстрирует всевозможные рискованные маневры, отважиться на которые может лишь спидраннер с надёжным инструментом Rerecording под рукой.

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

Босс шестого уровня - гигантский робот - не успевает и глазом моргнуть, как обнаруживает гнетущую пустоту в счётчике своих жизней.

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

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


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

АнС, 24.02.2008
Ссылками мы не меняемся.
Страница админа
        © 2001-2023 Shedevr Team.