Полезное
December 21, 2018

Обзор игрового движка Godot Engine

Godot (произносится "Годо", а не "Гадот" или "Гоудот") - это, пожалуй, самый дружелюбный игровой движок, не считая конструкторы, типа Construct (classic, 2, 3) и BuildBox. Но чем же он настолько хорош? Давайте разбираться!

История движка

История движка началась еще в далеком 2007 году, когда программисты Хуан Линетски и Ариель Манзур начали разработку движка. С самого начала движок был закрытым и использовался некоторыми компаниями. Однако в 2014 году разработчики приняли решение сделать их ПО открытым и выложили исходники на GitHub под именем GODOT ENGINE. После этого разработка движка перешла сообществу (Godot Engine Community) и продолжается до сих пор.

Также примечательно, что название «Godot» является прямой отсылкой к пьесе Сэмюеля Беккета «В ожидании Годо». Она характеризует непрекращающееся желание добавлять новые возможности в движок, что будет постоянно приближать его состояние к идеальному инструменту всё ближе и ближе, но этот процесс не остановится.

В чем особенность GODOT от конкурентов?

На самом деле этих отличий огромная масса, ведь сам движок создавался с нуля. Но я всё-таки отмечу самые главные отличия, от которых и отходят остальные:

АРХИТЕКТУРА ДВИЖКА. Архитектура движка основана на дереве наследуемых "сцен". Каждый элемент сцены, в любой момент сам может стать полноценной сценой. Поэтому при разработке можно легко изменять полностью всю архитектуру проекта, расширять её элементы в любую сторону и работать с комплексными сценами на уровне простых абстракций.

РАБОТА С РЕСУРСАМИ ПРОЕКТА. Все игровые ресурсы, от скриптов до графических ассетов и игровых сцен, хранятся в папке проекта как обычные файлы, и не являются частью сложной базы данных проекта. Ресурсы, которые не представляют собой комплексных данных, хранятся в простых текстовых форматах (например, скрипты и сцены, в отличие от моделей и текстур). Эти решения позволяют значительно упростить разным командам разработчиков работу с системами управления версиями.

ВИЗУАЛИЗАЦИИ. Для многих важна графика. У Godot с этим всё в порядке. Графическая система для всех платформ построена на OpenGL ES 3.0. Рендеринг включает в себя технологии order-independent transparency, normal mapping, specularity. Также там используются такие полноэкранные постэффекты как FXAA, bloom, DOF, HDR, гамма-коррекции, distance fog, динамические тени на основе shadow maps и другие. Хочется сказать, что мне невероятно нравится освещение в Godot, я считаю оно тут божественно.

Также стоит отметить, что для 2D в Godot используется отдельная графическая подсистема, которая независима от 3D, когда во всех популярных 3D движках всё 2D основано на 3D, что довольно сильно портит оптимизацию и само по себе большие костыли. (Вспомните историю Unity - с самого начала он был только 3D, но когда "завезли" 2D оно стало просто 3D текстурами с неперспективной камерой)

Язык программирования

Стоит отдельно остановиться на ЯП-ах. Для некоторых разработчиков это важная тема, ведь они не хотят уходить из своего любимого языка. Так какие языки есть в Godot? Сам движок был написан на C++ и на нем и писались игры, но через время в движок пришли еще несколько языков. Вот их список:

  • C++ - движок был написан на нем, как и многие другие, как Unreal Engine, и отлично его поддерживает
  • GDScript - этот язык это отдельный язык самого движка. Он схож с Python, но имеет несколько весомых отличий. Например, многим C# разработчикам сложно перейти на Python, ведь он имеет динамическую типизацию. Однако GDScript имеет строгую типизацию, как и C#, так что всё хорошо. Также там есть еще несколько изменений, которые тронули оптимизацию архитектуры и подстраивание языка под движок. (Но всё же не забывайте, что это питонообразный язык, которому свойственны некоторые качества, которые могут показаться неприятным глазу шарповца)
  • C# - да, в Godot есть C# (тогда бы его у меня не было, а я делал бы уроки по Unity) но он работает только в версии с Mono, которую вы можете скачать на офф. сайте (сам Mono надо скачивать отдельно) Однако есть еще одна проблема, но о ней позднее.
  • Visual Scripting - также Godot поддерживает визуальное программирование.

Обучающие материалы

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

Видеокурс от SkanerSoft довольно хорош, но и то там на GDScript, однако это единственный законченный курс

Документация же ПОЧТИ закончена, но именно в разделе про C# очень много не переведенного материала. Что за расизм! (Зуб даю, это заговор JS-ников) Она переводится очень медленно, ведь всё лежит на сообществе на GitHub, это и объяснение, почему именно C# не переведен - он не так уж и популярен среди Godot Community.

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

(Ссылки на оба материала в самом конце обзора)

Интерфейс редактора

Сразу скажу, что сижу на версии движка 3.0.0 потому что новая альфа версия 3.0.6 далеко не стабильна и сильно косячит! (ну, потому и альфа) Не советую никому, хоть она и имеет новые функции, просто подождите до нормальной, стабильной версии.

Как я уже говорил, он просто шикарен по этому. Он расчитан на то, что там есть всё, чтобы создать свою игру. Это полная IDE. (Не считая программы для создания графики, спрайтов и музыкального сопровождения, конечно) Естественно, что вы можете использовать и сторонний редактор кода, например, Visual Studio или MonoDevelop. Единственное, что меня смущает это подлагивание программы во время работы и эта консоль! Не знаю почему, но она меня дико бесит! В начале я думал, что она исчезнет после запуска программы, но она никогда не уходит.

Общие впечатления

Для меня Godot был темной лошадкой только недавно, но теперь я вижу, почему его так много людей любят. Да, у него есть много недостатков. Даже очень много, я сказал бы. Однако он - это "движок для первой игры" и им останется навсегда. Godot - это не продвинутый движок с самыми новыми фишками, это не супер функциональный инструмент, это не способ забрать деньги с покупателя, это не движок для ААА игр... Это движок для первой игры! Он простой в освоении, с простым в освоении языком, (спасибо родственность с Python) а самое главное с дружественным лицом приветствующий новых "игроделов". Всё это самое важное для самых важных людей - новичков. Именно для них был создан данный движок.

Конец

Надеюсь данный обзор вам понравился! Я попытался кратко обрисовать вам сам движок, чтобы вам было легче понять, нужен ли он именно вам. Я бы сказал, что он идеален для первой игры, но у него слишком мало учебных материалов и если выберите именно его, то точно не на C#. Если нужен именно C# то идите к Unity, но, как я уже говорил, GDScript очень даже хорош, тем более с строгой типизацией. (Python мечты, прям!)

Источники: Википедия, Курс SkanerSoft, офф. сайт Godot (англ.), офф. документация Godot (рус.)