Игровой движок Godot Engine: различия между версиями

Материал из The Magic of Number 8 Wiki
мНет описания правки
Содержимое страницы заменено на «Неочевидные особенности игрового движка Godot Engine. == Input (ввод) == [https://docs.godotengine.org/en/stable/tutorials/inputs/inputevent.html Using InputEvent — Godot Engine (stable) documentation in English] [https://forum.godotengine.org/t/what-is-the-difference-between-unhandledinput-input-shortcutinput/43598/3 What is the difference between _unhandled_input, _Input, _shortcut_...»
 
(не показаны 2 промежуточные версии этого же участника)
Строка 1: Строка 1:
=== История возникновения и особенности ===
Неочевидные особенности игрового движка Godot Engine.
Godot Engine это кроссплатформенный и многофункциональный игровой движок для создания 2D и 3D игр. Он предоставляет набор различных инструментов и элементов для быстрого прототипирования игровых сцен. Созданные игры могут быть экспортированы на различные программные и аппаратные платформы, а именно на настольные (Windows, Linux, macOS), мобильные (Android, iOS), и для веб-браузеров (HTML5).


Разработка движка Godot Engine была начата Хуаном Линецким и Ариэлем Мансуром в 2007 году. Название движка является прямой отсылкой к пьесе Сэмюеля Беккета «В ожидании Годо», что характеризует сильное желание авторов развивать своё детище. Первоначально он предназначался для создания 2D игр. Исходные тексты движка были открыты в 2014 году студией OKAM.
== Input (ввод) ==
[https://docs.godotengine.org/en/stable/tutorials/inputs/inputevent.html Using InputEvent — Godot Engine (stable) documentation in English]


Godot поддерживает ряд распространенных языков программирования для игр, таких как C ++, C # и GDScript, встроенный язык сценариев Godot, который был разработан как комбинация двух распространенных и хорошо протестированных языков Lua и Python [5]. Также следует заметить, что Godot производителен, так как использует дизайн, основанный на сценах [6]. Это означает, что всё в игре организовано в сцены и каждая сцена может загружаться и выгружаться по мере необходимости. Это помогает поддерживать низкий уровень использования памяти в игре, что, в свою очередь, способствует более плавной работе. Также это дает возможность запуска игр на малопроизводительных устройствах. В Godot присутствуют все инструменты для сборки, исправления и тестирования игры. Программное обеспечение для архитектурных частей игры встроено. Для создания визуализации и звуков потребуются дополнительные программы. Godot умеет взаимодействовать со многими IDE, что дает возможность пользователю изменить встроенные инструменты для того, чтобы использовать при создании проекта привычный функционал. Для создания идей игровой движок имеет 2D и 3D-пространства, в каждом из которых присутствуют стандартные классы, объекты и редакторы скриптов, также имеются редакторы шейдеров для прямого программирования и визуальной настройки [7]. Встроенный IDE имеет автоотступы, подсветку синтаксиса, быстрый доступ к API движка и документам. Если пользователь совершил ошибку при написании кода, то Godot автоматически, без запуска проекта выделит неверную строку. Как упоминалось ранее, Godot поддерживает GDScript, а он, в свою очередь, состоит частично из Python, поэтому по синтаксису GDScript похож на Python.
[https://forum.godotengine.org/t/what-is-the-difference-between-unhandledinput-input-shortcutinput/43598/3 What is the difference between _unhandled_input, _Input, _shortcut_input?]


=== Модель и условия распространения ===
Godot Engine распространяется под свободной и открытой разрешительной лицензией MIT, то есть позволяет программистам использовать лицензируемый код в закрытом программном обеспечении при условии, что текст лицензии предоставляется вместе с этим программным обеспечением. В отличии от других популярных игровых движков, использование Godot Engine не подразумевает выплаты роялти в виде процента от стоимости проданных игр и приложений услуг, а так же процента от прибыли или дохода. Разработка игрового движка ведётся независимо и управляется обширным сообществом, а финансовый и юридический контроль ведётся силами некоммерческого фонда Software Freedom Conservancy. Данный формат развития игрового движка имеет определенные плюсы и минусы.
{| class="wikitable"
|+Плюсы и минусы использования открытого игрового движка Godot Engine
!Плюсы
!Минусы
|-
|Бесплатное распространение и отсутствие лицензионных ограничений
|Коммерческая разработка игр может повлечь большой объем непредвиденных расходов или в необходимости создания с нуля отсутствующей функциональности
|-
|Быстрорастущий движок с открытым исходным кодом для создания 2D или 3D игр
|Рыночная доля игрового движка очень мала и не поддаётся оценке. Ограниченное количество открытых вакансий с компетенцией по данному решению
|-
|Специализация на разработке 2D игр
|3D рендер движка использует устаревшие техники визуализации и недостаточно оптимизирован (Актуально для 3-ей мажорной версии)
|-
|Активное сообщество, которое может помочь с решением некоторых вопросов и проблем
|Отсутствие гарантий и официальной поддержки
|-
|Доступное изложение технической документации
|Трудность получения знаний и практических навыков из-за малого количества учебных программ.
|-
|Редактор Godot Engine занимает мало места на накопителе (~73 мегабайта)
|Демо-проекты и шаблоны экспорта на другие платформы загружаются отдельно от редактора.
|-
|Низкие системные требования
|Графическая часть Godot Engine работает на базе устаревшего программного интерфейса OpenGL ES (версии 2 и 3)
|-
|Игровой движок поддерживает 2 языка программирования: собственный скриптовый язык GDScrypt и Mono C#. Подсистема GDNative позволяет дополнительно добавить сторонних языков программирования.
|Скриптовый язык GDScrypt имеет более низкую производительность в сравнении с C#. Бэкенд Mono С# не поддерживает методы компиляции кода перед исполнением.
|}
Несмотря на минусы и существующие проблемы игрового движка Godot Engine, его популярность активно привлекает новых людей для реализации собственных задумок. Данное решение обеспечивает качественную поддержку операционных систем на базе GNU/Linux. Меня привлекает демократичность сообщества и возможность творческой самореализации при его использовании. Официальное сообщество Godot Engine на платформе Discord насчитывает уже более 54 тысяч участников. Основная документация обстоятельно прописана и представляет информацию обо всех предлагаемых к использованию модулях и подсистемах. Команда разработчиков и индивидуальные участники вносят большие усилия по разработке следующей мажорной версии движка 4.0. Она предложит переработанную кодовую базу и улучшение покрытия модульного тестирования. Графическая часть движка получит поддержку нового графического программного интерфейса Vulkan, воксельное и динамическое рассеянное глобальное освещение в реальном времени, непрямое освещение экранного пространства с битовой маской видимости, эффект объемного тумана, атлас декалей, возможность настройки шейдера неба, а также запекание карт освещения для создаваемых игровых уровней. Кроме улучшения графической части, разработчиками игрового движка были подготовлены требуемые оптимизации, такие как, отбраковка окклюзии, автоматическое управление уровнем детализации 3D объектов, улучшение производительности физического движка, обновление навигационных сеток на лету. Изменениям подвернется синтаксис языка программирования GDScript и система программного интерфейса движка, которую можно использовать для расширения функциональности элементов игрового движка. С учётом изложенного, я считаю что у Godot Engine имеются большие перспективы по применению в малых командах разработчиков или в индивидуальном порядке.
{| class="wikitable"
|+Список наиболее популярных игр на базе игрового движка Godot Engine
!Год выпуска
!Название игры
!Разработчик
!Примечание
|-
|2016
|Deponia
|Daedalic Entertainment
|Порт на iOS и PlayStation 4
|-
| rowspan="2" |2021
|Cruelty Squad
|Consumer Softproducts
|
|-
|Sonic Colors: Ultimate
|Sonic Team/Blind Squirrel Games
|Порт на Nintendo Switch
|-
| rowspan="2" |2022
|Brotato
|Blobfish
|
|-
|Dome Keeper
|Bippinbits
|
|}
=== Архитектура и поддерживаемые программные языки ===
Ключевые аспекты: сцены, ноды (узлы), дерево сцены, сигналы.
=== Ключевые концепции Godot Engine ===
Каждый игровой движок который используется для создания игр абстрагирует определенные подходы в процессе работы с ним. Подход который реализует Godot Engine — это представление игровой сцены ('''scene''') в виде дерева ('''tree'''), состоящего из различных узлов ('''nodes)'''. Для реализации нашей цели мы должны использовать базовые узлы, которые встроены в игровой движок, а также создавать на их основе свои собственные. После подключения этих узлов к дереву сцены, мы можем заставить их взаимодействовать друг с другом посредством функциональных сигналов ('''signals'''). Эти четыре концепта задают основной принцип работы с игровым движком Godot Engine и ограничивают разработчика игры от создания переусложненных структур. Рассмотрим каждую из них более детально.
==== Сцены (Scenes) ====
Каждая часть игры, которая может быть повторно использована и иметь уникальные свойства, должна быть представлена в виде сцены. Сценой может быть любой объект или сущность. Примеры: игровой персонаж, оружие, элемент игрового меню, виртуальное строение, игровой уровень. Всё что мы можем придумать или представить, способно быть представлено в виде элемента игровой сцены. Аналогом сцен в других игровых движках можно считать префабы ('''prefabs''').
Пример наличия вложенных сцен в дереве
Важно отметить, что любая сцена может быть вложена в другую. Таким образом, мы можем двигать виртуального героя с его оружием по всему уровню взаимодействуя лишь с одной из его родительских сцен.
==== Узлы (Nodes) ====
Сцена может быть наполнена одним или несколькими узлами. Узлы — это мельчайшие строительные блоки, которые будут собраны в древе сцены. Вот пример узлов персонажа.
==== Дерево сцены (The scene tree) ====
Любые создаваемые сцены в Godot Engine будет объединены в дереве сцены. И поскольку сцены - это деревья узлов, дерево сцен также является деревом узлов. Но в разработке игр проще всего думать в терминах сцен, т.к. они могут представлять персонажей, оружие, двери или пользовательский интерфейс.
==== Сигналы (Signals) ====
Узлы производят сигналы, когда происходит какое-то событие. Эта функция позволяет нам заставить узлы взаимодействовать без их жесткой привязки к программному коду. Это дает большую гибкость в процессе структурирования будущих сцен. В качестве примера можно привести кнопки, которые издают сигнал при нажатии. Мы можем подключиться к этому сигналу для запуска кода в ответ на это событие, например для запуска игр или открытия специального меню. Другие встроенные сигналы могут подсказать нам, когда столкнулись два физических объекта, когда персонаж или монстр вошел в заданную область и многое другое. Так же важно отметить наличие технической возможности определения новых сигналов для необходимых событий.
[[Категория:Руководства]]
[[Категория:Руководства]]

Текущая версия от 06:51, 23 августа 2024

Неочевидные особенности игрового движка Godot Engine.

Input (ввод)

Using InputEvent — Godot Engine (stable) documentation in English

What is the difference between _unhandled_input, _Input, _shortcut_input?