Programmare per gioco: Gamemaker

Comincio oggi la mia carrellata fra i linguaggi a interfaccia grafica per la programmazione facilitata. Il primo, come ho già detto nel post precedente, è Game Maker (per brevità G.M.). Non solo perché è stato probabilmente il primo in senso cronologico, ma anche perché è, a mio parere, quello più notevole per la sua versatilità.

Poco prima dell’anno duemila il prof. Mark Overmars dell’università di Utrecht mise in rete un semplice ma efficace ambiente di sviluppo chiamato Game Maker. Il suo obiettivo era, come dice il nome, permettere la realizzazione di videogiochi (bidimensionali), anche a chi non conosceva alcun linguaggio informatico.

Il programma ha conosciuto una meritata diffusione, ma non ha sfondato nel campo degli educational. Per quanto ne so, in Italia sono stato l’unico ad adottarlo – dal 2002 al 2013 – per un laboratorio di coding che ha visto transitare forse un duecento alunni.
Sicuramente non erano maturi i tempi, ma è probabile che anche il target non fosse ben tarato: non era ben chiaro se G.M. fosse destinato agli studenti universitari dei corsi del prof Overmars, oppure ai programmatori dilettanti. Pochi ebbero l’idea di destinarlo agli adolescenti.

Circa cinque anni fa Overmars ha ceduto il programma e, suppongo, tutti i diritti connessi ad una software house di Londra, la Yoyo Games. Questo ha coinciso con una serie di rapidi cambiamenti, dovuti ad una gestione più professionale. Le nuove versioni – quasi sempre a pagamento – si sono succedute ad un ritmo sempre più rapido e le possibilità di Game Maker sono aumentate.
A parte le modifiche interne, però, l’interfaccia è rimasto sempre quella, semplice, funzionale ed intuitiva, disegnata da Overmars.

Il funzionamento di Game Maker, visto dalla parte dell’utente, è veramente semplice: un gioco è composto da una serie di oggetti.
A ciascun oggetto può essere assegnato uno sprite (una immagine, statica o in movimento) oppure no. In tal caso l’oggetto resta invisibile, ma continua ad agire (esempio classico: un oggetto regista che regola la gestione del gioco).

La finestra di gestione di uno sprite
La finestra di gestione di uno sprite

Gli sprite possono essere caricati da un repertorio di immagini o essere disegnati ex novo con un disegnatore interno all’ambiente. Il formato degli sprite è lo standard .png (all’inizio il .gif), quindi è possibile realizzare uno sprite anche con un qualsiasi programma di fotoritocco.

A ciascun oggetto possono accadere degli eventi: inizio, fine, collisione con altri oggetti, pressione di tasti o di bottoni del mouse, cambiamento di posizione, eccetera.

Ad ogni evento, l’oggetto può reagire con delle azioni: crea altri oggetti (per esempio, un’arma che spara un proiettile), si sposta sullo schermo, cambia il valore di una variabile, cambia colore, grandezza o verso dello sprite, si distrugge, eccetera.
Poiché l’elenco degli eventi e quello delle azioni è decisamente molto lungo, è suddiviso in cartelle (quelle delle azioni sono visibili nell’illustrazione lungo il bordo destro: move, main1 e 2, control ecc.).

La finestra di gestione di un oggetto: a sinistra gli eventi, a destra le azioni di un evento
La finestra di gestione di un oggetto: a sinistra gli eventi, a destra le azioni di un evento

Questa interfaccia grafica serve in realtà a inserire, in maniera pressoché trasparente, i comandi di un linguaggio, il GML (Game Maker Language). E’ però possibile inserire tramite l’azione code
direttamente le righe di codice: si comincia usando solamente l’interfaccia grafica, ma, quando serve, si possono inserire via via frammenti di codice, cosa che permette una padronanza sempre maggiore del programma. Per chi vuole imparare a programmare, questa opzione è di grande aiuto, anche se, devo notare, nel mio laboratorio destinato a ragazzi dai dieci ai quindici anni, ho potuto sfruttarla a fondo in pochi casi.
I vantaggi di G.M. sono in realtà diversi: innanzitutto permette di realizzare dei veri videogiochi (sia pure in stile anni ’90), quindi permette ai giovani che lo usano di acquisire uno status piuttosto ambito. Questo perché consente di compilare i giochi come file .exe, eseguibili su ogni computer personal.
In secondo luogo permette una completa espressione individuale in quanto non è così complicato da richiedere il lavoro di una équipe; è però abbastanza semplice da permettere ai ragazzi di comunicare e scambiarsi trucchi, routines, anche pezzi di gioco.
In terzo luogo permette alcuni effetti speciali non facili da ottenere, anche con prodotti professionali: tanto per fare un esempio, consente di dividere lo schermo in due parti indipendenti in modo che due giocatori possano giocare in contemporanea, in competizione o – come più spesso mi è capitato di osservare nei giochi prodotti dai miei ragazzi – in collaborazione.

Se chi mi legge volesse altre notizie su questo interessante prodotto – e sulle possibilità di usarlo gratis legalmente – può scrivermi al mio indirizzo papillolo@alice.it

Scritto da: Paolo Freschi