All tutorials

Nomeie o que seu programa cria

Beginner 10 min engine

Um programa pode construir cem objetos e não mostrar nenhum deles no Scene Graph. Nomear é o gesto que faz um deles aparecer, e funciona com sprites, textos, objetos 3D, luzes e partículas.

O que você vai aprender#

Você vai escrever um pequeno programa em BASIC, ver o Scene Graph continuar vazio mesmo funcionando claramente, e depois fazer cada objeto aparecer nomeando-o. No final você vai saber por que a árvore esconde a maior parte do que um programa constrói, e como escolher o que ela mostra.

Antes de começar#

  • Engine é um módulo apoiado. Inkwell, Vectra e PDF Studio são os três gratuitos.
  • Nenhum tutorial anterior é necessário. Tudo abaixo cabe num único script.
  • Deixe o painel Scene Graph aberto, ao lado da viewport. É o ponto inteiro do exercício.

Passos#

  1. Abra o Engine, comece uma cena vazia, e abra o editor de scripts. Cole isto e aperte 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. Olhe o Scene Graph. O sprite está na tela, a luz está acesa, e a árvore não mostra nada. Isso não é um bug, e é a lição inteira.

    Dica: o painel mostra uma contagem de objetos sem nome. Esse número é a produção do seu programa que a árvore deliberadamente deixou de fora.

  3. Nomeie o sprite. Adicione uma linha depois de SpritePosition, e aperte Play de novo:

    SpriteName(sprite, "jogador")
    

    jogador aparece na árvore. Nada mais mudou na tela: nomear não cria, move ou desenha nada. Isso publica.

  4. Nomeie a luz também, com o comando que veio junto com essa ideia:

    LightName(1, "sol")
    

    Duas entradas agora. Clique numa delas: o inspetor acompanha, exatamente como faria para um objeto que você tivesse posicionado na mão.

  5. Adicione partículas e nomeie-as, para ver que a regra não é só sobre sprites:

    CreateParticles(1, 200.0, 200.0)
    ParticlesName(1, "fumaça")
    
  6. Agora remova as três linhas de nomeação e aperte Play. A cena é idêntica, a árvore está vazia de novo, e a contagem de objetos sem nome volta para três.

    Aviso: um nome não é um id. SpriteName(sprite, "jogador") rotula o sprite cujo id está em sprite; isso não permite encontrá-lo depois por esse rótulo. O id continua sendo sua referência.

Resultado#

Você decide o que o seu programa mostra. Um prop, uma luz e um emissor aparecem sob os nomes que você escolheu; as centenas de objetos técnicos que um programa de verdade constrói ficam fora do caminho.

Por que a regra existe#

Um programa BASIC clássico cria objetos o tempo todo: um sprite por bala, um texto por dígito de pontuação, uma imagem por tile. Listar todos eles deixaria o Scene Graph ilegível em segundos, e os três objetos que realmente importam para você se perderiam no meio do ruído.

Por isso a árvore não mostra tudo escondendo o resto por adivinhação. Ela mostra o que você nomeou, e conta o resto para que nada desapareça em silêncio. O filtro é seu, não do motor.

Quais objetos podem ser nomeados#

ComandoO que ele nomeia
SpriteName(id, nome)Um sprite
TextName(id, nome)Um objeto de texto
ObjectName(id, nome)Um objeto 3D
LightName(id, nome)Uma luz pontual ou direcional
ParticlesName(id, nome)Um emissor de partículas, 2D ou 3D

Sons, imagens, memblocks e fontes não têm linha no Scene Graph: são recursos, não objetos de cena, e nomeá-los não mostraria nada em lugar nenhum.

Para ir além#