Semplificare i test di gioco con le Configurations
Se hai mai tentato di sviluppare un progetto utilizzando GameMaker, avrai sicuramente notato che all'aumentare della sua complessità e della quantità di contenuti, diventa sempre più impegnativo e complicato testare ogni singola parte del gioco.
Tuttavia, esiste uno strumento che può venirci in aiuto in queste situazioni: le Configurations.
Secondo quanto riportato nel manuale, le configurazioni sono pensate per semplificarci la vita nel caso in cui dovessimo esportare diverse versioni del nostro stesso gioco (ad esempio, se vogliamo pubblicare la demo del gioco o versioni separate per Windows e Android), evitando di dover gestire progetti separati.
Tuttavia, noi faremo un uso alternativo di questo strumento.
Caso d'uso
Prendo come esempio il gioco che ho sviluppato per l'ultima competizione, Turning Point. Questo gioco consiste in un hub centrale liberamente esplorabile, in cui è possibile interagire con vari personaggi che ci sfideranno a vari minigiochi.
Durante lo sviluppo e il debug del gioco, è giunto il momento di lavorare sui suddetti minigiochi. Ma come fare per svilupparli e testarli in maniera intelligente?
- Metodo poco efficace: avviare il gioco, esplorare l'hub, interagire con il personaggio corrispondente e avviare il minigioco.
- Metodo efficace: creare una configurazione apposita che, se selezionata prima di avviare il gioco, consenta di accedere direttamente al minigioco desiderato senza passare per l'hub.
Le macro, un altro alleato per la nostra causa
Le macro (qui il link al manuale) sono dei valori costanti che vengono sostituiti così come sono dove vengono utilizzati.
Ad esempio, vengono definite così:
#macro BEAUTIFUL_COLOR c_green
e utilizzate così
draw_set_color(BEAUTIFUL_COLOR)
Passiamo al codice
La prima cosa da fare è creare una Configuration, che in questo momento sarà per noi solamente una stringa di testo.
Guardiamo a destra nel nostro IDE: nell'Asset Browser premiamo prima le tre linee orizzontali, e successivamente la voce Config Editor
Dal pannello che verrà aperto premiamo Create e inseriamo il nome scelto per la nostra configurazione: nel mio caso userò quella del minigioco a cui voglio poter accedere, cioè DeAntrumExElementis
Ora, pensiamo al nostro obiettivo: quando lancio il gioco con la seconda configurazione voglio che la room iniziale del mio progetto non sia il menu, bensì direttamente il livello con il mio minigioco.
Io sono solito creare un file di tipo Script in cui inserire tutte le macro del gioco. Aperto questo file, vado a dichiarare la macro ROOM_NEXT, dove salvo il valore che voglio nella situazione "normale"
#macro ROOM_NEXT rm01
A questo punto dichiaro invece il valore che voglio che abbia se utilizzo la mia configurazione personalizzata. La sintassi sarà:
#macro nome_configurazione:nome_macro valore_macro
Applicata al nostro caso
#macro DeAntrumExElementis:ROOM_NEXT rmPocketConsole
Una pubblicità, anni fa, diceva un iconico "Già fatto"? Ebbene sì, il nostro sviluppo è già terminato. Lascio qui uno screenshot del mio caso reale di utilizzo:
Ora, per lanciare il gioco con la configurazione "normale" oppure la nostra personalizzata ci basta andare in alto a destra di GameMaker e premere su Default. Quello che ci apparirà è questo
Come vedete c'è una colonna Config: da lì possiamo scegliere quale configurazione verrà utilizzata quando andremo a lanciare o a buildare il nostro gioco.
Usiamo la fantasia
Come immaginerete, quello appena mostrato è solo un esempio delle mille potenzialità che le Configurations possono darci:
- Vogliamo testare l'ultimo livello del nostro gioco, magari rendendo invincibile il nostro personaggio?
- Vogliamo che nella versione demo del nostro gioco venga mostrata una schermata diversa dal menu iniziale, e che l'unico livello giocabile sia il terzo?
- Vogliamo vedere le maschere di collisione mentre stiamo sviluppando?
Con le Configuration sarà un gioco da ragazzi realizzare questi scenari, senza dover sporcare il codice cambiando variabili e settaggi fini a sè stessi.
Il mini tutorial finisce qui! Se avete domande o dubbi non esitate a contattarmi sul canale Discord di GMI!
Ciao!