Aller au contenu principal
← Tous les projets

Carnage — Créer un party game mobile qui va au-delà du jeu de cartes numérique

Carnage — vote entre joueurs

Les jeux de soirée sur mobile se ressemblent tous : des cartes texte qui défilent sur un seul téléphone. Vérité, défi, vote — toujours la même mécanique en boucle. Carnage part d’un constat simple : un smartphone, c’est une caméra, un écran tactile, une connexion réseau. Pourquoi se limiter à du texte ? Mon rôle : CTO — toute la partie technique est la mienne. La vision produit se construit à deux avec mon associé : lui a eu l’idée de base et porte le contenu, j’apporte la vision technique et les améliorations de mécaniques. On affine ensemble au fil du développement.

Le défi

Construire un jeu de soirée avec des questions texte, n’importe qui peut le faire. Le vrai défi de Carnage est triple :

Faire coexister 18 types de questions radicalement différents — du vote classique à la photo en temps réel, du quiz chronométré au défi physique, du classement par drag & drop à la confession secrète entre deux joueurs. Chaque type a ses propres règles, son propre timer, sa propre interface. Et tous doivent fonctionner aussi bien sur un seul téléphone partagé que sur 8 téléphones synchronisés en temps réel.

Gérer les médias en pleine partie sans casser le rythme. Quand 6 joueurs prennent une photo en même temps, il faut que les photos s’affichent instantanément dans le carousel de vote — pas 30 secondes plus tard.

Et le tout doit coûter quasiment rien à faire tourner, même avec des milliers de parties par jour.

18 types de questions — pourquoi c’est le cœur du jeu

Les concurrents proposent 3 à 5 types de questions. Carnage en a 18, répartis en deux familles.

13 types “party” (3 joueurs et plus) : votes entre joueurs, quiz culture générale avec deux sous-modes (tout le monde répond dans l’app, ou un joueur répond à l’oral et l’hôte valide), défis physiques chronométrés, classements par drag & drop, photos prises en direct et votées en carousel, textes libres avec média, et des classiques revisités comme “Je n’ai jamais” ou “Tu préfères”.

5 types “drague” (exactement 2 joueurs) : choix simultanés avec révélation match/divergence, confessions secrètes avec révélation synchronisée, action ou vérité avec branches différentes, jauges de compatibilité, et un mode asymétrique où un joueur répond et l’autre devine. Les apps couples et les jeux de soirée sont deux marchés séparés — Carnage les réunit. On passe d’une soirée à 6 à un tête-à-tête à 2 dans la même app.

Carnage — quiz vocalCarnage — vote entre joueursCarnage — défi photo

Chaque question s’adapte au genre des joueurs (formulations masculin/féminin), supporte le français et l’anglais nativement, et a un niveau d’intensité qui filtre automatiquement selon le mode de jeu (familial, soft, extrême). Le joueur ne sait jamais quel type de question arrive — c’est ce qui maintient l’engagement.

Un seul téléphone ou chacun le sien — le même jeu

Carnage fonctionne en deux modes : un téléphone partagé qui passe de main en main, ou chaque joueur sur son propre appareil, synchronisés en temps réel.

En mode partagé, tout se joue sur un seul écran. La question s’affiche, chaque joueur vote à tour de rôle, les résultats tombent avec une punchline. Simple, pas besoin que tout le monde ait l’app.

En mode multi-appareils, la synchronisation est transparente. Un joueur crée la partie et partage un code. Les autres rejoignent, et tout le monde voit les mêmes questions, vote en même temps, et reçoit les résultats simultanément. Si un joueur perd sa connexion, le serveur le détecte automatiquement — pas besoin que son téléphone le signale. Le jeu continue pour les autres sans se bloquer.

Carnage — lobby multijoueur avec code et QR

Les deux modes partagent la même architecture. Pas de code séparé, pas de version dégradée — c’est le même moteur de jeu qui s’adapte au contexte.

Les médias en pleine partie — l’innovation invisible

C’est le problème technique le plus dur du projet. En plein milieu d’une partie, 6 joueurs prennent une photo en même temps. Il faut que le carousel de vote s’affiche instantanément — pas de roue de chargement, pas de temps mort.

La solution : chaque photo est compressée en deux versions simultanément. Une miniature légère (5 à 15 KB) part en premier — en moins d’une demi-seconde. Les autres joueurs voient déjà une preview. La version haute qualité suit en arrière-plan (1 à 3 secondes). L’image se nettoie progressivement sous les yeux du joueur, comme un fondu.

Mais le vrai gain est côté réception : l’app commence à télécharger les photos des autres joueurs avant même que la phase de vote ne commence. Quand le carousel s’affiche, tout est déjà en cache. Le joueur n’attend jamais.

Si un joueur change de photo en cours d’upload, l’ancien envoi est annulé proprement. Si le réseau coupe, l’app réessaie automatiquement. Si une photo orpheline reste sur le serveur, elle est nettoyée. Le joueur ne voit rien de tout ça — il prend sa photo, elle apparaît pour les autres, tout est fluide.

Une architecture pensée pour coûter moins

Chaque partie de Carnage nécessite de sélectionner une dizaine de questions parmi un pool de 600+. Si chaque sélection passait par le serveur, ça représenterait des dizaines de milliers de requêtes par jour — et une facture qui explose avec le nombre de joueurs.

J’ai fait le choix de stocker les questions localement sur le téléphone, avec une synchronisation automatique une fois par jour. La sélection se fait en moins de 10 millisecondes, sans aucun appel réseau. Résultat : une réduction de coût de 97% par rapport à une architecture classique, et un jeu qui fonctionne même sans connexion pour les parties sur un seul téléphone.

Le contenu lui-même passe par un pipeline de validation : chaque question est évaluée, notée, et ne devient disponible aux joueurs qu’après validation. Ce n’est pas un dump de contenu — c’est un système éditorial.

Le résultat

Une application complète, en cours de finalisation pour publication :

  • 18 types de questions (13 party + 5 drague) — chaque partie est une surprise
  • 2 modes de jeu : un téléphone partagé ou chacun le sien, synchronisé en temps réel
  • Photos et vidéos en direct pendant la partie, affichage quasi-instantané
  • 600+ questions bilingues (FR/EN), avec variantes genrées et filtrage par intensité
  • Architecture optimisée : 97% de réduction de coût serveur, jeu jouable hors connexion
  • Pipeline de qualité pour le contenu : validation multi-étapes, score qualité

Ce que ce projet montre

Carnage est le projet le plus ambitieux techniquement de mon portfolio. 18 mécaniques de jeu différentes, du temps réel multi-appareils, de l’upload média en pleine partie, trois couches de base de données, chacune choisie pour ce qu’elle fait le mieux. Et le tout doit rester fluide, fun, et instantané pour le joueur — qui ne voit rien de cette complexité.

C’est aussi un projet où la vision produit guide chaque choix technique. Le mode drague est un positionnement marché, pas un ajout technique. Le système de preview photo est une décision d’expérience utilisateur, pas d’architecture. La base locale est un choix de rentabilité, pas de performance. Chaque décision technique a une raison business.

Flutter Firebase SQLite Riverpod
· CTO — architecture, développement, vision produit partagée

Un projet similaire ?

Parlons de votre projet