Философия дизайна Godot

Теперь, когда вы "набили руку", давайте поговорим о дизайне Godot.

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

Эта страница здесь для того, чтобы помочь вам понять, как Godot работает, начиная с самых основ. Это не список доступных возможностей, также это не сравнение различных движков. Чтобы понять, хорошо ли подходит какой-либо движок для вашего проекта, его необходимо попробовать самостоятельно и понять его архитектуру и ограничения.

Пожалуйста, посмотрите Обзор Godot 3, свободного игрового движка, если вы ищете обзор возможностей движка.

Объектно-ориентированный дизайн и композиция

В основе Godot лежит объектно-ориентированный дизайн с его гибкой системой сцен и иерархией узлов. Он старается держаться подальше от строгих шаблонов программированияв в угоду интуитивному способу структурирования вашей игры.

Например, Godot позволяет вам составлять или собирать сцены. Это как вложенные префабы: вы можете создать сцену с мерцающим светом и сцену со сломанным фонарём, который использует мерцающий свет. Затем создать город, наполненный сломанными фонарями. Поменяйте цвет мерцающего света, сохраните, и все сломанные фонари в городе тут же обновятся.

Более того, вы можете наследовать от любой сцены.

Сценой в Godot может являться оружие, персонаж, предмет, дверь, уровень, часть уровня... всё, что пожелаете. Это работает как классы в коде, за исключением лишь того, что вы создаёте всё сами, используя редактор, либо только код, либо и то и другое одновременно.

Это отличается от префабов, которые можно найти в некоторых 3D движках, так как вы можете наследовать и расширять любую сцену. К примеру, вы можете создать сцену "Маг", которая будет потомком вашей сцены "Персонаж". Измените сцену "Персонаж" в редакторе, и сцена "Маг" также будет обновлена. Это позволит вам построить свои проекты таким образом, чтобы их структура соответствовала дизайну игры.

image0

Также обратите внимание, что Godot предлагает множество различных типов объектов, называемых узлами, каждый из которых имеет определенную цель. Узлы являются частью дерева и всегда наследуют от своих родителей вплоть до класса Узел (Node). Хотя движок поддерживает такие компоненты как формы столкновения, они скорее являются исключением, нежели нормой.

image1

Sprite наследуется от классов Node2D, CanvasItem и Node. Благодаря этому он имеет их свойства и особенности, что позволяет ему, к примеру, выполнять преобразования, отрисовывать произвольные фигуры или визуализировать сторонние шейдеры.

Полный пакет

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

image2

Цель состоит в том, чтобы предложить полный пакет для создания игр и непрерывного обучения. Вы по-прежнему можете работать с внешними программами, если для них есть плагин импорта. Или вы можете создать его, например, Tiled Map Importer.

Отчасти поэтому Godot предлагает свои собственные языки программирования GDscript и VisualScript наряду с C#. Они разработаны для нужд разработчиков и геймдизайнеров и тесно интегрированы в движок и редактор.

GDscript позволяет писать простой код, используя Python-подобный синтаксис, он обнаруживает типы и предлагает качественное автоматическое завершение статического языка. Он также оптимизирован для игрового кода со встроенными типами, такими как векторы и цвета.

Обратите внимание, что с помощью GDNative вы можете написать высокопроизводительный код, используя скомпилированные языки, такие как C, C++, Rust или Python (используя компилятор Cython) без перекомпиляции движка.

image3

VisualScript - это язык программирования на основе узлов, который хорошо интегрируется в редактор. Вы можете перетаскивать узлы или ресурсы в граф для создания новых блоков кода.

Обратите внимание, что в рабочем пространстве 3D нет того же количества инструментов, как в рабочем пространстве 2D. Вам понадобятся внешние программы или аддоны для редактирования ландшафтов (terrain-ов), анимации сложных персонажей и т.д. Godot предоставляет полный API для расширения функциональности редактора с помощью кода игры. См. Редактор Godot - это игра Godot ниже.

image4

Плагин State Machine (Машина Состояний) в Godot 2 от kubecz3k. Он позволяет визуально управлять состояниями и переходами.

Открытый исходный код

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

Любой может подключить проприетарный инструментарий для нужд своих проектов - он просто не будет поставляться с движком. Это могут быть, например, Google AdMob или FMOD. Что угодно из этого может подойти в качестве стороннего плагина.

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

Примечание

Это ни коим образом не влияет на работу, которую вы совершаете с Godot: нет никаких условий для движка или всего, что вы делаете с ним.

Управляемый сообществом

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

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

Редактор Godot - это игра Godot

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

Это приводит к созданию надежной и гибкой системы пользовательского интерфейса, поскольку она сама настраивает редактор. С ключевым словом tool вы можете запускать любой игровой код в редакторе.

image5

RPG in a Box - это воксельный редактор RPG, сделанный с помощью Godot 2. Он использует инструменты пользовательского интерфейса Godot для своей системы программирования на основе узлов и для остальной части интерфейса.

Поместите ключевое слово tool в начало любого файла GDscript, и он будет запущен в редакторе. Это позволяет вам импортировать и экспортировать плагины, создавать такие плагины, как пользовательские редакторы уровней, или создавать скрипты с теми же узлами и API, которые вы используете в своих проектах.

Отдельные 2D и 3D движки

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