Quando apprendi le basi di Unreal Engine, devi conoscere come funziona il framework di gameplay Unreal. Nel presente documento affronteremo la configurazione della modalità di gioco e delle classi di stato di gioco per Parrot.
Modalità di gioco
La modalità di gioco è responsabile della definizione delle regole fondamentali di gioco, come il numero di giocatori o il modo in cui i giocatori partecipano al gioco. Fornisce inoltre un framework per la configurazione di classi di giochi utili, ad esempio lo stato di gioco, il controller del giocatore, gli HUD e la classe predefinita della pedina.
Per configurare la modalità di gioco di Parrot, segui questi passaggi:
In Esplora contenuti, fai clic su Contenuto > Blueprint > Gioco.
Fai clic con il pulsante destro del mouse nel browser e fai clic su Classe Blueprint.
Imposta la classe genitore su AGameModeBase.
Nomina la classe "BP_ParrotGameMode".
Fai doppio clic sulla blueprint appena creata per vedere le classi principali che definisce. Per Parrot alcune di queste classi devono essere modificate:
La Classe stato di gioco deve essere impostata su BP_ParrotGameState
La Classe controller del giocatore deve essere impostata su BP_ParrotPlayerController
La Classe HUD deve essere impostata su BP_ParrotHUD
La Classe pedina predefinita deve essere impostata su BP_ParrotPlayerCharacter
Vai su Modifica > Impostazioni progetto > Mappe e modalità e imposta GameMode predefinita su BP_ParrotGameMode.
Ora che la modalità di gioco è configurata, puoi configurare lo stato di gioco.
Lo stato di gioco
Lo stato di gioco si occupa di ciò che succede in tempo reale nel gioco. Gestisce informazioni che i clienti devono conoscere, ma non è legato ad alcun giocatore specifico. Ad esempio, potresti archiviare qui i punteggi del team.
Per creare uno stato di gioco per Parrot, segui questi passaggi:
Nell'editor principale, seleziona Strumenti > Nuova classe C++...
Imposta la classe genitore su AGameStateBase.
Nomina la classe "AParrotGameState".
In Esplora contenuti:, fai clic su + Aggiungi > Classe Blueprint.
Imposta la classe genitore su AParrotGameState.
Nomina la classe "BP_ParrotGameState".
Nella blueprint della modalità di gioco, assegna BP_ParrotGameState al campo stato di gioco.
Modalità di gioco e Revisione del concetto stato di gioco
Per maggiori informazioni sulla modalità di gioco e sullo stato di gioco, vedi Modalità di gioco e Stato di gioco. Man mano che sono create nuove classi tramite lo sviluppo, ricorda di aggiornare la modalità di gioco e lo stato di gioco.
Anche la modalità di gioco può essere impostata per mappa. Il Menu principale in Parrot utilizza una modalità di gioco diversa rispetto a quella usata dai livelli nel gioco.
Istanza di gioco
L'istanza di gioco è una singola istanza di classe persistente nel motore che gestisce una funzionalità specifica del progetto. Esiste per l'intera durata dell'applicazione. Contiene il client della viewport del gioco e il giocatore locale.
Seguendo lo stesso pattern della modalità e dello stato di gioco, creiamo una classe base C++, UParrotGameInstance, e una classe blueprint, BP_ParrotGameInstance. Puoi impostare la classe istanza di gioco per il tuo progetto in Modifica->Impostazioni di progetto->Mappe e modalità
Per creare un'istanza di gioco per Parrot, segui questi passaggi:
Nell'editor principale, seleziona Strumenti > Nuova classe C++...
Imposta la classe genitore su UGameInstance.
Nomina la classe "UParrotGameInstance".
In Esplora contenuti:, fai clic su + Aggiungi > Classe Blueprint.
Imposta la classe genitore su UParrotGameInstance.
Nomina la classe "BP_ParrotGameInstance".
Vai su Modifica > Impostazioni progetto > Mappe e modalità e imposta la Classe istanza di gioco su BP_ParrotGameInstance.
Esempio di streaming del livello
Su Parrot, mappe diverse sono specifiche per modalità di gioco diverse e l'istanza di gioco indica al gioco quale mappa deve essere caricata tramite i file UParrotMapDataAsset. Questi sono gli asset dati che contengono un puntatore di oggetto soft a un file della mappa. Tali asset sono organizzati sull'istanza di gioco e possono ripetersi all'avanzare del giocatore attraverso il gioco. Poiché si trova sull'istanza di gioco, puoi sempre trasmettere il livello successivo da qualsiasi punto. Il controller del giocatore attende di sentire le modifiche dello stato di gioco e poi le richiama nell'istanza di gioco come richiesto.
Lo screenshot seguente mostra una Blueprint che utilizza il nodo del Livello di streaming e il nodo dell'Asset di caricamento asincrono per caricare asincronicamente il riferimento all'oggetto soft in un ParrotMapDataAsset. Quindi il nodo Apri livello viene chiamato senza dover attendere un caricamento asincrono, dal momento che il livello è stato già caricato. Qui viene anche utilizzato il plugin CommonLoadingScreen. Il widget della schermata di caricamento sarà invocato durante il precaricamento della mappa successiva e sarà eliminato durante il postcaricamento.
Per ulteriori dettagli sulla schermata di caricamento e sul perché Parrot effettua qui un caricamento asincrono anziché uno sincrono, vedi la documentazione Interfaccia utente per Parrot.