Analisi di un videogioco

Capire come si realizzi un videogioco e' cosa semplice, richiede solo una mente fresca e creativa, nulla di piu'. Per comprendere i concetti alla base del discorso non serve avere conoscenze particolari di programmazione o altro, bastano poche nozioni di matematica e logica.

Andando per ordine, un gioco puo' essere suddiviso in piu' strati come una torta.
Ogni gioco che si rispetti ha un campo di gioco, un'area in cui avviene l'azione e si vedono le varie figure. Questo potra' essere il nostro primo strato, lo strato visivo.

Ogni azione o quant'altro avviene nello strato visivo e' frutto di calcoli e attivita' svolte dal programma in background, questo potremmo chiamarlo strato di fondo.
Questo strato puo' esistere e funzionare anche senza lo strato visivo, in quanto lo strato visivo e' solo una rappresentazione grafica e piu' gradevole di quello che potrebbe essere espresso in solo testo dallo strato di fondo.

Ripensiamo quando a scuola, nei primi anni dell'apprendimento ci venivano posti problemi matematici di semplice svolgimento, il classico problema delle mele che si aggiungono e si sottraggono ad esempio.
Ci veniva chiesto, se abbiamo 3 mele e ne compriamo 2, quante mele abbiamo?
Si ragionava su cosa volesse dire visivamente averne 3, si aveva in testa una figura di 3 mele accostate fra loro.

Si ragionava poi su quante mele si sarebbero dovute aggiungere al gruppo, magari si metteva scritto nero su bianco 3 + 2 = 5. Mentre nella nostra testa si aveva ben chiara l'immagine di 5 mele rispetto alle 3 di partenza.



La parte logica e' di calcolo e' paragonabile a quanto avviene nello strato di fondo di un gioco, il programma tiene conto di vari valori e ne mostra una rappresentazione sullo strato visivo, in questo caso potrebbe essere la pagina adiacente su cui per aiutarci ci era facile disegnare l'oggetto in questione mano mano che si procedeve nello svolgere i problemi.
Ovviamente il tutto e' espresso in un linguaggio di programmazione e sotto una logica piu' articolata di quella appena presentata, ma questo e' solo un esempio di facile appendimento che si avvicina molto all'idea di base di gioco.

Andando piu' avanti in logiche piu' specifiche e articolate, troviamo il piano cartesiano, sistemi di coordinate orizzontali e verticali. Lo strato visivo e' paragonabile ad un piano cartesiano in tutto e per tutto.
Immaginate di dover rappresentare una delle mele di prima in un foglio a coordinate X e Y specifiche, il valore delle coordinate sara' tenuto in memoria dal sistema di fondo.



Di partenza mettiamo caso di aver deciso di mostrare la nostra mela alle coordinate 5,3 , il nostro strato di fondo provvedera' a disegnare a tali coordinate come nostra volonta' l'oggetto sullo strato visivo. Su richiesta del giocatore deve anche essere possibile spostare l'oggetto, magari su pressione di un tasto o tasti.
Cio' che e' presente nello strato di fondo puo' essere cio':

Mela {coordinate(5, 3) - immagine(mela.gif) }
Tasto "freccia_destra" premuto? Mela->coordinate(8, 7)
Disegna l'oggetto "Mela" sullo strato visivo

Il programma tiene conto di svariate cose, la posizione della mela e la sua immagine.
Controlla eventualmente la pressione di tasti specifici e ne esegue una o piu' azioni in caso di avvenimento dell'evento. Questo e' un semplice esempio di cosa potrebbe essere successo nel programma.
Volendo aggiungere altre funzionalita' al nostro programma, gli si potrebbe dire di cancellare tutto cio' che si vede nel campo visivo per poi ridisegnarlo con le nuove indicazioni.
Come ogni gioco, anche il piu' semplice, la grafica viene disegnata nella finestra di gioco e ridisegnata nuovamente a seconda degli avvenimenti scaturiti nel programma.

Il tutto funziona come una pellicola cinematografica, da bambino mi piaceva realizzare piccoli cartoni animati nei block notes disegnando in ogni pagina un fotogramma diverso di poco dal precedente e poi scorrerlo vedendolo prendere vita.

Ad ogni pagina, corrispondeva un campo completamente vuoto e pulito, l'immagine disegnata era una trasposizione di circa una capocchia di spillo rispetto alla precedente.

In un videogioco la cosa e' al quanto simile, non abbiamo fogli virtuali in sequenza ma un unico foglio su cui viene disegnato, cancellato e ridisegnato il tutto in maniera ciclica per tutto il ciclo di vita del programma.








Il ciclo di vita del programma puo' essere esemplificato in maniera analoga:

Inizio
Dati e assegnazione valori
Ciclo di vita
Azioni del giocatore
Eventi
Cancella e Disegna
Fine ciclo di vita
Fine

All'interno del ciclo di vita risiedono le logiche del gioco, come si e' visto prima, gestione di eventi quali pressione di tasti specifici o avvenimenti logici/matematici particolari ed infine il disegno sullo strato visivo.
Il ciclo di vita ha durata infinita a meno che un determinato evento non accada e vi ci ponga termine, per cui tutte le sue azioni inglobate verrano eseguite all'infinito. Di conseguenza, quello che succede dietro le quinte verra' visto graficamente dando l'idea di interattivita'.

Questo articolo ha posto le basi, semplificate al massimo di come un videogioco lavori e si possa intendere a livello astratto. Ovviamente con la sola lettura di questo articolo non sarete in grado di creare il vostro gioco, a meno che non sappiate mettere a frutto i concetti esposti in ambito di programmazione.
La pratica e la creativita' sono gli strumenti piu' utili per queste cose.

Nessun commento :

Posta un commento

Related Posts Plugin for WordPress, Blogger...