Uno sguardo ad Input 6
Premessa
JuJu Adams è una delle persone più popolari che sviluppa su GameMaker: ha collaborato alla creazione di Hyper Light Drifter, Disc Room e ZERO Sievert, giusto per citarne alcuni.
Ha sviluppato anche parecchi plugin per GameMaker (qui la sua pagina Github), e quello che andremo a trattare oggi è uno di questi, Input.
Input viene definito come una libreria di input robusta e completa, che unifica sotto un unico sistema il controllo della tastiera, del mouse e del gamepad.
Vediamo come funziona e perchè è vantaggioso usarla
Installazione
Cominciare ad utilizzare la libreria è molto semplice: possiamo scaricarla dal Marketplace, scaricarla da Github oppure da itch.io. Una volta scaricato il file basta trascinarlo all'interno del nostro progetto ed il gioco è fatto.
Come funziona
Il concetto principale su cui si base Input sono i verbs: come suggerisce il nome, queste sono le azioni che vogliamo che il giocatore compia, e queste azioni saranno mappate su specifici input.
Utilizzando i verbs astraiamo quindi l'input dell'utente in modo tale da poter cambiare la sorgente di input mentre il gioco è in esecuzione senza dover modificare nient'altro. L'utilizzo dei verbs permette anche un semplice remapping dei tasti, nel caso fosse necessario.
Cerchiamo il file __input_config_verbs() e cancelliamo il suo contenuto: qui andremo a definire i nostri personali verbs, e con una situazione pulita probabilmente tutto sarà più semplice e chiaro.
Proviamo a definire i verbs per un gioco in cui ci muoveremo con i tasti destra e sinistra e salteremo con il tasto Z.
Ora, nell'oggetto che vogliamo utilizzi questi input, anzichè usare i metodi di GameMaker per il check degli input, usiamo le funzioni che ci mette a disposizione Input:
- input_check() prende il posto di keyboard_check()
- input_check_pressed() prende quello di keyboard_check_pressed()
- [...]
Come avrete immaginato, il codice all'interno dello step dell'oggetto sarà il seguente
A questo punto ti starai chiedendo perchè usare Input, se già GameMaker mette a disposizione funzioni interne per fare le stesse così.
Aggiungiamo il supporto al gamepad
Torniamo nel file __input_config_verbs() e completiamo il codice scritto precedentemente per aggiungere il supporto al gamepad:
Così facendo, avendo mappato nel codice del nostro oggetto i verbs al posto delle funzioni per il movimento, il codice risulterà molto più veloce da scrivere e più facilmente mantenibile.
Pensiamo ad esempio di voler sostituire il tasto Z con il tasto Spazio in tutti gli oggetti in cui lo usiamo: qui basta cambiare questo file di configurazione invece di andare a sostituire tutte le accorrenze. Comodo, no?
Tutto qui?
Ovviamente no. Oltre a supportare altre periferiche di input (come ad esempio il touch e il mouse) e ad avere integrato il supporto per molti gamepad (così da non avere problemi se i giocatori useranno il controller di Playstation ma noi abbiamo solo quello di Xbox per poterlo testare), la libreria supporta:
- doppia pressione di un tasto, pressione prolungata, ecc..
- input alternativi (usare WASD o frecce direzionali alternativamente, ad esempio)
- rebinding dei comandi
- comandi per il multiplayer
E tanto altro. Vi consiglio di scaricarvi il progetto da Github pieno di esempi per poter dare un'occhiata a tutte le potenzialità che la libreria vi offre.
Come al solito, per qualsiasi dubbio / domanda trovate un intero server Discord disposto ad aiutarvi.
Alla prossima!