Compilation - Avancé (Q3A)

Écrit le 28/11/2003 par CH4NDL3R
Dernière mise à jour : 06/02/2006

Compilation - Avancé (Q3A)

NOTE : Ce tutorial va de paire avec Compiler Ses Maps - Bases. La lecture de ce dernier est donc fortement recommandée.
Note aux utilisateurs de Win9x - Me : La commande « rem » n'est pas reconnue sous ces OS, ce tutorial perd donc son intérêt.

Introduction

De nombreux tutoriaux sur Internet vous proposent de compiler vos maps en utilisant soit un batch file, soit un soft créé par des Third parties. Beaucoup vous suggèrent de passer par le batch, qui, du reste, est la manière la plus classe de compiler sa map.
Mais autant le batch est simple à mettre en place, autant il est rebutant dès qu'il s'agit de changer un répertoire ou de supprimer/ajouter des paramètres. L'arrivée de Windows 2k / XP amène l'utilisation de variables d'environnement qui vont faciliter la tâche à nous les mappeurs.

Mais qu'est ce qu'un batch file ?

Un batch file est simplement un fichier composé de lignes de commandes portant l'extension .bat.
Pour le créer, ouvrez le notepad et enregistrez le fichier avec l'extension .bat (n'oubliez pas de sélectionner le filtre *.* (Tous) sinon le fichier restera en .txt).

Principe des variables d'environnement

Les variables d'environnement sont des raccourcis utilisés pour certaines commandes.
Ainsi, sous Windows, vos fichiers temporaires vont dans un répertoire précis défini par ces variables.
Vous pouvez changer ce répertoire en modifiant la variable d'environnement correspondante, l'avantage étant qu'en cas de modification, tous les programmes tiers utilisant le répertoire temporaire de Windows « sauront » où il se trouve.

Ici, on utilise cette fonctionnalité à notre avantage puisque l'on va définir plusieurs variables d'environnement pour chaque processus de compilation, avec des paramètres différents, ceci afin d'avoir un batch capable de supporter plusieurs types de compilation (finale : tous les paramètres de qualité activés, test : paramètres de debug, etc...).
On va définir de la même manière les paramètres communs à tous les processus, ainsi que les répertoires utilisés.

Une variable d'environnement se définit comme suit :

set Ma_Variable=Mes_Parametres

Les caractères accentués sont évidemment à bannir.
Une fois définie, il reste à l'appeler :

Compileur_de_maps.exe %Ma_Variable%

%Ma_Variable% va être remplacée lors de l'exécution du programme par sa valeur, c'est-à-dire : Mes_Parametres. L'appel de la variable dans l'exemple précédent est donc équivalent à celui-ci :

Compileur_de_maps.exe Mes_Parametres

Conventions et Restrictions

Pour tous les chemins d'accès utilisez des slashes au lieu de backslashes. N'ajoutez pas de slash au bout du dernier répertoire.

Ex : C:GamesQuake3 devient C:/Games3/Quake3

Pour les noms longs et comportant des espaces, utilisez le format 8 :3.
L'équivalent d'un nom à plus de huit lettres s'obtient de la manière suivante :
1 - Supprimez tous les espaces du mot et convertissez-le en minuscules.
2 - Gardez les 6 premières lettres et ajoutez « ~1 » à la fin (sans les guillemets).

Ex : C:/Program Files/Quake III Arena devient C:/progra~1/quakei~1

Vous pouvez tout de même utiliser des noms longs à condition de les encadrer de guillemets.

Ex : c:/progra~1/quakei~1/ est équivalent à « c:/program files/quake iii arena »

Passons à l'action

Créez votre batch dans votre répertoire de travail (là où il y a tous vos .map).
Copiez-collez les lignes suivantes :

@echo off

rem ***CE PROGRAMME NE MARCHE PAS SOUS WIN9X***


rem Editez le batch pour changer les options de compilation
rem Remarque : -v (verbose) est inclus dans les options generales, et sera applique tout au long de la compile


rem Il vous suffit d'ajouter le mot-clef rem  devant la liste des params à supprimer et de supprimer ce mot-clef devant la variable qui doit etre utilise 
set BSP_VAR= -meta -verboseentities 
rem set BSP_VAR =-meta -verboseentities
rem set BSP_VAR =-meta -verboseentities -leaktest
rem set BSP_VAR =-meta -verboseentities -debugportals
rem set BSP_VAR =-meta -verboseentities -debugsurfaces
rem set BSP_VAR =-meta -verboseentities -leaktest -notjunc

rem Compatibilité avec Q3map1.x
rem set BSP_VAR = -verboseentities
rem set BSP_VAR = -verboseentities -leaktest
rem set BSP_VAR = -verboseentities -onlyents

set VIS_VAR =-vis -saveprt
rem set VIS_VAR= -vis -fast -saveprt 
rem set VIS_VAR =-vis -hint -saveprt
rem set VIS_VAR =-vis -saveprt -nopassage

rem Compatibilité avec Q3map1.x
rem set VIS_VAR =-vis
rem set VIS_VAR =-vis -deleteprt

set LIGHT_VAR= -light -fast -filter -super -patchshadows -bounce 3
rem set LIGHT_VAR =-light -fast
rem set LIGHT_VAR =-light -fast -bouncegrid
rem set LIGHT_VAR =-light -fast -nogrid
rem set LIGHT_VAR =-light -fast -bouncegrid -border
rem set LIGHT_VAR =-light -fast -bouncegrid -bounce 3
rem set LIGHT_VAR =-light -fast -bouncegrid -bounce 3 -super 2
rem set LIGHT_VAR =-light -fast -bouncegrid -bounce 3 -shadeangle 35 -tresh .5
rem set LIGHT_VAR =-light -fast -bouncegrid -bounce 3 -super 2 -patchshadows
rem tout_a_donf
rem set LIGHT_VAR =-light -bounce  99 -bouncegrid  -patchshadows -shadeangle 35 -super 86  -thresh .45

rem Compatibilité avec Q3map1.x
rem set LIGHT_VAR = -light -extra
rem set LIGHT_VAR = -light

rem note : AAS_VAR ne fonctionnera que si bspc.exe est installe sur le PC
set AAS_VAR=-forcesidesvisible -bsp2aas

rem Compatibilité avec Q3map1.x
rem set AAS_VAR=-bsp2aas

rem Editez le MOD_DIR si vous voulez changer le mod pour lequel la map est dediee.
rem Par ex, q3f2 pour Q3 Fortress, bfp pour Bid for Power...
set MOD_DIR=baseq3

rem Editez pour adapter le batch à votre configuration. 
rem N'oubliez pas les slashs / 
rem c:/progra~1/quakei~1 = «c:/program files/quake iii arena »
set QUAKE_PATH=c:/progra~1/quakei~1
set Q3MAP_PATH= %QUAKE_PATH%/radiant/q3map2.exe
set BSPC_PATH=%QUAKE_PATH%/radiant/bspc.exe

rem Compatibilité avec Q3map1.x
rem set Q3MAP_PATH= %QUAKE_PATH%/radiant/q3map.exe
rem set Q3MAP_PATH= %QUAKE_PATH%/radiant/q3map_ydnar_2.3.29.exe

rem Les options suivantes seront appliquées à tous les processus : vous n'avez pas besoin de les changer
set GEN_OPTIONS=-fs_basepath %QUAKE_PATH% -fs_game %MOD_DIR% -v

rem Et voici le programme proprement dit. Vous n'avez pas besoin d'y toucher.

set MAP_PATH=%1
%Q3MAP_PATH% %BSP_VAR% %GEN_OPTIONS% %MAP_PATH%
%Q3MAP_PATH% %VIS_VAR% %GEN_OPTIONS% %MAP_PATH%
%Q3MAP_PATH% %LIGHT_VAR% %GEN_OPTIONS% %MAP_PATH%
%BSPC_PATH% %AAS_VAR% %GEN_OPTIONS% %MAP_PATH%


pause
rem pause permet d'inspecter le log dans la console MS-DOS.

//fin du batch

Ce batch est principalement dédié à Q3map2.x. Il reste néanmoins compatible avec Q3map 1.x (référez-vous pour cela au lignes de commandes précédées par rem « Compatibilité avec Q3map1.x » plus haut).
Pour les jeux basés sur le moteur de Q3A comme Medal of Honor, RTCW ou encore Jedi Outcast, le fichier reste compatible à condition de passer quelques heures à changer certaines lignes ;)
Voilà, n'hésitez pas à modifier ce batch « de référence » pour y ajouter vos propres paramètres. Le but de ce petit programme est de vous rendre un maximum de services.