Actions :


( azioni )


Le action ( azioni ) indicano le cose che accadono nel gioco.
Ogni volta che l' evento avviene queste azioni sono realizzate e di conseguenza il relativo comportamento delle instance di un object.
Ci sono tantissime action differenti disponibili ed è importante che capiate le loro funzioni.
In questo capitolo verranno descritte le actions principali.
Vi possono essere ulteriori action icone , ( alcune fatte anche non dal programmatore di Game Maker ) le quali diventono disponibili sotto forma di action libraries ( trattasi di un file.lib , di cui uno è già presente nella cartella dove è contenuto GM ) .
Questi ulteriori file.lib estendono ulteriormente le possibilità di GM .
Controllate il sito ufficiale di gamemaker.nl per vedere se c'è ne sono di disponibili oppure su siti italiani come gmitalia.tk e gamemaker.it .



Come potete vedere nell' immagine sopra , tutte le actions sono catalogate nelle pagine situate alla destra della finestra delle proprietà dell' object. Ci sono sette pagine di action selezionabili cliccando la relativa linguetta ( tasto): ( move , main1, main2 , control , draw , score , code ).
Quando tenete il mouse sopra ad una icona delle action , una sua breve descrizione verrà visualizzata , per indicarne la relativa funzione.




Per inserire un' actions ( azione ) in un event ( evento ) di un object ( oggetto ), trascinate la rispettiva icona dalla pagina di catalogo di destra , nella Action list ( lista delle azioni ) .
Potete cambiare la posizione delle action-icone presenti nella Action lista , trascinadole con il mouse verso sù o giù.
Se tenete premuto il tasto < CTRL > mentre trascinate un ' action , ne farete una copia.( potete trascinare e copiare le azioni fra le liste nelle differenti finestre della proprietà dell' object ) .
Utilizzate il tasto destro del mouse per rimuovere le actions ( oppure tramite il tasto < DEL > ) e per copiarle ed incollarle.




Quando inserirete un' actions nella lista delle azioni ( Action list ), si aprirà la relativa finestra pop-up , dove potete riempire determinati parametri ( descritti qui sotto ) .
Due tipi di parametri compaiono in molte actions :

  1. • Nella parte superiore potete indicare a quale instances l' actions sarà applicata. In difetto ( quindi se non modificato da voi ) è
      self  , ciò indica che è assegnata alla stessa instance per cui l' actions è stata realizzata.

    • Nel caso di un evento di scontro ( collision event ), potete anche specificare di applicare l' actions all' altra instance coinvolta nello scontro ( quindi anzichè self sceglierete   other   ).
    Per esempio in un videogame di guerra , nel collision event di un object proiettile , potete inserire questa action     assegnandola all '   other   , in modo tale che non sarà il proiettile a distruggersi bensì quello che collide ( colpisce ) con esso.

    • Per concludere, potete scegliere di applicare l' actions a tutte le instance di un   object  particolare.
    Per esempio sempre nel caso di un videogame di guerra , nel alarm event di un object qualunque , potete inserire questa action     assegnandola pero ad un specifico object carroarmato , in modo tale che tutte le instance dell' object carroarmato cambieranno la loro direzione .

  2. Il secondo tipo di parametro è la scatola ( box) Relative. Spuntando questo box , i valori che scriverete all'interno della finestra di dialogo dell' actions saranno riguardanti i valori correnti. Per esempio, in questo modo potete aggiungere qualcosa al punteggio ( score ) corrente, anzichè cambiare totalmente il punteggio corrente in un nuovo valore.
    Ovvero se l'actions dello score ( punteggio ) è settato a 1 ed il box Relative non è spuntato , il punteggio sarà sempre pari a 1 , mentre nel caso in cui il box Relative è spuntato , il punteggio da uno passera a 2 , poi a 3 , poi a 4 ecc... Quindi sarà sommato allo score precedente la cifrà settata.

    Gli altri parametri saranno descritti qui sotto.
    Potete successivamente cambiare i parametri facendo un doppio clicck sull' actions.







Move actions

( azioni di movimento )


Nel primo catalogo di actions ( azioni ) troverete quelle relative al movimento degli object:



  Start moving in a direction  ( Principio per il movimento ).
Tramite questa action potete dare una direzione particolare di movimento alle instances di un object.
Basterà cliccare il tasto con la freccia che ne indica il possibile movimento ( direzione ).
Utilizza il tasto centrale per arrestare il movimento.
Inoltre dovete specificare la velocità del movimento ( speed ).
Questa velocità è data in pixel per ogni steep.
Il valore di difetto è 8. Preferibilmente non utilizzate la velocità in negativo ( esempio - 8).
E' possibile cliccare tutti i tasti con le frecce affinchè venga data una direzione casuale.


  Set direction and speed of motion   ( Regolare il senso e la velocità di spinta in avanti ) .
Questo è il secondo modo per specificare un movimento.
Qui potete indicare un senso preciso scegliendo da un angolo di 0 ad uno di 360 gradi.
Tenete presente che lo 0 ( zero ) indica la destra , 90 è verso sù ( ascendente), 180 è verso sinistra , 270 è verso il basso , il tutto come avrete intuito è in senso antiorario.
Se desiderate un senso random ( casualità ), potete scrivere: random(360).
Poichè vedrete sotto la funzione casuale date un numero casuale più piccolo del valore indicato.
Se spuntate il checkbox identificato Relative , il nuovo movimento è aggiunto a quello precedente. Per esempio, se l' instance sta muovendosi verso l' alto ( 90 ) ed aggiungete un po' di movimento (45), il nuovo movimento sarà ascendente verso sinistra
( quindi l' instance si dirigerà verso nord ovest ) .

  Set the horizontal speed  ( Regolare la velocità orizzontale )
La velocità di un instance consiste di una parte orizzontale e di una parte verticale.
Con questa azione potete cambiare la velocità orizzontale.
Una velocità orizzontale positiva significa un movimento verso destra.
Negativo significa un movimento verso sinistra.
La velocità verticale rimarrà la stessa.
Utilizzate il Relative checkbox per aumentare la velocità orizzontale
, oppure per diminuirla fornendo un numero negativo ( - 8 ).

  Set the vertical speed  ( Regolare la velocità verticale )
Tramite questa action potete cambiare la velocità verticale dell' instance.

  Move towards a point  ( Il movimento verso un punto ).
Questa action ( azione ) darà un altra direzione di movimento.
Indicate una posizione specifica ed una velocità , l' instance comincerà a muoversi verso quella posizione ( non si arresterà una volta raggiunta quella posizione ! ) .
Per esempio, se desiderate che un missile si dirigga nella direzione di un ipotetica nave spaziale, potete usare come posizione object_navespaziale.x, object_navespaziale.y ( imparerete più tardi l'uso delle variabili come queste sotto).
Se spuntate la scatola Relative, specificate la posizione riguardante l' attuale posizione dell' instance ( la velocità non è presa il considerazione ).

  Set the gravity  ( Regolazione della gravità ).
Con questa action potete generare la gravità per un object ( oggetto ) .
Dovrete specificare una direzione ( angolo fra 0 e 360 gradi ) ed una velocità ( speed ) .
Ad ogni step verrà così aggiunta al movimento corrente dell' instance di un object , quella ulteriore direzione e velocità.
Normalmente sarà sufficente inserire un incremento molto piccolo di velocità ( come 0.01 ).
Di solito il senso di direzione utilizzato come gravità di un oggetto è quello in discesa ( 270 gradi ).
Se spuntate la scatola Relative aumentate la velocità ( speed) ed il senso di gravità ripetutamente.
Si noti che, al contrario a vita reale, l' oggetto differente può avere sensi differenti di gravità.

  Set the friction  ( Regolazione dell' attrito ).
Questa funzione vi servirà per far rallentare le instance di un object quando questi si muovono.
Specificate la quantità di attrito.
Ad ogni step questo importo è sottratto dalla velocità fino a quando questa sarà a 0.
Settate normalmente un numero molto piccolo (come 0.01).
Per esempio, in un videogioco di corse , sarà possibile far rallentare tramite questa action , un' instance di un object automobile che esce dalla strada .

  Jump to a given position  ( Salto in una certa posizione )
Utlilizzando questa action potete disporre le instance in una posizione particolare.
Specificate semplicemente le coordinate x e y e l' instance salterà in quella posizione.
Se spuntate la scatola Relative, la posizione è aggiunta riguardo l' attuale posizione dell' instance.
Questa action è usata spesso per spostare continuamente le instance.

  Jump to the start position  ( Salta alla posizione di inizio)
Questa action vi permetterà di far saltare l' instance dalla posizione attuale a quella dove è stata generata ( posizione di inizio ).

  Jump to a random position  ( Salta in una posizione casuale )
Questa action fa saltare l' instance in una posizione casuale nella room ( stanza o livello del gioco ).
La nuova posizione casuale non sarà mai quella dove è già presente un ulteriore instance solida ( solid instance ) .
Potete specificare lo snapping usato.
Se specificate i valori positivi, le coordinate sono scelte con multipli di numero intero dei valori indicati.
Questa action può essere usata per esempio per mantenere l' instance allineata rispetto alla cellule ( cells ) della griglia ( grid ) presente nella room (se c'è ne). Potete specificare uno snap orizzontale separato e lo snap verticale.

  Snap to grid  ( Snap alla griglia )
Con questa action potete arrotondare la posizione dell' instance ad una griglia.
Potete indicare sia il valore di snap orizzontale che verticale ( cioè la grandezza delle cellule della griglia ).
Ciò può essere molto utile per assicurarsi che le instances rimangono su una griglia.

  Reverse horizontal direction ( Inversione orizzontale )
Questa action inverte il movimento orizzontale dell' instance.
Per esempio può essere usata quando l' object si scontra con una parete verticale.

  Reverse vertical direction  ( Inversione verticale )
Questa action inverte il movimento verticale dell' instance.
Per esempio può essere usata quando l' object si scontra con una parete orizzontale.

  Move to contact position  ( Movimento - contatto - posizione )
Con questa action potete spostare l' instance in una certa direzione fino a raggiungere una posizione di contatto con un object.
Se c'è già uno scontro all' attuale posizione , l' instance non si sposterà.
Altrimenti, l' instance è posizionata appena prima che uno scontro accade.
Potete specificare la direzione ma anche una distanza massima al movimento.
Per esempio, quando un' instance sta cadendo potete abbassare una distanza massima fino ad incontrare un oggetto.
Potete anche indicare se considerare soltanto l' oggetto solido o tutti gli oggetti.
Mettete tipicamente questa action nell' evento di scontro per assicurarsi che l' instance si arresti in contatto con l' altra instance addetta allo scontro.

  Bounce against objects ( Rimbalza contro gli oggetti )
Quando mettete questa action nell' evento di scontro con un certo oggetto, l' instance rimbalzerà da questo oggetto in una direzione naturale.
Se regolate il parametro precise in false (not precisely ) , solo le pareti orizzontali e verticali sono trattate correttamente.
Quando regolate precise su true ( precisely ) , anche le altre pareti ( curve ) saranno considerate.
Ciò è comunque più lento. Inoltre potete indicare se rimbalzare soltanto dagli oggetti solidi o da tutti gli oggetti.
Considerate che il rimbalzo non è completamente corretto perché questo dipende da molte proprietà.
Ma nella maggior parte dei casi l' effetto è abbastanza buono.








Main actions, set 1

( azioni principali )


Le seguenti action ( azioni ) servono per generare , cambiare , distruggere le instance degli object presenti nel gioco, ad inserire o togliere dei suoni ed altre funzioni con le stanze.

  Create an instance of an object 
( Generate o create un instance di un object. )

Con questa action potete generare un instance di un object ( oggetto ). La generazione delle instances durante il gioco è estremamente utile.
Un' astronave può generare dei missili; una bomba può generare un'esplosione, ecc.
In molti giochi è presente un object che controllerà di tanto in tanto la generazione ( o creazione) dei nemici o altri oggetti.
Per l' instance recentemente generata l' evento della creazione è eseguito.

Specificate quale object volete creare ( generare ) e la posizione per quella nuova instance.

Per esempio, in un gioco con dei carriamati , se uno di questi spara un proiettile, dovrete far creare l' object proiettile nella posizione di quel carroarmato per far sembrare che parti proprio da esso. Considerando che l' action create relativo al proiettile è presente nell' obejct carroarmato, dovrete inserire la posizione x = x, e y = y.

Se invece volete generare il proiettile vicino al carroarmato ,basterà aggiungere il segno più o meno , esempio: x = x +5
Mentre se volete posizionare l 'object proiettile in un altro punto della room , dovete inserire x = un numero ( per esempio 300 ), y = un numero ( per esempio 400) , ( logicamente i numeri 300 e 400 li potete modificare) .

Se spuntate la scatola Relative, la posizione sarà aggiunta a quella dell' instance corrente.
Per esempio, se inserite x = 300 , con il relative spuntato , la posizione dell' object proiettile appena creato sarà pari a x del carroarmato (esempio: 100 ) più 300. Quindi la posizione x nella room sarà pari a 400.



  Create an instance of an object with a speed and direction 
( Generate o create un instance di un object con una velocità ed una direzione specifica ).

Questa action ( azione ) è uguale a quella sopra ma con 2 campi supplementari.
Potete ora anche specificare la velocità e la direzione dell' instance recentemente generata.
Si noti che se spuntate la scatola Relative , solo la posizione è relativa, non la velocità e la direzione.
Per esempio per far si che una pallottola si muova nella direzione della persona che l' ha sparata , dovete usare un piccolo trucco.
Come posizione inserite 0 , 0 e spuntate Relative.
Come direzione avremo bisogno di quella dell' instance corrente.
Ciò può essere ottenuta scrivendo la parola direction ( questa qui è una variabile che indica sempre il senso corrente in cui l' instance si sta muovendo ) .

  Change the instance ( Cambia l' instance ).

Con questa action ( azione ) potete cambiare l' instance corrente in una di un altro object.
Così per esempio, potete cambiare un instance di una bomba in esplosione.
Tutte le regolazioni, come il movimento ed il valore delle variabili, rimarranno lo stesso.
Potete indicare se effettuare o no l' evento della distruzzione per l' object corrente e l' evento della creazione per il nuovo object.

  Change the sprite  ( Cambia lo sprite )

Questa action serve per cambiare lo sprite dell' instance.
Indicate il nuovo sprite.
Potete anche indicare un fattore di scala ( scaling ).
Un fattore di 1 significa che lo sprite non utilizza alcun fattore di scala.
Il fattore di scala deve essere più grande di 0 ( tipo 0.5 ) .
Tenete presente che lo scaling ad uno sprite rallenterà il drawing ( disegno della grafica nel gioco ).
Cambiare gli sprites è una caratteristica importante.
Per esempio, desiderete spesso cambiare lo sprite di un object secondo il senso in cui esso cammina.
Ciò può essere realizzato facendo degli sprites differenti per ciascuna direzione ( nord , sud, est ,ovest ).
All' interno degli eventi della tastiera ( keyboard events ) relativi alle frecce direzionali , oltre al senso di direzione , tramite questa action , potete regolare il cambiamento dello sprite ( in base a tale direzione ).

  Destroy the instance  ( Distrugga l' instance ).

Tramite questa action potete distruggete l' instance corrente.
L' evento di distruzzione per l' instance è eseguito.

  Destroy instances at a position
 ( Distrugga l' instance presenti in una certa posizione ).

Con questa action potete distruggere tutte le instances presenti in una certa posizione , settando la box bounding.
Ciò è per esempio utile quando una bomba nel gioco esplode.
Quando spuntate la scatola Relative la posizione è presa considerando quella dell' instance corrente.

  Play a sound ( Ascolta un suono )

Con questa action potete aggiungere un suono o una canzone al vostro gioco.
Potete indicare il suono che desiderate sentire e se questo debba essere ripetuto continuamente o solo una volta ( the default ).
I suoni Wave possono essere ascoltati immediatamente e possono essercene molti nello stesso momento, mentre solo un suono del formato Midi può essere ascoltato.
Quindi se un nuovo suono Midi è caricato per essere ascoltato , l' eventuale precedente suono Midi verrebbe interrotto.
A meno che il suono abbia multipli amplificatori ( buffers ) soltanto un instance di ogni suono può essere ascoltato.
Così se lo stesso suono già sta andando, esso è arrestato e ricominciato.

  Stop a sound ( Arresta un suono )

Questa action ( azione ) termina l' eseguzione di un suono indicato.
Se diversi casi di questo suono sono eseguiti, tutti verranno terminatiti.

  If a sound is playing ( Se sta suonando un sound )

Se il suono indicato è eseguito l' action seguente è realizzata.
Altrimenti è saltata.
Potete selezionare Not per indicare che l' action seguente dovrebbe essere realizzata se il suono indicato non sta andando ( sound is not playing ).
Per esempio, potete controllare se una certa musica di sottofondo sta funzionando e, se non è così , tramite l' inserimento ( come action seguente ) del sound_play , far iniziare una certa nuova musica di sottofondo ( background ).

  Go to previous room ( Vai alla precedente room ).

Potete indicare il tipo di effetto di transizione per il passaggio da una stanze ( room ) all 'altra.
E' consigliato provare le transizioni per selezionare quella che più vi piace.
Se viene utilizzata questa action nella prima stanza ( room ) , otterrette un errore , semplicemente perchè non esiste alcuna precedente room.

  Go to next room ( vai alla room successiva ).

Tramite questa action potete passare alla room seguente.
Potete indicare la transizione.
Se viene utilizzata questa action nell' ultima stanza ( room ) , otterrette un errore , semplicemente perchè non esiste una seguente room.

  Restart the current room  ( Ricomincia la corrente room ).

Ricominciate la corrente stanza .
Indicate l'effetto di transizione.

  Go to a different room ( Vai in una particolare room).
Con questa action potete passare ad una differente stanza del gioco .
Indicate la stanza e l'effetto di transizione.

  If previous room exists ( Se esiste una room precedente).
Se esiste una precedente stanza , l' action inserita successivamente viene eseguita.
Avete bisogno normalmente di questa prova prima di muoversi verso la stanza precedente.

  If next room exists ( Se esiste una successiva room ).
Scopre se la stanza seguente esiste e nel caso affermativo, l' action inserita dopo viene eseguita.
Avete bisogno normalmente di questa prova prima di muoversi verso la stanza seguente.






Main actions, set 2

( azioni principali 2 )


Qui sotto sono riportate alcune action principali, per la sincronizzazione, per dare dei messaggi all' utente e per occuparsi del gioco nell' insieme.


  Set an alarm clock ( Orologio di allarme ).
Con questa action potete regolare uno degli otto orologi di allarme per l' instance.
Indicate il numero di steps e a quale orologio di allarme presente negli Eventi , sia destinato.
Dopo il numero indicato di steps, l' instance riceverà l' evento dell' allarme corrispondente.
Potete anche aumentare o fare diminuire il valore spuntando la scatola Relative.
Se regolate l' orologio di allarme ad un valore inferiore o uguale a 0 lo spengnerete, in modo tale che l'evento non sarà generato.
Questa action potrebbe esservi utile per far si che un object faccia una determinata cosa in un certo momento ( da voi indicato in steps ) .
Per esempio se si volesse fare che ogni 100 steps un object salti in una zona casuale della room potreste fare cosi :

Nel create event inserite questa action : , settate a 100 gli steps ed indicatelo per l ' evento dell' allarm numero 1.
Aggiungete l' evento ( e non l' action ) dell' allarm 1 ed in esso inserite l' action poi di nuovo con sempre 100 di steps.

 



  Sleep for a while ( Dorma per un istante ).
Con questa action potete congelare ( fermare ) la scena per un tempo particolare.
Ciò è usata tipicamente all' inizio o all' estremità di un livello o quando date al giocatore un certo messaggio.
Specificate il numero di millisecondi per dormire ( steps ).
Inoltre potete indicare se lo schermo debba in primo luogo essere redrawn ( ridisegnato ) per riflettere la situazione più recente.

  Set a time line ( Linea di tempo ).
Questa action è disponibile soltanto nel modo di GM avanzato.
Con questa action potete regolare una linea particolare di tempo per un instance di un object.
Indicate la linea di tempo alla quale essa si riferisce e la posizione al suo interno ( 0 è l' inizio ) dalla quale incomincia.
Potete anche usare questa action per concludere una linea di tempo non scegliendo linea di tempo come valore.
Per capire un pò meglio è simile all ' action allarm ma questa non richiamerà un' event_allarm , bensì si riferisce ad un time_line ( un modulo che contiene diversi allarmi successivi e i relativi action da attivare ) il quale è disponibile solo con GM avanzato.

  Set the time line position ( Posizione della linea di tempo ).
Soltanto disponibile nel modo di GM avanzato.
Con questa action potete cambiare la posizione nella linea di tempo corrente ( assoluto o relativo ).
Ciò può essere usata per saltare determinate parti della linea di tempo o per ripetere determinate parti.
Per esempio, se desiderate fare una linea di ciclaggio di tempo, all' ultimo momento, aggiungete questa action per regolare la posizione di nuovo a 0.
Potete anche usarli per aspettare che qualcosa accada.
Appena aggiunta l' action di prova e, se non funziona, regolate la linea posizione di tempo (time line position) a -1.

  Display a message ( Visualizzi un messaggio ).
Con questa action potete visualizzare un messaggio in una finestra di dialogo.
Scrivete semplicemente dentro il messaggio a macchina.
Se usate il simbolo del cancelletto ( # ) nel testo del messaggio , esso sarà interpretato come nuova linea , ovvero andrà a capo.
Quindi se volete far apparire il simbolo del cancelletto ( # ), riportatelo così \ # .

Se il testo del messaggio comincia con una citazione (quote) o un simbolo di doppia citazione, esso viene interpretato come espressione.
Veda sotto per le più informazioni sulle espressioni ( nota che questa action non funziona quando il vostro gioco funziona nel modo esclusivo ) .

  Show the game information ( informazioni del gioco ).
Con questa action farete visualizzzare la finestra delle informazioni del gioco ( questa action non funziona quando il vostro gioco funziona nel modo esclusivo) .

  Show a video (Mostri un video ).
Con questa action potete mostrare un file di video/film. Specificate il nome di archivio e se questo debba essere visto a pieno schermo oppure in una finestra.
Assicurarsi che il file video esista.
Dovreste distribuirli con il gioco o metterli in un datafile ed esportarli.

  Restart the game ( Ricominci il gioco ).
Con questa action ricominciate il gioco dall' inizio.

  End the game ( Concluda il gioco ).
Con questa action concludete il gioco.

  Save the game ( Salva la partita ).
Con questa action potete conservare la condizione corrente del gioco.
Specificate il nome di schedario per il saving ( il file è generato nella cartella dove è presente il gioco stesso ).
Più successivamente il gioco può essere caricato con l' action seguente.

  Load the game ( Carica la partita ).
Carichi la partita del gioco da un file.
Specificate il nome di archivio. Assicurarsi che il gioco conservato è per lo stesso gioco ed è generato con la stessa versione di GM.
Altrimenti accadrà un errore ( per essere preciso, il gioco è caricato alla conclusione dello step corrente ).







CONTROL

( Controllo )


Ci sono un certo numero di action ( azioni ) con cui potete controllare che altre action siano effettuate.
La maggior parte di queste action fanno una domanda, per esempio se una posizione è vuota.
Quando la risposta è sì ( true) l' action seguente è eseguita, altrimenti è saltata.
Se desiderate che molte action siano eseguiti oppure saltate in base al risultato ( true o false) di una domanda ( query ) , potete metterli in un blocco fra l' action start block ( blocchetto di principio ) e del end block ( blocchetto di termine ) .
Ci può anche essere un' action dell' else che è eseguita quando la risposta è no.
Qui sotto viene riportata un' immagine di una tipica domanda :



Eccovi una piccola descrizione :
Nella zona degli eventi è stato inserito l' evento del tasto sinistro delle frecce direzionali della tastiera.
Nel caso quel tasto durante il gioco viene premuto verrà posta una domanda .
Essa chiede se nel caso in cui la posizione intorno all' instance corrente è libera da qualsiasi scontro da altre instance, di muoverla verso un determinata direzione.
Altrimenti , l'instance dovrà saltare in un'altra posizione.

Per tutte le action delle domande ( solitamente hanno un' icona esagonale ), c'è un campo identificato del NOT, il quale se spuntato darà alla domanda un senso invertito.
Cioè se il risultato fosse true ( affermativo) esso diventa false ( falso ) e se fosse falso, diventa true.
Ciò vi permetterà di far realizzare determinate action quando una domanda non è affermativa.

Per molte domande potete indicare che dovrebbero applicarsi a tutte le instance di un object ( oggetto ) particolare.
In questo caso il risultato è true soltanto se è true per tutte le instance dell' object ( oggetto ).
Per esempio, potete controllare se per tutte le sfere la posizione alla destra sia un po' libera ( collision free ) da eventuali scontri con altre instance di altri object e non .

Le seguenti domande e le action relative sono disponibili ( nota che tutte hanno un' icona di forme diverse e di un colore di sfondo differente, tali da distingurli più facilmente da altre action ) .

 

  If a position is collision free
 (Se una posizione è libera da eventuali scontri ).
Questa domanda riporta true ( affermativo) se intorno alla corrente instance non viene generato uno scontro con un object.
Potete specificare la posizione assoluta o relative .
Potete anche indicare se soltanto gli object solidi ( solid ) debbano essere considerati oppure che tutti gli object siano considerati.
Questa action è usata tipicamente per controllare se l' instance possa muoversi verso una posizione particolare.
( Da tener presente che gli scontri fra le varie instance degli objects sono determinati dai contorni degli sprite loro assegnati )

  If there is a collision at a position
 (Se c' è uno scontro ad una posizione ).
Questo è l' inverso dell' action precedente.
Restituisce true ( affermativo ) se c' è uno scontro quando l' instance corrente è disposta ad una determinata posizione ( indicate se, soltanto con gli object solidi o con tutti gli object ).

  If there is an object at a position
 (Se c' è un object ad una posizione ).
Questo problema riporta true ( affermativo ) se l' instance disposta in una posizione viene a contatto di un' altra instance dell' object indicato.

  If the number of instances is a value
 ( Se il numero delle instance è pari al valore indicato )
Specificate un object ed un numero.
Se il numero corrente delle instance di quel object è uguale al numero inserito , la domanda restituisce true ( affermativo ).
Altrimenti restituisce false ( falso ).
E' possibile specificare se il numero indicato sia maggiore ( large) o minore ( smaller ) delle instance di un object.
Questa action è utilizzata per controllare se tutte le instance di un tipo particolare siano presenti o meno nella room.
Ciò è spesso il momento per concludere un livello o un gioco.

  If a dice lands on one ( Se ai dadi esce uno )
Specificate il numero dei lati dei dadi .
Se dal dado esce il lato numero uno , il risultato è true ( affermativo) e l' action seguente è realizzata.
Ciò può essere usata per mettere un elemento di casualità nel vostro gioco.
Per esempio, ad ogni step potete generare con una probabilità particolare una bomba o cambiare una direzione.
Più grande è il numero di lati dei dadi , più piccola la probabilità.
Potete realmente usare i numeri reali. Per esempio se regolate il numero di lati a 1.5 l' action seguente è realizzata due su tre volte.


  If the user answers yes to a question
 (Fai una domanda all' utente )
Specificate la domanda da porre all' utente .
Una finestra di dialogo viene visualizzato dal giocatore con un tasto per il ed uno per il no.
Il risultato è true se la risposta del giocatore è sì.
Questa action non può essere usata nel modo esclusivo ( exclusive mode ); la risposta allora sarà sempre sì.

  If an expression is true (Se un' espressione è affermativa )
Questa action porta una questione ( domanda ) non all' utente bensì nella programmazione del gioco.
Potete entrare in un' espressione arbitraria.
Se l 'espressione è affermativa ( true ) ( cioè un numero più grande o uguale a 0.5) l' action seguente è realizzata.
Per esempio in un gioco dove una nave spaziale spara dei proiettili potreste utilizzare questa action per fare una domanda al gioco ( non al giocatore ).
Ovvero nel caso in cui i proiettili sono maggiori di zero , spara un colpo.


Nella action delle expression inserire questo codice: proiettili >0
( > questo simbolo significa maggiore )
Mentre nell action del create genererete un' instance del proiettile.
Quindi nel caso la risposta è true ( affermativa ), ecco che verrà creata l' instance del colpo.Veda sotto per ulteriori informazioni sulle espressioni.

  If a mouse button is pressed
 (Nel caso che venga premuto il tasto del mouse )
Questa action chiede se il tasto del mouse indicato è premuto.
Nel caso affermativo viene eseguita l'action seguente.
Un uso standard è nell' evento dello step.
Per esempio potremmo inserire queste 2 action affinchè l' object salti nel punto in cui è attualmente il mouse , qualora venga premuto il tasto del mouse indicato :


Quindi nell' action del mouse deciderete quale tasto venga premuto e nel action del salto inserirete questo :
x : mouse_x
y : mouse_y



  If instance is aligned with grid
 ( Se l' instance è allineata rispetto alla griglia )
Restituisce affermativo ( true ) se la posizione dell' instance si trova su una griglia.
Specificate l' orizzontale ed il verticale dello spazio libero della griglia.
Ciò è molto utile quando determinate action, come fare una girata, sono permesse soltanto quando l' instance è in una posizione di griglia.
( La griglia è presente nell' editor della room e sono quelle linee verticali ed orrizontali che formano appunto una griglia )

  Else ( Altrimenti )
Nel caso in cui il risultato ad una domanda posta precedentemente è falso ( False ) , l' action seguente verrà eseguita.
Un esempio è descritto qui sopra nella grande immagine.

  Start of block ( L' inizio del blocco )
Indica l' inizio di un blocco delle action delle domande.
Un esempio è descritto qui sopra nella grande immagine.

  End of block ( La fine del blocco )
Indica l' estremità o la fine di un blocco delle action delle domande.
Questa action viene sempre preceduta da quella dello strat block e viceversa.
Servono per contenere fra loro diverse action le quali saranno eseguita in base alla risposta della domanda posta prima dello strat block.
Per esempio con le action qui sotto porgeremo una domanda al giocatore e nel caso la risposta sarà affermativa , verrano eseguite tutte le action comprese fra i blocchi strat block e end block:








  Repeat next action ( Ripeti la seguente action )
Questa action è usata per ripetere l' azione ( action ) seguente (o blocco delle azioni ) un certo numero di volte.
Indicate semplicemente il numero.

  Exit the current event ( Rimuova l' evento corrente )
Quando questa action è incontrata nessun' ulteriore action in tal caso è eseguita.
Ciò è usata tipicamente dopo una domanda.
Per esempio, quando una posizione è libera niente deve essere fatto così noi rimuoviamo l' evento ( exit the event ).
In questo esempio, le seguenti azioni sono eseguite soltanto quando c' è uno scontro.






DRAWING ACTIONS

( Le azioni di disegno )


Le action del disegno vengono inserite ed utilizzate solo nell' evento del disegno ( drawing event ).
In altri posti saranno ignorate basicamente.
Ricordatevi che troppi disegni e sprite o background ( immagini degli sfondi ) possono rallentare il gioco.
Quindi cercate di utilizzarlo soltanto una volta se rigorosamente necessario.
Ricordatevi che per visualizzare le immagini di un object , quest' ultimo dovrà avere la relativa casella visible spuntata.

  Draw a sprite image ( Disegna un' immagine dello sprite )
Specificate lo sprite, la posizione [ o assoluto ( absolute ) o riguardante ( relative ) l' attuale posizione dell' instance ] e la sub-images ( immagine secondaria ) dello sprite.
La sub-images è un numero da 0 in sù .
Ovvero , considerate che a volte uno sprite può essere composto da più immagini che ripetute formano un' animazione.
Quindi se volete far apparire una singolo fotogramma dell' animazione di uno sprite , dovrete inserire il numero corrispondente a quel fotogramma.
Se invece desiderate disegnare le sub-images corrente, affinchè venga visualizzata l 'animazione intera dello sprite , inserite il numero -1.


  Draw a background image ( Disegna un' immagine di sfondo )
I background sono delle immagini per gli sfondi del gioco.
Indicate il background , la posizione ( absolute o relative ) e se l' immagine ( a mò di tegoli ovvero tiled ) , debba coprire interamente la room oppure no.
Infatti anche se un background è di piccole dimensioni , potete lo stesso riempire un' intera room , facendo ripetere più volte la sua immagine.

  Draw a rectangle ( Disegna un rettangolo )
Specificate le coordinate dei due angoli opposti del rettangolo;
o assoluto o riguardante l' attuale posizione dell' instance.

  Draw an ellipse ( Disegna un ellisse )
Specificate le coordinate dei due angoli opposti del rettangolo circostante; o assoluto o riguardante ( relative ) l' attuale posizione dell' instance.

  Draw a line ( Disegna una linea )
Specificate le coordinate dei due punti finali della linea; o assoluto o riguardante ( relative ) l' attuale posizione dell' instance.

  Draw a text (Scrivi un testo )
Specificate il testo e la posizione.
Questo simbolo # ( cancelletto ) nel testo è interpretato come andare a capo ( utilizzate questi due simboli insieme \ # per far visualizzare all' utente il simbolo del cancelletto #) .
Così potete generare testi a più linee.
Se il testo comincia con una citazione ( quote ) o una doppia citazione, è interpretato come espressione.
Per esempio, potete usare

'X: '+ string(x)

per visualizzare il valore della x coordinata dell' instance.
La variabile x immagazzina la corrente x-coordinata ( ovvero la coordinata orrizontale ).
La funzione string() trasforma quel numero in un una stringa di testo facendolo quindi visualizzare .
Il simbolo del più ( + ) unisce le due stringhe.

  Set the colors (Regola i colori )
Potete settare il colore usato per riempire i rettangoli e gli ellissi ed il colore usato per le linee intorno al rettangolo e l' ellisse e quello di una linea.

  Set a font for drawing text
 ( Regola una serie completa di caratteri per il testo )
Potete regolare la serie completa di caratteri che verrà usato da questo momento in poi , per il testo.

  Change fullscreen mode  ( Cambia la modalità dello schermo )
Con questa action potete cambiare il modo dello schermo da fullscreen ( pieno schermo ) a normale ( in base alla grandezza della room ).
Potete quindi far cambiare questa funzione dello schermo direttamente dall' utente , inserendo per esempio nell ' evento della pressione di un tasto, questa action ( questo non funziona nel modo esclusivo ) . Tenete presente che tale funzione è già possibile premendo F4 durante il gioco.






SCORE ACTIONS

( Le azioni del punteggio )


Lo score è il punteggio che ottiene l' utente nella maggior parte dei giochi.
Inoltre in molti giochi l' utente avrà a disposizione un certo numero di lives ( vite ).
Per concludere, il giocatore avrà a disposizione una certa quantità di health ( energia della salute ).
Le seguenti action rendono facile occuparsi di queste funzioni ( score , lives , health ).

  Set the score ( Setta il punteggio )
GM ha un meccanismo incorporato del punteggio denominato score ed è visualizzato normalmente nella parte alta del contorno della finestra del gioco ( window caption ) .
Potete usare questa action per cambiare il punteggio .
Fornite semplicemente il nuovo valore per il punteggio.
Desiderete spesso aggiungere qualcosa al punteggio , in questo caso non dimenticate di spuntare la casella Relative.
Per esempio in un videogioco sparatutto quando l' utente elimina un nemico potete fargli aumentare il punteggio di qualche unità.
Quindi se il punteggio attuale è pari a 100 ed in questa action inserirete un valore tipo 10 , nel caso in cui il relative è spuntato esso diverrà 110 , altrimenti il punteggio ( score ) sarà riportato a 10.


  If score has a value ( Se il punteggio ha un valore)
Con questa action delle domande potete controllare se il punteggio abbia raggiunto un valore particolare.
Indicate il valore e se il punteggio debba essere uguale , minore o maggiore a quel valore.
Per esempio se volete che l' utente abbia una vita in più qualora raggiunga un determinato punteggio , vi basterà inserire questa action nell' evento dello step di un object ed inserire il valore desiderato , dopodichè aggiungere l' action delle vita ( lives) , così :



  Draw the value of score ( Disegna il valore del punteggio )
Con questa action potete disegnare il valore del punteggio ad una posizione particolare sullo schermo.
Fornite le posizioni ed il titolo che sarà disposto davanti al punteggio.
Il punteggio ( score ) è disegnato nella serie completa di caratteri corrente.
Questa action può essere inserita soltanto nell' evento di disegno di un object ( drawing event ).

  Clear the highscore table ( Togli la tabella del punteggio )
Questa action cancella la tabella del highscore ( punteggio ).

  Display the highscore table
 ( Visualizza la tabella del punteggio )
Tramite questa action potete far visualizzare la tabella dei punteggi ( highscore table) nella quale saranno visibili i 10 migliori punteggi.
Se il punteggio corrente è fra i dieci principali, il nuovo punteggio è inserito ed il giocatore può scrivere il suo nome digitandolo tramite la tastiera .
Così non dovreste in primo luogo aggiungere il punteggio con l' action precedente.
Potete indicare quale immagine di sfondo ( background ) utilizzare , se la finestra debba avere un bordo, il colore per la nuova entrata oltre a quello per le altre entrate e quale serie completa di caratteri ( font ) da usare .
( questa action non funziona nel exclusive mode! ) .

  Set the number of lives ( Regola il numero di vite )
GM inoltre ha un sistema di vite di built-in.
Con questa action potete cambiare il numero di vite a disposizione.
All' inizio del gioco è normalmente regolato ad un valore come 3, dopodichè fate diminuire o aumentate il numero secondo le cose che accadono durante la partita.
Non dimenticatevi di spuntare la casella Relative se desiderate aggiungere o sottrarre il numero di vite.
Dal momento che il numero di vite non si transforma in uno 0 ( o più piccolo di 0 ), al termine di esse, l' evento del no more lives è generato.
Quindi per esempio nel caso in cui l' utente abbia terminato tutte le vite messe a sua disposizione nel gioco, nell ' evento del no more lives potreste inserire delle action per definire il termine della partita.

  If lives is a value ( Se le vite sono ad un valore)
Con questa action delle domande potete controllare se il numero di vite abbia raggiunto un valore particolare.
Indicate il valore e se il numero di vite debba essere uguale , minore o maggiore a quel valore .

  Draw the number of lives ( Disegna il numero di vite )
Con questa action potete disegnare il numero di vite ad una posizione particolare sullo schermo.
Fornite le posizioni ed il titolo che precede il numero di vite.
Il numero di vite è disegnato nella serie completa di caratteri corrente.
Questa action può essere inserita soltanto nell' evento di disegno di un object ( drawing event ).

  Draw the lives as image ( Disegna le vite con immagini )
Anzichè disegnare il numero corrispondente alle vite, è spesso più piacevole usare un certo numero di piccole immagini .
Questa action vi permetterà di fare precisamente questo.
Specificate la posizione e l' immagine e nella posizione indicata il numero di vite verrà disegnato come immagini.
Questa action può essere usata soltanto nell' evento di disegno di un object ( drawing event ).

  Set the health ( Regolate l' energia vitale )
GM ha un meccanismo incorporato dell' energia vitale.
Potete usare questa action per cambiare l' energia vitale.
Un valore di 100 è considerato come energia completa mentre 0 equivale ad un' energia vitale terminata.
Fornite semplicemente il nuovo valore dell' energia vitale.Desidererete spesso sottrarre qualcosa dall' energia vitale, in questo caso non dimenticate di spuntare la casella Relative.
Quindi se l' energia vitale attuale è pari a 100 ed in questa action inserirete un valore tipo -20 , nel caso in cui il relative è spuntato esso diverrà 80 .
Quando l' energia vitale diventa più piccola o uguale a 0 l' health event è generato.

  If health is a value ( Se l' energia vitale è un valore )
Con questa action delle domande potete controllare se l' energia vitaleabbia raggiunto un valore particolare.
Indicate il valore e se l' energia vitale debba essere uguale , minore o maggiore a quel valore.Nel caso affermativo verrà generata l'action seguente.

  Draw the health bar ( Disegna la barra dell' energia vitale )
Con questa action potete disegnare l' energia vitale sotto forma d' una barra energetica.
Quando l' energia vitale è pari a 100, la barra sarà disegnata piena, mentre quando è a 0 la barra sarà disegnata vuota.
Indicate la posizione ed il formato della barra energetica ed il colore della barra e dello sfondo ( background ).

  Set the window caption information
 ( Regola le informazioni nel titolo della finestra )
Nel titolo della finestra ( ovvero nel bordo ) il nome della room ed il punteggio attuale ( score ) è visualizzato.
Con questa action potete cambiare ciò .Potete indicare se o non mostrare il punteggio, le vite e o l' energia vitale e quale titolo per ciascuno di questi debba essere descritto.






CODE RELATED ACTIONS

( Le action riferite al codice )


Infine qui sono riportate un certo numero di action che soprattutto si occupano del codice.
( Una volta che sarepe più esperti incomincerete ad utilizzare il codice GML, ovvero il linguaggio per programmare i giochi con GM, anzichè le varie icone , essendo questo molto utile e performante . )


  Execute a script ( Esegua uno scritto )
( soltanto disponibile nel modalità avanzata) Con questa action potete eseguire uno script ( scritto ) da aggiungere al gioco.
Specificate lo script e le 5 arguments ( discussioni ) massime per lo script.
Infatti in esso non scriverete alcun codice script bensì servirà per richiamare un codice script presente nella cartella degli script.

  Execute a piece of code ( Esegua una parte del codice )
Quando aggiungete questa action, si aprirà una finestra dove potete scrivere il codice GML .
Ciò funziona esattamente nello stesso modo di quando definite gli script.
L' unica differenza è che potete indicare per quale instance di un determinato object, la parte del codice deve essere eseguita.
Usi l' action code per scrivere piccole parti del codice. Per le parti più lunghe vi raccomando fortemente di usare gli script.

  Set the value of a variable ( Regola il valore di una variabile )
Esistono molte variabili incorporate nel gioco.
Con questa action potete modificarle.
Inoltre potete generare le vostre proprie variabili ed assegnare i loro valori .
Specificate il nome della variabile ed il nuovo valore.
Quando spuntate la casella Relative, il valore è aggiunto al valore corrente della variabile.
Noti prego che questo può essere fatto soltanto se la variabile già ha un valore assegnato ad esso !
Veda sotto per ulteriori informazioni sulle variabili.



  If a variable has a value ( Se una variabile ha un valore )
Con questa action potete controllare il valore di una particolare variabile.
Se il valore della variabile è uguale al numero fornito, la domanda restituisce TRUE ( affermativo ).
Altrimenti restituisce FALSE ( falso ).
Potete anche indicare che il controllo debba essere di un valore maggiore o minore della variabile stessa.
Veda sotto perulteriori informazioni sulle variabili.
Realmente, potete usare questa action anche per confrontare due espressioni.

Esempio :

Se in un gioco sparatutto volessimo far sparare al massimo 10 proiettili ad una probabile navespaziale , dovremmo inserire questa action VAR nel  create event dell' object navespaziale, dandole un nome ( per esempio: proiettili ) ed il valore pari a 10.
Poi per sparare utilzeremo per esempio il tasto spazziatrice .
Quindi nell' evento   < space > realese ( rilascio del tasto spazziatrice ) , inseriremo queste action :





•Nella prima action delle domande inseriremo il nome proiettili e come valore maggiore di 0.
Quindi se i proiettili attuali sono maggiori di zero le action presenti frai i 2 blocchi triangolari viola , verrano eseguiti.
•Nell' action del create inseriremo un object proiettile ( da non confondere con la variabile proiettile ) da generare.
•Nell' action VAR inseriremo il nome della variabile ( proiettili ) , come valore -1 e con il Relative spuntato.
•Nell' action del sound inseirremo per esempio il suono di uno sparo.
Queste action messe così hanno il significato di realizzare un proiettile nel caso in cui la variabile proiettili sia maggiore di zero, diminuire ogni volta di una unità la variabile proiettili, esegueire poi un suono dello sparo.

  Draw the value of a variable ( Disegna il valore di una variabile )
Con questa action potete disegnare il valore di una variabile ad una posizione particolare sullo schermo.

  Call the inherited event ( Denomini l' evento ereditato )
( soltanto disponibile nel modalità avanzata ).
Questa action è soltanto utile quando l' object ( oggetto ) ha un parent object ( oggetto genitore ).
Denomina l' evento corrispondente nel parent object.

  Comment ( Commento )
Usi questa action per aggiungere una linea del commento alla lista di azione ( Action list ).
La linea è indicata nella serie completa di caratteri di corsivo.
Non fa nulla quando esegue l' evento.
Serve solo per descrivere un commento di aiuto affinchè possiate ricordare qualcosa.






USING EXPRESSIONS AND VARIABLES


( Usando le espressioni e le variabili )


In molte action ( azioni ) dovete fornire i valori per i parametri.
Piuttosto che scrivere solamente un numero ,è possibile scrivere anche una formula come per esempio 32*12 ( l' asterisco è sinonimo di moltiplicatore ).
Inoltre è possibile scrivere delle espressioni molto più complicate.
Per esempio, se desiderate raddoppiare la velocità orizzontale di un object, potreste regolarli a 2*hspeed.
Qui hspeed è una variabile che indica la velocità orizzontale corrente dell' instance di un object.
Ci sono tantissime altre variabili che potete usare.
Alcune delle più importanti sono queste :

x  x-coordina dell' instance.

y  y-coordina dell' instance.

hspeed  la velocità orizzontale (in pixel per uno step) .

vspeed  il senso verticale di velocità (in pixel per uno step) .

direction la direzione di movimento nella velocità corrente , regolabile in gradi (da 0 a 360) .

speed la velocità corrente in questa direzione.

visible  se l'oggetto è visibile (1) o invisibile (0) .

image_scale  ingrandimento dell' immagine (1 = non scalato) .

image_single  questa variablile indica quale subimage ( immagine secondaria ) nello sprite corrente deve essere visualizzata; se lo regolate a -1 ( difetto ) , lo sprite viene visualizzato come un' animazione, altrimenti soltanto la subimage indicata ( cominciando dal numero 0 ) è visualizzata per tutto il tempo.

image_speed  questa variabile indica la velocità con cui le subimage ( immagini secondarie ) sono visualizzate .
Il valore di difetto è 1.
Se aumentate questo valore oltre l' 1 alcune subimages ( secondarie-immagini ) vengono saltate per rendere l' animazione più veloce.
Se lo fate più piccolo di 1 l' animazione sarà più lenta.

score il valore corrente del punteggio.

lives il valore corrente delle vite.

health variabile dell' energia vitale (da 0 a 100 ).

mouse_x  la x-posizione corrente del mouse.

mouse_y la y-posizione del mouse.

Potete cambiare la maggior parte di queste variabili usando l' action di variabile.
Potete anche definire le vostre proprie variabili regolandole ad un valore ( non usi il Relative, perché non esistono ancora).
Allora potete usare queste variabili nelle espressioni.
Le variabili che generate sono locali all' instance corrente.
Cioè ogni object ha una sua relativa propria copia.
Per generare una variabile globale, inserite la parola global ed un puntino ( per esempio global.nomevariabile ) .
In questo modo questa variabile inserita in un determinato object potrà essere utilizzata se richiamata in altri objects.

Potete anche riferirvi ai valori delle variabili di altri object mettendo loro il nome dell' object ed un puntino ( nomeobject.nomevariabile ).
Per esempio consideriamo un gioco con 2 object di cui uno è una sfera e l' altro una monetina.
Per far si che l' object sfera si dirigga nella direzione dove è posizionata l' object monetina , dovremmo inserire object_monetina.x , object_monetina.y , in questa action.

Nel caso di un evento di scontro     per riferirvi al x-coordinate dell' altro object potete scrive così: other.x.
Nelle espressioni condizionali potete usare i confronti come
< smaller than > , ecc.
Nelle vostre espressioni potete anche usare le funzioni.
Per esempio, la funzione random(10) dà un numero reale casuale inferiore a 10.
Così potete regolare per esempio la velocità o il senso di movimento ad un valore casuale.
Ricordatevi che molte altre funzioni esistono.










PAGES and MANUALS
PAGINE e MANUALI




AFFILIATI :