Godot

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до: навігація, пошук
Godot Engine
Godot logo.svg
Знімок екрану Годо
Інтерфейс Godot v2.1
Тип Гральний рушій
Розробник Співавторство розробників
Стабільний випуск 2.1.4 (27 серпня 2017; 89 днів тому )
Версії 2.1.4[1]
Репозиторій github.com/godotengine/godot
Операційна система
Написано на C++[2]
Доступні мови Англійська
Стан розробки Активний
Ліцензія Ліцензія MIT
godotengine.org

CMNS: Godot Engine на Вікісховищі

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

Огляд[ред.ред. код]

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

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

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

Скриптинг[ред.ред. код]

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

Годо має власний інтегрований редактор скриптів з можливостями доповнення коду, авто-відступами, підсвіткою синтаксису, швидким доступом до повного 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).

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

Ігрова фізика[ред.ред. код]

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

Цільові платформи[ред.ред. код]

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

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

Інші можливості[ред.ред. код]

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

Про назву[ред.ред. код]

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

Використання в іграх[ред.ред. код]

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

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

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

Примітки[ред.ред. код]

  1. https://api.github.com/repos/godotengine/godot/releases
  2. The Godot Game Engine Open Source Project on Open Hub. Процитовано 30 July 2015. 
  3. Linietsky, Juan. Godot 2.0: Talking with the Creator. 80.lv. Процитовано 18 June 2016. 
  4. File Systems. Godot documentation. Godot. Архів оригіналу за 6 February 2016. Процитовано 29 January 2016. 
  5. GDScript History. Godot documentation. Godot. Архів оригіналу за 6 February 2016. Процитовано 29 January 2016. 
  6. Godot Animation tutorial. Godot Documentation. Архів оригіналу за 6 February 2016. Процитовано 29 January 2016. 
  7. Plugins!. 
  8. Godot Engine Reaches 1.0, Releases First Stable. 15 December 2014. Архів оригіналу за 16 December 2014. Процитовано 16 December 2014. 
  9. Godot Game Engine is Conservancy's Newest Member Project. Процитовано 13 November 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 October 2016. 
  12. Juan Linietsky presentation of Godot at RMLL 2015 in Beauvais, France. 7 July 2015. 
  13. Awesome Godot - a curated list of free/libre games, plugins, add-ons and scripts for Godot.. GitHub. Процитовано 25 July 2015. 

Зовнішні посилання[ред.ред. код]