Vcom
VcomAI est un mod développé par dominic/genesis92x touchant au comportement de l'IA. De par sa conception, il est également possible d'installer ce mod en version script dans une mission. Ce tutoriel a pour objectif de vous montrer cette manipulation et également les paramétrages Vcom.
Installation
Téléchargement github
Pour installer la version script de Vcom vous devez tout d'abord télécharger la dernière version sur Github. Une fois sur la page Github, sélectionnez la dernière version disponible. À la date de ce tutoriel la dernière version est la 3.4.0-release (la 3.4.1 étant toujours en développement). Une fois la bonne version sélectionnée vous allez télécharger l'archive zip contenant le code.
Les images suivantes vous indiquent la procédure.
Extraction et ajout
Extrayez l'archive et ouvrez le dossier VcomAI-3.0-3.4.0-release/VcomAI340.Stratis. Vous devez trouver à l'intérieur 2 dossiers et 3 fichiers :
- le dossier THE FOLDER IN THIS FOLDER GOES INTO YOUR ROOT ARMA 3 FOLDER (joli nom). À l'interieur se trouve un dossier userconfig et comme on est vilain ce dossier (userconfig) n'ira pas dans la racine d'arma mais dans votre mission.
- le dossier Vcom (le saint Graal).
- le fichier init.sqf.
- le fichier description.ext.
- le fichier mission.sqm. Celui-ci n'est pas utile.
Il vous faut maintenant ouvrir dans l'explorateur de fichier votre répertoire de mission. Celui-ci se trouve normalement dans le chemin d'accès C:\Users\<username>\OneDrive\Documents\Arma 3 - Other Profiles\<profil>\missions\<votremission>
ou mpmissions\<votremission>
(Les noms de répertoire entre <> sont à remplacer par les vôtres) <votremission> étant le dossier de votre mission (Je sais, incroyable !).
Dans ce dossier transférez les fichiers init.sqf, description.ext, le dossier Vcom et le dossier userconfig. Voilà ! Vcom est maintenant installé dans votre mission et uniquement cette mission. Maintenant voyons les réglages du mod.
Réglages
Fichiers à modifier
Vcom par défaut influe sur toutes les unités non contrôlées par les joueurs exceptées celles dans le camp civil. Pour ses réglages Vcom utilise deux fichiers aux contenus identiques, VcomAI_DefaultSettings.sqf
et AISettingsV3.hpp
.
Les deux coupables, ces coquins.
Paramètres
Toute cette partie est valable pour la version mod également.
Paramètres de groupe
En ouvrant votre fichier de paramètres dans votre éditeur de code préféré comme VS code, notepad++, Emacs Vim (bande de vieux ), etc. Les premières lignes de votre fichier sont un commentaire contenant des commandes à mettre dans l'init d'une unité si l'on veut désactiver certains comportements.
ADDITIONAL COMMANDS (group this) setVariable ["VCM_NOFLANK",true]; //This command will stop the AI squad from executing advanced movement maneuvers. (group this) setVariable ["VCM_NORESCUE",true]; //This command will stop the AI squad from responding to calls for backup. (group this) setVariable ["VCM_TOUGHSQUAD",true]; //This command will stop the AI squad from calling for backup. (group this) setVariable ["Vcm_Disable",true]; //This command will disable Vcom AI on a group entirely. (group this) setVariable ["VCM_DisableForm",true]; //This command will disable AI group from changing formations. (group this) setVariable ["VCM_Skilldisable",true]; //This command will disable an AI group from being impacted by Vcom AI skill changes.
(group this)
par this
, vous pouvez directement mettre la ligne dans l'init du groupe et je recommande cette pratique (Traduction pour les non anglophones :
- VCM_NOFLANK, le groupe d'IA n'effectuera pas de manœuvres avancées comme les contournements.
- VCM_NORESCUE, le groupe ne répondra pas aux appels d'aide d'autres groupes.
- VCM_TOUGHSQUAD, le groupe n'appelera pas d'autre groupe à l'aide.
- Vcm_Disable, désactive Vcom pour le groupe.
- VCM_DisableForm, désactive le changement de formation par Vcom.
- VCM_Skilldisable, désactive la modification du skill d'IA par les paramètres que vous définissez dans le fichier par la suite.
Évidemment pour annuler à tout moment l'effet de ces commandes il suffit de changer true
en false
avec this setVariable[“<variable>”, false];
.
Paramètres généraux
Passons maintenant aux paramètres généraux de Vcom. Il est à noter que ces paramètres sont modifiables à tout moment dans la mission.
Vcm_ActivateAI = true; //Set this to false to disable VcomAI. It can be set to true at any time to re-enable Vcom AI VcmAI_ActiveList = []; //Leave this alone. Vcm_ArtilleryArray = []; //Leave this alone //VCOM ARTILLERY. Only one kind of advanced artillery can be used at a time. VCM_ARTYENABLE = true; //Enable improved artillery handling from Vcom. VCM_ARTYLST = []; //List of all AI inside of artillery pieces, leave this alone. VCM_ARTYDELAY = 60; //Delay between squads requesting artillery VCM_MEDICALACTIVE = true; // AI will heal themselves, and medics will heal others in their squad. VCM_ARTYWT = -(VCM_ARTYDELAY); VCM_ARTYET = -(VCM_ARTYDELAY); VCM_ARTYRT = -(VCM_ARTYDELAY); VCM_ARTYSIDES = [west,east,resistance]; //Sides that will use VCOM artillery VCM_AIMagLimit = 5; //Number of mags remaining before AI looks for ammo. VCM_Debug = false; //Enable debug mode. VCM_MINECHANCE = 75; //Chance to lay a mine every 30 seconds or so VCM_MINEENABLED = true; //Enable AI placing mines VCM_SIDEENABLED = [west,east,resistance]; //Sides that will activate Vcom AI VCM_RAGDOLL = true; //Should AI have a chance to ragdoll when hit VCM_RAGDOLLCHC = 100; //CHANCE AI RAGDOLL VCM_FullSpeed = true; //Enforce full speedmode during combat (Does not reset after combat end) VCM_HEARINGDISTANCE = 800; //Distance AI hear unsuppressed gunshots. VCM_SUPDIST = 300; //Distance AI will hear suppressed gunshots. VCM_WARNDIST = 2000; //How far AI can request help from other groups. VCM_WARNDELAY = 30; //How long the AI have to survive before they can call in for support. This activates once the AI enter combat. VCM_STATICARMT = 300; //How long AI stay on static weapons when initially arming them. This is just for AI WITHOUT static bags. They will stay for this duration when NO ENEMIES ARE SEEN, or their group gets FAR away. VCM_StealVeh = false; //Will the AI steal vehicles. VCM_ClassSteal = true; //If true, crewmen are required to steal tracked vehicles. Pilots are required to steal aircraft. false = anyone can steal any vehicle. VCM_AIDISTANCEVEHPATH = 100; //Distance AI check from the squad leader to steal vehicles VCM_ADVANCEDMOVEMENT = true; //True means AI will actively generate waypoints if no other waypoints are generated for the AI group (2 or more). False disables this advanced movements. VCM_FRMCHANGE = true; //AI GROUPS WILL CHANGE FORMATIONS TO THEIR BEST GUESS. VCM_SKILLCHANGE = true; //AI Groups will have their skills changed by Vcom. VCM_USECBASETTINGS = false;//If CBA is enabled on the host, use the CBA default settings. If false, use the filepatching settings instead. VCM_CARGOCHNG = true; //If true, Vcom will handle disembarking/re-embarking orders instead of vanilla. This is with the intention to prevent the endless embark/disembark loops AI are given. VCM_TURRETUNLOAD = true;//If true = Prevents AI vehicle turret positions from leaving a vehicle just beecause it is slightly damaged. Example: leaving a tank when just the tracks are damaged. VCM_DISEMBARKRANGE = 500; //How far AI will disembark from their enemies. If the vehicle is damaged, they will disembark. VCM_AISNIPERS = true; //Special sniper AI VCM_AISUPPRESS = true; //AI will attack from further away with primary weapons to suppress enemies Vcm_DrivingActivated = true; //AI will use experimental driving improvements. Vcm_PlayerAISkills = true; //AI in a group, that a players leads, can have their skills changed separately. Vcm_GrenadeChance = 10; //Chance the AI will throw a grenade. Vcm_SmokeChance = 5; //Chance the AI will throw a smoke grenade. Vcm_AI_EM = true; //Will the AI use enhanced movement to navigate around. Vcm_AI_EM_CHN = 10; //Chance a group will attempt to jump over an obstacle - every 0.5 secs VCM_AI_EM_CLDWN = 10; //Time in seconds before a group will consider jumping over obstacles;
true
, false
pour le désactiver (De grande études ont été faite pour cette conclusion, je vous l'assure !).
true
, si vous ne le désactivez pas en mettant sa valeur en false
vos paramètres seront écrasés par la config CBA des IA du serveur ou une valeur par défaut arbitraire de Vcom. Aucun changement que vous ferez sur les autres paramètres ne seront pris en compte dans ce cas-ci.
Et c'est partie pour une nouvelle liste de paramètres :
- Vcm_ActivateAI, active/désactive entièrement Vcom (la logique veut que vous le laissiez activé mais vous faites selon vos envies).
- VcmAI_ActiveList, pas touche.
- Vcm_ArtilleryArray, pas touche.
- VCM_ARTYLST, pas touche.
- VCM_ARTYDELAY, temps en secondes entre chaque demande de frappes d'artillerie si des pièces sont disponibles.
- VCM_MEDICALACTIVE, Les AI se soignent elles-mêmes, les infirmiers soignent également les autres.
- VCM_ARTYWT, VCM_ARTYET, VCM_ARTYRT, le délai d'artillerie pour chaque camp (
west
,east
,independant
) si vous voulez un délai différent. La valeur doit être négative. - VCM_ARTYSIDES, camp où les demandes de frappes sont autorisées. Attention, ça ne veut pas dire que l'artillerie ne va pas tirer de sa propre décision si vous enlevez un camp. Elle garde son comportement vanilla dans ce dernier cas.
- VCM_AIMagLimit, nombre de chargeurs avant que l'IA cherche des munitions compatibles dans les véhicules et corps à côté.
- VCM_Debug, active/désactive le débug (fichier rpt).
- VCM_MINECHANCE, % de chance que l'IA plante une mine toutes les 30 secondes. Caduque si VCM_MINEENABLED est désactivé.
- VCM_MINEENABLED, active/désactive la possibilité de placer une mine pour les IA.
- VCM_SIDEENABLED, active/désactive Vcom pour un camp. Recommandation, laissez ce paramètre activé pour tous les camps, des effets peuvent être inattendus sinon.
- VCM_RAGDOLL, active/désactive le ragdoll de l'IA quand elle subit un tir.
- VCM_RAGDOLLCHC, % d'avoir un ragdoll.
- VCM_FullSpeed, active/désactive le passage en vitesse max lorsque l'IA passe en mode combat.
- VCM_HEARINGDISTANCE, distance à laquelle l'IA entend les tirs d'armes à feu. Cette distance est plus grande pour les explosions et les tirs de char.
- VCM_SUPDIST, distances à laquelle l'IA entend les tirs d'armes à feu suppressés.
- VCM_WARNDIST, distance maximale à laquelle un groupe peut transmette une demande d'aide à d'autres groupes.
- VCM_WARNDELAY, temps minimal de combat engagé que l'IA doit attendre avant de transmettre une demande d'aide.
- VCM_STATICARMT, temps minimal durant lequel une IA doit rester sur une arme fixe avant de la quitter car son groupe est loin et aucun ennemi n'est en vue.
- VCM_StealVeh, autorise/interdit les IA à voler des véhicules.
- VCM_ClassSteal, active/désactive le fait pour une IA de devoir être un pilote pour voler un hélicoptère ou un avion, un membre d'équipage pour un blindé (IFT et tank).
- VCM_AIDISTANCEVEHPATH, distance par rapport au leader du groupe d'IA sur laquelle ils vont chercher à voler un véhicule.
- VCM_ADVANCEDMOVEMENT, autorise/interdit Vcom de générer de waypoints pour effectuer des manœuvres avancées (si le groupe à moins de 2 waypoints).
- VCM_FRMCHANGE, autorise/interdit les groupes à changer de formations.
- VCM_SKILLCHANGE, active/désactive la modification du skill des IA par Vcom (sur des paramètres définis par vous).
- VCM_USECBASETTINGS, voir note attention.
- VCM_CARGOCHNG, autorise/interdit Vcom de s'occuper du débarquement de l'infanterie des véhicules pour éviter l'embarquement/débarquement permanent des IA d'un véhicule. (effet mitigé).
- VCM_TURRETUNLOAD, autorise/interdit Vcom d'empêcher une IA en poste de tourelle de quitter son véhicule après des dégâts mineurs. Par exemple un BTR avec un roue en moins.
- VCM_DISEMBARKRANGE, distance à laquelle les IA débarquent de l'ennemi (pour les troupes transportées). Si le véhicule est trop endommagé, elles débarqueront où qu'il soit.
- VCM_AISNIPERS, autorise/interdit Vcom de modifier le comportement des snipers.
- VCM_AISUPPRESS, autorise/interdit les IA d'engager à grandes distances pour suppresser l'ennemi.
- Vcm_DrivingActivated, autorise/interdit la conduite expérimentale des IA par Vcom. À la date de ce tutoriel, cette fonctionnalité est encore en développement et influe très légèrement pour l'instant.
- Vcm_PlayerAISkills, autorise/interdit un paramétrage différent des skills pour les IA dans un groupe contrôlé par un joueur.
- Vcm_GrenadeChance, % de chance qu'une IA envoie une grenade en combat.
- Vcm_SmokeChance, % de chance qu'une IA envoie une smoke en combat. Ce taux est drastiquement augmenté si l'IA subit un tir.
- Vcm_AI_EM, active/désactive le FSM de Vcom pour une IA se déplaçant plus intelligemment.
- Vcm_AI_EM_CHN, % de chance qu'un groupe traverse un obstacle comme une barrière ou un trou sous un mur toutes les 0.5 secondes.
- VCM_AI_EM_CLDWN, % temp minimal avant qu'un groupe rencontrant un obstacle traversable décide de le passer.
Skill des IA
Vcom permet également de modifier le skill des IA en utilisant les paramètres avancées du jeu vanilla. Dans arma la compétence d'une IA est calculée à partir de deux types de paramètres, les paramètres de config (ceux que vous régler dans vos options de jeu) et le paramètre d'éditeur (le slider disponible dans les attributs d'une IA). Mais derrière ce paramètre d'éditeur se cache une série de paramètres plus précis sur lesquels vous pouvez jouer. Vcom vous propose de joueur sur ses paramètres à différentes échelles, gardez à l'esprit que la config d'IA rentre toujours en jeu dans le calcul.
Ces paramètres sont les subskills, aimingAccuracy, aimingShake, etc. Pour pouvoir jouer sur ces skills vous avez à dispositions plusieurs variables :
- VCM_AIDIFA, modifie toute les IA sous Vcom.
- VCM_AIDIFWEST, VCM_AIDIFEAST, VCM_AIDIFRESISTANCE, modifie les IA d'un camp. Supplante VCM_AIDIFA et VCM_SKILL_CLASSNAMES. Actif si VCM_SIDESPECIFICSKILL est activé.
- VCM_PSQUADW, VCM_PSQUADE, VCM_PSQUADR, modifie les IA dans un groupe dirigé par joueur par camp. Supplante toutes les autre variables. Actif si Vcm_PlayerAISkills est activé.
- VCM_SKILL_CLASSNAMES, modifie les IA selon un classname donné. Supplante VCM_AIDIFA. Actif si VCM_CLASSNAMESPECIFIC est activé.
Plusieurs de ses paramètres peuvent êtres activés en même temp. Seul VCM_SIDESPECIFICSKILL rend complètement caduque VCM_CLASSNAMESPECIFIC (Ce qui peut être changé en inversant deux clauses if dans la boucle VCM_AIDIFSET ).
La paramètre VCM_SKILL_CLASSNAMES mange des tableaux de type
/* EXAMPLE FOR VCM_SKILL_CLASSNAMES VCM_SKILL_CLASSNAMES = [ ["Classname1",[aimingaccuracy,aimingshake,spotdistance,spottime,courage,commanding,aimingspeed,general,endurance,reloadspeed]], ["Classname2",[aimingaccuracy,aimingshake,spotdistance,spottime,courage,commanding,aimingspeed,general,endurance,reloadspeed]] ]; */ VCM_SKILL_CLASSNAMES = [ ["B_GEN_Soldier_F",[0.01,0.02,0.03,0.04,0.05,0.06,0.07,0.08,0.09,0.1]], ["B_G_Soldier_AR_F",[0.01,0.02,0.03,0.04,0.05,0.06,0.07,0.08,0.09,0.1]] ];
Les autres variables mangent tous des tableaux de type
VCM_AIDIFA = [['aimingAccuracy',0.25],['aimingShake',0.15],['aimingSpeed',0.35],['commanding',0.85],['courage',0.5],['endurance',1],['general',1],['reloadSpeed',0.7],['spotDistance',0.90],['spotTime',0.75]];
Et c'est sur ces belles paroles que se finit ce tutoriel .