Comment et avec quoi compiler son mod ?

Écrit le 03/07/2003 par Bicou
Dernière mise à jour : 30/01/2006

Le logiciel

Il faut impérativement Microsoft Visual C++ v6.0. Il existe une version gratuite : Introduction Edition.

Vous avez plusieurs possibilités :

Acheter : la version étudiante de Visual, qui est la moins chère (on doit tourner autour des 20-30 ¤ (150-200F)). Ensuite pour les riches, y'a les versions professionnal, enterprise...

Avoir gratuitement : Y'a la version d'introduction qui est comme la démo d'un jeu. Y'a tout ce qu'il faut, et même plus : un petit message d'erreur s'affiche dès qu'on charge l'une des 2 DLLs créées. Rien de grave, mais ça fait pas très propre.

La solution idéale : vous êtes un newbie du C++ également, achetez un bouquin à la fnac pour 50 ¤ : vous avez 400p d'explication du C++ et Visual C++ Intro Edition.
Magique !

(Ndlr de Duke : on trouve même de supers livres pour débutant et bien complets de 800 pages en édition de poche pour 10 ¤)

Comment ca marche ?

A partir de maintenant je considère que vous comprenez le C++ (et tout le vocabulaire).

Il faut d'abord télécharger le SDK, mais ça c'est déjà fait je pense. Sinon vous le trouverez dans la partie Download du site.

Ensuite décompressez tout dans un répertoire quelconque. Il contient :

VGUI c'est le répertoire qui contient tous les .h relatifs au VGUI, ainsi que le .lib nécessaire à la compilation.

En fait ce qu'on va modifier dans HL c'est le contenu de cl_dll et de dlls, qui vont produire respectivement client.dll et hl.dll à la compilation.

Visual C++ marche avec des workspaces et des projects. Comme leur nom l'indique, les workspaces sont des espaces de travail. Bon c'est de la traduction foireuse de l'anglais, en gros ça veut dire que c'est l'« endroit » où on travaille sur quelque chose de précis, ici un mod. Les projects quant à eux servent à produire 1 fichier à la compilation.
Nous on veut compiler client.dll et hl.dll, donc on aura deux projects à insérer dans notre workspace.

Si vous avez rien capté à ce que je viens de dire, c'est pas grave, vous allez comprendre comme des grands ;-) (ce n'est pas compliqué en pratique).

Comment configurer

C'est un peu chiant, ça prend 5 mins, mais c'est très utile.

Ouvrez Visual C++ ;-) et faites File>New..., choisissez Blank Workspace depuis l'onglet Workspaces, à droite indiquez l'endroit où vous avez installé le SDK (Source Code) et tapez le nom du workspace (mettez les initiales du mod par exemple). Vérifiez bien que le dossier est toujours le bon (Visual a rajouté ce que vous venez de taper...). Voilà, faites OK.

Vous vous retrouvez avec un nouveau workspace, mais il est un peu vide... On va rajouter les deux projects (client et serveur) : à gauche, cliquez droit sur Workspace *** : 0 project(s) et choisissez Insert project into Workspace. Choisissez successivement cl_dll/cl_dll.dsp et dlls/hl.dsp.
Voilà, on a notre workspace et nos deux projects, on peut travailler.

Maintenant faut configurer les projects pour que ça soit un peu plus pratique à utiliser. Commencez par cliquer sur Settings depuis le menu Project :

- Mettez Settings For à All configurations.

NB : les configurations sont les différentes manières de compiler ses DLLS : en debug (pour déboguer :p) et en release, qui est la compilation finale : elle prend poins de place (1Mo vs. 400ko)

Sélectionnez le project client (cl_dll), prenez l'onglet Custom Build. Ce que vous allez taper sera exécuté à la fin de la compile du project comme si vous le tapiez sous DOS. Mettez les paramètres comme ceci :

Description : Copie vers /cl_dlls
Commands : copy $(TargetDir)client.dll C:\Sierra\Half-Life\MonMod\cl_dlls
Outputs : C:\Sierra\Half-Life\MonMod\cl_dlls\client.dll

Pensez bien à remplacer C:\Sierra\Half-Life\MonMod par le bon chemin si besoin. On fait pareil avec le project serveur :

Description : Copie vers /dlls
Commands : copy $(TargetDir)hl.dll C:\Sierra\Half-Life\MonMod\dlls
Outputs : C:\Sierra\Half-Life\MonMod\dlls\hl.dll

- Mettez Settings For à Debug. On va configurer le mode debug.

Prenez l'onglet Debug et mettez, pour la Category, General :

Executable for debug session : C:\Sierra\Half-Life\hl.exe
Working directory : C:\Sierra\Half-Life
Program arguments : -dev -console -game ** -windowed +map ***

Pareil, remplacez bien les * par ce qui correspond à votre mod et votre map si vous voulez que ça lance une map automatiquement (mode solo).

Maintenant changez Category à Additionnal DLLs, et indiquez les deux DLLs compilées (ou qui le seront) :
C:\Sierra\Half-Life\MonMod\dlls\hl.dll
C:\Sierra\Half-Life\MonMod\cl_dlls\client.dll

Ensuite mettez l'optimization à Disable (debug) depuis l'onglet C/C++. Vérifiez que c'est bien Program Database for Edit and Continue. Voilà c'est bon pour le debug.

- Mettez Settings For à Win32 Release. On va configurer le mode release.
Pour le release faut juste mettre l'optimization à Maximize speed depuis l'onglet C/C++, et vérifier qu'on a bien Program database.

- Faites Project>Set active project>hl, et cliquez sur Dependencies dans le menu Project, cochez la case cl_dll.

C'est formidable, Visual est configuré. Maintenant faites Build>Set active configuration et prenez hl - Win32 Debug pour passer en mode debug. Au moment de rendre public votre mod, ayez une pensée pour les pauvres 56k : mettez la configuration à hl - Win32 Release.

Conclusion

Voilà, vous savez tout sur le compilateur. Reste plus qu'à faire vos modifications :-)