След пет месеца разработка е публикувана версия на свободния игрови двигател 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), позволяваща реализиране на определени 3D ефекти, като светене, в 2D игри. В метода за рендериране 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











