Siccome ho visto un po’ di confusione, più che altro su come settare le cartelle del proprio mod/mappa per l’engine di DooM3 ho deciso di fare un piccolo documento che ne spiega gli aspetti.
In realtà la cosa è abbastanza semplice, e si divide in 2 parti: creare una struttura nella cartella “base” per creare le proprie mappe, con eventuali assets nuovi (vostre texture, modelli, scripts), oppure creare la struttura in una vostra cartella customizzata (non la cartella “base” di DooM3) per i mod più complessi.
Parte 1 – Creare la struttura nella cartella “base” per mappe e nuovi assets
La cosa è abbastanza semplice, il motore è programmato per leggere il contenuto della cartella “base”, sia che trovi cartelle sfuse, o compresse in un file .pk4 . Ovviamente lo fa con un criterio: legge PRIMA i file .pk4 in ordine alfabetico (ricordatelo perché è importante) e infine le cartelle sfuse (non compresse) perché le ritiene più importanti. Comunque, diciamo che vogliate creare una mappa con molti aspetti customizzati da voi: la struttura che dovrete avere sotto la vostra cartella “base” è questa:
af : cartella contenente i file .af ossia quelli che definiscono le proprietà dei modelli che sfruttano la fisica/ragdoll
def: cartella che contiene i file .def , servono a definire i parametri delle intities del gioco
env: contiene i file .tga per le cubemaps
guis: contiene le guis
glprogs: contiene i file .vfp e .vp per programmare nuovi shader
lights: contiene i file .tga che si usano come texture da applicare alla luci
maps: questa è l unica cartella che tutti conoscono perché la crea direttamente il gioco appena lanciato l editor. Ah, serve per i file .map (mappe)
materials: contiene i file .mtr che definiscono i “materials” appunto, ovvero come il motore deve combinare le texture e mostrarle sullo schermo
models: contiene i modelli e di solito le texture degli oggetti creati in un 3D package
script: contiene i file .script per le mappe e per l’inizializzazione del gioco
sound: contiene i file .wav/.ogg per i suoni e i file .sndshd che definiscono le opzioni dei shaders
textures: contiene i file .tga per le textures
Ora, quando avrete questa struttura nella cartella “base” potrete piazzare i vostri file come indicato, e state sicuri che il motore li leggerà per forza di cose, perché prima controlla i pk4 e dopo passa alle cartelle “utente”.
Notate infatti, che se aprite i pk4 del gioco originale, all interno troverete LA STESSA STRUTTURA di cartelle (solamente sfusi in più .pk4)
Parte 2 – Creare la struttura in una cartella “User defined”
Quando si usa? Quando volete creare un mod che apporti modifiche al codice sorgente, come il file gamex86.dll oppure se volete aggiungere qualche file .vfp (i programmi per aggiungere effetti grafici). In realtà, io uso sempre una mia cartella mod, anche se devo creare solo una mappa, perché mi dà completo controllo sul contenuto del tutto… Come creare tutto ciò? Semplice, andate nella directory principale di DooM3, quella con gli eseguibili, dove potrete creare una cartella col nome del vostro mod: a questo punto entrateci dentro, e create la stessa identica struttura vista in precedenza per la cartella “base” (il funzionamento è identico). Ora bisogna solo dire al motore, di usare la nostra cartella invece che quella “base”, e si può fare tramite collegamento…
Io ho sul desktop 2 collegamenti, uno a DooM3 gioco, e uno che lancia l’editor.
Gioco:
\Games\DooM3\Doom3.exe +developer 1 +set r_mode 4 +set r_fullscreen 1
+developer 1 serve per rendere enabled tutti i comandi utili per creare mods, mentre +set r_mode 4 setta la risoluzione del gioco a 800x600 e +set r_fullscreen 1 lo setta a tutto schermo.
Editor:
\Games\DooM3\Doom3.exe +developer 1 +set r_fullscreen 0 +set r_mode 7 +wait +wait +editor
+developer 1 l’abbiamo visto, +set r_fullscreen 0 lancia il gioco in finestra (importante perchè se aprite l’editor col gioco fullscreen si apre buggato) +set r_mode 7 setta la risoluzione del gioco a 1280x1024 (la risoluzione del mio desktop, così uso l’editor come si deve) e infine +editor apre l’editor appunto
Ora, questi collegamenti lavorano sul gioco originale, cioè prendono i contenuti dalla cartella “base”.
Diciamo invece che io voglia lanciare il mio mod con tutti i files adagiati in una cartella chiamata “mymod”, per controllare una mappa: creerò un nuovo collegamento, e ci aggiungerò il comando che dice al motore di utilizzare la mia cartella invece di “base”. Così:
Gioco+mymod:
\Games\DooM3\Doom3.exe +developer 1 +set r_mode 4 +set r_fullscreen 1 +set fs_game mymod
Notate il nuovo comando +set fs_game mymod .Mi raccomando, notate che “mymod” è il nome esatto della mia cartella che ho creato nella directory principale. E notate anche che il comando è stato aggiunto per ultimo, quindi il motore sbrigherà tutte le operazioni dei comandi precedenti, e per ultimo setterà la cartella dei contenuti come quella “mymod”.
Ora, facciamo un collegamento che lanci anche l’editor prendendo sempre come dir di riferimento la vostra cartella “mymod”.
Editor+mymod:
\Games\DooM3\Doom3.exe +set developer 1 +set r_fullscreen 0 +set r_mode 7 +set fs_game mymod +wait +wait +editor
Identico a prima, ma anche stavolta abbiamo aggiunto il comando fs_game. NOTA BENE: dovete mettere il comando PRIMA di quello per lanciare l’editor. Così, prima setta la cartella mymod e DOPO apre l’editor. Se mettete fs_game per ultimo, non funzionerà, perché quando apre l’editor il motore non controlla più i comandi successivi.
Questa cosa dell’editor è molto importante, e vi faccio capire il perché: ho iniziato una mappa che utilizza il “parallax mapping” mod. Praticamente un tizio ha modificato il file “interactions.vfp” incluso in DooM3 e ha implementato il parallax mapping, un effetto che si ottiene modificando le normal maps per creare superfici che diano una parvenza di profondità. Ora, se io usavo il gioco base, dovevo creare mappa e assets con la versione originale che non supporta tutto ciò, quindi nell’editor non avrei visto l’effetto giusto dato che il gioco aveva caricato il file “interactions.vfp” originale.
Invece, avendo settato la mia cartella mod con il nuovo file “interactions” e avendo detto al motore di caricare quello nuovo che si trovava nella dir “mymod”, ho ottenuto un editor che nella preview renderizza il parallax mapping in maniera corretta.