Переписать классический DOOM на Go без единого вызова C? Это реально. Репозиторий gore — порт doomgeneric, автоматически конвертированный из C через ccgo, а затем доведённый до ума вручную. Движок полностью абстрагирован от ввода-вывода через простой интерфейс DoomFrontend. Чтобы запустить игру на любой платформе, достаточно реализовать всего два метода — DrawFrame и GetEvent. Остальное опционально. Уже есть три готовых примера: — терминальный клиент с ANSI-графикой (Doom в консоли), — веб-сервер с управлением через браузер, — оконная версия на Ebitengine. Сборка под любую ОС, включая WebAssembly, прямо из коробки. Из нереализованного: глобальные переменные оригинала пока не дают запустить два экземпляра в одном процессе, и остались отдельные вызовы unsafe. Для запуска нужен Go 1.24+ и любой WAD-файл (поддерживаются DOOM, DOOM II, Ultimate DOOM, Final DOOM). Исходный код, примеры и инструкции — здесь: https://github.com/AndreRenaud/gore