Pourquoi la Physique Déterministe a Sauvé la Synchro de 15 Téléphones en Flutter
Nous sommes l'équipe de développement indépendante derrière Wobbly Bottle. Lors des soirées étudiantes ou des apéros, 10 personnes se bousculent presque toujours autour d'un seul smartphone de 6 pouces. Wobbly Bottle élimine ce problème : jusqu'à 15 participants rejoignent le salon avec un code PIN à 6 lettres, et la bouteille tourne en temps réel, synchronisée à 60 FPS sur l'écran de chaque joueur. 1. Pourquoi streamer chaque image a échoué Notre première idée : diffuser l'angle de la bouteille 60 fois par seconde via WebSockets aux 14 autres téléphones. Le résultat a été catastrophique : Consommation de données excessive : 60 paquets par seconde multipliés par 14 clients saturent la bande passante. Saccades et décalages : Dès qu'un réseau 4G subit une micro-coupure, l'animation devient hachée. Surchauffe thermique : Sur les anciens appareils Android, décoder des flux JSON intensifs entraînait des chutes de framerate. 2. La solution : Synchroniser l'événement, calculer en local Au lieu de diffuser des coordonnées, l'hôte transmet un seul message initial : { "type": "spin_started", "roundId": "round-42", "initialAngle": 1.2, "impulse": { "angularVelocity": 18.7 }, "startAt": 1730000000000 } Chaque téléphone exécute ensuite localement la même formule de décélération dans un CustomPainter Flutter à 60 FPS : const fixedStep = 1 / 60; const damping = 0.985; void onTick() { angularVelocity *= damping; angle += angularVelocity * fixedStep; } Grâce à cette physique déterministe, la bouteille ralentit et s'arrête au même angle exact sur tous les écrans du salon. 3. Reconnexion instantanée : Snapshot au lieu de Replay Si un joueur perd momentanément la connexion, nous ne rejouons pas l'historique des animations passées. Le client demande un instantané d'état (qui doit jouer, quelle carte est tirée) et reprend la partie immédiatement sans latence. Liens de Téléchargement Gratuit 🌐 Guide officiel du Jeu de la Bouteille en Ligne 🍏 Télécharger sur l'App Store Apple 🤖 Télécharger sur le Google Play Store 💻 Dépôt Open Source sur GitHub
This is a summary aggregated from Dev.to. Read the complete article on the original site:
Read full article at Dev.to