Godot

Godot Engine
Godot logo.svg
Godot 3.1 screenshot.png
Тип Игровой движок
Автор Juan Linietsky[d] и Ariel Manzur[d]
Разработчик Соавторство разработчиков
Написана на Си[1] и C++[1]
Операционная система GNU/Linux[d], macOS, Microsoft Windows, BSD[d], iOS, Android, Универсальная платформа Windows, HTML5, WebAssembly, Xbox и Windows Phone
Первый выпуск 2007
Последняя версия 3.2.3 (17.09.2020)
Тестовая версия n/a
Читаемые форматы файлов BMP, DirectDraw Surface, OpenEXR, RGBE image format[d], формат обмена файлами JPEG[d], PNG, Truevision TGA, SVG, WebP, WAV, Vorbis, glTF[d], FBX, COLLADA и Obj
Состояние Активное
Лицензия Лицензия MIT
Сайт godotengine.org
Commons-logo.svg Медиафайлы на складе

Godot Engine (фр. gó-doh[2] ) — открытый кроссплатформенный 2D и 3D игровой движок под лицензией MIT, который разрабатывается сообществом Godot Engine Community. До публичного релиза в виде открытого ПО движок использовался внутри некоторых компаний Латинской Америки.[3] Среда разработчика работает на Linux, OS X, Windows, BSD и Haiku и может экспортировать игровые проекты на ПК, консоли, мобильные и веб-платформы.

Содержание

  • 1 Обзор
    • 1.1 Скриптинг
    • 1.2 Рендеринг
    • 1.3 Игровая физика
    • 1.4 Целевые платформы
    • 1.5 Прочие возможности
  • 2 История
  • 3 О названии
  • 4 Использование в играх
  • 5 Примечания
  • 6 Литература
    • 6.1 Книги
    • 6.2 Статьи
  • 7 Ссылки

Обзор

Задача Godot — быть максимально интегрированной и самодостаточной средой для разработки игр. Среда позволяет разработчикам создавать игры с нуля, не пользуясь более никакими инструментами, за исключением тех, которые необходимы для создания игрового контента (элементы графики, музыкальные треки и т. д.). Процесс программирования также не требует внешних инструментов (хотя при необходимости использовать внешний редактор это можно сделать относительно легко).

Общая архитектура движка построена вокруг концепции дерева из наследуемых «сцен». Каждый элемент сцены (нод), в любой момент сам может стать полноценной сценой. Поэтому при разработке можно легко изменять полностью всю архитектуру проекта, расширять её элементы в любую сторону и работать с комплексными сценами на уровне простых абстракций.

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

Скриптинг

Игра создаётся с использованием собственного высокоуровневого динамически типизированного скриптового языка программирования под названием GDScript, синтаксис которого напоминает язык Python. Отличием от Python является в первую очередь чёткая типизация переменных при объявлении и общая оптимизация скриптовой системы под основанную на сценах архитектуру движка. Есть возможность использовать скриптинг на C++/D/Rust и другие языки через систему GDNative. Также существует версия Godot с поддержкой языка C# (Godot Engine Mono Version), однако в данный момент она всё ещё дорабатывается и нестабильна. Разработчики Godot заявляли, что была опробована интеграция нескольких внешних скриптовых языков программирования (а именно Lua, Python и Squirrel) прежде чем было принято решение использовать собственный скриптовый язык. И только это позволило получить необходимый уровень оптимизации для движка и интеграции в среду разработчика.[5]

Godot имеет собственный интегрированный редактор скриптов с возможностями дополнения кода, авто-отступами, подсветкой синтаксиса, быстрым доступом к полному API движка и некоторыми другими возможностями. Также в системе имеется гибкий отладчик, профайлер, монитор использованной видеопамяти и удалённый редактор сцен для контроля элементов в режиме реального времени.

Начиная с версии 3.0 также поддерживается визуальное программирование на Visual Scripting.

Рендеринг

Графическая система для всех поддерживаемых платформ построена на OpenGL ES 3.0. Рендеринг включает в себя технологии order-independent transparency, normal mapping, specularity, полноэкранные постэффекты типа FXAA, bloom, DOF, HDR, гамма-коррекции, distance fog, динамические тени на основе shadow maps и другие.

Для создания шейдеров используется упрощённый шейдерный язык, который является близким подмножеством языка GLSL. Затем шейдер можно использовать в материале, экранном эффекте для 2д-визуализации. Шейдер делится на секции vertex и fragment. Также возможно полноценное создание шейдеров в визуальном редакторе.

Godot имеет отдельную графическую подсистему для 2D, которую можно использовать независимо от 3D. Примерами возможностей 2D являются графический интерфейс (рабочая среда Godot является главным примером возможностей графического интерфейса), спрайты, тайловая графика (квадратная, изометрическая и собственный формат), parallax scrolling, двумерное освещение и тени (точечного типа), система частиц и некоторые другие возможности. Разработчик может легко комбинировать и смешивать 2D и 3D в обоих направлениях (с помощью Viewport Node).

Окружение разработчика имеет встроенную систему анимирования и управляющие элементы для работы со скелетной анимацией, шейп-анимацией и сценами-заставками. А благодаря основанному на нодах дизайне движка, через редактор анимаций можно анимировать вообще любой параметр, который может присутствовать в игре.[6] Также есть возможность делать вызовы любых собственных функций из ключа анимационного трека, что позволяет значительно упростить анимацию сложных сцен.

Игровая физика

Физический движок для 2D и 3D разработан с нуля, что помогло достичь требуемого уровня оптимизации физической подсистемы. Реализованы возможности рейкастинга, обнаружение столкновений, динамики твёрдых тел и соединений между ними. Также имеется собственная реализация кинематического контроллера персонажа и 3D-контроллер автотранспортных средств с упрощённой системой подвески.

Целевые платформы

В конце разработки проект может быть экспортирован на разные целевые платформы, которые можно разделить на ПК, мобильные, веб и консоли. Для разных платформ можно задавать разные параметры, такие как способ хранения данных (и их защита при необходимости), компрессия текстур, разрешение, а также некоторые уникальные параметры, характерные только для какой-то конкретной платформы (например разрешения для Android).

Текущая поддержка платформ включает Windows (и UWP OS), MacOS, X11 (Linux, BSD), Android OS, iOS, HTML5. Также можно производить экспорт на другие платформы вручную через компилирование движка для SDK целевой платформы. Использование Godot незначительного количества внешних библиотек облегчает этот процесс.

Прочие возможности

  • Многопоточность (скрипты работают в параллельных потоках и сами могут их создавать)
  • Система плагинов (плагин может быть написан на C++ или на GDScript[7])
  • Occlusion culling и система порталов (отсечение невидимых объектов)
  • Render targets (рендеринг изображения из камеры в текстуру)
  • Уровни детализации мешей (уменьшают нагрузку на видеочип)
  • Light baking (смешивание статического глобального и динамического прямого освещения)
  • Визуальный редактор шейдеров (программа шейдера может быть создана в визуальном редакторе графов)
  • Навигационная сетка (для построения путей на базе полигональных мешей)
  • Алгоритм поиска A* (быстрый алгоритм для построения путей в простых матричных сетках)
  • Текстурный атлас (может значительно снизить нагрузку на видеопамять на мобильных устройствах)
  • Поддержка видеокодека Theora (видео можно выводить в текстуру)
  • Аудиосистема поддерживает кодеки Ogg Vorbis и WAV (Ogg Vorbis для потокового аудио и WAV для аудиосемплов)
  • Система ввода поддерживает клавиатуру, мышку, геймпад и сенсорный экран (разные устройства могут быть назначены на абстрактное действие, и оно будет рассматриваться независимо от использованного метода ввода)
  • Конвейер импорта/экспорта/компрессии текстур (гибкая система работы с ассетами и автоконвертирования в необходимые форматы)
  • Конвейер импорта целостных 3D сцен (например, из Blender можно импортировать сцену вместе с освещением, камерами, мешами столкновения, порталами и анимированными персонажами)

История

Программисты Хуан Линетски (англ. Juan Linietsky) и Ариель Манзур (англ. Ariel Manzur) начали разработку движка в 2007 году, и через некоторое время он уже использовался как закрытый программный продукт в некоторых компаниях. В феврале 2014 года разработчики приняли решение сделать технологию открытой, и выложили исходники движка под лицензией MIT на GitHub под названием Godot.

15 декабря 2014 движок достиг версии 1.0, первой стабильной версии нового продукта. В ней были добавлены дополнительные шейдеры, navimesh и lightmapping.[8]

4 ноября 2015 проект Godot присоединился к организации Software Freedom Conservancy.[9]

23 февраля 2016 вышла стабильная версия 2.0. Основные акценты в её разработке ставились на существенное повышение удобства работы в движке через рабочее окружение.[10]

22 июня 2016 проекту Godot от Mozilla Open Source Support (MOSS) «Mission Partners» присуждена сумма в $20,000 для того, чтобы добавить в проект поддержку WebSocket, WebAssembly и WebGL 2.0.[11]

О названии

Хуан Линьетски на одной из презентаций сообщил, что название «Godot» является прямой отсылкой к пьесе Сэмюеля Беккета «В ожидании Годо». Она характеризует непрекращающееся желание добавлять новые возможности в движок, что будет постоянно приближать его состояние к идеальному инструменту всё ближе и ближе, но этот процесс не будет иметь завершения.[12]

Использование в играх

Некоторые из игр, созданных в OKAM Studio

  • El Asombroso Show Zamba
  • Dog Mendonça & Pizza Boy
  • Anthill
  • Running Nose
  • Project Carnival

Некоторые из игр, созданных сообществом[13]

  • DynaDungeons
  • Minilens
  • Tanks of Freedom

Примечания

  1. 1 2 https://github.com/godotengine/godot
  2. What is the proper way to say «Godot»? — Godot Engine — Q&A (неопр.). godotengine.org. Дата обращения: 21 августа 2018.
  3. Godot 2.0: Talking with the Creator (неопр.). 80.lv. Дата обращения: 18 июня 2016.
  4. File Systems (неопр.). Godot documentation. Godot. Дата обращения: 29 января 2016. Архивировано 6 февраля 2016 года.
  5. GDScript History (неопр.). Godot documentation. Godot. Дата обращения: 29 января 2016. Архивировано 6 февраля 2016 года.
  6. Godot Animation tutorial (неопр.). Godot Documentation. Дата обращения: 29 января 2016. Архивировано 6 февраля 2016 года.
  7. Plugins! (неопр.).
  8. Godot Engine Reaches 1.0, Releases First Stable (неопр.) (15 декабря 2014). Дата обращения: 16 декабря 2014. Архивировано 16 декабря 2014 года.
  9. Godot Game Engine is Conservancy’s Newest Member Project (неопр.). Дата обращения: 13 ноября 2015.
  10. Godot Engine reaches 2.0 stable (неопр.).
  11. Mozilla Awards $385,000 to Open Source Projects as part of MOSS “Mission Partners” Program (неопр.). The Mozilla Blog. Дата обращения: 17 октября 2016.
  12. Juan Linietsky presentation of Godot at RMLL 2015 in Beauvais, France (неопр.) (7 июля 2015).
  13. Awesome Godot — a curated list of free/libre games, plugins, add-ons and scripts for Godot. (неопр.). GitHub. Дата обращения: 25 июля 2015.

Литература

Книги

  • Ariel Manzur, George Marques. Godot Engine Game Development in 24 Hours, Sams Teach Yourself: The Official Guide to Godot 3. 0. — Pearson Education, 2018. — 412 с. — ISBN 978-0-13-483509-9.
  • Chris Bradfield. Godot Engine Game Development Projects. — Packt Publishing, 2018. — 298 с. — ISBN 978-1-78883-150-5.
  • Robert Ciesla. Godot 2.1 by Juan Linietsky and Ariel Manzur // Mostly Codeless Game Development: New School Game Engines. — Apress, 2017. — С. 116—121. — 233 с. — ISBN 978-1-4842-2970-5.

Статьи

  • Kay Ewbank. Improved Godot Game Engine (англ.). http://www.i-programmer.info (2 March 2016). Дата обращения: 1 февраля 2018.
  • Anand Nayyar. Eight Top-of-the-Line Open Source Game Development Tools (англ.), Open Source For You (16 October 2017). Дата обращения 1 февраля 2018.

Ссылки

  • Официальный сайт (англ.)
  • Документация (API, GDScript, Shading language) (англ.)
  • Вопросы и ответы пользователей (англ.)
  • Твиттер главного разработчика (англ.)
  • Сообщество Вконтакте (рус.)
  • Русское сообщество Godot в интернете (рус.)
⚙️   В социальных сетях Facebook · Твиттер
Фото, видео и аудио YouTube
Тематические сайты GitHub · Open Hub
⛭Игровые движки
Графические
Свободные
GLScene
Horde3D[en]
Irrlicht
OGRE
OpenSceneGraph
Проприетарные
Outerra[en]
Физические
Свободные
Box2D
Bullet
Chipmunk[en]
Newton
ODE
Tokamak
Проприетарные
DMM
Havok Physics
PhysX
Общего назначения
2D
Свободные
Allegro
ClanLib
Cocos2d
Construct
Felgo[en]
idTech 1
Проприетарные
Construct 2
Game Maker: Studio
Stencyl
Vicious Engine
3D
Свободные
BGE
Bork3D[en]
Cafu[en]
Crystal Space
Delta3D
dim3[en]
Genesis3D[en]
Godot
id Tech 2, 3, 4
jMonkeyEngine
Lumberyard
Moai
Nebula Device
Panda3D
Pygame
QFusion
Проприетарные
Chrome Engine
CryEngine
Dagor Engine
Freescape
Gamebryo
Havok Vision
id Tech 5, 6, 7
Lithtech
Marmalade
RAGE
RenderWare
Source & 2
Unigine
Unity
Unreal Engine
Специализированные
2D
Свободные
LÖVE
Ren’Py
Stratagus
VASSAL
Wintermute
Проприетарные
M.U.G.E.N
NScripter
RPG Maker
3D
Свободные
DarkPlaces
OpenMW
OpenSim
Spring Engine
WorldForge[en]
Проприетарные
HeroEngine[en]
Другие
INSTEAD
Список игровых движков

Поделиться ссылкой:

Добавить комментарий