Gli sviluppatori di videogiochi come riproducono la fisica reale?
Perché i videogiochi hanno così successo? La caratteristica principale che ci permette di godere dell’esperienza del gioco è sicuramente l’immersività. Così come nella vita siamo immersi nell’esperienza del mondo che ci circonda con le sue regole immutabili, anche all’interno di un videogioco c’è bisogno di creare la sensazione di essere all’interno di un mondo con regole precise. E questo vale sia per giochi più tradizionali, da giocare su console o PC, ma anche per la nuova tendenza nel mondo dei videogiochi, i giochi per cellulare.
Ecco la necessità di rifarsi alle dinamiche del mondo reale, magari distorcendole, ma mantenendo sempre una credibilità, fattore estremamente importante per potenziare l’esperienza videoludica. Ma come fanno gli sviluppatori a creare questo sistema?
Motore fisico
Gli sviluppatori si affidano per far funzionare la fisica all’interno dei videogiochi a quelli che sono i motori fisici. Vediamo perché con un esempio. Sei in un parco sotto un albero di mele. Una mela si stacca e ti cade in testa. Cosa succede? Se sei un genio come Isaac Newton potresti vincere un Nobel, ma per gli altri? La mela, colpendo la tua testa, probabilmente rimbalzerà, anche di poco, forse si ammaccherà un pochino, e cadrà a terra accanto a te.
Ipotizza di essere lo sviluppatore del gioco su Isaac Newton. Quando la mela cade sulla testa del fisico, cosa fai?
- Nulla. La mela non rimbalza, l’effetto al giocatore è la perdità dell’effetto di realtà. Forse il nostro gioco non venderà così bene.
- Tu sviluppatore, decidi di costruire uno script che si ripete ogni volta che in questo mondo cade una mela. Questa è una soluzione di compromesso, aggiunge credibilità senza appesantire il tuo lavoro
- Ti affidi a un motore fisico. Il suo compito è riprodurre le leggi fisiche del nostro mondo secondo i parametri che gli hai “insegnato”. Questo crea quindi effetti diversi a seconda della situazione in cui la mela cade, di volta in volta. Questa è la soluzione più complessa, ma anche la più efficace in termini di realismo.
Se il pensiero di diventare uno sviluppatore di videogiochi ha acceso la tua fantasia, forse potrebbe interessarti questa professione così affascinante: prova a consultare questo articolo su come imparare a programmare. Ma come funzionano nello specifico questi motori?
Sistema delle collisioni
Riprendiamo l’esempio precedente. Diciamo che la mela è caduta sulla testa del nostro protagonista Isaac, ma noi non abbiamo fatto un buon lavoro sulle collisioni. Che succede? La mela cade all’interno del nostro povero fisico, sprofonda nella crosta terrestre e finisce al centro della Terra dove abbiamo posizionato il punto di attrazione gravitazionale. Perché accade?
Noi in questo caso non avremmo aggiunto al nostro motore fisico l’informazione necessaria per dire alla mela che quando collide con la testa del fisico deve fermarsi, forse rimbalzare e cadere di nuovo per fermarsi a terra.
Quello di cui abbiamo bisogno è di un sistema di collisioni. Diciamo fin da ora che creare sistemi di collisioni è un processo di compromessi: inserire dinamiche di collisioni continue (cioè molto dettagliate) all’interno di un gioco è estremamente pesante per il motore fisico, quindi spesso bisogna ricorrere a semplificazioni o a un sistema di collisioni frame-per-frame che aggiorna meno spesso le nostre collisioni ma appesantisce meno la CPU. Se volessi approfondire il sistema di collisioni, lascio qui un articolo di crew play.
Corpi Rigidi e Morbidi
Importante è anche definire la differenza fra corpi rigidi e morbidi. I primi sono definibili come oggetti composti da un numero x di vertici collegati da aste indeformabili, quindi sempre alla stessa distanza gli uni dagli altri, mentre nei secondi i vertici sono collegati da molle deformabili, quindi non per forza sempre alla stessa distanza.
Forse è più chiaro, ora, capire perché un oggetto morbido è molto più complesso da gestire di uno rigido. Ciò porta a quello che dicevamo sul compromesso: quando vediamo oggetti morbidi interagire fra di loro spesso gli sviluppatori sfruttano un’animazione precalcolata per alleggerire il carico.
Nel nostro primo esempio quindi, possiamo dire che forse sarebbe stato più efficace preparare un’animazione per far interagire Isaac con la mela, nel caso in cui volessimo dare molto dettaglio alla scena. Se invece siamo disposti a un compromesso, possiamo trattare Isaac e la mela come oggetti rigidi ed ottenere risultati meno precisi ma calcolati in real-time dal motore fisico.
In sintesi
Oltre a queste basi, ci sono mille altri dettagli che devono essere riprodotti all’interno di un videogioco tipico, ma già questi ci bastano a comprendere che i moderni videogiochi siano tra i software più complessi mai realizzati dall’uomo. E tutto per un risultato apparentemente poco importante: giocare!