Se sei un giocatore di vecchia data oppure semplicemente curioso ti sarai sempre chiesto “ma come si programmano i videogiochi? E perché quelli nuovi hanno bisogno di così tanta potenza?” In questo articolo cercherò di spiegarlo, ovviamente non andrò nei dettagli perché è un mondo davvero enorme, ma piccole nozioni.
Prima di tutto, un videogioco può essere programmato in qualsiasi linguaggio di programmazione – che non sono altro che dei modi che abbiamo per “dire” alla macchina cosa deve fare – quindi Java, C#, JavaScript, Python, anche se uno di quelli più utilizzati è il C++, ma per iniziare vanno bene in modo particolare Java e C#.
Quindi, i videogiochi non sono altro che software, ma cosa li differenzia da quelli “tradizionali”?
I programmi che utilizziamo quotidianamente sono creati per rispondere a determinati eventi. Per fare un esempio molto semplice: stiamo scrivendo un qualcosa utilizzando Word, nel momento in cui premiamo su un tasto della nostra tastiera, come la A, ecco che la lettera compare del sul nostro documento. Perché il codice che lo permette dice “se l’utente preme un determinato tasto presente sulla tastiera, allora fallo apparire”. In questo caso l’evento (o input) è il premere un certo tasto, mentre l’output è l’apparizione della lettera.
I videogiochi, invece, utilizzano qualcosa che è chiamato game loop. Perché il titolo continuerà ad essere eseguito a prescindere dal tuo agire. Certo il codice è fatto per rispondere agli input, ma se tu rimanessi fermo, comunque i nemici ti continuerebbero ad assalire, l’erba si muoverebbe, il fatto che tu sia immobile non ferma il gioco dal progredire.
Per esempio, questo è il game loop in quello che i programmatori chiamano pseudo codice (è un codice che è scritto in quasi italiano, a discapito del vero linguaggio di programmazione):
- mentre ( partita non finita )
- {
- pensano()
- si.muovono()
- controlloMovimento()
- controlloCollisioni()
- eseguiMusica()
- render()
- }
Questo ovviamente è troppo semplicistico, ma è l’idea base per il game loop.
Cosa rende un titolo pesante per il PC o per la console?
Poligoni, sistema particellare e la grandezza del file delle texture sono alcuni dei fattori che incidono di più. Ricordati sempre che il computer è il calcolatore per eccellenza, tutto è matematico e logico. Per rendere un titolo più “bello da vedere” significa dover aggiungere più cose, dunque la macchina deve calcolare come renderizzarle a schermo, e è ciò che viene fatto dalla CPU (o processore). Quindi maggiori saranno le aggiunge, maggiore sarà il lavoro della CPU.
Poligoni
Nei giochi a tre dimensioni tutto è fatto da poligoni, spesso a forma triangolare, questi servono per costruire forme complesse.
Aggiungere tanti poligoni rende il modello creato molto più realistico, certo, ma significa che c’è bisogno di più potenza di calcolo per renderizzare il poligono aggiunto.
Prendiamo come esempio il vecchio Spyro con la Reignited Trilogy. Secondo GamingBolt, il primo Spyro utilizzava circa 5.000 poligoni per creare l’intera mappa. Mentre il nuovo titolo probabilmente ne avrà poco più di 60.000. Quindi siamo passati da poco meno di 10.000 poligoni per renderizzare intere scene ad aver bisogno di sei volte tanto per renderizzare un solo personaggio.
Texture
Continuando con l’esempio di Spyro, l’originale era in una bassissima risoluzione per quanto riguarda le texture. Qualche volta i muri erano di un solo colore. L’aumento della qualità delle texture ovviamente significa aver bisogno di dover calcolare la posizione di ogni singolo pixel. E non solo, la macchina deve renderizzare i pixel per ogni frame renderizzato.
Sistema di particellari
La fisica: luce, polvere, esplosioni, tutto questo ha bisogno di molta potenza. Immagina l’esplosione di un gioco moderno comparato con uno sprite 2D. Quest’ultimo non ha bisogno di un computer ultra potente per poter essere renderizzato a schermo. Mentre adesso considera le esplosioni moderne con centinaia se non migliaia di particelle che devono essere calcolate per essere in una certa posizione così da apparire bene a schermo. Ecco l’esempio concreto:
Ogni luce, fumo o scintilla ha bisogno di potenza. Ma c’è da considerare anche il sistema di luci e il realismo. Tutto questo significa più matematica per il processore e scheda grafica. Probabilmente il fumo presente nell’immagine a destra ha bisogno di più potenza dell’intero render della scena a sinistra. Chiaramente queste sono semplificazioni di un argomento molto più complesso, ma dovrebbero comunque darti un’idea di cosa ci sia “dietro le quinte” del tuo gioco preferito.