Nau Engine — а есть ли кубик?
Скажу сразу, движок этот мне интересен особо никогда не был. Когда релизнулся — почитал фича лист, полистал доку, плечами пожал и дальше пошёл. И ежу понятно, что чтобы догнать Юнити (или, хотя бы, Годот) нужны десятки лет и миллиарды деняк.
Но раз уж пошла такая пьянка, надо внести в обсуждение и немного объективности, а потому я решил скачать и потыкать веточкой — что же у ВК получилось сотворить, и узнать ответ на главный вопрос, волнующий всех разработчиков игр сегодня: а есть ли в Nau Engine кубик, и можно ли его поставить на сцену?
Пару слов о себе тоже дам. Разработчик игр, программист, движковый энтузиаст — люблю изучать технологии, в том числе писал свои движки поверх SDL, SFML, Raylib.
Особо глубоко я Nau Engine не копал, все мои ощущения описаны на основе 3 часов знакомства с движком.
В первую очередь, хочу сказать пару слов по самому Нау: он косой, кривой, тупой и сложный для новичка, и свои цели как инструмент для массового разработчика не достигает. Вижу движок в зачаточном состоянии, который можно допилить до чего-то вменяемого, но ему до этого далеко. Учитывая, что он ушёл в опенсорс — наверное своего светлого будущего он не увидит уже никогда.
Из главных проблем, кинувшихся в глаза:
1. Сложность установки. Помимо движка нужно установить Питон, зависимости для Питона, CMake, VCPKG, настроить переменные PATH и JSON-конфиги сборки. Если хоть где-то будет косяк — проект просто не соберётся, и почему — тоже не скажет (если не пробить сборку вручную с флагом --verbose, до чего тоже не каждый новичок догадается). Большая часть новоиспекаемых Нау-разработчиков отсеивается уже на этом этапе.
2. Перезапуск редактора для перекомпиляции скриптов. После каждой правки в коде - выключаешь редактор, включаешь редактор, ждё-ё-ёшь. Маразм в чистом виде, но щито поделать.
3. Минимализм и низкая функциональность редактора. Почти всё делается из кода / конфигов, редактор нужен только накидать объектов на сцену и как-то минимально их подвигать. Для конкуренции с современными движками — смешно, конечно, но у фреймворков и такого нет. ( ° ʖ °)
4. Плохая документация и API reference. В документации — ошибки, опечатки, она не обновлялась наверное с самого релиза, и если делать всё в точности по шагам из Getting Started гайда — у вас просто ничего не заработает, потому что там банально примеры настроек и кода с ошибками. Что по API reference - она поломана и неактуальна в щщи, проще залезть в репозиторий и посмотреть хедеры самостоятельно.
А теперь по тейкам автора обличения:
1. Нет кубиков, шариков, моделей, ничего нет! А они — есть. И их даже можно ставить на сцену через меню Outliner.
2. Нет ЯП. Что вообще значит "Нет ЯП"? С++ - уже не язык программирования, что ли? Да, новый компонент нужно руками создавать в .h / .cpp, регистрировать его в реестре движка, потом всё пересобирать. Неудобно, и делая игру среднего / большого размера скорее всего можно сойти с ума, но функционал-то есть. Есть и API, и привычные Start/Update методы, и инпуты, и своя математическая библиотека с векторами-лерпами. В общем-то всё, чтобы сделать какую-нибудь простенькую игру типа змейки, и никаких препятствий к этому нет.
Код вращателя:
Как видно, несмотря на витиеватость С++ кода, всё довольно просто: берём трансформ, применяем модификатор, устанавливаем обратно.
В доке я так же нашёл инструкцию по подключению Lua и TypeScript как скриптовых языков вместо C++ — стало быть, такая возможность у движка уже есть, но я пока в этом не разбирался.
Выводы
Движок ли Nau Engine? Думаю, да. Годится ли он для геймдева в текущем состоянии? В каком-то виде, возможно... Но не для обычных разработчиков. Для тех, кому интересно в таком покопаться — может быть, ради спортивного интереса.
Я думаю, попробую сделать в этом движке что-нибудь осмысленное, а потом положу его на полку истории.