Интервью с лидерами отрасли

Gore: Минималистичный порт игрового движка DOOM на языке Go

Интервью с лидерами отрасли
Show HN: Gore – A Doom Engine Port in Go

Обзор проекта Gore — адаптации легендарного игрового движка DOOM, реализованной на языке программирования Go с минимальными зависимостями и высокой портируемостью. Раскрытие особенностей, возможностей и перспектив данного проекта.

Игровой движок DOOM занимает уникальное место в истории компьютерных игр и программирования. Его архитектура, возможности и влияние на индустрию остаются непреходящими. В последние годы на платформе Go появился интересный проект под названием Gore — минималистичный порт движка DOOM, выполненный полностью на Go, что открывает новые горизонты в области кроссплатформенной реализации классических игр. Gore — это не просто конверсия кода, а попытка сохранить дух оригинала и при этом максимально адаптировать его под современные стандарты и возможности языка Go. Изначально Doomgeneric является чистым C-реализацией движка DOOM, а Gore представляет собой транспиляцию исходников doomgeneric на Go с последующей ручной доработкой для повышения удобства и безопасности.

Создатель проекта использовал инструменты автоматического преобразования, а затем рефакторил весь код в стиле идиоматического Go, избавляясь от избыточных низкоуровневых манипуляций с указателями. Благодаря этому появилась возможность использовать сборщик мусора, устраняя традиционные проблемы с переполнением буфера и ошибками управления памятью, которые свойственны языку C. Особенностью проекта Gore является его платформенная независимость. Его можно запускать на любой системе с установленным Go, будь то Linux, Windows, macOS или устройства с ARM-архитектурой, включая Raspberry Pi. Данная кроссплатформенность даёт возможность разработчикам и энтузиастам легко портировать классическую игру на новые устройства без необходимости писать низкоуровневый код для каждой ОС.

Это стало возможным благодаря отсутствию зависимости от CGo и минимальному набору сторонних библиотек — в проекте задействован лишь стандартный набор инструментов и пакетов Go. Поддержка множества версий DOOM — ещё одна сильная сторона Gore. Он может работать с разнообразными оригинальными игровыми наборами данных — WAD-файлами, включая DOOM, DOOM II, Ultimate DOOM и Final DOOM. Это дает пользователям свободу выбора, а также возможность загружать кастомные карты и ресурсы, расширяя игровой опыт. Минималистичность реализации отражается в интерфейсных решениях.

Для ввода и вывода данных движок использует внешние адаптеры, которые должны реализовывать интерфейс DoomFrontend. Он предусматривает методы для отрисовки кадров, установки названий окон и получения пользовательских событий, что позволяет адаптировать Gore для работы в разных типах приложений — от терминала с ANSI-цветами до графических окон и веб-интерфейсов. В комплекте с проектом идут примерные реализации терминального, веб-серверного и графического клиента на базе Ebitengine. Терминальный интерфейс демонстрирует уникальный подход к отображению игрового процесса с помощью ANSI-цветов, что идеально подходит для пользователей, предпочитающих работать через консоль. Хотя поддержка управлением здесь ограничена — отсутствует полноценное распознавание отпускания клавиш или управления клавишами Ctrl, — сам факт успешной реализации этого варианта поражает и открывает новые возможности для ретро-игр на «слабых» терминальных эмуляторах.

Веб-версия Gore также является достойным примером современного подхода. Запуск локального сервера и последующая игра в браузере значительно упрощают процесс погружения в легендарный мир DOOM без необходимости сложных настроек. Такой подход актуален для широкой аудитории и демонстрирует потенциал Go в создании приложений с разнообразными пользовательскими интерфейсами. Несмотря на все преимущества, проект Gore еще не является полностью завершенным. В коде присутствуют глобальные переменные, которые затрудняют запуск нескольких экземпляров игрового движка в одном процессе.

Также при экспорте констант из оригинального кода на C нередко возникают ситуации, когда внутренние элементы становятся внешне доступными, что требует дополнительного контроля и рефакторинга. И, несмотря на значительный прогресс, в проекте все еще используется пакет unsafe, что делает невозможным 100% безопасность по стандартам языка Go. Устранение таких участков — перспективное направление развития. Установка Gore крайне проста и не требует долгой подготовки. Необходим только язык Go версии 1.

24 и актуальный WAD-файл с играми DOOM. Исходники доступны на GitHub, где разработчик постоянно обновляет и улучшает проект. Для запуска примеров достаточно получить соответствующие игровые данные и с помощью команды go run запустить желаемый модуль. Это позволяет как новичкам, так и профессионалам быстро погрузиться в процесс и при необходимости внести собственные улучшения. Проект Gore заслуживает внимания не только благодаря своей технической реализации, но и благодаря принципу открытости и свободного распространения: исходный код распространяется под лицензией GPL-2.

0, что соответствует лицензии оригинального DOOM. Это гарантирует сохранение философии открытых игр и предоставляет широкие возможности для изучения и модификации движка. Команда разработчиков уже демонстрирует различные тесты и примеры, которые помогают глубже понять структуру и возможности этой уникальной портированной реализации. Gore — наглядный пример того, как классический игровой движок может получить новую жизнь с помощью современных технологий и языков программирования. Он доказывает, что Go, несмотря на свою репутацию языком серверной разработки, способен эффективно справляться с задачами, требующими высокой производительности и портируемости мультимедийных приложений.

При этом проект помогает изучать внутреннее устройство игрового движка DOOM на новом языке, что полезно как для разработчиков игр, так и для системных программистов. Перспективы развития Gore включают укрепление безопасности кода, расширение интерфейсных возможностей и улучшение поддержки многопоточности для одновременного запуска нескольких экземпляров игры. Также дальнейшее развитие позволит создавать более удобные API для внешнего контроля состояния игры и облегчить настройку пользовательских модов и карт. В конечном итоге проект может стать платформой для любительских разработок и образовательного контента, раскрывая многообразие возможностей классического DOOM в современном сообществе. Таким образом, Gore — интересный и перспективный проект, реализующий портал классического игрового движка Doom на языке Go.

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

Автоматическая торговля на криптовалютных биржах Покупайте и продавайте криптовалюты по лучшим курсам Privatejetfinder.com (RU)

Далее
How Silicon Valley Got Rich
Воскресенье, 12 Октябрь 2025 Как Кремниевая долина стала символом богатства и инноваций

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

I Take Gifts Seriously
Воскресенье, 12 Октябрь 2025 Почему я отношусь к дарениям серьёзно: ценность даров в цифровую эпоху

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

Analysing Roman itineraries using GIS tooling
Воскресенье, 12 Октябрь 2025 Анализ римских маршрутов с использованием ГИС-технологий: новое слово в исторической географии

Рассмотрение древних римских путей с применением современных геоинформационных систем позволяет значительно расширить понимание топографии, планировки и логистики дорожно-транспортной сети Римской империи. В статье раскрываются методы, примеры и перспективы, связанные с интеграцией исторических данных и современных ГИС-инструментов при исследовании римских дорог.

Tesla slides as Musk's 'America Party' heightens investor worries
Воскресенье, 12 Октябрь 2025 Акции Tesla падают на фоне политических амбиций Илона Маска и волнений инвесторов

Рассказывается о том, как объявление Илона Маска о создании новой политической партии в США вызывает тревогу среди инвесторов, отрицательно сказывается на акциях Tesla и ставит под вопрос его роль как генерального директора компании в условиях снижения продаж и экономической нестабильности.

LLaDA 1.5: Variance-Reduced Preference Optimization for Diffusion LLMs
Воскресенье, 12 Октябрь 2025 LLaDA 1.5: Новый этап в оптимизации больших языковых моделей с диффузией и снижением дисперсии градиентов

Обзор инновационного подхода VRPO для снижения дисперсии градиентов и улучшения согласования предпочтений в Masked Diffusion Models. В статье подробно рассматриваются проблемы RL-ориентированной оптимизации, методология VRPO и её влияние на производительность современных языковых моделей.

End the Tax Break for Litigation Funders
Воскресенье, 12 Октябрь 2025 Пора положить конец налоговым льготам для финансирующих судебные процессы

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

Show HN: I built a single API to post on all social platforms
Воскресенье, 12 Октябрь 2025 Единый API для публикаций в социальных сетях: революция для разработчиков и маркетологов

Рассмотрены преимущества использования единого API для управления публикациями в популярных социальных сетях, таких как TikTok, Facebook, Instagram и YouTube. Обсуждается, как разработчики и маркетологи могут сэкономить время и ресурсы, интегрируя различные платформы с помощью одного инструмента, а также разбор основных функций и моделей ценообразования.