/ ARCADE

Un moteur de jeu, c'est toute la machinerie invisible qui fait vivre un jeu : lire les touches, déplacer les personnages, détecter les chocs, dessiner l'image, jouer les sons… Plutôt que de réécrire cette machinerie pour chaque titre, les 9 jeux de l'Arcade — du Pong au jeu de plateformes — partagent le même moteur maison, construit sur une architecture appelée Entity Component System (ECS).

L'idée est simple : chaque chose du jeu (un vaisseau, une brique, un fantôme, une pièce d'or) est une entité — en réalité un simple numéro. On lui attache des composants : de petites fiches de données comme « position », « vitesse » ou « apparence », sans aucune logique dedans. Enfin, des systèmes — des spécialistes qui ne savent faire qu'une seule chose (déplacer, dessiner, détecter les collisions…) — parcourent ces fiches 60 fois par seconde. Un ennemi n'est donc pas un « objet ennemi » programmé à part : c'est juste un numéro portant les bonnes fiches. Retirez la fiche « gravité », il flotte ; ajoutez une fiche « joueur », vous le contrôlez.

Ci-dessous, l'architecture réelle du moteur : le schéma est cliquable, et les statistiques sont lues en direct sur une véritable instance du moteur qui tourne devant vous, dans cette page — les mêmes classes World et System que celles des jeux.

SystemsWorldComponentsEventBus

Le World est le chef d'orchestre : c'est lui qui tient le registre de tout ce qui existe dans le jeu. Il stocke les entités (de simples numéros), fait le lien entre composants et systèmes, et expose createEntity/destroyEntity, add/get/has/remove pour les composants, query(...) pour demander « donne-moi tout ce qui a une position ET une vitesse », et update(dt) qui exécute tous les systèmes dans l'ordre d'ajout, à chaque image.

Que se passe-t-il 60 fois par seconde ?

À chaque image, le World déroule toujours le même pipeline : il exécute les systèmes un par un, dans l'ordre où le jeu les a enregistrés. Chaque système ignore tout des autres — quand deux d'entre eux doivent se parler (« un tir a touché un ennemi »), ils passent un message par l'EventBus au lieu de s'appeler directement. C'est ce qui permet d'ajouter, retirer ou tester chaque brique indépendamment.

1 · ENTRÉES

Clavier ou manette, peu importe : le plugin Input traduit les touches en intentions normalisées — « aller à droite », « sauter », « tirer ».

2 · CERVEAUX

Les ennemis décident : machines à états, poursuites, formations, trajectoires — ils écrivent les mêmes « intentions » qu'un joueur humain.

3 · PHYSIQUE

Vitesse, gravité, inertie : les positions sont mises à jour d'après les fiches de données, sans savoir à quel jeu elles appartiennent.

4 · COLLISIONS

Qui touche quoi ? Les chevauchements sont détectés et corrigés — un mur arrête, une plateforme porte, une pointe blesse.

5 · RÉACTIONS

Dégâts, score, bonus, sons, particules : les conséquences se propagent par messages, sans que personne ne connaisse personne.

6 · IMAGE

En dernier, le rendu dessine la frame : décor, sprites, interface — puis tout recommence, 60 fois par seconde.

Un moteur, neuf jeux

Le cœur du moteur ne contient aucune règle de jeu — il ne sait pas ce qu'est un vaisseau, un fantôme ou un boss. Chaque nouveau jeu pioche dans une bibliothèque de briques génériques éprouvées, n'écrit que ce qui lui est propre, et les briques qui se révèlent réutilisables rejoignent la bibliothèque pour le jeu suivant. C'est ainsi qu'un moteur né avec un clone de Space Invaders anime aujourd'hui un labyrinthe à fantômes, un shoot'em up à défilement et un jeu de plateformes.

MOTEUR

World, System, EventBus — le cœur ECS, une centaine de lignes entièrement découplées de tout jeu.

44 COMPOSANTS

Des fiches de données pures : Transform, Velocity, Gravity, Camera, StateMachine, Boss… Aucune logique, seulement des valeurs.

27 SYSTÈMES

Des spécialistes à responsabilité unique : mouvement, gravité, collisions de plateformes, caméra, formations, IA de poursuite…

3 PLUGINS

Input (clavier/manette/souris unifiés), Audio (sons 100 % synthétisés, zéro fichier) et Animation (états Idle/Marche/Saut pilotés par données) — indépendants de l'ECS, réutilisables ailleurs.

PILOTÉ PAR LES DONNÉES

Niveaux en ASCII, vagues d'ennemis, formations et boss décrits dans des fichiers de configuration : ajouter un niveau, c'est écrire des données, pas du code.

EXTENSIONS

Une règle : le cœur n'est jamais modifié pour un jeu. Une brique n'y entre que prouvée générique — le dixième jeu la trouvera prête.

← RETOUR À L'ARCADE