Hoje eu trago o devlog do jogo Adocica, que desenvolvi junto da equipe Régias para Ctrl Alt Jam #2 que aconteceu nos dias 05-13/Maio. Vou falar da programação do jogo Adocica, a qual eu era a responsável.
Adocica é um cozy game do tipo puzzle-platformer em que a jogadora controla duas personagens que são irmãs e acabaram de destruir a dimensão de sua casa, tendo agora que ir atrás de artefatos mágicos para consertar a dimensão que elas destruíram.
A jogadora então deve trocar entre as duas personagens o mínimo possível para passar entre as fases. Essa versão do jogo Adocica consta de 3 fases e esperamos passar para fase 2 da CtrlAlt Jam #2 para podermos incrementar ainda mais o jogo.
Adocica: Programação
Como a programadora da equipe Régias, eu fui responsável pelo desenvolvimento do software. Utilizando a Unity, eu implementei todas as mecânicas do jogo. Aqui quero destacas as seguintes mecânicas: a movimentação das personagens; a troca entre as personagens; a coleta de itens pelo cenário; a desativação das barreiras para liberar as personagens e como as personagens passam de uma fase para outra no jogo Adocica.
Tudo começa com um protótipo
O primeiro passo foi criar um protótipo do jogo Adocica. Nesse primeiro protótipo que fiz, busquei testar a movimentação das personagens e a troca de personagens. As personagens possuem o mesmo controle de movimentação, utilizando as setas esquerda e direita para movimentação horizontal e e a seta para cima para pularem. Já para fazer a troca de personagens, a jogadora utiliza a tecla C do teclado. No vídeo abaixo é possível ver a primeira versão do protótipo do jogo Adocica.
Para criar a movimentação das personagens, eu utilizei o novo Input System da Unity. Assim, eu facilmente liguei quais teclas do teclado seriam responsáveis pela movimentação na horizontal, pelo pulo das personagens e a troca entre elas. Então eu adicionei o Player Input utilizando o Input System que eu havia configurado em cada uma das personagens.
Como já havia feito alguns jogos plataformas anteriormente, a movimentação acabou sendo semelhante. Modificando a velocidade do rigidbody da personagem, que receberia a entrada do usuário e a velocidade que a personagem iria andar. Porém agora utilizando o sistema de eventos da Unity para fazer a ligação com o Input System que eu criei, como pode ser visto na imagem abaixo.
Como eu utilizei a mesma classe de movimentação: CharacterMovement, para ambas as personagens, elas acabavam andando ao mesmo tempo. Para evitar isso eu adicionei uma flag booleana, em que somente se a personagem estivesse ativa ela poderia se movimentar.
Dessa forma, ao pressionar a tecla C, essa flag booleana é configurada para o seu inverso, assim, se a personagem não estava ativa antes, após pressionar a tecla a personagem se torna ativa e a outra não.
isActived = !isActived;
A troca de câmera
A nossa ideia do jogo pedia que o cenário fosse grande o suficiente, que ele não aparecesse todo na tela para a jogadora, mas que a fizesse explorar toda a fase para poder liberar as personagens para coletar os artefatos da cena. Assim, a câmera atual não funcionava, já que a câmera era estática.
Desta forma, utilizando o pacote da Cinemachine, eu adicionei duas câmeras virtuais em que cada uma seguiria as personagens. Usando a câmera State Driven da Cinemachine, eu criei uma animação em um objeto vazio que mudava de um estado para outro, o qual representava qual personagem deveria estar aparecendo na tela. Com essa animação, que é mais uma máquina de estado, eu consegui alternar entre as duas câmeras virtuais de cada uma das personagens, como pode ser visto no vídeo a seguir.
Protótipo da Fase 1
Quando já tínhamos o level design da primeira fase decidido, eu comecei a montar ela na Unity utilizando um bloco para o protótipo e uma versão de uma das personagens que iríamos usar.
Neste protótipo, eu queria testar a mecânica de barreiras que usaríamos durante todo jogo Adocica. Então, eu adicionei um círculo representando o item que ao ser coletado iria desativar uma determinada barreira e um retângulo para representar uma das barreiras.
Desta forma, todo item coletável de desativar barreira tinha uma ligação via código com uma barreira. Quando uma personagem entrava na área do item, ele destruía a barreira ligada a ela e se auto destruía, dando a impressão de que tivesse sido coletado pela personagem. No vídeo abaixo é possível a interação entre as duas personagens, em que uma personagem coleta o item, que então libera uma barreira para outra personagem.
Protótipo com três fases
Tendo as principais mecânicas do jogo funcionando: a troca de personagens e a desativação de barreiras; o próximo passo foi montar as demais fases que tínhamos e a mecânica de como passar de uma fase para a outra. Para isso, eu criei um objeto que quando as personagens estivessem juntas a esse objeto, então uma nova cena/fase seria carregada para a jogadora. No vídeo a seguir, é possível ver todas as principais mecânicas do jogo funcionando.
Efeitos
Eu tenho gostado de brincar com o sistema de partículas da Unity. Então para aproveitar no jogo Adocica, eu adicionei um efeito de partículas assim que as personagens se juntavam ao portal. A fim de comemorar que a jogadora venceu a fase. No vídeo a seguir é possível ver como ficou esse efeito.
O Jogo Adocica
O resultado final você encontra como submissão da Ctrl Alt Jam #2 no itch.io, onde você consegue baixar e jogar o jogo Adocica. Não esqueça de deixar um comentário na página, caso você tenha gostado.