Halo FR

Forge Domaine #06 – Les scripts 1/2

baniere-forge-domaine-6
En raison de mises à jour ultérieures à la publication de cet article sur Halo 5 : Guardians, les présentes informations ne sont plus applicables et seront prochainement actualisées.
Bonjour tout le monde !

Je suis Erydhil et je reviens pour un sixième numéro de la chronique Forge Domaine ! Vous pouvez par ailleurs retrouver le précédent numéro en suivant ce lien : Forge Domaine #05 – Le style forerunner

Pour cette sixième édition, je vais aborder un thème qui intéresse nombre d’entre vous je pense et qui n’est autre que les scripts ! C’est un outil qui a été introduit dans la forge de Halo 2 : anniversary, donc même s’il n’est pas forcement nouveau dans Halo 5, il a été indéniablement amélioré et optimisé dans cet opus. Pour tout un tas de raisons, c’est un outil qui peut être très intéressant, notamment dans la conception de cartes funs !

Je voudrais aussi préciser que je n’ai pas très souvent eu à utiliser les scripts et je suis loin d’être un pro en la matière. Néanmoins, je pense suffisamment les maîtriser pour vous en expliquer les bases. Ne vous attendez donc pas à un tutoriel poussé, d’autant plus qu’il y a plusieurs méthodes pour les aborder et que les possibilités qu’ils offrent sont énormes. En ce sens, un seul article ne suffirait pas à tout expliquer.

Tout au long de ce numéro, je vais donc vous présenter les scripts, leur fonctionnement, la logique qu’il faut adopter pour les créer et je vais essayer de vous donner quelques exemples d’applications.


Les scripts


Pour les présenter brièvement

Pour commencer, qu’est ce que les scripts ? Je pense que chacun en a une idée, mais il faut bien commencer par poser les choses. Dans Halo 5, un script n’est pas un bloc à proprement parler mais une sous-catégorie nommée « scripts » dans les propriétés de n’importe quel objet :

Menu script présent dans les options de la majorité des objetsMenu script présent dans les options de la majorité des objets

Ces scripts permettent de faire faire certaines actions à tous les types de blocs, mais pas d’interagir avec ces derniers. Pour ce faire, vous aurez besoin de terminaux (ou interrupteurs) avec lesquels vous pouvez interagir afin qu’ils envoient des commandes (messages) à d’autres blocs, celles-ci déclenchant une action particulière. Ces terminaux servent donc d’interface avec l’utilisateur.

Évidemment, ces interfaces n’ont de sens que si vous avez besoin qu’une action soit liée à une interaction. Via les scripts, vous pouvez très bien faire en sorte qu’un bloc bouge seul sans la moindre interaction avec un joueur. Dans ce cas, ces actions ne nécessitent pas l’utilisation d’interrupteurs. Les terminaux n’auront d’utilité que dans certains cas de figure.


Les différentes actions/conditions

Évidemment, dans Halo 5, on ne peut pas sélectionner n’importe quelle condition ou action, on ne peut qu’en sélectionner une parmi plusieurs. Si pour certaines, le nom parle par lui-même, d’autres sont plus compliquées à comprendre. Voici toutes les conditions et actions que l’on peut choisir, avec une brève description de ce à quoi elles correspondent :
_
Les conditions :

– A l’apparition : Permet d’exécuter une action lorsque le bloc apparaît.
– Destruction/Disparition : Permet d’exécuter une action lorsque le bloc disparaît/est détruit.
– Avec message : à la réception : Permet d’exécuter une action lorsqu’un message est reçu sur le canal sélectionné.
– Avec alim : état : Permet d’exécuter une action lorsque l’état du canal sélectionné est correct.
– A la fin du temps : Permet d’exécuter une action à la fin du temps choisi.
– En cas d’interaction : Permet d’exécuter une action en interagissant avec l’objet.
– En début de partie : Permet d’exécuter une action au début de la partie.
– En début de manche : Permet d’exécuter une action au début d’une manche.
– Message alim – multi : Permet d’exécuter une action si plusieurs conditions sont remplies.

Les actions :

– Me faire apparaître : Fait apparaître l’objet.
– Me faire disparaître : Fait disparaître l’objet.
– Position / Rotation :
réinitialiser : Réinitialise la position et la rotation de l’objet par rapport à son état initial.
– Message : envoyer : Envoi un message sur un canal.
– Alim : réglage :
Permet de modifier l’état de l’alimentation d’un canal (oui/non). Je trouve le terme « alimentation » assez peu clair, je préfère juste parler d’état du canal on/off, ce qui est plus simple à comprendre.
– Déplacement : rayon : Permet de déplacer un objet en un certain temps.
– Rotation : rayon de déplacement : Permet de faire tourner un objet en un certain temps.


Le fonctionnement général des scripts

En soit les scripts sont relativement simples, il faut juste comprendre la logique de base qui les régit. Il s’agit d’adopter la logique qu’un codeur peut avoir pour réaliser un programme, mais en bien plus simple et explicite ! On peut représenter les scripts comme une simple condition selon ce schéma :

Début de la condition
| Si (choix des conditions)
| | Alors
|  |Choix des actions ;
Fin de la condition ;

Voilà la notation schématique logique. Elle paraît complexe dans ce cas et ce n’est pas la façon la plus simple de voir la chose. Je vais donc éviter de la réutiliser. Pour peu que l’on y passe un peu de temps et que l’on s’y intéresse, tout le monde peut utiliser les scripts (au moins les plus simples). A présent, voyons des exemples d’utilisation des scripts, je vais m’efforcer d’être le plus explicite possible.


Quelques exemples

_
Déplacement d’un pélican

Maintenant que l’on est au clair sur les différentes actions/conditions et que l’on connaît la structure qui y est associée, nous allons commencer par un exemple simple de script : on va déplacer un pélican, en ligne droite si l’on interagit avec un interrupteur. Au niveau du pélican, voici ce que ça va donner :

Script de déplacement du pélicanScript de déplacement du pélican

D’abord, nous définissons la condition comme étant la réception d’un message sur le canal Bravo. L’action associée est le déplacement du pélican selon l’axe horizontal de « -100 coordonnées en Y » en 2 secondes. A présent, il faut paramétrer l’interrupteur pour qu’il envoie un message en cas d’interaction avec le joueur, ce que l’on fera de cette manière :

Script d'envoi de message en cas d'interactionScript d’envoi de message en cas d’interaction

Une fois ceci fait, nous avons tout le nécessaire pour que le pélican puisse se déplacer si l’on interagit avec cet interrupteur. Maintenant, nous allons essayer d’aborder des scripts un peu plus utiles, que vous pourriez potentiellement utiliser dans vos cartes que ce soit pour interagir avec des objets ou même juste pour l’ambiance.

Ouverture d’une porte

Un autre exemple tout simple et pas trop éloigné de celui que l’on vient de voir serait l’ouverture et la fermeture d’une porte. Étant donné que c’est une porte du futur (si si), on va la faire coulisser dans le mur sur le côté (du futur, je vous dis). Dans ce cas, on veut pouvoir l’ouvrir et la fermer pour la remettre dans sa position initiale, on a donc deux états que l’on pourrait appeler on et off qui vont correspondre à l’ouverture et à la fermeture. L’action correspondante est « Alim – Réglage » que l’on règle sur la canal alpha :

Script d'alimentation de canal en cas d'interactionScript d’alimentation de canal en cas d’interaction

A l’état initial, l’alimentation est en mode off, nous allons donc régler le premier mouvement de la porte, lorsqu’elle passera en mode on. Nous allons donc paramétrer un déplacement latéral, lorsque l’état passe à on de 6,5 coordonnées selon l’axe Y.

Script de déplacement de la porteScript de déplacement de la porte

Si la personne ré-utilise l’interrupteur, l’alimentation va de nouveau passer au mode off, nous allons donc associer l’action inverse à la porte : elle va se déplacer de -6,5 coordonnées en Y si l’alimentation est en mode off. Une fois ceci fait, il n’y a plus qu’à tester, ce qui nous donne ça :

Lorsque j’ai ouvert la porte, vous avez sans doute remarqué qu’elle flottait. J’ai réaliser cet effet en codant un script qui lui permet de se déplacer de manière perpétuelle. Je vais prendre un exemple un peu plus visible et un poil plus simple pour mieux vous expliquer.

Tourelle covenant

J’ai forgé une petite tour covenant dont une partie tourne sur elle-même sans arrêt :

Pour ce faire, j’ai associé à une rotation la condition « à la fin du temps » à mes deux blocs covenants, de manière à ce que dès que la tour à fini une demi-rotation, elle en entame une nouvelle, voici le script :

Script de rotation perpétuelle de la tourelle Script de rotation perpétuelle de la tourelle

Dans ce cas, après un premier délai de 0,1 seconde, ma tourelle fait un tour à 180° en 8 secondes puis recommence au bout de 0,1 seconde de même (0,1 seconde étant le minimum, à 0 seconde, elle ne repart jamais).

Dans le cas de mon monitor qui flotte, la seule différence (outre la destructivité de l’objet), est que d’abord le mouvement n’est pas rotatif et qu’il flotte vers le haut pendant un certain temps puis fait le mouvement inverse et ainsi de suite, je vous laisse réfléchir là dessus. ^^

Étant donné que la tourelle est un élément destructible, je me suis amusé à faire disparaître le dôme dans le cas où on la détruit. C’est assez simple, à la disparition/destruction des blocs de la tourelle, les blocs envoient un message sur le canal bravo. A la réception de ce message, le dôme disparaît, ce qui ajoute un peu de réalisme et qui « ne mange pas de pain » comme on dit.

Un point très important lorsque vous voulez qu’un groupe d’objets se déplace et que chacun des objets reste statique entre eux est qu’il faut que vous soudiez tous les objets entre eux au préalable. Une fois que ceci est fait, vous pouvez créer vos scripts pour le groupe d’objets, sachant qu’ils se déplaceront suivant l’objet parent du groupe. Si vous ne le faîtes pas, les mouvements seront saccadés et les objets bougeront de manière un peu chaotique entre eux, ce que personne ne veut, et vous non plus, je vous l’assure (si si).

Il faut aussi noter que les déplacements liés aux scripts sont assez approximatifs et honnêtement, je vous déconseille de faire des déplacements trop rapides ou avec trop d’objets. Dans la mesure du possible, il vaut mieux scripter des mouvements simples, autrement, il est possible de corriger ce défaut en réinitialisant régulièrement la position de l’objet, mais là on rentre dans des considérations qui vont énormément dépendre de l’action que l’on veut exécuter.


Pour conclure

Et c’en est fini de ce numéro, j’espère qu’il vous aura appris des choses sur les scripts et qu’il vous permettra de vous améliorer à ce sujet !
Évidemment, je ne vous ai expliqué que les bases qui peuvent vous servir pour n’importe quelle carte, mais vous pouvez faire des choses bien plus complexes grâce à ceux-ci. Je vous invite par ailleurs à consulter
la section carte fun du forum pour voir ce que certains réussissent à faire avec les scripts, c’est très impressionnant !

Si vous êtes intéressé par la tourelle covenant ou le petit appartement, pour les regarder plus en détails, je les ai regroupé en préfabriqué à ce lien.

Et vous, que pensez vous des scripts, les utilisez-vous souvent dans vos forges ?

Sur le même sujet

Commentaires

Vous devez être connecté(e) pour pouvoir poster.

  1. Mr Speed le 27 novembre 2016 à 10 h 28 min

    Super, il faudrait que je m’y penche à nouveau sur les scripts en forge. 🙂

FacebookTwitter