Ce que vous allez apprendre#
Vous allez écrire un petit programme BASIC, constater que le Scene Graph reste vide alors qu'il fonctionne manifestement, puis faire apparaître chaque objet en le nommant. À la fin, vous saurez pourquoi l'arbre cache l'essentiel de ce qu'un programme fabrique, et comment choisir ce qu'il montre.
Avant de commencer#
- Engine est un module soutenu. Inkwell, Vectra et PDF Studio sont les trois gratuits.
- Aucun tutoriel préalable. Tout tient dans un script.
- Gardez le panneau Scene Graph ouvert à côté de la vue : c'est tout l'objet de l'exercice.
Étapes#
-
Ouvrez Engine, partez d'une scène vide et ouvrez l'éditeur de script. Collez ceci et appuyez sur Play :
image = LoadImage("hero.png") sprite = CreateSprite(image) SpritePosition(sprite, 100.0, 120.0) CreatePointLight(1, 0.0, 5.0, 0.0, 10.0, 255, 255, 255) DO Sync() LOOP -
Regardez le Scene Graph. Le sprite est à l'écran, la lumière éclaire, et l'arbre ne montre rien. Ce n'est pas un défaut, et c'est toute la leçon.
Astuce : le panneau affiche un compteur d'objets sans nom. Ce nombre, c'est la production de votre programme que l'arbre a délibérément laissée de côté.
-
Nommez le sprite. Ajoutez une ligne après
SpritePosition, puis relancez :SpriteName(sprite, "joueur")joueurapparaît dans l'arbre. Rien n'a changé à l'écran : nommer ne crée pas, ne déplace pas et ne dessine pas. Cela publie. -
Nommez aussi la lumière, avec la commande venue avec cette idée :
LightName(1, "soleil")Deux entrées désormais. Cliquez l'une des deux : l'inspecteur suit, comme pour un objet que vous auriez posé à la main.
-
Ajoutez des particules et nommez-les, pour voir que la règle ne concerne pas que les sprites :
CreateParticles(1, 200.0, 200.0) ParticlesName(1, "fumee") -
Retirez maintenant les trois lignes de nommage et relancez. La scène est identique, l'arbre est vide à nouveau, et le compteur d'objets sans nom revient à trois.
Attention : un nom n'est pas un identifiant.
SpriteName(sprite, "joueur")étiquette le sprite dont l'identifiant est danssprite; il ne permet pas de le retrouver ensuite par cette étiquette. L'identifiant reste votre poignée.
Résultat#
Vous décidez de ce que votre programme montre. Un accessoire, une lumière et un émetteur apparaissent sous les noms que vous avez choisis ; les centaines d'objets techniques qu'un vrai programme fabrique restent à l'écart.
Pourquoi la règle existe#
Un programme BASIC classique crée des objets sans arrêt : un sprite par balle, un texte par chiffre du score, une image par tuile. Les lister tous rendrait le Scene Graph illisible en quelques secondes, et les trois objets qui vous importent seraient noyés.
L'arbre ne montre donc pas tout en devinant ce qu'il faut cacher. Il montre ce que vous avez nommé, et il compte le reste pour que rien ne disparaisse en silence. Le filtre est le vôtre, pas celui du moteur.
Ce qui peut être nommé#
| Commande | Ce qu'elle nomme |
|---|---|
SpriteName(id, nom) | Un sprite |
TextName(id, nom) | Un objet texte |
ObjectName(id, nom) | Un objet 3D |
LightName(id, nom) | Une lumière ponctuelle ou directionnelle |
ParticlesName(id, nom) | Un émetteur de particules, 2D ou 3D |
Les sons, les images, les memblocks et les polices n'ont aucune ligne dans le Scene Graph : ce sont des ressources, pas des objets de scène, et les nommer n'afficherait rien nulle part.
Pour aller plus loin#
- Le reste du dialecte : le langage BASIC.
- Chaque commande de nommage avec ses paramètres : la famille Studio.