Développement de jeux avec Flutter
De la première ligne de Dart au jeu 2D publié. 62 chapitres, plus de 600 exercices corrigés, un fil rouge unique : le Donjon de Dart.
Ce que vous allez construire
Cette formation ne s'arrête pas aux widgets. Elle vous conduit jusqu'à un jeu 2D complet — joueur animé, ennemis dotés d'une IA, collisions, score, niveaux, boss, sauvegarde — écrit d'abord à la main en Flutter pur, puis avec Flame, le moteur de jeu 2D de l'écosystème Flutter.
Aucune connaissance en programmation n'est requise au départ : les dix-huit premiers chapitres enseignent le langage Dart depuis zéro, dans le navigateur, sans rien installer. Aucun fichier image ni audio n'est nécessaire non plus : tous les exemples de jeu tournent avec des formes géométriques colorées, et les chapitres concernés indiquent où trouver des ressources libres de droits et quel code substituer pour les brancher.
Trois façons de suivre la formation
Parcours complet
Dart, puis Flutter, puis les mini-projets, puis le jeu. L'ordre dans lequel les chapitres sont présentés ci-dessous.
Parcours jeu rapide
Les dix-huit chapitres de Dart, puis directement la partie 2. Le chapitre 19 contient tout le Flutter nécessaire au jeu.
Parcours application
Dart, Flutter et les huit mini-projets, sans la partie jeu. De quoi publier une application mobile classique.
Le programme
Partie 1A — Apprendre Dart
10 chapitres- 01 Introduction à Dart Écrire, lire et exécuter un programme Dart minimal, et comprendre le rôle de Dart par rapport à Flutter. 1 h 30
- 02 Variables, constantes et types Déclarer, typer, modifier et afficher des variables Dart (String, int, double, bool, num), choisir entre var, dynamic, final, const et late, utiliser… 3 h
- 03 Opérateurs et expressions Écrire des calculs, des comparaisons et des expressions booléennes complètes, prêtes à être réutilisées dans des conditions. 3 h
- 04 Conditions : if, else if, else, switch Faire réagir un programme aux données grâce à if, else if, else et switch, y compris le switch expression moderne de Dart. 3 h
- 05 Boucles : for, while, do while Écrire des boucles for, while et do while, contrôler leur déroulement avec break et continue, et imbriquer des boucles pour parcourir des grilles 2D. 4 h
- 06 Collections : List, Set, Map Créer, parcourir et manipuler des List, des Set et des Map, y compris des collections imbriquées proches de ce que renvoie une API, et construire un… 6 h
- 07 Les fonctions Découper un programme en fonctions claires, avec des paramètres, des valeurs de retour, des paramètres optionnels et nommés, et écrire un petit moteur de… 6 h
- 08 Introduction à la POO Écrire vos propres classes, créer des objets à partir de ces classes, lire et modifier leurs propriétés, appeler leurs méthodes, et faire interagir… 6 h
- 09 Constructeurs et modélisation Créer des objets complets et valides dès leur première ligne de vie grâce aux constructeurs, exposer des valeurs calculées avec des getters, et traduire… 7 h
- 10 Encapsulation, héritage, polymorphisme Protéger les données d'une classe avec des membres privés, des getters et des setters validés, construire une hiérarchie de classes avec extends et super… 7 h
Partie 1A — Évaluation
2 chapitres- · Examen 1 : sujet, chapitres 01 à 10 Évaluez vos acquis sur les dix premiers chapitres de Dart : variables, types, conditions, boucles, collections, fonctions et objets.
- · Examen 1 : corrigé commenté Le corrigé détaillé de l'examen 1, avec l'explication de chaque réponse et les erreurs les plus fréquentes.
Partie 1A — Apprendre Dart
8 chapitres- 11 POO avancée : abstract, mixins, enums Concevoir une hiérarchie de classes propre avec des classes abstraites, des interfaces, des mixins, des enums et des extensions, et choisir le bon outil… 7 h
- 12 Le null safety Écrire du code Dart dans lequel une valeur absente ne peut plus faire planter le programme, en distinguant les types nullables des types non nullables et… 5 h
- 13 Exceptions et gestion des erreurs Écrire un programme Dart qui ne s'arrête jamais brutalement devant une donnée invalide, en signalant les problèmes avec throw et en les rattrapant au bon… 5 h
- 14 Programmation fonctionnelle sur les collections Transformer, filtrer, trier et résumer n'importe quelle liste de joueurs, d'ennemis ou d'objets d'inventaire en quelques lignes déclaratives, sans écrire… 6 h
- 15 Programmation asynchrone : Future, async, await Écrire un programme qui attend un résultat long (chargement, réseau, fichier) sans jamais bloquer le reste de l'application, en maîtrisant Future, async… 6 h
- 16 Organisation d'un projet Dart Installer Dart sur votre machine, créer un vrai projet avec dart create, le découper en plusieurs fichiers, y ajouter des packages venus de pub.dev… 6 h
- 17 JSON et modélisation de données Transformer du texte JSON en objets Dart typés et vos objets Dart en texte JSON, en gérant proprement les valeurs manquantes, les types incohérents et les… 6 h
- 18 Mini-projet final : Donjon de Dart (console) Concevoir, écrire, tester et livrer une application Dart complète de plusieurs centaines de lignes, organisée en modèles, services et point d'entrée, avec… 12 h
Partie 1B — Créer des applications Flutter
12 chapitres- 43 Installer Flutter et structure d'un projet Installer le SDK Flutter sur votre système, diagnostiquer votre installation avec flutter doctor, créer un projet, en nommer chaque dossier, le lancer sur… 6 h
- 44 Les widgets et l'arbre de widgets Lire et écrire un arbre de widgets Flutter, construire un écran complet avec MaterialApp, Scaffold, AppBar, Center et Text, comprendre ce qu'est un… 7 h
- 45 StatelessWidget, StatefulWidget et cycle de vie Décider si un widget doit être StatelessWidget ou StatefulWidget, stocker un état dans une classe State, le modifier proprement avec setState()… 7 h
- 46 Les layouts : Row, Column, Stack et les contraintes Placer n'importe quel widget exactement où vous le voulez à l'écran, comprendre et corriger les erreurs de mise en page de Flutter, et reproduire une… 10 h
- 47 Texte, images, icônes et assets Styliser n'importe quel texte, déclarer et utiliser une police, afficher des icônes, déclarer un dossier d'assets dans pubspec.yaml sans erreur… 8 h
- 48 Listes : ListView, GridView et défilement Afficher n'importe quelle collection Dart à l'écran sous forme de liste ou de grille performante, la filtrer, la trier, la rafraîchir, la réordonner et en… 8 h
- 49 Boutons, formulaires et validation Construire un formulaire complet, validé champ par champ, avec clavier adapté, messages d'erreur, retours utilisateur et soumission propre. 10 h
- 50 Navigation et routes Construire une application à plusieurs écrans, passer des données dans les deux sens entre ces écrans, organiser la navigation par onglets et par tiroir… 12 h
- 51 Thèmes, Material 3 et interfaces adaptatives Définir un thème complet pour votre application, la faire basculer en mode sombre, et écrire une interface qui reste lisible et bien proportionnée du… 10 h
- 52 La gestion d'état : de setState à Provider Distinguer l'état éphémère de l'état d'application, comprendre le mécanisme InheritedWidget sur lequel repose tout Flutter, écrire une classe d'état avec… 10 h
- 53 Consommer une API REST : HTTP, JSON et FutureBuilder Aller chercher des données sur un serveur, les transformer en objets Dart, les afficher dans une liste, et gérer proprement le chargement, les erreurs, le… 12 h
- 54 Stockage local et persistance Choisir la bonne famille de stockage pour chaque donnée, écrire et relire des préférences, des fichiers et une vraie base de données SQL sur l'appareil… 10 h
Partie 1C — Huit mini-projets
8 chapitres- 55 Carte de profil Construire de zéro un composant d'interface soigné, paramétrable et réutilisable, l'afficher en liste, l'adapter au mode sombre et à la tablette, et… 8 h
- 56 Calculatrice Écrire une application Flutter dont le cœur métier est une classe Dart pure, testée unitairement, et dont l'interface n'est qu'une couche d'affichage… 12 h
- 57 Convertisseur d'unités Construire une application complète pilotée par un formulaire, séparer proprement une logique métier testable de son interface, et écrire les tests… 12 h
- 58 Liste de tâches Construire de bout en bout une application de gestion de tâches complète — modèle de données sérialisable, dépôt interchangeable, liste filtrable, triable… 12 h
- 59 Quiz Construire une application de quiz complète — banque de questions en JSON embarquée dans les assets, chargement asynchrone, moteur de quiz pur et… 12 h
- 60 Catalogue de produits et panier Construire une boutique complète — catalogue chargé depuis un fichier JSON, grille responsive, fiche produit animée, panier centralisé avec provider… 14 h
- 61 Application météo (API Open-Meteo) Brancher une application Flutter sur une vraie API publique, en modéliser la réponse JSON, gérer proprement les trois états d'un écran de données… 14 h
- 62 Lanceur de jeu (pont vers la PARTIE 2) Construire l'intégralité du « méta-jeu » qui entoure un jeu vidéo — menu animé, création de personnage, fiche, inventaire, équipement, boutique… 20 h
Partie 2A — Les fondamentaux du jeu 2D
8 chapitres- 19 Flutter en accéléré pour le jeu Installer le SDK Flutter, créer un projet, comprendre un arbre de widgets, gérer un état avec setState(), dessiner sur un Canvas avec CustomPainter et… 8 h
- 20 Boucle de jeu, FPS et delta time Écrire une boucle de jeu complète en Dart et en Flutter pur, mesurer les FPS, et faire bouger un objet à la même vitesse réelle sur toutes les machines… 6 h
- 21 Coordonnées, Canvas et dessin 2D Dessiner n'importe quelle scène 2D à la main avec Canvas et Paint, la positionner au pixel près dans le repère de l'écran, la transformer (translation… 7 h
- 22 Sprites, sprite sheets et animation Charger une image, la découper en frames, et afficher un personnage animé dont la vitesse d'animation ne dépend pas du framerate — avec ou sans fichier… 6 h
- 23 Mouvement, vélocité et physique simple Écrire votre propre classe de vecteur 2D, appliquer la gravité, faire sauter un personnage avec un saut variable, un double saut, du coyote time, du… 8 h
- 24 Collisions et hitboxes Écrire à la main toute la détection de collision d'un jeu 2D — AABB, cercles, point, cercle-rectangle — puis la résoudre proprement axe par axe, éviter le… 8 h
- 25 Caméra, monde et niveaux Construire un monde bien plus grand que l'écran, écrire une caméra maison qui suit le joueur en douceur, dessiner un décor en parallaxe, charger un niveau… 8 h
- 26 Architecture et états d'un jeu Organiser un jeu complet en entités, états, services et fichiers séparés, au lieu d'un unique main.dart illisible. 8 h
Partie 2B — Le moteur Flame
8 chapitres- 27 Installer Flame et premier FlameGame Créer un projet Flutter, y installer Flame, écrire un FlameGame complet avec onLoad, update et render, l'afficher dans un GameWidget, manipuler des… 7 h
- 28 Components et cycle de vie Construire un jeu entier sous forme d'arbre de composants, maîtriser leur cycle de vie, leurs coordonnées et leur ordre de rendu. 8 h
- 29 Sprites, animations et assets Afficher, animer et piloter des sprites avec Flame, organiser un dossier d'assets propre, et faire tourner l'intégralité du chapitre sans posséder le… 8 h
- 30 Entrées : clavier, tactile et joystick Contrôler le héros du « Donjon de Dart » au clavier sur ordinateur, au doigt et au joystick sur mobile, avec un bouton d'attaque, sans écrire deux fois la… 8 h
- 31 Caméra, viewport et monde Afficher un donjon plus grand que l'écran, faire suivre le héros par la caméra sans secousse, borner le regard aux murs du niveau, poser un HUD qui ne… 9 h
- 32 Collisions et CollisionCallbacks Faire réagir les composants du « Donjon de Dart » les uns aux autres — murs infranchissables, pièces ramassées, gobelins qui blessent — en laissant Flame… 9 h
- 33 Effets, particules et timers Transformer une scène du « Donjon de Dart » qui fonctionne en une scène qui fait plaisir à jouer, à l'aide d'effets, de particules et de minuteries, sans… 8 h
- 34 Audio, Tiled et physique avancée Faire sonner le « Donjon de Dart », charger un niveau dessiné dans Tiled, et décider en connaissance de cause si votre jeu a besoin ou non d'un moteur… 9 h
Partie 2C — Le jeu complet
6 chapitres- 35 Architecture du jeu et menu principal Créer le squelette complet du projet « Donjon de Dart », écrire la classe DonjonGame, piloter le jeu avec une machine à états, afficher des écrans Flutter… 6 h
- 36 Le joueur : mouvement et animations Écrire un personnage de plateforme complet, agréable à jouer, avec gravité, saut variable, coyote time, jump buffering, machine à états d'animation et… 10 h
- 37 Ennemis, IA et combat Peupler la salle du « Donjon de Dart » d'ennemis qui patrouillent, vous repèrent, vous poursuivent, vous frappent, vous tirent dessus, encaissent vos… 10 h
- 38 Objets, collectibles, score et HUD Poser dans le donjon des objets ramassables typés, faire monter un score avec un multiplicateur de combo, et afficher au-dessus du jeu une interface… 9 h
- 39 Niveaux, boss et progression Décrire un niveau entier dans un fichier texte, le charger à la demande, enchaîner trois salles avec un fondu au noir, faire tomber un boss à trois phases… 12 h
- 40 Sons, pause, Game Over et sauvegarde Doter le jeu d'un service audio qui fonctionne même sans un seul fichier son, d'un menu pause, d'un écran Game Over, d'un écran de victoire avec… 7 h
Partie 2D — Votre projet final
2 chapitres- 41 Cahier des charges et Game Design Document Transformer une idée de jeu vague en trois documents exploitables — un pitch, un cahier des charges et un Game Design Document — puis en une arborescence… 5 h (dont 3 h de rédaction de vos propres documents)
- 42 Tests, performance et publication Écrire une suite de tests automatiques pour un jeu Flame, mesurer et corriger une chute de FPS avec le DevTools, puis produire et publier un APK Android… 12 h