Creazione di un gioco tramite Blender Game Engine - MATTEO VENDRAMINI

Pagina creata da Claudia Marini
 
CONTINUA A LEGGERE
Creazione di un
 gioco tramite
Blender Game
    Engine
MATTEO VENDRAMINI
Creazione Oggetti

 Da realizzare:
    Un cubo, il «protagonista»
    Un piano, il pavimento
    Oggetti casuali, i «nemici»
    Un elemento vuoto, ma ne riparleremo
    Un po’ di luci di tipo Lamp per illuminare il campo
    Oggetti per delimitare il campo (un piano o un
     cubo da modificare)
Impostazioni Game
Engine
 E’ necessario impostare per ogni
 oggetto le caratteristiche che avrà nel
 nostro gioco.
 Il cubo «protagonista» e i «nemici»
 dovranno essere impostati come oggetti
 dinamici; con forme semplici la
 differenza non è visibile, ma nel caso di
 forme complesse o di campi non
 orizzontali, la differenza è sostanziale.
Impostazioni Game Engine

 Il piano e i «muri» dovranno essere
 statici;.
 Il motivo è semplice, un oggetto
 dinamico o un corpo rigido sono
 soggetti alla gravità, impostando il
 pavimento a statico non si avranno
 problemi di sparizione di tutti gli
 oggetti per caduta nel vuoto.
Impostazioni Game
Engine
 Le luci vanno disposte
 uniformemente su tutto il campo, in
 modo da non avere lati bui o troppo
 illuminati.
 Il cubo vuoto si utilizza come
 escamotage per risolvere dei
 problemi che si hanno con la
 telecamera, lo stesso va inserito
 come oggetto di tipo «no collision»
Movimenti

 Ora iniziamo a far muovere qualcosa nel nostro
 gioco.
 Selezioniamo il cubo vuoto e impostiamo i suoi
 movimenti tramite i LogicBricks.
 Servirà un Sensore, un attuatore ed un controllore
 per ogni movimento.
 I movimenti da dare sono i quattro di base (avanti,
 indietro, destra e sinistra) più la rotazione a destra ed
 a sinistra (per guardarsi attorno)
Movimenti

    I sensori dovranno essere di tipo Keyboard, in
     modo da permettere la ricezione degli input da
     tastiera, i tasti da usare sono a discrezione di chi
     crea il gioco (io ho utilizzato WASD per i
     movimenti e QE per le rotazioni, ma si possono
     usare le frecce o qualsiasi combinazione di tasti si
     preferisca).
    I controllori saranno AND
    Gli attuatori saranno di Simple Motion, tramite ciò
     muoveremo il cubo
Movimenti

Impostazioni di movimenti: in avanti (▲) e rotazione a destra (▼ )
Movimenti

 Nella modalità gioco ora avremo un oggetto
 invisibile che si muove a nostro piacimento, quindi
 non accadrà niente di visibile.
 Per vedere qualcosa dobbiamo fare in modo che il
 nostro «protagonista» si sposti seguendo l’oggetto
 che muoviamo, per fare ciò useremo l’opzione di
 Parenting.
 Tramite quest’opzione si sceglie un oggetto «padre»
 ed un oggetto «figlio», l’oggetto «figlio» subirà
 qualsiasi modifica applicheremo all’oggetto
 «padre».
Movimenti

 Selezioniamo con il tasto destro il
 «protagonista», poi con Shift-Rclick
 selezioniamo l’elemento vuoto.
 Con ctrl-P impostiamo il legame di
 parentela, l’oggetto vuoto farà da padre al
 cubo.
 Se passiamo alla modalità gioco possiamo
 vedere che ora il nostro cubo seguirà i
 movimenti che immettiamo tramite tastiera.
Camera

Ora dobbiamo impostare la telecamera in modo
che il nostro gioco sia in terza persona, quindi anche
la telecamera dovrà seguire i movimenti del cubo,
posizioniamo la telecamera alle spalle del cubo
(tramite lo 0 del num-pad, possiamo vedere ciò che
vede la telecamera) e seguiamo la stessa
procedura usata prima per imparentare la
telecamera all’elemento vuoto.
Ora se guardiamo l’inquadratura della telecamera e
passiamo alla modalità gioco possiamo avere una
visuale in terza persona che segue il nostro
«protagonista».
Ora il gioco si compone di un cubo che scorrazza su un piano
orizzontale, circondato da vari oggetti, passiamo quindi a fare
interagire il nostro cubo con l’ambiente circostante e, ancora
una volta faremo uso dei LogicBricks
Interazioni tra gli Oggetti

 Facciamo in modo che il nostro cubo, a
 contatto con gli altri oggetti, li «mangi» e
 aumenti di dimensioni.
 Tramite i sensori di collisione in Blender
 possiamo riconoscere quando un oggetto
 ne tocca un altro, è possibile anche
 decidere che il sensore si attivi solo quando
 l’oggetto toccato è di un materiale o
 possiede una specifica proprietà, ed è
 appunto ciò che useremo noi.
Materiali

 Tramite il menù dei materiali creiamo due
 materiali, CUBE e TARGET.
 Non abbiamo bisogno di impostazioni
 particolari, cambieremo giusto il colore per
 distinguere gli oggetti.
 La distinzione dei materiali ci permette di
 impostare i sensori, in modo che non si
 attivino ad ogni collisione (con il pavimento
 per esempio).
Logic Bricks

 Partiamo dai nostri «nemici».
 Per dare l’effetto di essere «mangiati» dal cubo
 impostiamo i Logic Bricks in modo che il nostro
 oggetto sparisca a contatto con il materiale CUBE.
 Per fare ciò ci viene in aiuto l’attuatore Edit Object >
 End Object, che cancella l’oggetto.
Logic Bricks

 Per ingrandire il cubo, dobbiamo ricorrere ad uno
 script Python, in quanto Blender non ci offre un
 attuatore adatto (o non l’ho trovato io).
 import bge

 cont = bge.logic.getCurrentController()
 owner = cont.owner

 owner.localScale.x+=0.25
 owner.localScale.y+=0.25
 owner.localScale.z+=0.25

 Lo script è da usare come controllore, il sensore è,
 ovviamente, da impostare sulla collisione con il
 materiale TARGET, non useremo attuatori.
Alternative

 Se non volessimo usare Python l’alternativa che ho
 trovato è la creazione di copie del «protagonista» di
 dimensioni diverse da mettere in un layer nascosto,
 semplicemente al posto di eseguire lo script python,
 ad ogni collisione il protagonista avrebbe dovuto
 essere terminato e sostituito con una copia di
 dimensione maggiore.
 Questo metodo però ha degli inconvenienti in
 quanto, la nuova copia potrebbe non essere messa
 nella posizione esatta della precendente.
 Altro problema è il numero di oggetti da creare ed
 impostare, che può creare confusione.
Ora posso spiegare la scelta di impostare i
movimenti tramite l’elemento vuoto.
Se avessimo fatto in modo che la telecamera
fosse imparentata al protagonista, ogni
modifica subita dal cubo si sarebbe replicata
anche sulla telecamera e non si sarebbe
potuta apprezzare l’espansione del cubo, così
facendo le modifiche che subisce la
telecamera sono solo i movimenti e le
rotazioni.
Conclusione

 Il nostro gioco è finito.
 Possiamo esportare il file del gioco
 tramite il menù File>Export>save as
 Game Engine runtime

 Così facendo salveremo un file
 eseguibile con il nostro gioco.
Puoi anche leggere