Réécriture moderne d'un jeu d'arène façon .io (Vite + TypeScript + PixiJS) : on grossit en dévorant, on monte de niveau, on choisit des power-ups, et le dernier orbe debout gagne. Jouable en solo contre des bots ou en ligne à plusieurs via un simple code de room.
Le cœur du projet, c'est le netcode temps réel. Modèle host-authoritatif : un joueur fait foi et simule la partie, les autres appliquent prédiction locale + interpolation pour un rendu fluide à 60 fps malgré la latence. Pour éviter le détour par le serveur, le trafic de jeu passe en pair-à-pair via WebRTC (DataChannels non-fiables, façon UDP), avec repli transparent sur un relais WebSocket quand le P2P ne peut pas s'établir.
Pour que ça tienne aussi sur données mobiles (NAT symétrique / CGNAT), un endpoint génère des identifiants TURN éphémères via le réseau Cloudflare — les secrets restent côté serveur. Le jeu gère le rematch dans la même room et la reconnexion automatique (identité invité stable, l'hôte reprend l'orbe). Déployé sur Cloudflare Pages, passerelle temps réel sur mon VPS (core-api).