Voxel Doom introduce i nemici 3D nello shooter classico di id Software, ed è stupendo
Aggiungere una nuova dimensione a un gioco rispettando lo stile artistico originale.
Dopo 29 anni il classico di id Software, Doom, è finalmente stato “voxelizzato”. La sua grafica 2D, basata su sprite, ha ricevuto una dimensione aggiuntiva grazie al modder Daniel Peterson (aka Cheelio), fornendoci una scusa più che buona per tornare su uno dei più grandi titoli della storia dei videogiochi.
In tempi recenti i porting dal codice source sono divenuti il metodo preferito per giocare questo titolo su hardware moderni e una delle feature aggiuntive che vanno ben oltre il potenziamento grafico è stata certamente il supporto al mouse per spostare la visuale. In effetti Doom, per come è stato concepito in via originale, era un gioco 3D su un piano 2D in cui era impossibile guardare su o giù.
Infatti, se sparavate contro nemici che erano posti su un piano rialzato, era il gioco a scegliere se mirare verso l’alto o di fronte a voi. Questo può risultare decisamente frustrante per chi sia abituato agli shooter in prima persona moderni, ma può risultare fastidioso anche nello stesso contesto di Doom, visto che il sistema di auto-aim spesso risulta impreciso, specialmente quando ci sono nemici in alto e in basso sullo stesso asse verticale.
Questa nuova mod voxelizzata non solo aggiunge un look 3D agli sprite 2D, ma aiuta anche a ristabilire la mira moderna tramite mouse che è stata implementata ufficialmente solo nei giochi successivi della serie Doom. Se state guardando verso un nemico a cui avete intenzione di sparare, avrete una versione prospettica corretta del nemico che state fronteggiando.
Oltre a ciò, il senso di “credibilità” complessiva è incrementato visto che girare attorno ai nemici non li farà vedere come cartonati piatti: ora i nemici hanno un vero aspetto tridimensionale. Questo si applica però solamente agli sprite che stanno di fronte alla telecamera del gioco originale, quindi oggetti come i medkit non ruotano più per far fronte all’inquadratura ma sono invece dotati di lati superiori, inferiori e laterali come veri oggetti 3D. E gli sprite dei nemici? Questi hanno richiesto un lavoro più profondo.
Com'è facile immaginare, rendere tutto ciò realtà ha richiesto un bel po’ di lavoro creativo. La versione originale di Doom non era progettata per mostrare nemici e oggetti dai lati, dall’alto, dal basso o da dietro, quindi Daniel Peterson ha dovuto ingegnarsi per capire come queste figure potessero essere renderizzate in 3D in maniera credibile, senza stravolgere la visione artistica originale del gioco.
Il risultato finale è che gli oggetti sembrano realmente appartenenti a quel mondo pixellato, ma lasciando lo spazio per ulteriori abbellimenti: molti oggetti, armi incluse, ruotano realmente come in uno shooter 3D, cosa che non sarebbe mai successa con gli sprite piatti a due dimensioni.
La situazione è però diversa coi nemici, visto che Doom utilizzava diversi sprite per farceli vedere da diverse angolazioni: quando girate attorno ad essi potete notare che cambia la prospettiva, ma la transizione di orientamento varia solamente ogni 45° circa e a quel punto viene caricato il nuovo sprite. Peterson qui ha avuto un’idea brillante: i modelli voxel sono realizzati sui vecchi sprite quindi, una volta che vi trovate all’angolazione giusta per cui lo sprite cambia orientamento, il modello voxel diventa identico al vecchio stile. Invece, girando attorno al nemico non vedrete più quelle macchinose rotazioni. Ovviamente i nemici appaiono differenti ad angolazioni non divisibili per 45° ma questo è il punto cardine dei voxel.
Far funzionare tutto come si deve non è stata una passeggiata. Nash Muhandes, che ha aiutato Daniel Peterson a renderizzare queste voxel mods in GZDoom, mi ha fornito alcuni dettagli su come funziona. Voxel Doom richiede il porting souce GZDoom, che utilizza un loader voxel preso in prestito dal Build Engine e sotto licenza del suo creatore Ken Silverman. Vista la provenienza, i voxel assomigliano molto a quelli che avete visto in giochi realizzati sul Build Engine, come ad esempio Blood, quindi un risultato eccellente in poche parole.
Da qui i voxel possono essere renderizzati in due modi, a vostra scelta. Il render hardware utilizza OpenGL e la vostra GPU, con le geometrie voxel che vengono convertite in un mesh di triangoli rasterizzati sulla GPU e disegnati nativamente come geometrie 3D, con una tecnica molto basilare per rimuovere le superfici nascoste. Il secondo metodo funziona via software, ricostruendo i modelli voxel in tempo reale proprio come il mondo di GZDoom costruirebbe gli sprite, quindi utilizzando un rendering span-based.
Le differenze sono interessanti: se volete che il gioco sia grossolano come il Doom originale, utilizzate il rendering software. Ma se volete che giri il più velocemente possibile ad alte risoluzioni con MSAA e senza distorsione quando si utilizza il mouse per orientarsi nello spazio, allora dovete selezionare il rendering via hardware. In generale tutte le CPU e GPU moderne dovrebbero far girare questa modo molto bene, ma state attenti all’opzione MSAA in GZDoom. Rende sicuramente il gioco più nitido ma, quando si alza il campionamento fino al massimo di 32x, può causare problemi di fluidità dei fotogrammi persino su una RTX 3090. Quindi, non esagerate.
In definitiva questa mod è basata su un’idea semplice e fa quel che promette, ma i risultati in-game sono incredibili. Anche se dall’esterno potrà sembrare una mod da poco, risulta evidente dalle chiacchierate con Daniel Peterson e Nash Muhandes che il processo di creazione e di accostamento a GZDoom non è stato affatto semplice.
Siamo però grati a questi programmatori per l’eccellente lavoro svolto per la comunità e sospettiamo che anche voi siate interessati all’evoluzione di questo titanico gioco. Potete trovare la mod qui e provarla sul vostro PC!