Обзор игры Exapunks, программируем наноботов
 Публичный пост
9 ноября 2020     438   

— People are choosing to believe the guide even when it's obviously wrong

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

Взлом представляет собой программирование наноботов (EXAs, EXecution Agents) которые перемещаются по сети, читают, пишут и переносят данные, создают и убивают других ботов.

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

Дрочка на циферки

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

Боты программируются на низкоуровневом языке.Есть прямые команды для выполнения боту (LINK 800, COPY 1 X, KILL, HALT). У бота имеется два регистра для чтения и записи и еще два для доступа к более продвинутым фичам. Один для работы с файлами и один для общения с другими ботами. Боты могут взаимодействовать с окружением, работать с файлами и внешними регистрами, создавать клонов и убивать других ботов. Есть набор примитивных математических операций. Боты могут общаться друг с другом через специальный регистр. Логическое ветвление осуществляется через прямые переходы к участкам кода (привет, GOTO, давно не виделись). В целом это все что умеют боты. Функционал скудный, но его достаточно, чтобы достичь поставленных целей, надо просто быть изобретательнее. Готовое решение можно экспортировать в гифку типа такой.

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

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

Когда я только начал играть, я ахуевал от того как можно сделать решение таким быстрым. Но постепенно я придумал всякие паттерны оптимизации, и даже дал им имена: «Убийца», «Обратный отсчет», «Сдвинутые параллельные циклы». Позже я заглянул на реддит по этой игре и обнаружил там похожие термины. Был приятно удивлен что нашел все основные методы оптимизации.

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

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

Добавляйтесь в друзья в стиме, будем меряться циферками.

17 комментариев 👇
Сергей Игнашев, Леттеринг | Техническое писательство 9 ноября 2020

Это игра, чтобы выгорать в свободное от выгорания время?

  Развернуть 1 комментарий

Ты не можешь выгореть на работе если уже выгорел дома!

  Развернуть 1 комментарий

@Sio, для тех, кто выгорел те же разработчики недавно выпустили Eliza)

  Развернуть 1 комментарий
  Развернуть 1 комментарий

@r_levkovych, Да, именно она

  Развернуть 1 комментарий
Anna, Программист 9 ноября 2020

Могу посоветовать TIS-100. Игра от тех же разработчиков про многопоточный ассемблер. Ну и можно Shenzhen/IO еще вдогонку.

  Развернуть 1 комментарий

Могу также посоветовать Screeps. RTS для программистов)

  Развернуть 1 комментарий
Сергей Нехайчик, Создаю машинный переводчик 9 ноября 2020

Спасибо. Заинтересовало. Люблю такие игры :)

  Развернуть 1 комментарий
Rishad Mustafaev, Software Engineer Lvl.2 (ну так написано в HR-системе!) 9 ноября 2020

Дико рекомендую Opus Magnum. Игрушка от создателей Exopunks.
Только стилистика другая и ооочень красивые арты!

  Развернуть 1 комментарий
Alex Mitrofanov, Работаю в области коммерческой недвижимости 10 ноября 2020

Zachtronics делают одни из самых злых игр. Проще всего вкатиться в opus magnum, а потом по желанию идти по всему листу релизов от них, везде будет дроч на цифры, оптимизация, 6 часов чтоб придумать альтернативное решение итд итп.
А там уж кому что интереснее с точки зрения атмосферы - псевдо ассемблер, псевдо кодинг железа или псевдо алхимия

  Развернуть 1 комментарий

@Alexey_Mitrofanov, Infinifactory мне у них показалась самой простой и весёлой.

  Развернуть 1 комментарий

@dottedmag, кат-сцены в infinifactory — это нечто! Но после TIS-100 и Shenzhen IO она показалась мне самой мозголомной. X_X

  Развернуть 1 комментарий

@Yngvarr, В TIS-100 и Shenzhen I/O вечно проблема упихать решение в ограничения. А в Infinifactory всегда можно брутфорснуть:

(когда-нибудь я упорюсь и сделаю решение, которое уничтожает минимум китового мяса).

  Развернуть 1 комментарий
Dmitry Kochkin, Engineering Manager 9 ноября 2020

Ну и в рекомендации - Human Resource Machine, Seven Billion Humans, SpaceChem

  Развернуть 1 комментарий
Dmitry Kochkin, Engineering Manager 9 ноября 2020

Вообще видимо пора из фронтендеров перейти на C++/Rust и жизнь наладится

  Развернуть 1 комментарий
Георгий Широков, Инженер-конструктор 9 ноября 2020

Звучит интересно! Люблю такие игры про программирование. Играл в TIS-100, Human resource machine, robozzle, Hacked (там тоже можно внутри игры программировать свои игры).

  Развернуть 1 комментарий
Roman Levkovych, Junior Software Developer 10 ноября 2020

блин. вот почитал пост, и купил shenzhen i/o. Теперь еще раз выгорать придется

  Развернуть 1 комментарий

😎

Автор поста открыл его для большого интернета, но комментирование и движухи доступны только участникам Клуба

Что вообще здесь происходит?


Войти  или  Вступить в Клуб