Bevy 0.19 offre aux développeurs de jeux Rust une nouvelle syntaxe de scène, des outils de rendu plus précis et des éléments d’éditeur qui rapprochent le moteur de son flux de travail visuel prévu.

Les contributeurs de Bevy ont publié Bevy 0.19 le 19 juin 2026, avec 261 contributeurs et 1 185 pull requests à l’origine de la dernière avancée du moteur de jeu Rust vers des scènes plus riches, un rendu plus rapide et des bases d’éditeur plus solides.
Les développeurs peuvent installer la version depuis crates.io, lire le code स्रोत sur GitHub et utiliser le guide de migration pour les applications et plugins existants.
Cette version se concentre sur Bevy Scene Notation, ou BSN. Les contributeurs de Bevy ont conçu BSN pour permettre aux développeurs de décrire des hiérarchies d’entités dans une syntaxe proche de Rust via la macro bsn!. L’équipe prévoit des ressources .bsn basées sur des fichiers dans une version ultérieure, mais 0.19 fournit aux utilisateurs « code-first » la syntaxe principale et le modèle de composition.

BSN est important pour l’UI de Bevy, car l’ancien style basé sur des fonctions de spawn obligeait les développeurs à relier enfants, ressources et observateurs à travers des appels séparés. Avec BSN, un développeur peut déclarer un widget, y attacher des composants, référencer des ressources et enregistrer des observateurs dans une seule expression. Cela rend le code UI plus facile à parcourir, et cela donne au futur éditeur Bevy un format que les développeurs pourront partager entre code et ressources.
Le rendu bénéficie aussi d’une amélioration majeure. Les contributeurs de Bevy ont déplacé davantage de travail du moteur de rendu vers le GPU, élargi le batching et réduit les accès mémoire sur les chemins critiques. Le benchmark many-cubes du projet montre l’ampleur du changement : un Nvidia RTX 4090 mobile a affiché 1,6 million d’entités de maillage en forme de cube avec culling en 18,77 millisecondes par image dans Bevy 0.19, contre 49,47 millisecondes en 0.18. Sans culling, le temps par image est passé de 93,1 millisecondes à 41,2 millisecondes.

Le nouveau exemple bevy_city montre une ville avec 55 000 entités rendues. Bevy 0.18 rendait la version statique en 19,3 millisecondes et la version animée en 22,1 millisecondes. Bevy 0.19 ramène ces chiffres à 11,8 millisecondes et 16,2 millisecondes.
Les contributeurs de Bevy ont aussi enrichi la boîte à outils visuelle du moteur. Les ombres de contact utilisent de courts raycasts en espace écran depuis les surfaces vers les lumières, donnant aux ombres à courte portée plus d’accroche et de détail que les shadow maps ne peuvent fournir seules. Les développeurs les activent par lumière et ajoutent ContactShadows à la caméra.
Solari, le moteur de rendu tracé par chemins en temps réel de Bevy, gagne de meilleurs miroirs, des corrections pour les matériaux non métalliques, un comportement temporel plus stable et des améliorations de vitesse. Les réflexions en espace écran utilisent un algorithme fondé physiquement. Les lumières rectangulaires arrivent via les Linearly Transformed Cosines, offrant aux développeurs un outil supplémentaire pour le travail d’éclairage en temps réel.

La prise en charge du texte a fait un grand pas. Le nouveau composant EditableText apporte à Bevy UI la saisie de texte en amont, y compris la saisie clavier, la sélection, le déplacement du curseur, la prise en charge du presse-papiers, le texte bidirectionnel et la prise en charge IME. Les développeurs doivent encore construire des fonctionnalités telles que le texte de remplacement, l’annulation et le masquage des mots de passe, mais Bevy 0.19 donne à l’élément de base une fondation plus solide.
Les contributeurs de Bevy ont aussi remplacé l’ancien modèle limité aux handles de police par une sélection de polices plus riche. Les développeurs peuvent référencer des handles d’asset, des familles nommées et des catégories sémantiques comme monospace ou sans serif. TextFont ajoute des champs pour le poids, la largeur et le style, et FontSize prend en charge des unités proches de CSS comme Vw, Vh et Rem.

Feathers, la collection de widgets de Bevy orientée éditeur, gagne la saisie de texte, la saisie numérique, les menus déroulants, les bascules de divulgation, les icônes, les panneaux, les vues en liste et les barres de défilement. Les contributeurs ont porté Feathers vers BSN, ce qui illustre l’orientation générale de la version : le travail de Bevy sur l’éditeur continue de produire des briques réutilisables du moteur avant la sortie de l’éditeur comme produit complet.
Le même schéma apparaît dans les réglages d’application, le gizmo de transformation et la grille infinie. Le framework de paramètres charge et enregistre des groupes sous forme de ressources ECS. Le gizmo de transformation donne aux auteurs d’éditeur des poignées de translation, rotation et mise à l’échelle pour les viewport 3D. La grille infinie utilise un shader plein écran pour dessiner un plan au sol qui s’estompe avec la distance et évite les artefacts à l’horizon.
Plusieurs changements remodèlent les entrailles de Bevy. Les contributeurs ont remplacé le graphe de rendu par des schedules ECS, de sorte que les passes de rendu peuvent s’exécuter comme des systèmes ordinaires dans des schedules tels que Core3d et Core2d. Ce changement réduit le boilerplate de rendu personnalisé et offre au futur travail sur le moteur de rendu une voie plus claire dans le modèle de planification de Bevy.
Les ressources ont aussi été déplacées dans l’ECS en tant que composants sur des entités singleton. Cela permet aux développeurs d’utiliser avec les ressources des outils de composants comme les hooks, les observateurs et les relations. Le changement supprime aussi des mécanismes dupliqués à l’intérieur du moteur, ce qui s’inscrit dans la poussée de longue date de Bevy pour faire de l’ECS le modèle commun à davantage de systèmes du moteur.
Les développeurs axés sur la performance obtiennent un accès contigu aux requêtes via contiguous_iter et contiguous_iter_mut. Ces API fournissent aux développeurs des tranches de table au lieu d’une entité à la fois, donnant à LLVM une meilleure chance de vectoriser les boucles gourmandes en CPU. Dans la mise à jour de position de 10 000 entités décrite dans les notes de version, l’itération contiguë avec AVX2 a réduit le temps de 5,51 microsecondes à 1,87 microseconde, et le contournement de la détection de changements l’a abaissé à 1,58 microseconde.
Bevy 0.19 améliore aussi la résilience à l’exécution. Les développeurs peuvent configurer la gestion des erreurs de rendu pour la perte de périphérique, les erreurs de mémoire insuffisante, les erreurs de validation et les erreurs internes. Un jeu peut se remettre d’une perte de périphérique, arrêter le rendu tout en gardant l’application en vie, ou quitter après avoir sauvegardé son état.
La version inclut des ajouts plus modestes mais utiles : commandes différées, gizmos de texte, tâches web annulables, sauvegarde d’assets à l’exécution, réservation distante d’entités, conditions d’exécution pour les observateurs, relations auto-référentielles et sérialisation des handles d’assets. Chacun retire une aspérité à des systèmes que les équipes de jeu touchent pendant la production.
Le compromis vient du périmètre. Bevy 0.19 publie de nombreuses fondations avant l’éditeur complet, le flux de travail BSN basé sur des fichiers et la conception des assets comme entités. Les développeurs qui veulent un éditeur visuel finalisé devront encore attendre. Les développeurs qui veulent des briques de moteur qu’ils peuvent utiliser dans leurs propres outils obtiennent dès aujourd’hui un large ensemble de nouvelles API.
Les contributeurs de Bevy citent les fichiers de scène .bsn, des internes de rendu 2D et 3D unifiés, un inspecteur d’entités, des assets sous forme d’entités, le travail sur les shaders WESL et un Bevy Book plus vaste comme prochains axes de travail. Bevy 0.19 ne clôt pas cette feuille de route. Il donne aux développeurs de jeux Rust davantage de la machinerie dont cette feuille de route a besoin.

Commentaires
Connectez-vous ou inscrivez-vous pour participer à la discussion