Lo studio ha raggiunto un traguardo tecnico trasferendo l'estetica low-poly di Deep Rock Galactic a una prospettiva dall'alto, mantenendo l'essenza del franchise. La chiave risiede in un flusso di lavoro efficiente tra Blender e Unity che consente di gestire centinaia di nemici simultaneamente senza sacrificare gli effetti di illuminazione vulcanica né la lucentezza caratteristica dei cristalli. Questo articolo analizza le tecniche di ottimizzazione e gli shader che rendono possibile questo dispiegamento visivo.
Gestione delle folle e LOD dinamici 🎮
Per gestire centinaia di nemici sullo schermo, il team implementa un sistema di Livelli di Dettaglio (LOD) progressivi da Blender. Gli asset low-poly vengono esportati con tre varianti di poligonazione, attivandosi in base alla distanza dalla telecamera dall'alto. In Unity, si utilizza il sistema di GPU Instancing per disegnare copie multiple dello stesso nemico con una singola chiamata di disegno. Gli shader personalizzati ottimizzano l'illuminazione vulcanica tramite texture di emissione precalcolate, evitando calcoli dinamici della luce su ogni unità. I cristalli brillanti usano uno shader di rifrazione semplificato che simula i riflessi senza necessità di raytracing, mantenendo le prestazioni stabili anche con 300 vermi sullo schermo.
L'equilibrio tra stile e prestazioni ⚖️
La decisione di mantenere il low-poly non è stata solo estetica, ma strategica per le prestazioni. Riducendo il numero di vertici per nemico, il motore Unity può dedicare più risorse al sistema di particelle che simula la lava e le esplosioni. L'uso di atlas di texture da Blender minimizza i cambi di materiale in fase di esecuzione. Questo approccio dimostra che uno stile artistico coerente può essere il miglior strumento di ottimizzazione, permettendo ai giochi indipendenti di competere visivamente senza necessità di hardware di fascia alta.
Come sono riusciti a mantenere l'identità visiva low-poly di Deep Rock Galactic adattando i modelli di Blender a una prospettiva dall'alto senza perdere dettaglio né prestazioni in Unity?
(PS: ottimizzare per mobile è come cercare di infilare un elefante in una Mini Cooper)