Aller au contenu principal

Patches

Un patch est un comportement que vous dessinez. Il se place exactement entre les événements, simples mais incapables de retenir une valeur ou de calculer, et les scripts, capables de tout mais qui demandent d'écrire du code.

Recourez à un patch dès la première fois où vous vous surprenez à vouloir « …mais seulement si le score dépasse dix » ou « …le déplacer un peu plus loin à chaque fois ».

Votre graphe devient un vrai script

Les patches sont compilés, pas interprétés : ils tournent donc exactement aussi vite que du code écrit à la main. Vous pouvez lire le script généré à tout moment dans le panneau de code — c'est aussi le moyen le plus rapide de vérifier qu'un graphe fait bien ce que vous vouliez.

Chaque nœud avec ses ports : référence des nœuds de patch — 203 nœuds répartis en 24 catégories.

Quatre sortes de nœuds

SorteComment la repérerCe que c'est
Eventseulement des sorties, dont une pulsationlà où commence le graphe — au lancement, au toucher, à chaque image
Effectune pulsation en entrée et une en sortiefait quelque chose, dans l'ordre
Controldivise ou répète la pulsationbranche, porte, répétition, for-each, once, délai
Dataaucune pulsationune valeur — un nombre, une somme, le champ d'un composant

Le fil de pulsation est l'ordre dans lequel les choses se produisent. Suivez-le depuis un nœud d'événement et vous lisez la séquence. Les fils de données ne portent que des valeurs ; ils n'ont pas d'ordre.

Ports et fils

Les ports sont typés (nombre, booléen, chaîne, vecteur, couleur, objet) et des types incompatibles refusent de se connecter, ce qui attrape pas mal d'erreurs avant même d'exécuter quoi que ce soit.

Un port vecteur se déplie en x, y et z : vous pouvez en câbler un et saisir les deux autres.

Une entrée laissée déconnectée utilise la valeur que vous avez saisie dans le nœud. C'est généralement ce que vous voulez : ne câblez que les parties qui changent.

Dire à un nœud sur quel objet travailler

Les nœuds de composant (« get transform », « set material ») doivent savoir quel objet.

Laissez la liaison vide et cela veut dire cet objet, celui auquel le patch est attaché. Remplissez-la et le nœud travaille sur cet objet-là.

Deux commodités à connaître :

  • Les nœuds get sont indulgents. Lire un composant que l'objet n'a pas ne donne rien, plutôt que de casser le graphe.
  • Les nœuds set n'écrivent que ce que vous avez rempli. Tout ce que vous avez laissé tranquille reste tel quel.
Les ports de rotation sont en degrés

Ce qui correspond à tout le reste de ce que vous voyez. Souvenez-vous-en simplement si vous faites passer des valeurs entre un patch et un script, où la rotation est en radians.

Ce que contient le catalogue

CatégorieCe que vous y trouverez
events30 points de départ — lancement, image, toucher, touches, collisions, suivi
componentslire et écrire n'importe quel composant
math · vector · logic · stringarithmétique, comparaisons, vecteurs, texte
flowbranche, porte, répétition, for-each, once, délai, séquence
statecompteur, bascule, minuteur, lissage
entities · lifecycletrouver des objets, créer, faire apparaître, détruire
physicsimpulsions, forces, vitesse, raycast
netmultijoueur — envoyer, recevoir, état partagé, faire apparaître
globals · variables · messagingdes valeurs partagées avec d'autres patches et scripts
uilire et écrire les variables d'une carte d'interface
functionsappeler un autre patch, ou un script

Réutiliser un patch

Enregistrez un graphe comme ressource et vous pouvez le déposer sur d'autres canevas. Son comportement dépend de la façon dont vous l'avez construit :

Vous avez construitVous obtenez
aucun nœud d'entrée ni de sortieun comportement — déposez-le et il tourne, sans câblage
des entrées, des sorties et une entrée de pulsationune étape — elle s'exécute à l'arrivée de la pulsation, sorties prêtes ensuite
des entrées et des sorties, sans pulsationune fonction — ses sorties sont calculées là où on les lit

Ses connecteurs viennent des nœuds d'entrée et de sortie que vous y avez mis : en ajouter un le fait apparaître chez tous les appelants. Modifiez le patch et tout ce qui l'appelle se met à jour en direct.

Un patch fonction n'a pas d'objet à lui

Dans une fonction pure il n'y a pas de « cet objet » : les nœuds d'objet et de composant n'y ont donc pas leur place. Gardez les fonctions pour les données, les maths et la logique, et faites le travail sur la scène chez l'appelant.

Les patches peuvent aussi appeler des scripts, ce qui est la façon habituelle d'atteindre ce que le catalogue ne couvre pas.

Des valeurs qui survivent au graphe

Trois façons de retenir quelque chose, qui diffèrent par leur portée :

StockagePartagé avec
variablesles nœuds de ce seul patch
globalstous les patches, scripts et événements du projet
messagesquiconque écoute, sous forme de notification ponctuelle nommée

Les globals ont deux portées : à l'échelle du projet (elles survivent au passage d'un space à l'autre) et propres au space (elles repartent de zéro). Les noms se saisissent au lieu d'être câblés, ce qui garde le routage prévisible.

La sortie de secours

Deux nœuds acceptent du JavaScript directement : expression renvoie une valeur, action exécute des instructions. Tout ce qu'un script peut atteindre y est disponible.

Ils sont là pour la petite chose qui manque au catalogue — pas comme mode de vie. Si vous vous surprenez à y écrire beaucoup, écrivez plutôt un script et appelez-le depuis le graphe.

Quand quelque chose ne va pas

Ouvrez le panneau de code. Un graphe qui ne compile pas — une boucle dans les fils de données, du JavaScript cassé dans un nœud action — vous le dit là.

Et un patch cassé n'entraîne jamais la scène avec lui : les autres continuent de tourner.


Suite : Contrôles de jeu — laissez les gens se déplacer.