Keep your place in this quest

Log in or sign up for free to subscribe, follow lesson progress, and access more learning content.

Cave foi projetado para ser simples de aprender, mas ainda possui alguns conceitos importantes que você precisa entender.

Esta lição explica as palavras principais que você verá por toda a parte no editor: scene, entity, component, asset, entity template, transform, rigid body, character component, Python component, logic brick, timeline e runtime.

Esta é uma visão geral de alto nível e não detalha cada palavra especificamente, mas é importante começar a melhorar sua compreensão do engine. Quando essas palavras fizerem sentido, o restante do engine ficará muito mais fácil de entender.

O Panorama Geral

A maioria dos projetos Cave são construídos a partir de algumas ideias repetidas:

Conceito Significado Simples
Scene Um nível, menu, área de teste ou espaço jogável.
Entity Um objeto dentro de uma scene.
Component Uma funcionalidade anexada a uma entity.
Asset Conteúdo reutilizável do projeto armazenado no Asset Browser.
Entity Template Uma configuração reutilizável de entity, similar a um prefab.

Por exemplo, imagine uma caixa de madeira em um nível:

image.png

  • O nível é uma Scene.
  • A caixa colocada no nível é uma Entity.
  • A posição da caixa está armazenada em seu Transform.
  • O modelo visível é gerenciado por um Mesh Component.
  • A colisão pode ser gerenciada por um Rigid Body Component.
  • O modelo, material e textura usados pela caixa são Assets.

Se você quiser reutilizar essa configuração de caixa em várias scenes, pode salvá-la como um Entity Template.

Scene

Uma scene é uma coleção de entities.

Scenes podem ser usadas para:

  • Níveis de jogo.
  • Menus.
  • Mapas de teste.
  • Salas de protótipo.
  • Espaços de cutscene.

Apenas a scene ativa é editada na Visualização 3D principal. Quando você testa o jogo, o Cave roda a scene como gameplay e não apenas como conteúdo do editor.

Ao exportar ou testar o projeto como runtime, as configurações do projeto decidem qual scene é usada como cena inicial. Você pode alterar isso acessando a Settings Tab.

Entity

Uma entity é um objeto em uma scene.

Entities podem ser visíveis ou invisíveis. Podem ser simples ou complexas.

Exemplos de entities:

  • Um personagem jogador.
  • Uma porta.
  • Uma câmera.
  • Uma luz.
  • Um gatilho.
  • Um botão de UI.
  • Um ponto de spawn.
  • Uma pasta usada para organização.

Uma entity por si só é na maior parte um recipiente. O que ela pode realmente fazer depende dos components anexados a ela.

Component

Um component adiciona comportamento ou dados a uma entity.

Ao invés de ter um tipo único enorme para cada coisa possível, o Cave deixa você construir entities combinando components. E é exatamente assim que você deve montar os diferentes elementos do seu jogo, compondo as entities com múltiplos tipos de components.

Por exemplo:

Entity Components Possíveis
Parede estática Transform, Mesh, Rigid Body.
Jogador Transform, Character, Camera, Python.
Porta Transform, Mesh, Rigid Body, Python ou Logic Bricks.
Luz pontual Transform, Light.
Botão de UI UI Element.

Esta é uma das ideias mais importantes no Cave: Entities são recipientes. Components dão funcionalidades.

Também é importante mencionar que outra forma de compor seus diferentes tipos de objeto é usando múltiplas entities na hierarquia filho.

Nomeação de Entity

Ao criar uma nova entity, o Cave oferece diferentes tipos iniciais, como Folder, Empty, Mesh, Point Light, Camera, UI Element, Text e Button.

Eles não são mundos completamente separados. São pontos de partida convenientes.

Por exemplo:

  • Um Empty é uma entity básica com um transform.
  • Uma entity Mesh é uma entity preparada para exibir uma mesh.
  • Uma entity Point Light é uma entity preparada para se comportar como uma luz.
  • Uma entity Camera é uma entity preparada para renderizar uma vista.
  • Um Folder é uma entity usada principalmente para organização.

Geralmente você pode adicionar, remover ou editar components depois, então o tipo inicial é apenas um atalho útil.

Transform

O transform informa ao Cave onde uma entity está e como ela está orientada.

Ele inclui:

  • Posição.
  • Rotação.
  • Escala.

Quase toda entity de scene tem um transform porque a maioria dos objetos precisa existir em algum lugar no mundo. Quando você move, rotaciona ou escala uma entity com o gizmo, você está editando seu transform. Quando uma entity é filha de outra, seu transform é avaliado relativo a essa hierarquia.

Asset

Um asset é conteúdo reutilizável do projeto armazenado no Asset Browser. É importante mencionar que, embora uma Entity seja internamente considerada um Asset, um Asset não é a mesma coisa que uma Entity.

Por exemplo:

  • Um asset de mesh é o dado do modelo. Uma entity mesh é um objeto colocado na scene que usa esse asset de mesh.
  • Um asset de material define como uma superfície se parece. Uma entity mesh pode referenciar esse material.
  • Um asset de script Python contém código. Um Python component pode usar esse script.

Essa separação é poderosa porque um asset pode ser reutilizado muitas vezes. Se dez caixas usam o mesmo material, editar o asset do material pode atualizar todas elas.

Entity Template

Um entity template é uma configuração reutilizável de entity. Veja a captura de tela abaixo. Assets de Entity Template são marcados com uma linha verde abaixo da miniatura:

image.png

Se você vem de outro engine, pode pensar nele como similar a um prefab.

Um entity template pode armazenar:

  • Uma hierarquia de entity.
  • Components.
  • Configurações dos components.
  • Referências a assets.
  • Entities filhas.

Isso é útil para qualquer coisa que você queira reutilizar:

  • Inimigos.
  • Itens para pegar.
  • Portas.
  • Props.
  • Veículos.
  • Widgets de UI.
  • Objetos de gameplay.

Ao invés de reconstruir o mesmo objeto várias vezes, você o cria uma vez como um entity template e posiciona instâncias dele onde precisar.

Rigid Body

Um rigid body dá a uma entity comportamento físico. É usado quando um objeto precisa de colisão ou movimento físico.

Exemplos:

  • Uma caixa que bloqueia o jogador.
  • Uma bola que pode rolar.
  • Uma porta com colisão.
  • Uma parede que o jogador não pode atravessar.

Rigid bodies fazem parte do sistema de física do engine. Você os usará quando objetos precisarem interagir fisicamente com o mundo.

Character Component

Um character component é usado para movimentos do tipo personagem. Isso é diferente de um rigid body comum porque um personagem normalmente precisa de comportamento especial:

  • Andar.
  • Deslizar ao longo de paredes.
  • Lidar com inclinações.
  • Pular.
  • Responder a comandos do jogador.

Para um jogador ou NPC, um character component é geralmente um ponto de partida melhor do que tentar fazer um objeto físico básico se comportar como um personagem.

Quando falamos de Character Component no Cave, referimo-nos à sua Física de Personagem, não à lógica específica do jogo (como movimento, etc).

Tags e Propriedades

Tags e propriedades ajudam a identificar e configurar entities.

  • Uma tag é um rótulo que pode ajudar scripts ou lógica a encontrar e categorizar coisas.
  • Propriedades são valores editáveis expostos ao editor. Elas deixam você ajustar o comportamento sem reescrever código toda vez.

Por exemplo, um inimigo pode ter propriedades como:

  • Velocidade de caminhada.
  • Vida.
  • Distância de ataque.
  • Alvo de patrulha.

O bom uso de propriedades torna seu jogo mais fácil de ajustar.

Propriedades não estão limitadas a Entities: Scenes, Logic Bricks e outros Assets também podem tê-las.

Quando falamos de propriedades no Cave, referimo-nos especificamente a aquelas propriedades acessíveis via dicionários Python pelo código. Elas quase sempre também estão disponíveis no Editor.

Python Component

Um Python component permite que uma entity execute lógica Python.

Isso é útil quando você quer comportamento customizado, como:

  • Abrir uma porta.
  • Mover uma plataforma.
  • Controlar entrada do jogador.
  • Criar um objeto.
  • Atualizar texto de UI.
  • Acionar eventos.

Python components são uma das principais formas de programar gameplay no Cave.

Python Code Component

Um Python Code component é usado quando o código é armazenado diretamente no component em vez de estar vinculado como um script asset separado. Isso pode ser útil para testes rápidos, comportamentos pequenos ou protótipos.

Para sistemas de gameplay maiores, um script Python separado geralmente é mais fácil de organizar e reutilizar.

Logic Brick

Logic bricks são uma forma visual de construir lógica. Eles são úteis quando você quer comportamento sem escrever código Python diretamente.

Se você conhece os Blueprints do Unreal, logic bricks estão na mesma família de ideias: você conecta a lógica visualmente ao invés de escrever tudo como texto.

Eles são específicos para criar qualquer tipo de lógica que desejar sem precisar escrever código Python. Por exemplo, eventos e lógica de gameplay, comportamento de objetos, conexão de sistemas, gatilhos, etc.

Você vai aprendê-los mais adiante neste guia.

Timeline

Uma timeline é um asset usado para sequências criadas. Timelines podem animar ou acionar coisas ao longo do tempo.

Elas são úteis para:

  • Cutscenes.
  • Movimentos de câmera.
  • Eventos roteirizados.
  • Sequências coordenadas de gameplay.

Timelines não são necessárias para todo jogo, mas são úteis quando você quer que algo aconteça em uma ordem específica e planejada.

Importante: Timelines não são meios para edição individual de animações, como editar a animação de ciclo de caminhada (Walk Cycle) do seu personagem. Nesse caso, você deve usar um software DCC especializado, como o Blender, e depois importar para o Cave.

Player e Game Runtime

  • O Cave Editor é onde você constrói o projeto.
  • O Cave Player é o runtime que roda o jogo.

Quando você pressiona Play no editor, o Cave executa sua scene em um modo parecido com jogo dentro do editor. Quando você testa como runtime independente, o Cave lança o jogo em uma janela separada do player.

O jogo final exportado roda como uma build de player/runtime, não como o editor. Essa separação é importante porque algumas coisas são exclusivas do editor (para você debugar e/ou desenvolver seu projeto), enquanto outras fazem parte do jogo propriamente dito.

O Relacionamento Mais Importante

Se você lembrar de apenas uma coisa desta lição, lembre-se disso:

Uma scene contém entities, entities contêm components, e components frequentemente usam assets.

Esse é o alicerce de um projeto Cave.