Hydra Slayer: убиваем время и числа
Примечание: где-то около полудня я случайно опубликовал незаконченную версию этой статьи. Затем я попытался убрать её в черновики, но, как оказалось позже, убрал не её, а ненамеренно созданную её копию. В настоящий момент статья закончена, недоделанная версия спрятана. Простите за путаницу и читайте на здоровье.
24 марта сего года произошло событие, которого мы все так давно ждали: в сервисе цифровой дистрибуции компьютерных игр Steam вышел очередной шедевр польского игростроя — Hydra Slayer. И хотя шедевр этот местами кривоват, да и ждали его далеко не все, а скорее три с половиной человека, всё же я полагаю его достойным своей статьи на Хабре. «Постойте-ка, любезный автор, — воскликнет сейчас человек по другую сторону монитора от меня, —, а не спутали ли вы часом столь уважаемый сайт, как Хабрахабр, с каким-нибудь игровым порталом, где юноши от четырнадцати лет и младше делятся своими успехами в Майнкрафте, обильно используя ненормативную лексику?». Нет, не спутал. Этому материалу суждено особое место в хабе «Математика».
Начну издалека
Жил да был хороший человек, скрывающийся под ником Zeno. Готов предположить, что в интернете и помимо него существует непустое множество хороших людей, носящих этот ник, однако едва ли кто-то из них совершил такое количество славных деяний. А надо сказать, что этот Zeno — тот ещё затейник. То он напишет игру про человечка, странствующего по плоскости Лобачевского. То возьмётся за странноватый, но амбициозный проект Necklace of the Eye, позволяющий, в теории, относительно малой кровью прикрутить графику к любому рогалику —, а рогалики (roguelike), напомню вам, это сорт игр, где «графика» традиционно выглядит как-то так:
Также в текущий момент он участвует в проекте ADoM Resurrection, призванном, как можно догадаться по названию, вдохнуть новую жизнь в культовую в определённых кругах игру Ancient Domains of Mystery. Слыхали? Как нет? Ладно, забудьте. Причина, по которой я питаю к этому человеку столь нежную симпатию, ещё не была перечислена. Собственно, мы как раз к ней переходим.
Hydra Slayer: что это такое и как этим наслаждаться
Искусство умерщвления гидр имеет долгую историю. Первые путешественники, имевшие несчастье повстречаться с этими тварями, были попросту неспособны причинить им какой-либо вред. Стоило им отрубить гидре голову, как на её месте вырастали две новые, или даже больше. Затем появились волшебные мечи, позволяющие отрубить несколько голов за раз так, что на их месте вырастало лишь константное (не зависящее от количества отрубленных голов) число новых. Если же одним метким ударом удавалось отрубить все головы сразу, гидра немедленно издыхала. Была у этих мечей, однако, неприятная особенность: меч, зачарованный, например, на срубание пяти голов, не мог нанести ни малейшего вреда гидре с четырьмя головами и менее. Меч же, предназначенный для отрубания ровно одной головы, не всегда мог перебороть регенеративные способности гидры — это зависело от типа зачарования и от разновидности и силы монстра. Удар меча, покрытого волшебным пламенем, не давал морозным гидрам севера отрастить ни одной новой головы, однако обычные болотные гидры вполне могли вырастить одну-две, а у огненных гидр, благодаря сродству с элементом меча, каждая срубленная голова превращалась в две новых.
Вот вам совершенно бытовой пример. Предположим, выходя утром из дома, вы внезапно столкнулись с девятиголовой болотной гидрой.
К сожалению собираясь на работу, вы не предусмотрели такую ситуацию, и у вас при себе лишь огненный короткий меч и серебряная коса. Меч срубает четыре головы (и, соответственно, способен убить четырёхголовую гидру одним махом), однако у болотной гидры большего размера после такого удара две головы отрастут обратно. Косой можно скосить семь голов, но обитатели болот невосприимчивы к серебру, и после удара серебряным оружием у этой гидры вырастут сразу десять новых голов. Как победить в этом бою с наименьшими потерями и не опоздать на работу?
Сначала наносим удар мечом. 9 — 4 + 2 = 7. Затем добиваем косой. 7 — 7 = 0
А теперь перейдём к сути
Hydra Slayer — это симулятор пошаговой зачистки логова гидр от его склизких обитателей. Формально можно причислить его к жанру roguelike — в нём присутствуют аскетичная графика, блуждания по процедурно-генерируемым подземельям, перманентная смерть и прочие радости. Когда-то он выглядел примерно так:
—, но после интеграции с вышеупомянутым Necklace of the Eye появилось множество других графических режимов (хотя, необходимо признать, по своим красотам они по-прежнему слегка не дотягивают до Crysis).
Однако не будем говорить «фу», ибо не в графике заключается вся мякотка этой игры, а в беспощадном геноциде обитателей логова с помощью широчайшего арсенала матемагического оружия, оставленного нашими менее удачливыми предшественниками. На холодном каменном полу пещер ждут, пока мы их подберём:
- Клинки, о которых мы говорили ранее.
- Булавы, которыми можно оглушать определённое количество голов. Оглушённые головы очнутся через какое-то время, но в ближайшие несколько ходов после удара они не смогут кусать игрока.
- Топоры, которые отрубают головы подобно клинкам, но после удара которых вновь выросшие головы (если таковые будут) оказываются оглушёнными.
- Делители, без которых проблематично убийство по-настоящему большой гидры. За один удар они способны сократить количество голов в два или более раз, в зависимости от силы делителя, но бессильны, если количество голов не делится нацело на эту силу.
- Извлекатели, с помощью которых можно извлечь из гидры потроха квадратный корень. Или даже более чем квадратный.
- Разложители, логарифматоры, клинки Времени, Стрижающие мечи и другая экзотика ожидают самых упорных на глубинных ярусах логова.
Сжимая в двух (спойлер: или более) руках все эти замечательные вещи, из которых я перечислил меньше трети, наш персонаж будет спускаться всё ниже и ниже, где средь подземного мрака его будут поджидать:
- Огненные, ледяные, золотые, серебряные, хаотические и так далее гидры. Всего в игре есть десять основных элементов, каждому из которых соответствуют как оружие, так и враги. Гидры каждого типа практически неуязвимы для оружия того же элемента, но слабы против некоторого другого.
- Гидры зловредные, умеющие по собственному желанию отращивать дополнительную голову, или же наоборот — волевым усилием терять несколько голов. Причём теряют они головы с умом (чудесный оксюморон, не правда ли?). Если у героя в руках биссектор, такая гидра в схватке с ним будет поддерживать количество своих голов нечётным. Если извлекатель — даже не надейтесь, что сможете поймать момент, когда количество её голов будет точным квадратом.
- Гидры кровавые, покрытые запекшейся кровью своих несостоявшихся убийц, из-за чего не виден их тип и сколько голов они отрастят при ударе определённым элементом. Всё это придётся определять опытным путём.
- Гидры древние, местные боссы. Их всего две, но они отличаются особой свирепостью и шестизначным количеством голов. Удачи с вашим мечом +5.
- Пятидесятиголовые титаны — Гекатонхейры, а также их двухголовые младшие братья — эттины. Они не родичи гидрам и не умеют отращивать новые головы взамен утерянных, зато с удовольствием огреют вас найденным где-то в логове оружием. Это больно. Очень.
Я мог бы упомянуть ещё про свитки, порошки и зелья, которые способны помочь игроку, улучшить его оружие, превращать гидр в грибы, а грибы — в зомби… Про пять играбельных рас, каждая из которых требует радикально иной стратегии, нежели другая. Про топологию уровней — некоторые из них замкнуты в цилиндры, листы Мёбиуса и бутылки Клейна. Про возможность выбора геометрии — фигурка вашего героя может бегать по квадратикам или шестиугольникам, ходить или не ходить по диагонали, а также есть ещё один секретный режим, который я нашёл, глядя в исходный код (кстати, он распространяется вместе с игрой). Мог бы, но не стану :) Скажу лишь одно: при попытке представить всё многообразие ситуаций, с которыми можно столкнуться в этой игре, в голове происходит комбинаторный взрыв.
И всё-таки, зачем это на Хабре?
Задачка с девятиголовой гидрой, приведённая выше, способна поставить в тупик разве что первоклассника. Однако в игре есть множество вещей, которые покажутся интересными даже прожжённому любителю математики вроде меня или многих моих читателей. Например, Золотой секач. Он делит количество голов гидры приблизительно в пропорции золотого сечения. Как конкретно это происходит? Число голов разлагается в сумму различных чисел из последовательности Фибоначчи. Затем для каждого из этих чисел берётся предшествующее ему в последовательности. После этого сумма складывается обратно. Работает он, однако, только в том случае, если существует разложение, в котором нет единиц. Если в каждом возможном разложении присутствует единица, Золотой секач не окажет на гидру ни малейшего воздействия.
Если прочесть над этим оружием свиток Трансмутации, Золотой секач превратится в Серебряный. Принцип его действия основан на том же разложении в сумму, но в отличие от Золотого секача, он для каждого слагаемого берёт не предшествующее, а пред-предшествующее, и работает только если в разложении единица есть.
Если вы, мой дорогой читатель, человек с широкой математической эрудицией, вы наверняка уже вспомнили про Фибоначчиеву систему счисления. В ней каждое натуральное число представляется конечной последовательностью нулей и единиц, в которой не встречаются две единицы подряд, а позиции, на которых стоят единицы, соответствуют позициям тех членов последовательности Фибоначчи, которые нужно сложить, чтобы получить представляемое число. Доказано, что такое представление единственно, как и в «нормальных» позиционных системах счисления.
В Фибоначчиевой системе счисления становится гораздо понятнее, что делают секачи. Если запись числа заканчивается на нуль, то Золотой секач «отсекает» этот нуль. Если запись заканчивается на »01», то Серебряный секач «отсекает» эти две цифры. Можно подсчитать, что Золотой секач сработает примерно для 61,8% гидр, уменьшая количество их голов приблизительно в 1,6 раз. Серебряный секач работает для оставшихся 38,2%, но прореживает их головы уже где-то в 2,6 раза. Если зачаровать секачи с помощью свитка Большой Дубины, они начнут действовать итерированно, нанося несколько ударов за один взмах. Соответственно, Золотой секач сможет отрезать несколько нулей, а Серебряный — несколько повторений последовательности »01». Таким образом, хорошо зачарованный Серебряный секач сможет одним ударом убивать гидр с количествами голов 1, 4, 12, 33, 88… — т. е. 1, 101, 10101, 1010101 и так далее в Фибоначчиевой системе счисления. Это делает Серебряный секач весьма эффективным оружием в определённых стратегиях.
Здесь, однако, я вынужден прерваться. Я мог бы побеседовать с вами ещё о многих увлекательных вещах, вроде того, например, как эффективно лечиться с помощью трезубца и Стрижающего меча, или как воскреснуть из мёртвых, играя за Титана и неся с собой два одинаковых щита… Однако буду честен с собой: такую статью вряд ли кто-то осилил бы до конца.
Кстати, уже почти конец
Напоследок хочу сказать то, с чего, возможно, следовало бы начать. Несмотря на то, что игра недавно вышла в Steam, её бесплатная версия по-прежнему доступна для скачивания здесь. В ней чуть больше ошибок и не хватает малой толики контента, но в целом user experience примерно тот же. Это очень специфичная, полная непуганных багов, обладающая своеобразной графикой и кривоватым интерфейсом игра. Я надеюсь, вы её полюбите.