Après cinq mois de développement, la version du moteur de jeu libre Godot 4.2 est publiée, adaptée à la création de jeux 2D et 3D. Le moteur prend en charge un langage de script de logique de jeu facile à apprendre, un environnement graphique pour la conception de jeux, un système de déploiement de jeux en un clic, de vastes capacités d'animation et de simulation physique, un débogueur intégré et un système de détection des goulets d'étranglement en performance. Le code du moteur de jeu, de l'environnement de conception de jeux et des outils de développement associés (moteur physique, serveur audio, backends de rendu 2D/3D, etc.) est distribué sous la licence MIT.
Les sources du moteur ont été ouvertes en 2014 par le studio OKAM, après dix ans de développement d'un produit propriétaire de niveau professionnel, qui a été utilisé pour créer et publier de nombreux jeux pour PC, consoles de jeux et appareils mobiles. Le moteur prend en charge toutes les plateformes de bureau et mobiles populaires (Linux, Windows, macOS, Wii, Nintendo 3DS, PlayStation 3, PS Vita, Android, iOS, BBX), ainsi que le développement de jeux pour le Web. Des versions binaires prêtes à l'emploi ont été créées pour Linux, Android, Windows et macOS.
Principales modifications :
- Pour les développeurs de jeux 2D, un support pour le redimensionnement forcé d'entiers a été ajouté, permettant d'obtenir une grille de pixels carrés, indépendamment du rapport d'aspect réel. La possibilité d'obtenir les coordonnées barycentriques d'une normale à partir des points d'intersection d'un objet avec un rayon a été fournie. Les méthodes Rotate_toward et Angle_difference ont été ajoutées pour un traitement correct des rotations et des angles. La propriété « closed » a été ajoutée aux nœuds Line2D pour créer des lignes fermées avec un remplissage continu.

- Des travaux ont été réalisés pour améliorer la fiabilité du système d'animation. Les nœuds AnimationPlayer et AnimationTree ont été retravaillés et unifiés, les parties communes étant extraites dans une classe intermédiaire AnimationMixer. Une option pour un mélange déterministe a été ajoutée. Un mode de prévisualisation d'animation a été ajouté, incluant l'affichage de superpositions semi-transparentes avec les images d'animation précédentes et suivantes.

- Les fonctionnalités de « cuisson » de la grille de navigation (baking, conversion en forme statique) pour 2D sont similaires aux capacités précédemment disponibles dans la navigation 3D, par exemple, pour les grilles 2D, un support a été mis en place pour le travail avec des corps physiques, des instances de maillages polygonaux, des polygonales simples et des cartes de tuiles (tilemap). En serveurs Un support de cuisson multithreadée des maillages a été ajouté pour la navigation 2D et 3D.

- Le code a été refactorisé pour travailler avec des tuiles et des cartes de tuiles. Les opérations de regroupement de blocs et de tri sur l'axe Y ont été optimisées, ce qui a considérablement réduit le temps de mise à jour des tuiles. Des améliorations ont été apportées pour faciliter la création et l'utilisation des cartes de tuiles. Un outil permettant de faire pivoter et de retourner des tuiles lors de leur placement a été ajouté. Les outils pour éditer des polygones et des scènes de tuiles ont été améliorés.

- Dans l'éditeur de scripts GDScript, il est désormais possible de créer des zones de code nommées pour réduire les blocs lors de l'édition et simplifier la navigation. Le débogueur de scripts a ajouté le support complet pour le code multithread et la pile d'exécution ainsi que les points d'arrêt. Dans les scripts basés sur C#/.NET, un support pour les plateformes Android (nécessite .NET 7.0+) et iOS (nécessite .NET 8.0) a été implémenté. Le support pour le code statiquement typé dans GDScript a été étendu, des littéraux de chaîne r-string (raw string) ont été ajoutés, et les capacités de l'opérateur match ont été étendues.

- Dans le viewport 3D, la gestion des transformations à la manière de Blender a été améliorée, utilisant la souris et les raccourcis clavier. L'affichage des informations visuelles avancées dans le viewport 3D se fait désormais uniquement pour les objets sélectionnés. Des indicateurs supplémentaires ont été ajoutés pour des éléments tels que les décalcomanies et les volumes de brouillard. Le travail avec le gizmo a été amélioré — chaque côté des formes volumineuses peut désormais être étendu individuellement dans la fenêtre de visualisation.

- Les menus contextuels et les infobulles dans les panneaux « Inspection » et « Signaux » ont été améliorés. Des infobulles décrivant les propriétés ont été ajoutées dans l'éditeur de thèmes. Le panneau de travail avec le système de fichiers a ajouté la possibilité de mettre en surbrillance visuellement les dossiers en leur attribuant différentes couleurs. L'interface de l'éditeur de ressources de dégradés a été retravaillée. Dans l'éditeur de zones de textures, le travail avec toutes les ressources supportées, y compris les styles et les atlas, a été unifié.

- La bibliothèque d'actifs a amélioré l'affichage des résultats de recherche et a ajouté la possibilité de choisir un autre répertoire pour l'installation d'un complément ou d'une ressource.

- Le gestionnaire de projets a revu la disposition des principaux éléments de contrôle et modernisé l'interface d'importation de projet.

- Les possibilités de développement de plugins pour l'éditeur ont été élargies. L'accès à toutes les fonctionnalités de l'éditeur est assuré via la classe EditorInterface. Des méthodes pratiques pour un accès direct aux viewport 2D et 3D ont été mises en œuvre. Une option pour afficher un dialogue d'avertissement en cas de modifications non enregistrées a été ajoutée.
- Le développement du système expérimental d'extensions GDExtension se poursuit, permettant d'utiliser des langages bas niveau comme C++ en tant que langages de script pour les jeux, sans recompilation du moteur ni modification du code. La possibilité d'utiliser GDExtensions lors de l'exportation vers le Web a été ajoutée.
- La gestion du focus dans l'interface utilisateur a été modifiée. Il est désormais possible de transférer le focus sur des onglets spécifiques dans la barre d'onglets, y compris lors de la navigation à l'aide du clavier. Une méthode pour rechercher le prochain élément focalisable voisin a été ajoutée aux nœuds de contrôle (Control). Les nœuds de graphique (GraphEdit et GraphNode) ont été considérablement retravaillés. Les options de personnalisation de la barre d'outils du nœud principal GraphEdit ont été élargies.

- Il est désormais possible de modifier le type d'importation des actifs à la volée, avec mise à jour automatique des scènes et ressources sans nécessiter de redémarrage de l'éditeur. Les options d'importation disponibles ont été étendues et il est désormais possible de modifier les propriétés physiques des objets importés, ainsi que les paramètres d'ombre et de visibilité. La possibilité d'aperçu de l'animation dans la boîte de dialogue d'importation a été ajoutée. Le support de l'importation d'actifs depuis Blender au format GLTF a été élargi. Le support de l'importation d'images au format KTX a été ajouté.

- Des optimisations ont été apportées pour améliorer les performances de rendu. Pour accélérer le fonctionnement sur les appareils mobiles, une séparation des barrières raster a été effectuée en composants vertex et fragment. La génération de textures bruitées a été accélérée. Un passage préliminaire pour le calcul de la profondeur a été ajouté. Le temps de chargement et de compilation des shaders a été réduit. Le stockage des maillages polygonaux en mémoire a été optimisé. Le support de la compression des maillages polygonaux a été ajouté pour réduire la bande passante lors de leur transmission.
- La possibilité de créer ses propres objets de texture a été ajoutée (exemple d'utilisation de shaders de calcul pour créer une texture avec effet d'eau).
- Une API pour appeler du code dans le fil de rendu a été ajoutée, ce qui peut être nécessaire, par exemple, lorsqu'il faut synchroniser un shader de calcul avec le rendu.
- Le support de la version 2.2 de la technologie de super échantillonnage AMD FSR (FidelityFX Super Resolution) a été ajouté, utilisant des algorithmes de mise à l'échelle spatiale et de reconstruction de détails pour réduire la perte de qualité d'image lors de l'augmentation de l'échelle et de la transformation en résolution supérieure.
- Un nouveau réducteur de bruit, JNLM, utilisant des cartes d'éclairage (lightmapper) et des shaders de calcul, a été proposé. JNLM est significativement plus rapide que la bibliothèque de réduction de bruit OIDN (Open Image Denoise) utilisée auparavant, mais dans certaines situations, il peut être inférieur en qualité.
- Les méthodes de rendu Forward+ et Mobile ont ajouté le support du rendu 2D dans une plage dynamique étendue de luminosité (HDR), permettant d'implémenter dans les jeux 2D certains effets 3D, comme le flou. La méthode de rendu Compatibility a ajouté le support des ombres tridimensionnelles.
- Pour macOS et Windows, un nouveau pilote de rendu OpenGL utilisant une couche ANGLE, qui traduit les appels OpenGL vers l'API Direct3D 11 et Metal, a été proposé.
- Le système de simulation de particules a été repensé pour simplifier l'entretien et étendre le contrôle du mouvement des particules. Par exemple, il est désormais possible d'animer et d'hériter de la vitesse de mouvement, ainsi que de modifier le nombre de particules émises. Un outil pour convertir le code de génération de particules utilisant le CPU en code équivalent utilisant le GPU a été ajouté.
- Ajout de la prise en charge des dialogues de sélection de fichiers natifs pour Linux, macOS et Windows, ainsi que la possibilité de copier et coller des images via le presse-papiers.
- Architecture de Godot repensée pour la plateforme Android, désolidarisée du composant Android Fragment, ce qui a permis de réduire le temps de lancement des applications et des jeux, et d'implémenter la prise en charge de plusieurs fenêtres.
- Mise en place de la génération des versions officielles de Godot pour Linux pour les plateformes ARM 32 et 64 bits.
Source : opennet.ru











