Qualcuno di voi ha giocato DOOM quando fu rilasciato nel 1993? Io no, ancora non ero nato (sono del 1995). In ogni caso, ho sempre visto vari riferimenti a DOOM, ma non mi ero mai preso del tempo per approfondirlo. In questi ultimi giorni però le cose stanno cambiando e sto leggendo tanto, e dico tanto, di interessante.
Penso proprio di portare una serie di approfondimento su DOOM, proprio perché qui non si sta parlando “solo” di un videogioco, ma di come conoscenze informatiche e algoritmiche possono essere utilizzate per risolvere problemi anche e specialmente nel contesto dei videogiochi.
Alcune tematiche di interesse da approfondire:
-
La scelta di id software (la software house dietro DOOM), di rilasciare open-source il sorgente di un gioco di successo dopo solo 3 anni dalla release. La release originale è stata portata su GitHub ed è disponibile qui: GitHub - id-Software/DOOM: DOOM Open Source Release
-
La timeline di sviluppo del gioco ed il team dietro. John Carmack, John Romero, e tutti gli altri di id software ed il modo in cui approcciavano i problemi.
-
L’approccio al marketing, che includeva aspetti di shareware, in cui il primo episodio era stato distribuito gratis per tutti al fine di aumentare la visibilità del gioco. Strategie non-ovvie che storicamente hanno avuto successo.
-
La scelta di sviluppare la game engine in modo da essere multi-platform fin dall’inizio, ed il modo in cui è stato ottenuto questo, proprio a livello di build-system, compilazione & linking. Non a caso DOOM è stato portato su tantissime piattaforme diverse, anche le più assurde. Perché il codice era stato sviluppato fin dall’inizio per questo.
-
La scelta di avere un solo file per gestire tutti gli asset del gioco. Il famoso formato
WAD
(Where’s All the Data?). Un approccio che ha aiutato non poco il modding. -
Il lavoro di Carmack per rendere più efficiente la renderizzazione adottando l’algoritmo di Binary Space Partitioning (BSP) alle varie mappe per calcolare strutture dati efficienti che venivano poi lette ed utilizzate dal renderer.
Questi sono veramente pochissimi punti, ma fanno un po’ capire la ricchezza di questo progetto, che ancora tanti anni dopo sembra continuare a dare. Il codice sorgente sono “solo” 30k LoC in C. Questo significa che può essere compreso. Che qui la complessità ancora non è troppo elevata.
A tale fine, una risorsa fondamentale è leggere il libro Game Engine Black Book DOOM
di Fabien Sanglard
, contiene un sacco di spunti interessanti, anche rispetto alle macchine su cui hanno sviluppato il gioco (la famosa NeXT
di Steve Jobs
).
Qual è la vostra esperienza con DOOM?