More
Come costruire un gioco Endless Runner avanzato utilizzando Flutter, il Casual Games Toolkit e Back4app
50 min
introduzione i giochi casual sono popolari per la loro semplicità e il gameplay coinvolgente, spesso catturando un vasto pubblico con meccaniche facili da apprendere in questo tutorial avanzato, svilupperemo un gioco di corsa infinita completamente funzionale utilizzando il casual games toolkit di flutter integreremo back4app per gestire il backend del gioco, memorizzando i dati degli utenti come punteggi elevati, profili dei giocatori e traguardi approfondiremo anche argomenti avanzati come la gestione dello stato, l'ottimizzazione delle prestazioni e le strategie di distribuzione alla fine di questo tutorial, avrai un gioco di corsa infinita rifinito pronto per la distribuzione su android e ios, completo di persistenza dei dati e funzionalità avanzate requisiti prima di iniziare, assicurati di avere quanto segue ambiente di sviluppo flutter installato e configurato segui la guida ufficiale all'installazione di flutter https //flutter dev/docs/get started/install se non l'hai già configurato conoscenza intermedia di flutter familiarità con i widget di flutter, la gestione dello stato e la programmazione asincrona account back4app registrati per un account gratuito su back4app https //www back4app com comprensione di back4app conoscenza di base nella creazione di progetti e gestione dei dati fai riferimento alla guida per iniziare di back4app https //www back4app com/docs/get started/welcome account github per clonare repository e gestire il controllo delle versioni esperienza con librerie di gestione dello stato come provider o bloc familiarità con test e distribuzione comprensione di base della scrittura di test e della distribuzione delle app flutter passo 1 – configurazione del backend di back4app 1 1 crea un nuovo progetto su back4app accedi al tuo account back4app clicca "crea una nuova app" e chiamala "gioco di corsa infinita avanzato" 1 2 configura le classi per i dati utente creeremo classi per utente , punteggio , e risultato classe utente campi nomeutente (stringa) password (stringa) email (stringa) immagineprofilo (file) classe punteggio campi utente (puntatore a utente) punteggioalto (numero) livello (numero) classe risultato campi utente (puntatore all'utente) nomerealizzazione (stringa) datarealizzazione (data) 1 3 configurare sicurezza e permessi imposta permessi a livello di classe per proteggere i dati degli utenti assicurati che solo gli utenti autenticati possano leggere e scrivere i propri dati 1 4 aggiungi dati di esempio popola le classi con dati di esempio per testare l'integrazione in seguito passo 2 – clonare e configurare il modello endless runner 2 1 clona il repository del toolkit per giochi casual flutter git clone https //github com/flutter/casual games git 2 2 naviga nel modello endless runner cd casual games/templates/endless runner 2 3 apri il progetto nel tuo ide usa visual studio code, android studio o qualsiasi ide preferito assicurati che i plugin flutter e dart siano installati 2 4 aggiorna le dipendenze apri pubspec yaml e aggiorna le dipendenze all'ultima versione esegui flutter pub get passo 3 – migliorare il gioco con funzionalità avanzate 3 1 implementare l'autenticazione utente permetteremo ai giocatori di registrarsi, accedere e gestire i propri profili 3 1 1 aggiungere il sdk di parse server in pubspec yaml dependencies parse server sdk flutter ^3 1 0 esegui flutter pub get 3 1 2 configurare il servizio di autenticazione crea lib/services/auth service dart import 'package\ parse server sdk flutter/parse server sdk flutter dart'; class authservice { future\<parseuser> signup(string username, string password, string email) async { var user = parseuser(username, password, email); var response = await user signup(); if (response success) { return response result; } else { throw exception(response error! message); } } future\<parseuser> login(string username, string password) async { var user = parseuser(username, password, null); var response = await user login(); if (response success) { return response result; } else { throw exception(response error! message); } } future\<void> logout() async { var user = await parseuser currentuser() as parseuser; await user logout(); } } 3 1 3 creare schermate di autenticazione schermata di registrazione lib/screens/signup screen dart schermata di accesso lib/screens/login screen dart utilizza i widget di flutter per creare moduli per l'input dell'utente 3 2 migliorare ui/ux implementa animazioni personalizzate utilizzando animationcontroller aggiungi un tema personalizzato in lib/theme dart 3 3 aggiungi traguardi e classifiche crea componenti ui per visualizzare i traguardi implementa una schermata di classifiche per visualizzare i punteggi più alti a livello globale passo 4 – integrazione di back4app con il gioco 4 1 inizializza parse in main dart void main() async { widgetsflutterbinding ensureinitialized(); const keyapplicationid = 'your app id'; const keyclientkey = 'your client key'; const keyparseserverurl = 'https //parseapi back4app com'; await parse() initialize( keyapplicationid, keyparseserverurl, clientkey keyclientkey, autosendsessionid true, ); runapp(myapp()); } 4 2 memorizza in sicurezza le credenziali usa flutter dotenv per gestire le variabili d'ambiente in pubspec yaml dependencies flutter dotenv ^5 0 2 crea un env file (aggiungilo a gitignore ) app id=your app id client key=your client key aggiorna main dart import 'package\ flutter dotenv/flutter dotenv dart'; void main() async { widgetsflutterbinding ensureinitialized(); await dotenv load(filename " env"); final keyapplicationid = dotenv env\['app id']!; final keyclientkey = dotenv env\['client key']!; const keyparseserverurl = 'https //parseapi back4app com'; await parse() initialize( keyapplicationid, keyparseserverurl, clientkey keyclientkey, autosendsessionid true, ); runapp(myapp()); } passo 5 – implementazione della gestione dello stato 5 1 scegli una soluzione di gestione dello stato utilizzeremo provider per semplicità 5 1 1 aggiungi dipendenza provider in pubspec yaml dependencies provider ^6 0 0 esegui flutter pub get 5 2 crea gestione dello stato del gioco 5 2 1 crea classe game state lib/models/game state dart import 'package\ flutter/foundation dart'; class gamestate extends changenotifier { int score = 0; int get score => score; void incrementscore() { score++; notifylisteners(); } void resetscore() { score = 0; notifylisteners(); } } 5 2 2 fornisci game state in main dart import 'package\ provider/provider dart'; import 'models/game state dart'; void main() async { // parse initialization runapp( multiprovider( providers \[ changenotifierprovider(create ( ) => gamestate()), ], child myapp(), ), ); } 5 2 3 consuma game state nei widget nella schermata di gioco int score = context watch\<gamestate>() score; passo 6 – ottimizzazione delle prestazioni 6 1 prestazioni del gioco gestione degli sprite utilizza fogli di sprite per ridurre l'uso della memoria ottimizzazione del frame rate limita il frame rate per bilanciare prestazioni e durata della batteria 6 2 ottimizzazione della rete caching dei dati implementa meccanismi di caching per ridurre le chiamate di rete richieste in batch utilizza operazioni in batch quando comunichi con il backend 6 3 profilazione del codice utilizza devtools di flutter per profilare l'app identifica e risolvi i colli di bottiglia delle prestazioni passo 7 – gestione degli errori robusta e test 7 1 gestione degli errori blocchi try catch avvolgi le chiamate asincrone per gestire le eccezioni try { var result = await someasyncfunction(); } catch (e) { // handle error } feedback degli utenti mostra messaggi user friendly quando si verificano errori 7 2 registrazione usa il logging pacchetto per registrare errori ed eventi importanti in pubspec yaml dependencies logging ^1 0 2 7 3 test 7 3 1 test unitari scrivi test per i tuoi modelli e servizi esempio di test in test/game state test dart import 'package\ flutter test/flutter test dart'; import 'package\ your app/models/game state dart'; void main() { test('score increments correctly', () { final gamestate = gamestate(); gamestate incrementscore(); expect(gamestate score, 1); }); } 7 3 2 test di integrazione testa l'interfaccia utente e le interazioni dell'app usa il framework di test di integrazione di flutter passo 8 – distribuzione del gioco 8 1 preparazione per la distribuzione icone dell'app e schermate di avvio personalizza per il branding id pacchetto dell'app imposta identificatori unici per android e ios 8 2 costruire versioni di rilascio android aggiorna android/app/build gradle con le tue configurazioni di firma esegui flutter build apk release ios apri ios/runner xcworkspace in xcode configura la firma e le capacità esegui flutter build ios release 8 3 invio all'app store google play store segui la guida ufficiale https //developer android com/distribute/console apple app store segui la guida ufficiale https //developer apple com/app store/submit/ conclusione in questo tutorial avanzato, abbiamo costruito un gioco endless runner ricco di funzionalità utilizzando il casual games toolkit di flutter e integrato back4app per i servizi backend abbiamo trattato autenticazione utente consentire ai giocatori di registrarsi, accedere e gestire i profili gestione dello stato utilizzare provider per una gestione dello stato efficiente ottimizzazione delle prestazioni migliorare le prestazioni del gioco e della rete gestione degli errori e test implementare una gestione degli errori robusta e scrivere test distribuzione preparare e inviare l'app agli store questo approccio completo ti fornisce le competenze per sviluppare applicazioni flutter di livello professionale con integrazioni backend affidabili puoi ulteriormente espandere il gioco aggiungendo più funzionalità, come condivisione sociale consentire ai giocatori di condividere i risultati sui social media acquisti in app monetizzare il gioco con articoli o aggiornamenti acquistabili supporto multiplayer implementare funzionalità multiplayer in tempo reale o a turni per ulteriori informazioni su flutter e integrazione con back4app, fare riferimento a documentazione flutter https //flutter dev/docs guida flutter di back4app https //www back4app com/docs/flutter/overview guide del server parse https //docs parseplatform org buon coding e sviluppo di giochi!