Table des matières

Arma 3 scripting pour les créateurs de missions

Vaste sujet ! Il s'agit ici de décrire de façon rapide les principales caractéristiques du développement de scripts afin de faire gagner du temps pour les premiers pas. Il s'adresse aux personnes qui disposent d'une culture générale en codage informatique ou aux développeurs confirmés qui débarquent dans le scripting Arma et dans le code des jeux en ligne plus généralement. On renverra à des ressources détaillées pour chaque rubrique.

Pour bien débuter

Le blog de Shinriel tutojeu.fr contient pas mal de ressources intéressantes dans la catégorie Arma 3. Si vous voulez vous lancer, il faut d'abord vous équiper. Jetez un œil à l'article sur les outils pour scripter.

Exécution du code

Pour exécuter du code, on peut (ou on doit selon les cas) :

Dans un environnement distribué tel qu'un jeu en ligne, le code s'exécute de façon asynchrone. L'ordre d'exécution du code est géré par un moteur d'ordonnancement particulier (scheduler).

Variables, espaces de nommage et localité

Localité

C'est un sujet clé et non trivial :-). Pour commencer, il faut savoir que le code est exécuté sur une des “localités” suivantes :

Un exemple concret : localité d'exécution des scripts d'initialisation d'une mission

Pour aller plus loin : (en anglais) l'article sur la localité sur KK's Blog, le blog de Killzone Kid qui a biberonné pas mal d'entre nous.

Portée des variables

Une variable peut être :

Pour aller plus loin…

Manipulation des variables

Dans les pratiques habituelles de développement, on ne modifie pas une variable sans passer par une fonction (ou une classe, une méthode, etc.), sauf exception. En effet, la fonction contrôle le traitement de la variable pour éviter des modifications interdites (type de variable, casting, etc.), contrôle les appels et les modifications de valeur, etc. La doc complète https://community.bistudio.com/wiki/Variables#Public_Variables

Les scripteurs Arma ont (souvent) une pratique plus laxiste, du coup plus souple (mais potentiellement bordélique). Par exemple, il est possible d'affecter des groupes à GAIA de façon conditionnelle.

Du fait que les espaces (de nommage, localité, etc.) et les types sont complexes, il existe des fonctions dédiées à la manipulation des variables : setVariable et getVariable.

Pour aller plus loin…

Espaces de nommage

Une variable (ou une fonction) est disponible dans un espace de nommage donné. Par exemple, la mission a un espace de nommage dédié (missionNameSpace). Idem pour le profil d'un utilisateur (profileNamespace).

A compléter !

Pour aller plus loin…

Débogage du code

La console de débogage

En cours de mission (en appuyant sur la touche Echap) ou en cours d'édition de mission via l'éditeur de mission Eden (Ctrl+D), on accède à la console de débogage. Attention, les droits d'accès à la console durant la mission se paramètrent via Eden par le menu Attributs → Général, onglet Etats.

La console permet diverses choses, en particulier d'exécuter du code à la volée et de surveiller jusqu'à 4 variables.

Traces et messages de débogage

Des messages de débogage peuvent être affiché via la commande systemChat. Un outre, un journal d'exécution est disponible sur chaque PC (fichier rpt)

Pour aller plus loin : un article plus complet sur tutojeu.fr

Exemples, snipets et tips en tout genre