След пет месеца разработка, издаден е релиз на свободния игрови двигател Godot 4.2, подходящ за създаване на 2D и 3D игри. Двигателят поддържа лесен за учене език за задаване на игровата логика, графичен интерфейс за проектиране на игри, система за разгръщане на игри с едно кликване, широки възможности за анимация и симулация на физични процеси, вграден отладчик и система за откриване на проблеми с производителността. Кодът на игровия двигател, средата за проектиране на игри и свързаните средства за разработка (физически двигател, звуков сървър, бекенди за 2D/3D рендеринг и др.) се разпространява под лицензия MIT.
Изходните кодове на двигателя бяха отворени през 2014 г. от студио OKAM, след десет години развитие на собствен продукт от професионално ниво, който беше използван за създаване и публикуване на много игри за PC, игрови конзоли и мобилни устройства. Двигателят поддържа всички популярни настолни и мобилни платформи (Linux, Windows, macOS, Wii, Nintendo 3DS, PlayStation 3, PS Vita, Android, iOS, BBX), а също така и разработка на игри за Web. Готови за стартиране бинарни версии са създадени за Linux, Android, Windows и macOS.
Основни промени:
- За разработчиците на 2D игри е добавена поддръжка за принудително целочислено мащабиране, което позволява получаването на квадратна пикселна решетка, независимо от реалното съотношение на страните. Осигурена е възможност за получаване на барицентрични координати на нормали от точки на пресичане на обекта с лъч. Добавени са методи Rotate_toward и Angle_difference за коректна обработка на въртенето и ъглите. В възлите Line2D е добавено свойството „closed“ за създаване на затворени линии с непрекъснато запълване.

- Направена е работа за повишаване на надеждността на системата за анимация. Преработени и унифицирани са възлите AnimationPlayer и AnimationTree, общите части от които са отделени в междинен клас AnimationMixer. Добавена е опция за детерминирано смесване. В предвью анимация е добавен режим за калькиране (onion skinning), който включва показ на полупрозрачни наложения с предишни и следващи кадри на анимацията.

- Възможностите за „запичане“ на навигационната мрежа (baking, преобразуване в статична форма) за 2D са приближени до възможностите, които преди това бяха налични в 3D навигацията, например, за 2D мрежи е реализирана поддръжка за работа с физически тела, экземпляри на полигонални мрежи, прости многоъгълници и тайлови карти (tilemap). В сървъри В 2D и 3D навигацията е добавена поддръжка за многонишково запичане на мрежи.

- Извършен е рефакторинг на кода за работа с тайлове и тайлови карти. Оптимизирани са операциите по групиране на блокове и сортиране по ос Y, което значително намали времето за обновяване на тайловете. Извършена е работа по повишаване на удобството за създаване на тайлови карти и тяхното използване. Добавен е инструмент за обръщане и завъртане на тайловете при тяхното разполагане. Подобрени са инструментите за редактиране на многоъгълници и тайлови сцени.

- В редактора на сценарии GDScript се появи възможност за създаване на именувани области на кода за свиване на блокове по време на редактиране и опростяване на навигацията. В отладчика на скриптове е добавена пълна поддръжка за многопоточен код, стек на изпълнението и точки на спиране. В скриптовете на базата на C#/.NET е реализирана поддръжка за платформите Android (препоръчва се .NET 7.0+) и iOS (препоръчва се .NET 8.0). В GDScript е разширена поддръжката за статично типизиран код, добавена е поддръжка на стрингови литерали r-string (raw string), разширени са възможностите на оператора match.

- В 3D изгледа е подобрена поддръжката за управление на трансформацията в стил Blender, използвайки мишка и горещи клавиши. Показването на разширена визуална информация в 3D изгледа сега се извършва само за избрани обекти. Добавени са допълнителни индикатори за елементи като декали и обемна мъгла. Подобрена е работата с гизмо (gizmo) — всяка страна на обемни форми сега може да се разширява поотделно в изгледа.

- Подобрени са контекстните менюта и изскачащите подсказки в панелите „Инспектиране“ и „Сигнали“. В редактора на теми са добавени подсказки с описание на свойствата. В панела за работа с файловата система се появи възможност за визуално обозначаване на директории чрез назначаване на различни цветове. Преработен е интерфейсът на редактора за ресурси на градиенти. В редактора на текстурни области е унифицирана работата с всички поддържани ресурси, включително стилове и атласи.

- В библиотеката на асетите е подобрен изходът на резултатите от търсене и е добавена възможност за избор на друг каталог за инсталиране на добавка или ресурс.

- В мениджъра на проекти е преработено разположението на основните елементи за управление и е модернизиран интерфейсът на вноса на проекти.

- Разширени възможности за разработка на плъгини за редактора. Осигурен е достъп до цялата функционалност на редактора чрез класа EditorInterface. Реализирани са удобни методи за директен достъп до 2D и 3D изгледи. Добавена е възможност за показване на диалога с предупредителното за несъхранени промени.
- Продължава развитието на експерименталната система за разширения GDExtension, която позволява използването на нискоуровневи езици, като C++, за скриптово програмиране на игри, без необходимост от повторно компилиране на двигателя и без промени в кода. Добавена е възможност за използване на GDExtensions при експортиране за Web.
- В потребителския интерфейс е променено управлението на фокуса. Реализирана е възможност за прехвърляне на фокуса към отделни раздели на таб панела, включително при навигация с помощта на клавиатурата. В контролите (Control) е добавен метод за търсене на следващия съседен фокусируем елемент. Значително са преработени възлите за изграждане на графове (GraphEdit и GraphNode). Разширени са възможностите за настройка на инструменталната лента на основния възел GraphEdit.

- Добавена е възможност за промяна на типа на вноса на ресурси в движение с автоматично обновление на сцените и ресурсите, без да е необходим рестарт на редактора. Разширени са наличните опции за внос и е осигурена възможност за промяна на физическите свойства на внасяните обекти, както и параметрите за сенки и видимост. Добавена е възможност за предварителен преглед на анимация в диалоговия прозорец за внос. Разширена е поддръжката за внос на ресурси от Blender във формат GLTF. Добавена е поддръжка за внос на изображения във формат KTX.

- Внесени са оптимизации, насочени към повишаване на производителността на рендерирането. За ускорение на работата на мобилни устройства е осъществено разделяне на растерните бариери на вершинни и фрагментни компоненти. Ускорена е генерацията на шумни текстури. Добавен е предварителен проход за изчисление на дълбочината. Намалено е времето за зареждане и компилиране на шейдъри. Оптимизирано е складирането на полигони в паметта. Добавена е поддръжка за компресия на полигони за намаляване на пропускната способност при предаване.
- Добавена е възможност за създаване на собствени текстурни обекти (пример за използване на изчислителни шейдъри за създаване на текстура с ефект на вода).
- Добавен API за извикване на код в рендеринг потока, което може да е необходимо, например, когато трябва да се синхронизира изчислителен шейдър с рендирането.
- Добавена е поддръжка за версия 2.2 на технологиите за суперсуперпозиция AMD FSR (FidelityFX Super Resolution), използваща алгоритми за пространствено мащабиране и реконструкция на детайлите за намаляване на загубата на качество на изображението при увеличаване на мащаба и преобразуване в по-висока резолюция.
- Предложен е нов подавител на шумове JNLM, използващ карти за осветление (lightmapper) и изчислителни шейдъри. JNLM е значително по-бърз от предишната библиотека за елиминиране на шумове OIDN (Open Image Denoise), но в някои ситуации отстъпва по качество.
- В методите за рендеринг Forward+ и Mobile е добавена поддръжка за 2D рендеринг в разширен динамичен диапазон на яркост (HDR), което позволява да се реализират в 2D игри някои 3D ефекти, като например сияние. В метода за рендеринг Compatibility е добавена поддръжка за тримерни сенки.
- За macOS и Windows е предложен нов драйвер за OpenGL рендеринг, използващ прослойка ANGLE, която трансформира OpenGL извиквания в API Direct3D 11 и Metal.
- Системата за симулация на частици е преработена за опростяване на поддръжката и разширяване на управлението на движението на частиците. Например, вече може да се анимира и наследява скоростта на движение, а също и да се променя броят на излъчваните частици. Добавен е инструмент за преобразуване на кода за генериране на частици, използващ CPU, в еквивалентен код, използващ GPU.
- Добавена е поддръжка за използване на родни за Linux, macOS и Windows диалози за избор на файлове, както и възможност за копиране и поставяне на изображения чрез буфер за обмен.
- Преработена е архитектурата на Godot за платформата Android, която е освободена от обвързването с Android компонента Fragment, което позволи да се намали времето за стартиране на приложения и игри и да се реализира възможност за работа с няколко прозореца.
- Установено е формироването на официални Linux сборки на редактора Godot за 32- и 64-битови платформи ARM.
Източник: opennet.ru











