Compresser les textures directement dans sa map

( Wadinclude / Nowadtexture )

 

Introduction

Le moteur graphique du jeu Half-Life stocke les textures dans des fichiers externes, appelés wads .

Ces fichiers sont ensuite consultés au moment de la compilation ou du lancement d'une map quand la map est chargée en mémoire.

Quand une nouvelle map est chargée, Half-Life cherche les fichiers wads dans le répertoire de Valve (pour des maps HL standards, HL ne regarde qu'ici) ou dans le répertoire spécifique d'un mod si nécessaire (par exemple, les fichiers wads consultés pour jouer avec une map Counter-strike peuvent se trouver dans les répertoires Valve et/ou Cstrike).

Quand des textures-custom sont utilisées dans une map personnelle, Half-Life doit connaître les références de ces textures afin de charger la map avec succès.

Ces textures peuvent être distribuées dans un nouveau fichier .wad attaché à la map (et portant le même nom, en général) ou bien elles peuvent être intégrées dans la map (dans le fichier .bsp) au cours du processus de compilation.

Intégrer des textures dans une map custom augmentera la taille du fichier .bsp lui-même mais il existe plusieurs raisons pour lesquelles un auteur pourrait vouloir intégrer ces textures dans sa map :

  • Ca lui épargne de devoir distribuer trop de fichiers pour faire tourner sa map.
  • Il peut vouloir empêcher que ses textures soient utilisées dans une autre map sans sa permission.


Il y a deux façons d'inclure des textures dans un fichier .bsp,
toutes les deux décrites ci-dessous. :

  • -wadinclude (la meilleure, avec des options contrôlables)
  • -nowadtextures (la plus facile et la plus sûre),

 

Garder à l' esprit : l'option Wadinclude intègrera au .bsp les textures que tu as utilisé dans ta map uniquement si elles font partie du ou des wads que tu désignes au compilateur (il y a donc un risque d'oubli), tandis que la seconde option Nowadtextures intègrera toutes les textures utilisées à un endroit ou un autre dans ta map, y compris celle inutile que tu auras oublié sur une face cachée par exemple ou celle que tout le monde possède déjà (il y a donc un risque d'augmentation de poids du bsp).

Ce qui implique donc de faire preuve de rigueur quel que soit ton choix.

 

-wadinclude


C'est le meilleur et le choix le plus souple quand on choisit d'intégrer des textures dans sa map. Il n'est possible que si vous utilisez les outils ZHLT " Zoner's_Tools " pour compiler. Il vous permet de désigner un fichier .wad en particulier, duquel seront extraites les textures à intégrer. Cette option n'intègrera les textures désignées que lorsque vous les utiliserez dans votre map ( donc pas le .wad tout entier ).


Pour l'essentiel, -wadinclude est l'option la plus couramment utilisée de nos jours lorsqu'on veut intégrer des textures parce qu'elle est plus contrôlable et ne gonfle pas sans raison la taille de votre fichier .bsp en intégrant des textures que tout le monde possède déjà, à la différence de l'option -nowadtextures.


Utiliser -wadinclude


On considèrera dans tous les exemples ci-dessous que
faitmaison.wad est le nom du fichier de textures que vous voulez utiliser, et que votremap est le nom de votre fichier .map.

  • Worldcraft : écrivez «-wadinclude faitmaison» dans le champ des paramètres relatif à hlcsg (sans les guillemets, bien sûr). Remarquez que l'appellation ".wad" n'est pas nécessaire dans cette ligne, et sachez que le paramètre -wadinclude peut être ajouté avant ou après le paramètre «$path\$file».

Donc vous devriez lire dans le champ des paramètres hlcsg : $path\$file -wadinclude faitmaison

 

  • Si vous utilisez un fichier .bat (batch file) : dans votre fichier batch, écrivez
    «-wadinclude faitmaison» après «hlcsg.exe».

    Ca devrait ressembler à ça : hlcsg.exe -wadinclude faitmaison votremap

  • Si vous utilisez Batch Compiler ou Zhlt Gui (note: il semble que son wadinclude ne marche pas) : écrivez faitmaison dans le champ Wad Include qui se trouve dans le principal écran de réglage.

    Pour ma part j'utilisais Batch Compiler, qui ne m'a jamais déçu (si vous en installez une version récente, n'oubliez pas de mettre à jour votre .NET framework sans quoi il ne fonctionnera pas. Cékoiça, ce .net? Les moteurs de recherche sont tes amis mais l'auteur de Batch Compiler, Nem's, sur son site propose un lien pour le télécharger).


Remarques importantes sur l'utilisation de -wadinclude

 

1. Assurez-vous que vous utilisez bien les derniers ZHLT < ZHLT Info> pour compiler.

Pour archiver, voici l'ancien lien des Zhlt tools

C'est actuellement le codeur Amckern (un australien très sympa) issu des forums Natural Selection, qui paraît s'occuper du développement de cet outil ( zhlt 3.4 , février 2006 ), prenant le relais d'XP-Cagey.

2. Il n'est pas nécessaire de préciser le chemin complet vers votre faitmaison.wad, et en fait cela peut même provoquer des problèmes quand vous utilisez TBCC ou autres compilateurs .bat. Je vous recommande de simplement écrire le nom de votre fichier wad, sans ajouter le chemin ni le ".wad" à la fin. Rectifiez ensuite si ça ne fonctionne pas. Soyez organisé.

3. Après coup, vous devriez toujours vérifier votre fichier d'information sur la compilation (le fichier .log portant le même nom que votre map : ici, votremap.log) pour vous assurer que les textures nécessaires ont bien été intégrées à partir des wads spécifiés. Jetez un oeil à cet extrait de mon fichier log de démonstration (utilisant Worldcraft), et à la ligne surlignée :


----- BEGIN hlcsg -----
Command line: C:\PROGRA~1\HAMMER\ZHLT_V~1.3\HLCSG.EXE -wadinclude fy_chunt C:\mes documents\mapping\fy_chunt.map

Using Wadfile: \sierra\half-life\valve\halflife.wad
Using Wadfile: \sierra\half-life\counter-strike\cstrike\cstrike.wad
Including Wadfile: \program files\hammer\zhlt.wad
Including Wadfile: \program files\hammer\fy_chunt.wad

added 13 additional animating textures.
Texture usage is at 0.59 mb (of 4.00 mb MAX)
3.68 seconds elapsed

A noter que certains compilateurs écriront "Embedding" au lieu de "Including".

Assurez-vous que tous les wads que vous avez désigné pour fonctionner en wadinclude sont bien présentés sous la forme surlignée dans l'exemple.


4. Le paramètre -wadinclude peut comprendre des noms partiels de fichiers ou même des noms de répertoires ! C'est une propriété très puissante dont vous devez apprendre à tirer avantage. C'est une manière pratique d'intégrer à partir de plusieurs wads en utilisant un seul -wadinclude, au lieu d'utiliser plusieurs paramètres -wadinclude.

Par exemple, si vous appelez plusieurs de vos fichiers faitmaison1.wad, faitmaison2.wad, faitmaison3.wad, etc.., tout ce que vous aurez besoin de faire sera d'écrire «-wadinclude faitmaison» et tous ces wads seront désignés pour participer à l'intégration des textures dans votre map, ceci grâce à la compréhension des noms tronqués (l'exemple équivalent dans Windows serait de chercher un fichier sous la forme faitmaison*.wad). Ou encore vous pourriez vous contenter de déposer tous les fichiers wads personnels que vous voulez utiliser dans un répertoire créé pour l'occasion (ex: Sierra\Half-Life\wouadtextures) : dans ce cas, écrivez «-wadinclude wouadtextures» et tous les wads déposés dans ce répertoire se verront concernés par le processus d'intégration des textures (les anglophones appellent ça "matching partial filenames"). Nul besoin de vous préciser la souplesse de ce système pour qui fait beaucoup de maps ou d'essais et ne veut pas se tromper.


Pour clarifier un peu plus ce point, référons-nous à nouveau à mon log de compilation précédent.

Remarquez qu'il est écrit dans la ligne de commande tout en haut «-wadinclude fy_chunt», ce qui désigne donc toute texture de fy_chunt.wad comme candidate à l'intégration si elle est utilisée (dit d'une autre façon : si je n'avais utilisé aucune texture provenant de ce wad dans la map concernée par cette compilation, le compilateur aurait tenu compte de l'ordre -wadinclude mais, après vérification, il n'aurait finalement intégré aucune texture de ce wad).

Ce qu'il faut savoir, c'est que j'aurais aussi bien pu écrire n'importe lequel des 4 ordres suivants pour obtenir des résultats strictement identiques :

-wadinclude fy_chu
-wadinclude CHUNT
-wadinclude hUnT
-wadinclude prog
(car mon fy_chunt.wad se trouve dans mon répertoire C:\program files)

Etc. Ce procédé implique également, si vous l'utilisez correctement, que :

  • Vous n'aurez jamais besoin de préciser plusieurs -wadinclude avant vos compilations
  • Vous n'aurez jamais besoin de combiner à la main avec Wally pour réunir des textures dans un seul wad :)

 

-nowadtextures


J'en parle car c'est l'option originale de compilation des textures dans les fichiers .bsp. Nous lui devons le respect, à cette grande ancêtre :)

-nowadtextures intègre toutes les textures utilisées de tous les wads utilisés, dans le fichier .bsp final.

C'était une option disponible dans les premiers outils de compilation qcsg.exe de Half-Life, et elle a été conservée par les outils ZHLT. La documentation des ZHLT Zoner's tools prétend que l'option -nowadtextures a été rendue obsolète par l'arrivée de -wadinclude, pourtant -nowadtextures demeure encore assez utile à cause de sa simplicité. Certes, elle est condamnée parcequ'elle intègre toutes les textures utilisées dans votre map. Or d'évidence il n'est pas nécessaire d'intégrer des textures que tout le monde possède déjà, comme celles issues des halflife.wad, liquids.wad et xeno.wad (ainsi que, quand vous mappez pour Counter-Strike, le ctrike.wad ou les wads des maps officielles du mod). Mais si vous utilisez dans votre map des textures issues d'un certain nombre de wads considérés comme non-standards, alors -nowadtextures est une façon rapide de s'assurer que tout joueur qui téléchargera votre map (en .bsp) n'aura pas besoin de charger des wads complémentaires pour pouvoir y jouer et ne se trouvera pas devant un message d'erreur genre couldn't load map nomdevotremap.bsp ou can't find lenomduwad.wad.

Pour résumer, -nowadtextures gonfle sans nécessité la taille de votre .bsp final, mais elle est rapide et facile à régler et utiliser. Si vous débutez en mapping et voulez procéder à des tests simples de votre map, c'est une option simple et efficace.

NB : avec l'apparition des versions commerciales Counter-strike : Condition Zero et Day Of Defeat, il est redevenu possible de ne plus posséder d'emblée les wads d'Half-life je suppose.

 

Utiliser -nowadtextures

Tous les exemples ci-dessous considèrent que votre map s'appelle votremap.

  • Worldcraft : écrivez «-nowadtextures» dans le champ du paramètre hlcsg (sans les guillemets)

    Vous devriez donc lire dans ce champ hlcsg : $path\$file -nowadtextures

 

  • Batch file : ajoutez «-nowadtextures» après hlcsg.exe dans votre fichier .bat
    Votre ligne devrait ressembler à ça : hlcsg.exe -nowadtextures votremap

 

 

CONCLUSION

 

Comme vous venez de le voir, -wadinclude est l'option la plus puissante et la plus pratique pour intégrer des textures dans votre map (.bsp), tandis que -nowadtextures est la méthode la plus facile.

Apportez une attention particulière aux astuces des «Notes importantes sur l'utilisation du -wadinclude» , qui pourraient vous épargner des complications en tirant partie de la flexibilité de l'outil -wadinclude.

Nb: si vous voulez voir la map fy_chunt (créée pour CS 1.5) que je cite en exemple Fy_Chunt . Content de l'avoir faite, cette map de shoot.