URL: https://linuxfr.org/users/bux-2/journaux/decouverte-de-l-entity-component-system-avec-bevy Title: Découverte de l'Entity Component System avec Bevy Authors: bux Date: 2023年10月03日T17:33:59+02:00 License: CC By-SA Tags: ecs, rust et programmation Score: 16 Je me suis amusé dernièrement avec [Bevy engine](https://bevyengine.org/), un moteur de jeu plutôt bas niveau "piloté par les données". C'est-à-dire qui utilise le "Entity Component System". ![Bevy](https://bevyengine.org/assets/bevy_logo_dark.svg) Belle découverte pour ma part ! En quelques mots : Entity Component System ----------- Coder en [ECS](https://en.wikipedia.org/wiki/Entity_component_system) c'est, _ne pas_ coder de manière procédurale : On fournit au moteur d'ECS des données (que l'on identifie comme des ressources, des composants, etc) ainsi que des procédures (ex. une fonction) que l'on veut qu'il exécute selon certaines conditions. Par exemple, je lui donne : * Une liste de _Personnes_, où chaque _Personne_ est composé d'un _Nom_ et d'un _Email_. * Une ressource _EnvoyeurDeMail_ * Une procédure qui prend en entrée _EnvoyeurDeMail_ ainsi que la liste des _Personnes_. Procédure qui devra être exécutée toutes les 24h Le moteur ECS se débrouille ensuite pour que les procédures s'exécutent selon les conditions demandées en parallélisant le tout et assurant le partage correct des ressources (verrous, etc). Dans le cadre d'un jeu, comme avec Bevy, cela est très agréable à utiliser. Car les conditions associées aux procédures pourront être des fréquences, des collisions entre objets, des évènements gameplay... Le tout se répartissant de manière optimale sur les différents cœurs de CPU. Mon test ----------- J'ai joué avec Bevy pour produire un explorateur de monde 2D généré aléatoirement (avec un [bruit de Perlin](https://fr.wikipedia.org/wiki/Bruit_de_Perlin)) dont seul les données à afficher sont récupérés et affichés. Sur deux niveaux de représentations (vue normale et carte) : ![Démonstration de bevy](https://raw.githubusercontent.com/buxx/neoroll/master/medias/demo.gif) Le code source est ici : https://github.com/buxx/neoroll Conclusion ----------- L'ECS semble un peu ésotérique quand on l'approche la première fois. Mais il prend tout son sens lorsque l'on écrit un programme dont le déroulement est très dynamique. Et les performances sont optimales, car seules l'utilisation des ressources identifiées comme n'étant pas partageable donnent lieu à des temps d'attente. Le reste étant parallélisé. Pour ce qui est de [Bevy](https://bevyengine.org/), c'est un très bon moteur de jeux ! Ce n'est pas du tout aussi complet que [Godot](https://godotengine.org/) par exemple, mais c'est un très bon moteur de jeu "bas niveau". Et j'aime toujours autant le Rust. Plus chaque jour 💕🦀

AltStyle によって変換されたページ (->オリジナル) /