No dia 18 de agosto de 2023 entrava no ar pelo GameBlast o primeiro texto da série GameDev: Aprendendo a programar jogos em Unity. De lá pra cá, pudemos compartilhar experiências interessantíssimas sobre o processo de desenvolvimento de games por meio da elaboração, na prática, de jogos de diferentes estilos.
Hoje, após exatos 12 meses, chegamos coincidentemente ao nosso quinquagésimo encontro. Portanto, vamos aproveitar a ocasião para relembrar o que elaboramos até o momento e conhecer um pouco mais dos bastidores dessa jornada.
E, se por acaso, esta for a primeira vez que você acessa nossa série, considere-se convidado a nos acompanhar, a partir do primeiro texto da série, nesta agradável trilha de aprendizado sobre como a ferramenta Unity pode ajudar a tirar do papel os games que sempre sonhou em tornar realidade.
Vamos celebrar juntos a conquista de novos conhecimentos!
Uma motivação
É natural que muitos de nós, gamers, tenhamos curiosidade sobre como é o funcionamento por dentro dos jogos que tanto nos proporcionam diversão e, quem sabe, até sobre aprender diferentes maneiras de transformar nossas ideias e sonhos em aventuras concretas. Porém, ao mesmo tempo, nota-se que muitas pessoas que apresentam esse desejo acabam desistindo antes mesmo de tentar. Por que será que isso acontece?
Particularmente, tenho a impressão de que muitos não se dão a chance de tentar aprender os conceitos iniciais sobre o tema justamente por terem uma ideia inicial de que o mundo do desenvolvimento de games é algo de difícil compreensão, praticamente um “bicho de sete cabeças”, envolvendo diversos cálculos e códigos.
Sendo assim, buscamos por meio desta série desmistificar esta imagem preconcebida sobre a programação de games, mostrando que existe sim a possibilidade de se desenvolver do zero jogos muito bacanas de diferentes gêneros, utilizando como apoio os diversos componentes que ferramentas como a Unity nos proporcionam.
Da mesma forma, nos momentos em que é oportuna a utilização de códigos (scripts) para programar o comportamento dos elementos das cenas de um projeto, vamos construindo a lógica de programação passo a passo, de forma que haja a compreensão dos conceitos sem “atropelos” nem sustos.
Talvez você tenha notado que vamos elaborando o conteúdo dos projetos gradualmente, utilizando como apoio uma boa quantidade de imagens ilustrativas e, recorrentemente, relembrando conceitos que vimos em encontros anteriores. Isso é proposital, pois dessa forma conseguiremos fixar os conhecimentos por meio da elaboração dos exemplos práticos.
Assim como em qualquer outra área do saber, em programação de jogos (e de sistemas em geral) a prática constante é uma das melhores formas de aumentar o nosso domínio, conseguindo aplicar aos poucos os conhecimentos adquiridos nos próximos projetos.
Por falar em projetos, que tal relembrarmos como foram nossas primeiras empreitadas na série?
Recordar é viver
Tudo começou com uma bolinha, duas cobrinhas e um sonho: aprender a programar nosso primeiro jogo. Foi dessa forma que, na primeira etapa de nossa série, desenvolvemos Forest Ping Pong, uma homenagem a um dos primeiros jogos comerciais criados: o clássico Pong.
Em poucas semanas, nós nos introduzimos aos conceitos básicos sobre a interface geral do Unity, aprendemos a inserir imagens e textos bidimensionais simples na tela, descobrimos o que são colliders e triggers e, por fim, realizamos nossa primeira incursão no maravilhoso mundo da programação, por meio da elaboração de scripts controladores das mecânicas do jogo, utilizando-se para isso de comandos em linguagem C#.
Todo esse conhecimento, embora elaborado de uma forma simplificada, foi bastante útil para que pudéssemos ter um primeiro contato com a ferramenta e com seus conceitos, o que seria de grande valia em nossos projetos posteriores.
Ao final do quinto texto da série, temos uma versão do jogo testável pelo navegador, caso queira experimentá-lo.
Logo após “esquentarmos nossos motores”, entramos de vez na pista (ou seriam pistas?) ao iniciarmos o desenvolvimento de Motorista da Pesada, um platformer rodoviário 2D inspirado em City Connection, um clássico japonês dos arcades oitentistas.
Em Motorista da Pesada, o objetivo principal do jogador é coletar todos os presentes espalhados pelos caminhos das fases, guiando um dos dois veículos disponíveis (um simpático carrinho ou uma imponente van) no menor tempo possível, desviando de bombas e de vãos entre as plataformas.
Junto com o aumento da complexidade no enredo do game, em comparação ao anterior, a própria estrutura do projeto foi ampliada: elaboramos três fases distintas, além de um menu inicial. Aprendemos muitos conceitos sobre diversos tópicos, tais como sprites, prefabs, animações 2D, raycasts, conceitos de física bidimensional do Unity e gestão de cenas (scenes).
Já em relação aos scripts, foi um festival de novos saberes: conseguimos codificar a lógica do jogo como um todo, incluindo módulos para pausar e retomar o game, controle de placar, de vidas, métodos para modificações dinâmicas envolvendo sprites, animações e sons, dentre muitos outros detalhes bem interessantes.
Finalizamos a construção de nosso primeiro platformer 2D no trigésimo segundo encontro da série, oferecendo ao final do texto uma versão do jogo testável pelo navegador. Veja que levamos bem mais tempo para criar Motorista da Pesada do que o jogo anterior, pois nos aprofundamos em conceitos importantes da ferramenta e da lógica utilizada.
O que estamos fazendo
Por fim, para quem ainda acha que quem programa jogos precisa mesmo é ir ao médico, saiba que nós lhe damos completa razão (!) ao propormos uma fundamental visita ao peculiar Consultório do Doutor Tratanildo.
Em nosso terceiro projeto, cujo desenvolvimento ainda está em progresso, estamos criando um jogo em ambiente tridimensional cujos enredo e objetivos homenageiam os games Dr. Mario (Nintendo, 1990), Pac-Man (Namco, 1980) e Tama (Time Warner Interactive, 1994).
Em seu consultório, Doutor Tratanildo Doencita irá receber os mais diferentes pacientes em busca de cura, administrando um revolucionário tratamento à base das pílulas da saúde, medicamentos especiais que, ao entrarem em contato com agentes de doenças dentro do corpo dos pacientes, destroem-nos imediatamente.
Porém, apenas as pílulas de determinadas cores podem combater doenças específicas, cabendo ao jogador ajudar o médico a levar os medicamentos aos locais corretos do corpo dos pacientes. Para isso, ele irá controlar um aparelho que inclina o leito sobre o qual o paciente estará deitado.
Até o momento, já realizamos algumas atividades iniciais de construção do cenário do consultório, sua mobília e sua decoração. Realizamos alguns processos iniciais envolvendo iluminação e inserção de colliders em objetos estratégicos do cenário, mas muito ainda está por vir.
Iremos, posteriormente, realizar ajustes adicionais envolvendo a iluminação e o posicionamento de diversas câmeras, programaremos a animação dos personagens para que possam caminhar pelo cenário e deitar no leito.
Realizaremos, também, a construção do “ambiente interno” do corpo dos pacientes, de forma a concretizarmos a ideia principal do jogo, e, por fim, vamos codificar todas as regras envolvendo as diferentes etapas do game. Iremos aprender muito durante todo esse processo!
Por trás dos bastidores
Todo esse processo que envolve a elaboração prévia dos projetos, a coleta e a organização dos assets que iremos utilizar na confecção dos jogos, os testes iniciais necessários, a codificação de fato e toda a parte técnica envolvida só pôde ser desenvolvido pela pessoa que está “do outro lado da tela” escrevendo os textos da série graças, obviamente, à interação constante com minha querida máquina.
Em primeira mão, vejam como é extremamente avançado o ambiente em que se originam as aventuras da série, especialmente o teclado (contém ironia):
Para quem, como eu, acaba ficando curioso por saber mais sobre o setup de um ambiente de desenvolvimento, aqui vão as especificações básicas de minha máquina:
- Processador Intel Core i5-7200U
- Placa gráfica integrada Intel HD Graphics 620
- Sistema operacional Windows 11 Home, versão 23H2
- Memória 8 GB RAM
- SSD 256 GB
Percebam que, de fato, não é necessário nenhum computador “da NASA” para programar nossos jogos, visto que meu notebook já apresenta sete anos de uso, além de utilizar uma placa gráfica bem simples. Portanto, se foi por isso que você ainda não mergulhou de cabeça conosco na série, fique despreocupado e venha com a gente.
À parte da elaboração técnica dos projetos, uma série com essa longevidade não poderia ser tocada sem o apoio especial de diversos colegas do GameBlast. Gostaria, então, de prestar um agradecimento especial aos revisores de texto, que me ajudam constantemente a manter o conteúdo escrito em boa forma, qualidade e formatação.
Fica aqui um agradecimento aos revisores Davi Sousa e Vitor Tibério, que revisaram, cada um, dois textos da série até o momento; à revisora Juliana Piombo dos Santos, pelos três textos revisados; e à revisora Thais Santos, pelo auxílio em quatro textos da série.
Em especial deixo meu agradecimento ao revisor (e grande amigo) Ives Boitano, por ter acompanhado o desenvolvimento da série desde o primeiro texto, colaborando com melhorias na escrita e na estrutura de 39 textos até o momento; e também ao diretor de redação Farley Santos, por ter me dado sinal verde e apoio no processo de retomada da coluna GameDev, permitindo a elaboração de uma nova série que, inicialmente, seria composta de apenas 10 a 15 textos, mas que, creio eu, acabou passando “um pouquinho” do previsto!
Contamos com você!
É claro que sem você, leitor, não faria sentido escrever e elaborar diferentes projetos, portanto fica aqui o meu profundo agradecimento a quem nos acompanha em nossa jornada de aprendizado e diversão.
Qual foi a etapa dos projetos que mais gostou de ver sendo criada? Sentiu alguma dificuldade em alguma parte dos desafios? Se quiser, conte aqui nos comentários um pouco de sua experiência com a série. Contamos contigo para continuarmos firmes nesta caminhada!
Nosso próximo texto já encontra-se disponível, continue conosco nessa jornada de conhecimento e fique ligado sempre aqui no GameBlast!
Revisão: Ives Boitano