Amazon Lumberyard Comment utiliser le système de graphe de flux

Ce que vous allez créer

Dans ce didacticiel, je vais vous montrer comment utiliser le système de graphique de flux dans Amazon Lumberyard. Vous utiliserez le système de script visuel pour animer des boutons et créer des interactions entre le canevas d'interface utilisateur et vos scènes 3D. Ensuite, vous créerez un autre script pour modifier votre scène 3D en tenant compte de l'emplacement de votre avatar. Enfin, vous serez confronté à un défi.

Notez qu'il vous est conseillé de lire le reste de la série afin de bien comprendre les notations de cette partie..

Qui devrait lire cette série de tutoriels?

Cette série de didacticiels s’adresse principalement à deux groupes de développeurs de jeux: ceux qui ne connaissent pas du tout les moteurs de jeu et ceux qui connaissent d’autres moteurs de jeu (tels que Unity, Unreal Engine ou Cry Engine), mais pas avec Lumberyard. . Je suppose que vous connaissez un peu la notation graphique informatique, je ne couvrirai donc pas toutes les notations de manière exhaustive..

Graphique de flux 

Flow Graph est un système de script visuel qui vous permet d'implémenter une logique de jeu complexe sans avoir à programmer une seule ligne de code. Toute logique peut être créée, modifiée et supprimée avec seulement quelques interactions d'interface utilisateur. Flow Graph est également utile pour le prototypage de scénarios, d’effets et de sons de jeu..

Flow Graph se compose essentiellement de nœuds et de liens. Les premiers représentent généralement des entités de niveau ou des actions pouvant exécuter une action spécifique sur une entité cible. Ces derniers sont utilisés pour connecter des nœuds et sont représentés par des flèches qui connectent les entrées et les sorties entre les nœuds..

Le graphe de flux peut être ouvert de deux manières principales; le premier passe par le menu principal, en utilisant le lien à Vue > Ouvrir le volet de visualisation > Graphique de flux.

La seconde façon consiste à utiliser l’icône de graphe de flux disponible dans Éditeur barre d'outils.

Ouvrez le graphe de flux en utilisant l’une des options disponibles..


L'éditeur de graphe de flux est composé des composants suivants:

  1. Graphe de nœud: grille de la fenêtre principale pour l'affichage des nœuds et des connexions du graphe de flux.
  2. Composants: volet de l'arborescence du navigateur pour tous les nœuds que vous pouvez utiliser.
  3. Graphes de flux: volet de l'arborescence du navigateur pour les graphiques et les entités; chaque graphe de flux créé sera placé ici.
  4. Propriétés: volet pour afficher les propriétés d'entrée et de sortie du nœud.
  5. Chercher: volet de recherche de graphes et de nœuds.
  6. Résultats de la recherche: volet pour afficher les résultats de la recherche.
  7. Points d'arrêt: volet pour afficher les points d'arrêt; un excellent moyen de déboguer votre jeu ou votre prototype.

Scripts de graphe de flux

Avant de vous lancer dans l'action, vous devez apprendre les bases des scripts Flow Graph..

Les scripts de graphe de flux sont organisés en quatre catégories différentes et contenus dans le Graphes de flux (nombre 3 dans l'image précédente) arborescence de dossiers dans le Editeur de graphique de flux.

  • NiveauCe répertoire contient des scripts spécifiques au niveau actuellement ouvert. Il contient Entités, Composants, et Modules. Les fichiers d'entités sont les graphiques de flux créés et associés à une entité actuellement disponible dans le niveau. Les composants sont similaires, mais les graphiques de flux sont maintenant associés aux composants du niveau. Les modules représentent une liste de modules spécifiques au niveau..
  • Global: Contient les actions d'interface utilisateur utilisées pour encapsuler la logique d'interface utilisateur pour faciliter le débogage et la maintenance.
  • Prefabs: Semblable au préfabriqué d'entité, vous pouvez également créer des préfabriqués graphiques. Vous pouvez créer un événement dans un préfabriqué, lui attribuer un nom, puis référencer l'instance de préfabri comme vous le faites normalement pour une entité..
  • Fichiers externes: Représenter une liste de scripts Flow Graph importés ou créés.

Flow Graph Scripting: UI Canvas comme vue par défaut

Dans le didacticiel précédent, vous avez créé un canevas d’interface utilisateur contenant des boutons. Vous vous souvenez peut-être aussi que cela n’a pas été complètement testé. Il est maintenant temps de revenir en arrière et de le finaliser.

L'idée principale derrière le canevas d'interface utilisateur est la suivante:

  1. Quand vous lancez votre jeu (Contrôle-G), le canevas d'interface utilisateur doit être chargé (au lieu du premier niveau).
  2. Lorsque vous cliquez sur le Démarrer jeu bouton, deux actions séquentielles se produisent:
  3. 1) La toile de l'interface utilisateur s'efface.
  4. 2) Vous chargez votre CompleteFirstLevel.

Composant Fader

Ouvrez Lumberyard Editor, puis le Éditeur d'interface utilisateur. Cliquez sur Ouvrir et ouvrez votre MyCanvases.uicanvas.

Sous le Hiérarchie volet, sélectionnez le Contexte élément. Maintenant, sous la Propriétés volet, cliquez sur Ajouter un composant… puis sélectionnez le Fader composant.

Sous le Image Propriétés; une nouvelle propriété appelée Fader sera affiché.

Ce Fader la propriété sera utilisée pour disparaître le canevas de l'interface utilisateur lorsque vous chargez votre niveau.

Flow Graph Scripting

Commencez par ouvrir le CompleteFirstLevel puis ouvrez le Graphique de flux Éditeur. Un graphique de flux vide doit apparaître.

Sous le Composants volet, sélectionnez le graphique Début, sous le Jeu Catégorie.

Notez que vous pouvez également utiliser le Rechercher un mot clé rechercher des nœuds spécifiques (quand vous savez quoi chercher).

Maintenant, cliquez sur Fichier> Nouveau créer un nouveau graphe de nœud. Le nom par défaut est Défaut, et il est placé sous le Fichiers externes section dans le Graphiques vitre.

Maintenant, faites glisser le Début noeud dans le graphique de noeud (centre de l'écran).

Le nœud Démarrer est le nœud par défaut qui est exécuté lorsque vous lancez votre jeu en utilisant le Passer au jeu option. Par conséquent, normalement, la plupart des graphes de nœud commenceront à ce nœud..

Avant d'ajouter les nœuds nécessaires pour afficher votre canevas d'interface utilisateur, vous devez apprendre des informations supplémentaires sur le graphe de nœud et ses propriétés..

Nœuds de graphe Description

Un nœud est représenté dans le graphe en tant que boîte avec des entrées et des sorties.

Un nœud est constitué de ports d'entrée situés à gauche pour recevoir des informations et de ports de sortie situés à droite pour transmettre des informations. Les ports de sortie sont activés en fonction de la fonction du nœud. Les ports peuvent avoir les différents types de données suivants.

Type de données Couleur La description
Tout vert Non spécifié, tout type de données peut être reçu
Booléen Bleu Vrai ou faux
EntityID Vert rouge Une valeur unique qui identifie toute entité d'un niveau
Flotte blanc Une valeur à virgule flottante 32 bits
Int rouge Un nombre positif ou négatif de 32 bits
UInt64
n / a Un nombre positif ou négatif de 64 bits
Chaîne Turquoise Un tableau de caractères utilisé pour stocker du texte
Vec3 Jaune Un vecteur 3D composé de trois valeurs à virgule flottante. Peut être utilisé pour stocker des positions, des angles ou des valeurs de couleur
Vide n / a Utilisé pour les ports qui n'acceptent aucune valeur mais sont déclenchés pour transmettre le flux de contrôle via un graphe de flux.

En prenant en compte l'image précédente:

  • Le texte avec fond bleu représente le nom du nœud.
  • Le texte avec un arrière-plan rouge représente l'entité cible.
  • Les flèches à gauche du nœud représentent les ports d’entrée du serveur. MoveEntityTo nœud.
  • Les flèches à droite du nœud représentent les ports de sortie du serveur. MoveEntityTo nœud.

Pour consulter une documentation complète concernant les nœuds Flow Graph, vous devez lire la documentation officielle..

Flow Graph Scripting: finition du canevas de l'interface utilisateur

Lorsque le jeu commence, vous voulez charger votre canevas d'interface utilisateur. Heureusement, Lumberyard a un nœud pour cela. Sélectionnez le Charge noeud sous UI> Toile et faites-le glisser dans le graphe de nœud.

Ce nœud a deux propriétés principales:

  1. Activer: il est automatiquement déclenché lorsque ce noeud est appelé.
  2. CanvasPathname: représente le nom du chemin d'accès à votre canevas d'interface utilisateur. Ici, vous devez mettre le nom de l’interface utilisateur créée dans le didacticiel précédent (MyCanvases.uicanvas).

Sélectionnez le Charge noeud et sous le Propriétés volet, changez le CanvasPathname propriété à MyCanvases.uicanvas.


Lorsque vous appuyez sur Entrer clé, la propriété CanvasPathname à l'intérieur de Charge le noeud devrait changer en conséquence.

Ce Charge Le noeud est presque terminé. Votre prochaine étape consiste à connecter le Début noeud dans le Charge nœud. Ceci est effectué en faisant glisser un lien (ou une flèche) de la Début sortie dans le Charger Activer contribution.

Si vous vous trompez en connectant une flèche, vous pouvez facilement résoudre ce problème. Vous devez utiliser le bouton droit de la souris pour cliquer sur la flèche et Retirer il. Notez que vous pouvez également choisir d'autres options telles que Désactiver, Retard, ou Tout. Je ne les expliquerai pas dans ce tutoriel car ils ne sont pas importants pour ce que nous voulons accomplir.

Puisque nous voulons utiliser un bouton pour déclencher une action, nous devons en ajouter une ActionListener nœud. Sous le UI > Toile, faites glisser le ActionListener dans le graphe de noeud.

le ActionListener a trois propriétés très importantes:

  1. CanvasID: Représente un identifiant entier unique de la toile à écouter. En d'autres termes, cela concerne le canevas chargé dans le nœud précédent. Par conséquent, il doit avoir le même identifiant que le MyCanvases.uicanvas.
  2. ActionName: Représente le nom de l'action que le ActionListener va écouter. Ce nom d'action est transmis lorsque l'utilisateur clique sur un bouton.
  3. OnAction: La sortie correcte est déclenchée lorsque la toile envoie l'action. il envoie un ordre à exécuter.

Je ne couvre pas le Activer encore une fois depuis que je l'ai expliqué plus tôt.

La première étape consiste à connecter le En charge au ActionListener Activer. Ensuite, pour passer l’identifiant de la toile, vous devez connecter les deux CanvasID sortie et entrée. Notez que lorsque vous les connectez le CanvasID = 0 changements à CanvasID.

le ActionName n’est pas aussi simple puisque nous devons d’abord définir une action pour notre bouton. L'idée est d'en ajouter un action cliquez sur le Démarrer jeu bouton.

Ouvrez le Éditeur d'interface utilisateur, et ouvrez le MyCanvases.uicanvas. Sélectionnez le Démarrer jeu bouton, et sous le Propriétés volet, ajoutez la chaîne NewGameClick au Action de clic.


Sauver la MyCanvases.uicanvas et retournez dans le Graphique de flux éditeur. Sélectionnez le ActionListener noeud et changer le ActionName propriété à NewGameClick.

le ActionListener est maintenant configuré. Il reste maintenant à configurer l’action effectuée lorsque cela ActionListener est déclenché. Rappeler le Fader composant ajouté plus tôt. Il est maintenant temps de l'utiliser.

Pour cela, vous devez ajouter le Animation noeud à l'intérieur du UI > Fader arbre dans le noeud du graphe.

Les nouvelles propriétés à regarder sont:

  1. ElementID: Représente l'identifiant entier unique du Fader élément.
  2. StartValue: Représente la valeur pour le Fader commencer; il varie de 0 à 1.
  3. Valeur cible: Représente la valeur pour le Fader finir; encore une fois, il va de 0 à 1.
  4. La vitesse: Représente les secondes prises par le Fader se faner; 1 représente 1 seconde, 2 serait deux fois plus rapide. 0 représente une action instantanée. 
  5. OnComplete: Déclenche la sortie lorsque le fader est terminé.

La première étape consiste à vérifier le ElementID du Fader composant. Pour cela, ouvrez le UI Editor, chargez votre toile et sélectionnez le Contexte composant. À l'intérieur de Propriétés volet, regardez le numéro à l’intérieur du Id élément. 

Notez que vous avez sélectionné le Contexte élément, puisque c’est celui qui a le Fader composant. Fermer la Éditeur d'interface utilisateur et changer le ElementID du Animation noeud à 2.

Ensuite, changez le StartValue à 1 et le Valeur cible à 0. Laissez le La vitesse valeur par défaut.

Maintenant, connectez le OnAction (ActionListener)au Activer contribution (Animation). Encore une fois, connectez le CanvasID ensemble (Charge noeud au Animation nœud).

Ce Graphique de flux est presque terminé. Pour comprendre ce qui manque, jouez au jeu (Contrôle-G). Que vois-tu? Votre menu avec l'action correcte à l'intérieur du Démarrer jeu bouton, mais pas de curseur de la souris pour vous aider. Réglons ça, alors.

Cherchez le Curseur de la souris noeud à l'intérieur du Contribution arbre et l'ajouter au noeud du graphe. Ce nœud n'a que deux entrées (Spectacle et Cacher). Les deux sont explicites, à droite?

Connectez le Début sortie (Début noeud) dans le Spectacle contribution (Curseur de la souris nœud). Ensuite, connectez le OnAction sortie vers le Cacher contribution.

Vous pouvez maintenant lancer le jeu et tester si tout va bien. Vous vous rendrez compte que c'est.

Cependant, nous allons effectuer une étape de performance supplémentaire. Puisque nous ne voulons pas créer de jeux avec des fuites de mémoire, nous devrions prendre l'habitude de faire les choses correctement. Une fois l’animation de fondu terminée, nous devrions décharger la toile..

Ajouter le Décharger noeud (UI > Toile) en tant que noeud final dans le graphique de noeud. Connectez le OnComplete (Animation) en sortie dans le noeud Activer (Décharger). Enfin, connectez le CanvasID ensemble (Charge noeud au Décharger nœud).

Le graphe de flux complet est:

Enregistrez votre graphique de flux et nommez-le mygraphdemo.

Plus de scripts de graphes de flux

La prochaine étape de ce didacticiel consiste à créer un autre graphe de flux. Cependant, cette fois, vous interagirez directement avec les objets de votre scène 3D pour construire le graphique. L'idée principale est d'utiliser l'emplacement du lecteur pour interagir avec un déclencheur de proximité afin d'allumer une lampe..

dans le RollupBar, sélectionner Entité > Déclencheurs et faites glisser un Déclencheur de proximité dans la scène 3D.

Placer le Déclencheur de proximité près d'une lampe. La boîte 3d jaune représente la zone de déclenchement.

Clic droit le Déclencheur de proximité et sélectionnez le Créer un graphique de flux option.

Nomme le TriggerGraph et cliquez D'accord. L'éditeur de graphique de flux devrait s'ouvrir. Vous remarquerez que cette fois le graphique sera placé à l'intérieur du Niveau> Entités section.

Maintenant, réorganisez votre interface afin de voir le Déclencheur de proximité, la lampe (Lumière1) et le Editeur de graphique de flux en même temps. 

Sélectionnez le Déclencheur de proximité et, à l'intérieur du noeud du graphique, utilisez le bouton droit de votre souris et sélectionnez le Ajouter l'entité sélectionnée option.

Un nouveau ProximitéTrigger noeud apparaîtra.

Les seules propriétés que nous utiliserons seront les Entrer et Laisser les sorties. Le premier est déclenché lorsque le joueur entre dans le Déclencheur de proximité zone, alors que la seconde est déclenchée lorsque le joueur quitte le Déclencheur de proximité surface.

Ensuite, sélectionnez votre Lumière1 élément et désélectionnez le actif option à l'intérieur du Propriétés de l'entité vitre.

Avec le Lumière1 sélectionné, à l'intérieur du Graphique de flux utilisez le bouton droit de la souris et sélectionnez Ajouter l'entité sélectionnée encore.

Maintenant, vous devez connecter le ProximitéTrigger noeud avec le Lumière nœud. Connectez le Entrer sortie dans le Activer contribution. Enfin, connectez le Laisser sortie dans le Désactiver contribution.

Enregistrez le graphe de flux et nommez-le TriggerGraph. Il est maintenant temps de lancer le jeu et de valider votre nouveau graphe de flux. Tout devrait fonctionner comme prévu.

Défi

Afin de tester les connaissances que vous avez acquises jusqu’à présent, vous devez maintenant recréer le Lumberyard par défaut. débutant-terminé-niveau. Pour cela, vous devrez jouer avec les pinceaux, l'éclairage, les matériaux, les textures, les terrains et les graphiques de flux. En bref, appliquez tout ce que vous avez appris jusqu'à présent. Votre dernier niveau devrait ressembler à ceci:

Conclusion

Ceci conclut ce tutoriel sur Lumberyard. Dans ce tutoriel, je vous ai montré comment utiliser le système Flow Graph. Vous avez utilisé le système de script visuel pour configurer le canevas d’interface utilisateur en tant que vue par défaut et avez créé des interactions entre ce dernier et vos scènes 3D. Ensuite, vous avez créé un script pour modifier votre scène 3D, en tenant compte de l'emplacement de votre lecteur et d'un déclencheur de proximité. Si vous avez des questions ou des commentaires, comme toujours, n'hésitez pas à laisser une ligne dans les commentaires.