Tutti gli articoli
Tutorial · 7 min read

Far girare il tuo gioco su una patata: ottimizzare gli ambienti per PC di fascia bassa e Steam Deck

Un playbook pratico per centrare un budget di frame basso senza sventrare la tua arte, con uno sguardo a dove va davvero il tempo di frame, overdraw e fogliame, draw call e instancing, LOD e distanze di cull, e il metodo della camera fissa per trovare le regressioni reali.

Slow tropical river between dense green banks, with clouds mirrored on the surface

Un'enorme fetta di giocatori è su hardware modesto (laptop, portatili come lo Steam Deck, GPU più vecchie) e un ambiente che gira solo su una macchina di fascia alta li taglia fuori. La buona notizia: la maggior parte della performance d'ambiente si perde in pochi posti prevedibili (overdraw, draw call, fogliame denso, texture sovradimensionate) e si recupera con poche abitudini disciplinate. Questo è un playbook pratico per centrare un budget di frame basso senza sventrare la tua arte, più il metodo della camera fissa per catturare le regressioni prima che partano.

Una foresta densa gremita di alberi e sottobosco sovrapposti Questo è il tipo di scena più costoso da far girare: strati di foglie trasparenti, migliaia di istanze, overdraw pesante. È anche dove vivono le vittorie più grandi e facili una volta che sai dove va il tempo di frame.

Fissa prima un budget, in millisecondi

Scegli un tempo di frame target sul tuo hardware supportato più debole (16,6 ms per 60 fps, 33,3 ms per 30) e trattalo come un limite duro. "Ottimizzare dopo" significa "ricostruire dopo"; budgettare in anticipo è molto più economico.

L'ottimizzazione senza un numero è solo vibes. Decidi il frame che punti sul tuo hardware pavimento (lo Steam Deck, un laptop medio, qualunque sia la tua spec minima) e convertilo in millisecondi, perché i millisecondi si sommano e le percentuali mentono. Poi tieni ogni scena a quello mentre costruisci, non alla fine. I team che consegnano fluido su fascia bassa non ottimizzano più duro; semplicemente non lasciano mai che una scena sfondi il budget in primo luogo, il che costa una frazione rispetto a riprendersi la performance dopo che l'arte è finita e tutto dipende da essa.

Sappi dove va il tempo

Il tempo di frame d'ambiente è di solito mangiato da overdraw (fogliame trasparente), troppe draw call (oggetti non batchati), texture sovradimensionate (banda di memoria), e illuminazione/ombre costose. Profila per trovare il TUO collo di bottiglia prima di ottimizzare alla cieca.

Indovinare le ottimizzazioni spreca giorni. Apri un profiler, trova se sei CPU-bound (di solito draw call) o GPU-bound (di solito overdraw, shading o banda), e attacca il vero collo di bottiglia. Detto ciò, gli ambienti falliscono in modi prevedibili, ed è quasi sempre uno di: overdraw da fogliame trasparente a strati; draw call da migliaia di oggetti non istanziati; memoria/banda di texture da texture sovradimensionate o troppe; e costo di illuminazione/ombra da troppe luci dinamiche o shadow map ad alta risoluzione. Il resto di questo playbook li percorre in ordine di impatto usuale.

Fogliame e overdraw: il solito cattivo

Le card di fogliame trasparente si sovrappongono e ri-shadano gli stessi pixel molte volte. Questo è overdraw, ed è il killer numero uno della fascia bassa. Riduci la sovrapposizione delle card di foglia, usa LOD aggressivi, e culla duro il fogliame lontano.

La vegetazione densa è dove muoiono la maggior parte dei budget di frame di fascia bassa, perché ogni card di foglia semitrasparente costringe la GPU a shadare pixel che poi ridisegnerà sopra di nuovo, a volte dieci volte o più per pixel in una chioma folta. Le correzioni: usa card di foglia più strette con meno area trasparente sprecata, cala velocemente a LOD più economici man mano che il fogliame si ritira, e imposta distanze di cull dure così che erba e cespugli lontani smettano semplicemente di disegnare. Su un portatile, la differenza tra "erba fino all'orizzonte" e "erba cullata a una distanza sensata" può essere tutta la differenza tra 25 e 40 fps. Bake il fogliame in istanze native così la GPU possa batcharlo, e lascia che l'instancing dell'engine faccia il lavoro pesante.

Draw call e instancing

Ogni oggetto unico inviato separatamente è una draw call, e migliaia di esse bloccano la CPU. Istanzia mesh ripetuti così che centinaia di copie costino una call; unisci il clutter statico dove ha senso.

Se sei CPU-bound, le draw call sono di solito il perché. Ogni cosa distinta che chiedi all'engine di renderizzare porta overhead, e una scena piazzata a mano con mille rocce e cespugli individuali annega la CPU nel costo di invio. L'instancing è la cura: mesh ripetuti disegnati come istanze collassano centinaia di copie in una singola call, che è esattamente perché gli strumenti di scatter che bakano in istanze native dell'engine contano per la performance: lo scatter che sembra mille piante costa come una manciata. Dove l'instancing non si applica, unire piccolo clutter statico in mesh combinati taglia anche il conteggio delle call. Questo è un posto dove un workflow come quello di Numivo (dipingere densità, poi bake in mesh istanziati semplici) paga direttamente su hardware debole, perché l'output è la cosa economica che la GPU vuole.

Un lago calmo e semplice sotto un cielo limpido: economico da renderizzare Non ogni scena deve essere massimamente densa. Gli spazi quieti e aperti costano quasi nulla e danno sia all'hardware che al giocatore un riposo. Cadenzare la tua densità è di per sé un'ottimizzazione.

LOD, distanze di cull e dimensioni delle texture

Dai a ogni mesh significativo dei LOD così che le copie lontane siano economiche, imposta distanze di cull così che oggetti minuscoli-a-schermo smettano di disegnare, e limita la risoluzione texture a ciò che la camera risolve a distanza. Questi tre recuperano molto con poco sforzo.

Tre abitudini senza glamour portano il grosso del budget rimanente. LOD: i mesh lontani dovrebbero passare a versioni a minor poligono, perché il dettaglio pieno su un albero di 20 pixel è sprecato. Distanze di cull: qualsiasi cosa troppo piccola a schermo da notare dovrebbe smettere di renderizzare del tutto (piccoli prop, ciottoli, erba fine), regolata per tipo di oggetto. Dimensioni delle texture: limita la risoluzione a ciò che è realmente risolvibile alla distanza del giocatore (vedi la logica di densità di texel: le cose lontane hanno bisogno di molti meno texel), perché le texture sovradimensionate bruciano banda di memoria che le GPU di fascia bassa non possono permettersi. Nessuno di questi danneggia il look quando regolato bene; semplicemente ti fermano dal pagare per dettaglio che nessuno vede.

Trova le regressioni con camere fisse

Definisci alcune "camere di budget" (la tua vista peggiore, lo spazio di combattimento più denso, l'interno più affollato) e controlla il loro tempo di frame a ogni build. I flythrough casuali nascondono le regressioni; le stesse viste brutali ogni volta le espongono.

La performance marcisce in silenzio man mano che si aggiunge contenuto, e non la catturerai vagando per il livello casualmente. Invece, fissa la tua manciata di viste peggiori (il belvedere di foresta densa, il mercato affollato, il combattimento carico di effetti) e misura esattamente quelle, a ogni build, contro il budget. Quando un numero diventa rosso, sai che un cambiamento recente l'ha causato, e all'incirca dove. Questa è la differenza tra un team che scopre una crisi di performance alla fine e uno che sistema una regressione di 2 ms il giorno in cui appare. Su target di fascia bassa, fai girare una di quelle camere sullo Steam Deck reale o sulla macchina di spec minima, non solo una stima da editor.

Numeri di campo che vale la pena rubare

  • Budget di frame: 16,6 ms (60 fps) / 33,3 ms (30 fps) (da impostare sul tuo hardware pavimento)
  • Il solito killer della fascia bassa: overdraw del fogliame; card più strette, LOD veloci, cull duro
  • Mesh ripetuti → istanze: centinaia di copie per una draw call
  • Limita la dimensione texture al dettaglio risolvibile dalla camera: il lontano ha bisogno di molti meno texel
  • Cattura le regressioni con camere di budget fisse, misurate a ogni build

Mini-FAQ

Devo scegliere tra bello e fascia bassa? Meno di quanto pensi. La maggior parte del costo di fascia bassa è spreco (overdraw, call non batchate, texture sovradimensionate), non qualità visibile. Taglia lo spreco e l'arte sopravvive; i giocatori su hardware debole raramente sentono la mancanza del dettaglio per cui pagavi ma che non potevano vedere.

L'illuminazione dinamica è off-limits sullo Steam Deck? Non off-limits, ma budgettata. Limita il numero di luci dinamiche e proiettori d'ombra, appoggiati sull'illuminazione baked dove la scena è statica, e riserva il costo dinamico per dove conta. È una voce di budget, non un divieto.

Quale singolo cambiamento aiuta di più su un portatile? Di solito domare il fogliame: card di foglia più strette, LOD aggressivi e distanze di cull dure su erba e cespugli. L'overdraw è il collo di bottiglia più comune su portatile, e la vegetazione è dove vive l'overdraw.

Quanto presto dovrei testare sull'hardware target? Dal primo vertical slice. Una stima da editor su una macchina di sviluppo potente nasconde esattamente i problemi che il portatile avrà. Porta una build sul dispositivo di spec minima reale presto e tienilo nel loop.

Girare su una patata non riguarda rendere brutto il tuo gioco: riguarda non pagare per dettaglio che i giocatori non possono vedere. Budgetta in millisecondi, uccidi l'overdraw, istanzia le ripetizioni, culla l'invisibile, e osserva le tue camere peggiori a ogni build, e il tuo ambiente sarà splendido e girerà per l'enorme pubblico che non è su una macchina di fascia alta.