--------------------------------------------------------------------------------

 

2 Introduction

 

      2.1 Connaître les spécificités du moteur de Quake 3

 

            2.1.1 Une explication sommaire du processus de compilation

 

Avant de mettre les mains dans le cambouis, il serait bon de rappeler les spécificités-clé du moteur de Quake III Arena.

 

Trois phases sont nécessaires au niveau de la compilation pour que les maps soient d'une part reconnues par le moteur et d'autre part agréables à jouer et à regarder par les joueurs.

 

La première phase, obligatoire, est appelée l'étape BSP.

L'on part du format .map lisible sous GTKRadiant pour arriver au format .bsp après compilation. Que ce passe t'il pendant cette phase ? En fait, les brushes composant la map sont simplement découpés en triangles et les textures sont appliquées avec leur caractéristiques (alignement et shaders).

 

La seconde phase, optionnelle, est appelée l'étape VIS.

Cette étape est ici pour des fins d'optimisation. La map étant divisée en triangles, la méthode consiste à ne pas afficher les triangles qui ne sont pas visibles par le joueur. Si la map est bien conçue, cette économie se traduit par un gain assez net en termes de performance.

 

La dernière phase, optionnelle, est appelée l'étape LIGHT.

Comme son nom l'indique, cette partie s'occupe simplement de l'éclairage de la map. Elle n'est uniquement dédiée qu'à l'embellissement de la map.

 

Si les deux dernières phases sont optionnelles, c'est qu'elles ne servent qu'à améliorer la jouabilité d'une map (Fluidité et Eclairage). En conséquence, lors de compilations de tests, pour vérifier l'agencement des brushes, il est souvent utile de n'effectuer que l'étape BSP, les temps de compilation seront d'autant plus courts.

 

Ces explications sont très sommaires mais suffisantes pour ce que nous allons étudier par la suite. Toutefois, pour avoir des informations détaillées sur le processus de compilation, vous pouvez lire le tutorial 'Q3Map Explanation' par Small Pile of Gibs, dont une version en français est disponible aux éditions Game-Lab.

 

            2.1.2 A propos des shaders

 

Sur une face d'un brush est appliqué une texture avec ses coordonnées et son shader. Un shader est TOUJOURS associé à au moins une texture.

Par abus de langage, lorsque l'on dit que l'on applique un shader sur un brush, on applique également la texture correspondante.

Pour des informations exhaustives sur les shaders, lisez le Shader Manual (Disponible dans la dernière release de GTKRadiant). Désolé pour les anglophobes, il n'existe actuellement aucun équivalent complet et potable en français.

 

            2.1.3 Coordonnées ST et UV

 

Les coordonnées ST sont les attributs d'alignement d'une texture sur un Brush.

Regardez le screen suivant pour comprendre la signification de ST:

 

"C:\Documents and Settings\All Users\Documents\taf pour ce weekend\Q3map2 manual\CH4NDL3R\screens\exemple_st.jpg"

 

Les coordonnées UV sont les attributs d'alignement d'une texture sur un Patch.

Regardez le screen suivant pour comprendre la signification de UV:

 

"C:\Documents and Settings\All Users\Documents\taf pour ce weekend\Q3map2 manual\CH4NDL3R\screens\exemple_uv.jpg"

 

A RENEGOCIER :p

 

--------------------------------------------------------------------------------

 

      2.2 Conventions Utilisées

 

Les fonctionnalités de Q3Map2 s'appellent toutes via des switches, connus aussi sous le nom de paramètres.

Ces paramètres en ligne de commande sont appellés comme ceci : q3map2 -nom_du_parametre

Ceci va lancer q3map2 en un certain mode; par exemple q3map2 -vis lance l'étape VIS.

Ces paramètres ne sont parfois pas compatibles entre eux : ainsi vous ne pourrez par exemple apposer les switchs -vis et

-light sur la même ligne de commande, et vous ne pourrez pas non plus mettre le switch -v avant -vis.

 

L'ordre et les combinaisons de switchs peuvent paraître rébarbatives au premier abord, mais par la suite lorsque vous serez suffisamment à l'aise avec Q3Map2, l'expérience vous dira quels switches peuvent être utilisés dans tel ou tel cas.

 

Les rêgles sont les suivantes :

 

Le fichier .map à compiler est TOUJOURS LE DERNIER paramètre.

 

A chaque fois qu'une valeur d'un paramètre est mise entre guillemets, il va de soit qu'il faut ôter ces guillemets lorsque vous l'appliquerez "en vrai".

 

ex: Vous pouvez mettre par exemple "bfp" à -fs_game si vous mappez pour le mod Bid For Power pour Quake 3.

En vrai, on tapera -fs_game bfp

 

Partant du principe que Q3map2 gère différemment les fonctionnalités graphiques suivant les jeux, certains switches fonctionnent avec certains jeux seulement. Pour chaque switche, j'indiquerais quel(s) jeu(x) peut(peuvent) en bénéficier.

 

Un code couleur verra le jour dans un avenir, disons *relativement* proche.

 

--------------------------------------------------------------------------------

 

      2.3 "Compiler comme un homme" Créer son batch file personnalisé

 

            2.3.1 Introduction

 

Certains utilisent des Compiler Front End, c'est à dire des programmes en mode graphique avec des jolies fenêtres permettant de configurer sa compilation comme chacun l'entend. Le souci de ces programmes est qu'une fois le bazar configuré, il faut tout de même lancer l'interface graphique de configuration pour pouvoir compiler.

D'autres utilisent le menu BSP de GTKRadiant. Ca n'est pas mauvais car l'on peut logguer l'affichage dans la console de radiant et les messages d'erreurs apparaissent distinctement dans une fenêtre à part. Le problème vient une fois la map finalisée, où la release tient simplement à une compile satisfaisante au niveau de l'éclairage. Relancer GTKRadiant simplement pour compiler est assez frustrant.

La solution vient du batch file, combinant de nombreux avantages :

léger     : un double-clic ou un glisser-déposer et la compilation se lance automatiquement.

modulable : on l'ouvre avec le notepad pour changer les options de compilation à la volée.

portatif  : grâce aux variables d'environnement, vous pouvez compiler vos maps sur n'importe quel PC sous Windows.

 

            2.3.2 Mise en oeuvre

 

                  2.3.2.1 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

 

                  2.3.2.2 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:\Games\Quake3\ devient C:/Games/Quake3

 

Pour les noms longs et comportant des espaces, utilisez le format 8.3 (8 lettres pour le nom du ficher, 3 lettres pour son extension).

 

L’équivalent 8.3 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 premiers caractères et ajoutez "~1" à la fin (sans les guillemets).

3 - Si un nom de fichier terminé par "~1" existe déja, mettez "~2" à votre fichier, sauf s'il est alphabétiquement plus près que le premier fichier. Dans ce cas, inversez les terminaisons. (Si "~1" et "~2" existent, mettez "~3", et ainsi de suite...)

 

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"

 

                  2.3.2.3 Exemple de batch Windows

 

Créez votre batch dans votre répertoire de travail (là où il y a tous vos .map).

 

Si vous travaillez sous Windows, copiez-collez les lignes suivantes :

 

@echo off

 

rem ****BSP STAGE****

 

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 ****VIS STAGE****

 

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 ****LIGHT STAGE****

 

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 Editez le MOD_DIR si votre map est dédiée à un mod particulier

rem Par ex, q3f2 pour Q3 Fortress, bfp pour Bid For Power...

 

set MOD_DIR=baseq3

rem set MOD_DIR=q3f2

 

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 GAME_DIR=c:/progra~1/quakei~1

set Q3MAP_PATH=%GAME_DIR%/radiant/q3map2.exe

rem set Q3MAP_PATH=f:/compil~1/q3map_~1/q3map2.exe

set MAP_PATH=%1

rem set MAP_PATH=nomdelamap.map

 

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

 

set GEN_OPTIONS=-fs_basepath %GAME_DIR% -fs_game %MOD_DIR% -v

 

%Q3MAP_PATH% %BSP_VAR% %GEN_OPTIONS% %MAP_PATH%

%Q3MAP_PATH% %VIS_VAR% %GEN_OPTIONS% %MAP_PATH%

%Q3MAP_PATH% %LIGHT_VAR% %GEN_OPTIONS% %MAP_PATH%

%Q3MAP_PATH% %GEN_OPTIONS% -info %MAP_PATH%

 

pause

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

 

                  2.3.2.4 Comment fait-on pour changer des options ?

 

Toutes les commandes débutant par le mot-clé "rem" sont purement et simplement ignorées. Ce mot-clé est en fait bien utile puisqu'il vous permet de changer les options de compilation à la volée. En effet, vous voulez par exemple changer la variable BSP_VAR qui est actuellement :

 

set BSP_VAR=-meta -verboseentities

 

en

 

set BSP_VAR=-meta -verboseentities -leaktest

 

Effacez simplement le mot-clé "rem" devant

 

rem set BSP_VAR=-meta -verboseentities -leaktest

 

et ajoutez-le devant

 

set BSP_VAR=-meta -verboseentities

 

Au final, on obtient :

 

set BSP_VAR=-meta -verboseentities -leaktest

rem set BSP_VAR=-meta -verboseentities

 

Pour lancer la compilation, deux choix possibles :

-Soit vous travaillez en même temps sur plusieurs maps, auquel cas je vous suggère de laisser le MAP_PATH par défaut et de glisser-déposer votre .map sur le fichier batch.

-Soit vous travaillez sur une seule map à la fois, dans ce cas changez le MAP_PATH=%1 en MAP_PATH=nomdevotremap.map. Vous n'aurez plus qu'à double-cliquer sur le .bat pour lancer la compilation.

 

                  2.3.2.5 Adapter le batch pour les autres jeux

 

Q3Map2 est entièrement compatible avec les jeux suivants :

 

Quake III Arena

Q3A: Team Arena

Star Trek Elite Force

Return to Castle Wolfenstein

Jedi Knight 2

Jedi Academy

Soldier of Fortune 2

Wolfenstein: Enemy Territory

 

Pour compiler vos maps avec les jeux autres que Quake 3 Arena, des modifications mineures sont à apporter :

 

La variable GAME_DIR doit pointer dans le répertoire du jeu.

Pour Return to Castle Wolfenstein, le répertoire par défaut est "C:\Program Files\Return to Castle Wolfentein\" ce qui nous donne :

set GAME_DIR=c:/progra~1/return~1

 

La variable MOD_DIR doit avoir pour valeur le nom du dossier où se trouvent les fichiers .pk3 du jeu original.

Pour Return to Castle Wolfenstein, le nom de ce dossier est "main", ce qui nous donne :

set MOD_DIR=main

 

Vous devez ajouter à la variable GEN_OPTIONS le switch "-game wolf", ce qui nous donne

set GEN_OPTIONS=-game wolf -fs_basepath %GAME_DIR% -fs_game %MOD_DIR% -v

 

Le tableau ci-après récapitule les valeurs à remplir pour deux des variables d'environnement:

 

Nom du jeu                    | -game    | MOD_DIR     |

==============================|==========|=============|

Quake III Arena               | quake    | baseq3      |

Q3A: Team Arena               | quake    | missionpack |

Star Trek Elite Force         | ef       |             |

Return to Castle Wolfenstein  | wolf     | main        |

Jedi Knight 2                 | jk2      |             |

Jedi Academy                  | ja       |             |

Soldier of Fortune 2          | sof2     |             |

Wolfenstein: Enemy Territory  | et       | etmain     |

Tenebrae 2 engine             | tenebrae |            |

==============================|==========|=============|

 

Les MOD_DIR absents ne sont pas nécessaires (en fait, je ne les connais pas :p). Mais ça marche pépère si vous supprimez le switch "-fs_game %MOD_DIR%" de la variable GEN_OPTIONS. Du moment que le -game est précisé, c'est l'essentiel.

 

Attention pour les jeux utilisant le moteur Tenebrae 2, vous devez spécifier le %MOD_DIR%, sinon q3map2 ne retrouvera pas ses petits.

 

                  2.3.2.6 Adapter le batch pour Medal of Honor et Call of Duty ? <<<<< NON TESTE !!! A VOS RISQUES ET PERILS !!

 

Q3Map2 fonctionne partiellement avec :

 

Medal of Honor Allied Assault (BSP + VIS uniquement)

MoH : SpearHead (BSP + VIS uniquement)

MoH : BreakThrough (BSP + VIS uniquement)

Call of Duty (BSP + VIS uniquement)

 

-> Pour Medal of Honor et ses add-ons

 

Par conséquent, vous devrez également modifier les variables liées à l'étape LIGHT.

 

Vous devez ajouter dans la variable GEN_OPTIONS le switch "-game quake".

 

La variable LIGHT_VAR contiendra les switchs relatifs à l'exécutable chargé de gérer le calcul des lumières, MoHlight.exe

Renseignez-vous pour connaître les switchs disponibles et leur effet.

 

La variable GAME_DIR doit pointer dans le répertoire du jeu.

Le répertoire par défaut est "C:\Program Files\EA GAMES\Medal of Honor Allied Assault\" ce qui nous donne :

set GAME_PATH=c:/progra~1/eagame~1/medalo~1

 

La variable MOD_DIR doit avoir pour valeur "main" (c'est le nom du répertoire contenant les .pk3)

 

Vous devez créer une variable LIGHT_PATH pointant sur l'exécutable MoHlight.exe.

Par exemple :

set LIGHT_PATH=%GAME_DIR%/editing/mohlight.exe

 

Et vous devez modifier la ligne

 

%Q3MAP_PATH% %LIGHT_VAR% %GEN_OPTIONS% %MAP_PATH%

 

en

 

%LIGHT_PATH% %LIGHT_VAR% %MAP_PATH%

 

Pour l'add-on SpearHead, suivez les opérations précédentes et changez MOD_DIR de telle manière qu'il porte le nom du dossier où sont contenus tous les .pk3 de l'addon (Allez, je vous aide, son nom est "mainta").

Pour BreakThrough, suivez toutes les opérations précédentes, MOD_DIR prend cette fois pour valeur "maintt".

 

ATTENTION :

Pour des soucis de compatibilité, ajoutez systématiquement la clé "_keeplights" dans l'entité worldspawn afin d'éviter que MoHLight n'ait aucune lumière à calculer. Q3Map2 laisse les infos de lighting dans le .map contrairement à son prédecesseur. Si vous ne mettez pas la clé, vous aurez au choix un plantage à l'exécution de MoHLight ou alors aucune lumière dans la map.

 

En même temps, je dis ça, mais j'ai absolument rien testé :p Ca se trouve ça marche quand même.

Merci à ceux qui ont/auront eu le courage de tester de me le signaler.

 

-> Pour Call of Duty

 

Pour Call of Duty, il faut procéder de la même manière que pour Medal of Honor. le LIGHT_PATH doit cette fois pointer sur flare.exe

Allez donc voir sur CaskAmi Prod (=> google), il y a sans doute des infos supplémentaires interessantes.

 

 

                  2.3.2.7 Adapter le batch pour les futurs jeux

 

Non Testé :

 

MoH : Pacific Assault

Star Trek Elite Force 2

 

Impossible de vous dire à l'heure actuelle quelle seront les variables à modifier pour que le batch soit compatible avec ces futurs jeux.

Lorsqu'ils seront disponibles, ce guide sera mis à jour.

 

Non testé également:

 

Warsow (Moteur QFusion)

 

Warsow passe en mettant -game quake.

Tous les switchs (notamment pour le lighting) ne passent pas avec Wsw.

Tous les lightstyles quelqu'ils soient font clignoter la map lorsqu'on les utilise. Ca vaut le détour :)

 

                  2.3.2.8 Un batch pour Linux ??

 

CE BATCH N'A PAS ETE ENCORE TESTE !!

 

Pour créer notre batch, nous allons utiliser le langage de script fourni avec toutes les distributions, bash

 

# !/bin/bash

 

# ****BSP STAGE****

 

set BSP_VAR=-meta -verboseentities

# set BSP_VAR=-meta -verboseentities -leaktest

# set BSP_VAR=-meta -verboseentities -debugportals

# set BSP_VAR=-meta -verboseentities -debugsurfaces

# set BSP_VAR=-meta -verboseentities -leaktest –notjunc

 

# ****VIS STAGE****

 

set VIS_VAR=-vis -saveprt

# set VIS_VAR=-vis –fast –saveprt

# set VIS_VAR=-vis -hint -saveprt

# set VIS_VAR=-vis -saveprt –nopassage

 

# ****LIGHT STAGE****

 

set LIGHT_VAR=-light –fast –filter –super –patchshadows –bounce 3

# set LIGHT_VAR=-light -fast

# set LIGHT_VAR=-light -fast -bouncegrid

# set LIGHT_VAR=-light -fast -nogrid

# set LIGHT_VAR=-light -fast -bouncegrid -border

# set LIGHT_VAR=-light -fast -bouncegrid -bounce 3

# set LIGHT_VAR=-light -fast -bouncegrid -bounce 3 –super 2

# set LIGHT_VAR=-light -fast -bouncegrid -bounce 3 -shadeangle 35 –tresh .5

# set LIGHT_VAR=-light -fast -bouncegrid -bounce 3 –super 2 -patchshadows

 

# tout a donf'

 

# set LIGHT_VAR=-light –bounce 99 –bouncegrid  –patchshadows –shadeangle 35 –super 86 –thresh .45

 

# Editez le MOD_DIR si votre map est dédiée à un mod particulier

# Par ex, q3f2 pour Q3 Fortress, bfp pour Bid For Power...

 

set MOD_DIR=baseq3

# set MOD_DIR=q3f2

 

# Editez pour adapter le batch à votre configuration.

 

set GAME_DIR=/usr/local/games/quake3

set Q3MAP_PATH=$GAME_DIR/radiant/q3map2

# set Q3MAP_PATH=/home/compile/q3map_2.5.4_linux_x86/q3map2

set MAP_PATH=$1

# set MAP_PATH=nomdelamap.map

 

# Et voici le programme proprement dit. Vous n’avez pas besoin d’y toucher.

 

set GEN_OPTIONS=-fs_basepath $GAME_DIR -fs_game $MOD_DIR -v

 

$Q3MAP_PATH $BSP_VAR $GEN_OPTIONS $MAP_PATH

$Q3MAP_PATH $VIS_VAR $GEN_OPTIONS $MAP_PATH

$Q3MAP_PATH $LIGHT_VAR $GEN_OPTIONS $MAP_PATH

$Q3MAP_PATH $GEN_OPTIONS -info $MAP_PATH

 

Sauvegardez ces lignes dans un fichier intitulé par exemple nom_du_batch.

Enfin, ajoutez les droits en exécution de votre fichier (chmod u+x nom_du_batch).

 

Votre fichier batch est désormais prêt.

 

Pour les autres tips, je ne détaillerai pas pour la version Linux, car il y a très peu de réglages à faire (quand il y en a ...) et vous êtes de toutes façons capables de vous débrouiller :)

 

                  2.3.2.9 Récupérer le log de la compilation

 

Par défaut, tous les messages du compilateur sont affichés dans la console. Comment relire ces messages une fois la compilation terminée ?

 

-Méthode 1 :

Dans les paramètres des Commandes MS-DOS (command.com ou cmd.exe suivant les versions de Windows), modifiez la taille du buffer pour qu'il garde environ 1000 lignes en mémoire. Vous pourrez ainsi lire le log en utilisant la barre de défilement.

Revers de la méthode, on ne dispose pas d'outils de recherche de texte.

 

-Méthode 2 :

On va modifier le fichier batch pour enregistrer les informations de compilation dans un fichier texte.

Repérez les lignes suivantes :

 

%Q3MAP_PATH% %BSP_VAR% %GEN_OPTIONS% %MAP_PATH%

%Q3MAP_PATH% %VIS_VAR% %GEN_OPTIONS% %MAP_PATH%

%Q3MAP_PATH% %LIGHT_VAR% %GEN_OPTIONS% %MAP_PATH%

%Q3MAP_PATH% %GEN_OPTIONS% -info %MAP_PATH%

 

Et remplacez-les par celles-ci :

 

%Q3MAP_PATH% %BSP_VAR% %GEN_OPTIONS% %MAP_PATH% > %MAP_PATH%.log

%Q3MAP_PATH% %VIS_VAR% %GEN_OPTIONS% %MAP_PATH% >> %MAP_PATH%.log

%Q3MAP_PATH% %LIGHT_VAR% %GEN_OPTIONS% %MAP_PATH% >> %MAP_PATH%.log

%Q3MAP_PATH% %GEN_OPTIONS% -info %MAP_PATH% >> %MAP_PATH%.log

 

Cela va créer dans le répertoire de votre map compilée un fichier appelé nomdelamap.log, que vous ouvrirez avec n'importe quel éditeur de texte pour lire le log de la compilation.

Revers de la méthode, durant la compilation, AUCUN MESSAGE n'est affiché dans la console.

 

--------------------------------------------------------------------------------