Criando seu primeiro Blueprint
1. O que são Blueprints e Visual Scripting?
O sistema Blueprints Visual Scripting no Unreal Engine é um sistema completo de script de jogo baseado no conceito de usar uma interface baseada em nós para criar elementos de jogo a partir do Unreal Editor. Como acontece com muitas linguagens de script comuns, ele é usado para definir classes orientadas a objetos (OO) ou objetos na engine .
No exemplo acima visualizamos uma classe que pode representar um objeto do tipo gato, com seus atributos e ações.
Blueprints focam em ser acessíveis, versáteis para qualquer membro do projeto e isso simplifica tarefas para programadores e engenheiros de projeto, o que facilita entender, interagir e construir.
Para que o Unreal Engine possa construir os nós gráficos que representam a instruções de programação C++ é importante entender como é a hierarquia de elementos que compõem o projeto, segue abaixo a representação baseado no arquivo de referência no seguinte em unreal_schematics.
└── C++
├── Herança # Classes derivam e herdam de suas classes pai
| ├── Framework # Classes Padrão
| | └── Actor
| | ├── GameMode
| | | ├── Pawn
| | | ├── Controller
| | | ├── GameState
| | | └── PlayerState
| | └── GameInstance
| └── Events/Functions/Var # Eventos, funções e variáveis.
├── Blueprint
| ├── Components
| | ├── Static Mesh
| | └── Emiter
| ├── Editores
| | ├── Timeline
| | ├── Componentes
| | └── Editor de script
| └── Communication BP to BP # Comunicação entre Blueprints
| ├── Casting
| ├── Interface
| └── Event Dispacher
├── Compilação # Compilação do Bytecode.
| └── Navitization # Durante o processo de preparação, o Blueprint pode ser cruzado para c ++ e nativizado*
└── VM # Executado em uma máquina virtual
Nativização: A nativização é uma funcionalidade relativamente nova no Unreal Engine, que permite aos desenvolvedores converter suas classes criadas em Blueprint para código nativo C++ no momento em que é construído o pacote final do jogo. Isso faz com que seja possível aliar a facilidade de prototipação dos Blueprints ao desempenho do C++, acelerando o processo de desenvolvimento e também reduzindo a possibilidade de erros na programação, levando em consideração que ao desenvolver em Blueprint todas as entradas e saídas de dados, assim como o fluxo das operações são verificados pela máquina virtual enquanto os testes estão sendo realizados, isso permite garantir que tudo funcione conforme o esperado, ou na pior das hipóteses, alerte ao desenvolvedor caso algo não saia como o esperado, por meio de mensagens intuitivas e claras.
2. Trabalhando com Level ou níveis
Todo os objetos que estão visíveis em um jogo estão armazenados em um Level ou mapa de jogo, o Level no Unreal Engine é composto por iluminação, objetos poligonais e personagens controlados pelos jogadores.
2.1. Criando um Level
Para criar um level utilizamos o menu principal File
> New Level
.
Logo em seguida podemos definir um modelo pre-definido para auxiliar na construção do mapa.
-
Default - Selecione para criar um novo
Level
com uma configuração básica que inclui um início de jogador, uma luz, uma cúpula do céu e outros vários atores que você precisa para um Level funcionar corretamente; -
TimeofDay - selecione para criar um novo
Level
com uma configuração que permite que você visualize as configurações da atmosfera da hora do dia em tempo real; -
VR-Basic - selecione para criar um novo
Level
com atores para interagir, projetado para guiá-lo no aprendizado dos controles do Editor de VR;
Empty Level - selecione para criar um novo Level
completamente vazio.
2.2. Salvando um Level
Para salvar o level carregado utilizamos o menu File
> Save Current
.
2.3. Carregando um Level
É possível abrir um Level utilizando File
> Open Level
.
3. O que é Level Blueprint?
Um Level Blueprint
é um tipo especializado de Blueprint que atua como um gráfico de evento global em todo o nível ou Level. Cada Level em seu projeto tem seu próprio Level Blueprint
criado por padrão, que pode ser editado no Unreal Editor.
Para editar utilizamos a opção Blueprints
> Open Level Blueprint
.
Informação: O Level Blueprint contém a lógica que controla todo o mapa.
Para entender como funciona a lógica do Blueprint vamos escrever uma mensagem no ViewPort
utilizando o Level Blueprint
. Quando o level iniciar utilizaremos o evento BeginPlay
e conectaremos o nó Print String
para escrever uma mensagem na tela.
O nó BeginPlay é executado quando o level é carregado e o nó associado, nó PrintString, e executado em seguida.
Os nós utilizados são os seguintes:
-
BeginPlay - Este evento é executado quando o level é carregado.
-
Print String - É uma função que recebe como parâmetro um texto (String) e a escreve na tela.
3.1. Exemplo de BeginPlay e Tick no Level Blueprint
3.2. Exemplo de BeginPlay com c++
Para exemplificar como podemos escrever uma mensagem na interface apresentamos abaixo dois métodos:
No Console (Log):
UE_LOG(LogTemp, Warning, TEXT("Escreva aqui sua mensagem!"));
UE_LOG(YourLog, Warning, TEXT("Esta é uma mensagem para você mesmo durante o tempo de execução!"));
Na tela (Screen)
GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Red, TEXT("Escreva aqui sua mensagem!"));
GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Red, FString::Printf(TEXT("Valores de variáveis: x: %f, y: %f"), x, y));