Botroutes WPS - par FSMOD
Certains modes comme CRSBOT ou PWNBOT exploitent des fichiers botroutes en extension WPS.
Il existe de nombreuses bibliothèques qui disposent d'un choix assez large de route WPS, toutefois j'ai écrit cette documentation à l'attention des managers qui voudraient s'essayer dans la conception de ce type de routes ou à tout le moins dans la modification de routes déjà existantes. Je précise que les routes WPS sont beaucoup plus élaborées que les routes WNT et sont plus adaptées à "l'intelligence" artificielle des bots des modes CRSBOT ou PWNBOT.
Avant de démarrer ce tuto je vous invite à télécharger le pack wps.rar ICI
Installation:
wps est désormais considéré comme un mode particulier qui va vous permettre la création des botroutes.
A ce stade je précise que les routes seront créées en mode client. Il n'est donc point besoin de solliciter un quelconque serveur.
Dans le répertoire principal SOF2, créer un raccourci vers le bureau à partir du fichier wps.bat
![]()
En résumé voici 2 captures illustrant l'emplacement des différents composants:
| Répertoire WPS | Répertoire principal SOF2 |
![]() |
![]() |
Examen des composants:
Lancement initial:
Important: Ne reportez pas le fichier sof2mp.cfg d'un autre mode vers votre répertoire wps. Le lancement initial a pour but d'en créer un, spécifique au mode wps, quels que soient vos paramètres préférés pour les autres modes. Si vous avez configuré vos paramètres dans un fichier autoexec.cfg, la plupart les réglages vidéo et audio seront déjà acquis.
Cliquer sur le raccourci wps.bat à partir du bureau. Après avoir réglé éventuellement les paramètres vidéo et audio, vous entrez dans le mode WPS comme le montre l'intro suivante:
On constate que, conformément aux réglages contenus dans le fichier map.cfg c'est bien la map mp_raven associée au gametype DM qui est sollicitée. Si le fichier map.cfg avait été renseigné de la sorte:
set g_gametype ctf
devmap mp_kam5
Vous auriez obtenu l'intro suivante, paré à accéder à la conception des routes pour la map mp_kam5 en mode CTF.
Initialisation des commandes:
Dans le bandeau supérieur des menus cliquez sur GO, la commande exec set sera lancée automatiquement.

Le retour en console confirme la validation des paramètres et vous informe par le CVAR wp_DebugRender = qtrue, que le programme est prêt pour la création des routes. Vous serez même gratifié d'un "bonnes routes" qui devrait vous encourager.
Les commandes et leur action en détail:
A votre arrivée sur la map vous constaterez la présence de traits verticaux rouges, il s'agit de la position des bots à leur point de respawn. Ils apparaissent au fur et à mesure que vous vous déplacez sur la map. A noter qu'indépendamment du gametype fixé dans le fichier map.cfg, tous les points de respawn apparaîtront, DM et CTF confondus.
| Bots visibles en DM | Bots visibles en CTF |
![]() |
![]() |
Commandes principales (WP=waypoint)
Commandes de déplacements
| Touches | Action |
| Z | Courir en avant |
| SHIFT + Z | Marcher en avant |
| ESPACE | Sauter |
NOTA: Les textes G_EditWPS retournés en mode info console sont natifs dans les sources originelles de CRSBOT. Toutefois pour des impératifs de clarté, j'ai codé des textes additifs en anglais en mode écran et surtout en français en mode chat, qui font clairement apparaître les actions assorties aux touches qui les ont générées. Voir les exemples ci-après.
Conseils et réflexions:
Lorsque que vous voulez viser un WP soit pour le sélectionner, le désélectionner ou l'effacer vous devez être très près ou quasiment à sa verticale. De toute manière si l'action n'est pas suivie d'effet, vous recevrez une information.
Pour gravir ou descendre une échelle, il suffit de définir un WP en bas de l'échelle et un autre vers le haut. Toutefois, ce précepte prévaut surtout pour le cas d'échelles courtes car il m'a été rapporté le constat que dans certaines maps, de longues échelles nécessitaient des WP intermédiaires, sans toutefois garantir à coup sur, un résultat efficient . Les difficultés liées au gravissement d'échelles sont d'ailleurs ciblées plus bas.
Les routes doivent être tracées au plus près des bots. Dans le cas contraire le bot restera à son point de respawn mais conservera ses facultés de tir. Au même titre assurez vous que tous les points de la map qui proposent des articles de jeux tels que armes, santé, armure, drapeaux, attaché-case, bombe, etc..., possèdent un WP proche de leur position.
A l'opposé des routes WNT dont l'élaboration consistait à démarrer d'un point et de tracer un seul vecteur ininterrompu englobant tous les points de respawn et les différents articles de jeu, les routes WPS proposent des vecteurs multiples reliés ou non entre eux, établissant ainsi une véritable toile d'araignée. A partir d'un noeud de routes le bot prendra la direction qu'il jugera la plus opportune en fonction des ennemis et selon les critères définis par son intelligence artificielle.
En conséquence, si vous aviez coutume de tracer des routes WNT, il faudra perdre cette habitude trop facile qui consiste à démarrer à un point de la map et de la parcourir aléatoirement sans jamais relever votre traceur. WPS est plus subtil et il faudra souvent interrompre son tracé en annulant la sélection d'un WP pour en choisir un nouveau, généralement un nœud, afin de dessiner un carroyage du plus bel effet. L'opération est plus longue mais le rendu est beaucoup plus en adéquation avec l'IA des bots.
| Dans cet exemple, à partir de son point de respawn, le bot rejoindra le noeud d'où partent 5 routes et pourra choisir sa direction en fonction de la présence des ennemis potentiels. | ![]() |
Ne soyez pas surpris si il s'écoule parfois un certain temps entre une action et son effet, notamment dans les actions visant à modifier des liens existants. Le programme a en effet besoin de recalculer les rangs de chaque WP et la puissance de votre ordinateur peut ne pas être suffisante pour mener à bien rapidement ces opérations.
Voici une vue qui illustre un exemple de carroyage de botroutes dans la map mp_finca1. A remarquer les routes à sens unique. Les WP A rejoignent les WP B mais pas l'inverse. La route interrompue juste avant les WP B caractérise l'impossibilité du bot de revenir sur ses pas.
Cas particuliers
Des problèmes peuvent se présenter dans certaines maps. J'ai recensé plusieurs cas mais je n'exposerai que les plus importants. Cette rubrique est surtout destinée à attirer une attention scrupuleuse de votre part chaque fois que vous vous lancerez dans la création des routes WPS.
Bots coincés
C'est le cas le plus répandu. Les concepteurs de maps placent souvent les points de spawn dans des endroits exigus ou créent de véritables pièges dans lesquels les bots peuvent tomber et se débattre sans pouvoir regagner le champ de bataille. Pour pallier à ce problème il suffira de prévoir des routes en conséquence.
EXEMPLES
| AVANT | APRES |
![]() |
![]() |
| AVANT | APRES |
![]() |
| AVANT | APRES |
![]() |
![]() |
| AVANT | ENSUITE | AU FINAL |
![]() |
![]() |
![]() |
| AVANT | APRES |
![]() |
![]() |
| TEAM | REMEDE | VUE EXTERNE |
![]() |
![]() |
![]() |
| Pierre peu visible | Bot en attente | Bot en mouvement vers la sortie |
![]() |
![]() |
![]() |
Conversion des routes d'un gametype vers un autre gametype.
Si vous avez déjà créé des routes pour une map en CTF ou si vous les avez récupérées sur le net en vous méfiant toutefois de leur intégrité, vous pouvez les transformer aisément en routes DM. Au prix de quelques modifications cela vous évitera de tout réécrire. La conversion inverse est bien entendu envisageable.
1er point : Prenons pour exemple la map mp_aztec. Vous possédez le fichier route CTF soit mp_aztec_ctf.wpsVotre fichier route devient donc mp_aztec_dm.wps
2ème point : Dans votre répertoire WPS ouvrez le fichier map.cfg et entrez les paramètres suivants
3ème point : Lancez le programme wps. Vérifiez que toutes les routes passent à proximité des points de respawn. Au besoin corrigez les.
ATTENTION : Beaucoup de maps différent dans leur leur conception, d'un gametype à l'autre. Des portes peuvent être fermées, des cloisons érigées ou des obstacles ajoutés. | CTF | DM |
![]() |
![]() |
Maps buguées
Il arrive parfois, malgré une élaboration des routes dans le respect des règles de l'art, que les résultats obtenus ne correspondent pas vraiment à vos attentes. Dans ce cas il convient peut-être de se pencher sur le codage même de la map. Bien entendu il n'est pas question de recoder la map même si vous possédez les sources mais avec quelques modifications simples, il est possible de lui corriger ses défauts.
J'ai constaté d'une manière générale que les bots descendent plus facilement les échelles qu'ils ne les gravissent et cette analyse vaut autant pour les routes WNT que WPS. Ce n'est pas toujours probant sur la plupart des maps mais certaines se montrent très hostiles à l'escalade des bots. Je ne saurais dire quelle en est la cause précise pour n'avoir jamais tenté la création de map mais ce fait est avéré.
EXEMPLE : Dans la map dhc_roost il est impossible à coup sur de faire grimper les bots le long des échelles. Ils hésitent, tournent en rond ou restent bloqués sur un échelon le nez dans les étoiles. Ces bots sont au nombre de trois, un au fond du trou au milieu de la place, les deux autres à mi-parcours des échelles vers la corniche supérieure.
Une seule solution : éradiquer ces bots. Et c'est là qu'il va falloir modifier la map elle-même.
1ère étape : Lancer la fonction Ent Editor sous le mode MDK. Voir documentation ici
2ème étape : A l'aide de Pakscape, décompactez le fichier dhc_roost.pk3 
De la même manière effacer les 2 autres bots dont voici les coordonnées, repérées précédemment avec Ent Editor :

3ème étape : sauvegardez le fichier dhc_roost.bsp, le replacer dans le répertoire maps et sauvegardez dhc_roost.pk3 sous Pakscape.Placez ce fichier sur votre serveur et créez vos routes.
Afin de préserver une bonne circulation des bots dans toute la map on pourra conserver l'usage des échelles menant aux corniches mais uniquement dans un sens descendant par paliers successifs et en sens unique comme le montre l'illustration suivante.
| Bot venant de la corniche | 1er palier sans retour | 2ème palier sans retour | Rez-de-chaussée sans retour |
![]() |
![]() |
![]() |
![]() |
La méthode d'élimination des bots indisciplinés par l'emploi de la fonction Ent Editor sous MDK peut être dans certains cas, heureusement rares, une nécessité absolue pour les éradiquer et conserver le bon usage d'une map que vous affectionnez particulièrement.
Le cas le plus extrême est le point de spawn enchâssé dans le décor. Ce bug de codage de la map incapacite aussi bien le bot que le joueur réél qui se retrouve alors les pieds dans le sol ou un bras dans le mur avec l'impossibilité de se mouvoir.
Si vous examinez le fichier qconsole.log du serveur vous découvrirez sans doute pour certaines maps ce genre de libellé:

Ces problèmes ne sont pas toujours liés aux maps customisées car la map standard mp_hk1 bien connue depuis les origines de SOF2, montre ce surprenant log où les bots se retrouvent massivement englués dans le décor. Heureusement que ces implantations ne sont pas bloquantes:

Un autre exempe : dans la map factory_assault, bien connue des anciens qui ont pratiqué le mode GOLDRUSH, il existe un point de spawn vraiment bloquant qui immobilise tant le bot que le joueur réel et qu'il convient en conséquence de corriger au coeur de la map.
Les coordonnées sont récupérables dans le fichier qconsole.log :

Cette avarie se traduit sur le terrain par la jambe droite du sujet prisonnière d'une console informatique :
On procédera donc , comme dans l'exemple de la map dhc_root, à la suppression du paragraphe concerné, dans le fichier factory_assault.bsp.
Encore un exemple: Dans la map mp_yordan, on peut découvrir un point de respawn sous la map. A part le suicide, vous ne pourrez pas vous échapper si vous réapparaissez à ces coordonnées. Sans doute un moment de fatigue du 'mapeur' 
La solution, comme d'habitude est de supprimer le paragraphe erroné dans le fichier mp_yordan.bsp.

Un dernier exemple : Dans la map mp_dust2, si vous réapparaissez au point -1416, 2760,-48, vous aurez au moins la chance de voir arriver votre exécuteur, mais vous ne pourrez pas riposter. 
A noter que la map the_clash, conçue sur la même matrice que mp_dust2, présente le même défaut.
IMPORTANT : Vous allez peut-être penser que le fichier pk3 modifié installé sur le serveur, ne sera pas le même que celui que possèdent les clients et que des anomalies de correspondance vont apparaître.
Non il n'en sera rien car c'est le fichier du serveur qui prime sur celui du client. De plus la partie modifiée du fichier BSP n'a été opérée que dans la zone de texte, la partie binaire n'ayant pas été altérée.
Reconnaître les bots en fonction du gametype.
Ce point est très important car comme il a été mentionné plus haut, quel que soit le gametype choisi dans le fichier map.cfg, tous les bots apparaîtront sur le terrain. En général, les bots associés aux gametype en équipe (CTF, TDM,etc) seront groupés en ordre serrés dans 2 teams distinctes. Leur identification sera donc aisée. Toutefois quelques bots en DM pourront y être mêlés et "oubliés" par une route trop éloignée.
Exemple : Considérons la map mp_aimtrain. Sous ce préau les bots DM et CTF sont alignés comme le montre ces 2 captures:
| Sous WPS ROUTES MAKER | Sous MDK EDITOR |
![]() |
![]() |
En fait le seul bot DM de cet alignement se situe à l'extrême gauche, les autres sont des bots CTF. Bien entendu si une route est créée d'un bout à l'autre de cet alignement, elle pourra servir pour tous les gametypes. Toutefois, dans certaines maps cette clarté dans la disposition des bots n'est pas toujours aussi évidente.
Comment les différencier?
Dans le doute il convient de se plonger dans le fichier BSP de la map visée. Les classes des bots sont ainsi déclarées:
| BOT DM | BOT TEAM |
![]() |
![]() |
Ces "classname" apparaissent d'ailleurs très clairement dans ENT EDITOR de MDK où l'on retrouve les bots de la map mp_aimtrain.
| BOT DM | BOT TEAM |
![]() |
![]() |
Les fantaisies délirantes glanées sur le net
Je terminerai cette rubrique des cas particuliers en évoquant les horreurs que j'ai pu découvrir sur le net. J'ai téléchargé une foultitude de fichiers route tant en WNT qu'en WPS et je me suis souvent trouvé en face de délires graphiques que je n'aurais même pas imaginés dans mes idées les plus noires.
La palme revient sans doute à la map 13th_floor dont l'avarie m'a été signalée par Mjr Miche, manager du serveur m8 (click here), lequel avait connu un plantage serveur à l'exploitation de cette map avec le traditionnel message:
Error: BotLibShutdown: bot library used before being setup.
Voici des captures illustrant les 2 états entre l'incongruité de l'original et le nouveau tracé accompli dans le respect du travail bien fait !
| ORIGINAL | NOUVEAU |
![]() |
![]() |
A ce stade il convient de noter que le poids du fichier routes doit être un indice sur la pertinence de sa conception. Dans le cas de la map ci dessus, il affichait un poids de 48 k. Au regard d'une petite map de 540 k, c'est exorbitant. Le nouveau fichier que j'ai créé ne dépasse pas les 7 k.
Voici pêle-mêle quelques autres exemples parmi tant d'autres:
map chem1 : Les routes traversent même les murs :
![]() |
![]() |
![]() |
map fragcity : Les bots doivent connaître un vrai calvaire pour retrouver leur chemin !
![]() |
![]() |
map mp_air1 : Il est curieux que cette map standard qui possédait déjà à l'origine des routes parfaitement conçues ait pu faire l'objet d'un tel massacre:
map thecarlot : Pourquoi 3 routes parallèles pour grimper une échelle étroite, une suffit largement et évite les embouteillages !
J'arrêterai ici mon développement sur ces incohérences conceptuelles aux fins ne pas fatiguer les lecteurs et encombrer inutilement le site. Mais je pense que cela était nécessaire et suffisant pour que vous abordiez avec prudence certains sites qui hébergent des produits douteux, corrompus ou inexploitables.
Je pense surtout que certains créateurs de routes WPS ont été largement influencés, voire déformés pour avoir trop exercé la conception de routes WNT. Les exemples ci-dessus évoqués en sont le probant exemple.
Pour le fun voici des illustrations qui résument ce qu'il faut faire et ce qu'il ne faut pas faire, en matière de création de routes WPS.
![]() |
![]() |
![]() |
![]() |
Un dernier point :
Aide
A tout moment vous pouvez cliquer sur l'option Aide du bandeau supérieur des menus pour obtenir un rappel des commandes.
![]() |
![]() |
![]() |
![]() |
Une demo pour terminer
Ce fichier peut être lu dans n'importe quel mode. Si vous désirez le visionner en mode WPS il vous suffira au préalable de créer dans le répertoire WPS un répertoire demos et d'y inclure le présent fichier wps.dm_2004.
La création de botroutes WPS ne présente rien d'insurmontable mais requiert surtout de la patience et beaucoup d'essais successifs.
Bon courage!
Dernière mise à jour du 27 mai 2023
-=
=-