Up to date

This page is up to date for Godot 4.2. If you still find outdated information, please open an issue.

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

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

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

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

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

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

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

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

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

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

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

image0

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

Другими словами, узлы Godot работают не так, как компоненты в некоторых других игровых движках.

image1

Sprite2D является Node2D, CanvasItem и Node. Он обладает всеми свойствами и особенностями трёх его родительских классов, такими как преобразования, или возможность рисовать собственные фигуры и рендер с использованием собственных шейдеров.

Полный пакет

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

image2

The goal is to offer a full package to create games and a continuous user experience. You can still work with external programs as long as there is an import plugin available in Godot for it. Or you can create one, like the Tiled Map Importer.

That is also partly why Godot offers its own programming language GDScript along with C#. GDScript is designed for the needs of game developers and game designers, and is tightly integrated in the engine and the editor.

GDScript позволяет вам писать код с использованием синтаксиса на основе отступов, но при этом он определяет типы и предлагает качественное автозаполнение для статического языка. К тому же, он оптимизирован для игрового кода с уже встроенными типами, такими как векторы и цвета.

Note that with GDExtension, you can write high-performance code using compiled languages like C, C++, Rust, D, Haxe, or Swift without recompiling the engine.

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

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

image5

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

Put the @tool annotation at the top of any GDScript file and it will run in the editor. This lets you import and export plugins, create plugins like custom level editors, or create scripts with the same nodes and API you use in your projects.

Примечание

Редактор полностью написан на C++ и статически скомпилирован в бинарный файл. Это означает, что вы не можете импортировать его как обычный проект с файлом project.godot.

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

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