
POPZ : un Puzzle Bobble en quinze minutes, une journée de boulot
Le moteur a tourné après deux lignes de prompt. Quinze minutes de vibe coding avec un agent de code, et j’avais un Puzzle Bobble jouable dans le navigateur : viser, tirer, faire des grappes de trois, les faire tomber. Le genre de démo qui fait dire « l’IA remplace les devs ».
Ensuite j’y ai passé la journée. Et c’est là que ça devient intéressant.
Pourquoi ce jeu-là ?
Parce qu’il me ramène à l’arcade, et l’arcade a compté. Au collège puis au lycée, ce sont Final Fight, Street Fighter 2 et Shinobi qui ont mangé mes économies devant les bornes. Puzzle Bobble, lui, est arrivé plus tard et par un autre chemin : celui de l’émulation MAME, et de la communauté qui allait avec. Le premier concours qu’on y a organisé se jouait justement sur ce jeu, et j’y ai rencontré des gens vraiment bien.
D’où l’affect. Refaire ce jeu-là précisément, ce n’était pas un exercice technique neutre, et ça compte dans la motivation à ne pas s’arrêter au prototype.
L’évolution du code, sans romance
Le prototype, c’est un tir, une grille hexagonale, un cluster qui saute. Après, tout le sel est ailleurs.
J’ai ajouté des bulles spéciales, chacune avec sa mécanique : la pierre qu’on ne casse qu’à la bombe, la bombe à explosion propagée, l’arc-en-ciel qui prend la couleur du voisin, l’étoile qui efface toute une couleur d’un coup, la glace qui se fend en plusieurs impacts. Puis une musique chiptune jouée à partir d’un vrai fichier MIDI, avec un tempo qui accélère quand le danger monte. Un ciel avec des galaxies spiralées qui tournent, des étoiles qui scintillent. Un logo que j’ai fini par détourer et pixeliser à la main, parce que la version générée ne me plaisait pas.
Et surtout, le plus long : les 15 niveaux. Pas posés au hasard. Une courbe en dents de scie, trois groupes de cinq, un répit très facile tous les cinq niveaux pour la dopamine, puis une montée jusqu’à un pic, chaque pic plus haut que le précédent.
C’est ça qui prend du temps : pas écrire la règle, mais la doser.
Le CI/CD, parce qu’un jouet mérite aussi une chaîne propre
Aparté pour les gens du métier : si la tuyauterie ne vous intéresse pas, sautez directement au chapitre suivant, vous ne perdrez rien du propos.
Un clone perso, ça peut vivre en fichier local ouvert au double-clic. J’ai fait l’inverse, et j’ai gardé la chaîne complète.
Chaque push part sur un pipeline Forgejo. D’abord la qualité : TypeScript en mode strict, puis 296 tests Vitest qui tournent sans navigateur, parce que la logique du jeu (grille hexagonale, détection de clusters, chute des bulles orphelines, génération des niveaux) est volontairement séparée du rendu Canvas et se teste donc en pur calcul. Ensuite le build, et un audit des dépendances de production.
Puis la sécurité, sur le même push et par un cron quotidien à 3 h du matin : gitleaks pour les secrets, Trivy pour les dépendances vulnérables, semgrep pour l’analyse statique. Enfin l’image : un conteneur Docker construit à partir du bundle Vite, scanné à son tour, poussé sur mon registre privé.
Le déploiement se fait via Komodo, qui redéploie la stack sur le serveur cible. Dedans, un nginx sert les fichiers statiques, derrière un Traefik qui gère le TLS et le renouvellement des certificats tout seul. Et pour marquer le coup, une release v1.0.0 taguée avec ses notes.
Ça peut paraître disproportionné pour un jeu de bulles. Mais c’est exactement la même chaîne que sur mes projets clients, à un fichier de configuration près : je la connais, elle est déjà écrite, et la brancher coûte une demi-heure. En échange, je ne me demande jamais si ce que je viens de pousser est cassé, ni comment le remettre en ligne dans six mois. L’habitude ne se met pas en pause sous prétexte que « c’est juste un jeu ».
Maintenant, soyons honnête
Vibe coder un Puzzle Bobble, c’est grisant. En quelques minutes il y a quelque chose à l’écran, ça bouge, ça fait des couleurs, on a envie de montrer. Sauf qu’entre ça et un vrai produit, il reste un fossé.
Le moteur d’un Puzzle Bobble, c’est facile. Ce qui fait un bon jeu, c’est le level design, le sound design et les graphismes.
Et là, aucun level designer, aucun sound design (tout est synthétisé à la main dans le code, à la voix près), et côté graphismes, le graphiste n’a pas de nom parce que c’est moi plus un peu de code. Le résultat est correct, mais ce n’est pas du métier de spécialiste.
Donc, appel du pied, ton sarcastique assumé : si tu es sound designer, graphiste ou level designer et que ce type de projet t’amuse, écris-moi. Rémunération : la gloire éternelle d’être cité dans les crédits. C’est tout ce que j’ai à offrir. Et honnêtement, c’est déjà pas si mal.
Ce que la machine ne fait pas à ta place
On a tendance à réduire l’IA au RAG, aux agents outillés, aux chatbots. Le vibe coding en fait partie aussi : décrire une intention, laisser un agent produire, itérer. En quinze minutes tu sors un Puzzle Bobble jouable.
Ce qu’elle m’a donné, c’est un point de départ : quinze minutes au lieu de deux jours. Tout ce qui vient après, les mécaniques qui tiennent, la courbe de difficulté, le goût, ça reste du boulot. Et c’est justement là que le jeu se fait.
À jouer : popz.mahuet.net