Godot
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 незначної кількості зовнішніх бібліотек полегшує цей процес. Інші можливості
ІсторіяПрограмісти Хуан Лінетськи (англ. 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]. Примітки
Посилання
|