L'evoluzione delle API
di
L'universo dei sistemi operativi indirizzati al gaming su Pc ha visto, negli anni, una schiacciante predominanza di sistemi Windows e un progressivo spostamento degli equilibri da opengl (open glide inizialmente) al formato DX. Analizzeremo in questo articolo gli albori e lo sviluppo del software che sostiene la resa dei moderni videogiochi, non tralasciando uno sguardo al mondo Linux e al nascente mercato DX10.
L'alba dell'umanità (umanità tecnologica, come sapientemente narrato da 2001 Odissea nello spazio)
Per molto tempo il gaming Pc ha vissuto sul software l'antagonismo con Amiga di Commodore, con eterne e logoranti lotte tra coloro che preferivano l'uno o l'altro campo, che vide nei Pc-Ibm compatibili i vincitori in longevità per una più marcata flessibilità nell'upgrade.
Ai tempi tutti i personal computer disponevano di API immature per la grafica dei videogiochi, che venivano adattati via software sfruttando sostanzialmente CPU e RAM, oltre che alcune caratteristiche prima di DOS (senza DX) e poi di Windows 95/98 (da DX 2.0 in poi). Vi furono dei primi esempi di schede grafiche specifiche con Matrox Mistique e Millenium, o la Creative 3D Blaster, ma nulla lontanamente paragonabile alla rivoluzione che sarebbe giunta poco dopo.
E' nel 1996 che, per la prima volta nel mondo dei videogiochi Pc, la struttura prevalente software delle nuove architetture Pentium e MMX, slega definitivamente i cardini da alcuni vincoli ormai inadeguati al supporto dei nuovi titoli. 3Dfx introduce sul mercato un'architettura denominata Voodoo supportata da librerie proprietarie Glide, derivate dalle professionali Opengl (una semplificazione di quest'ultime create per sfruttare nativamente l'hw). E' subito rivoluzione, titoli privi di qualsiasi effetto sulle texture acquistano un convincente bilinear, trilinear con 2 passate (dell'unica TMU, texture mapping unit, presente), la risoluzione ferma a 640x480 era per i tempi elevatissima e non faceva altro che promuovere tale soluzione con un notevole e meritato successo di mercato.
Il binomio, quindi, hardware e software aveva creato la prima soluzione dedicata per la grafica 3D Pc, distaccando in modo evidente qualsiasi altra soluzione.
E' in questo periodo che nascono patch a titoli già esistenti che, oltre a migliorarne l'aspetto, giovano notevolmente sulla fluidità: se il primo Quake, prima, a 20 Fps era ritenuto giocabile, nel 1996 con una scheda video voodoo 1 e un piccolo eseguibile poteva cambiare letteralmente faccia e girare a 50 Fps.
La concorrenza rispose con soluzioni inferiori come Nvidia Riva 128, seguito poi da ZX (dopo aver rischiato il fallimento con NV1, che processava NURBS quadrati al posto di triangoli), che nonostante tutto ottenne un discreto successo, creando la prima contrapposizione di API (applicazione software atte a far funzionare l'hardware): DX da una parte, Glide dall'altra.
E' però con Voodoo 2 e il lancio dello SLI che 3Dfx, almeno in un primo momento (1997), rischia di monopolizzare il mercato, se non fosse che la pronta risposta di Nvidia riequilibrò il quadro della situazione.
Si parla di un periodo in cui vi era molta diffidenza a cambiare marca anche per non perdere la compatibilità con i titoli Glide già acquistati, pur esistendo alcuni emulatori software in grado di arginare, almeno in parte, il problema.
E' con Riva TNT che, oltre alle aule di tribunale per plagio di alcuni brevetti 3Dfx, si aprono i veri cancelli del confronto: Nvidia presentò un progetto limitato in frequenza (solo 90 Mhz) ma dalle caratteristiche innovative, compatibile sia Dx 6.0 che Open-gl, ovviamente senza supporto Glide, ma con la possibilità di processare nativamente texture a 32 bit, allocate nei suoi 16 Mb onboard senza limiti hw per quanto riguarda la risoluzione.
3Dfx dall'altra parte vantava solo 8 Mb (o 12 Mb) limitata a 800x600, 16 Bit e texture con risoluzione massima di 256x256, solo con due schede in SLI era accessibile la risoluzione di 1024x768 (a causa del frame buffer che saliva a 8 Mb in questo caso). Queste scelte progettuali potrebbero far pensare a una Nvidia Riva TNT senz'altro migliore, ma concretamente Voodoo era spesso, se non sempre, più veloce e supportata: certo i fruitori di tali prodotti non avevano la stessa resa visiva, con colori un po' slavati e texture leggermente meno definite, ma potevano giocare a tutto e vantare un supporto nativo per Glide. Il software, e precisamente un certo Unreal e Quake 2 (con tutti i derivati) non supportavano DX spostando l'ago della bilancia verso le soluzioni 3Dfx.
Con l'arrivo, però, di TNT2, una versione dalle frequenze più alte di TNT, con l'opaca relativa risposta 3Dfx e con una Matrox concentrata su un poco competitivo G200, l'industria videoludica iniziò timidamente a spostare il supporto da Glide a Open-gl, con un maggior numero di titoli DX.
Più che le architetture Hw fu paradossalmente il software a determinare l'inversione di tendenza.
Si affacciava, inoltre, sul mercato, alla fine del 1999, la prima scheda a denominazione Geforce a integrare on-chip la gestione di trasformazione e illuminazione, due fasi particolarmente onerose del rendering.
Matrox, inoltre, rialzò il capo con G400, forse tutt'ora il miglior processore grafico sviluppato dalla casa canadese, che introduceva per la prima volta il Bump-mapping e mostrava qualità di resa del colore migliori della concorrenza.
3Dfx aveva invece deciso una via piuttosto conservativa, presentando un Voodoo3 estremamente focalizzata sulla velocità e migliorata solo in parte nella qualità, con soli 16 Mb di memoria on-board e la solita forza nel triplice supporto (open-gl, glide e Dx).
C'è da dire che il noto limite di 256x256 nelle dimensioni delle texture non giustificava un computo in Mb superiore, potendo gestire tranquillamente più di 70 elementi texturizzati contemporaneamente.
Ai tempi, parliamo del 1999, il banco di prova fu Quake 3 e Unreal Tournament, anche in questo caso, soprattutto per Unreal, il miglior supporto software fece la differenza, oltre che, ovviamente, le API specifiche di cui 3Dfx disponeva.
Voodoo 3 fu la scheda maggiormente venduta della storia del produttore americano, ma nonostante questo, poco oculate acquisizioni, ridussero molto l'utile operativo, rendendo vitale il successo di VSA100, Voodoo 5.
Già durante il 1999 3Dfx proclamò il suo supporto nativo per DX e l'elesse come API di riferimento per i suoi futuri driver, era un segno dei tempi, accelerato ulteriormente dall'acquisizione operata da Nvidia durante l'anno 2000.
Glide da allora scomparve definitivamente (l'ultimo importante titolo fu Unreal Tournament) e da DX 7.0 in poi si è assistito a un progressivo assottigliamento dei titoli open-gl a favore delle API Microsoft, dovuto anche al grosso contributo di ATI, nuovo competitor di Nvidia.
Ad oggi, 2006, anche gli ultimi baluardi, ID e Bioware, hanno spostato i loro engine dei futuri titoli successori di Doom3 e Neverwinter Nights su DX 9/10.
table_img_3456
Cedega, quando Open-gl emula Dx
Alla luce di quanto esposto è chiaro come, proprio per la fisionomia di mercato e il suo sviluppo, una buona strada percorribile per una soluzione Desktop Linux che non vuole rinunciare al gaming sia quella di emulare un'API come Dx con un programma specifico.
E' questo il caso di Cedega che, emulando la struttura sia di Dx e dei file/cartelle di Windows, permette di riprodurre in finestra un buon numero di titoli per sistema operativo Microsoft.
La sua installazione è relativamente semplice (si effettua comunque da terminale) così come la gestione dei giochi si perpetua tramite delle utili finestre, pagando dazio unicamente a livello di costi economici: infatti, per poter utilizzare questo programma proprietario, si dovranno spendere 5 euro al mese per un minimo di 3 mesi.
L'emulazione tramite Open-gl 2.0 delle API Dx potrà arrivare al massimo a riprodurre strutture native Dx 8.1, escludendo quindi effetti tipici di Dx 9 e shaders model 2.0.
Ovviamente, essendo questo un traduttore che non esegue nativamente codice si pagherà un certo dazio di compatibilità e prestazione, mediamente inferiori di un 30-50% rispetto a Windows XP.
Inoltre, a causa della minor ottimizzazione dei driver proprietari ATI rispetto a quelli Nvidia, è sconsigliabile il suo utilizzo con schede video Radon.
Linux, quando Open-gl diventa protagonista
Ma Linux, oltre a poter tradurre software altrui, può altresì renderizzare tramite librerie grafiche proprie e open titoli specificatamente pensati per la sua architettura, ricordiamo più vecchia sia di Windows che del Dos (parliamo del suo core Unix-like).
E' il caso di tutti quei produttori, con ID Software in testa, che sviluppano e hanno sviluppato in Open-gl che, dopo l'uscita del software retail pensato per Microsoft, decidono di rendere disponibili client specifici Linux.
Giochi del calibro di Neverwinter Nights, Doom 3 (e relative espansioni), Quake 4, Unreal Tournament 2004 e, tra breve, Serious Sam 2, girano nativamente (e bene) su molte distribuzioni Linux con Kernel almeno 2.4 e un sistema con driver proprietario Nvidia (meglio) o Ati (peggio).
Ovviamente, in un confronto con Windows mancheranno in molti casi specifiche ottimizzazioni che faranno perdere al massimo una decina di frame, ma si può tranquillamente affermare che a parità di configurazione girano sostanzialmente in maniera non dissimile.
Sono presenti, inoltre, conversioni a pagamento distribuite dalla LGP (alla cui home page si trovano anche alcuni demo) di giochi quali Cold War, X2 e Gorky 17, certo non prodotti nuovissimi ma che arricchiscono il panorama delle scelte.
Non ultimo il contributo di videogiochi open-source (spesso basati su motori ID) che pur mancando spesso volte di qualità apprezzabili, nascondono perle di giocabilità e stile.
Windows Vista, scorci futuri
Come molti di voi sapranno, presumibilmente questo fine anno o gennaio prossimo, Microsoft lancerà quel nuovo SO costato 9 miliardi di dollari che dovrebbe rivoluzionare, spingendo l'accelleratore sul lato qualitativo, l'esperienza Pc. Vista sarà nativo Dx10 e eseguirà tramite quest'API anche tutti i titoli Dx9, mentre in un primo momento si è pensato a un supporto Open-gl limitato tramite un cosiddetto Wrapper, ora sembra che sarà inserito nativamente nel nuovo sistema operativo.
Questo comporterà un possibile supporto futuro a quest'API, che un semplice emulatore avrebbe reso de facto inutilizzabile, con più libertà di scelta da parte dei programmatori. Non volgiamo, però, nasconderci dietro un dito dicendo che le caratteristiche di Dx10 sono effettivamente molto interessanti e se, anche John Carmack, progetterà i suoi motori prendendo come riferimento l'API Microsoft, vediamo ben poco spazio per un eventuale affermazione di Open-gl, lasciata più che altro per ragioni di compatibilità, riteniamo.
E' pur vero che un produttore che dispone di proprio software specifico offrirà sempre e comunque miglior supporto e facilità di utilizzo/upgrade a quest'ultimo e che storicamente i rapporti di potere delle API sono sempre andati verso una standardizzazione in un unico modello.
Conclusione
E' stata una lunga digressione la nostra, che ha toccato vari aspetti del Gaming "alternativo" a Windows, che pur presente da molti anni non ha mai saputo e potuto decollare, in parte dovuto a scelte temporali (Linux troppo immaturo nel 1996) in parte a scelte di mercato ormai consolidate. Purtroppo vari aspetti della stessa filosofia open-source frenano in un certo modo il mercato, oltre a numeri e fruibilità ancora non ottimali.
Troppe distribuzioni e varianti provocano una certa mancanza di basi avvertibile chiaramente nel momento in cui ci si scontra con i primi problemi, anche se supportati da un'ottima comunità. Con Vista lo scenario potrebbe variare ulteriormente, magari creando un secondo polo di sviluppatori specializzati in Open-gl, ma sinceramente, riteniamo sia un'ipotesi alquanto improbabile.
table_img_3789
L'alba dell'umanità (umanità tecnologica, come sapientemente narrato da 2001 Odissea nello spazio)
Per molto tempo il gaming Pc ha vissuto sul software l'antagonismo con Amiga di Commodore, con eterne e logoranti lotte tra coloro che preferivano l'uno o l'altro campo, che vide nei Pc-Ibm compatibili i vincitori in longevità per una più marcata flessibilità nell'upgrade.
Ai tempi tutti i personal computer disponevano di API immature per la grafica dei videogiochi, che venivano adattati via software sfruttando sostanzialmente CPU e RAM, oltre che alcune caratteristiche prima di DOS (senza DX) e poi di Windows 95/98 (da DX 2.0 in poi). Vi furono dei primi esempi di schede grafiche specifiche con Matrox Mistique e Millenium, o la Creative 3D Blaster, ma nulla lontanamente paragonabile alla rivoluzione che sarebbe giunta poco dopo.
E' nel 1996 che, per la prima volta nel mondo dei videogiochi Pc, la struttura prevalente software delle nuove architetture Pentium e MMX, slega definitivamente i cardini da alcuni vincoli ormai inadeguati al supporto dei nuovi titoli. 3Dfx introduce sul mercato un'architettura denominata Voodoo supportata da librerie proprietarie Glide, derivate dalle professionali Opengl (una semplificazione di quest'ultime create per sfruttare nativamente l'hw). E' subito rivoluzione, titoli privi di qualsiasi effetto sulle texture acquistano un convincente bilinear, trilinear con 2 passate (dell'unica TMU, texture mapping unit, presente), la risoluzione ferma a 640x480 era per i tempi elevatissima e non faceva altro che promuovere tale soluzione con un notevole e meritato successo di mercato.
Il binomio, quindi, hardware e software aveva creato la prima soluzione dedicata per la grafica 3D Pc, distaccando in modo evidente qualsiasi altra soluzione.
E' in questo periodo che nascono patch a titoli già esistenti che, oltre a migliorarne l'aspetto, giovano notevolmente sulla fluidità: se il primo Quake, prima, a 20 Fps era ritenuto giocabile, nel 1996 con una scheda video voodoo 1 e un piccolo eseguibile poteva cambiare letteralmente faccia e girare a 50 Fps.
La concorrenza rispose con soluzioni inferiori come Nvidia Riva 128, seguito poi da ZX (dopo aver rischiato il fallimento con NV1, che processava NURBS quadrati al posto di triangoli), che nonostante tutto ottenne un discreto successo, creando la prima contrapposizione di API (applicazione software atte a far funzionare l'hardware): DX da una parte, Glide dall'altra.
E' però con Voodoo 2 e il lancio dello SLI che 3Dfx, almeno in un primo momento (1997), rischia di monopolizzare il mercato, se non fosse che la pronta risposta di Nvidia riequilibrò il quadro della situazione.
Si parla di un periodo in cui vi era molta diffidenza a cambiare marca anche per non perdere la compatibilità con i titoli Glide già acquistati, pur esistendo alcuni emulatori software in grado di arginare, almeno in parte, il problema.
E' con Riva TNT che, oltre alle aule di tribunale per plagio di alcuni brevetti 3Dfx, si aprono i veri cancelli del confronto: Nvidia presentò un progetto limitato in frequenza (solo 90 Mhz) ma dalle caratteristiche innovative, compatibile sia Dx 6.0 che Open-gl, ovviamente senza supporto Glide, ma con la possibilità di processare nativamente texture a 32 bit, allocate nei suoi 16 Mb onboard senza limiti hw per quanto riguarda la risoluzione.
3Dfx dall'altra parte vantava solo 8 Mb (o 12 Mb) limitata a 800x600, 16 Bit e texture con risoluzione massima di 256x256, solo con due schede in SLI era accessibile la risoluzione di 1024x768 (a causa del frame buffer che saliva a 8 Mb in questo caso). Queste scelte progettuali potrebbero far pensare a una Nvidia Riva TNT senz'altro migliore, ma concretamente Voodoo era spesso, se non sempre, più veloce e supportata: certo i fruitori di tali prodotti non avevano la stessa resa visiva, con colori un po' slavati e texture leggermente meno definite, ma potevano giocare a tutto e vantare un supporto nativo per Glide. Il software, e precisamente un certo Unreal e Quake 2 (con tutti i derivati) non supportavano DX spostando l'ago della bilancia verso le soluzioni 3Dfx.
Con l'arrivo, però, di TNT2, una versione dalle frequenze più alte di TNT, con l'opaca relativa risposta 3Dfx e con una Matrox concentrata su un poco competitivo G200, l'industria videoludica iniziò timidamente a spostare il supporto da Glide a Open-gl, con un maggior numero di titoli DX.
Più che le architetture Hw fu paradossalmente il software a determinare l'inversione di tendenza.
Si affacciava, inoltre, sul mercato, alla fine del 1999, la prima scheda a denominazione Geforce a integrare on-chip la gestione di trasformazione e illuminazione, due fasi particolarmente onerose del rendering.
Matrox, inoltre, rialzò il capo con G400, forse tutt'ora il miglior processore grafico sviluppato dalla casa canadese, che introduceva per la prima volta il Bump-mapping e mostrava qualità di resa del colore migliori della concorrenza.
3Dfx aveva invece deciso una via piuttosto conservativa, presentando un Voodoo3 estremamente focalizzata sulla velocità e migliorata solo in parte nella qualità, con soli 16 Mb di memoria on-board e la solita forza nel triplice supporto (open-gl, glide e Dx).
C'è da dire che il noto limite di 256x256 nelle dimensioni delle texture non giustificava un computo in Mb superiore, potendo gestire tranquillamente più di 70 elementi texturizzati contemporaneamente.
Ai tempi, parliamo del 1999, il banco di prova fu Quake 3 e Unreal Tournament, anche in questo caso, soprattutto per Unreal, il miglior supporto software fece la differenza, oltre che, ovviamente, le API specifiche di cui 3Dfx disponeva.
Voodoo 3 fu la scheda maggiormente venduta della storia del produttore americano, ma nonostante questo, poco oculate acquisizioni, ridussero molto l'utile operativo, rendendo vitale il successo di VSA100, Voodoo 5.
Già durante il 1999 3Dfx proclamò il suo supporto nativo per DX e l'elesse come API di riferimento per i suoi futuri driver, era un segno dei tempi, accelerato ulteriormente dall'acquisizione operata da Nvidia durante l'anno 2000.
Glide da allora scomparve definitivamente (l'ultimo importante titolo fu Unreal Tournament) e da DX 7.0 in poi si è assistito a un progressivo assottigliamento dei titoli open-gl a favore delle API Microsoft, dovuto anche al grosso contributo di ATI, nuovo competitor di Nvidia.
Ad oggi, 2006, anche gli ultimi baluardi, ID e Bioware, hanno spostato i loro engine dei futuri titoli successori di Doom3 e Neverwinter Nights su DX 9/10.
table_img_3456
Cedega, quando Open-gl emula Dx
Alla luce di quanto esposto è chiaro come, proprio per la fisionomia di mercato e il suo sviluppo, una buona strada percorribile per una soluzione Desktop Linux che non vuole rinunciare al gaming sia quella di emulare un'API come Dx con un programma specifico.
E' questo il caso di Cedega che, emulando la struttura sia di Dx e dei file/cartelle di Windows, permette di riprodurre in finestra un buon numero di titoli per sistema operativo Microsoft.
La sua installazione è relativamente semplice (si effettua comunque da terminale) così come la gestione dei giochi si perpetua tramite delle utili finestre, pagando dazio unicamente a livello di costi economici: infatti, per poter utilizzare questo programma proprietario, si dovranno spendere 5 euro al mese per un minimo di 3 mesi.
L'emulazione tramite Open-gl 2.0 delle API Dx potrà arrivare al massimo a riprodurre strutture native Dx 8.1, escludendo quindi effetti tipici di Dx 9 e shaders model 2.0.
Ovviamente, essendo questo un traduttore che non esegue nativamente codice si pagherà un certo dazio di compatibilità e prestazione, mediamente inferiori di un 30-50% rispetto a Windows XP.
Inoltre, a causa della minor ottimizzazione dei driver proprietari ATI rispetto a quelli Nvidia, è sconsigliabile il suo utilizzo con schede video Radon.
Linux, quando Open-gl diventa protagonista
Ma Linux, oltre a poter tradurre software altrui, può altresì renderizzare tramite librerie grafiche proprie e open titoli specificatamente pensati per la sua architettura, ricordiamo più vecchia sia di Windows che del Dos (parliamo del suo core Unix-like).
E' il caso di tutti quei produttori, con ID Software in testa, che sviluppano e hanno sviluppato in Open-gl che, dopo l'uscita del software retail pensato per Microsoft, decidono di rendere disponibili client specifici Linux.
Giochi del calibro di Neverwinter Nights, Doom 3 (e relative espansioni), Quake 4, Unreal Tournament 2004 e, tra breve, Serious Sam 2, girano nativamente (e bene) su molte distribuzioni Linux con Kernel almeno 2.4 e un sistema con driver proprietario Nvidia (meglio) o Ati (peggio).
Ovviamente, in un confronto con Windows mancheranno in molti casi specifiche ottimizzazioni che faranno perdere al massimo una decina di frame, ma si può tranquillamente affermare che a parità di configurazione girano sostanzialmente in maniera non dissimile.
Sono presenti, inoltre, conversioni a pagamento distribuite dalla LGP (alla cui home page si trovano anche alcuni demo) di giochi quali Cold War, X2 e Gorky 17, certo non prodotti nuovissimi ma che arricchiscono il panorama delle scelte.
Non ultimo il contributo di videogiochi open-source (spesso basati su motori ID) che pur mancando spesso volte di qualità apprezzabili, nascondono perle di giocabilità e stile.
Windows Vista, scorci futuri
Come molti di voi sapranno, presumibilmente questo fine anno o gennaio prossimo, Microsoft lancerà quel nuovo SO costato 9 miliardi di dollari che dovrebbe rivoluzionare, spingendo l'accelleratore sul lato qualitativo, l'esperienza Pc. Vista sarà nativo Dx10 e eseguirà tramite quest'API anche tutti i titoli Dx9, mentre in un primo momento si è pensato a un supporto Open-gl limitato tramite un cosiddetto Wrapper, ora sembra che sarà inserito nativamente nel nuovo sistema operativo.
Questo comporterà un possibile supporto futuro a quest'API, che un semplice emulatore avrebbe reso de facto inutilizzabile, con più libertà di scelta da parte dei programmatori. Non volgiamo, però, nasconderci dietro un dito dicendo che le caratteristiche di Dx10 sono effettivamente molto interessanti e se, anche John Carmack, progetterà i suoi motori prendendo come riferimento l'API Microsoft, vediamo ben poco spazio per un eventuale affermazione di Open-gl, lasciata più che altro per ragioni di compatibilità, riteniamo.
E' pur vero che un produttore che dispone di proprio software specifico offrirà sempre e comunque miglior supporto e facilità di utilizzo/upgrade a quest'ultimo e che storicamente i rapporti di potere delle API sono sempre andati verso una standardizzazione in un unico modello.
Conclusione
E' stata una lunga digressione la nostra, che ha toccato vari aspetti del Gaming "alternativo" a Windows, che pur presente da molti anni non ha mai saputo e potuto decollare, in parte dovuto a scelte temporali (Linux troppo immaturo nel 1996) in parte a scelte di mercato ormai consolidate. Purtroppo vari aspetti della stessa filosofia open-source frenano in un certo modo il mercato, oltre a numeri e fruibilità ancora non ottimali.
Troppe distribuzioni e varianti provocano una certa mancanza di basi avvertibile chiaramente nel momento in cui ci si scontra con i primi problemi, anche se supportati da un'ottima comunità. Con Vista lo scenario potrebbe variare ulteriormente, magari creando un secondo polo di sviluppatori specializzati in Open-gl, ma sinceramente, riteniamo sia un'ipotesi alquanto improbabile.
table_img_3789