Analisi di un videogioco

Inizia con questo primo episodio una serie di articoli atti a comprendere tutte le principali componenti e le tecniche che sono alla base per la creazione di un videogioco, i primi articoli saranno esclusivamente teorici per introdurci nel mondo del game developing, dopodichè passeremo alla pratica e creeremo un vero e proprio videogioco. Gli articoli vengono scritti con spirito collaborativo in base a conoscenze maturate negli anni nulla vieta, anzi sono apprezzati, i commenti dei lettori che con le loro esperieze e conoscenze possono arricchire o modificare quanto scritto in codesti articoli su Softgame.

Per prima cosa inizierei dando una definizione di Videogioco, wikipedia lo descrive così:
“Il videogioco è un gioco le cui regole sono gestite automaticamente da un dispositivo elettronico che utilizza un’interfaccia uomo-macchina basata sul display come sistema di output.”

Di videogiochi ce ne sono veramente tanti e di diversi generi, a grandi linee cercheremo di analizzare le componenti fondamentali che un aspirante creatore di videogiochi deve conoscere.

Possiamo dividere un videogioco nelle seguenti parti:
– Motore Grafico
– Motore Audio
– Motore Fisico
– Sistema di Interazione
– Gestore di Rete
– Gestore di Dati
– Intelligenza Artificiale

Andiamo a vedere in dettaglio di cosa si occupano queste parti:

Motore Grafico
Questa è la parte principale di ogni videogame, lo definirei il cuore dell’applicazione d’intrattenimento il suo compito è mostrare graficamente qualsiasi oggetto del gioco compreso i personaggi. Alcune volte viene usato il termine “motore grafico” indicando un framework che comprende motore grafico, gestione suono, gestione input, IA e altro; insomma un composto di più elementi indicati sopra fusi tra di loro. La cosa non è sbagliata ma in questo articolo per “motore grafico” voglio indicare solo la parte di gestione grafica. A seconda del gioco il motore grafico può essere 2D quindi gioco bidimensionale o 3D quindi gioco tridimensionale. Un motore 2D è più semplice da realizzare e non deve far altro che gestire le immagini: caricarle e animare a video, di solito le immagini per un motore 2D si dividono in immagini di sfondo e immagini animate (personaggi) conosciuti anche come sprites. Differentemente nei motori grafici 3D bisogna tener conto di molti parametri in più tipo rappresentazioni in realtime di ombre, luci, calcolare l’immagine che un determinato oggetto 3D assume in base alla posizione telecamera e mostrarlo all’osservatore. Un programmatore che vuole creare un videogioco ha due scelte, scrivere da sè il motore grafico o utilizzarne uno gia fatto. Qualora la scelta ricadesse su un motore già fatto ce ne sono di due tipi, quelli open source e quelli a pagamento. Quanto costa un motore a pagamento? Bhe un “listino” non esiste anche perchè ogni motore ha le sue caratteristiche quindi i costi possono variare dalle poche centinaia di euro a cirfre che si aggirano e superano anche il milione di euro. Tra i motori grafici open source troviamo prodotti come: OGRE, Irrlicht, ApocaliX, NeoEngine, Genesis3 ed altri. In realtà la maggiorparte dei motori grafici usano 2 differenti librerie grafiche, le DirectX (supportate solo da sistemi Microsoft) e le OpenGL (supportate da più piattafome Linux compreso), alcuni motori infatti usano l’una o l’altra, qualcuno addirittura può usarle anche entrambi e fà scegliere al programmatore quale adoperare.

Motore Audio
Il motore audio è la parte del videogioco che si occupa di tutta la gestione dell’audio, nella maggior parte dei casi bisogna gestire una musica di sottofondo e gli effetti sonori del gioco. Negli ultimi anni i motori audio si sono perfezionati ed hanno introdotto nuove funzioni, una importante è l’audio 3D conosciuto anche come audio posizionale. Questa tecnica consiste nel riprodurre un effeto sonoro dandogli anche una collocazione geografica, se ad esempio il suono arriva dalla sinistra avremo la cassa o cuffia sinistra che lo riproduce, mentre la destra resterà muta o lo riprodurra a bassissimo volume. Tecnica utilissima nei giochi 3D, molto usata dei FPS (First Person Shooter). Anche qui ci sono motori commerciali e motori open source come: OpenAL, IrrKlang, Audiere ed altre.

Motore Fisico
Con il perferzionarsi dei giochi 3D c’è sempre una maggiore esigenza di raggiungere un grado di realismo sempre più alto. Quale miglior modo di raggiungere realismo all’interno di un videogioco se non quello di utilizzare uno motore che implementa le leggi della fisica quali: legge di gravità, urti e collisioni, esplosioni e via dicendo. Alcuni motori fisici maggiormente utilizzati in videogiochi sono: Physx e Newton.

Sistema di Interazione
Possiamo identificarlo come l’insieme dell’hardware e del software che permette all’utente (videogiocatore) di interagire con il videogioco. Le modalità di interazione sono veramente molte tra quellepiù diffuse c’è l’utilizzo della tastiera, del mouse, il joystick, il game pad fino ad arrivare alle più moderne tecniche di Motion Capture (esempio che implementa questa tecnologia). Una volta scelto l’hardware il tutto deve essere gestito via software, si imposta che determinati tasti eseguono il movimento del personaggio, con altri ancora lo si fà compiere azioni fino ad impostare determinate sequenze di tasti per i famosi “attacchi speciali” molto usati nei videogiochi “picchiaduro”.

Gestore di Rete
Il gestore di rete permette di far comunicare più videogiocatori su hardware interconnessi in rete tra di loro. Specialmente dopo la forte diffusione del collegamento internet a banda larga sono aumentati i videogiochi che usano la modalità multiplayer. Tale modalità prevede la possibilità di giocare in rete locale o su internet con altri giocatori in altre parti del pianeta, il tutto grazie allo scambio di dati costante tra gli hardware usati dai giocatori. Di solito viene utilizzata una architettura client – server, ovvero viene impostato un server che gestirà tutto lo scambiuo di dati tra i giocatori, i quali si connettono come client a quest’ultimo e giocano in rete, il protocollo di rete più usato è l’ UDP (User Datagram Protocol). Anche per la gestione della rete esistono dei framework sia commerciali che free o addirittura Open Source. Un esempio di framework utilizzato nei videogiochi ma non solo è Raknet.

Gestore di Dati
Quanti di voi alle prese con videogiochi hanno avuto l’esigenza di dover salvare la partita per poi non ripartire daccapo? Bene il nome gestore dati magari è meno intuitivo delgi altri, ma con questo termine indichiamo la parte del programma che si prende cura di salvare lo stato attuale del gioco, per poi poterlo caricare successivamente e far continuare l’avventura grafica al videogiocatore proprio dove l’aveva lasciata. Prendiamo ad esempio un videogioco di tipo Real Time Strategy (RTS), bisognerà salvare una notevole quantità di dati quale: stato delle risorse, numero di unità con la loro posizione energia il loro stato (se sono in combattimento o a guardia di un atruttura), tutte le strutture del giocatore e quelle del/dei nemico/i, lo stato del gioco (in che livello ci troviamo), le evoluzioni e le scoperte utilizzabili, ecc. Come si capisce il gestore dei dati è molto personalizzato sul gioco creato, è difficile poter riutilizzare lo stesso gestore dati se non su un gioco con struttura “clone”.

Intelligenza Artificiale
In italiano viene abbreviata con la sigla IA, mentre in inglese la sigla è inversa AI (Artificial inteligence). Questa è la parte più impegnativa e strategica, determina anche la giocabilità del videogioco e il perchè è ovvio, se l’IA dei nemici in un videogioco è molto semplice essi risulteranno molto deboli e il giocatore si scoccerà presto visto che l’ostacolo costituito dai nemici è facile da abbattere, contrariamente se è troppo evoluta i nemici risulteranno così forti che batterli sembrerà quasi impossibile al giocatore e questo smetterà di giocare frustrato dal non riuscire a vincere. L’intelligenza artificiale viene utilizzata in tutti quei giochi dove esistono componenti (oggetti o personaggi) comandati e gestiti dal Computer / console e via dicendo. Pensiamo ad esempio al famoso gioco Pacman dove il simpatico protagonista deve riuscire a mangiare le palline disseminate su tutto il percorso senza farsi mangiare dai fantasmi, anzi all’occorrenza ingerendo la pillola riesci lui a mangiare i fantasmi. Vi siete mai chiesti quali sono gli algoritmi che permettono ai fantasmi di scegliere sempre la strada più breve per poter raggiungere pacman in un labirinto o nello stesso labirito di scappare il più lontano da lui quando è in grado di mangiali? Bene qui entra in gioco proprio l’ Intelligenza Artificiale, gli algoritmi sono diversi per potersi muovere in labiriti, uno di questo è l’algoritmo di Dijkstra scritto da un informatico Olandese da cui prende il nome. Da gioco a gioco l’Intelligenza artificiale cambia, passando da Pacman ai moderni FPS (First Person Shooter) ci rendiamo conto che bisogna considerare molti altri aspetti e non solo il sapersi muovere in un labirinto o su una mappa, ad esempio i nemici oltre a muoversi corrattamente nella mappa devono anche decidere: dove e quando nascondersi (quando sono in inferiorità? Per difendersi o per tendere una trappola?), come e quando attaccare (attaccare frontalmente? dal fianco? con quale arma? meglio la mitraglietta, la granata o un missile?), cooperare tra di loro (attaccare singolarmente o a squadra?), saper ripiegare o sacrificarsi tentando di abbatterci? Ricordiamoci che tutte queste decisioni devono essere prese in tempo reale in base alla nostra posizione o nel caso di squadre in relazione alla posizione di ogni membro della squadra e dalle dotazioni, posizioni che ovviamente cambiano in continuazione e dotazioni che si esauriscono nel corso del gioco, dobbiamo poi saper tradurre lenostre decisioni in istruzioni da impartire ai nostri personaggi, istruzioni che non devono essere constrastanti tra di loro. Come capirete nel campo della IA le conoscenze tecniche (matematica, trigonometria ecc.) e la fantasia hanno distese immense per potersi sbizzarrire.

Articolo successivo: Creiamo un videogioco: 1 introduzione

You can leave a response, or trackback from your own site.

4 Responses to “Analisi di un videogioco”

  1. Vincenzo ha detto:

    Ciao!Gran bell’articolo questo!Sono entrato in questo sito per caso ma ho letto tutta questa prima parte di analisi di un videogioco e penso sia ben fatta!..vedo che però risale al 15 dicembre.Uscirà il seguito oppure no?Spero tanto di si perchè è davvero molto interessante!Torno fra qualche giorno sperando di trovare qualcosa!Ciao e complimenti per il lavoro!;)

  2. siankan ha detto:

    Ciao, mi appresto a leggere l’articolo “analisi diun videogioco”, lo considero un argomento molto intresante, spero che che continuerete con altri, per addentrarsi ulteriormente in quello che sara’ presto la maggiore attivita’ ludica del genere umano.

  3. davide ha detto:

    Ciao complimenti per questo articolo, il mio sogno è di crare un videogames tutto mio.
    Mi auguro che questo sia solo uno di una serie di articoli dettagliati e di facile comprensione.
    Tornerò in questi giorni augurandomi di trovare mille commenti di appassionati come me.
    grazie

  4. ufo ha detto:

    Ciao!
    Perché quando cerco di visitare qualsiasi altra pagina vengo dirottato verso un sito di carattere politico assolutamente non inerente con l’argomento trattato (la creazione di videogame)?
    Comunque complimenti!

Leave a Reply

Powered by WordPress | Designed by: MMORPG Games | Thanks to Game Music, VPS Hosting and Shared Hosting