Caso hoje seja a primeira vez que você tem contato com conteúdos de nossa série, aproveite a oportunidade para conhecer mais sobre esta jornada repleta de aprendizados sobre o universo do desenvolvimento de jogos digitais.
Ao desenvolvermos variados projetos práticos de programação de games, vamos aprendendo um pouco mais sobre os recursos e as possibilidades que ferramentas como o Unity nos fornecem para que possamos tirar do papel jogos dos mais diversos estilos gráficos e de gameplay.
A partir do primeiro texto da série, você terá a oportunidade de acompanhar o processo de desenvolvimento de um jogo desde o início e entender aspectos importantes da elaboração de um game. Abordamos desde a instalação e a configuração da ferramenta Unity em nossos computadores até os passos que nos levarão, de fato, a concebermos um jogo, tais como a definição e implementação das regras de uma aventura, a programação dos comportamentos dos personagens e dos elementos presentes em uma fase, a configuração dos elementos multimídia em um cenário, dentre outras etapas importantes do processo.
Fique tranquilo caso você não tenha tido a oportunidade de aprender sobre programação de jogos ou de sistemas até o momento. Nossa série foi elaborada justamente para auxiliar quem tem vontade de criar seus próprios jogos mas não sabe bem ao certo nem por onde começar. Para isso, todos os passos e decisões tomadas na elaboração de nossos projetos são explicados de forma a permitir que todos entendam e apliquem as técnicas em seus projetos pessoais.
No momento, estamos desenvolvendo o game Consultório do Dr. Tratanildo. Trata-se de um puzzle ambientado em um consultório médico tridimensional, cujos aspectos de gameplay prestam homenagem a clássicos dos videogames e dos arcades, como Pac-Man (Namco, 1980) e Dr. Mario (Nintendo, 1990). Além do projeto atual, já concluímos a elaboração de outros dois jogos: Forest Ping Pong, uma “homenagem florestal” ao clássico Pong (Atari, 1972), e Motorista da Pesada, um endless platformer inspirado em City Connection (Jaleco, 1985).
Você pode acompanhar todo o desenvolvimento dos três jogos por meio do índice disponibilizado no primeiro texto da série. Experimente criar suas próprias versões dos games que elaboramos!
E então, o que achou da ideia de colocar em prática aqueles projetos de games que habitam a sua mente há tempos? Se gostou, aperte os cintos e junte-se a nós em uma trilha de aprendizados repleta de novos conhecimentos e de muita diversão!
O pontapé inicial
Depois de realizarmos uma sequência interessante de alterações e acréscimos ao conteúdo de ControllerFase, será necessário realizarmos uma pequena intervenção no script responsável pelo comportamento dos agentes de doenças. Essa intervenção servirá para que seja dado o “pontapé inicial” em todo o processo de análise da quantidade de monstros restantes no labirinto, a partir do momento em que uma pílula de saúde neutralizar um patógeno dentro do corpo do paciente.
Vamos iniciar nossas intervenções abrindo o projeto para edição: no Unity Hub, clique duas vezes sobre o item referente a ele. Na interface inicial do editor, na aba Project, abra a pasta Assets, Scenes e, por fim, clique duas vezes no ícone da cena ConsultorioScene.
Novamente na aba Project, abra a pasta Assets e, em seguida, Scripts. Clique duas vezes sobre o ícone do script ComportamentoDoenca para editarmos seu conteúdo no Visual Studio.
A intervenção no conteúdo de ComportamentoDoenca será bem simples: após o comando para a remoção do agente de doenças presente em TratamentoCerto, introduza o seguinte bloco de comandos:
// Verificar se o jogador venceu a fase
ControllerFase.instance.VerificarCondicoesFinalizacaoFase();
Salve o script, feche o Visual Studio e retorne ao editor do Unity para que possamos realizar importantes ajustes no projeto, visando criar condições para que as três primeiras fases do jogo estejam aptas a serem aproveitadas sequencialmente pelos gamers.
Planejando as fases
Em encontros anteriores, definimos um conjunto preliminar de três pacientes para testes, já configurando algumas características de interação entre os enfermos e o médico, tais como o grupo de falas a serem apresentadas durante as cutscenes iniciais.
Como temos a codificação da transição entre fases já implementada, temos condições agora de concluir a configuração desse pequeno conjunto inicial de desafios, fechando assim um ciclo que permitirá experimentarmos o game de forma mais assertiva daqui em diante, visando implementar melhorias e corrigir bugs.
Como introdução ao game, as três primeiras fases envolverão o uso de apenas um tipo de agente de doenças cada. As imagens a seguir ilustram como cada fase será apresentada ao jogador:
A primeira fase tem como características a presença de agentes vermelhos e de poucas barreiras internas. Os dois quadrados brancos da imagem representam a posição em que as pílulas serão introduzidas no labirinto, assim que o médico concedê-las ao paciente.
A segunda fase envolverá a presença de agentes de doença amarelos, além de obstáculos no labirinto que não se restringem a apenas um formato.
Por fim, a terceira fase do game envolverá um número maior de monstrinhos a serem eliminados, sendo todos eles da cor roxa. Além disso, a configuração dos obstáculos do labirinto é um pouco mais complexa do que as demais.
Todos os parâmetros envolvendo o posicionamento e as dimensões dos obstáculos, além do tipo e do posicionamento de cada agente de doenças, serão realizados por intermédio da inserção de valores em variáveis do componente atrelado ao GameObject controlador da fase.
Concedendo os valores
Na aba Hierarchy, selecione o objeto ControladorFase. Por meio da aba Inspector, iremos alterar ou inserir valores para cada um dos atributos listados a seguir:
- Fala Final: ajuste o tamanho do vetor para 3 e, para cada novo item criado, conceda os seguintes valores, sem as aspas:
- Element 0: “Já me sinto até mais leve agora, doutor. Que maravilha de tratamento, muito obrigado!”;
- Element 1: “Percebo que minha respiração melhorou bastante, fico muito agradecida, doutor!”;
- Element 2: “Depois do tratamento, te garanto que nunca mais esquecerei de tão reputado nome: Tratanildo!”.
Como as demais falas correspondentes aos pacientes e ao médico para cada fase já foram fornecidas anteriormente, não precisaremos alterar os valores dos atributos dos vetores Fala Doutor e Fala Paciente.
- Posicao Monstros Roxos: ajuste o tamanho do vetor para 4, alterando os valores para cada item conforme segue:
- Element 0: X = 3, Y = 5, Z = 2;
- Element 1: X = 3, Y = -5, Z = 2;
- Element 2: X = -5, Y = 3, Z = 2;
- Element 3: X = -5, Y = -3, Z = 2.
- Posicao Monstros Amarelos: ajuste o tamanho do vetor para 3, alterando os valores para cada item conforme segue:
- Element 0: X = 8, Y = -8, Z = 1;
- Element 1: X = -2, Y = -5, Z = 1;
- Element 2: X = -8, Y = 5, Z = 1.
- Posicao Monstros Vermelhos: ajuste o tamanho do vetor para 3, alterando os valores para cada item conforme segue:
- Element 0: X = 8, Y = 8, Z = 0;
- Element 1: X = -8, Y = -8, Z = 0;
- Element 2: X = -5, Y = -1.5, Z = 0.
Recordando a definição de regras que realizamos anteriormente no controlador de fases e do labirinto, os valores de X e de Y representam o posicionamento de cada agente de doenças, e os valores de Z representam a qual fase aquele monstrinho pertence (“0” para a primeira fase, “1” para a segunda, e assim sucessivamente).
- Posicao Obstaculos: ajuste o tamanho do vetor para 11, alterando os valores para cada item conforme segue:
- Element 0: X = 3.5, Y = 6, Z = 0;
- Element 1: X = 3.5, Y = -6, Z = 0;
- Element 2: X = -5, Y = 0, Z = 0;
- Element 3: X = 2, Y = 0, Z = 1;
- Element 4: X = -5, Y = 5, Z = 1;
- Element 5: X = -5, Y = -5, Z = 1;
- Element 6: X = 0, Y = 0, Z = 2;
- Element 7: X = 5, Y = 5, Z = 2;
- Element 8: X = 5, Y = -5, Z = 2;
- Element 9: X = -5, Y = 5, Z = 2;
- Element 10: X = -5, Y = -5, Z = 2.
- Dimensao Obstaculos: ajuste o tamanho do vetor para 11, alterando os valores para cada item conforme segue:
- Element 0: X = 12, Y = 1, Z = 0;
- Element 1: X = 12, Y = 1, Z = 0;
- Element 2: X = 9, Y = 1, Z = 0;
- Element 3: X = 1, Y = 10, Z = 1;
- Element 4: X = 3, Y = 3, Z = 1;
- Element 5: X = 3, Y = 3, Z = 1;
- Element 6: X = 8, Y = 8, Z = 2;
- Element 7: X = 2, Y = 2, Z = 2;
- Element 8: X = 2, Y = 2, Z = 2;
- Element 9: X = 2, Y = 2, Z = 2;
- Element 10: X = 2, Y = 2, Z = 2.
Por fim, realize um pequeno ajuste nos valores de Posicao Inicial Pilulas, refletindo o novo posicionamento que determinados para a concessão de pílulas aos nossos labirintos:
- Element 0: X = 8, Y = 0;
- Element 1: X = 6, Y = 0.
Hora da diversão
Chegamos a um momento especial do desenvolvimento de nosso game: a hora de testarmos as três primeiras fases sequenciais de nosso jogo. Para tal, como de costume, vá até a aba Game e clique sobre o ícone do botão Play.Durante a simulação da execução, podemos notar muitas situações interessantes:
De fato, as coordenadas que configuramos referentes ao posicionamento dos elementos internos do labirinto estão funcionando bem.
Quando não se consegue finalizar com êxito o tratamento, a tela de game over é exibida (embora com alguns bugs a serem corrigidos).
Ao término da última fase, caso o desafio seja vencido, uma tela parabenizando o jogador é exibida.
Ao término da simulação de execução, clique novamente sobre o ícone do botão Play e retorne à aba Scene. Não se esqueça de salvar a cena (menu File, opção Save) e o projeto (menu File, opção Save Project) antes de fechar o Unity.
Próximos passos
É com muita alegria que podemos afirmar: temos um jogo funcional em mãos! Primeiramente, parabéns por ter chegado a essa etapa, pois sempre é uma grande satisfação vermos nosso esforço se tornando realidade.
Em nossos próximos encontros, iremos começar a corrigir alguns bugs observados, tais como o que envolve a tela de game over, além de definirmos algumas questões envolvendo a exibição do placar ao jogador e os preparativos para a criação dos menus do game.
Nosso próximo encontro será no dia 8 de fevereiro. Até mais! Fique sempre ligado nas novidades do GameBlast!
Revisão: Ives Boitano


















