Table des matières

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.
Ce mod touche au comportement de l'IA aux échelles intrateam et interteam. Attention toutefois si Vcom apporte une communication entre les groupes, il n'y pas d'entité simulant un commandement global comme l'on a avec GAIA. Chaque groupe prend ses propres décisions.

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 :

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.

Pourquoi exactement ? Posez la question au créateur. Est-il important de modifier les deux ? Oui si sur votre serveur le filepatching est activé (C'est le cas chez grèce pour le headless client). De manière générale quelque soit la situation, modifiez un des deux fichiers et copiez coller tout son contenu dans l'autre (ctrl-A, ctrl-C puis coller avec ctrl-V).

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 :-P), 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.
En remplaçant (group this) par this, vous pouvez directement mettre la ligne dans l'init du groupe et je recommande cette pratique (pythonique :-X).

Traduction pour les non anglophones :

É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;
Pour activer un paramètre, mettez sa valeur sur true, false pour le désactiver (De grande études ont été faite pour cette conclusion, je vous l'assure !).
Pour des raisons de compatibilité avec CBA, il existe le paramètre VCM_USECBASETTINGS, qui par défaut est réglé sur 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 :

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.

Utilisez les réglages d'IA du serveur pour avoir le même comportement sur votre machine locale.
Si vous avez désactivé le paramètre VCM_SKILLCHANGE, aucun des changements ne seront pris en compte. La commande de groupe VCM_Skilldisable désactive n'importe qu'elle de ces changements également pour le groupe d'IA concerné.

Ces paramètres sont les subskills, aimingAccuracy, aimingShake, etc. Pour pouvoir jouer sur ces skills vous avez à dispositions plusieurs variables :

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 8-)).

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]];
Notez que les paramètres ne sont pas dans le même ordre pour les classnames et les autres paramètres.

Et c'est sur ces belles paroles que se finit ce tutoriel =).

Récupérez un classname

Méthode 1 : Passez votre souris sur l'unité voulue dans la liste d'unité. Méthode 2 : Clic droit sur l'unité.