Game Maker Language

Da Wikipedia, l'enciclopedia libera.

Game Maker Language (GML) è un linguaggio di scripting sviluppato per la creazione di videogiochi con Game Maker. Il GML possiede una sintassi che ricorda molto quella del C o del JavaScript ed per questa sua caratteristica esso viene insegnato in numerose scuole come "trampolino" per lo studio di altri linguaggi.

È stato creato da Mark Overmars inizialmente per aiutare a completare il sistema di drag and drop del suo programma. Da quando YoYoGames ha acquistato i diritti del programma, il GML è considerato l'unico mezzo di programmazione in Game Maker.

oggetti[modifica | modifica wikitesto]

Se si desidera usare il GML è importante capire come funzionano gli oggetti in questo linguaggio.

- Come prima cosa il programmatore crea degli oggetti (vuoti)

- e gli associa, se vuole, delle sprite (ovvero degli elementi grafici),

- poi li "rimepie" inserendo una programmazione (basata sugli eventi).

Esistono 3 tipi di programmazione: 1) ad icone 2) a codice 3) ibrido (entrambi i precedenti).

- A questo punto, mediante un editor grafico si inseriscono gli oggetti (ovvero si creano quelle che vengono chiamate "istanza di oggetto") in un'area denominata stanza.

Da notare che molteplici istanze dello stesso oggetto (se l'oggetto è stato programmato in tal senso) agiranno l' una rispetto all' altra in maniera autonoma. Gli oggetti che non avranno istanze (ovvero che non sono inseriti nella stanza) non funzioneranno (la loro programmazione verrà ignorata). le istanze, oltre che mediante editor grafico, possono anche essere create dinamicamente (in qualsiasi momento) da un' altra istanza (non necessariamente dello stesso oggetto) o dal creation code della room stessa durante l'esecuzione del software.

Variabili[modifica | modifica wikitesto]

La divisione per tipi di dato è piuttosto semplice, esistono solo 2 tipi di variabili: numeriche e stringhe (le variabili booleane sono considerate come di tipo numerico: tecnicamente non formano un tipo di dati a parte).

esiste anche una divisione (indifferentemente dal tipo di dati contenuto) in variabili globali, di istanza e temporanee

- globali: a ogni nome univoco ne corrisponde una sola, che è accessibile e modificabile da un codice che può essere posto indistintamente in qualsiasi script o qualunque evento di qualunque oggetto

- di istanza: a ogni nome univoco ne possono corrispondere molteplici: una per oggetto (o più precisamente una per istanza di oggetto)

- temporanee: a ogni nome univoco ne possono corrispondere molteplici: una per script o piece of code (ogni evento può avere uno o più "piece of code") dove è posizionata. Questo tipo di variabili è da considerarsi completamente privato (a differenza di delle variabili di istanza), ovvero uno script o piece of code che generano una variabile temporanea hanno accesso unico a quella variabile (la quale comunque verrà rimossa alla fine del "piece of code" in cui era dichiarata).

In game maker language esistono anche variabili dette built-in (sono più di 150). A differenza delle normali variabili, in cui nome è logica di funzionamento vengono decisi dal programmatore, queste sono variabili prestabilite dal creatore del linguaggio: è necessario leggere l'utilizzo una per una sul manuale. Alcune di esse (marchiate nel manuale con un asterisco) sono dette "variabili built-in di sola lettura", da non confondere con le costanti.

le function[modifica | modifica wikitesto]

le function hanno questa sintassi

data_out = funct_name(data_in1, data_in2, data_in3 ecc.)

naturalmente "data_out =" ha senso solo in caso la function restituisca un valore significativo, tuttavia la sintassi indicata qui sopra tecnicamente non viene segnalata come errore anche in caso non ci siano valori da restituire. Allo stesso modo se una function restituisce un dato significativo la parte "data_out =", sebbene generalmente consigliata, non è obbligatoria.

Esempi[modifica | modifica wikitesto]

Variabili[modifica | modifica wikitesto]

//Le variabili inizializzate con "var" sono temporanee ed alla fine dell'esecuzione dello script vengono eliminate dalla memoria.
var str, name;

var age=2;
name="Pippo";

//Sebbene consigliato, non è obbligatorio scrivere ";" alla fine di ogni istruzione.
age--

age+=68+1;
str="Ciao "+name+", hai "+string(age)+" anni!";

Condizioni[modifica | modifica wikitesto]

if(health<=0)
{
 //Questa istruzione mostra una stringa in un box di pop-up (da Game Maker: Studio in poi è utilizzata solo per il debug).
 show_message("Hai perso!");
 game_restart();
}
else
{
 draw_text(mouse_x,mouse_y,health);
}

While[modifica | modifica wikitesto]

while(true)
{
 a++;
 if(a==666)
 {
  id=http_get(sito+"index.php?pass="+pass+"&user="+user);
 }
}

For[modifica | modifica wikitesto]

for (i=0;i<ds_list_size(list);i++)
{
 testo=ds_list_find_value(list,i);
 instance_create(x_pos,i,obj_muro);
}

Librerie[modifica | modifica wikitesto]

Game Maker funziona principalmente con delle istruzioni "drag and drop", ovvero istruzioni già pronte che contengono dei valori che possono essere modificati a seconda del risultato che si vuole ottenere. Ciascuna istruzione viene chiamata azione, ed è rappresentata da un'icona, ed è di fatto uno script GML o una funzione che l'utente può usare nel gioco. Queste azioni sono raggruppate in librerie, rappresentate graficamente tramite tabelle, di cui ognuna raggruppa tutte le istruzioni che svolgono operazioni simili tra loro (ad esempio, movimento, disegno sullo schermo, ...). Game Maker contiene un set di librerie predefinite, che contengono la maggior parte delle funzioni usate nel gioco. Le librerie possono essere create con l'Extension Maker per le versioni di Game Maker inferiori alla 8.1. In Game Maker: Studio è possibile creare estensioni all'interno del programma stesso, ed in un futuro vicino saranno multi-piattaforma.

Collegamenti esterni[modifica | modifica wikitesto]

informatica Portale Informatica: accedi alle voci di Wikipedia che trattano di informatica