Nos artigos da Parte I vamos programar um jogo para ver os conceitos de Unreal C++ na prática. Será o mesmo jogo de coletar estátuas que criei para os meus tutoriais de Blueprints, assim você poderá comparar as implementações feitas em Blueprints e em C++.
O jogo é baseado no modelo Third Person da Unreal Engine. Existem algumas modificações que fiz no jogo para a implementação em C++, mas o resultado final do jogo será semelhante à versão em Blueprint. Esta é uma imagem do jogo:
As regras do jogo são as seguintes:
- O jogador precisa coletar os itens que aparecem no cenário antes do tempo acabar.
- O tempo inicial é de 30 segundos.
- O jogo acaba quando o tempo esgotar.
- A cada 5 itens coletados, o nível do jogador aumenta e é adicionado 15 segundos ao tempo.
- O nível do jogador começa em 1 e o nível máximo que o jogador pode alcançar é o nível 5.
- Os itens espalhados no cenário mudam de posição periodicamente.
- Quando um item aparece em uma posição, ele ficará lá por um período de tempo que depende do nível do jogador. O número de segundos para um item mudar de posição é o resultado da expressão 6 - Nível do Jogador. Por exemplo, se o nível do jogador for 2 então o item ficará em uma posição por 4 segundos (6 - 2).
- Quando o jogador pega um item, outro é criado em uma posição aleatória.
- Os pontos que o jogador recebe ao coletar um item é calculado pela expressão 10 X Nível do Jogador. Por exemplo, no nível do jogador 3, cada item valerá 30 pontos (10 X 3).
- Os valores de tempo, pontos e nível do jogador serão desenhados na tela.
O jogo utiliza quatro classes C++ que são as seguintes:
- TutoProjectGameMode: Esta classe controla o estado do jogo e mantém algumas variáveis, como as que são usadas para tempo, pontos e nível do jogador.
- TutoProjectCollectable: É uma classe do tipo Actor que representa o item que pode ser coletado pelo jogador. Ela checa a colisão com o jogador e possui a lógica para mudar sua posição periodicamente.
- TutoProjectCharacter: Classe que representa o jogador e é parte do modelo de projeto Third Person.
- TutoProjectHUD: Classe responsável por desenhar os valores de tempo, pontos e nível do jogador na tela.
Além das classes C++, será criado um Blueprint usando como classe pai a classe C++ TutoProjectCollectable.
O jogo foi feito utilizando a Unreal Engine versão 4.25. O projeto com código fonte está disponível neste link:
Ao abrir o projeto pela primeira vez, aparecerá uma mensagem perguntando se deseja fazer o rebuild dos módulos. Clique no botão Sim.