Durante il processo di sviluppo di un videogioco, il team al lavoro deve prendere molte decisioni prima di lanciarsi nello sviluppo vero e proprio. Tra queste figura la scelta dell’hardware o piattaforma su cui il gioco verrà pubblicato e sulla quale il gioco dovrà girare rispettando tutta una serie di parametri. Ottimizzare un videogioco, infatti, è l’atto di apportare modifiche al codice sorgente e agli asset per assicurarsi che funzioni bene sui dispositivi su cui è destinato a essere riprodotto.
Attraverso il processo dell’ottimizzazione, le prestazioni di un videogioco vengono migliorate per garantire un’esperienza visiva coinvolgente e un gameplay fluido. Gli elementi che possono essere toccati dal processo di ottimizzazione, ad esempio, includono la risoluzione, il dettaglio grafico e il frame rate. Per il successo di un videogioco è importante che le prestazioni rispettino gli standard perché un brusco calo delle prestazioni in un punto critico di può minare pesantemente l’esperienza di gioco.
L’ottimizzazione, sebbene sia un processo che coinvolge soprattutto i programmatori, è in realtà un compito prezioso anche per designer e artisti che insieme ai programmatori lavorano per rendere l’esperienza di gioco più entusiasmante possibile.
Prima di ottimizzare un videogioco conosci meglio il tuo pubblico
Da aspirante sviluppatore di videogiochi, prima di tutto devi porti un obiettivo di ottimizzazione e per farlo devi prendere in considerazione le caratteristiche che avrà il tuo gioco. Qual è il genere? A che stile stai puntando? Quali sono i suoi elementi caratteristici?
Uno sparatutto competitivo, ad esempio, non ha bisogno di un dettaglio grafico esorbitante, ma necessiterà invece di stabilità e un basso input lag per garantire un’azione immediata e senza interruzioni. Buone prestazioni lato server garantiscono un gameplay scorrevole e corretto e un numero variabile di opzioni grafiche permettono al titolo di poter essere giocato su hardware molto diversi senza finire per penalizzare chi non ha dispositivi dotati delle ultimissime tecnologie.
Da ciò ne consegue che devi sempre considerare anche quale sarà il tuo pubblico di riferimento e che tipo di hardware queste persone potrebbero utilizzare. Ti stai rivolgendo alla fascia degli appassionati di PC con hardware di alto livello e ad alte prestazioni o la tua fascia demografica è composta da giocatori che utilizzano computer portatili con schede grafiche integrate?
Alcune piattaforme di distribuzione di giochi digitali, come Steam, mettono a disposizione i risultati dei propri sondaggi sull’hardware maggiormente utilizzato dai giocatori. Questi strumenti possono rappresentare un buon punto di partenza per farsi un’idea sui componenti più diffusi e gli hardware target.
Perché ottimizzare un videogioco è difficile?
Lo sviluppo di un videogioco è un processo molto articolato e complesso, pertanto anche l’ottimizzazione non è certamente un procedimento lineare e uguale per tutti. Abbiamo chiesto a Luca Guareschi, Core Trainer del corso Campus di Game Programming, di spiegarci quali possono essere le difficoltà che emergono durante lo sviluppo di un videogioco e che finiscono per minarne le performance:
Tutto può arrivare a minare le performance. Tutto il team cerca di creare qualcosa di memorabile, meccaniche articolate, scene spettacolari, effetti mozzafiato, ma ogni cosa richiede attenzione, studio e compromessi perché sia di effetto ma performante. Magari un designer chiede di creare un viaggio rapido immediato tra due punti della mappa, ma questo vorrebbe dire scaricare dalla memoria tutta la scena corrente e caricarne una nuova da zero. (Un’operazione che agli occhi di un giocatore sembra semplice, ma che è in realtà un’operazione molto costosa in termini di consumo di risorse). Oppure un artista vuole un post-processing molto cinematografico ma non tiene conto del budget di tempo di calcolo a disposizione.
Non esiste la ricetta per il gioco ottimizzato alla perfezione. Diciamo che, di solito (non sempre), il collo di bottiglia è il lato grafico, molto pesante per quelli che sono gli standard qualitativi odierni. In questo ambito ci sono tante “best practices” come ad esempio i LoD (o il livello di dettaglio), ossia la creazione dello stesso oggetto in più formati, progressivamente più leggeri e meno definiti, da utilizzare in funzione della necessità di dettaglio.
Un oggetto molto lontano non verrebbe apprezzato nel suo dettaglio massimo o a volte non verrebbe notato affatto. Gli sviluppatori di videogiochi prendono quindi queste diverse versioni dei modelli realizzate dagli artisti 3D e decidono quale far visualizzare in base alla distanza dell’oggetto dal punto di vista del giocatore. In linea di massima, se il giocatore non può vedere un oggetto o un particolare dettaglio, allora il computer non ha necessità di calcolarlo.
I modelli, ci spiega Guareschi, vengono anche creati per contesto, magari 5 o 6 oggetti che risiedono nello stesso spazio condividono lo stesso texture set, aprendo alla possibilità di ridurre gli scambi CPU-GPU e quindi velocizzando il render. Gli shaders vengono scritti con l’ottica di ridurre la quantità di textures necessarie, pacchettizzando più informazioni possibili nei canali disponibili.
E poi si arriva al codice. Qui ci sono ancora meno “ricette universali”, si cerca di sfruttare il più possibile il multi-threading, di delegare del calcolo ai tanti processori della GPU, si cerca di scrivere codice tenendo a mente come funziona l’hardware, minimizzando le situazioni in cui la macchina deve fare operazioni costose, ma in generale l’esperienza e le conoscenze maturate tra studi e carriera portano a scrivere e soprattutto pensare il codice in modo efficiente, prendendo percorsi logici diretti ed efficaci invece di girare intorno ai problemi come magari si fa da hobbisti o nei primi anni in cui si inizia a lavorare.
Una volta che le modifiche sono state effettuate, bisogna verificare se hanno avuto un impatto positivo sulle prestazioni del gioco e in che misura. In queste occasioni, il team di QA può intervenire e, collaborando con gli ingegneri e programmatori dello studio, valutare se l’esperienza di gioco è migliorata o se ci sono ancora passi da compiere prima di pubblicare il gioco o rilasciare patch correttive.
Vuoi diventare Game Programmer?
Muovi i primi passi nell’entusiasmante mondo della programmazione di videogiochi e sblocca infinite possibilità nella creazione di esperienze virtuali coinvolgenti. Entra nel regno del codice e degli algoritmi mentre dai vita a interi mondi di gioco, gameplay sempre più avvincenti e migliori l’esperienza affinché un vasto pubblico di giocatori possa lasciarsi trasportare dalle tue creazioni. Se sogni di diventare uno sviluppatore di videogiochi, scopri il corso di Game Programming in presenza, presso la sede di Milano..