Parliamo di videogames: GMS2 e l'effetto di parallasse

Chi mi conosce sa che sono amante dei videogiochi e lo sono da quando ho acquisito la consapevolezza che possono essere considerati forme d'arte al pari di (ma non solo) cinematografia, pittura e architettura.
Se in un film sono attento alle inquadrature delle scene e alla musica, piuttosto che alla recitazione e agli effetti scenici, in un videogioco cerco di approfondire ogni aspetto.
Parlare di videogiochi per me è un passatempo piacevole, così come provarli (non testarli eh, quello lo lascio fare a chi nel settore è ben più meticoloso e lo fa di lavoro) e più volte mi sono soffermato a capire lo studio, le tecniche di realizzazione e gli sforzi che ci possono essere dietro.
Una cosa interessante è come negli ultimi anni (nell'ultimo decennio soprattutto) si sia ritornati ad una "apparente" semplicità. E' chiaro che non sto parlando di titoli da tripla A, ma di tutti quei giochi sviluppati da "team indipendenti".

Un team indipendente può essere composto anche da una sola persona. Il tempo e la storia ci ha confermato che è possibile sviluppare giochi interessanti (ammesso una innata dote o passione alla programmazione e all'informatica) anche in solitaria o in pochissime persone.
Esempi?
Attu Games, ad esempio, è un team ceco composto da 2 persone... 2 fidanzatini (e la cosa aggiunge un fascino romantico al loro "FEUDAL ALLOY" sviluppato su Unity) Lukáš Navrátil ed Eva Balíková.

Il canadese Aleksandar Kuzmanovic (@MrAmlice) invece è l'ideatore di "UNWORTHY" un souls-metroidvania in pixel art davvero stupefacente, sviluppato in GMS 2.

Proprio Game Maker Studio 2 qualche tempo fa ha catturato la mia attenzione per svariati motivi: semplice e pulito, piuttosto intuitivo, vasta community e un portfolio di rispetto:
si va da Hotline Miami a Hiper Light Drifter, da Gloom ad Undertale, o l'italianissimo The Textorcist.
Quanto lavoro ci può essere dietro titoli del genere? Inquantificabile, nel senso che ognuno richiede il tempo che merita tra ideazione, progettazione grafica, programmazione e messa a punto delle meccaniche.
In generale gli indie-game sviluppati da poche persone tendono ad essere semplici ma brillanti (prendete "CLOSURE" di  Tyler Glaiel e Jon Schubbe come esempio di puzzle-game ottimamente strutturato) e hanno un costo, salvo eccezioni, molto contenuto: dai 4.90 € a 9,90 € che per dei team del genere significa iniezione di fiducia e liquidità per supportare il gioco o svulipparne di nuovi.

Come non citare allora il pluripremiato "LIMBO", il titolo per cui il sottoscritto ha iniziato a rivalutare tutto l'intero filone indie?  Tutti i titoli menzionati sono perlopiù platform a scorrimento orizzontale o top-down view (visuale dall'alto). Perché molti studi indipendenti optano per questa scelta?

Inizio col dire che non tutti optano per il 2D. Il recentissimo (e gratuito) "RED HOT VENGEANCE" (sviluppato con GMS 2), dimostra come un tool studiato prettamente per il 2D, possa essere in grado di gestire, ambienti e dinamiche tridimensionali (con mio grandissimo stupore!).
Il fatto per cui si scelga la bidimensione è principalmente per massimizzare il risultato, riducendo il più possibile gli sforzi. Se da una parte avere a che fare con oggetti 3D, permette molta più libertà nello sviluppo delle meccaniche, dall'altra questa libertà per un team neofita che si affaccia per la prima volta nel modo dei videogame come sviluppatori, è sicuramente scoraggiante e non immediatamente gestibile.
Grazie ai sempre più potenti e semplificati tool di costruzione, di giochi 2D ne vediamo a bizzeffe e fare la differenza non è affatto semplice e il rischio è, appunto, cadere in un calderone dove il nostro titolo verrà ignorato dai più.

Allora come fare per rendere stimolante il nostro titolo con poco investimento?
I programmi che permettono di cimentarsi nella realizzazione di un videogame senza particolare conoscenza di programmazione e senza spendere cifre esorbitanti sono diversi, alcuni addirittura gratuiti come GODOT.
Se voglio qualcosa di più organizzato c'è CONSTRUCT 3 che però ha un piano tariffario annuale (o mensile) che, seppure non sia esorbitante, per chi come me inizia da zero non è certamente la soluzione più conveniente.
Per personale esperienza, io consiglio GAME MAKER STUDIO 2 in licenza ad personam (solo per 1 persona). Ogni tanto appare nei listini scontati di STEAM (eseguibile anche senza STEAM) e lo potete prendere con 60 EUR.

GAME MAKER STUDIO 2 è divenuto popolare sicuramente grazie ad HOTLINE MIAMI, avendolo tra gli showcase ha aiutato a "vendersi" bene. C'è da dire che l'interfaccia piuttosto intuitiva e pulita, così come l'organizzazione delle palette e la struttura delle finestre, si fanno voler bene.
Perché cimentarsi nella realizzazione di un videogioco 2D?
C'è da spiegare che prima di fare un videogioco, si deve aver videogiocato... molto. Questo aiuta a comprendere le meccaniche e gli aspetti di un gioco e può dare spunto e motivo di riflessione per adattarlo al nostro progetto.

Io da sempre sono un amante di CASTLEVANIA e tutte le volte che mi trovo a rigiocarlo (specialmente i primi su NES) rimango incredibilmente colpito di quelle meccaniche, semplici ma oculate e ben equilibrate; ed i motivi per cui lo si prende ancora oggi in considerazione sono molteplici; vi rimando a questo link per una infarinatura (www.anatomyofgames.com/2013/01/29/anatomy-of-a-game-castlevania-trilogy-afterthoughts/) se volete approfondire ci sono dei libri specifici proprio sulla corrente "vania".

E' altresì vero che il background culturale di un videogiocatore non si deve attenere solo ai videogiochi: sviluppare un metroidvania identico ad un qualsiasi Castlevania (vedi SLAIN),  forse qualche anno fa aiutava a "vendersi" da solo grazie al fattore nostalgia, ma adesso che da ogni parte spuntano fuori, arrivando a saturare perfino ogni profilo di Itchio, è divenuto snervante.
Però una cosa devo dirla prendere CASTLEVANIA piuttosto che uno ZELDA e analizzarlo aiuta veramente tanto. Ad esempio, SHOVEL KNIGHT non è forse un MEGA MAN in epoca medieval-fantasy? Si lo è, ed è stre-pi-to-so! Questo dimostra che con un pizzico i innovazione e meccaniche classiche, si può creare qualcosa di veramente divertente.

Prima di partire a programmare (il che è ancora un parolone grosso per me), mi sono preso il tempo necessario per dare un occhiata a gente seria, perciò segnatevi questi nomi perché saranno un ricorrenza continua: FriendlyCosmonaut, Heartbeast, Shaun Spalding, GM Guru, Driftwood Gaming, Making Games 101.

Allora, se sei arrivato a leggere fin qui le cose sono due: o sei interessato a fare un videogioco o vuoi vedere se sono in grado io di farlo... spoiler sulla seconda: no, non lo sono e fallisco piacevolmente.

Bene. La pratica più comunemente utilizzata nell'impostazione a scorrimento orizzontale (ma anche in quella che corre sull'asse verticale) è la parallasse (o effetto di parallasse).
La parallasse è semplice e la puoi leggere su wikipedia, ma se sei pigro ti basti sapere che la parallasse "simula" lo scorrimento indipendente di 2 o più sfondi, in cui gli sfondi più lontani si muovono più lentamente di quelli più vicini.
Esempio pratico: siete passeggeri di un treno in movimento e guardate le montagne all'orizzonte oltre le quali, c'è la luna piena. Le montagne si muovono più lentamente dei tralicci ferroviari, mentre la luna è pressoché ferma.

Questa è la prospettiva più utilizzata nei giochi a scorrimento (scorrimento che in genere avanza  da sinistra verso destra). Se giocate a SUPER MARIO BROS o a CASTLEVANIA vedrete che non ha parallasse, mentre uno dei più famosi effetti di parallasse su Nes è (imo) NINJA GAIDEN e SWORD MASTER.

La parallasse va da 2 ad un numero pressoché illimitato di sfondi. Teniamo presente però che più sfondi abbiamo, più appesantiamo il gioco e complichiamo la gestione. Non c'è un valore numerico per cui sia ideale utilizzare più o meno sfondi, ma diciamo che 5 o 6 livelli possono essere sufficienti per creare una notevole profondità.
Possiamo partire dal fondale più lontano e arrivare al primo piano o viceversa, il risultato sarà medesimo.

Quella che vedete è una stanza (room) di 3140 x 1080 px (mi sto avvalendo dell'antichissimo FreeHand per la simulazione perché effettivamente mi rendo conto che immediato anche più di Illustrator che però utilizzerò successivamente).

Fig. 1.


Le linee guide che ho, determinano le varie risoluzioni affinché l'aspect-ratio del gioco non subisca alterazioni (480x270 px, 960x540 px ecc... fino ad arrivare a 1920x1080 px). E' una cosa più complicata di quello che serve adesso e lo spiegherò più avanti; per il momento limitatevi a sapere che px (pixel) è l'unità di misura nella rappresentazione grafica di un oggetto (in computer grafica).
Adesso componiamo la nostra scena partendo dal livello sul quale si muoverà il nostro personaggio.

Fig. 2



Vi starate chiedendo perché uscire fuori dalle dimensioni della stanza?
E' un prassi regolare non necessaria ma utile a evitare spiacevoli effetti visivi. Anche questo è un argomento da trattare a se e riguarda per lo più i settaggi della telecamera e gli effetti ad essa connessa.
Però per farvi un esempio pratico:

Fig. 3



Ammettiamo che il giocatore sia al limite della stanza a sinistra (l'elemento in fuxia), posizionato a x=3100 , con un effetto di shaking della telecamera (di 100px sull'asse x) incentrata sul giocatore, la visuale va da +50 a -50px dalla posizione del giocatore stesso e quindi andrebbe a 3150px  e 3050px sull'asse.
Come si può notare 3150px sono maggiori dei 3140 di cui è composta la stanza, quindi se la grafica terminasse nel reticolato della stessa, non sarebbero visualizzati i 10px.
Possiamo indicare la grafica in eccesso come una specie di "safe-area" o di margine al "vivo" (abbondanza) come si usa dire in gergo tipografico.

Sormontando i vari livelli grafici (Fig. 4 a seguire) e settando i valori di profondità (depth) ed escurzione sull'asse x (ricordando che la velocità maggiore ce l'ha l'oggetto in primo piano - in questo caso la porzione di fronda dell'albero sulla sx, quella minore l'ultimo sullo sfondo - in questo caso le montagne), arrivo ad avere la composizione finale, come mostrato in Fig. 10.

 













Per facilitare la comprensione ho utilizzato una variante colore per livello (tranne che per la casa in cui ho utilizzato più varianti per mettere in risalto alcuni dettagli).
100% nero (livello 1):  è la fronda in primo piano sul lato sx dello schermo e rappresenta l'elemento più vicino allo schermo e dietro la quale scompare il personaggio (che nelle immagini è assente).
90% nero (livello 0): è il terreno e le staccionate del medesimo colore e rappresenta il livello sul quale il personaggio si muove (per cui se voglio che il personaggio sia dietro la staccionata, dovrò creare un livello superiore).
80% nero (livello -1) è la casa e la staccionata nel mezzo.
Via via dietro tutti gli altri livelli fino a raggiungere la composizione finale della Fig. 11






Devo dire che non importa creare paesaggi "infiniti", ma anzi spesso conviene (per ridurre il peso in termini di kilobyte e gestione ottimale) creare paesaggi che permettano una esatta duplicazione tramite il comando "tile horizontally". Inoltre ci sono 2 differenti approcci per la costruzione dei livelli di background: il primo quello meno conveniente (in termini di pesantezza se devo ricoprire vaste aree e gestione di oggetti) è quello di creare per ogni livello un oggetto (object); il secondo quello più idoneo e performante è creare dei "tileset" appositi.

Tileset significa "insieme di tessere" ed è in pratica una rappresentazione grafica di celle (o se vogliamo piastrelle) che compongono un determinato mosaico. La creazione di tileset non è immediatissima, però per farvi capire la potenza di un tileset vi rimando a questo link degli sviluppatori del videogioco "MICRO MAGES"... una roba veramente allucinante per i maniaci e per cultura generale (che fa sempre bene!!) (https://www.youtube.com/watch?v=ZWQ0591PAxM).


Le immagini fatte sono in vettoriale... se vi chiedete se sia meglio vector art o pixel art...ne discutiamo poi.

Commenti

Post più popolari