All tutorials

Benoem wat uw programma maakt

Beginner 10 min engine

Een programma kan honderd objecten bouwen en er geen enkel van tonen in de Scene Graph. Benoemen is de handeling die er één laat verschijnen, en dat werkt voor sprites, tekst, 3D-objecten, lichten en deeltjes.

Wat u leert#

U schrijft een klein BASIC-programma, kijkt toe hoe de Scene Graph leeg blijft terwijl het duidelijk werkt, en laat vervolgens elk object verschijnen door het te benoemen. Aan het eind weet u waarom de boom het grootste deel van wat een programma bouwt verbergt, en hoe u kiest wat hij toont.

Voordat u begint#

  • Engine is een module waarvoor steun nodig is. Inkwell, Vectra en PDF Studio zijn de drie gratis modules.
  • Geen voorgaande tutorial nodig. Alles hieronder is één script.
  • Houd het paneel Scene Graph open, naast de viewport. Dat is het hele punt van de oefening.

Stappen#

  1. Open Engine, start een lege scène, en open de scripteditor. Plak dit en druk op 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
    
  2. Kijk naar de Scene Graph. De sprite staat op het scherm, het licht brandt, en de boom toont niets. Dit is geen bug, en het is de hele les.

    Tip: het paneel toont een aantal naamloze objecten. Dat getal is de uitvoer van uw programma die de boom bewust niet heeft weergegeven.

  3. Geef de sprite een naam. Voeg één regel toe na SpritePosition, en druk opnieuw op Play:

    SpriteName(sprite, "player")
    

    player verschijnt in de boom. Er verandert verder niets op het scherm: benoemen creëert, verplaatst of tekent niets. Het publiceert.

  4. Geef ook het licht een naam, met het commando dat bij dit idee hoort:

    LightName(1, "sun")
    

    Nu twee items. Klik op één ervan: de inspector volgt, precies zoals bij een object dat u met de hand had geplaatst.

  5. Voeg deeltjes toe en geef ze een naam, zodat u ziet dat de regel niet alleen voor sprites geldt:

    CreateParticles(1, 200.0, 200.0)
    ParticlesName(1, "smoke")
    
  6. Verwijder nu de drie naamregels en druk op Play. De scène is identiek, de boom is weer leeg, en het aantal naamloze objecten staat weer op drie.

    Waarschuwing: een naam is geen id. SpriteName(sprite, "player") labelt de sprite waarvan het id in sprite staat; het laat u niet toe hem later via dat label terug te vinden. Het id blijft uw houvast.

Resultaat#

U bepaalt wat uw programma toont. Een prop, een licht en een emitter verschijnen onder de namen die u koos; de honderden technische objecten die een echt programma bouwt, blijven buiten beeld.

Waarom deze regel bestaat#

Een klassiek BASIC-programma maakt voortdurend objecten aan: een sprite per kogel, een tekst per scorecijfer, een afbeelding per tegel. Ze allemaal weergeven zou de Scene Graph binnen enkele seconden onleesbaar maken, en de drie objecten waar het u werkelijk om gaat, zouden verloren gaan in de ruis.

De boom toont dus niet alles en verbergt de rest niet door te gokken. Hij toont wat u benoemd hebt, en telt de rest zodat niets stilzwijgend verdwijnt. Het filter is van u, niet van de engine.

Welke objecten kunnen worden benoemd#

CommandoWat het benoemt
SpriteName(id, name)Een sprite
TextName(id, name)Een tekstobject
ObjectName(id, name)Een 3D-object
LightName(id, name)Een punt- of richtingslicht
ParticlesName(id, name)Een deeltjes-emitter, 2D of 3D

Geluiden, afbeeldingen, memblocks en fonts hebben geen regel in de Scene Graph: het zijn resources, geen scèneobjecten, en ze benoemen zou nergens iets tonen.

Verder gaan#