Невангеры и Godot

Когда узнал, что опенсурсный игровой движок Godot умеет в полноценное 3d, то решил познакомиться с его возможностями при случае и попробовать на практике. Вот что из этого получилось.

Невангеры и Godot

На деле оказалось, что Godot отличный мультиплатформенный развивающийся игровой движок, уже плотно освоивший 2д и всерьёз нацелившийся на 3д графику. Отдельные плюсы - это его малый вес (около 70 Мб, не требующие установки), ну и, собственно опенсурсная сущность. В целом, по ощущениям, это как Blender от мира игровых движков.

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

Первое видео с тестом машинок из Невангеров на Godot engine

В плане кода движок позволяет писать и на низком уровне, и на скриптовых языках. Несмотря на то, что мне привычнее поддерживаемый здесь C#, я всё-таки решил осваивать внутренний питонообразный GDScript, у которого лучше совместимость и производительность, да и примеров его использования больше в силу исторических причин. Ну и, в любом случае, тот же C# на Unity, или C# на Unigine отличаются от C# на Godot, уже хотя бы тем, что используются разные наименования функций, имён и так далее. Так что всё-равно приходится привыкать и стараться не запутаться в "одинаковых" языках.

Визуальный нодовый "язык", кстати, тоже есть, но мне такое не интересно, поэтому не смотрел. С другой стороны, формировать какие-нибудь шейдеры мне привычнее как раз в нодовом редакторе, как в том же Blender. Ну так они обычно и не слишком сложные, плюс я не пробовал просто писать их, возможно, это даже удобнее. Как бы то ни было, Godot позволяет кастомные шейдеры писать или собирать визуально, как больше нравится.

На данный момент в движке два режима графики - более простой gles2, для не особо мощных систем (типа моей), вроде мобильных устройств, вёба и так далее, и более технологичный gles3 для систем помощнее. Не за горами появление поддержки vulkan. Правда, даже когда Годо придёт с вулканом, некоторые люди продолжат нахождение в режиме ожидания :)

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

Также присутствуют какие-то свои ограничения, вроде того, что на один объект можно вешать только один скрипт (что обходится через манипуляции с иерархией), и какие-то свои фишки, например, специальный подкласс объектов поддерживающих булевы операции внутри иерархии или конструктор мини-уровней. Что-то изначально в движке отсутствует, вроде того же редактора террейнов, с другой стороны для подобного есть написанные сообществом плагины, либо можно обратиться к специализированным программам, которые обычно делают это всё лучше, чем внутридвижковые инструменты.

На текущий момент я немного доработал прототип, добавив анимацию некоторым объектам, пару типов местности, наброски собирания "грибов" и выстрелов. И снял новый ролик. Первая часть видео записана с режима gles3, а вторая с менее качественного gles2 (зато в нём у меня всё в порядке с тенями). Кстати, один из важных моментов при конвертировании проекта из gles3 в gles2 - частицы будут просчитываться на процессоре, вместо видеокарты, поэтому движок просит перенастроить эмиттеры частиц и поменять им тип.

Прогресс по прототипу и сравнение рендеров

Кстати, что касается прототипа Невангеров на Unigine - знакомый выложил исходник на GitLab

и снял несколько видео на своей системе, настраивая физику

Newangers

Напоследок, несколько моментов из Godot прототипа:

выстрелы, до настройки формы, скорости и времени жизни
использование местных GCS (constructive solid geometry) объектов в игромеханике
анимированные CSG затратны по ресурсам, но для точечного применения могут пригодиться. особенно если проигрываются в конкретных местах, по триггеру. в целом оптимальнее их использовать в статике - для быстрого прототипирования уровня или разрушаемости
в данном случае мост является объектом CSG Mesh, который может иметь произвольную форму. в качестве дочернего объекта в него вложена CGS Capsule, которой установлен режим исключения и записан цикл анимации.
ещё один пример CSG-анимации - сфера частично пересекает сложную модель во время своего движения. ещё пара таких объектов уже приводит к подлагиваниям, к тому же вне видимости камеры эффект продолжает потреблять ресурсы, если крутится в цикле.

На этом пока всё.

4545
7 комментариев

А вы меня очень заинтересовали. Буду очень надеяться, что ваша игра дойдёт до релиза. Удачи вам!

4
Ответить

Моделька машины выглядит весьма интересно.
Какие плагины для Годота посоветуете?

2
Ответить

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

Ответить

Пост опубликован когда гоша дударь выложил видос про годот :')

Ответить

Как скоро все будет готово ?

Ответить

Всё - это что?

Ответить