Benvenuti al tutorial introduttivo che vi aiuterà a risolvere alcuni dei problemi di installazione di DirectX9.
Innanzitutto spieghiamo cosa è DirectX. DirectX è un API, un insieme di classi racchiuse in librerie dll che permettono di programmare applicazioni grafiche e soprattutto videogiochi. Insieme a OGL (open graphics library) sono le librerie più utilizzate per la programmazione di videogiochi. Tutti quelli a cui normalmente giocate sono infatti realizzati con una di queste 2. Questo rappresenta un grande vantaggio perchè vi allontana notevolmente dal dover programmare la scheda video a basso livello rendendo impossibile poterne utilizzare tutte le sue funzionalità e allo stesso tempo rendere i vostri programmi compatibili con tutte le schede video esistenti al mondo (cosa che invece occorre ancora fare quando si lavora per console). In questi tutorial insegnerò ad usare directX in Visual Basic.net (e quindi anche per gli altri linguaggi come ad esempio C#). Per questo darò per scontato che conosciate a sufficienza il linguaggio di riferimento e non abbiate problemi con classi, funzioni ed in definitiva la programmazione orientata agli oggetti.
A differenza di DirectX8 la versione .net di DirectX9 richiede un certo numero di dll che è necessario importare. Tali dll sono incluse nell'SDK microsoft (software development kit)che può essere scaricato dal sito microsoft gratuitamente. L'SDK altro non è che il kit per lo sviluppatore che include le dll managed, le librerie C++, la documentazione e alcuni sorgenti con degli esempi.
Innanzitutto è importante l'ordine di installazione: 1)Visual studio.Net 2)DirectX SDK (scaricate sempre l'ultima versione disponibile, in data di scrittura di questo tutorial siamo arrivati alla 9.0c).
Le librerie .net che vi servono si trovano nella directory di windows in C:\WINDOWS\Microsoft.NET\Managed DirectX. Lì troverete da 1 a 3 directory (a seconda che abbiate la versione 9.0, 9.0b o 9.0c)ognuna di queste è piena di dll. Se nel frattempo è uscita una versione successiva probabilmente di più o di meno. Se non dovessero comparire non vi preoccupate, è normale. Infatti l'installazione delle directX9 non include automaticamente le estensioni per .net. Infatti quando andrete ad installare directX nel computer dei vostri "clienti" dovrete fare in modo di far partire il file di installazione delle directX con la linea di comando /InstallManagedDX. Per voi programmatori invece dovete installare le developers runtime che si trovano nella cartella di installazione della SDK. /Developer Runtime\Managed DirectX\Retail troverete un setup chiamato mdxredist.exe che installa e rimuove le dll necessarie. In questo modo le dll verranno installate correttamente (potete usare lo stesso file anche per i computer che devono installare solo directX e non tutta la SDK). Le dll sono ora installate e potete iniziare a programmare in DirectX su VB.Net, C# e ogni altro linguaggio della piattaforma .net.
Riferimenti
I riferimenti altro non sono che l'indicazione per VB.Net su quali dll del framework .net verranno usate. Andate al menù progetto e da lì cliccate aggiungi riferimenti. Vi comparirà questa finestra
Tra i vari componenti troverete quelli per directX (anche più versioni). Le directX dalle 9.0b in poi non vengono rilevate automaticamente in visual studio 2002 e dovrete quindi andare a cercarle manualmente (a patto che si trovino nella directory di windows). Dovrete quindi andare in sfoglia e sceglierle. Per comodità potete inserire le dll in qualsiasi cartella vogliate, non è importante a questo punto. Molti preferiscono metterle nella cartella dell'eseguibile.
DirectX 9.0, 9.0a, 9.0b, 9.0c?
DirectX è una API in continua evoluzione. A distanza di pochi mesi escono nuove versioni che arricchiscono le potenzialità e correggono alcuni bug. Alcune di queste modifiche portano a leggerissime incompatibilità come il fatto che alcune classi o funzioni cambiano leggermente di nome. Il RobyDx website è stato uno dei primi al mondo ad inserire i tutorial managed per directX9. Dopo una sola settimana dall'uscita della prima versione di directX9.0 erano infatti disponibili i primi tutorial. I tutorial si sono aggiunti nel corso del tempo e questo ha fatto in modo che gli ultimi tutorial utilizzassero una versione più avanzata dei primi. Dato che dovrei ogni 6 mesi aggiornare tutti i tutorial (e se contate sono tanti) dovete capire che alcune incompatibilità seppur lievissime capitano nei primi tutorial. Se quindi il codice non funziona o non compila dovete semplicemente modificare qualche nome ed andrà alla perfezione. Si trattano di modifiche che si risolvono in pochi secondi (se non trovate attributeID magari è stato cambiato in attribID o viceversa). Basterà premeter ctrl + space e il completamento automatico vi aiuterà. Questo capita raramente. Per alcuni argomenti in cui i cambiamenti sono significativi ho aggiunto delle versioni updated che potrete consultare per aggiornare i tutorial.
Ridistribuire
Avete fatto un gioco o un programma e volete farlo partire sul PC di un vostro amico? Fategli installare il framework .Net, le directX9 e le Managed DirectX (quest'ultime potete anche inserirle nella cartella dell'eseguibile). Il gioco funzionerà perfettamente. Questo solamente la prima volta. Ogni altro gioco richiederà solamente l'installazione dell'eseguibile.
E' difficile imparare ad usare directX?
La risposta è si e no. DirectX non è una semplice classe che si può imparare in una settimana. DirectX è vastissima e nonostante abbia scritto centinaia di tutorial è impossibile coprire con precisione ogni argomento. La vastità richiede quindi un minimo di impegno da parte vostra ma mediamente chiunque in poche settimane può imparare le basi di DirectX ed iniziare a realizzare i primi giochi. Se invece continuerete con passione potrete raggiungere livelli sufficienti per realizzare applicazioni che non hanno nulla da invidiare ai vari Doom3, Half Life e soci. Ricordate infatti che questi software non vengono realizzati da scienziati ma solo da esperti di programmazione che lavorano in enormi team di sviluppo. Quindi non è impossibile arrivare ai livelli di queste persone, serve solo molta pazienza, passione e voglia di conoscere.
Per qualsiasi dubbio vi invito a mandarmi email e partecipare al forum di discussione in cui potrete trovare moltissime persone con cui condividere idee e problemi. L'iscrizione non è obbligatoria (potete postare anche senza) ma fatelo se volete sentirvi veramente parte della nostra comunità che mira a diffondere le conoscenze su uno degli argomenti più interessanti ma allo stesso tempo più mitizzato dell'informatica di oggi: la programmazione di videogiochi.
Buon lavoro e buon divertimento