Progettazione e realizzazione di videogiochi con Game Maker Di Luciano Rosso Scheda pedagogica IN SINTESI: • Game Maker, un ambiente per la produzione di videogame di utilizzo immediato, consente, a ragazzi dai 10 anni in su, di progettare e realizzare in poco tempo videogiochi semplici ma dall’aspetto molto accattivante. PIÙ ANALITICAMENTE: • I videogame occupano ormai uno spazio molto rilevante nella fantasia dei bambini. Anche se si nutrono dubbi sul fatto che sia un bene, la questione non può essere ignorata da parte di chi si occupa professionalmente di sollecitare la creatività infantile. • Studi autorevoli sostengono che i videogiochi possono comunque sostenere lo sviluppo di competenze cognitive importanti, come interagire con interfacce e ambienti di simulazione, o entrare in contatto con comunità virtuali. • Proporsi di progettare e costruire un videogame può costituire un’occasione per collocarsi in un ruolo attivo nei confronti delle proposte dell’industria culturale mediatica; giocare per una volta a fare il produttore anziché il consumatore passivo; adottare un’ottica di integrazione culturale che affianchi al linguaggio verbale altri linguaggi e reciprocamente contribuisca magari ad avvicinare i ragazzini ad altre forme di produzione culturale. Scheda di regia La prospettiva più interessante è indubbiamente quella di coinvolgere i bambini in un’attività di progettazione condivisa e di costruzione cooperativa del gioco, dove assuma un ruolo centrale lo scambio e la contrattazione di idee, progetti e significati tra compagni (senza escludere l’insegnante…). Non è difficile, infatti, creare in una classe, preventivamente familiarizzata con Game Maker, diversi gruppi di lavoro con il compito di discutere le caratteristiche di un gioco e di coordinare le diverse fasi della sua realizzazione: progetto iniziale, prime implementazioni, test, modifiche successive. I diversi gruppi, al loro interno e tra di loro, possono scambiarsi i ruoli: da progettista a coautore, da semplice utilizzatore a valutatore. Non è difficile, grazie all’entusiasmo con cui Game Maker viene generalmente accolto dai ragazzi, arrivare ad animare una piccola “Community of Practice” di produttori di videogame. In genere si crea spontaneamente un intenso scambio di trucchi, prodotti e conoscenze: i gruppi potranno allora pubblicizzare i propri giochi in tutta la scuola, organizzare presentazioni pubbliche, mostre e tornei, far votare i compagni per “il miglior gioco dell’anno”. Scheda tecnico-operativa Game Maker è un ambiente di programmazione visuale per la progettazione e la realizzazione di videogame in Windows. Si possono creare giochi di piattaforma, puzzle games, giochi di simulazione ed altro. Dotato di un vastissimo assortimento di immagini, esempi, tutoriali e manuali, Game Maker mette in mano agli studenti un potente strumento per smontare, analizzare, ricreare, inventare ex novo giochi dall'apparenza quasi professionale. Il carattere visuale dell'ambiente consente di realizzare facilmente giochi accattivanti senza scrivere una sola riga di codice. Basta seguire i tutoriali o esplorare gli esempi. Per gli utenti più avanzati è disponibile tuttavia un completo linguaggio di programmazione interno all'ambiente. Game Maker è stato scritto da Mark Overmars dell’Università di Utrecht e può essere scaricato gratuitamente dal sito www.gamemaker.nl . I giochi creati con Game Maker possono essere distribuiti liberamente senza alcun tipo di limitazione. Dal medesimo sito è possibile acquistare una versione registrata del programma che mette a disposizione alcune funzioni più avanzate, assolutamente non indispensabili per le proposte di attività che seguono. L’ambiente contiene un manuale on line molto esauriente ma disponibile solo in inglese. Sul sito sono disponibili tuttavia diverse versioni del manuale in altre lingue, tra cui francese e spagnolo, ma non italiano. Una versione italiana provvisoria di Game Maker è tuttavia www.clubghost.it/clubghost/multimedia/dati/manualiguide/g/gmaker02.asp (la prima versione definitiva è annunciata per settembre 2004). scaricabile da: Sempre in inglese è possibile consultare 7 bei tutoriali, che introducono gradatamente e con dovizia di esempi alle tecniche di programmazione di giochi via via più sofisticati. Un’altra pagina del sito è dedicata a una vasta raccolta di giochi, molti dei quali editabili, cioè col codice leggibile: un’autentica miniera di spunti e suggerimenti per nuove sfide. Attorno a Game Maker è sorta una vasta comunità telematica di creatori di videogame che può essere esplorata a partire dal sito d’origine. Un intero settore di links è dedicato ad esperienze scolastiche (quasi esclusivamente di area anglosassone) di utilizzo di Game Maker sia nella scuola primaria sia in quella secondaria: vi si trovano corsi, guide per studenti, materiali di discussione tra insegnanti, articoli su come utilizzare la progettazione di giochi in chiave didattica. È a disposizione infine un forum di discussione per gli utenti: Official Game Maker Community (http://forums.gamemaker.nl/ ). Fase 1: installazione di Game Maker Il programma viene distribuito in un unico file autoinstallante (gmaker.exe): basta avviarlo e l’installazione procede in automatico, generalmente senza intoppi. Non ne esistono versioni per altri sistemi operativi che non siano Windows. Dopo l’installazione del programma principale bisogna assolutamente procedere a scaricare dal sito e ad installare, uno dopo l’altro, i 4 Resource Packs, che mettono a disposizione centinaia di disegni, animazioni, sfondi, musiche, effetti sonori. Altre risorse grafiche e sonore si possono trovare sui siti Web segnalati nella pagina del sito principale appositamente dedicata alle risorse. All’atto della prima installazione il programma chiede se si vuole attivare la modalità avanzata, che è naturalmente del tutto inutile quando si muovono i primi passi in questo ambiente. Limitarsi alla modalità normale, inoltre, permette di avere menù e toolbars più ridotte e semplici da gestire. Sarà possibile avviare la modalità avanzata in qualsiasi momento successivo, quando si giunga a sentirne l’esigenza. All’avvio il programma chiede il codice di registrazione: chi intende utilizzare la versione completamente gratuita deve semplicemente ignorare la richiesta. Fase 2: il primo gioco: Break out Il primo gioco che ci si può proporre di realizzare si ispira direttamente a un classico della storia dei videogames, Break out, erede diretto del primo, ormai mitico videogioco: Pong. Break out è il gioco famoso in cui bisogna distruggere uno o più muri, un mattoncino colorato alla volta, facendo rimbalzare una pallina con una rudimentale racchetta. La prima cosa da fare è creare una stanza (room). I giochi creati con Game Maker, infatti, possono articolarsi in più livelli, ciascuno dei quali si svolge in una stanza. Le stanze possono essere in numero qualsiasi, ma il nostro primo gioco ne conterrà una sola. Per creare la nostra prima e unica stanza si può ricorrere a una delle seguenti tre procedure: • selezionare la voce di menù Add Room • cliccare sull’icona apposita della toolbar Add a Room • cliccare col tasto destro del mouse sulla cartella Rooms nell’albero delle cartelle a sinistra della finestra principale Qualunque sia la procedura seguita la situazione che si viene a presentare sullo schermo è quella di una stanza vuota e grigia come la seguente: La finestra della stanza si può espandere a schermo intero ed anche allargare in valori assoluti (espressi in pixels). Le dimensioni della griglia che compare sovrapposta alla stanza stessa (SnapX e SnapY) controllano la disposizione e i movimenti degli oggetti (cioè dei personaggi e degli elementi fissi del gioco). Per poter utilizzare icone più grandi e agevolarne gli spostamenti si potrebbe allargare la griglia standard da 16 x 16 a, per esempio, 32 x 32. È sufficiente digitare i nuovi valori al posto di quelli presenti, ma per adesso lasciamo pure le cose come stanno. Per chiudere e salvare le proprietà della stanza si usa il consueto tasto di conferma (icona di spunta verde in alto a sinistra della sottofinestra della stanza). Si noti che la stanza viene automaticamente denominata room0. A questo punto è opportuno salvare anche il gioco nel suo complesso, ricorrendo alla solita icona del dischetto presente in tutte le applicazioni Windows. Il file creato presenta l’estensione *.gmd (game maker data) e non è eseguibile al di fuori di Game Maker. Solo alla fine della costruzione del gioco si potrà salvarne una versione indipendente in un file eseguibile. Per porre rimedio al grigiore della stanza, scegliamo adesso un bello sfondo (background) colorato. Si può ricorrere, in perfetta analogia con il caso precedente della stanza, a tre diverse procedure. Indico soltanto la più immediata, l’icona apposita della toolbar: Add a Background Avendo installato le risorse, si dispone di un vasto repertorio di sfondi tra cui scegliere. Si clicca su Load Background e si cerca nella cartella dei Backgrounds (se non si sono modificate le impostazioni originali, la si trova nella cartella di installazione del programma: C:\Programmi\Game_Maker5). Non è proibito caricarne diversi per provare quello che fa il migliore effetto nella stanza. Possiamo anche cambiarne il nome. Si conferma ogni volta con OK. Per mettere lo sfondo nella stanza bisogna riaprirla (si clicca 2 volte su room0) e scegliere la linguetta background; di qui si seleziona lo sfondo col mouse cliccando sull’icona accanto alla casella con la scritta <no image> (sotto Foreground image): La figura scelta come sfondo si dispone a tessere impilate verticalmente e replicate orizzontalmente: se ne può variare la disposizione e la spaziatura verticale e orizzontale (Tile). Se si preferisce un’unica immagine ingrandita si clicca su Stretch. A questo punto si esce dalla stanza col tasto di conferma e si risalva il tutto. Bisogna ora costruire gli oggetti da inserire nella stanza. Ce ne servono 4: i mattoni per costruire i muri che delimitano il campo di gioco; i mattoncini da distruggere; la pallina; la racchetta. Gli oggetti di Game Maker si possono suddividere in tre categorie fondamentali: quelli che fanno da sfondo, rimanendo immobili come elementi di arredo delle stanze; quelli che hanno un comportamento autonomo, indipendente dalle azioni dell’utente; quelli infine il cui comportamento interagisce con le azioni del giocatore. Per semplificare li chiameremo rispettivamente: • oggetti fissi • oggetti autonomi • oggetti interattivi La creazione di un oggetto, a sua volta, consiste in tre passi fondamentali: • individuazione dell’icona che lo rappresenta visivamente (Sprite) • collocazione nella stanza (definitiva se fisso, iniziale altrimenti) • programmazione del comportamento (se non è fisso) Cominciamo con i mattoni di recinzione, che sono naturalmente degli oggetti fissi. Basterà allora sceglierne lo sprite e collocarli nella stanza (gli oggetti fissi non hanno comportamento; il terzo passo si salta). I diversi mattoni non saranno altro che repliche identiche (Instances) di un unico oggetto (Object). Game Maker offre, anche nel caso degli sprites, un vasto repertorio di risorse. Per caricare uno sprite si hanno a disposizione i soliti tre metodi. La toolbar è il più rapido: Add a Sprite Scegliamo un’icona di 32 x 32 pixels che si collochi esattamente su quattro celle della griglia della nostra stanza. La si trova in C:\Programmi\Game_Maker5\Sprites\various e si chiama Square: Il primo passo di creazione dell’oggetto non è finito. Trovata l’icona l’oggetto va creato effettivamente con il pulsante Add an Object: Add an Object Nella finestra delle proprietà del nuovo oggetto si seleziona lo sprite da associare all’oggetto stesso. Il primo passo ora è veramente compiuto: Si notino ancora tre cose. È meglio dare all’oggetto un nome significativo come “muro”. Bisogna cliccare sulla proprietà Solid, per motivi che chiariremo in seguito (non vogliamo certo che la pallina possa attraversare i muri del recinto!). Il pulsante New, infine, consente di caricare un nuovo sprite. Volendo, allora, è possibile invertire le due azioni che insieme costituiscono il primo passo di creazione di un oggetto (scelta dello sprite e aggiunta effettiva dell’oggetto), cliccando subito su Add an Object e scegliendo poi lo sprite col pulsante New. Il secondo passo consiste nel collocare le diverse istanze dell’oggetto nella stanza. Si riapre la stanza e si sceglie l’oggetto da collocare: Col tasto sinistro del mouse si posa l’istanza, col destro la si cancella. Ecco il risultato: Il terzo passo, trattandosi di un oggetto fisso, si salta. Anche i mattoncini da distruggere sono un oggetto fisso (e solido). Per semplicità useremo un solo tipo di mattoncino e lo disporremo su tre file. Procediamo alla sua creazione allo stesso modo (nella cartella Sprites/breakout si trovano numerosi sprites che fanno all’uopo) e collochiamolo nella stanza: Per il terzo oggetto, la pallina, la storia è molto diversa. Scelto lo sprite nella stessa cartella dei mattoncini, non mi posso limitare a collocarla nella stanza nella sua posizione iniziale. La pallina è un oggetto dotato di “comportamento autonomo”, nel senso che si deve muovere indipendentemente dalle azioni del giocatore. Il suo comportamento, dunque, va programmato: per gli oggetti autonomi il terzo passo della citata procedura di costruzione degli oggetti non può essere saltato. La nostra pallina dovrà esibire i seguenti comportamenti: • partire in una direzione casuale verso il basso appena il gioco ha inizio • rimbalzare sul muro • rimbalzare sulla racchetta • rimbalzare sui mattoncini distruggendoli In Game Maker il comportamento degli oggetti viene programmato in modo completamente visuale, trascinando nella finestra delle proprietà dell’oggetto delle icone che rappresentano: • gli eventi intercettati dall’oggetto • le azioni con cui l’oggetto risponde all’evento intercettato Se l’oggetto è autonomo, gli eventi saranno generati dal sistema. Se è interattivo saranno provocati dalle azioni dell’utente: tipicamente azioni compiute con la tastiera o con il mouse. Apro l’oggetto “pallina” con doppio clic (attenzione: dev’essere solido come tutti gli altri oggetti del nostro gioco): Il primo comportamento della pallina che dobbiamo programmare è il suo movimento verso il basso non appena comincia il gioco. Quando si attiva una stanza (cioè un livello del gioco; nel nostro esempio elementare abbiamo una sola stanza / livello), il sistema genera automaticamente, per ogni oggetto presente nella stanza, l’evento Create. Bisogna dunque cliccare sul pulsante Add Event e scegliere l’evento Create: Scelto l’evento, devo associargli le azioni corrispondenti. Le azioni sono rappresentate da icone raggruppate per categoria sulla sinistra della finestra delle proprietà dell’oggetto. Per far muovere un oggetto baste scegliere la prima icona in alto a sinistra (frecce rosse a raggiera) e trascinarla nell’area delle azioni. Quando si rilascia il pulsante del mouse compare la seguente finestra di dialogo: A questo punto si clicca sulle frecce rivolte verso destra e sinistra in basso (si salta quella diritta in basso perché genera un movimento troppo facile da intercettare per il giocatore): ciò significa che il computer farà partire la pallina in una delle due direzioni scelta a caso. Si indica quindi la velocità del moto: 4 renderà il gioco lento e facile; aumentando la velocità si otterranno livelli più difficili. Bisogna adesso programmare l’urto della pallina con il muro, la racchetta, i mattoncini. Quando gli sprites di due oggetti solidi (ecco il motivo per cui bisogna ricordarsi di spuntare questa caratteristica nella finestra di proprietà degli oggetti) si sovrappongono, il sistema genera un evento Collision. Quando la pallina collide col muro, deve rimbalzare: si selezione quindi l’evento Collision nella finestra delle proprietà della pallina, si sceglie il muro come oggetto contro cui avviene la collisione e infine come azione corrispondente si trascina l’icona di Bounce against solid objects (= rimbalza contro oggetti solidi), l’ultima in basso della categoria move1, sottocategoria React (nella finestra di dialogo di questa azione si faccia attenzione a selezionare “precisely”, per far sì che la pallina reagisca agli urti con più sensibilità per le piccole variazioni di traiettoria ed evitare che si chiuda in percorsi ripetitivi e prevedibili). Lo stesso deve avvenire quando la palla colpisce la racchetta. Siccome non è possibile programmare la collisione senza disporre di entrambi gli oggetti coinvolti, bisogna sospendere la programmazione dell’oggetto pallina (confermando con OK) e creare l’oggetto racchetta. Lo sprite lo si trova nella cartellina breakout più volte utilizzata. Si torna poi alla finestra delle proprietà dell’oggetto pallina, cliccandoci sopra due volte: Infine bisogna programmare lo scontro tra pallina e mattoncini. Non c’è alcuna differenza rispetto al muro e alla racchetta, se non che il mattoncino deve essere distrutto, magari facendo un bel botto. Utilizzando il pulsante Add a sound, il botto si può trovare nella cartella Sounds delle risorse, (explosion può fare al caso nostro). A questo punto, in corrispondenza all’evento Collision tra pallina e mattoncino, si trascinano 3 azioni; nell’ordine: • il rimbalzo (Bounce against solid objects) • la distruzione del mattoncino (Destroy the instance) • la riproduzione del suono (Play sound) Con l’azione Destroy bisogna far attenzione a selezionare, nella corrispondente finestra di dialogo, la seconda opzione (Applies to Other), perché venga distrutto il mattoncino. La prima opzione (Applies to Self), infatti, distruggerebbe la pallina, cioè l’oggetto di cui si stanno definendo le proprietà. La terza opzione consente invece di distruggere un altro oggetto, non coinvolto nella collisione, o, se si indica il mattoncino stesso, di distruggere non la sola istanza colpita ma tutte le istanze dell’oggetto contemporaneamente (il che porrebbe termine al gioco al primo colpo!). L’ultimo oggetto da programmare (l’abbiamo già dovuto creare per definire la sua collisione con la pallina) è la racchetta. Si tratta questa volta di un oggetto interattivo, che deve rispondere cioè ad eventi generati non automaticamente dal sistema, ma da manovre dell’utente con la tastiera o con il mouse. La nostra racchetta deve fare quanto segue: • muoversi verso destra quando il giocatore preme la freccia a destra • muoversi verso sinistra quando il giocatore preme la freccia a sinistra • star ferma quando il giocatore non preme alcun tasto Indico di seguito il dettaglio delle operazioni da compiere per lo spostamento a destra; quello a sinistra si programma in perfetta analogia. Apro l’oggetto “racchetta” con doppio clic. Clicco sul pulsante Add Event e scelgo l’evento Keyboard. Dall’elenco di tasti che si apre scelgo Right. Scelto l’evento, gli associo l’azione Start moving in a direction, dal primo gruppo di azioni (icona delle frecce rosse a raggiera). Quando si rilascia il pulsante del mouse compare la seguente finestra di dialogo: A questo punto si clicca sulla freccia a destra e si indica la velocità (8 può andar bene). Fatta la stessa cosa per la freccia a sinistra (Left), bisogna fermare la racchetta quando l’utente non preme alcun tasto o quando sbatte contro il muro di lato. In entrambi i casi l’azione sarà lo “star ferma” della racchetta. Nella finestra di dialogo precedente si clicca sul pulsante centrale (nessuna direzione) e si lascia 0 come velocità. Gli eventi cui questa “azione” dello star ferma si deve associare sono Keyboard – No key per indicare che l’utente non preme alcun tasto; e un comune evento Collision per arrestare la racchetta quando sbatte nel muro a sinistra o a destra. Ecco il risultato finale: Ora si può salvare il gioco e procedere a un primo test. Basta cliccare sulla freccia verde della toolbar (Run Game) a destra dell’icona del dischetto. Run Game Il gioco, sia pure ancora molto semplice e spoglio, dovrebbe funzionare. Ma che cosa succede se non si è abbastanza bravi e colpire la palla e questa esce dalla parte inferiore dello schermo? La soluzione più ovvia è far ricominciare il gioco da capo. L’evento da usare è Other/Outside room. L’azione corrispondente Restart the current room nel gruppo Main1, sottogruppo Rooms. Accontentiamoci per ora di questo videogame “ridotto all’osso”, limitandoci a programmare un semplice finale: quando tutti i mattoncini sono stati distrutti, compare un messaggio di felicitazioni e il gioco finisce. Per controllare la situazione dei mattoncini, creiamo un oggetto “nascosto” (basta togliere la spunta a “visibile” nella finestra delle proprietà dell’oggetto) che chiameremo “controllore”, cui attribuiremo l’icona di un computer (o qualsiasi altra, tanto non si vede!) e che collocheremo in un angolino qualsiasi della stanza; lo si vede infatti solo nell’editor, non in fase di gioco. L’evento da utilizzare è Step, che viene generato ad ogni ciclo di sistema e consente di disporre di un controllo continuo sulla situazione del gioco. Le azioni da associare sono più complesse del solito, perché contengono una struttura If … Then. La condizione If viene specificata, in questo caso, da un’apposita azione compresa nella categoria Control (If the number of instances is a value = se il numero delle istanze di un oggetto è uguale a…). Nella finestra di dialogo si lascia equal to 0 (che è l’opzione di default). Le azioni che il sistema deve eseguire quando si verifica la condizione, cioè quando il numero dei mattoncini è uguale a zero, si mettono all’interno di due “pinze” che segnano l’inizio (Start of a block) e la fine (End of a block) del blocco di istruzioni da attivare, e che si trovano nella stessa categoria Control. Come conclusione del gioco mettiamo semplicemente un messaggio come “Hai vinto” (Display a message, categoria di azioni main2) e l’azione End the game (della stessa categoria). Fase 3: alcuni suggerimenti per proseguire Chi è arrivato a questo punto, può benissimo continuare ad esplorare l’ambiente di Game Maker da solo. Qui di seguito diamo qualche suggerimento. Si ricordi che sul sito di Game Maker sono disponibili diversi tutoriali, di difficoltà progressiva, che guidano a una più completa conoscenza delle risorse dell’editor. a. I giochi tipo Break out hanno in genere più livelli. Si possono creare altre stanze e collegarle l’una all’altra: invece di far finire il gioco quando viene distrutto l’ultimo mattoncino, si fa passare il giocatore al livello successivo (azione Go to next room nella categoria Main1). b. Gli altri livelli del gioco dovrebbero essere caratterizzati da difficoltà crescente (pallina più veloce, mattoncini che vanno colpiti più volte per essere distrutti, disposizioni più complesse dei mattoncini stessi…). c. Alcuni mattoncini potrebbe distinguersi dagli altri per effetti più devastanti: mattoncini che eliminano una fila intera una volta colpiti, mattoncini super-protetti che fanno passare in un colpo solo al livello superiore… d. Si potrebbe assegnare un punteggio ad ogni mattoncino distrutto o a dei bonus (azione Set the score nella categoria Score; attenzione: spuntare Relative, altrimenti il punteggio non viene incrementato di volta in volta, ma riportato sempre al valore iniziale indicato…). Si possono condizionare alcune azioni, come la comparsa di bonus o la sparizione di ostacoli, al raggiungimento di un punteggio minimo (azione If score has a value nella categoria Score). e. Sempre nella categoria Score, si trovano le azioni per assegnare un certo numero di vite al giocatore. Si potrebbe stabilire che, quando la pallina sfugge al giocatore, invece di ricominciare il livello da capo, gli si toglie una vita. Finite le vite, finisce la partita… Fase 4: presentazione ed uso dei giochi Concluso il gioco, la cosa migliore è naturalmente farlo subito provare a qualche utente esterno al gruppo che l’ha realizzato, annotando con cura, oltre agli eventuali malfunzionamenti, i suggerimenti: • per renderlo più facile da utilizzare • per renderlo più divertente • su come aggiungere eventualmente nuovi oggetti e livelli • su come idearne nuove varianti e sviluppi • su come inventare nuovi giochi BIBLIOGRAFIA SUGGERITA: • • • • • • • • • • • • Carlà F., Space Invaders. La vera storia dei videogames, Castelvecchi, Roma 1996. Turkle S., La vita sullo schermo. Nuove identità e relazioni sociali nell'epoca di Internet, Apogeo, Milano, 1997. Herz J.C., Il popolo del joystick. Come i videogiochi hanno mangiato le nostre vite, Feltrinelli, Milano, 1998. Fileni F., Comunicazione, cultura, conoscenza. Televisione, videogiochi, telematica, Edizioni Goliardiche, Trieste, 1998. Antinucci F., Computer per un figlio. Giocare, apprendere, creare, Laterza, Roma – Bari, 1999. Ascione C., Videogames. Elogio del tempo sprecato, Minimun Fax, Roma, 1999. Kermol E., Pira F., Videogiocando. Pro e contro i nuovi divertimenti dei bambini, CLEUP, Padova, 2001. Cocconi M.G., Salzillo L., Un ponte d’immagini. Cartoni e videogiochi nella relazione con i ragazzi, Franco Angeli, Milano, 2001. Antinucci F., La scuola si è rotta. Nuovi modi di apprendere tra libri e computer, Laterza, Roma – Bari, 2001. Maragliano R., Nuovo manuale di didattica multimediale, Laterza, Roma – Bari, 2002. Pecchinenda G., Videogiochi e cultura della simulazione. La nascita dell'«homo game», Laterza, Roma – Bari, 2003. Tanoni I., Videogiocando s'impara. Dal divertimento puro all'insegnamento-apprendimento, Centro Studi Erckson, Trento, 2003. SITOGRAFIA: • • www.gamemaker.nl (sito ufficiale di Game Maker) http://forums.gamemaker.nl/ (Official Game Maker Community) • • • • • • • http://gmshowcase.gm-school.uni.cc/index.php (raccolta di giochi) www.gamemakergames.com (altra raccolta di giochi) www.muzzle4ge.net/toplist/ (Game Maker Top 30) www.cs.uu.nl/docs/vakken/gds/ ( corso di progettazione di videogame di Mark Overmars) http://ahefner.com/game.html (esperienze di utilizzo scolastico di Game Maker) http://intranet.woodvillehs.sa.edu.au/kerrbi/g/int.htm (idem) www.education.tas.gov.au/itproject/gamemaker/default.htm (idem)