Arma 3 – Outils de debug et dossiers importants

Je commence cette série d’articles sur le scripting d’arma 3, y passant beaucoup (trop) de temps afin d’aider ou préparer des missions pour la communauté Grèce de canards.

Avant de s’attaquer à du concret, pour partir avec les mêmes outils, voyons ce que Bohemia nous propose.

Je pars du principe que ceux qui lisent cette article connaissent déjà un peu le langage sqf. S’il y a de la demande, je pourrais faire un article plus complet pour introduire ce langage.

Pour les habitués de scripts, la localité ou le contexte doit déjà vous parler. Pour ceux qui ont un doute ou ne voient pas, le plus simple est de prendre un exemple.

Premièrement, il faut qu’on soit sûr d’avoir une fenêtre de debug.

Configuration d’EDEN

Eden est le nom de l’éditeur d’arma 3. Par défaut, la mission permettra d’accéder à la fenêtre de debug. On cherche à avoir cette fenêtre pour écrire du code pendant qu’on teste la mission (ENTRER pour lancer la mission depuis Eden).

Pourquoi utiliser la fenêtre en jeu plutôt que celle intégrée dans Eden ? Lorsqu’on lance le jeu, beaucoup de variables sont créées… une bonne partie des fonctions ne fonctionnent pas quand on est sur Eden.
Ainsi pour éviter des problèmes, le plus simple reste d’utiliser la fenêtre de debug en jeu.
A noter toute de même qu’il y a des problèmes d’asynchrone, mais on y reviendra dans un autre article qui ne nous impactera pas pour celui-ci.

Si vous n’avez pas cette fenêtre en faisant ECHAP durant la partie, vérifiez la configuration dans Eden comme suit :

L’option « Available only in editor » fonctionne aussi pour une partie singleplayer en lançant depuis Eden.
Cependant, par habitude, je ne l’utilise pas pour permettre de debug durant des missions.

La 2ème option est pour les admins, si vous la jouez en multijoueur. Il faut bien être soit le serveur soit être connecté via la commande #login, et non seulement via le #vote admin ****.
La dernière option, permet à tout le monde d’avoir la fenêtre de debug.

Exemple de code

_other_context = {
   systemChat (_hello + " world");
};

_hello = "Hello"; 
systemChat _hello;

call _other_context;

Vous pouvez l’exécuter dans la fenêtre de debug, via la touche ENTREE, ou en cliquant sur une des options :

Je n’ai que l’option 3) de proposée n’ayant pas de serveur de lancé, et étant uniquement sur mon client.

Sinon pour l’explication :
1) Permet d’exécuter le code uniquement sur le serveur
2) Permet d’exécuter le code chez tout le monde, (tous les clients, ainsi que le serveur)
3) Permet d’exécuter le code uniquement sur son propre client


On va expliquer le code pour le comprendre, mais le résultat étant simplement d’écrire dans le chat :

Explication du code pour les curieux

_hello = "Hello"; 
systemChat _hello;

On crée simplement une variable local « _hello » et on demande d’afficher dans le chat son contenu, d’où l’apparition du premier « Hello« .

_other_context = {
   systemChat (_hello + " world");
};

call _other_context;

Ici, on vient créer une fonction _other_context, qu’on appelle.
Le fait d’avoir une variable qui va contenir { } signifie qu’elle contiendra du code.
Enfin, la fonction call permet de faire s’exécuter ce code.

systemChat (_hello + " world");

On vient ajouter notre valeur du _hello à un string  » world » afin de l’afficher dans le chat.
D’ailleurs on pourra remarquer qu’on a bien gardé la valeur du _hello.

Exemples d’espions

La partie basse est ce qu’on appelle des watchers, spies ou encore espions.
Chaque ligne permet de simplement suivre une variable (ou en tout cas une valeur).

allUnits

AllUnits est un tableau proposé par le moteur pour lister toutes les unités en jeu.

player

player renvoie simplement l’unité du joueur courant, sur un serveur cette variable sera vide, n’ayant pas d’unité propre.

west countSide AllUnits
east countSide AllUnits

west ou east sont des variables définissant les camps (sides) l’un des 4 camps à Blufor, Opfor, Independant et Civil.

CountSide permet de compter le nombre d’unité pour le camps spécifié, dans le tableaux passé en paramètre, soit AllUnits, donc toutes les unités dans notre cas.

Les dossiers importants

Il y a quelques dossiers intéressants à connaitre, le premier est directement copiable dans votre file browser.

Création de missions

Dossier contenant vos missions, pour votre profil principal, dans lequel vous trouverez un dossier missions et un dossier mpmissions.

  • %UserProfile%\Documents\Arma 3\
  • C:\Users\****\Documents\Arma 3\

Si ces uris ne fonctionnent pas, vous devez passer par un autre profil, vos missions seront donc ici :

  • %UserProfile%\Documents\Arma 3 – Other Profiles\VOTRE PROFIL\
  • C:\Users\****\Documents\Arma 3 – Other Profiles\VOTRE PROFIL\

Cache et logs

Si vous voulez récupérer une mission que vous avez joué sur un serveur, ou que vous avez besoin des logs pour comprendre une erreur que vous avez eu, tout se trouve dans le dossier :

  • %UserProfile%\AppData\Local\Arma 3\
  • C:\Users\******\AppData\Local\Arma 3\

A la racine, vous aurez des fichiers « arma3_x64_2019-10-21_14-42-00.rpt » :
en vert le jour, et en bleu l’heure du lancement du jeu.
A noter qu’arma ne garde que les 10 dernières sessions.

Si vous n’avez pas de fichier rpt (report), c’est certainement que vous avez désactivé les logs. Via Steam, vous avez dû ajouter des commandes ou des extensions pour le faire, aussi je ne pourrai pas aider.
Via Arma3Sync, c’est une simple option à décocher :

Enfin, vous avez le dossier MPMissionsCache qui contiendra tous les PBO que vous avez pu jouer sur des serveurs.
Il faut bien que vous ayez les données en local pour jouer 😉
S’il y a des demandes, on pourra voir comment faire pour venir éditer une mission à partir d’un PBO.

Vos missions finies

Quand vous exportez votre mission, vous devrez générer un fichier pbo comme suit (ou via un outil externe) :

Je ne peux pas vous donner le lien direct comme les autres, mais vous devez bien savoir y aller vous même 😉
Les missions se trouve dans votre dossier Steam :

  • Steam\steamapps\common\Arma 3\Missions
  • Steam\steamapps\common\Arma 3\MPMissions

Missions pour les export vers missions solo, et MPMissions pour les export multijoueur.

Si vous avez un doute de l’emplacement de votre dossier Steam :

Conclusion

Cette article parait très simple 🙂

Mais j’ai travaillé avec plusieurs personnes ne sachant pas forcément utiliser les outils de bases, donc autant les noter dès le début pour bien commencer.

De plus j’espère que les informations disséminées auront pu sustenter ceux qui en auraient besoin.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.