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

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

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

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

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

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

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

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

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

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

It’s different from prefabs you find in several 3D engines, as you can then inherit from and extend those scenes. You may create a Magician that extends your Character. Modify the Character in the editor and the Magician will update as well. It helps you build your projects so that their structure matches the game’s design.

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. Это означает, что все технологии, которые поставляются с ней, должны быть бесплатными. По большей части, они разрабатываются авторами с нуля.

Любой может подключить собственные инструменты для нужд своих проектов - они не будут поставляться с движком. Это может быть Nvidia PhysX, Google Admob или импортер файлов FBX. Любой из них может использоваться как сторонний плагин.

On the other hand, an open codebase means you can learn from and extend the engine to your heart’s content. You can also debug games easily, as Godot will print errors with a stack trace, even if they come from the engine itself.

Примечание

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

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

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

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

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

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

This leads to a reliable and flexible UI system, as it powers the editor itself. With the tool keyword, you can run any game code in the editor.

image5

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

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

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

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