Знакомимся с Nau Engine и собираем открытый игровой движок из исходников
О проекте Nau Engine говорили много, но одно дело слушать анонсы на конференциях, и совсем другое — заглянуть в публичный репозиторий и пощупать код руками. Репозиторий открыт, исходники доступны на GitHub, и любой желающий может склонировать проект к себе на машину, чтобы оценить архитектуру или попробовать собрать тестовый билд.
Авторы сразу заявляют открытую модель распространения: движок бесплатен для любых задач, включая коммерческий релиз игр, без лицензионных отчислений или скрытых роялти. Исходный код лежит в открытом доступе, так что сообщество может писать свои форки, расширения и пуллреквесты.
Что внутри репозитория
Если открыть репозиторий NauEnginePublic, сразу бросается в глаза классический C++ стек для крупных проектов. Тут нет попыток изобрести свой пакетный менеджер с нуля: зависимости подтягиваются через vcpkg, а сборка управляется через современные пресеты CMake.
Сам движок написан на C++, активно опирается на сабмодули и требует свежего инструментария:
- Компилятор MSVC v143 из состава Visual Studio 2022
- Windows 10 SDK актуальной версии
- Python 3.10 или новее для вспомогательных скриптов
- Система сборки CMake с поддержкой CMakePresets
На текущем этапе в репозитории сделан явный упор на платформу Windows. В документации описаны пресеты для Visual Studio 2022 и связки Clang-CL с Ninja. Поддержка Linux или macOS в README пока не расписана подробно, поэтому основной рабочий сценарий сейчас завязан на стек Microsoft.
Подготовка окружения и зависимостей
Сборка игрового движка с нуля всегда требует терпения. Первым делом после клонирования репозитория нужно подтянуть сабмодули, без них проект банально не сконфигурируется:
git clone https://github.com/NauEngine/NauEnginePublic.git
cd NauEnginePublic
git submodule update --init --recursive
Дальше начинается работа с пакетным менеджером vcpkg. Если он у вас еще не установлен, авторы рекомендуют склонировать его в отдельный каталог, например в c:\tools\vcpkg, и выполнить инициализацию:
cd c:\tools
git clone https://github.com/microsoft/vcpkg
.\vcpkg\bootstrap-vcpkg.bat
После этого нужно прописать системную переменную окружения VCPKG_ROOT=c:\tools\vcpkg. Без этой переменной CMake не поймет, где искать библиотеки.
Кстати, в репозитории есть полезная подсказка: если в ветке меняется файл vcpkg.json, лучше делать чистую сборку с предварительной очисткой рабочего каталога через git clean -d -x -f. Главное перед этим сохранить все свои несохраненные правки, иначе git сотрет их без предупреждения.
Конфигурация и процесс сборки
Когда зависимости на месте, в дело вступает CMake. В проекте настроены готовые пресеты, поэтому вручную указывать десятки флагов компиляции не придется.
Для генерации проекта под Visual Studio 2022 запускаем команду:
cmake --preset win_vs2022_x64
Если вы предпочитаете связку Ninja и Clang, есть альтернативный пресет:
cmake --preset win_ninja_clangcl-debug
Также можно просто открыть папку проекта в VS Code или Visual Studio. Среда разработки сама подхватит файл CMakePresets.json и предложит выбрать нужную конфигурацию в интерфейсе.
Сам процесс компиляции запускается через CLI или прямо из IDE:
cmake --build build\win_vs2022_x64 --config=Debug
После завершения компиляции движок можно установить в локальную директорию output:
cmake --install build\win_vs2022_x64 --config=Debug
В этой папке вы получите готовый для дальнейшей интеграции билд.
Зачем изучать этот код разработчикам
Nau Engine интересен не только тем, кто планирует делать на нем игры, но и обычным C++ программистам.
Во-первых, это свежая кодовая база. Многие популярные движки тащат за собой багаж решений двадцатилетней давности. Здесь же можно посмотреть, как организована структура современного проекта на свежем стандарте C++, как разбиты модули и как устроен пайплайн работы с ассетами.
Во-вторых, проект полностью открыт для контрибьюторов. В репозитории висят открытые issue и пулреквесты, а сообщество постепенно начинает участвовать в доработке движка. Если вы давно искали сложный системный open source проект, в который можно прийти с оптимизациями или новыми фичами, Nau Engine дает такую возможность без бюрократии проприетарных лицензий.
В-третьих, это хорошая площадка для экспериментов со своими рендерами, физическими движками или скриптовыми обвязками. Наличие готовой модульной структуры экономит недели рутинной работы по настройке окружения.
В-четвертых, для игровых студий это реальный шанс получить технологический стек, не зависящий от капризов зарубежных вендоров и внезапных изменений в лицензионных соглашениях.
С чего начать знакомство
Если проект вас заинтересовал, начните с простого: склонируйте репозиторий, пройдите шаги из руководства по сборке и попробуйте собрать движок в Debug-режиме. Почитайте структуру каталогов, посмотрите реализацию базовых подсистем в исходниках и загляните во вкладку Issues на GitHub. Для тех, кто интересуется разработкой игровых движков изнутри, это отличный материал для изучения.
