Uno sguardo ad Input 6

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!