[Перевод] Как игроки разрывают ткань реальности Spelunky с помощью дробовиков
«Бум, бум, бум», стреляет дробовик, целясь… похоже, что в никуда? На земле лежит плазмаган, а справа летит призрак, но перед игроком нет врагов, а призрака хоть и можно убить, игрок в него не целится. И это мировой рекорд в Spelunky (сверяется со своими записями) по набору наибольшего количества денег? А часть, от которой люди в восторге, включает в себя стрельбу из дробовика в пустое пространство? Хм.
Очень немногие игры являются действительно решёнными, всегда есть чему научиться. Например, уже 33 лет люди пытаются добиться идеального скоростного прохождения первой Super Mario Bros. Но со временем планка поднимается всё выше, и чтобы преодолеть её, нужно всё больше и больше усилий. Движение вперёд состоит из рывков и открытий, дикого сочетания исследований и счастливых случайностей.
Я наиграл сотни часов в Spelunky и знаю её основы: бег, прыжки, кнут, бомба, смерть. Я знаю, что существуют странные, запутанные стратегии достижения мастерства в Spelunky, для установления мировых рекордов. Это нормально. Но ничего в показанном выше видео не имеет в моих глазах смысла, поэтому я закрыл их, но его странность начала меня терзать. Мне нужно знать, что в нём происходит.
Оказывается, что в нём есть смысл. Объяснение сбивает с толку, похоже, это какие-то манипуляции с кодом, в которых всё ещё пытаются разобраться фанаты игры. Их обнаружили самопровозглашённые «учёные» Spelunky. Это живое свидетельство того, как расцвело сообщество Spelunky спустя семь лет после выхода игры на Xbox 360. Сиквел под названием Spelunky 2 выйдет в 2019 году, но тем временем Spelunky продолжает пожинать свои плоды.
Глитч это или нет, но даже разработчики игры впечатлены фанатской приверженностью делу.
«То, что сообществу Spelunky удалось сделать с игрой, намного превосходит то, что мы могли себе вообразить», — рассказывает дизайнер Дерек Ю в последнем эпизоде подкаста Spelunky Showlike. «Я не понимаю. По мне это уже перебор [смеётся] Это не имеет никакого смысла. Исследователи уже забрались в стратосферу, и мне их отсюда не видно. И это здорово».
Сцена мировых рекордов по сбору наибольшего количества денег в Spelunky безостановочно работает с 2013 года, новый рекорд ставится через каждые несколько месяцев. С лета 2016 года на сцене доминировал Kinnijup, один из богов Spelunky, снова и снова обгонявший собственные рекорды. (Не уроните челюсть от удивления, наблюдая за тем, как он расправляется с Spelunky на AGDQ в этом году.)
Не попадись на дублировании
Несколько лет назад сообщество обнаружило в Spelunky глитч с дублированием. Если положить драгоценности друг на друга и собрать их одновременно, то некоторые из них будут взяты дважды. Это особенно важно для прохождений на максимальный счёт (то есть деньги); глитч означает, что теоретически можно собрать больше денег, чем игра создала в мире, и открывает возможности новых мировых рекордов. Но глитч пока ещё не понят полностью, и его сложно воспроизвести. Всё, что знало сообщество — если ты соберёшь деньги в кучу, они иногда дублируются. В другие разы этого не происходит.
По словам изучающего Spelunky «учёного» ContraMuffin, в сообществе исповедовался принцип «сложи деньги в кучу и надейся на лучшее». В то время отношение к дублированию был противоречивым.
«Когда-то обсуждение дублирования было табуированным», — рассказывает игрок в Spelunky d_tea. «Это было большим преимуществом, но мы не знали, как оно работает».
В начале этой осени всё изменилось: ContraMuffin и другие учёные начали обсуждать вопрос дублирования. Истинная случайность в видеоиграх проявляется очень редко, поэтому достаточно просто разобраться, как это работает. Большинство разработчиков не горит желанием помогать игрокам эксплуатировать глитчи кода, поэтому выявление закономерностей ложится на плечи сообщества.
Ещё один член сообщества по имени Spef заметил нечто странное: если повесить верёвку (инструмент для быстрого перемещения по миру игры), то глитч исчезает — дубликатов больше не появляется. Это намекало о том, что есть какие-то конкретные действия, которые могут повлиять на общий результат.
И затем началось настоящее тестирование.
«Мы приняли меры для того, чтобы наши тесты были неизменными и воспроизводимыми, даже несмотря на то, что мы пока не поняли, как делаются дубликаты», — рассказывает ContraMuffin. «Все мы имеем склонность к наукам, поэтому хорошо освоили научный метод. Совершая повторные опыты, мы быстро осознали, что дублирование — это неизменный и воспроизводимый процесс. Поэтому у него был какой-то паттерн, который нам пока не удалось найти».
Некоторые из тестов записывались на видео, и теперь помогают проиллюстрировать постепенный рост понимания.
Это контролируемая среда, а не один из полуслучайно генерируемых уровней Spelunky. Каменный блок, кучи золота, и ничего больше. Никаких других предметов, никаких врагов. Ничто не мешает экспериментам.
(Это видео замедленно специально; ContraMuffin изучал игру кадр за кадром.)
За 24 часа удалось узнать несколько фактов и научиться воспроизводить глитч на постоянной основе, несмотря на то, что пока лежащие в его основе принципы оставались расплывчатыми. В то время считалось, что для реализации дублирования предметов самым важным фактором является порядок их подбирания.
«Мы начали называть этот порядок «первоочерёдностью», — говорит ContraMuffin. «Сначала мы считали, что первоочерёдность заключалась в порядке рендеринга предметов, поэтому дали всему явлению название «дублирование рендеринга».
Так что же здесь происходит? Всё это довольно запутанно, но позвольте мне объяснить. Когда вы поднимаете в Spelunky предмет, он исчезает. Когда вы поднимаете кучу вещей одновременно, они все исчезают. Но важно то, что происходит внутри игры. Когда вы поднимаете предмет, код помечает его на удаление, но удаление предмета происходит не мгновенно; на самом деле этот шаг выполняется позже, в том же кадре, который рендерит игра. Этот небольшой разрыв создаёт новые возможности.
При касании предмета он добавляется в список предметов, которые игра планирует уничтожить. Игра подразумевает, что игроки касаются предмета, получают соответствующее вознаграждение, предмет помечается на удаление и исчезает из игры. Должно казаться, что все эти действия происходят одновременно, но если замедлить выполнение, то окажется, что это не так.
Если положить предметы в кучу, то игра запутается, какие из них нужно удалять.
Допустим, вы сложили в кучу четыре драгоценности. Когда вы поднимаете их, они помечаются в коде игры на удаление. Но глитч приводит к тому, что удаляется только две драгоценности, а остальные сохраняются. То есть мы получили две дополнительных драгоценности!
Важно то, что глитч повторяется. Эти две «бонусные» драгоценности теперь помечаются на удаление, но снова срабатывает глитч и уничтожается только одна. То есть мы получили ещё одну лишнюю драгоценность. На этом этапе игра обрабатывает последнюю драгоценность, помечает её на удаление, и она наконец-то исчезает.
То есть мы «выжали» из четырёх драгоценностей семь.
Перерождение сообщества
Пока ContraMuffin и другие исследователи изучали феномен, сообщество фанатов уже взяло быка за рога. Благодаря лучшему пониманию дублирования рекорды значительно увеличились. Теперь вопрос был не в незначительном превышении предыдущего рекорда — их просто побивали снова и снова. Люди находили способы всё более качественного использования открытий в своих прохождениях.
Открытие сильно изменило и подход игроков к игре. В прошлом было почти не важно, куда падали деньги; важно было только то, чтобы поднять их. Теперь их расположение имело огромную важность, ведь для дублирования нужно перетащить деньги в одну кучу. Если деньги упали в странное место, откуда их нельзя вытащить, то возникает проблема. Каждый уровень превратился в головоломку.
Это объясняет, почему в видео в начале статьи игрок постоянно толкает деньги в кучи. Но это не объясняет, зачем он стреляет в пустоту из дробовика, а ведь именно из-за дробовика я и начал изучать эту тему.
Чтобы разобраться в этом, нам нужно пойти глубже. Гораздо глубже. Всё станет очень странным.
Комната, заполненная шумом
После уймы прогонов тестирования обнаружились и другие важные аспекты. Существование верёвки не препятствует дублированию, но слегка снижает его величину. Устранение верёвки позволяло глитчу дублирования обработать каждую драгоценность в куче. К тому же дело было не только в верёвках! Присутствие некоторых других вещей тоже влияло на дублирование, в то время как другие предметы вообще никак на него не воздействовали. Двое других учёных Spelunky, Dan и samcv, назвали этот неожиданный и странный эффект «шумом».
ContraMuffin и Spef, обнаружившие странное влияние верёвки, провели серию тестов с шумом, надеясь снизить его величину и повысить вероятность дублирования. Учёные обнаружили два вида шума: всеобщий и локальный. Предметы с всеобщим влиянием воздействуют на вероятность дублирования во всём уровне. Помните, что верёвка снижает вероятность дублирования? Она создаёт всеобщий шум! (Учёным даже удалось определить его количественное значение! Каждый тайл верёвки — это одна единица шума, а полная длина верёвки — это семь единиц шума.) Одни объекты, создающие всеобщий шум, можно уничтожить, другие можно подобрать, что по каким-то причинам устраняет создаваемый ими шум.
Ещё одно открытие пролило свет на эту загадку. Игра регулярно отображает на экране перед драгоценностями определённые объекты, и приоритет она отдавала тем объектам, которые учёные классифицировали, как шум. На совпадение это не походило.
«Идея о том, что некоторые предметы должны были создаваться перед определёнными объектами, но после других объектов, кажется очень похожей на концепцию слоёв в цифровом искусстве и редактировании фотографий», — рассказывает ContraMuffin. «Поэтому я назвал эту концепцию «слоями».
Постепенно, наблюдая за тем, как Spelunky привязывает шум к разным предметам, учёным удалось разбить на категории то, как игра воспринимает слои. Весь список указан в этом документе.
Важнее было понять не каждый слой, а осознать само их существование.
В Photoshop можно по желанию перемещать различные слои изображения. В Spelunky слои предопределены программистом, создавшим структуру кода игры. Но что, если бы существовал способ изменения логики игры и её слоёв из самой игры?
Так мы совершили полный круг, позволяющий нам объяснить загадку из начала статьи: причину, по которой для достижения мирового рекорда в Spelunky необходимо бесконечно стрелять из дробовика.
Секретный уровень City of Gold с кучей денег — это сокровищница Spelunky. В City of Gold так много денег, что критически важно максимально увеличить длительность нахождения в нём и количество дубликатов. Но по уровню бегают мумии, которые после смерти оставляют вместо себя бинты. Бинты мумий добавляют кучу шума, и очень важно то, что их невозможно уничтожить или поднять. Там, где есть шум, возникают проблемы с глитчем дублирования. Решение, как можно догадаться — это дробовик.
Почему?
История тысячи пуль
Однажды октябрьским вечером ContraMuffin традиционно тестировал убийство мумий и смотрел, что можно узнать о шуме, вызываемом бинтами мумий.
«Я тестировал убийство мумий из дробовика. И заметил нечто любопытное — если я стрелял в драгоценности в храме, то пули летели поверх них. При таком же раскладе в шахтах [ещё один уровень Spelunky] пули при пролёте мимо драгоценностей отрисовывались под ними».
ContraMuffin обнаружили способ манипулирования кодом Spelunky с помощью создания пуль в мире. Бум, бум, бум. Благодаря этому можно было менять слои видимости игры, как в Photoshop. Эту технику назвали «переключение вставок», с её помощью можно менять порядок приоритета отображения предметов, а значит и их дублирования. Она заставляет слои перемещаться вниз и вверх.
«Мы можем выбирать, какие предметы будут дублироваться, а какие использоваться в качестве шума», — говорит он.
Чтобы переключение вставок сработало, необходимо создать 1000 объектов, а при стрельбе из дробовика создаются новые объекты. (Вот хороший пост Twitter, в котором объясняются технические подробности.
«Подойдут 1000 спаунов любых предметов», — рассказывает ContraMuffin. «Теоретически можно 1000 раз взмахнуть кнутом, и это сработает. Разумеется, никто этого не проверял, потому что есть более интересные занятия, чем стоять в игре и 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, когда мозги множества людей (в том числе и мои) буквально взорвались от подробного объяснения нюансов высокоуровневой игры. Честно говоря, когда я пересматриваю это видео, у меня кружится голова. Но людей взбесила концепция «половинных нажатий на A» ещё и потому, что они не осознают, какой объём исследовательской работы необходим для понимания их любимых игр. Super Mario 64 по-прежнему остаётся нерешённой.
Людям привычно увлекаться «очередной крутой игрой», ведь она такая восхитительная и новая. Но игры — это странные создания, это идеи, склеенные друг с другом изолентой. Даже после титров в конце они могут многому нас научить, и тогда за работу берутся люди наподобие учёных Spelunky. Понимание того, что в новых играх является особым и интересным — это только самое начало пути.