Créer ses fichiers PAK

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

Introduction

Lorsque l'on crée un mod, il se peut qu'au bout d'un certain temps, le nombre de fichier devienne très important et une mauvaise manipulation lors d'une installation peut supprimer des fichiers et le mod sera inutilisable.... De plus, spour éviter que les répertoires soient submergé de fichiers et que certains ne s'amusent pas à les modifier. Les fichiers PAK ont été créé dans ce but. Nous allons apprendre à les utiliser...

Qu'est qu'un fichier PAK ?

Un fichier PAK peut etre considéré comme une boite en carton.... en fait, c'est comme si on avait copié une partie de votre mod (répertoires et fichiers) dans le .pak. Les fichiers qui se trouvent à l'intérieur d'un .pak sont identiques que lorsqu'il était dans un répertoire. Ils ont simplement été regroupé dans cette boite en carton, afin que le commun des mortels ne sache pas ce qu'il y a dedans.....

Bon je n'ai surement pas été clair, donc le meilleur moyen de vous rendre compte de ce que c'est, c'est de l'ouvrir et de voir ce qu'il y a à l'interieur. Pour visualiser un fichier PAK, je vous conseille PakExplorer . Très simple d'emploi, mais uniquement pour visualiser un Pak. Pour créer vos propres PAK, vous devez posséder QPed ou StrangeUtil . Ce dernier est très puissant, mais ne possède pas d'interface graphique et vous devrez ecrire des scripts pour créer un PAK.

Pour votre information, tout ce tutorial sera fait avec QPed.

Que met-on dans les PAK ?

Première chose à faire, c'est d'ouvrir le fichier PAK, d'Half-Life. Lancez le programme QPed et ouvrez le fichier pak0.pak qui se trouve dans le répertoire Valve. Vous verrez alors la même architecture que l'explorateur windows. A la seule différence près, que la racine a pour nom 'root'. Vous pouvez donc voir qu'à la racine du pak, vous n'avez que des fichiers txt. Par exemple, le fichier title.txt qui regroupe tous les titres qu'on trouve dans les niveaux. Sachez que ces fichiers peuvent indépendement être placé dans le répertoire valve ou dans le 'root' du PAK. En fait, lorsqu'un fichier existe dans le .pak et aussi en dehors. C'est le fichier en dehors qui est pris en compte.

Pour un mod, c'est un peu différent. En fait, le répertoire de votre mod, par exemple 'monmod', est considéré comme le répertoire valve. C'est à dire, que les fichiers se trouvant dans le répertoire valve, pourront avoir leur équivalent dans votre répertoire mod, sans pour autant remplacer le répertoire valve. C'est un peu compliqué, mais prenons un exemple. Vous développer un mod solo. Quand vous lancez vos maps, Valve prend priorité, les fichiers qui se trouvent dans le répertoire 'monmod', si il ne les trouve pas, il va voir dans le .pak et les lance. Ensuite, quand vous jouez à votre mod, vous voulez arreter et lancez une map d'Half-Life présent dans le pak de vavle. Vous allez dans la console et vous lancez la map. Half-Life ira donc voir dans votre répertoire 'monmod/maps', puis dans votre .pak, ensuite dans le répertoire valve/maps et enfin dans le pak0.pak. Quelque soit le mod auquel vous jouez, les fichiers d'Half-Life seront toujours pris en compte.
On peut donner un exemple avec les armes. Si votre mod ne contient pas d'armes, Half-Life ne trouvera rien dans votre répertoire 'monmod/models' et ira voir dans le répertoire vavle/models puis dans le .pak.

- Root
       + gfx
        |     + env 
        |     + shell 
        | 
       + hw
        |
       + maps
        |     + graph 
        |
       + models
              + player
        |            + ..... 
        |
       + sound
        |      + ambiance
        |      + .....
        |
       + sprites 

Et voici maintenant la description des fichiers contenus dans ces répertoires:

Répertoire Roots

Title.txt : titres affichés lors du jeu. (Voir Tutorial)
skill.cfg : puissance des monstres et de leurs armes.
vavle.rc : script appelant les fichiers de configs.
credits.txt : les membres de valve.
default.cfg : touches par défaut.
language.cfg : ????


Répertoire ENV

Env Contient tous les fichiers images pour les ciels. Voir tutorial 

Répertoire SHELL

Contient tous les fichiers bmp pour l'interface du mod.

Répertoire HW

Contient les fichiers configs pour les différents chip graphiques.

Répertoire MAPS

Contient tous les fichier BSP .

Répertoire GRAPHS

Contient tous les fichiers nod allant avec les BSP (fichier pour l'IA des monstres)

Répertoire MODELS

Contient tous les fichiers mdl, c'est à dire les modèles des armes et des monstres. 

Répertoire PLAYER

Contient tous les modèles multi-joueurs, en fait, il faut un sous-répertoire pour chaque modèle. Et dans ce sous-répertoire, il y aura les fichier mdl et bmp du model. 

Répertoire SOUND

materials.txt : contient tous les effets des différentes textures (Voir Tutorial)
sentences.txt : contient tous les définitions des sentences et autres effet sonnores.
Les autres sous-répertoires doivent contenir des fichiers sons.

Répertoire AMBIANCES...

Ces répertoires sont tous des sous-répertoires de Sound et contiennent tous les effets sonnores du jeu. 

Répertoire SPRITES

Contient tous les fichiers spr qui sont les sprites (objets 2D) affichés à l'écran. Ainsi que les fichiers txt contenant les configurations du HUD.

Voici maintenant une liste de fichier NE DEVANT PAS être dans le .pak:

- Les fichiers WAD
- liblist.gam
- config.cfg
- le répertoire média (qui contient les fichier AVI)
- les Dlls

Créer un nouveau PAK

Si vous créez un mod, vous avez un répertoire 'monmod' et bien votre .pak devra avoir le nom pak0.pak et se situer dans le répertoire 'monmod'. Dans QPed, faites 'New' et ensuite vous avez plusieurs solutions pour importer vos fichiers. La première consiste à créer tous les répertoires (Edit/Create Directory) et d'importer fichiers par fichiers (Object/Import from File). L'autre solution consiste à recréer toute l'architecture du .pak dans un répertoire 'x' (le nom n'a pas d'importance, mais ce répertoire x doit etre considéré comme la racine du mod) en faisant bien attention à ne pas placer les fichiers qui ne doivent pas être intégré au PAK. Ensuite faites Object/Import From Directory, sélectionnez le répertoire x, et tous les fichiers et répertoires qui se trouvaient DANS 'x' se retrouvent mainetnant dans le root. Sauvegardez et placez le .pak dans le répertoire 'monmod'.

Mettre le Pak à jour

Si vous créez un mod multi-joueurs, il est parfois pratique de mettre le mod à jour, sans pour autant refaire un download de la version complète alors qu'on possédait déjà la précédante.

Vous pouvez créer un fichier pak1.pak qui sera prioritaire sur le pak0.pak, ainsi chaques fois que vous ferez une release de votre mod, vous n'aurez qu'à placer les nouveaux éléments dans un fichier pak1.pak et de mettre le tout en d/l. Vous pouvez ensuite faire une nouvelle update avec un fichier pak2.pak etc....

Le gros désavantage de cette technique est qu'au bout d'un certain temps, la taille de votre mod sera très importante et si un joueur à envie de liberer de la place sur son disque dur..... ca peut etre dommage.