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

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

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

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

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

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

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

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

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

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

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

image0

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

image1

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

Комплексный

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

image2

Цель состоит в том, чтобы предложить полный пакет для создания игр и непрерывного обучения. Вы можете работать с внешними программами, если для них есть плагин импорта. Или вы можете создать его, например, Tiled Map Importer <https://github.com/vnen/godot-tiled-importer>.

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

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

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

image3

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

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

image4

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

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

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

Anyone can plug in proprietary tools for the needs of their projects — they just won’t ship with the engine. This may include Google AdMob, or FMOD. Any of these can come as third-party plugins instead.

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

Примечание

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

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

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

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

Редактор 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-мира.