Parcourir la source

Добавить 'Лекции/Godot/Godot_Engine_di.md'

u20masarova il y a 3 semaines
Parent
commit
6c15b11cf7
1 fichiers modifiés avec 126 ajouts et 0 suppressions
  1. 126 0
      Лекции/Godot/Godot_Engine_di.md

+ 126 - 0
Лекции/Godot/Godot_Engine_di.md

@@ -0,0 +1,126 @@
+# Что такое Godot Engine?
+![ge.png](ge.png)
+
+
+Godot Engine — бесплатный движок для разработки 2D- и 3D-игр, созданный в 2007 году двумя программистами из Аргентины — Хуаном Линьетски и Ариелем Мансуром. Изначально технологию использовали для разработки ПО, и называлась она не Godot, а Larvotor. В течение нескольких лет технология прошла множество итераций, а с ними менялись и названия: Legacy, NG3D, Larvita… И в 2014 году Godot вышел в открытый доступ и развивается до сих пор, благодаря активной поддержке сообщества и некоммерческой организации Godot Foundation.
+
+На сегодняшний день Godot считается одним из самых популярных движков, наравне с Unity, Unreal Engine и Construct. Он подходит как для обучения, так и для создания коммерческих проектов в 2D и 3D. Программа поддерживает операционные системы Windows, macOS, Linux, BSD и Android, также есть возможность запуска редактора и работы в нём прямо из браузера. Экспорт проектов доступен на все вышеперечисленные платформы, а также на iOS.
+
+## Как установить Godot Engine?
+
+Уникальность клиента Godot Engine в том, что он запускается автономно и не требует полноценной установки в операционную систему. Достаточно выбрать подходящую версию на сайте, скачать ZIP-архив, распаковать его и просто открыть исполняемый файл с префиксом stable_win64. Godot Engine можно установить и из Steam.
+
+![gesa.png](gesa.png)
+
+## Система узлов и сцен в Godot Engine — как всё устроено?
+
+При запуске редактора Godot Engine появляется меню, где можно создать новый проект, загрузить существующий или перейти в библиотеку ассетов (требуется интернет-соединение). В последнем случае откроется окно со множеством ярлыков для загрузки плагинов, шаблонов и различных демосцен.
+
+
+### Приветственное окно клиента Godot при первом запуске.
+![ges.jpg](ges.jpg)
+
+### Окно библиотеки ассетов.
+![gess.jpg](gess.jpg)
+
+
+Архитектура движка Godot основана на узлах и сценах. Узлы — это основные блоки, связанные с наполнением будущей игры. Это изображения, звуки, анимации, таймеры, надписи и так далее. Например, на скриншоте ниже выбран узел Crows — это узел-родитель, который содержит несколько дочерних узлов. В данном случае под такими узлами подразумеваются все анимированные спрайты ворон на карте.
+
+### Во вьюпорте представлен демонстрационный проект Isometric Game Demo из библиотеки ассетов.
+![geb.jpg](geb.jpg)
+
+В развёрнутом списке можно точечно выбрать любой дочерний узел, и он выделится во вьюпорте для дальнейших манипуляций.
+
+### Когда выбран анимированный спрайт, в нижней части редактора открывается таймлайн с раскадровкой.
+![get.jpg](get.gpg)
+
+
+В Godot важна иерархия узлов: за каждым из них закреплена отдельная задача. Пользователю необходимо комбинировать узлы и таким образом постепенно формировать структуру будущей игры.
+
+Сцены в Godot фактически выполняют роль органайзеров, где под одним корневым узлом собраны все остальные. После сохранения сцена начинает работать как новый тип узла, который в свою очередь также может стать дочерним узлом или просто одним из основных блоков новой сцены.
+
+
+### Сцена в Godot: стрелкой показан корневой узел.
+![gek.jpg](gek.jpg)
+
+
+Выходит, в глобальном смысле клиент Godot — это редактор сцен. В зависимости от дизайна уровней может быть сколько угодно сцен, и тем не менее в структуре всегда есть основная сцена, которая загружается при запуске игры.
+
+## Языки программирования в Godot Engine.
+
+Программирование в Godot используют для расширения функций и возможностей узлов. Официально движок поддерживает четыре языка: GDScript, C#, а также C и C++. Последние два работают с помощью GDExtension (с версии 4.0). Благодаря сообществу также доступны внешние расширения для Rust, Nim, Python и JavaScript.
+ 
+Интеграция столь большого количества языков позволяет гибко выстраивать архитектуру проекта и адаптировать её под разные задачи. Например, в рамках одной игры можно написать основную часть кода на GDScript, а для сложных алгоритмов использовать C#. Впрочем, можно ограничиться и одним языком.
+
+###### Создатели движка рекомендуют начинающим пользователям сперва освоить программирование в Godot на GDSсript, так как язык изначально создан для этого движка. Его синтаксис по сравнению с другими достаточно простой, что позволяет сократить объём файлов, а также ускорить процессы компиляции и загрузки. Отмечается некоторое сходство с Python, Lua и Squirrel, так как разработчики GDSсript вдохновлялись именно этими языками программирования.
+
+## Работа с 2D и 3D в Godot Engine.
+
+Как уже отмечалось ранее, Godot Engine подходит для разработки игр в 2D и 3D. Для каждого вида графики в редакторе встроены собственные инструменты, функции и технологии рендеринга.
+
+Для 2D-графики в Godot доступен собственный движок рендеринга и физики, который поддерживает множество функций, в том числе:
+* тайловые карты — в контексте Godot под этим подразумевается сетка из плиток для создания игрового уровня. С помощью узла TileMapLayer можно распределять небольшие фрагменты изображений словно кистью — вместо того, чтобы перемещать каждый элемент вручную; 
+* частицы;
+* динамическое 2D-освещение сцены;
+* физику и коллизии;
+* продвинутую систему слоёв и модификаторов — CanvasItem;
+* систему анимаций, в том числе анимирование на основе 2D-скелетов и вырезной анимации.
+
+
+Для более удобной разработки 2D-сцен, уровней и элементов UI в редакторе доступен специальный 2D-режим с фиксированным углом обзора и системой координат X, Y.
+
+### 2D-режим, отображающий демонстрационный уровень изометрической игры.
+![ge2d.jpg](ge2d.jpg)
+
+
+Подход к разработке 3D-игр в Godot Engine значительно эволюционировал, начиная с версии 4.0. Сейчас движок поддерживает три вида рендеринга.
+
+1. Forward+ — для десктопных платформ. Использует графические API Vulkan, Direct3D 12 и Metal (для систем Apple). Mobile — несмотря на название, подходит не только для мобильных проектов, но и для десктопных, если будущая игра не предполагает графических изысков. Использует те же API, что и Forward+.
+2. Compatibility (GL Compatibility) — предназначен для десктопных и мобильных платформ со слабой конфигурацией и использует API OpenGL.
+3. Для работы с 3D-графикой существует специальный режим с трёхмерным вьюпортом, где ассетами можно манипулировать в пространстве трёх осей (X, Y, Z). Помимо рендеринга, 3D-редактор поддерживает множество актуальных функций.
+
+Вот некоторые из них:
+* PBR-материалы, то есть материалы с учётом физических свойств поверхности;
+* различные типы затенения;
+* помимо подхода с использованием текстур Metallic и Roughness, доступно ORM-текстурирование. Под ним подразумевается метод, при котором текстуры Ambient Occlusion, Metallic и Roughness объединены в одну карту. За каждым из свойств закреплён отдельный цветовой канал — красный, синий или зелёный;
+* освещение в реальном времени;
+* постобработка и спецэффекты (объёмный туман, частицы, анимированные шейдеры неба и так далее);
+* базовые инструменты для создания примитивов, включая процедурную геометрию;
+* физика в 3D: твёрдые тела (rigid bodies), коллизии, физика транспортных средств (аркадная), рэгдолл-система;
+* импорт моделей в расширениях .glTF(2.0), .fbx (с версии 4.3 по умолчанию встроен импорт с помощью инструмента Ufbx Importer), .dae, .obj (для статических объектов);
+* внутриигровые камеры с отображением в перспективе и в ортографическом режиме и с усечённым пространством;
+* поддержка VR и AR.
+
+### Загруженная модель здания в 3D-вьюпорте.
+![ge3d.jpg](ge3d.jpg)
+
+
+## Преимущества и недостатки Godot Engine.
+
+### Преимущества Godot Engine.
+
+* Простой и независимый клиент с поддержкой русского языка. Он не требует установки в операционную систему и быстро грузится, равно как и проекты в нём. Кроме того, у клиента относительно невысокие системные требования.
+* Прозрачные условия. Godot распространяется по лицензии MIT — это значит, что его можно использовать абсолютно бесплатно, в том числе иметь полный доступ к исходному коду движка, модифицировать его и создавать на нём коммерческие проекты. Нет доплат за сервисы и лицензионных отчислений — и, вероятнее всего, в ближайшем будущем не произойдёт никаких изменений в этой политике, что порой характерно для коммерческих движков. Впрочем, пользователь может добровольно поддержать упомянутую выше Godot Foundation.
+* Кроссплатформенность. Помимо экспорта в Windows, macOS, Linux, Android, iOS, HTML5 и WebGL, с версии 4.0 запускать проект и вносить в него изменения можно с разных устройств, что обеспечивает комфортное тестирование.
+* Архитектура, построенная на узлах. Древовидная иерархия позволяет структурировать блоки с контентом и использовать модульный подход в сборке сложных сцен.
+* Редактор, в котором удобно работать как с 2D, так и с 3D. При этом движок предлагает разнообразный набор функций под самые разные игры — от пиксельного платформера до реалистичного симулятора-головоломки.
+* Поддержка расширений и модификаций. Помимо официального модуля GDExtention, позволяющего писать классы и скрипты для интеграции в движок, пользователь может создавать собственные расширения, без необходимости пересобирать само ядро.
+
+
+## Недостатки Godot Engine.
+
+* Возможности 3D-графики уступают другим движкам. Инструменты для работы с 3D значительно эволюционировали, начиная с версии 4.0, но по-прежнему сильно ограничены по сравнению с тем, что предлагают Unity и Unreal Engine. Иными словами, Godot подходит для игр с упрощённой 3D-графикой. Если же ваш проект предполагает фотореалистичный визуальный стиль уровня AAA, лучше выбрать другой движок.
+
+* Ограниченный выбор ассетов и плагинов по сравнению с маркетплейсом Unity Asset Store и площадкой Fab. Во многом это связано с тем, что все дополнения в библиотеке ассетов Godot создаются сообществом на энтузиазме, а большинство производителей контента и дополнительных инструментов заинтересованы в первую очередь в коммерческой реализации своего контента.
+
+* Могут возникнуть сложности при импорте моделей и анимаций. И хотя встроенный инструмент для импорта моделей в формате FBX работает стабильнее, чем предыдущий FBX2glTF, при загрузке сложных анимаций всё равно могут возникать ошибки. К тому же стоит понимать, что этот процесс так или иначе технически осуществляется через конвертацию, и основным форматом остаётся .glTF (2.0).
+
+* Портирование на консоли требует сторонних решений. Данные девкитов не подлежат разглашению, что противоречит принципам открытой лицензии MIT. В результате портировать игру, созданную на Godot, придётся через издателя или компанию, которая предлагает соответствующие услуги. В этом случае данные о девкитах остаются у третьей стороны.
+
+* Godot по большей части ориентирован исключительно на соло-разработчиков и небольшие студии. У него нет приоритетной поддержки, инструментов для совместной работы, сервисов аналитики, интеграции востребованных решений (например, звуковых движков). К тому же, как упоминалось ранее, отсутствует прямая поддержка портирования на консоли, что важно для AA и AAA-проектов.
+
+## Итог
+
+Godot — продвинутый, гибкий и бесплатный движок с прозрачными условиями. Его относительно простая архитектура, поддержка 2D и 3D и открытый исходный код вполне подойдут для инди-разработчиков, небольших команд, а также для преподавателей и студентов.
+
+Если вы хотите быстро втянуться в цикл разработки и сделать полноценную игру без затрат на лицензии, несмотря на некоторые ограничения инструментов, — Godot вполне справится с такой задачей. И шоурилы игр на этом движке полностью это подтверждают.