L'architecture ECS (Entity-Component-System) expliquée
ECS est un pattern d'architecture de plus en plus populaire dans le développement de jeux, offrant une alternative performante à la POO traditionnelle.
Les 3 piliers
- Entity : Un simple identifiant (un entier). Ne contient aucune donnée ni logique.
- Component : Une structure de données pures (un
structou une classe sans méthode). Ex:Position,Velocity,Health. - System : La logique pure. Itère sur les entités qui possèdent un certain ensemble de composants. Ex:
MovementSystem,PhysicsSystem.
Avantages
- Performance : Les données des composants sont stockées de manière contiguë en mémoire, ce qui est très efficace pour le cache CPU.
- Flexibilité : On peut attacher/détacher des composants à la volée pour changer le comportement d'une entité.
- Parallélisme : Les systèmes sont souvent indépendants et peuvent être exécutés en parallèle.
Exemple de fonctionnement
Entité 42: [Position, Velocity, Renderable]
Entité 43: [Position, Health, Renderable]
Entité 44: [Position, Velocity, AIController]
// Le MovementSystem s'exécute
Pour chaque entité qui a [Position] ET [Velocity]:
position.x += velocity.x * delta_time
position.y += velocity.y * delta_time
// Le RenderSystem s'exécute
Pour chaque entité qui a [Position] ET [Renderable]:
draw_sprite(renderable.sprite, position.x, position.y)
L'approche ECS est un changement de paradigme, mais elle résout de nombreux problèmes de performance et de complexité dans les grands projets.
Aucun commentaire pour le moment.