• Non ci sono risultati.

2.4 La logica di gioco

2.4.4 Interprete comandi

L’inserimento di un interprete comandi all’interno della logica di gioco pu`o rivelarsi in alcuni casi una scelta intelligente. Un interprete comandi si occupa di tradurre un comando in un’azione concreta di uno o pi`u oggetti. Integrandolo con un’architettura ad eventi `e possibile separare maggior- mente la vista dalla parte logica di un gioco. Ad esempio in un gioco di automobilismo alla pressione di un pulsante al posto di associargli diretta- mente la chiamata di un metodo gli si associa l’invio di un comando. Questo comando viene catturato dagli oggetti interessati che assoceranno a questo una specifica azione. Standardizzando la gestione dei comandi `e possibile sfruttarli anche con entit`a nemiche dotate di intelligenza artificiale.

Una volta implementato, questo sistema pu`o essere esteso implementan- do una console in cui `e possibile scrivere direttamente i comandi, questo sistema torner`a sicuramente utile in fase di testing e di debug.

Questa soluzione viene adottata molto nella programmazione di grossi giochi per computer.

2.5

Game views

Una game view `e un sistema che comunicando con la logica di gioco, pre- senta lo stato del gioco ad un’osservatore. Per osservatore non si intende esclusivamente l’utente finale che sta giocando. Un osservatore pu`o esse- re anche un agente con intelligenza artificiale che monitorando l’evoluzione dello stato del gioco determina il corso delle azioni di un nemico all’interno del videogioco. Ma possiamo avere una view anche per un giocatore in rete. Analizziamo ora questi tre casi.

2.5.1

Game view per l’utente

La game view che presenta lo stato del gioco al videogiocatore risponde agli eventi della logica di gioco, disegna la scena sullo schermo e invia gli effetti sonori e le musiche agli altoparlanti.

La grafica

La parte della view dedicata alla grafica si occupa di effettuare il rendering degli oggetti che compongono la scena di gioco. Il rendering `e quel procedi- mento tramite cui `e possibile generare un’immagine a partire da una serie di modelli 2D o 3D. Affinch´e il gioco scorra fluidamente il processo di rende- ring deve essere il pi`u veloce possibile. I calcoli per il rendering confluiscono tutti sulla CPU e quando `e disponibile vengono dirottati sulla GPU, ma questa non basta `e importante scegliere a priori quali oggetti renderizzare e con che livello di definizione.

Prendiamo ad esempio il caso del rendering in un simulatore di volo. Quando l’aereo `e fermo a terra, il sistema deve effettuare il rendering dei soli palazzi che lo circondano ma mano a mano che l’aereo prende quota la visuale si allarga e il numero di oggetti di cui fare il rendering cresce notevolmente. Ad un certo punto non `e pi`u possibile continuare a effettuare il rendering in tempi accettabili. L’unica soluzione per mantenere un buon numero di frame per secondo `e quella di usare diversi livelli di dettagli per disegnare i diversi oggetti a seconda della loro distanza. Gli oggetti che si troveranno pi`u vicino saranno renderizzati con un livello di dettagli elevato, mentre man mano che ci si allontana gli oggetti saranno renderizzati con una livello di dettagli via via inferiore.

Per non appesantire inutilmente la fase di rendering bisogna anche sele- zionare con cura quali elementi renderizzare e quali no. Prendiamo il caso di una porzione di citt`a in cui `e possibile esplorare anche gli interni delle case. Se il nostro giocatore si trova sulla strada nella fase di rendering non `e necessario processare anche i modelli degli interni, sarebbe del calcolo inu- tile, lo stesso principio vale quando il nostro giocatore si trova all’interno o quando la visuale `e oscurata da un muro. Non `e necessario fare il rendering degli oggetti che sono nascosti alla vista dell’utente.

La progettazione e la scrittura di queste procedure per l’ottimizzazione del rendering `e un lavoro molto complesso, ma in alternativa sono disponibili soluzioni commerciali.

Audio

La parte audio di un videogioco pu`o essere divisa in tre principali categorie: effetti sonori, musiche e parlato.

Gli effetti sonori non sono particolarmente difficili da gestire. Spesso `

e sufficiente caricare il file e definire i parametri di riproduzione, come se l’esecuzione deve essere messa in loop. Inoltre la maggior parte delle consolle integrano oggi molteplici uscite audio per il collegamento ad un impianto surround, spesso offrono anche librerie in grado di riprodurre il suono al dallo speaker giusto in base alla posizione della sorgente sonora nella scena. La gestione delle musiche non `e particolarmente differente da quella degli effetti audio.

Per quanto riguarda la gestione dei dialoghi e del parlato `e opportuno implementare un meccanismo di sincronizzazione con le immagini.

2.5.2

Game view per agenti AI

I sistemi ad agenti sono una delle soluzioni pi`u utilizzate per l’organizzazione delle entit`a dotate di intelligenza artificiale all’interno del gioco come ad esempio i nemici. Questi devono reagire alle azioni del giocatore, per questo motivo `e importante creare una vista anche per questi agenti.

Questa vista pu`o variare notevolmente a seconda del tipo di gioco e a seconda del tipo di agente che si intende realizzare. In generale comunque si pu`o definire uno scheletro abbastanza ricorrente. Prima di tutto occorre selezionare quali eventi si vuole monitorare, cio`e a quali eventi si vuole

reagire. Tra questi oltre agli eventi che regolano le mosse e i movimenti del giocatore pu`o essere utile anche monitorizzare gli eventi dell’ambiente circostante.

Una volta ricevuti gli eventi entra in gioco la parte decisionale dell’agente che individua come reagire agli stimoli ricevuti e quindi di conseguenza quali comandi inviare alla logica di gioco. Una semplice implementazione di questa parte potrebbe essere basata su una macchina a stati.

Gli agenti devono implementare funzioni per configurarli e apportargli modifiche. Deve essere ad esempio modificabile il livello di intelligenza e reattivit`a cos`ı di poterlo aumentare via via che il gioco prosegue tra i livelli.

Documenti correlati