Arma: Commencer avec le debogueur

Pour commencer, tu dois activer dans le launcher d’ARMA, l’affichage des erreurs : paramètres > tous > auteur > afficher les erreurs de script ce qui te donnera une meilleur compréhension de ce qui se passe.

Patience, volonté, méthodologie pourront t’épargner des centaines, voir des milliers d’heures à ton compteur pour comprendre et identifier l’origine des messages d’erreurs.

Pour accéder au débogueur d’Arma, tu dois lancer ta mission à partir de l’éditeur. Une fois la mission lancée, tu presses sur la touche « Esc » et sous tes yeux ébahis, tu verras un semblant de débogueur apparaitre. Je ne vais pas te vendre du rêve, le débogueur Arma, c’est la disette du développeur Arma.

Bref, cette interface est censée t’aider à résoudre rapidement et efficacement tous tes problèmes, en permettant d’avoir en jeu accès aux variables, objets via une ligne de commande.

La méthode la plus simple pour connaitre la valeur d’une variables est d’utiliser la commande hint pour l’afficher.

La commande hint attend une chaine de caractère en paramètre, il faut donc l’associer à la commande format ce qui permet de sérialiser tous les types de variables existant (défini, non défini, chaine de caractère, scalar, etc.. nil)

hint format [“%1″, yourvariable];
_somevariable = 123;
hint format ["%1", _somevariable]; //donne "123"

_somevariable = objNull;
hint format ["%1", _somevariable]; //donne ""

_somevariable = compile "a = b";
hint format ["%1", _somevariable]; //donne "{a = b}"

_somevariable = call {};
hint format ["%1", _somevariable]; //donne ""

_somevariable = nil;
hint format ["%1", _somevariable]; //donne "any"

La commande hint reste affichée 30 secondes à l’écran avant de disparaitre. Si la commande hint est une nouvelle fois appelée, le résultat remplacera le résultat de la première commande. Si tu veux conserver plusieurs résultats successifs, il faut donc utiliser une autre commande

diag_log format [“%1″, yourvariable];

diag_log va écrire les résultats directement dans le fichier de logs .rtp du jeu. Chaque commande diag_log produit une nouvelle ligne dans le fichier de logs. Le fichier se trouve dans :

C:\Users\[yourusername]\AppData\Local\Arma 3 Alpha\arma3_[latestdateandtimestamp].rpt
_somevariable = call {};
diag_log format ["%1", _somevariable];

_somevariable = nil;
diag_log format ["%1", _somevariable];

// Inséra dans le fichier .rpt
//""
//"any"

Il faut tout le temps associer la commande format à diag_log , ou hint car cela permet d’éviter les erreurs liées aux variables qui n’ont pas de valeurs, ou qui n’ont pas un type chaine de caractère.

Le fichier .rpt permet de retrouver l’historique de l’ensemble des erreurs qui sont rencontrées lors de l’exécution de vos scripts et l’ordre dans lequel elles se sont produites.

Sache que si ton script rencontre une erreur, il peut tout simplement arrêter de s’exécuter. Il faut donc pensé à améliorer la qualité et l’organisation de ton code, pour qu’une simple erreur ne provoque pas un effet domino, voir l’interruption complète ou partielle de ton programme.

Et maintenant quelques commandes pour le délire 🙂

player playMove "AbswPercMrunSnonWnonDf";
// le joueur nage dans les airs

player hideObject true;
// le joueur est invisible

null = [] spawn {
    while {true} do {
        {
            player disableCollisionWith _x;
        } forEach ((position player) nearObjects 100);
        sleep 1;
    };
};
// le joueur peut traverser les objets 

Le débogueur fonctionne en mode non schedulé, cela signifie que par défaut tu ne peux pas utiliser de commande sleep. Si tu veux utiliser un sleep dans la ligne de commande pour suspendre ton script, il faudra alors l’insérer dans une expression spawn de cette façon:

null = [] spawn {…your code with sleep};

Mais, on reviendra la dessus plus tard!

En bref, comme tu l’auras compris le débogueur va t’aider un peu, mais il faudra surtout que t’améliores ta méthodologie de coding, d’investigation, d’analyse pour identifier plus rapidement d’où peuvent venir les erreurs.

Cet article a été initialement rédigé par Killzone Kid, réactualisé par Code34

Votre commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l’aide de votre compte WordPress.com. Déconnexion /  Changer )

Photo Google

Vous commentez à l’aide de votre compte Google. Déconnexion /  Changer )

Image Twitter

Vous commentez à l’aide de votre compte Twitter. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l’aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s