Godot

Godot Engine
Знімок екрану Годо
Інтерфейс Godot v2.1
Типігровий рушій
АвториJuan Linietskyd і Ariel Manzurd
РозробникиСпівавторство розробників
Стабільний випуск4.2 (30 листопада, 2023; 12 місяців тому (2023-11-30))
ПлатформаWindows, macOS і Linux
Операційна система
Мова програмуванняC++[1]
Доступні мовиАнглійська
Стан розробкиАктивний
ЛіцензіяЛіцензія MIT
Онлайн-документаціяdocs.godotengine.org(англ.)
Репозиторійgithub.com/godotengine/godot
Вебсайтgodotengine.org

Godot («Ґодо́», від фр. Godot)— відкритий багатоплатформовий 2D та 3D гральний рушій під ліцензією MIT, що розробляється співавторством Godot Engine Community. До публічного релізу у вигляді відкритого ПЗ рушій використовувався всередині деяких компаній Латинської Америки.[2] Середовище розробки працює на Windows, Linux, OS X, BSD і Haiku та може експортувати ігрові проєкти на ПК, консолі, мобільні та веб платформи.

Огляд

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

Загальна архітектура рушія побудована навколо концепції дерева з наслідуваних «сцен». Кожен елемент сцени (вузол, нод), в будь-який момент сам може стати повноцінною сценою. Тож при розробці можна легко змінювати повністю всю архітектуру проєкту, розширювати її елементи в будь-яку сторону та працювати із комплексними сценами на рівні простих абстракцій.

Всі ігрові ресурси, від скриптів до графічних ассетів та ігрових сцен, зберігаються в теці проєкту як звичайні файли, та не є частиною складної бази даних проєкту. Ресурси, що не представляють собою комплексних даних, зберігаються у простих текстових форматах (наприклад скрипти та сцени, на відміну від моделей та текстур). Ці рішення дозволяють значно спростити різним командам розробників працювати з системами керування версій.[3]

Скриптинг

Гра створюється або повністю на C++, або з використанням власної високорівневої динамічно типізованої скриптової мови програмування під назвою GDScript, синтаксис якої нагадує мову Python. Відмінністю від Python є в першу чергу чітка типізація змінних при оголошенні та загальна оптимізація скриптової системи під базовану на сценах архітектуру рушія. Розробники Godot заявляли, що була випробувана інтеграція декількох зовнішніх скриптових мов програмування (а саме Lua, Python та Squirrel) перш ніж було прийнято рішення використовувати власну скриптову мову. І тільки це дозволило досягти потрібного рівня оптимізації під рушій та інтеграції в розробницьке середовище.[4]

Godot має власний інтегрований редактор скриптів з можливостями доповнення коду, автовідступами, підсвіткою синтаксису, швидким доступом до повного API рушія та деякими іншими можливостями. Також в системі є гнучкий зневаджувач, профайлер, монітор використаної відеопам'яті та віддалений редактор сцен для контролю за елементами в режимі реального часу.

Рендеринг

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

Для створення шейдерів використовується спрощена шейдерна мова, що є близькою підмножиною мови GLSL. Потім шейдер можна використовувати в матеріалі, екранному ефекті для 2D-візуалізації. Шейдер поділяється на секції vertex та fragment. Також можливе повноцінне створення шейдерів в візуальному редакторі.

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

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

Ігрова фізика

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

Цільові платформи

В кінці розробки проєкт може бути проекспортований на різні цільові платформи, які можна розділити на ПК, мобільні, веб та, консолі. Для різних платформ можна задавати різні параметри, такі як спосіб зберігання даних (та їх захист при необхідності), компресія текстур, роздільна здатність, а також деякі унікальні параметри, характерні тільки якійсь конкретній платформі (наприклад роздільна здатність для Android).

Поточна підтримка платформ включає Windows, Linux, OS X, BSD, Haiku, Android, iOS, BlackBerry 10, HTML5. Також можна проводити експорт на інші платформи вручну через компілювання рушія з SDK цільової платформи. Використання Godot незначної кількості зовнішніх бібліотек полегшує цей процес.

Інші можливості

  • Багатопоточність (скрипти працюють в паралельних потоках та самі можуть їх створювати)
  • Система плагінів (плагін може бути написаний на C++ або на GDScript[6])
  • 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.[7]

4 листопада 2015 проєкт Godot приєднався до організації Software Freedom Conservancy.[8]

23 лютого 2016 вийшла стабільна версія 2.0. Основні акценти в її розробці ставились на істотне підвищення зручності роботи в рушії через робоче середовище.[9]

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

Версія 3.0 була випущена 29 січня 2018 (розробка зайняла 18 місяців[11]). В цій версії були повністю перероблені рендер, аудіосистема та система імпорту асетів. Також додалася підтримка мови C# (через Mono), інтерфейси сторонніх бібліотек через систему GDNative[12] та фізичний рушій Bullet.

Про назву

Хуан Лінетськи на одній з презентацій повідомив, що назва «Godot» є прямою відсилкою до п'єси Семюеля Беккета «Чекаючи на Ґодо». Вона репрезентує нескінченне бажання додавати нові можливості в рушій, що буде постійно наближувати його до виключно вичерпного інструменту все ближче і ближче, але цей процес не матиме кінця.[13]

Критика

Колишній український супроводжувач-волонтер проєкту Godot Андрій «Xrayez» Дорошенко публічно звинуватив керівництво Godot у підтримці російської агресії після його бану з проєкту та заборони участі та взаємодії в усіх офіційних спільнотах Godot[14]. Хуан Ліницький відкинув звинувачення, зауваживши, що сам має українське походження, а Godot Foundation зареєстроване в Нідерландах (що робить економічні зв'язки з Російською Федерацією неможливим через санкції), що усе керівництво Godot підтримує Україну на своїх особистих каналах і що бан Дорошенка відбувся суто через його конфліктну поведінку[15]. Дорошенко спростував звинувачення Ліницького, вказавши на суперечливі заяви, такі як походження Хуана, оскільки пращури Ліницького жили ще при Російсьскій Імперії, а також те, що не все керівництво Godot висловлювало підтримку України, звинувативши керівництво у лицемірстві та брехні[16].

Використання в іграх

Ігри, створені на Godot, переважно є інді-іграми: Endoparasitic, Cassette Beats, Brotato, The Legend Of Lumina, Friday Night Funkin VR, ProtoCorgi, Nightmare In Squidville, Backpack Battles, Project Kat: Paper Lily Prologue, SCP: Bloodwater, Getting Over It With Bennett Foddy. Виняток складає Sonic Colors: Ultimate[17].

Примітки

  1. The Godot Game Engine Open Source Project on Open Hub. Архів оригіналу за 12 січня 2020. Процитовано 30 липня 2015.
  2. Linietsky, Juan. Godot 2.0: Talking with the Creator. 80.lv. Архів оригіналу за 13 червня 2018. Процитовано 18 червня 2016.
  3. File Systems. Godot documentation. Godot. Архів оригіналу за 6 February 2016. Процитовано 29 січня 2016. {{cite web}}: Cite має пустий невідомий параметр: |df= (довідка) [Архівовано 2016-02-06 у Wayback Machine.]
  4. GDScript History. Godot documentation. Godot. Архів оригіналу за 6 February 2016. Процитовано 29 січня 2016. {{cite web}}: Cite має пустий невідомий параметр: |df= (довідка) [Архівовано 2016-02-06 у Wayback Machine.]
  5. Godot Animation tutorial. Godot Documentation. Архів оригіналу за 6 February 2016. Процитовано 29 січня 2016. {{cite web}}: Cite має пустий невідомий параметр: |df= (довідка) [Архівовано 2016-02-06 у Wayback Machine.]
  6. Plugins!. Архів оригіналу за 19 березня 2017. Процитовано 18 березня 2017.
  7. Godot Engine Reaches 1.0, Releases First Stable. 15 грудня 2014. Архів оригіналу за 16 December 2014. Процитовано 16 грудня 2014. {{cite web}}: Cite має пустий невідомий параметр: |df= (довідка) [Архівовано 2014-12-16 у Wayback Machine.]
  8. Godot Game Engine is Conservancy's Newest Member Project. Архів оригіналу за 18 вересня 2019. Процитовано 13 листопада 2015.
  9. Godot Engine reaches 2.0 stable. Архів оригіналу за 19 березня 2017. Процитовано 18 березня 2017.
  10. Mozilla Awards $385,000 to Open Source Projects as part of MOSS “Mission Partners” Program. The Mozilla Blog. Архів оригіналу за 17 червня 2020. Процитовано 17 жовтня 2016.
  11. Архівована копія. Архів оригіналу за 30 січня 2018. Процитовано 1 лютого 2018.{{cite web}}: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title (посилання)
  12. Архівована копія. Архів оригіналу за 30 січня 2018. Процитовано 1 лютого 2018.{{cite web}}: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title (посилання)
  13. Juan Linietsky presentation of Godot at RMLL 2015 in Beauvais, France. 7 July 2015. Архів оригіналу за 5 жовтня 2015. Процитовано 17 березня 2017.
  14. Чому Godot Engine проти України: російський вплив на модель управління Godot та Open Source. DOU (укр.). Процитовано 31 січня 2024.
  15. Відповідь творця Godot Хуана Ліницького на звинувачення у російських зв’язках. DOU (укр.). Процитовано 31 січня 2024.
  16. Відповідь Андрія Дорошенка на «псевдоінтерв’ю» творця Godot Хуана Ліницького. DOU (укр.). Процитовано 3 лютого 2024.
  17. Darling, Rena (15 червня 2023). 12 Popular Games Made With The Godot Engine. TheGamer (англ.). Процитовано 6 квітня 2024.

Посилання