Documentation
Toutes les pages
-  -  par FSMOD

DOCUMENTATION

   

Cette documentation, loin d'être exhaustive, retrace au fil des mois et des années, la consignation de mes notes, constatations, développements et essais en tous genres au chevet de SOF2.

Si vous n'avez pas la patience minimum requise pour lire les rubriques jusqu'à leur conclusion et d'en comprendre la substantifique moelle, il est inutile de vous détériorer les neurones. Contentez vous de jouer avec de mauvais paramètres, de fausses idées sur les vrais réglages et de connexions hasardeuses sur des serveurs dont vous n'utilisez même pas un mode identique.

Ne m'en veuillez pas d'avoir usé de concepts explicatifs qui vous ont semblé abscons mais qui, à contrario et je l'espère, éclaireront la frange ésotérique des connaisseurs, hélas de plus en plus ténue.

modemploi.jpg

-= eek =-

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

Publié le 04/05/2021 17:01  Prévisualiser...   Imprimer...   Haut
4 - Les Textures  -  par FSMOD

LES TEXTURES

Les fichiers ent permettent des concepts plus élaborés que l'ajout de simple modèles BSP ou autres items. Ils autorisent la refonte complète du décor d'une map offrant ainsi un dépaysement par rapport aux univers archi connus des maps habituelles.

Si vous désirez changer les décors d'une map sans pour autant ajouter quelque modèle que ce soit, il suffira de créer un fichier ent par la méthode décrite dans le volet Ent Editor.

Les changements de décors ne seront pas générés automatiquement et vous devrez saisir les textes manuellement dans le fichier ent.

Les exemples qui suivent sont des configurations types qui vous permettront de progresser. 

b_list.gif     EXEMPLE 1  

Dans la map mp_raven vous considérez que la moquette des couloirs est trop salissante et qu'un joli parquet damassé serait plus seyant.

mini_raven_floor_carpet.jpg

gysample.gif  REMARQUE: Avant de commencer il convient de préciser que tous les symboles graphiques sont inclus dans le fichier système textures0.pk3 qu'il vous faudra décompacter pour vos recherches.

Puis il vous faudra identifier l'image basique qui, par sa multiplication, a permis la pose de la moquette.

Dans cet exemple l'image se trouve dans le chemin suivant:  textures/airport/carpet_runner
 

mini_carpet_runner.jpg

Si vous éditez le fichier mp_raven.bsp, une recherche sur le terme "carpet_runner" renverra la ligne suivante (en grisé), ce qui confirme le chemin vers l'image:

bsp_raven_carpet.jpg

gysample.gif  REMARQUE: Toutes les références aux textures sont libellées en texte clair dans les premières lignes de la première partie binaire. Ceci est valable quelle que soit la map.

Le motif de remplacement choisi se situe à textures/finca/floor_decorwood

mini_floor_decorwood.jpg

Pour activer la permutation des motifs écrivez le paragraphe suivant dans le fichier mp_raven.ent

ent_carpet_wood.jpg

Après avoir placé le fichier mp_raven.ent dans votre répertoire serveur MODS (sous-répertoire VAR1 pour ne pas altérer la map d'origine), lancez le serveur et à votre arrivée dans la map vous marcherez désormais sur un beau parquet ciré !

mini_raven_floor_wood.jpg

b_list.gif     EXEMPLE 2   

On reste dans la map mp_raven. L'exemple portera sur un changement des briques de façade extérieure.

mini_raven_orig_mur.jpg

Le motif de ces briques se trouve ici: textures/hongkong/brick1

mini_brick1.jpg

La ligne concernée est bien visible dans la partie binaire du fichier mp_raven.bsp

bsp_raven_brick.jpg

Le motif de remplacement se trouve à : textures/jordan/brick_brown

mini_brick_brown.jpg

Comme précédemment, pour activer la permutation des motifs, écrivez le paragraphe suivant dans le fichier mp_raven.ent

ent_brick.jpg

Après avoir lancé la map doté de son fichier ent modifié, la façade aura cet aspect:

mini_raven_mod_mur.jpg

b_list.gif     EXEMPLE 3   

Un écran éteint dans la map mp_shop n'est pas du plus bel effet

mini_shop_orig_tv.jpg

L'image de l'écran est située ici textures/finca/tv_bigscreen

mini_tv_bigscreen.jpg

Comme le confirme cet extrait du fichier mp_shop.bsp

bsp_shop_tv.jpg

Le choix d'un nouvel écran s'est arrêté sur ce motif disponible ici : textures/armory/comwall1

mini_comwall1.jpg

La permutation des motifs sera effective après avoir écrit le paragraphe suivant dans le fichier mp_shop.ent

ent_tvscreen.jpg

Après avoir lancé la map doté de son fichier ent modifié, l'écran aura cet aspect:

mini_shop_mod_tv.jpg

gysample.gif  REMARQUE: Dans cet exemple les 2 images étaient au même format soit 512 x 512. Le codage de la map les a volontairement redimensionné sous une forme rectangulaire.

Au final la salle de conférence pourrait présenter cet aspect après d'autres modifications que je vous laisse imaginer.

mini_shop_mod.jpg

b_list.gif       EXEMPLE 4   

Voici une difficulté supplémentaire car outre l'ajout d'un modèle BSP, l'opération portera sur la modification même de la texture du modèle ajouté.

Considérons la map mp_raven dans laquelle un tapis de neige va devoir recouvrir le décor. En procédant comme il a été évoqué plus haut, il suffira de recherche tous les motifs constitutifs du sol, pavés, bordures, toiture, etc puis de les identifier dans le fichier mp_raven.bsp et enfin, de leur substituer une surface plane enneigée.

Le motif neige sera choisi ici: textures/kamchatka/snow01  

mini_snow01.jpg

L'aperçu suivant extrait du fichier mp_hk1.ent montre 5 surfaces qui ont été remplacées par la copie multiple du motif snow01

ent_snow_flat.jpg

Et voila le résultat sur la map:

mini_hk1_snow_flat.jpg

Jusque là rien de bien nouveau. On a appliqué les procédures des exemples précédents.

Mais on se propose maintenant d'ajouter des monticules de neige résultant d'une grosse tempête. La solution est de choisir un modèle BSP illustrant une forme de tertre et de le plaquer au sol.

Le motif choisi est ici : instances/kamchatka/cover_snow1

mini_cover_snow1.jpg

On va commencer par positionner quelques uns de ces monticules aléatoirement sur le sol, par l'écriture des paragraphes suivants dans le fichier mp_hk1.ent

A noter que le placement de ces monticules pourra être fait aisément avec la fonction Ent Editor.

ent_relief.jpg

Ce qui donne cela sur la map

mini_hk1_relief.jpg

Toutefois malgré son nom, ce modèle représente une neige bien terne et sans rapport avec la blancheur de la poudreuse du décor.

gysample.gif  REMARQUE: Un modèle BSP a la particularité de posséder ses propres textures. Il suffira donc de remplacer une texture codée à l'origine, par une nouvelle texture de son choix. L'opération sera similaire aux exemples précédents.

En éditant le fichier cover_snow1.bsp on identifie la ligne pointant vers la texture à savoir textures/instances/cave_rockside

bsp_cover_snow1.jpg

On se propose donc de changer cette texture par un motif de neige différent de celui du sol.

Il est ici : textures/kamchatka/snow_2

mini_snow_2.jpg

La substitution des motifs sera exécutée par le paragraphe suivant inscrit dans le fichier mp_hk1.ent

ent_modif_bsp.jpg

Ce paragraphe unique s'appliquera à tous les modèles cover_snow1

Et au final, la map aura cet aspect

mini_hk1_snow_relief.jpg

b_list.gif      EXEMPLE 5   

Dans la map mp_trainyard, l'affichage mural d'oriflammes, entre autres posters idéologiques de triste mémoire, et malgré un graphisme soigné, n'était pas de nature à me satisfaire.

mini_cloth_masked_flag_german1_npkopie.jpg mini_cloth_masked_flag_kriegs1_npkopie.jpg

A ce mauvais gout de la part du codeur, j'ai substitué des fenêtres beaucoup moins guerrières.

glass_nosight_fwindow2kopie.jpg glass_nosight_fwindow3kopie.jpg

Un point particulier qu'il convient de souligner et c'est le but de cet exemple, c'est que les images de remplacement proviennent d'un répertoire textures encapsulé dans le fichier mp_trainyard.pk3 et non pas du fichier système textures.pk3. L' effet est le même car le but au final est bien de partager une banque d'images communes entre le client et le serveur. La plupart des maps possèdent d'ailleurs leur propres textures et cela offre plus de possibilités dans la recherche d'inspiration.

Voici des extraits du fichier mp_trainyard.bsp qui indiquent le chemin des images d'origine.

bsp_trainyard_flag1.jpg bsp_trainyard_flag2.jpg

Extrait du fichier mp_trainyard.ent visant à substituer les images.

ent_trainyard.jpg

Pour info le répertoire 2_cod est intégré dans le répertoire textures et contient toutes les images illustrant la map.

Au final on obtient ce résultat

AVANT APRES
mini_trainyard_flags.jpg mini_trainyard_windows.jpg

b_list.gif      EXEMPLE 6   

On a commencé par le sol, on finira par le plafond, en l'occurrence le ciel, qui lui aussi, mérite bien un relookage laugh

On prendra comme exemple la map mp_finca et la recherche dans le fichier mp_finca.bsp portera sur le mot skies.

bsp_sky_mp_finca.jpg

gysample.gif  REMARQUE : Les thèmes de ciel se retrouvent dans textures/skies et col2_jersey se fonde sur le générique col2. Les motifs de substitution seront toujours désignés sans suffixe.

Voici quelques variations dans le ciel de mp_finca avec leur script dans le fichier mp_finca.ent

RENDU SCRIPT MOTIF DE SUBSTITUTION
mini_mp_finca_sky_air5.jpg ent_air5.jpg mini_air5.jpg
mini_mp_finca_sky_col4.jpg ent_col4.jpg mini_col4.jpg
mini_mp_finca_sky_col8.jpg ent_col8.jpg mini_col8.jpg
mini_mp_finca_sky_col10.jpg ent_col10.jpg mini_col10.jpg
mini_mp_finca_sky_hk1.jpg ent_hk1.jpg mini_hk1.jpg

b_list.gif      CONCLUSION    

Les modifications graphiques d'une map demandent pas mal de recherches empiriques et d'essais parfois peu concluants. Ce n'est pas une fin en soi mais juste un moment de fun et de cogitation cérébrale.

Les exemples qui ont servi à ce développement n'ont rien d'exhaustifs. Ce ne sont que quelques bases sans prétention qui pourront peut-être vous donner l'envie de 'bricoler' un peu les maps.

Un point reste décevant quels que soient les efforts déployés, c'est l'absence rédhibitoire des ombres, car tout placage d'un nouveau motif, effacera les variations lumineuses de la couche précédente et il n'y aura aucun moyen de les régénérer.

Un dernier point, après avoir créé votre oeuvre, n'oubliez pas de la signer par un message dans le premier paragraphe du fichier ent.

ent_sign.jpg

Bon courage !

-=frown=-

Publié le 04/05/2021 16:57  Prévisualiser...   Imprimer...   Haut
3 - Ent Editor  -  par FSMOD

La Fonction Ent Editor

https://www.gif-maniac.com/gifs/54/53556.gif Cette fonction est exclusivement réservée au manager d'un serveur (Sysop)    

b_list.gif    GENERALITES  

Le mode MDK a la particularité d'intégrer une fonction dédiée à la conception de fichier en extension ent. Le fichier ent est associé à une map, il porte le même nom et a le pouvoir de modifier certains éléments de cette map comme les coordonnées et le nombre des points de respawn. Il permet aussi d'ajouter de la végétation, des édifices, des accessoires divers, des points de récupération d'armes et de munitions et d'autres concepts plus élaborés. Il est intégré au serveur et le joueur lambda n'a pas à se soucier de sa gestion.

Serveur et client possèdent par défaut la même map originelle et toutes les données contenues dans le fichier ent sont transmises au client lors des échanges de paquets. Le client évolue donc dans un décor modifié alors qu'il utilise la map standard. Il n'existe aucun problème d'incompatibilité.

Le fichier ent est un fichier texte et à ce titre il peut être ouvert, interprété et modifié avec n'importe quel éditeur de texte.

b_list.gif    LES BASES  

Pour mieux comprendre la conception d'un fichier ent il est nécessaire d'ouvrir un fichier map. On prendra pour exemple la map VOK.

En décompactant le fichier VOK.pk3 on obtient plusieurs répertoires. Le seul qui nous intéressera est MAPS. Il contient le fichier principal à savoir VOK.bsp. A noter que tous les fichiers pk3 concernant les maps sont tous construits sur le même principe.

En éditant VOK.bsp on peut s'apercevoir qu'il contient une zone de texte parfaitement claire comprise entre 2 zones de contenus binaires.

Les 2 captures suivantes illustrent ce qui précède. La zone de texte a été tronquée par souci de concision.

Début de la zone de texte Fin de la zone de Texte
vok_deb.jpg vok_fin.jpg

On remarque que cette zone texte englobe essentiellement une suite de paragraphes marqués par une accolade ouvrante et fermante. Un point de détail particulier concerne le premier paragraphe qui semble ne pas avoir d'accolade ouvrante. En fait cette accolade est située en fin de la dernière ligne binaire (ligne 15912) et n'apparaît pas sur la capture. D'une manière générale chaque paragraphe doit toujours être inscrit entre ses 2 accolades. L'absence de l'une ou l'autre entraine invariablement le plantage du serveur. 

La zone de texte, du début à sa fin représente en quelque sorte le contenu typique d'un fichier ent.

demo.png IMPORTANT: Pour tous vos essais avec le mode Ent Editor il est conseillé de procéder en LAN plutôt que sur votre serveur distant car durant l'édition d'une map, le serveur devient inaccessible à tout joueur et même aux bots. La création d'un serveur LAN passe par une installation identique à un serveur distant (Windows ou Linux). Ne pas utiliser l'option 'CREATE SERVER' du module client qui ne donnera pas satisfaction.

 b_list.gif     ENT EDITOR - PREPARATION  

Nous conservons toujours la map VOK pour la suite du développement.

fin.gif  Etablir un simple fichier mapcycle comme suit:

mapcycle.jpg

fin.gif  Lancer le serveur LAN et s'y connecter

fin.gif  Ouvrir le menu MDK / BINDS et créer un bind spécifique, soit ici la touche END (fin)

bind.jpg

fin.gif  Cliquer sur la touche END pour ouvrir le menu du mode Ent Editor.

start.jpg

Le panel qui s'affiche à la droite de l'image sur la map VOK retrace toutes les commandes nécessaires et suffisantes à la création du fichier ENT.
A noter que l'arrivée sur la map est en mode spectateur et ce mode restera actif tout au long de la création.

Ma dernière version client n'affiche plus les 2 lignes SPECTATOR en bas d'écran afin de faciliter la lecture des références sous-titrées des modèles et items affichés comme le montrait cette ancienne capture:

bot_mix.jpg

Avant de continuer, quelques points de détail sur ce panel

Groupes Attribution
part1.jpg
 Boutons dédiés au choix des différents objets, bots, modèles MD3, modèles BSP,
 flags, briefcase, pickup armes, santé, armure et backpacks.

part2.jpg
  Les touches X,Y et Z autorisent le déplacement des objets en coordonnées
 positives ou négatives, sur les 3 axes orthonormés.
 Les touches + et - fixent le pas d'incrémentation en pixel. Le pas s'affiche dans la
 fenêtre "Move Increments"
 La valeur 1 permet une précision extrême.

 La touche C place automatiquement l'objet à la position de l'observateur (vous)

part3.jpg
  Les touches numérales font pivoter l'objet d'un valeur angulaire équivalente à
  leur valeur faciale. Les pas minimum sont de 45°.
  La touche C oriente l'objet orthogonalement à l'axe de vue de l'observateur.
  Selon sa position, l'orientation de l'objet peut être réglée au degré près.

 

part4.jpg
  Chaque objet créé reçoit un ID (numéro). Leur sélection permet de les situer, 
  de les supprimer ou de les cloner.
  Cette dernière option est très pratique pour dupliquer des objets identiques
  à des coordonnées différentes (grillage, végétation herbeuse etc..)
 
part5.jpg
 1ère icône : Lancement du mode Ent Editor
  
  2ème icône : Gestion des fichiers
b_list.gif     ENT EDITOR - RECUPERATION DU FICHIER ENT  

Il convient maintenant d'extraire cette partie texte du fichier BSP aux fins de créer le fichier ent sur lequel s'appuieront toutes les modifications que l'on prévoie d'accomplir. Pour ce faire, la procédure est la suivante:

fin.gif  Cliquer sur le bouton Ent Editor. Cette action est unique mais nécessaire pour démarrer le mode. Elle est irréversible malgré un nouvel appui sur ce bouton.

btn_enteditor.jpg

La map est relancée et vous êtes maintenant en mode Ent Editor. Cette action va créer automatiquement le fichier vok_sources.ent dans le répertoire edits du serveur LAN. Il servira désormais de base pour toutes vos opérations de remodelage.

fin.gif  Cliquer sur le bouton Files.

btn_files.jpg

fin.gif  Cliquer sur le bouton Load Sources Data. Cette action va relancer la map et affichera tous les modèles et les items du fichier vok_sources.ent.

load_sces_btn.jpg

Voici une vue partielle de la map où tous les objets sont visibles. A noter toutefois que la plupart d'entre eux sont simplement représentés par 3 vecteurs orthonormés. Leur identification est toujours possible grâce à un baptême qui s'affiche en se rapprochant de leur position.

mini_vok_sources.jpg

On peut donc répertorier les plus importants comme le montre le tableau suivant:

VUE CLASSNAME  DESIGNATION
gametype_player.jpg gametype_player
  Point de respawn d'un bot spécifique aux gametype
  d'équipe  codés dans le fichier BSP et pointés dans
  un fichier arena.

  CTF, TDM, etc...

info_player_deathmatch.jpg info_player_deathmatch
   Point de respawn d'un bot uniquement dédié au DM.
  La plupart des erreurs viennent de la  confusion fréquente
  entre le classname gametype_player et le présent
  classname.
pickup_weapon_m60.jpg pickup_weapon_M60   Point de ramassage d'une arme. Ici le M60.
target_location.jpg target_location
 
   Point sur lequel un joueur pourra donner sa position
  en actionnant le token #L.
  Dans cet exemple le terme désert s'affichera en chat.

teleport.jpg target_teleporter
  Point de téléportage. Cette option est très intéressante
  pour identifier facilement ces points dans des maps
  particulières. 
gametype_item_flag.jpg gametype_item
  Item spécifique au gametype. Ici le drapeau de l'équipe
  rouge en CTF.
pickup_backpack.jpg pickup_backpack
  Point de ramassage d'un sac de ravitaillement.
pickup_ammo_9.jpg pickup_ammo_9mm
  Point de ramassage de munitions. Ici du calibre 9mm.
briefcase.jpg gametype_item  
  Item spécifique au gametype. Ici lla mallette propre au
  STQ entre autres gametypes.
 

 

b_list.gif     ENT EDITOR - CREATION D'UN POINT DE SPAWN  

On se fixe pour objectif d'ajouter un bot pour le DM.

Pressez à nouveau le bind END pour récupérer l'affichage du panel de commandes. A noter qu'après chaque sélection d'un objet il sera nécessaire d'ouvrir à nouveau le panel de commandes pour choisir l'action suivante.

fin.gif  Cliquer sur le bouton Spawn point.

btn_spawn.jpg

fin.gif  Sélectionner un point de spawn en fonction du gametype (DM dans l'exemple). A noter que la création du fichier ENT prendra un suffixe propre au gametype choisi soit ici, vok_dm.ent

bot_spawn.jpg

fin.gif  Cliquer sur le bouton Deathmatch/Team, un nouveau bot sera créé.

fin.gif  Revenir à la position du bot.

bot_add.jpg

La ligne Entity ID prend le numéro 323 ce qui signifie que le codeur qui a conçu la map a placé 322 items, models et autres objets. Le classname précise la nature de l'occupant du spawn en l'occurrence un joueur DM.
Les angles de présentation du bot pourront être redéfinis avec l'option Rotate du panel de commandes et Origin indique les coordonnées triples de l'objet sur la map.

Tous ses renseignements apparaitront chaque fois que vous survolerez ou vous rapprocherez d'un objet créé sur la map.

gysample.gif  IMPORTANT: Un point de respawn doit affleurer le sol mais ne jamais être dans le sol, auquel cas le bot et surtout le joueur, risquent fort de se retrouver les pieds pris dans la masse avec l'impossibilité de se mouvoir. Il est donc absolument nécessaire d'ajuster la valeur Y au pixel près. Par mesure de prudence quelques pixels au-dessus du sol ne seront pas à dédaigner. Certains codeurs de maps n'hésitent pas d'ailleurs, à placer le spawn à bonne hauteur du sol.

b_list.gif     ENT EDITOR - CREATION D'UN ITEM  

fin.gif  Cliquer sur le bouton Items

btn_items.jpg

fin.gif  Choisir l'objet dans la liste déroulante et procéder comme précédemment. 

panel_items.jpg

b_list.gif     ENT EDITOR - CREATION D'UN POINT DE PICKUP WEAPON  

fin.gif  Cliquez sur le bouton Wpn pickup

btn_wpn.jpg

fin.gif  Choisir l'objet dans la liste déroulante et procéder comme précédemment.

panel_wpn.jpg

b_list.gif     ENT EDITOR - CREATION D'UN POINT DE PICKUP ACCESSOIRES  

fin.gif  Cliquer sur le bouton Acc pickup

btn_acc.jpg

fin.gif  Choisir l'objet dans la liste déroulante et procéder comme précédemment.

panel_acc.jpg

b_list.gif     ENT EDITOR - CREATION D'UN MODELE BSP  

L'édition des modèles BSP est de loin la partie la plus intéressante de la fonction Ent Editor car elle permet de modifier profondément le décor d'une map. 

On se propose d'ajouter un arbre sur le toit d'un temple car à cet endroit, il ne présente aucune interférence avec d'autres objets existants. A noter qu'il aurait été possible de le placer sans risque dans un autre endroit du décor en évitant d'englober des objets présents.

fin.gif  Cliquer sur le bouton BSP

btn_bsp.jpg

fin.gif  Choisir l'objet dans la liste déroulante et procéder comme précédemment.

liste_bsp.jpg md3_model.jpg

gysample.gif  AIDE: Un léger inconvénient existe néanmoins dans l'absence de préavis graphique des modèles BSP. En effet, à l'opposé des items et accessoires précédents qui sont connus par leur simple évocation, les modèles BSP ne sont pas facilement interprétés par l'opérateur à moins d'avoir une longue pratique. Les modèles BSP, (plus de 200) sont répartis dans 6 répertoires inclus dans le répertoire INSTANCES du fichier système maps.pk3 comme le montre la capture suivante:

instances.jpg

Afin de faciliter leur appréhension avant leur édition, vous trouverez à ce lien un fichier RAR qui après décompactage vous donnera une représentation graphique de tous les modèles BSP. Chaque image est agrémentée de son baptême. Il sera donc plus facile de rapprocher une désignation dans la liste des objets avec sa représentation picturale.

Voici quelques aperçus :

building03.jpg fence01_gate.jpg
randomcover01.jpg oilbomb.jpg

b_list.gif     ENT EDITOR - CREATION D'UN MODELE MD3  

fin.gif  Cliquez sur le bouton MD3

btn_md3.jpg

fin.gif  Choisir l'objet dans la liste déroulante et procéder comme précédemment.

liste_md3.jpg statue.jpg

gysample.gif IMPORTANT : Il existe une différence fondamentale entre les modèles BSP et les modèles MD3 qu'il est nécessaire de comprendre:

comment.gif BSP : Les modèles BSP qualifient des volumes solides c'est-à-dire offrant un obstacle aux joueurs. Ils sont indépendants et sans liaison aucune avec le codage originel de la map.

comment.gif MD3 : Les modèles MD3 que vous ajouterez ne seront pas solides et tout joueur pourra les traverser de part en part. Ainsi, placer une voiture au milieu d'une map n'est pas très judicieux et surtout pas très réaliste. Le modèle MD3 sera donc placé de préférence dans des points de la map inaccessibles aux joueurs. Dans l'exemple qui précède, j'ai posé la statue au sommet de la tour de garde attendu qu'aucun joueur ne peut monter la-haut. Elle ne trône ici que pour la décoration.

Pour info les modèles MD3, déjà existants dans une map, ont été prévus à l'origine par le programmeur.

fin.gif  EXEMPLE : Cette jeep posée dans le décor de la map mp_col2 est un modèle MD3.

jeep_mp_col2.jpg

Sa construction réunit 4 planches graphiques qui constituent son "habillage" extérieur.

jeep_body.jpg jeep_seats.jpg jeep_shaders.png jeep_tires.jpg

On retrouve la présence de cette construction à la fois dans la zone binaire où la capture suivante montre le pointage de la première planche:   

jeep_body.jpg

Ainsi que dans un paragraphe de la zone texte:

code_jeep.jpg

fin.gif  Toutefois il est possible de placer certains modèles MD3 au milieu de la zone d'action, à savoir les modèles représentatifs d'un décor herbeux, qui n'offriront aucun obstacle aux mouvements tout en améliorant l'aspect de la map.

La capture suivante montre quelques pousses vertes ajoutées dans le sable de la vallée des rois.

grass.jpg

Les modèles MD3 sont disponibles dans le fichier système models.pk3, ça ne s'invente pas laugh

Concernant les modèles liés à la végétation, voir principalement dans models/objects/colombia/jungle.

Mais il y en a d'autres......

fern_lrg01_shd.png fern_lrg02_shd.png fern_sm01_shd.png grass_tall_shd.png

soldat.gifEn résumé:

  • Placer les modèles BSP ou vous voulez en s'assurant toutefois que leur position n'englobe pas un point de respawn. Pour y remédier il est préférable de procéder en priorité aux ancrages des modèles BSP et de revoir ensuite tous les points de respawn.

  • Placer les modèles MD3 dans des endroits où les joueurs ne passeront pas sauf choisir des éléments de végétation perméables.

  • Armez vous de patience............wink

fin.gif  Un dernier point qu'il convient de souligner concerne les ombres portées par l'ajout des modèles BSP et MD3: elles n'existent pas !

Les ombres sont crées à la conception de la map par le programme dédié et ne peuvent en aucun cas, être produites par un fichier ent.

b_list.gif     ENT EDITOR - SAUVEGARDE  

fin.gif  Cliquer sur le bouton Files.

btn_files.jpg

fin.gif  Cliquer sur le bouton Save Project.

Un fichier vok_dm.ent sera créé dans le répertoire edits, comme suit:

ent_files.jpg

Ce fichier vok_dm.ent sauvegardera les modifications effectuées sur la map VOK.

vok_dm_file.jpg

Je rappelle que le fichier vok_sources.ent représente la copie conforme de la zone texte du fichier vok.bsp encapsulé dans le fichier d’origine vok.pk3. Ce fichier ne sera jamais altéré par le mode Ent Editor et restera toujours la référence à laquelle on pourra repartir pour de nouveaux essais.

Si l’on place le fichier vok_dm.ent dans le répertoire MODS du serveur, une fois la map vok lancée, les nouveaux objets introduits dans la map apparaitront au même titre que tous les autres éléments codés d'origine, ce qui induit une constatation à savoir que les données du fichier ent sont prioritaires et complémentaires sur celles du fichier BSP.

gysample.gif Remarque: Dans le premier paragraphe une ligne message est introduite mentionnant le nom du créateur du fichier ent. Vous avez toute latitude pour en modifier éventuellement le texte.

b_list.gif     ENT EDITOR - VARIANTE  

Dans la mesure où votre projet est d'agrémenter une map de certains modèles supplémentaires et compte tenu du fait qu'un ou plusieurs points de respawn risquent par erreur d'être enchâssés dans les décors, vous avez certainement projeté avec sagesse de redéfinir tous les points de respawn.
Le développement qui suit ne concerne que le DM, car je suis profondément réfractaire à tout autre gametype !
Procéder comme suit:

fin.gif  Editer le fichier vok_sources.ent

fin.gif  Repérer tous les paragraphes qui contiennent la ligne classname info_player_deathmatch comme cet exemple suivant :

{
"classname" "info_player_deathmatch"
"origin" "1796 -1520 58"
"angles" "0 90 0"
}

Ainsi qu'éventuellement tous les fichiers classname gametype_player comme cet exemple:

{
"classname" "gametype_player"
"origin" "417 -2656 62"
"gametype" "dm tdm"
"angle" "360"
"spawnflags" "0"
}

Une remarque au passage, concernant cette dernière forme qui représente une erreur de codage des bots affectés au DM. Elle a été la cause de plantages sous le défunt mode 1FX. Seul le classname info_player_deathmatch est adéquat pour coder les respawns DM

fin.gif  Effacer tous ces paragraphes.

fin.gif  Rebaptiser vok_sources.ent en vok_dm.ent

fin.gif  Placer le fichier vok_dm.ent dans le répertoire MODS du serveur.

fin.gif  Lancer le serveur LAN. Se connecter et lancer Ent Editor

btn_enteditor.jpg

fin.gif  Cliquer le bouton Files

btn_files.jpg

fin.gif Cliquer sur le bouton Load Ent Data

load_ent_data.jpg

Vous arrivez sur la map VOK où tous les items seront présents sauf les bots affectés au DM.

Il ne restera plus qu'à créer les nouveaux points de respawn par la procédure décrite plus haut.
A noter que si vous désiriez ajouter d'autres modèles sur la map, il aurait fallu également, préalablement au lancement du fichier vok.ent, effacer tous les paragraphes relatifs aux bots des autres gametypes.

Ces paragraphes peuvent être de la forme suivante:

{
"classname" "gametype_player"
"origin" "-640 6912 302"
"gametype" "elim cctf inf dem ctf"
"angle" "270"
"spawnflags" "2"
}

gysample.gif Avant de placer vos bots, si vous avez envisagé d'inclure dans la map un modèle BSP, la présence d'un item pourrait être gênant. Dans ce cas il possible de l'éliminer même si ce n'est pas vous qui l'avez créé. Pour ce faire il suffit de se rapprocher de l'objet afin de noter son ID puis de saisir cet ID dans la fenêtre Sélection ID du panel de contrôle et enfin de cliquer sur le bouton Delete, comme le montre la capture suivante:

delete_item.jpg

gysample.gif Remarque:  Cette variante n'introduit pas de commentaires dans la ligne message du premier paragraphe du fichier vok.ent ou à tout le moins, ne modifie pas cette ligne si d'aventure elle existait déjà dans le fichier vok_sources.ent. Il conviendra alors soit de la modifier, soit de la créer.

fin.gif  N'oubliez pas de sauvegarder votre travail en cliquant sur le bouton Files puis Save Project !

b_list.gif     ENT EDITOR - EXTRAS  

Il existe quelques maps entachées d'imperfections. qui peuvent être facilement corrigées grâce aux fichiers ent. Lorsque j'ai expérimenté plus de 1300 maps, certaines dont le graphisme très soigné avait retenu mon attention m'avaient toutefois un peu déçu par des erreurs invalidant les mouvements des joueurs. C'est le cas, la plupart du temps de formes codées dans le fichier BSP mais mal "habillées" par des modèles MD3 comme je l'ai évoqué plus haut.  

Je ne désire pas dresser un tableau de toutes les modifications que j'ai déjà effectuées.

Je me bornerai dans le moment présent à juste évoquer la map mp_dust2. Très beau graphisme aux couleurs chaudes et lumineuses mais hélas ternie par un petit bug aux abords des 2 camions parqués. Les bots se retrouvaient souvent englués dans le bas de la carrosserie et des pneus, révélant du fait une anomalie entre la forme codée et le modèle MD3.

mini_bot1.jpg

Le but de la correction était d'interdire le rapprochement latéral des camions en ajoutant des obstacles de proximité.

Voici l'aspect initial de la map (clic pour zoom):

mini_dust2_orig.jpg

1er projet de modification qui consiste à encercler le parc d'une clôture infranchissable

mini_dust2_fence.jpg

2ème projet qui consiste à flanquer les côtés des véhicules par des caisses et un muret

mini_dust2_crates.jpg

Je ne me suis pas encore décidé entre ces 2 options.

Peut-être avez vous une préférence ? eek

-=mad=-

Publié le 29/04/2021 21:50  Prévisualiser...   Imprimer...   Haut
2 - Installation  -  par FSMOD

INSTALLATION DU MODE MDK

Suivez à la lettre ce qui suit et vous ne devriez pas connaître de problèmes particuliers.

fin.gif 2 cas se présentent

 1 -Vous n'étiez pas un utilisateur de MDK 

  1. Créer un répertoire MDK à la racine de votre répertoire SOF2.
  2. Installer le fichier client mdk_mod_X_1.8_fs_v3.pk3.
  3. Passez au prérequis ci-après.

fin.gif PREREQUIS

Revenez dans le répertoire principal SOF2 et créez un raccourci vers le bureau à partir du fichier sof2mp.exe.

Revenez dans le bureau, renommez ce raccourci à votre convenance puis ouvrez le par un clic droit.

icon.jpg

Cliquez sur Propriétés.

Dans la fenêtre cible ajoutez après sof2mp.exe, un espace puis +set fs_game mdk

prop.jpg

Vous pouvez éventuellement ajouter +exec autoexec.cfg si vous maitrisez cette configuration (voir documentation)

Lancez SOF2 en cliquant sur le raccourci.

fin.gif  ATTENTION: Avant toute connexion à un serveur ouvrez d'abord votre console et tapez :  cl_allowdownload 0

dl.jpg

Quittez la console. Maintenant vous pouvez connecter mon serveur MDK.

2 - Vous êtes déjà un utilisateur de MDK 

  1. Ouvrez le répertoire MDK.
  2. Effacez tous les fichiers pk3, y compris l'ancienne version client.
  3. Effacez les fichiers sof2mp.cfg et sof2mp_uix86.dll.
  4. Installez le fichier client mdk_mod_X_1.8_fs_v3.pk3

Par ailleurs:

  1. Vérifiez si un fichier sof2mp.cfg se trouve dans votre répertoire MP, auquel cas, effacez le.
  2. Dans chaque répertoire IP effacez les fichiers mdkmp.cfg.
  3. Connectez vous au serveur.

Quel que soit le cas utilisé précédemment, après la première connexion à mon serveur votre répertoire MDK se présentera comme suit:

post_instal.jpg

A noter que le fichier mdk_mod_x_1.8_fs_v3.pk3 est une version complète prête à l'emploi et qu'il ne nécessite aucun fichier additif de mise à jour. La connexion à mon serveur est immédiate et ne requiert aucun téléchargement complémentaire.

A noter également la création automatique de différents fichiers et répertoires et particulièrement le répertoire éponyme de l'adresse de mon serveur. Ce répertoire contient principalement les packs sons, un fichier mdkmp.pk3 qui a enregistré votre configuration propre, et éventuellement la ou les maps customisées en cours lors de votre connexion, rappelant que, grâce au protocole FTP les packs sons et les maps ont été téléchargés automatiquement.

Ainsi dans la capture suivante on constate la présence des fichiers sons, du fichier de sauvegarde mdkmp.cfg et la map austria qui tournait au moment de la connexion au serveur. Le répertoire data mémorise simplement les joueurs et bots présents au moment de la session.

rep_ip.jpg

Toutefois si vous vous connectez sur un autre serveur MDK, m8 (click here) dans cet exemple, vous pourriez obtenir cette annonce:

dl_1.7.jpg

et son résultat dans votre répertoire MDK:

post_instal_1.7.jpg

fin.gif Explication

Le fichier mdk_mod_X_1.7_u1.pk3 est un petit fichier de mise à jour vers la version 1.8. En fait le fichier client mdk_mod_X_1.8.pk3 complet n'est pas offert en téléchargement manuel à partir du site des Mentally Disturbed Killers. Le client qui n'utilise pas ma version 1.8_fs_v3, possède par défaut la version précédente à savoir la 1.7. Lorsqu'il se connecte sur un autre serveur que le mien il est dirigé automatiquement vers le site des Mentally Disturbed Killers et le fichier mdk_mod_X_1.7_u1.pk3, téléchargé à partir du serveur assure le transfert.

Le fichier mdk_mod_X_1.7_u1.pk3 est entièrement compatible avec ma version 1.8_fs_v3 mais son action est nulle. L'effacer ne servira à rien car dès que vous connecterez à un serveur autre que le mien, il reviendra dans votre répertoire MDK.

En péroraison de ce qui précède, la méthode 'primaire' qui consiste à placer dans le répertoire dédié au mod (MDK en l'occurrence), un fichier complet prêt à jouer, offrira une meilleure praticité pour sa mise en oeuvre et le suivi de son évolution. Dès qu'une nouvelle version arrive, on l'installe et on jette la précédente.

A remarquer, qu'au même titre que la connexion initiale à mon serveur, un nouveau répertoire 108_61_122_66_20100 a été créé en lien avec l'adresse du serveur m8 (click here).

In fine, voici comment pourra se présenter votre répertoire MDK après avoir fureté sur quelques serveurs MDK

post_instal_allServ.jpg

-=tongue=-

Publié le 08/02/2021 16:37  Prévisualiser...   Imprimer...   Haut
1 - Généralités  -  par FSMOD

LE MODE MDK - GENERALITES

Ce mode très évolué et évolutif a été codé par DeathLord, fondateur du clan des Mentally Disturbed Killers. Qu'il en soit remercié au nom de quelques trop rares exploitants qui savent au moins, mesurer le travail colossal de programmation qu'il a accompli.

Les fichiers client d'origine ainsi que ceux qui vous permettront éventuellement de créer votre propre serveur, sont disponibles et libres de téléchargement sur leur site dédié:  http://www.mentallydisturbedkillers.com

Une documentation détaillée qui ne fera que s'enrichir dans le futur, est disponible également sur leur site : Guide
Elle vous guidera dans l'installation, que vous soyez simple joueur ou manager de serveur.

Particularités fondamentales du mode MDK

robot.gif  Alors que tous les autres modes utilisent une partie très limitée de la bande passante du serveur de jeu assortie d'une vitesse de transfert affligeante, MDK opère tous les téléchargements à partir d'un canal FTP extérieur au flux des données serveur. L'avantage est certain car il offre une plus grande vitesse de téléchargement uniquement limitée par votre taux de transfert internet, édulcorant ainsi le stress de votre serveur de jeu qui a déjà fort à faire pour assurer sa propre gestion.

Bien entendu le manager du serveur devra déposer sur son site FTP tous les fichiers nécessaires aux clients connectés au serveur de jeu afin qu'ils puissent évoluer sans problème dans les différentes configurations de SOF2. Il s'agit essentiellement de fichiers pk3 concernant les maps customisées, les packs sons et éventuellement certains addons d'agrémentation.

Ainsi tout joueur, utilisant le mode client MDK, téléchargera automatiquement et rapidement toutes les pièces manquantes pour s'associer au serveur et cela bien que son CVAR cl_allowdownload soit invalidé.

robot.gif Lorsque vous vous connectez au serveur, un répertoire est créé immédiatement et portera le nom équivalent à l'IP du serveur. Tous les fichiers pk3 propres à ce serveur, maps, sons,..etc y prendront place grâce au téléchargement automatique. 

Chaque fois que vous vous connecterez à un nouveau serveur, la même procédure sera exécutée. Ainsi il n'y aura aucun mélange entre les identités propres des serveurs et cela évitera d'éventuels conflits de fichiers pk3.

robot.gifL'intelligence artificielle des bots a été considérablement améliorée rendant ainsi le jeu beaucoup plus réaliste. Le paramétrage de leur aptitude au combat offre au manager de multiples combinaisons. 

robot.gifUn mode éditeur inclus permet au manager aguerri de concevoir de nouvelles versions de maps à partir de concepts déjà existants grâce à l'exploitation de fichiers ENT.

robot.gifDe nouveaux gametypes, de nouvelles armes et de nouveaux procédés de combat sont disponibles.

-=cool=-

Publié le 08/02/2021 16:36  Prévisualiser...   Imprimer...   Haut
DMFLAGS  -  par FSMOD

DMFLAGS

J'ai constaté que le CVAR dmflags qui fixe le caractère de certains événements, est souvent mal interprété par les managers de serveurs et les valeurs qu'on lui affecte sont souvent très fantaisistes, voire totalement erronées.

Le meilleur moyen de comprendre la fonction de dmflags est encore de recourir à un examen des sources. Dont acte.

Ainsi la biblothèque bg_public.h fixe les valeurs de dmflags comme suit:

code_flags.jpg

puce2.gifInterprétation:

  • dmflags 8   : Le joueur ne subira aucun dommage physique en touchant le sol après avoir sauté depuis un point élevé.
  • dmflags 16 : La valeur de FOV sera fixée à 90 et imposée aux joueurs sans qu'ils puissent en changer.
  • dmflags 32 : Les joueurs se déplaceront sans aucun bruit de pas. A noter que les sauts resteront toutefois audibles.

NOTA :Par défaut, dmflags est fixé à 0 ce qui implique que le capital santé d'un joueur qui se reçoit au sol après avoir sauté d'un point haut sera minoré d'une valeur proportionnelle à la hauteur du saut et à la gravité réglée sur le serveur (g_gravity).

IMPORTANT: Les entiers 8, 16 et 32 peuvent être combinés afin de panacher les différents effets.

Voici un tableau récapitulatif qui reprend toutes les valeurs et rien que les valeurs admises pour dmflags.

DMFLAGS BRUITS DE PAS DOMMAGES SAUT FOV FIXE A 90
0 OUI OUI NON
8 OUI NON NON
16 OUI OUI OUI
24 OUI NON OUI
32 NON OUI NON
40 NON NON NON
48 NON OUI OUI
56 NON NON OUI

Les CVAR dmflags seront de préférence fixés pour chaque map du fichier mapcycle.

puce2.gifPoint particulier

Le CVAR dmflags 16 qui impose un FOV fixe de 90 peut gêner certains joueurs qui trouvent dans d'autres valeurs, un meilleur confort de tir. Je rappelle que les valeurs autorisées sont comprises entre 80 et 100.

Je vous livre un petit truc qui pourra vous affranchir de cette restriction managériale, à condition que vous maitrisiez un peu le langage c.

Cela se passe côté client bien évidement.

   Fichier cg_view.c   

Dans la fonction CG_CalcFov identifiez ce groupe:

  else
    {
        // user selectable
        if ( cgs.dmflags & DF_FIXED_FOV )

        {
            // dmflag to prevent wide fov for all clients
            fov_x = 90;
        }
        else
        {
            fov_x = cg_fov.value;
            if ( fov_x < 1 )
            {
                fov_x = 1;
            }
            else if ( fov_x > 160 )
            {
                fov_x = 160;
            }
        }

Remplacez la valeur 90 par celle de votre choix entre 80 et 100.

Ou bien alors, si vous désirez pouvoir choisir votre FOV en cours de jeu, remplacez tout le texte précédent par celui-ci:

 else
    {

            fov_x = cg_fov.value;
            if ( fov_x < 1 )
            {
                fov_x = 1;
            }
            else if ( fov_x > 160 )
            {
                fov_x = 160;
            }

puce2.gif ATTENTION: Cette modification pourrait être interprétée comme un artifice de triche de la part du manager, car votre action ne s'inscrit pas vraiment dans l'optique de gestion de son serveur. frown

Do as you like !

DRAKKAR n'est pas aussi restrictif, quoique....... cool

-=eek=-

Publié le 17/06/2019 20:04  Prévisualiser...   Imprimer...   Haut
Alerte munitions  -  par FSMOD

Alerte munitions

Lorsque le chargeur de votre arme présente une certaine quantité de munitions restantes, le compteur de la barre inférieure s'affiche en rouge. Il n'est pas toujours très aisé de le voir dans un combat acharné. 

Cette petite modification permettra d'afficher à gauche de l'écran une alerte beaucoup plus visible .rolleyes

lowammo.jpg

Modification du code sources

Tout se passe côté client

Fichier cg_newDraw.c

Dans la fonction CG_DrawPlayerWeaponClip remplacez la ligne

 if ( value <= (weaponData[cg.weaponSelect].attack[ATTACK_NORMAL].clipSize / 6) )

Par la suivante

 if ( value <= (weaponData[cg.weaponSelect].attack[ATTACK_NORMAL].clipSize * 20/100) ) *FSMOD* calcul restant

Remplacez le groupe

 if ( weaponToDraw == cg.weaponSelect && value <= (weaponData[weaponToDraw].attack[ATTACK_NORMAL].clipSize / 6) )
                {
                    VectorSet ( ammocolor, 1.0f, 0.2f, 0.2f );
                }
                else if ( weaponToDraw != cg.weaponSelect && value == 0 )
                {
                    ammocolor[3] = 0.5f;
                }

Par le suivant

  // *FSMOD* Low ammo

    // si capacité clip inférieur a 1 pas d'affichage Low Ammo (cas des grenades ou du couteau)
        if ( weaponToDraw == cg.weaponSelect
              && value <= (weaponData[weaponToDraw].attack[ATTACK_NORMAL].clipSize * 20/100)
              &&  (weaponData[weaponToDraw].attack[ATTACK_NORMAL].clipSize >1 ))

                {
                    VectorSet ( ammocolor, 1.0f, 0.2f, 0.2f );

                    CG_DrawText (20,240, cgs.media.hudFont, 0.55f , colorRed, va("^7! ^$Low Ammo ^7!"), 0, DT_OUTLINE );

                }

 // *FSMOD*

-=cry=-

Publié le 21/03/2019 17:15  Prévisualiser...   Imprimer...   Haut
Crosshair Sniper  -  par FSMOD

Crosshair Sniper

Force est de constater que le réticule de visée (crosshair) est disponible pour toutes les armes sauf pour le fusil sniper MSG90A1.

C'est normal, pourrait-on répondre dans un esprit purement cartésien, attendu que ce genre d'arme est prévue pour le tir lointain. Toutefois j'ai préféré le doter d'un crosshair même pour le combat rapproché. Cette aide de visée n'en est pas vraiment une, vu le manque de précision et le recul de l'arme en tir instinctif, mais elle permet toutefois de "dégrossir" l'angle de tir.

J'ai prévu néanmoins un CVAR qui permet au tireur puriste d'annuler cette aide étant donné qu'elle est disponible par défaut.

Modification du code sources

Tout se passe côté client

Fichier cg_local.h

Après

 extern    vmCvar_t        cg_shellEjection;

Insérez la ligne suivante

 extern    vmCvar_t        cg_CrosshairSnip;   // *FSMOD* Crosshair hors zoom

Fichier cg_main.c

Après

 vmCvar_t     cg_stats;

Insérez la ligne suivante

 vmCvar_t    cg_CrosshairSnip;  // *FSMOD* Crosshair hors zoom

Après

 { &cg_footsteps, "cg_footsteps", "1", CVAR_CHEAT },

Insérez la ligne suivante

 { &cg_CrosshairSnip, "cg_CrosshairSnip", "1", CVAR_ARCHIVE },  // *FSMOD* Crosshair hors zoom

Fichier cg_draw.c

Dans la fonction CG_DrawCrosshair, remplacez le groupe

 // If zoomed or unzoomed with the sniper rifle dont draw the standard crosshair
    zoomed = (cg.predictedPlayerState.pm_flags&PMF_ZOOMED);
    if ( zoomed || (cg.predictedPlayerState.weapon==WP_MSG90A1 && !zoomed) )
    {
        return;
    }

Par le groupe suivant

 // *FSMOD* Conserve le réticule de visée hors zoom
        zoomed = (cg.predictedPlayerState.pm_flags&PMF_ZOOMED);
    if ( zoomed ||(!cg_CrosshairSnip.integer && cg.predictedPlayerState.weapon==WP_MSG90A1) )
    {
        return;
    }
 // *FSMOD*

Le CVAR cg_CrosshairSnip pourra être associè à un bind. Il prendra les valeurs suivantes:

cg_CrosshairSnip 0 : Le crosshair n'est visible qu'en mode ZOOM.
cg_CrosshairSnip 1 : Le crosshair est toujours visible.

-=frown=-

Publié le 21/03/2019 16:32  Prévisualiser...   Imprimer...   Haut
Variation sur les BOTS  -  par FSMOD

Variations sur les BOTS

Par défaut, SOF reconnait les bots inscrits dans le fichier bots.txt, lui même inclus dans le répertoire botfiles. Ce fichier est limité en taille (8192 octets) et ne peut abriter qu'une cinquantaine de bots. Même si vous ne prévoyez qu'une dizaine de bots dans une map par le biais du CVAR bot_minplayers, leur panachage ne sera pas optimum et d'une map à l'autre on pourra rencontrer les mêmes pseudos avec les mêmes paramètres associés.

A dessein de bénéficier d' une plus grande diversité il y a deux solutions pour offrir au pointeur de chargement des bots, un choix plus large.

1ère solution

Augmentation de la taille du fichier bots.txt.

Pour ce faire il convient de recoder la bibliothèque bg_public.h comme suit:

 #define MAX_BOTS_TEXT   16384 // AV 8192   *FSMOD* augmentation taille fichier bots.txt

Avec cette nouvelle taille, le fichier bots.txt pourra accueillir une bonne centaine de bots.

2ème solution

La plus longue en matière de rédaction. Il suffit d'utiliser le CVAR g_botsFile. Ce CVAR permet de charger des fichiers bots qui pourront être personnalisés pour chaque map. Ces fichiers sont de la même conception que le fichier bots.txt mais peuvent être réduits en taille de manière à contenir moins de bots.

Une méthode simple

Sur le serveur, créer un répertoire dans la racine du mode que l'on nommera par exemple, multibot

Ecrire dans ce répertoire plusieurs fichiers qui seront nommés a.txt, b.txt, c.txt, etc... . L'idéal est de créer autant de fichiers que de maps inscrites dans le mapcycle. Chacun de ses fichiers accueillera une trentaine de bots avec leur nom unique.

Dans le fichier mapcycle entrer pour la map une ligne sur le modèle suivant:

g_botsFile "multibot/a.txt"

La map suivante recevra cette ligne:

g_botsFile "multibot/b.txt"

et ainsi de suite. Chaque map aura donc son propre fichier associé. D'une map à l'autre, la totalité des pseudos des bots sera ainsi renouvelé.

Afin d'éviter tout mélange de bots il conviendra également d'introduire pour chaque map la commande kick allbots qui permettra ainsi d'éliminer tous les bots du fichier texte précédent et de préparer l'arrivée des nouveaux.

Le simple extrait suivant d'un fichier mapcycle récapitule ce qui précède:

}
 map4
 {
 Command "map arm2;kick allbots"
   cvars
   {
      g_botsFile "multibot/d.txt"
       scorelimit "30"
      bot_minplayers "4"

   }
 }
  map5
 {
 Command "map mp_hk2;kick allbots"
   cvars
   {
      g_botsFile "multibot/e.txt"
      scorelimit "50"
      bot_minplayers "12"

   }
 }

Il faut toutefois remarquer que les bots devront entrer rapidement dans la map à chaque nouvelle rotation, aussi est-il recommandé de recoder les sources comme je l'ai indiqué dans l'onglet CODAGE / CHARGEMENT DES BOTS.

-=smile=-

Publié le 19/03/2019 16:55  Prévisualiser...   Imprimer...   Haut
Limitation BOTS  -  par FSMOD

Limitation des BOTS

Penchons nous sur le cas suivant:

Le serveur tourne en DM avec un CVAR bot_minplayers à 12. Il y donc 12 bots sur le terrain. Un vote est lancé avec agrément des autres joueurs afin que la map soit relancée en CTF. Comme il s'agit d'un jeu d'équipe et conformément à la valeur du CVAR bot_minplayers, chaque équipe se verra dotée de 12 joueurs, soit un total général de 24 bots sur le terrain.

Or le manager du serveur, par souci financier, n'a loué que 16 slots. Les bots vont donc occuper tous les slots en bloquant ainsi l'accès au serveur pour tout joueur voulant se connecter, assorti du message d'alerte "Server Full".

Nota: Pour mémoire, le nombre de slots alloués sur le serveur est fixé par le CVAR sv_maxclients.

Un moyen radical et plus sûr est d'empêcher SOF2 de charger plus de bots que de slots alloués.

Modification du code sources

Fichier g_local.h

Après

 extern    vmCvar_t    g_dropWeapon;

Insérez la ligne suivante

 extern    vmCvar_t    g_slot;              // *FSMOD* Limitation BOTS

Fichier g_main.c

Après

 vmCvar_t    g_dropWeapon;

Insérez la ligne suivante

 vmCvar_t    g_slot;   // *FSMOD* Limitation BOTS

Après

 { &g_dropWeapon, "g_dropWeapon", "0", CVAR_ARCHIVE, 0.0f, 0.0f, 0, qfalse },

Insérez la ligne suivante

 { &g_slot, "g_slot", "6", CVAR_SERVERINFO|CVAR_ARCHIVE, 0.0f, 0.0f, 0, qfalse }, // *FSMOD* Limitation BOTS

Dans la fonction CheckVote recherchez le groupe

 if ( strstr( level.voteString, "g_gametype" ) )
        {
            trap_SendConsoleCommand( EXEC_APPEND, "map_restart 0n" );
        }

Le remplacer par le groupe suivant

 if ( strstr( level.voteString, "g_gametype" ) )
        {
            trap_SendConsoleCommand( EXEC_APPEND, "map_restart 0n" );
            trap_SendConsoleCommand( EXEC_APPEND, va("bot_minplayers %i n", g_slot.integer )); // *FSMOD* Limitation BOTS
        }

Le CVAR g_slot est fixé à 6 par défaut mais il peut être défini par n'importe quelle autre valeur dans le fichier server.cfg,  en fonction du nombre de slots loués sur le serveur.

-=confused=-

Publié le 17/03/2019 01:25  Prévisualiser...   Imprimer...   Haut
Rubriques

Vous êtes ici :   Accueil » Documentation