Flutter Templates
Crea un gioco multipiattaforma con Flutter e Back4app
12 min
introduzione flutter è un framework open source versatile di google che consente agli sviluppatori di creare applicazioni compilate nativamente per dispositivi mobili, web, desktop e embedded da un'unica base di codice sebbene flutter sia principalmente conosciuto per lo sviluppo di app tradizionali, viene sempre più utilizzato per lo sviluppo di giochi grazie alle sue prestazioni, all'ampio ecosistema di pacchetti e alla funzionalità di hot reload in questa guida, passeremo in rassegna come sviluppare un gioco in stile flappy bird multipiattaforma utilizzando flutter e flame, un motore di gioco progettato per giochi 2d in flutter inoltre, collegheremo il gioco a back4app, una piattaforma di backend as a service (baas), per memorizzare i punteggi degli utenti e visualizzare una classifica entro la fine di questa guida, avrai una versione funzionante del gioco che gira su piattaforme mobili e web, e memorizzerà e recupererà i punteggi più alti da back4app requisiti per completare questo tutorial, avrai bisogno di un account back4app registrati per un account gratuito su back4app com https //www back4app com un ambiente di sviluppo flutter è configurato sul tuo computer locale segui la guida all'installazione di flutter https //flutter dev/docs/get started/install se non l'hai ancora configurato conoscenze di base di dart, widget flutter e concetti di sviluppo di giochi passo 1 – configurare il tuo backend back4app crea un progetto back4app accedi al tuo account back4app https //dashboard back4app com/ e crea un nuovo progetto crea classi parse per questo tutorial, configureremo un backend semplice per gestire i dati relativi ai giochi nel tuo progetto back4app, crea due classi parse chiamate player e gamescore player memorizza le informazioni del giocatore come nome utente, livello e traguardi gamescore memorizza punteggi e classifiche per il gioco ottieni le tue credenziali back4app naviga nelle impostazioni del tuo progetto per recuperare il tuo id applicazione e la chiave client, che ti serviranno per connettere il tuo gioco flutter a back4app passo 2 – configurare il tuo progetto flutter crea un nuovo progetto flutter apri il tuo terminale o prompt dei comandi e esegui aggiungi dipendenze apri pubspec yaml e aggiungi le seguenti dipendenze inizializza parse nella tua app in lib/main dart , importa il sdk di parse e inizializzalo nella funzione 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(), ); } } sostituisci 'your back4app app id' e 'your back4app client key' con le tue credenziali effettive di back4app passo 3 – configurare il gioco utilizzando flame crea la classe gioco flame è un motore di gioco open source costruito su flutter fornisce strumenti e api per costruire giochi 2d crea una semplice classe di gioco utilizzando 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\ crea la schermata di gioco aggiorna il gamescreen widget per visualizzare il gioco class gamescreen extends statelesswidget { @override widget build(buildcontext context) { return scaffold( body mysimplegame() widget, ); } } 3\ esegui il gioco ora puoi eseguire la tua app utilizzando flutter run per vedere il tuo semplice gioco in azione dovresti vedere un quadrato blu che rappresenta il giocatore passo 4 – gestire i dati di gioco con back4app salvataggio dei dati del giocatore successivamente, creiamo una funzione per salvare i dati del giocatore su back4app quando il giocatore sale di livello o raggiunge qualcosa 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\ recupero dei punteggi più alti puoi anche recuperare i punteggi più alti per il tuo gioco da back4app da visualizzare su una classifica 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\ visualizza la classifica usa listview\ builder in un widget flutter per visualizzare i primi 10 punteggi 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')}'), ); }, ), ); } } passo 5 – aggiunta di funzioni avanzate con flame se desideri aggiungere meccaniche di gioco più complesse, animazioni o interazioni, puoi espandere l'uso di flame introducendo componenti aggiuntivi come sprite, fisica e rilevamento delle collisioni flame supporta anche l'integrazione con firebase, abilitando funzionalità multiplayer, acquisti in app e altro conclusione in questo tutorial, hai imparato come utilizzare flutter e flame per costruire un semplice gioco multiplatform e come integrare back4app per gestire i dati di gioco come profili giocatore e punteggi elevati la capacità di flutter di distribuire su più piattaforme da un'unica base di codice, combinata con i robusti servizi backend di back4app, rende questo un potente stack per sviluppare e scalare giochi che tu stia creando un semplice gioco casual o un'esperienza interattiva più complessa, flutter e back4app forniscono gli strumenti per costruire, distribuire e gestire il tuo gioco in modo efficiente per ulteriori informazioni, dai un'occhiata alla documentazione di flutter https //flutter dev/docs e alla documentazione di back4app https //www back4app com/docs buon coding!