La question revient régulièrement dans les forums indie : « Peut-on vraiment faire un jeu avec Flutter ? ». La réponse honnête : oui, pour certains types de jeux. Après avoir développé Cendrelune (idle game) et AbcDonjon (roguelite) en Flutter, voici ce que j'en pense concrètement.

Flutter n'est pas Unity — et c'est souvent une bonne nouvelle

Flutter est un framework d'interface utilisateur. Il n'embarque pas de moteur physique, de gestionnaire de scènes 3D ou de système de particules. Pour un jeu d'action ou un platformer, c'est une limitation rédhibitoire. Pour un jeu de gestion idle ou un roguelite à base de cartes et de texte, c'est précisément ce qu'il faut : des widgets déclaratifs performants, des animations CSS-like, un système de layout puissant.

Unity ou Godot pour Cendrelune ou AbcDonjon aurait été du surdimensionnement — des outils conçus pour des besoins que ces jeux n'ont pas. Flutter permet de construire des interfaces riches avec très peu de boilerplate, ce qui est un avantage énorme en solo.

Les performances : 60 fps sur mobile bas de gamme

Flutter compile en code natif ARM via AOT (Ahead-of-Time compilation). Il ne passe pas par un bridge JavaScript ou une VM interprétée — contrairement à React Native ou à certains moteurs de jeu hybrides. Résultat : les performances sont proches du natif.

Sur Cendrelune, la boucle principale met à jour les ressources, redessine la barre de ressources et anime les cartes de bâtiments simultanément. Sur un iPhone XR ou un Android mid-range, tout tourne à 60 fps sans effort particulier d'optimisation.

La clé est d'utiliser Riverpod correctement : des providers granulaires qui ne reconstruisent que les widgets concernés, pas l'arbre entier. Un provider par type de ressource, un notifier par feature — et Flutter ne redessine que ce qui change réellement.

Le rendu custom : CustomPainter

Pour la grille de mots croisés d'AbcDonjon, les widgets Flutter standard ne suffisent pas. La grille est un canvas 2D avec des contraintes de positionnement précises, des animations par case et des états multiples (vide, lettre entrée, lettre révélée, lettre correcte).

CustomPainter est la réponse Flutter à ce besoin : un widget qui expose un canvas et permet de dessiner avec l'API canvas de Dart. Performances excellentes — le peintre n'est rappelé que quand ses données changent, via un CustomPainter.shouldRepaint que vous contrôlez.

Ce que Flutter gère mal pour les jeux

Les assets sonores

Flutter n'a pas de solution audio native satisfaisante. Le package audioplayers est fonctionnel mais pas parfait — des latences sur certains appareils Android, des limitations sur la superposition de sons. Pour un jeu idle avec peu de sons, c'est acceptable. Pour un jeu d'action avec des effets sonores précis, il faudra chercher ailleurs.

Les animations complexes

Flutter anime très bien des transitions de widgets et des propriétés simples (opacité, position, échelle). Pour des animations de personnages ou des effets de particules élaborés, il faut soit passer par CustomPainter, soit intégrer un moteur comme Flame (un moteur de jeu 2D basé sur Flutter). Aucune de ces solutions n'est aussi ergonomique qu'un vrai moteur de jeu.

Le hot reload en production

Le hot reload Flutter est magique en développement. En production, si un bug critique surgit, la mise à jour passe par les stores — et leur délai de validation. Pas de spécificité Flutter ici, mais un rappel que le cycle de release mobile reste lent.

Pour quel type de jeu ?

Flutter est excellent pour les jeux à interface riche : idle games, jeux de gestion, jeux de cartes, puzzles, word games. Il est inadapté aux jeux d'action, aux plateformers, aux jeux nécessitant une physique complexe ou des animations de personnages détaillées.

Si votre jeu ressemble plus à une application sophistiquée qu'à un jeu vidéo traditionnel, Flutter est probablement le meilleur choix pour un développeur solo qui veut cibler iOS et Android avec une seule codebase.

Conclusion

Deux jeux en production, plusieurs milliers d'utilisateurs, zéro crash lié aux performances. Flutter tient ses promesses pour les genres auxquels il est adapté. Le vrai avantage concurrentiel pour un indie dev : une seule codebase, un écosystème riche, et la liberté de se concentrer sur le gameplay plutôt que sur l'infrastructure de rendu.