Хабрахабр

[Перевод] Как игроки разрывают ткань реальности Spelunky с помощью дробовиков

image

«Бум, бум, бум», стреляет дробовик, целясь… похоже, что в никуда? На земле лежит плазмаган, а справа летит призрак, но перед игроком нет врагов, а призрака хоть и можно убить, игрок в него не целится. И это мировой рекорд в Spelunky (сверяется со своими записями) по набору наибольшего количества денег? А часть, от которой люди в восторге, включает в себя стрельбу из дробовика в пустое пространство? Хм.
Очень немногие игры являются действительно решёнными, всегда есть чему научиться. Например, уже 33 лет люди пытаются добиться идеального скоростного прохождения первой Super Mario Bros. Но со временем планка поднимается всё выше, и чтобы преодолеть её, нужно всё больше и больше усилий. Движение вперёд состоит из рывков и открытий, дикого сочетания исследований и счастливых случайностей.

Я знаю, что существуют странные, запутанные стратегии достижения мастерства в Spelunky, для установления мировых рекордов. Я наиграл сотни часов в Spelunky и знаю её основы: бег, прыжки, кнут, бомба, смерть. Но ничего в показанном выше видео не имеет в моих глазах смысла, поэтому я закрыл их, но его странность начала меня терзать. Это нормально. Мне нужно знать, что в нём происходит.

Объяснение сбивает с толку, похоже, это какие-то манипуляции с кодом, в которых всё ещё пытаются разобраться фанаты игры. Оказывается, что в нём есть смысл. Это живое свидетельство того, как расцвело сообщество Spelunky спустя семь лет после выхода игры на Xbox 360. Их обнаружили самопровозглашённые «учёные» Spelunky. Сиквел под названием Spelunky 2 выйдет в 2019 году, но тем временем Spelunky продолжает пожинать свои плоды.

Глитч это или нет, но даже разработчики игры впечатлены фанатской приверженностью делу.

«Я не понимаю. «То, что сообществу Spelunky удалось сделать с игрой, намного превосходит то, что мы могли себе вообразить», — рассказывает дизайнер Дерек Ю в последнем эпизоде подкаста Spelunky Showlike. Исследователи уже забрались в стратосферу, и мне их отсюда не видно. По мне это уже перебор [смеётся] Это не имеет никакого смысла. И это здорово».

С лета 2016 года на сцене доминировал Kinnijup, один из богов Spelunky, снова и снова обгонявший собственные рекорды. Сцена мировых рекордов по сбору наибольшего количества денег в Spelunky безостановочно работает с 2013 года, новый рекорд ставится через каждые несколько месяцев. (Не уроните челюсть от удивления, наблюдая за тем, как он расправляется с Spelunky на AGDQ в этом году.)

Не попадись на дублировании

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

В то время отношение к дублированию был противоречивым. По словам изучающего Spelunky «учёного» ContraMuffin, в сообществе исповедовался принцип «сложи деньги в кучу и надейся на лучшее».

«Это было большим преимуществом, но мы не знали, как оно работает». «Когда-то обсуждение дублирования было табуированным», — рассказывает игрок в Spelunky d_tea.

Истинная случайность в видеоиграх проявляется очень редко, поэтому достаточно просто разобраться, как это работает. В начале этой осени всё изменилось: ContraMuffin и другие учёные начали обсуждать вопрос дублирования. Большинство разработчиков не горит желанием помогать игрокам эксплуатировать глитчи кода, поэтому выявление закономерностей ложится на плечи сообщества.

Это намекало о том, что есть какие-то конкретные действия, которые могут повлиять на общий результат. Ещё один член сообщества по имени Spef заметил нечто странное: если повесить верёвку (инструмент для быстрого перемещения по миру игры), то глитч исчезает — дубликатов больше не появляется.

И затем началось настоящее тестирование.

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

Некоторые из тестов записывались на видео, и теперь помогают проиллюстрировать постепенный рост понимания.

Это контролируемая среда, а не один из полуслучайно генерируемых уровней Spelunky. Каменный блок, кучи золота, и ничего больше. Никаких других предметов, никаких врагов. Ничто не мешает экспериментам.
(Это видео замедленно специально; ContraMuffin изучал игру кадр за кадром.)

В то время считалось, что для реализации дублирования предметов самым важным фактором является порядок их подбирания. За 24 часа удалось узнать несколько фактов и научиться воспроизводить глитч на постоянной основе, несмотря на то, что пока лежащие в его основе принципы оставались расплывчатыми.

«Сначала мы считали, что первоочерёдность заключалась в порядке рендеринга предметов, поэтому дали всему явлению название „дублирование рендеринга“». «Мы начали называть этот порядок „первоочерёдностью“», — говорит ContraMuffin.

Всё это довольно запутанно, но позвольте мне объяснить. Так что же здесь происходит? Когда вы поднимаете кучу вещей одновременно, они все исчезают. Когда вы поднимаете в Spelunky предмет, он исчезает. Когда вы поднимаете предмет, код помечает его на удаление, но удаление предмета происходит не мгновенно; на самом деле этот шаг выполняется позже, в том же кадре, который рендерит игра. Но важно то, что происходит внутри игры. Этот небольшой разрыв создаёт новые возможности.

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

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

Допустим, вы сложили в кучу четыре драгоценности. Когда вы поднимаете их, они помечаются в коде игры на удаление. Но глитч приводит к тому, что удаляется только две драгоценности, а остальные сохраняются. То есть мы получили две дополнительных драгоценности!

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

То есть мы «выжали» из четырёх драгоценностей семь.

Перерождение сообщества

Пока ContraMuffin и другие исследователи изучали феномен, сообщество фанатов уже взяло быка за рога. Благодаря лучшему пониманию дублирования рекорды значительно увеличились. Теперь вопрос был не в незначительном превышении предыдущего рекорда — их просто побивали снова и снова. Люди находили способы всё более качественного использования открытий в своих прохождениях.

В прошлом было почти не важно, куда падали деньги; важно было только то, чтобы поднять их. Открытие сильно изменило и подход игроков к игре. Если деньги упали в странное место, откуда их нельзя вытащить, то возникает проблема. Теперь их расположение имело огромную важность, ведь для дублирования нужно перетащить деньги в одну кучу. Каждый уровень превратился в головоломку.

Но это не объясняет, зачем он стреляет в пустоту из дробовика, а ведь именно из-за дробовика я и начал изучать эту тему. Это объясняет, почему в видео в начале статьи игрок постоянно толкает деньги в кучи.

Гораздо глубже. Чтобы разобраться в этом, нам нужно пойти глубже. Всё станет очень странным.

Комната, заполненная шумом

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

Учёные обнаружили два вида шума: всеобщий и локальный. ContraMuffin и Spef, обнаружившие странное влияние верёвки, провели серию тестов с шумом, надеясь снизить его величину и повысить вероятность дублирования. Помните, что верёвка снижает вероятность дублирования? Предметы с всеобщим влиянием воздействуют на вероятность дублирования во всём уровне. (Учёным даже удалось определить его количественное значение! Она создаёт всеобщий шум! Каждый тайл верёвки — это одна единица шума, а полная длина верёвки — это семь единиц шума.) Одни объекты, создающие всеобщий шум, можно уничтожить, другие можно подобрать, что по каким-то причинам устраняет создаваемый ими шум.

Игра регулярно отображает на экране перед драгоценностями определённые объекты, и приоритет она отдавала тем объектам, которые учёные классифицировали, как шум. Ещё одно открытие пролило свет на эту загадку. На совпадение это не походило.

«Поэтому я назвал эту концепцию „слоями“». «Идея о том, что некоторые предметы должны были создаваться перед определёнными объектами, но после других объектов, кажется очень похожей на концепцию слоёв в цифровом искусстве и редактировании фотографий», — рассказывает ContraMuffin.

Весь список указан в этом документе. Постепенно, наблюдая за тем, как Spelunky привязывает шум к разным предметам, учёным удалось разбить на категории то, как игра воспринимает слои.

Важнее было понять не каждый слой, а осознать само их существование.

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

Так мы совершили полный круг, позволяющий нам объяснить загадку из начала статьи: причину, по которой для достижения мирового рекорда в Spelunky необходимо бесконечно стрелять из дробовика.

В City of Gold так много денег, что критически важно максимально увеличить длительность нахождения в нём и количество дубликатов. Секретный уровень City of Gold с кучей денег — это сокровищница Spelunky. Бинты мумий добавляют кучу шума, и очень важно то, что их невозможно уничтожить или поднять. Но по уровню бегают мумии, которые после смерти оставляют вместо себя бинты. Решение, как можно догадаться — это дробовик. Там, где есть шум, возникают проблемы с глитчем дублирования.

Почему?

История тысячи пуль

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

И заметил нечто любопытное — если я стрелял в драгоценности в храме, то пули летели поверх них. «Я тестировал убийство мумий из дробовика. При таком же раскладе в шахтах [ещё один уровень Spelunky] пули при пролёте мимо драгоценностей отрисовывались под ними».

Бум, бум, бум. ContraMuffin обнаружили способ манипулирования кодом Spelunky с помощью создания пуль в мире. Эту технику назвали «переключение вставок», с её помощью можно менять порядок приоритета отображения предметов, а значит и их дублирования. Благодаря этому можно было менять слои видимости игры, как в Photoshop. Она заставляет слои перемещаться вниз и вверх.

«Мы можем выбирать, какие предметы будут дублироваться, а какие использоваться в качестве шума», — говорит он.

(Вот хороший пост Twitter, в котором объясняются технические подробности. Чтобы переключение вставок сработало, необходимо создать 1000 объектов, а при стрельбе из дробовика создаются новые объекты.

«Теоретически можно 1000 раз взмахнуть кнутом, и это сработает. «Подойдут 1000 спаунов любых предметов», — рассказывает ContraMuffin. Но именно поэтому для этого предпочитают дробовики — они создают множество пуль и клубов дыма». Разумеется, никто этого не проверял, потому что есть более интересные занятия, чем стоять в игре и 1000 раз щёлкать кнутом.

«То есть когда пули находятся перед пушкой, то всё создаваемое на уровне имеет меньший приоритет, а когда пули оказываются под пушкой, то всё создаётся с наивысшим приоритетом». «По сути, мы хотим, чтобы драгоценности имели больший приоритет дублирования, чем бинты мумий», — рассказывает игрок в Spelunky d_tea, втянувший меня в игру.

Вуаля.

Он перемещает слои Spelunky, и повышает приоритет дублируемых предметов, обеспечивая их максимальную стоимость. Вот почему игрок постоянно стреляет из дробовика. Загадка решена.

Постепенно с течением дней, месяцев и лет значения становились больше. Первый рекорд прохождения Spelunky на максимальное количество очков был установлен 2 февраля 2013 года игроком vardulon, он набрал $2 126 925. За последние несколько месяцев на сцене произошли взрывные изменения, и хотя бог Spelunky Kinnijup поставил большинство новых рекордов — недавно он достиг $5 534 700, другие игроки почувствовали новые возможности, и эта часть сообщества стала самой активной и конкурентной. Но это было медленное, методичное движение игроков, раз за разом улучшавших идеальный результат.

Пока я писал эту статью, мировой рекорд перешёл от d_tea к Kinnijup, и я не удивлюсь, если его снова побьют.

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

То, что делают такие игроки, как d_tea и Kinnijup, потрясающе, но всё это было бы невозможно без трудного, монотонного труда ContraMuffin, Spef и бесчисленного количества других участников подобных сообществ.

Честно говоря, когда я пересматриваю это видео, у меня кружится голова. Всё это напомнило мне об открытии 2016 года — знаменитом «половинном нажатии на A» в Super Mario 64, когда мозги множества людей (в том числе и мои) буквально взорвались от подробного объяснения нюансов высокоуровневой игры. Super Mario 64 по-прежнему остаётся нерешённой. Но людей взбесила концепция «половинных нажатий на A» ещё и потому, что они не осознают, какой объём исследовательской работы необходим для понимания их любимых игр.

Но игры — это странные создания, это идеи, склеенные друг с другом изолентой. Людям привычно увлекаться «очередной крутой игрой», ведь она такая восхитительная и новая. Понимание того, что в новых играх является особым и интересным — это только самое начало пути. Даже после титров в конце они могут многому нас научить, и тогда за работу берутся люди наподобие учёных Spelunky.

Теги
Показать больше

Похожие статьи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»
Закрыть