Tutorial esemplificativo per ottenere un inventario in stile Monkey Island
By AlphaCentauri
Aprite il Games Factory Il primo livello sarà una stanza d’introduzione che avrà uno scopo molto importante che vedremo in seguito. La prima cosa che vi sembrerà strana è la seguente: in questa stanza dovrete creare tutti gli oggetti che dovrete mettere nell ‘ inventario durante tutto il gioco (anche se non è obbligatorio è molto importante all’inizio per chiarirci le idee).
In questa primo livello mascherato da pagina introduttiva con tanto di pulsante gioca ho creato un oggetto romboidale giallo che naturalmente ho posto fuori dallo schermo visto che non mi serve in questo livello…. Ma se non mi serve in questo livello perché l‟ho fatto qui? E‟ presto destro : fate click destro sull‟ oggetto e selezionate “Preferenze oggetto” In questa schermata barrate il radio button che indica “Oggetto relativo all‟intero gioco”
Ora il nostro oggetto è globale, ma cosa ci abbiamo concluso? Semplice ora quando creeremo un secondo livello nella barra a sinistra avremo disponibile proprio l‟oggetto che abbiamo creato nel livello precedente, guardate qui:
Allora clicchiamo col tasto sinistro sul rombo in alto a sinistra e poi clicchiamo in un punto qualsiasi dello schermo : terminologicamente parlando abbiamo creato un‟ “istanza” del rombo 1. Quali sono i pregi di un‟istanza?Che se modifichiamo una variabile ad essa associata nel livello 2 essa si modifica anche nell‟originale, ovvero quella nel livello 1. Ragionamento informatico (facoltativo): E’ risaputo che per programmare bene bisogna pensare come il computer quindi vi mostrerò semplicemente ciò che accade. Molti di voi a questo punto credono che anche le variabili dell’oggetto si siano moltiplicate, invece non è così.Secondo un ragionamento SBAGLIATO succede questo nel pc:
Molti pensano che ad esempio modificando la copia della variabile 1 nell‟oggetto del terzo livello si modifichino anche la variabile 1 dell‟originale e la copia di var 1 nell‟oggetto 2
Variabile 1
Copia della variabile 1
Copia della variabile 1
Oggetto originale ( quello nel livello 1)
Oggetto copia nel livello 2
Oggetto copia nel livello 3 e così via
Se il computer dovesse creare una variabile per ogni oggetto in ogni livello il numero dei dati da gestire alla fine sarebbe immenso.
Invece non esiste nessun originale (altra notizia shockante) anzi esiste ma non è a noi visibile (avete presente un’ “idea” platonica?): il modello esiste solo nella memoria del computer, quello che noi creiamo è solo una copia di questo modello.
Modello originale (nel PC) Variabile 1
Oggetto 1 che ci sembra l‟originale ma non lo è
Oggetto 2 nel livello 2
Oggetto 3 nel livello 3
Nessuno di questi oggetti ha variabili proprie ma ogni volta “guardano” quella del modello E così abbiamo spiegato il comportamento del computer (o almeno spero di avervelo fatto capire).Vantaggi di questo sistema: 1. Poche variabili (1 invece di 3) 2. Nessuna possibilità di errore nel trasportare le variabili (visto che è una e non si trasmette) Quindi quando ad esempio nel livello 2 modifichiamo la variabile del rombo modifichiamo la variabile del modello quindi quando nel livello 3 si chiederà di controllare il valore di quella variabile il computer ci risponderà col valore impostato da noi nel livello 2. Fine della parentesi facoltativa Se avete letto la parentesi avrete il grande vantaggio di capire quello che sto facendo (altrimenti continuate per pura fede!) Ora posso passare alla spiegazione degli eventi della stanza 2: A parte i movimenti di collisione di Guybrush che spero tutti conosciate bene vorrei farvi notare: 1.Quando l‟utente clicca sul rombo giallo Regola valore alterabile A del rombo su 1. 2.Se il valore alterabile A del rombo è 1 allora posizionalo nell‟inventario (coordinate 550,505) 3.Se il valore alberabile A del rombo è 0 (non è stato cliccato) lascialo al suo posto, in questo caso alle coordinate 566,317
Nella stanza 3 creaiamo una nuova istanza di questo rombo e mettiamo i seguenti eventi: 1.Se il valore alterabile di A del rombo è 0 (non è stato preso nel livello precedente) allora tienilo fuori dallo schermo (coordinate 828,155) 2.Se il valore alterabile di A del rombo è 1 allora posizionalo nell‟ inventario (è meglio dargli la stessa posizione di prima per dare un effetto di vero inventario quindi coordinate 550,505) Perfetto il nostro lavoro è quasi completo ma ci manca una sola cosa: nel primo livello dobbiamo settare il valore alterabile A del rombo su 0; anche se dovrebbe essere di default è meglio farlo per evitare bugs e per evitare che al riavvio del gioco ricompaiano gli oggetti nell‟ inventario senza averli presi.Tornando al discorso iniziale ecco perché è importante il primo livello. Se volete saperne di più leggete la prossima parentesi facoltativa: Seconda parentesi facoltativa Perché creare un primo livello per settare a zero il valore A?Non avremmo potuto farlo nella stanza rossa risparmiando un livello?Se ragioniamo così andiamo incontro ad un grosso bug.Ammettiamo per assurdo di avere scritto nella stanza rossa il codice: All „ inizio del livello regola il valore alterabile di A del rombo su 0. Quando prenderemo il rombo il suo valore A sarà 1.Andiamo ora nella seconda stanza. Visto che il valore alterabile è 1 l‟oggetto è correttamente posizionato nell‟ inventario. Torniamo ora nella prima stanza. L‟oggetto è stranamente uscito dall‟ inventario e tornato al posto dove era prima. Ma perché se lo avevo raccolto? Semplice perché appena rientri nella stanza a causa dell‟errore di programmazione regoli di nuovo il valore su zero e quindi è come se non lo avessi preso! Fine della parentesi facoltativa Ecco dunque come si crea un inventario globale; spero di essere stato il più esauriente possibile, Vi consiglio di provare nuove strategie con le altre variabili legate ad oggetti globali in modo da poter stupire chi sta giocando al vostro fan-game. E‟ tutto gente! AlphaCentauri