Caso esta seja a primeira vez que você entra em contato com conteúdos de nossa série, sinta-se especialmente convidado a conhecer mais sobre as atividades de programação de jogos que estamos desenvolvendo periodicamente aqui no GameBlast.
Por meio do uso da ferramenta Unity, a cada encontro elaboramos e aplicamos melhorias e novas funcionalidades à games que construímos juntos a partir “do zero”. Trabalhando em projetos práticos de criação de jogos digitais, vamos aprendendo paulatinamente sobre como os pequenos e os grandes estúdios de desenvolvimento fazem para tirar do papel títulos de diferentes estilos gráficos e de gameplay.
A partir do primeiro texto da série, abordamos desde os passos mais elementares do processo, como os que envolvem a instalação e a configuração da ferramenta em nossos computadores, até as etapas em que, de fato, colocamos a “mão na massa” nos projetos pra valer, transformando objetivos e regras propostas em códigos e elementos concretos dentro dos jogos, fazendo com que eles tomem forma e funcionem exatamente da forma que planejamos.
O projeto em que estamos trabalhando no momento chama-se Consultório do Dr. Tratanildo. Trata-se de um puzzle ambientado em um consultório médico tridimensional, cujos aspectos de gameplay adotados prestam homenagem a clássicos dos arcades e dos videogames dos anos 1980 e 1990, como Pac-Man (Namco, 1980) e Dr. Mario (Nintendo, 1990).
Além do game atualmente em desenvolvimento, produzimos anteriormente outros dois jogos bidimensionais, Forest Ping Pong e Motorista da Pesada. Embora cada projeto desenvolvido tenha seu próprio escopo de funcionalidades, regras e elementos multimídia, muitos dos conceitos utilizados durante o desenvolvimento das obras anteriores são reaproveitados na construção dos próximos projetos. Vale muito a pena conferi-los por meio dos textos apresentados no índice disponibilizado no primeiro texto da série.
Nossa série é desenvolvida pensando em ajudar a quem quer criar seus próprios jogos mas ainda não sabe bem ao certo nem por onde começar. Portanto, não se acanhe caso não tenha experiências prévias em projetos de programação de jogos ou de sistemas em geral: todos os exemplos e técnicas apresentadas são explicadas de forma simples, por meio de exemplos, tendo sua aplicação nos projetos detalhada, de forma a permitir que você possa aplicá-los posteriormente em seus projetos pessoais.
Caso você tenha gostado da ideia de poder transformar suas ideias em jogos de verdade, não perca mais tempo e junte-se a nós em uma caminhada repleta de aprendizados, de novos conhecimentos e de muita diversão!
Exibindo o progresso do jogador
É comum observarmos em diferentes games formas variadas de se mostrar ao jogador a progressão histórica obtida durante as sessões anteriores de jogatina. Em alguns títulos costuma-se exibir a pontuação máxima (recorde) no menu inicial do jogo, em outros prefere-se representar o progresso pelo aparecimento de elementos gráficos na interface do game ou, até mesmo, pelo desbloqueio de elementos multimídia durante as fases.
A imagem a seguir ilustra duas formas com as quais o jogo Super Mario World: Super Mario Advance 2 (Nintendo, 2001) representa a evolução do jogador no menu inicial do game: por meio de estrelas, dispostas próximo aos logos do games da coletânea, e pela pontuação máxima obtida.
As possibilidades são inúmeras, e seria interessante experimentarmos em nosso game esse conceito também. Inspirado em uma das formas como o referido título do encanador bigodudo representa a evolução do jogador no game, elaboraremos um interessante contador na interface do menu inicial do jogo, representando o recorde obtido pelo jogador por pequenos corações a serem exibidos no canto superior direito da tela.
No encontro de hoje, estruturaremos a parte gráfica deste contador, ficando para o próximo encontro a codificação dos comportamentos dos elementos via script.
A barra dos corações
Vamos iniciar as intervenções no game para tirarmos do papel essa ideia, 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.
Na aba Hierarchy, localize o GameObject MenuInicial, subordinado a Canvas. Clique com o botão direito sobre o objeto e, no menu suspenso, selecione a opção Create Empty. Conceda o nome “RecordesCoracoes” ao novo GameObject; selecione-o e, via aba Inspector, realize sequencialmente as seguintes intervenções relacionadas aos valores dos parâmetros de seu componente Rect Transform:
- Âncora: clique sobre o elemento e selecione a opção Top Right;
- Pivot X = 1, Y = 1;
- Pos X = -50, Y = -100;
- Width = 1200;
- Height = 200.
Ainda com RecordesCoracoes em evidência, por meio do botão Add Component, adicione um componente de tipo Grid Layout Group ao objeto. Conceda os seguintes valores aos parâmetros do componente:
- Cell Size X = 100, Y = 100;
- Spacing X = 0, Y = 0;
- Start Corner = Upper Right;
- Start Axis = Horizontal;
- Child Alignment = Middle Right;
- Constraint = Flexible.
Selecione CoracaoRef e, via aba Inspector, note que não será necessário realizarmos intervenções em valores dos atributos de seu componente Rect Transform. Isso deve-se ao fato de termos configurado previamente o componente Grid Layout Group de seu superior hierárquico.
Ainda com CoracaoRef em evidência, altere os valores dos seguintes atributos de seu componente Image:
- Source Image: clique sobre a caixa de seleção e escolha o sprite de nome “coracao”;
- Color R = 255, G = 255, B = 255, A = 200;
- Preserve Aspect = deixe a caixa de seleção marcada (true).
O novo elemento será representado em tela por um simpático coração semitransparente no canto superior da tela, conforme ilustração a seguir.
Como a geração dos corações em tela será realizada a partir da verificação do recorde atual, ocultaremos nosso “coração de referência”, selecionando-o na aba Hierarchy e, via aba Inspector, desabilitando-o, deixando a caixa de seleção ao lado de seu nome vazia.
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
É possível perceber que, encontro após encontro, nosso game vai tomando um rumo bem interessante, com diferentes funcionalidades que agregam cada vez mais à experiência do jogador, mesmo que, pare isso, seja necessário, em alguns casos específicos, reaproveitar elementos gráficos utilizados em outros momentos do game, como é o caso do sprite de coração, que ganhará uma “função extra” dentro do contexto de nossa aventura.
Em nosso próximo encontro, codificaremos o novo recurso implementado, por meio de intervenções no principal script controlador de nosso projeto.
Nosso próximo encontro será no dia 10 de maio. Até mais! Fique sempre ligado nas novidades do GameBlast!
Revisão: Ives Boitano











