AI Agents

Comment j'ai construit Quads, un jeu de plateau mobile, avec Claude — d'un hackathon de 2 heures à l'App Store

Alejandro Rioja
Alejandro Rioja
12 min de lecture
TL;DR

Quads est un jeu de plateau mobile — une version épurée du classique jeu abstrait Quarto — né d'un hackathon de 2 heures avec un ami en Colombie et livré sur les app stores. Voici la version totalement ouverte de la façon dont je construis avec Claude : worktrees d'agents en parallèle, une vraie IA de jeu (non-LLM), une conception offline-first, et les pièges précis qui m'ont coûté des heures.

Newsletter gratuite

Chaque mercredi. 28 400+ opérateurs. Zéro superflu.

Sommaire

Mis à jour en juillet 2026.

En bref : Quads est un jeu de plateau mobile — une version épurée du classique jeu abstrait Quarto — né d’un hackathon de 2 heures avec un ami en Colombie et livré sur les app stores. Voici la version totalement ouverte de la façon dont je construis avec Claude : worktrees d’agents en parallèle, une vraie IA de jeu (non-LLM), une conception offline-first, et les pièges précis qui m’ont coûté des heures.

[Le regard de l’opérateur] J’exploite plus de 30 agents en production répartis entre une marque de conseil et Pickleland, mon établissement de pickleball dans la métropole d’Austin. La plupart de ce que je construis, ce sont des logiciels d’entreprise sérieux dont je garde le plan de jeu privé. Quads, c’est l’inverse — un projet parallèle amusant que je peux vous montrer de fond en comble. Si vous voulez voir exactement comment je travaille avec Claude, sans rien poncer, c’est cet article-là. Vous pouvez trouver le jeu sur playquads.com.

Tout a commencé par un hackathon de 2 heures en Colombie

L’origine est presque gênante de décontraction. J’étais en voyage en Colombie, et un ami et moi nous sommes lancé un hackathon de 2 heures : choisir quelque chose de petit, le construire avec l’IA, voir jusqu’où on arrive. On a jeté notre dévolu sur Quarto — un joli petit jeu de stratégie abstrait, facile à apprendre et étonnamment profond. Deux heures plus tard, on avait un prototype jouable, et l’idée était trop bonne pour la laisser sur un ordinateur portable.

Ce qui a commencé comme un défi chronométré est devenu une véritable application mobile livrée sur iOS et Android. Cette trajectoire — du prototype pour rire à la fiche sur le store — est toute la raison pour laquelle je pense que ce projet vaut la peine d’être raconté. La distance entre « idée sympa » et « chose que des inconnus peuvent télécharger » s’est effondrée, et Quads en est un cas d’école limpide.

D’abord, un petit détour sur le nom. Le jeu est une réimplémentation de Quarto, qui est un jeu déposé appartenant à Gigamic. La toute première décision non technique a donc été de ne pas l’appeler Quarto là où un client le verrait. On est passé de Quarto (le mécanisme) à quelques noms intermédiaires puis à Quads — un nom que je suis libre d’utiliser. Si vous réimplémentez un classique, réglez la question de la marque déposée avant de tomber amoureux d’un nom.

Ce qu’est réellement Quads

Pour les non-initiés : Quads se joue sur un plateau de 4×4 avec 16 pièces uniques. Chaque pièce a quatre attributs binaires — grande ou petite, foncée ou claire, carrée ou ronde, pleine ou creuse — et les 16 pièces couvrent chaque combinaison possible exactement une fois. On gagne en complétant une ligne de quatre pièces qui partagent au moins un attribut.

La subtilité qui rend le jeu génial : vous ne choisissez pas la pièce que vous placez. Votre adversaire vous la remet. Puis vous lui remettez la sienne. Chaque tour est donc un double bind — vous essayez de placer la pièce qu’on vous a donnée sans créer une victoire, tout en choisissant une pièce à donner qui ne livre pas la partie à votre adversaire. C’est élégant et réellement difficile.

L’application propose quatre façons de jouer, toutes entièrement hors ligne : contre l’ordinateur sur cinq niveaux de difficulté, en pass-and-play sur un seul appareil, un puzzle quotidien et un mode asynchrone « défie un ami ». Pas de compte, pas de serveur, pas de connexion. Cette décision offline-first a orienté une grande partie de l’ingénierie, et c’est en grande partie pourquoi un build en solo était réalisable.

La logique du jeu : tout un ensemble de règles qui découle du calcul sur les bits

C’est ma partie préférée, parce que c’est le genre de chose qui est satisfaisant, que l’IA l’ait écrite ou non.

Chacune des 16 pièces n’est qu’un entier de 0 à 15. Chacun des quatre bits est un attribut. C’est tout — l’ensemble des pièces, ce sont les nombres 0 à 15, parce que quatre bits donnent exactement 16 combinaisons.

La détection de victoire devient alors presque triviale. Pour toute ligne de quatre pièces, on garde deux accumulateurs courants : les bits qui valent 1 dans chaque pièce, et les bits qui valent 0 dans chaque pièce. Si l’un des accumulateurs est non nul après les quatre, les pièces s’accordent sur au moins un attribut — c’est une victoire. Tout l’ensemble des règles se ramène à quelques ET bit à bit.

Parce que la logique n’est que des fonctions pures sur des entiers — pas de framework, pas d’interface, pas d’état — elle est directement testable par des tests unitaires, et elle est triviale à étendre. Quads propose même une variante avec règle maison où les neuf carrés 2×2 comptent aussi comme des formes gagnantes, ce qui est un ajout de deux lignes par-dessus la même astuce des bits. Quand vous et un partenaire IA gardez la logique centrale aussi propre, ajouter une fonctionnalité est un plaisir plutôt qu’un risque.

L’adversaire IA n’est pas un LLM (et c’est le bon choix)

Voici un moment pédagogique qui me tient à cœur : toute « IA » ne devrait pas être un grand modèle de langage.

L’adversaire de Quads est une pure IA de jeu classique, et il doit l’être. À chaque tour, il prend deux décisions — où placer la pièce qu’on lui a remise, et quelle pièce rendre — et la difficulté module l’intensité de sa réflexion :

  • Débutant joue essentiellement au hasard et vous offrira la victoire.
  • Les niveaux intermédiaires ajoutent des heuristiques : prendre une victoire immédiate s’il en existe une, et éviter d’offrir une pièce avec laquelle l’adversaire peut gagner, en préférant la pièce qui arme le moins de menaces futures.
  • Maître et Grand Maître exécutent une recherche negamax bornée — une vraie recherche dans l’arbre de jeu — mais avec un budget de nœuds strict pour qu’un coup ne puisse jamais bloquer le thread principal du téléphone. En début de partie, où la recherche parfaite est intraitable, il se rabat sur des heuristiques rapides ; en fin de partie, où l’arbre est assez petit, il cherche pour de vrai.

Deux choses à voler ici. D’abord, un modèle de langage serait pire ici — plus lent, plus coûteux, non déterministe et battable — que cinquante lignes de negamax. Adaptez l’outil au problème. Ensuite, le budget de nœuds est la vraie ingénierie : sur un appareil mobile, « correct mais qui plante parfois pendant quatre secondes » est une fonctionnalité ratée. Borner la recherche pour qu’un coup soit toujours rapide, même s’il est parfois sous-optimal, c’est la différence entre un jouet et un produit. Savoir quand recourir à un LLM relève du même jugement que j’applique à chaque automatisation — c’est le cœur de comment je décide si un build IA en vaut la peine.

Comment je fais réellement tourner Claude : des agents en parallèle dans des worktrees

Maintenant, la partie que je garde privée sur mes produits plus importants mais que je peux vous montrer pleinement ici.

Je ne construis pas avec une seule session Claude à la fois. J’en fais tourner plusieurs en parallèle, chacune dans son propre worktree git sur sa propre branche. Un agent ajoute l’internationalisation, un autre construit le système de puzzle quotidien, un autre fait le mode daltonien, un autre câble le son — chacun isolé dans sa propre copie de travail pour qu’ils ne puissent pas s’écraser mutuellement, et chacun est fusionné une fois qu’il est au vert. L’historique git de Quads est un mur de commits Merge branch 'worktree-agent-…', ce qui correspond exactement à l’allure de ce flux de travail vu de l’extérieur.

La raison pour laquelle les worktrees comptent est simple : des agents en parallèle qui éditent le même répertoire de travail se marchent dessus instantanément. Donnez à chacun un checkout isolé et vous pouvez réellement avoir quatre fonctionnalités en construction à la fois, puis les fusionner comme n’importe quelle autre branche. C’est le changement à plus fort levier dans ma façon de travailler — je suis passé d’une conversation, une fonctionnalité, à une petite flotte.

Si vous voulez la discipline derrière les prompts sur lesquels ces agents tournent, c’est la même que je décris dans comment écrire des prompts système d’agents IA qui ne plantent pas en production : le levier est dans des specs claires et à jour, pas dans une formulation astucieuse.

Le piège qui m’a coûté une heure (pour qu’il ne vous en coûte pas une)

Chaque projet vous enseigne une leçon idiote et coûteuse. Sur Quads, c’était celle-ci : l’outil de prévisualisation ne montre pas toujours la branche que vous croyez qu’il montre.

Quand vous faites tourner plusieurs agents dans plusieurs worktrees et que vous prévisualisez leur travail, la prévisualisation peut se lancer depuis un répertoire différent de celui où se trouve votre session actuelle — vous faites donc une capture de l’application, vous ne voyez aucun de vos changements, et vous commencez à déboguer une interface « manquante » qui n’a jamais manqué. La fonctionnalité allait bien ; la prévisualisation pointait vers le mauvais checkout. J’y ai perdu un temps réel avant de comprendre ce qui se passait, et je l’ai noté dans les notes du projet pour que le moi futur (et tout agent à qui je confie le dépôt) vérifie la cible de la prévisualisation avant de déboguer des bugs fantômes.

Le piège connexe : le fichier de config qui définit ces prévisualisations est partagé entre les sessions parallèles, donc deux agents qui l’éditent en même temps peuvent silencieusement écraser leurs entrées respectives. Si vous comptez faire tourner une flotte, traitez la config partagée comme une ressource disputée — elle vous mordra exactement une fois, et plus jamais si vous notez la leçon.

Cette habitude — capturer chaque piège durement gagné dans un fichier durable que la prochaine session lira — est la colonne vertébrale discrète du développement avec l’IA à n’importe quelle échelle. Le contexte s’évapore entre les sessions ; les leçons écrites, non.

Les astuces offline-first dont je suis fier

Parce que Quads n’a pas de backend, quelques problèmes exigeaient des réponses astucieuses et sans serveur :

  • Le puzzle quotidien est choisi de manière déterministe à partir du jour local de l’année, de sorte que chaque joueur dans le monde obtient le même puzzle sans aucune coordination serveur. (Leçon bonus : j’ai livré, puis immédiatement corrigé, un décalage d’une unité lié au passage à l’heure d’été dans ce calcul de date. Les dates sont toujours plus dures qu’elles n’en ont l’air.)
  • « Défie un ami » encode un puzzle dans un court code textuel — quelque chose comme QC1-01-03-3 — protégé par une somme de contrôle pour qu’une faute de frappe ne puisse produire un défi valide mais erroné. Votre ami le tape dans sa propre copie de l’application et joue la position exacte, entièrement hors ligne. Pas de comptes, pas de matchmaking, pas de serveur.
  • Les aperçus de liens enrichis sont le seul endroit où j’ai bien utilisé un petit bout de code serveur. Quand vous partagez un lien de défi, une unique Cloudflare Pages Function génère des balises Open Graph propres à chaque code pour que le lien s’affiche joliment dans iMessage ou WhatsApp. Les robots des réseaux sociaux n’exécutent pas de JavaScript, donc un aperçu rendu côté client serait identique pour chaque lien — une petite fonction règle cela sans avoir besoin d’un vrai backend.

Aucune de ces astuces n’est difficile une fois qu’on la voit, mais chacune est un endroit où la réponse paresseuse est « monter un serveur et une base de données », et la meilleure réponse est « faire la chose astucieuse hors ligne ». Éviter entièrement un backend est la raison pour laquelle une seule personne a pu livrer et maintenir cela.

Du hackathon à la fiche sur le store

La dernière ligne droite — la partie dont personne ne vous parle à propos d’un « projet de 2 heures » — c’est tout ce qui sépare « ça marche sur mon téléphone » de « des inconnus peuvent le télécharger ». L’internationalisation en huit langues d’un seul coup. Des textes de store qui n’utilisent jamais le nom déposé. L’outillage de build pour les app stores, la gestion des versions, et les nettoyages de permissions propres à chaque plateforme qui empêchent une revue de store de vous rejeter. C’est ingrat, et c’est là que beaucoup de projets parallèles meurent en silence.

Le faire avec Claude n’a pas raccourci la checklist, mais a rendu chaque élément assez bon marché pour que je la termine réellement. Voilà la vraie histoire de Quads : non pas que l’IA a écrit un jeu de plateau — plein de gens savent en prototyper un — mais qu’elle a assez abaissé le coût du dernier kilomètre pour qu’une blague de hackathon devienne un produit livré.

Si vous avez une petite idée qui dort depuis un moment, c’est tout mon argumentaire. Lancez la version de 2 heures. Vous serez surpris de voir à quel point la ligne d’arrivée s’est rapprochée. Et si vous voulez voir jusqu’où monte ce même style de travail, je l’ai poussé jusqu’à un SaaS multi-tenant complet — comment j’ai construit Courtlines, une plateforme de gestion de club, avec Claude.

Jouez à Quads sur playquads.com.

FAQ

Qu’est-ce que Quads ?

Quads est un jeu de plateau mobile pour iOS et Android — une réimplémentation épurée du classique jeu de stratégie abstrait Quarto. Vous jouez sur un plateau de 4×4 avec 16 pièces uniques, et la subtilité est que votre adversaire choisit la pièce que vous devez placer. Il est gratuit, avec des modes solo, pass-and-play, un puzzle quotidien et des défis asynchrones. Trouvez-le sur playquads.com.

Est-ce que Claude a écrit tout le jeu ?

Claude a écrit la grande majorité du code, à partir de la conception et des décisions dont je suis le propriétaire. J’ai fait tourner plusieurs sessions Claude en parallèle, chacune dans son propre worktree git, construisant différentes fonctionnalités que j’ai fusionnées ensemble. La logique du jeu, l’adversaire IA, l’internationalisation, les sons et le système de puzzles ont été en grande partie construits ainsi et revus par moi.

L’adversaire IA du jeu est-il propulsé par un LLM ?

Non — et délibérément. L’adversaire utilise une IA de jeu classique : des heuristiques aux difficultés inférieures et une recherche negamax bornée aux niveaux supérieurs, avec un budget de nœuds strict pour qu’un coup ne bloque jamais l’appareil. Un modèle de langage serait plus lent, plus coûteux et plus faible pour cette tâche. Choisir le bon type d’IA pour le problème compte davantage que de toujours recourir au plus gros modèle.

Combien de temps a-t-il fallu pour construire Quads ?

Le premier prototype jouable est sorti d’un hackathon de 2 heures avec un ami lors d’un voyage en Colombie. Transformer ce prototype en une application soignée et livrable sur les deux app stores — avec internationalisation, un vrai adversaire IA, des défis hors ligne et la conformité aux stores — a pris considérablement plus de temps, mais chaque étape individuelle était assez bon marché avec l’IA pour que le projet atteigne réellement la ligne d’arrivée.

Quelle est la plus grande leçon de la construction de Quads avec Claude ?

Deux choses. D’abord, faites tourner les agents dans des worktrees git isolés pour pouvoir construire plusieurs fonctionnalités en parallèle sans qu’elles s’écrasent mutuellement. Ensuite, notez chaque piège dans un fichier durable que la prochaine session lira — le contexte s’évapore entre les sessions, mais les leçons écrites se cumulent. Pour la vue d’ensemble de ce style de travail, voyez comment j’ai construit Courtlines avec Claude.

Continuer à lire

Articles liés

Continuer à lire

Recevez le guide IA dans votre boîte mail

Chaque mercredi. 28 400+ opérateurs. Zéro superflu.

↵ pour voir tous les résultats esc esc pour fermer