Как NetHack переехал на Lua и C99 спустя тридцать лет

05 May, 2026

Знаете, есть проекты, которые кажутся вечными. Когда я только начинал кодить, NetHack уже был легендой. Это та самая игра, где можно умереть от того, что вы съели несвежий труп кобольда или надели проклятую обувь. Недавно вышла версия 5.0.0, и это не просто очередной патч с новыми монстрами. Разработчики залезли под капот «древнего монстра» и основательно перебрали движок, который помнит еще эпоху динозавров и мейнфреймов.

Что вообще происходит с NetHack

Для тех, кто пропустил последние тридцать лет: NetHack — это прародитель жанра roguelike. Текстовая графика, процедурная генерация уровней и такая глубина механик, что современные RPG стыдливо курят в сторонке. Но с точки зрения кода это всегда был слоеный пирог из костылей, макросов и специфичных для восьмидесятых годов решений.

Выход версии 5.0.0 — событие монументальное. Команда наконец-то избавилась от части технического долга, который тянулся за ними десятилетиями. Если вы когда-нибудь пробовали собрать старый NetHack под современную систему, вы понимаете мою боль. Теперь всё стало немного человечнее.

Прощай Yacc и Lex, привет Lua

Самое интересное изменение в архитектуре — это отказ от старых инструментов генерации парсеров. Раньше уровни подземелий, описание квестов и структура мира обрабатывались с помощью связки yacc и lex. Это стандартные инструменты для разработки компиляторов, но в контексте игры они делали процесс сборки неоправданно сложным.

В версии 5.0.0 разработчики выкинули старый «level compiler» и заменили его на скрипты Lua. Теперь игра подгружает описания уровней в рантайме. Для обычного игрока это значит меньше багов при генерации, а для разработчиков и создателей модов — возможность менять логику подземелий без пересборки всего бинарника. Это огромный шаг в сторону расширяемости, о которой раньше можно было только мечтать.

Сборка на кофемолке и C99

Код NetHack всегда славился тем, что его можно запустить на чем угодно: от PDP-11 до тостера. В новой версии команда официально перешла на стандарт C99. Казалось бы, 2024 год на дворе, какой C99? Но для проекта такого возраста это серьезный апгрейд.

Кстати, о портабильности. В 5.0.0 завезли полноценную поддержку кросс-компиляции. Теперь можно спокойно собирать игру на мощном Linux-сервере для запуска на каком-нибудь экзотическом железе вроде Amiga или старых Mac на PowerPC. В списке поддерживаемых платформ до сих пор значатся MS-DOS и OpenVMS. Это вызывает искреннее уважение — разработчики не бросают свою аудиторию, даже если та сидит на железе тридцатилетней давности.

Что изменилось для игрока

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

  • Появилась автоматическая аннотация для уровня с Вибрирующим квадратом (vibrating square). Как только вы его найдете или откроете карту магией, игра сама пометит это место как «путь к Святилищу Молоха».
  • Как только вы найдете само Святилище, пометка исчезнет.

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

Как потрогать это чудо

Если решите собрать игру из исходников, будьте готовы к олдскульному подходу. В репозитории лежит файл Files — это буквально список всех файлов, которые должны быть в папках. Разработчики настоятельно рекомендуют сверяться с ним вручную.

Процесс выглядит примерно так:

  1. Распаковываете исходники.
  2. Идете в sys/unix/Install.unx (или другую папку под вашу ОС) и читаете инструкции.
  3. Настраиваете Makefile под свои нужды.

По умолчанию конфигурация заточена под Solaris/SunOS, что еще раз напоминает нам о корнях проекта. Но на современных Ubuntu или macOS всё собирается довольно бодро, особенно с учетом перехода на C99.

Кому это нужно в 2026 году

Я думаю, NetHack 5.0.0 стоит изучить двум категориям людей. Во-первых, геймдизайнерам. Это учебник по тому, как создавать сложные системы из простых символов. Во-вторых, системным программистам на Си. Посмотреть, как живет проект с такой историей, как он адаптируется под современные реалии и при этом сохраняет обратную совместимость с AmigaOS — это бесценный опыт.

Проект живой, разработчики активно принимают баг-репорты и даже патчи по почте (да, nethack-bugs (at) nethack.org всё еще работает). Это не просто игра, это цифровой памятник, который продолжает расти.

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