Flutter Templates
Créer un jeu multiplateforme en utilisant Flutter et Back4app
12 min
introduction flutter est un framework open source polyvalent de google qui permet aux développeurs de créer des applications compilées nativement pour mobile, web, bureau et appareils embarqués à partir d'une seule base de code bien que flutter soit principalement connu pour le développement d'applications traditionnelles, il est de plus en plus utilisé pour le développement de jeux en raison de ses performances, de son vaste écosystème de packages et de sa fonctionnalité de rechargement à chaud dans ce guide, nous allons vous montrer comment développer un jeu de style flappy bird multiplateforme en utilisant flutter et flame, un moteur de jeu conçu pour les jeux 2d dans flutter de plus, nous connecterons le jeu à back4app, une plateforme de backend as a service (baas), pour stocker les scores des utilisateurs et afficher un tableau des leaders à la fin de ce guide, vous aurez une version fonctionnelle du jeu qui fonctionne sur les plateformes mobiles et web, et qui stockera et récupérera les meilleurs scores depuis back4app prérequis pour compléter ce tutoriel, vous aurez besoin de un compte back4app inscrivez vous pour un compte gratuit sur back4app com https //www back4app com un environnement de développement flutter est configuré sur votre machine locale suivez le guide d'installation de flutter https //flutter dev/docs/get started/install si vous ne l'avez pas encore configuré connaissances de base en dart, widgets flutter et concepts de développement de jeux étape 1 – configuration de votre backend back4app créer un projet back4app connectez vous à votre compte back4app https //dashboard back4app com/ et créez un nouveau projet créer des classes parse pour ce tutoriel, nous allons configurer un backend simple pour gérer les données liées aux jeux dans votre projet back4app, créez deux classes parse nommées joueur et scoredejeu joueur stocke les informations du joueur telles que le nom d'utilisateur, le niveau et les réalisations scoredejeu stocke les scores et les classements du jeu obtenez vos identifiants back4app accédez aux paramètres de votre projet pour récupérer votre id d'application et votre clé client, dont vous aurez besoin pour connecter votre jeu flutter à back4app étape 2 – configuration de votre projet flutter créer un nouveau projet flutter ouvrez votre terminal ou invite de commande et exécutez ajouter des dépendances ouvrez pubspec yaml et ajoutez les dépendances suivantes initialiser parse dans votre application dans lib/main dart , importez le sdk parse et initialisez le dans la fonction main import 'package\ flutter/material dart'; import 'package\ parse server sdk flutter/parse server sdk flutter dart'; import 'package\ flame/flame dart'; import 'package\ flame/game dart'; void main() async { widgetsflutterbinding ensureinitialized(); const keyapplicationid = 'your back4app app id'; const keyclientkey = 'your back4app client key'; const keyparseserverurl = 'https //parseapi back4app com'; await parse() initialize(keyapplicationid, keyparseserverurl, clientkey keyclientkey, autosendsessionid true); runapp(mygameapp()); } class mygameapp extends statelesswidget { @override widget build(buildcontext context) { return materialapp( home gamescreen(), ); } } remplacez 'your back4app app id' et 'your back4app client key' par vos véritables identifiants back4app étape 3 – configuration du jeu avec flame créer la classe de jeu flame est un moteur de jeu open source construit sur flutter il fournit des outils et des api pour créer des jeux 2d créez une simple classe de jeu en utilisant flame import 'package\ flame/game dart'; import 'package\ flame/components dart'; class mysimplegame extends flamegame { @override future\<void> onload() async { super onload(); add(playercomponent()); } } class playercomponent extends positioncomponent { @override future\<void> onload() async { // load player sprite or set up player visuals here size = vector2(50, 50); // set size of the player position = vector2(100, 100); // set initial position // optionally, add sprite or animations } @override void update(double dt) { // update player state here } @override void render(canvas canvas) { super render(canvas); // draw player visuals final paint = paint() color = colors blue; canvas drawrect(size torect(), paint); } } 2\ créer l'écran de jeu mettez à jour le gamescreen widget pour afficher le jeu class gamescreen extends statelesswidget { @override widget build(buildcontext context) { return scaffold( body mysimplegame() widget, ); } } 3\ exécuter le jeu vous pouvez maintenant exécuter votre application en utilisant flutter run pour voir votre jeu simple en action vous devriez voir un carré bleu représentant le joueur étape 4 – gestion des données de jeu avec back4app sauvegarde des données du joueur ensuite, créons une fonction pour sauvegarder les données du joueur sur back4app lorsque le joueur monte de niveau ou réalise quelque chose future\<void> saveplayerdata(string username, int level, list\<string> achievements) async { final player = parseobject('player') set('username', username) set('level', level) set('achievements', achievements); final response = await player save(); if (response success) { print('player data saved successfully'); } else { print('failed to save player data'); } } 2\ récupération des meilleurs scores vous pouvez également récupérer les meilleurs scores de votre jeu depuis back4app pour les afficher sur un tableau des scores future\<list\<parseobject>> fetchhighscores() async { final query = querybuilder\<parseobject>(parseobject('gamescore')) orderbydescending('score') setlimit(10); final response = await query query(); if (response success && response results != null) { return response results as list\<parseobject>; } else { print('failed to fetch high scores'); return \[]; } } future\<list\<parseobject>> fetchhighscores() async { final query = querybuilder\<parseobject>(parseobject('gamescore')) orderbydescending('score') setlimit(10); final response = await query query(); if (response success && response results != null) { return response results as list\<parseobject>; } else { print('failed to fetch high scores'); return \[]; } } future\<list\<parseobject>> fetchhighscores() async { final query = querybuilder\<parseobject>(parseobject('gamescore')) orderbydescending('score') setlimit(10); final response = await query query(); if (response success && response results != null) { return response results as list\<parseobject>; } else { print('failed to fetch high scores'); return \[]; } } 3\ afficher le tableau des leaders utilisez listview\ builder dans un widget flutter pour afficher les 10 meilleurs scores class leaderboardscreen extends statefulwidget { @override leaderboardscreenstate createstate() => leaderboardscreenstate(); } class leaderboardscreenstate extends state\<leaderboardscreen> { list\<parseobject> highscores = \[]; @override void initstate() { super initstate(); fetchhighscores() then((scores) { setstate(() { highscores = scores; }); }); } @override widget build(buildcontext context) { return scaffold( appbar appbar(title text('leaderboard')), body listview\ builder( itemcount highscores length, itembuilder (context, index) { final score = highscores\[index]; return listtile( title text(score get\<string>('playerid') ?? 'unknown player'), subtitle text('score ${score get\<int>('score')}'), ); }, ), ); } } étape 5 – ajout de fonctionnalités avancées avec flame si vous souhaitez ajouter des mécaniques de jeu plus complexes, des animations ou des interactions, vous pouvez étendre votre utilisation de flame en introduisant des composants supplémentaires tels que des sprites, de la physique et la détection de collisions flame prend également en charge l'intégration avec firebase, permettant des fonctionnalités multijoueurs, des achats in app, et plus encore conclusion dans ce tutoriel, vous avez appris à utiliser flutter et flame pour construire un jeu multiplateforme simple et comment intégrer back4app pour gérer les données du jeu telles que les profils de joueurs et les scores élevés la capacité de flutter à se déployer sur plusieurs plateformes à partir d'une seule base de code, combinée aux services backend robustes de back4app, en fait une pile puissante pour développer et faire évoluer des jeux que vous créiez un jeu casual simple ou une expérience interactive plus complexe, flutter et back4app fournissent les outils pour construire, déployer et gérer votre jeu efficacement pour plus d'informations, consultez la documentation flutter https //flutter dev/docs et la documentation back4app https //www back4app com/docs bon codage !