Ao conhecer os conceitos básicos da Unreal Engine, você precisa entender como o Framework de jogabilidade Unreal funciona. Neste documento, abordaremos como configurar as classes de modo de jogo e estado de jogo para o Parrot.
Modo de jogo
O modo de jogo é responsável por definir as regras fundamentais do jogo, como o número de jogadores ou a forma que entram no jogo. Ele também fornece um framework para configurar classes de jogos úteis, como o estado do jogo, o controle do jogador, o HUD e a classe de pawn padrão.
Para configurar o modo de jogo do Parrot, siga estes passos:
No Navegador de Conteúdo, clique em Conteúdo, Blueprints, Jogo.
Clique com o botão direito do mouse no navegador e clique em classe de Blueprint.
Defina a classe pai como AGameModeBase.
Nomeie a classe "BP_ParrotGameMode".
Clique duas vezes no Blueprint recém-criado para ver as classes principais que ele define. Para Parrot, algumas dessas classes devem ser alteradas:
Classe de estado do jogo deve ser definido como BP_ParrotGameState
A classe do controle do jogador deve ser definida como BP_ParrotPlayerController
A Classe do HUD deve ser definida como BP_ParrotHUD
A Classe de pawn padrão deve ser definida como BP_ParrotPlayerCharacter
Acesse Editar, Configurações do projeto, Mapas e Modos e defina o Modo de Jogo Padrão como BP_ParrotGameMode.
Agora que o modo de jogo está configurado, você pode configurar o estado do jogo.
O estado do jogo
O estado do jogo controla o que está acontecendo no jogo no momento. Ele gerencia informações que os clientes precisam saber, mas não está vinculado a nenhum jogador específico. Por exemplo, você pode armazenar as pontuações da equipe aqui.
Para criar um estado de jogo para o Parrot, siga estas etapas:
No editor principal, selecione "Ferramentas, Nova classe C++...".
Defina a classe pai como AGameStateBase.
Nomeie a classe "AParrotGameState".
No Navegador de Conteúdo, clique em + Adicionar, Classe de Blueprint.
Defina a classe pai como AParrotGameState.
Nomeie a classe "BP_ParrotGameState".
No seu Blueprint de modo de jogo, atribua BP_ParrotGameState ao campo de estado do jogo.
Análise do conceito de modo e estado de jogo
Consulte mais informações sobre o modo de jogo e o estado do jogo em Game Mode and Game State (Modo de jogo e estado do jogo). À medida que novas classes são criadas durante o desenvolvimento, lembre-se de atualizar o modo de jogo e o estado do jogo.
O modo de jogo também pode ser definido por mapa. O menu principal no Parrot usa um modo de jogo diferente daquele usado pelos níveis dele.
Instância do jogo
A instância do jogo é uma instância única de classe persistente no mecanismo que manipula funcionalidades específicas do projeto. Ela existe durante toda a vida útil dele, e contém o cliente de visualização do jogo e o jogador local.
Seguindo o mesmo padrão do modo e estado do jogo, criamos uma classe base C++, UParrotGameInstance, e uma classe de projeto, BP_ParrotGameInstance. Você pode definir a classe da instância do jogo no seu projeto em "Editar, Configurações do projeto, Mapas e modos".
Para criar uma instância de jogo para o Parrot, siga estas etapas:
No editor principal, selecione "Ferramentas, Nova classe C++...".
Defina a classe pai como UGameInstance.
Nomeie a classe "UParrotGameInstance".
No Navegador de Conteúdo, clique em + Adicionar, Classe de Blueprint.
Defina a classe pai como UParrotGameInstance.
Nomeie a classe "BP_ParrotGameInstance".
Acesse "Editar, Configurações de Projeto, Mapas e Modos" e defina a classe de instância do jogo como BP_ParrotGameInstance.
Exemplo de transmissão de nível
No Parrot, cada mapas é específico para um modo de jogo diferente, e a instância do jogo informa a ele o mapa a ser carregado com os arquivos UParrotMapDataAsset. Esses são ativos de dados que contêm um ponteiro de objeto suave para um arquivo de mapa. Esses ativos são organizados na instância do jogo e podem ser alternados conforme o jogador avança no jogo. Como isso está na instância do jogo, você sempre pode transmitir o próximo nível de qualquer lugar. O controle do jogador escuta as mudanças no estado do jogo e então chama a instância do jogo conforme necessário.
Veja abaixo um Blueprint que usa os nós Stream Level e Async Load Asset para carregar de forma assíncrona a referência de objeto flexível para um ParrotMapDataAsset. Em seguida, o nó Open Level é chamado sem precisar esperar por um carregamento síncrono, pois o nível já foi carregado. O plugin CommonLoadingScreen também é usado aqui. O widget da tela de carregamento será invocado no pré-carregamento do próximo mapa e removido no pós-carregamento.
Consulte mais detalhes sobre a tela de carregamento e por que o Parrot faz um carregamento assíncrono em vez de síncrono aqui na documentação Interface de usuário do Parrot.