Créer un jeu avec JumPHP
JumPHP est un framework pour écrire des jeux rétro en 2D en PHP. Le même code tourne sur le bureau (PHP + SDL2, dans une vraie fenêtre) et dans le navigateur (PHP compilé en WebAssembly) : c'est ce qui fait marcher tous les jeux de ce site. Il y a plusieurs façons de s'y mettre, de la plus rapide à la plus complète.
| Façon | Compte | Ce qu'il faut | Pour qui |
|---|---|---|---|
| Bac à sable | non | un navigateur | essayer en 1 minute : changer un hello world et le lancer |
| Avec votre Claude | GitHub | Claude Code + Docker | décrire son jeu et le laisser l'écrire, le tester, le publier |
| Éditeur en ligne | GitHub | un navigateur | retoucher un jeu publié, ou forker celui d'un autre |
| Sur votre ordinateur | non (GitHub pour publier) | Docker | développer comme un pro : tests, captures, build navigateur |
| Importer un dépôt | GitHub | un dépôt JumPHP | publier ici un jeu qui existe déjà |
| Remake Amstrad CPC | GitHub | la disquette .dsk du jeu |
refaire un jeu CPC avec ses graphismes et sa musique d'origine |
| Portage d'un jeu existant | GitHub | son code source | traduire un vieux jeu (C, Pascal, BASIC…) en PHP |
Ensuite, les tutoriels construisent un jeu pas à pas :
- Hello world : un menu, un texte, un son
- Un personnage qui bouge et s'anime
- Un jeu de plates-formes : niveau, collisions, caméra
- Sons et musique
- Menus, options, pause et langues
- Sauvegarder les scores et les options
- Le multijoueur en ligne
- La page d'accueil du jeu et sa publication
Et pour les programmes qui veulent lire l'annuaire : l'API publique.
Comment marche un jeu JumPHP
Un jeu est un dossier games/<id>/ d'un projet JumPHP :
games/mon-jeu/
config/game.yaml le titre, la résolution (320 × 180…), la première scène
config/input.yaml les actions (sauter, tirer…) et leurs touches, manette, écran tactile
src/Scene/*.php les écrans : le titre, le jeu, la pause…
src/Entity/*.php ce qui bouge : le héros, les ennemis…
assets/ images, sons, musique, niveaux (facultatifs : tout peut se dessiner en PHP)
site/ (facultatif) la page d'accueil du jeu
Chaque image (60 fois par seconde), le moteur appelle update($dt) de la scène affichée (on change l'état du
jeu) puis render($r) (on dessine). Les coordonnées sont des pixels « virtuels » (la résolution du jeu) :
le moteur agrandit l'image à la taille de l'écran.
Le contrat complet du framework, pour les humains comme pour les IA, est le fichier AGENTS.md du dépôt JumPHP.