Godot

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

Godot Engine
Інтерфейс Godot v2.1
Тип Гральний рушій
Автор(и) Juan Linietskyd і Ariel Manzurd
Розробник Співавторство розробників
Стабільний випуск 3.2.2 (26 червня, 2020 (2020-06-26))
Репозиторій github.com/godotengine/godot
Операційна система
Мова програмування C++[1]
Доступні мови Англійська
Стан розробки Активний
Ліцензія Ліцензія MIT
Онлайн-документація docs.godotengine.org(англ.)
Вебсайт godotengine.org

 Godot Engine у Вікісховищі

Огляд

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

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

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

Скриптинг

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

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

Рендеринг

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

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

Годо має окрему графічну підсистему для 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 цільової платформи. Використання Годо незначної кількості зовнішніх бібліотек полегшує цей процес.

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

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

Про назву

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

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

Деякі з ігор, створених в OKAM Studio

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

Деякі з ігор, створених комюніті[14]

Примітки

  1. The Godot Game Engine Open Source Project on Open Hub. Процитовано 30 липня 2015.
  2. Linietsky, Juan. Godot 2.0: Talking with the Creator. 80.lv. Процитовано 18 червня 2016.
  3. File Systems. Godot documentation. Godot. Архів оригіналу за 6 February 2016. Процитовано 29 січня 2016.
  4. GDScript History. Godot documentation. Godot. Архів оригіналу за 6 February 2016. Процитовано 29 січня 2016.
  5. Godot Animation tutorial. Godot Documentation. Архів оригіналу за 6 February 2016. Процитовано 29 січня 2016.
  6. Plugins!.
  7. Godot Engine Reaches 1.0, Releases First Stable. 15 грудня 2014. Архів оригіналу за 16 грудня 2014. Процитовано 16 грудня 2014.
  8. Godot Game Engine is Conservancy's Newest Member Project. Процитовано 13 листопада 2015.
  9. Godot Engine reaches 2.0 stable.
  10. Mozilla Awards $385,000 to Open Source Projects as part of MOSS “Mission Partners” Program. The Mozilla Blog. Процитовано 17 жовтня 2016.
  11. https://godotengine.org/article/godot-3-0-released
  12. https://godotengine.org/article/dlscript-here
  13. Juan Linietsky presentation of Godot at RMLL 2015 in Beauvais, France. 7 July 2015.
  14. Awesome Godot - a curated list of free/libre games, plugins, add-ons and scripts for Godot.. GitHub. Процитовано 25 липня 2015.

Зовнішні посилання

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.