Appearance
Documentation des Systèmes ECS
Ce document présente une vue d’ensemble des différents systèmes (Systems) utilisés dans ton architecture Entity Component System (ECS).
Chaque système a une responsabilité précise et agit sur un ensemble de composants spécifiques.
Ensemble, ils forment le cœur de la boucle de gameplay du jeu.
ShootSystem
Rôle
Le ShootSystem est responsable de la création et de la gestion des projectiles tirés par les entités capables de tirer (joueur, ennemi, tourelle, etc.).
Fonctionnement
- Identifie les entités possédant les composants :
PositionComponentRectComponentMvtComponentShootComponent
- Pour chaque entité trouvée, il crée un nouveau projectile (nouvelle entité).
- Ce projectile reçoit ses propres composants : position, texture, vitesse, dégâts, etc.
Résumé
Produit les tirs et ajoute les projectiles dans le monde pour être traités par les autres systèmes.
SpawnSystem
Rôle
Le SpawnSystem gère la création dynamique d’ennemis ou d’objets IA à intervalles réguliers ou aléatoires.
Fonctionnement
- Génère une position aléatoire pour chaque nouvel ennemi.
- Crée une nouvelle entité dans le
registry. - Attribue les composants suivants :
PositionComponentDestroyableComponentShootComponentComputerComponentTextureComponentLifeComponentRectComponent
Résumé
Fait apparaître de nouvelles entités ennemies dans la scène de jeu.
DestroySystem
Rôle
Le DestroySystem gère la suppression des entités après une collision ou lorsqu’elles n’ont plus de points de vie.
Fonctionnement
- Parcourt les entités avec :
LifeComponentFireComponentComputerComponentPositionComponent
- Détecte les collisions simples (par comparaison de positions).
- Réduit les points de vie (
LifeComponent) des entités touchées. - Supprime (
kill_entity()) les entités mortes ou détruites.
Résumé
Supprime les entités hors-jeu ou détruites après un impact.
ColliderSystem
Rôle
Le ColliderSystem détecte les collisions physiques entre les entités et communique ces informations aux autres systèmes (notamment DestroySystem et PhysicsSystem).
Fonctionnement
- Vérifie si deux entités se recoupent à partir de :
PositionComponentRectComponent
- Peut retourner une liste de collisions ou directement déclencher des réactions.
Résumé
Détecte les collisions et sert de base aux réactions physiques ou destructives.
RenderSystem
Rôle
Le RenderSystem est chargé de l’affichage visuel du jeu.
Il rend à l’écran toutes les entités possédant une position et une texture.
Fonctionnement
- Récupère les entités avec :
PositionComponentTextureComponent- (optionnellement
RectComponentpour la taille)
- Dessine chaque entité à sa position courante.
- Gère les calques ou la profondeur d’affichage si nécessaire.
Résumé
Assure l’affichage à l’écran de toutes les entités visibles.
InputSystem
Rôle
Le InputSystem gère les entrées utilisateur (clavier, souris, manette).
Il traduit les actions du joueur en mises à jour sur les composants de l’entité contrôlée.
Fonctionnement
- Lit l’état des touches ou des boutons.
- Met à jour les composants :
VelocityComponent→ déplacement du joueurShootComponent→ tirActionComponent→ interactions
- Permet au joueur de déplacer, tirer ou interagir.
Résumé
Transforme les entrées utilisateur en actions sur les entités.
PhysicsSystem
Rôle
Le PhysicsSystem met à jour la position et la vitesse des entités selon les lois de la physique du jeu.
Fonctionnement
- Parcourt les entités avec :
PositionComponentMvtComponentouVelocityComponent
- Met à jour les coordonnées :cpp
position.x += velocity.vx; position.y += velocity.vy;position.x += velocity.vx; position.y += velocity.vy;1
2