Como o conteúdo da série é composto por diversos tópicos, a seguir é listada a sequência de textos já publicados e seus respectivos links, para que fique mais fácil sua navegação pelo conteúdo:
Projeto #01: Forest Ping Pong
- Introdução, instalação e configuração da ferramenta (essa página)
- Interface da ferramenta, objetos e componentes
- Começando a desvendar o mundo dos scripts
- Delimitando espaço e implementando regras com Colliders e Triggers
- Finalizando a criação de nosso primeiro jogo
- A importância das multimídias para os jogos
Projeto #02: Motorista da Pesada
- Iniciando o desenvolvimento de um platformer 2D
- Transições em menus e carregamento de cenas
- Povoando a cena do jogo com SpriteRenderers
- Inserindo plataformas e utilizando o pacote Sprite Editor
- Começando a trabalhar com elementos de física
- Aspectos de movimentação 2D e sistemas de rotação
- Posicionando e programando itens coletáveis
- Iniciando o desenvolvimento do controlador da partida
- Desenvolvendo o cronômetro e o contador de itens
- Desenvolvendo o menu e funcionalidade de pause
- Inserindo telas de vitória e de fim de jogo
- Implementando o sistema de vidas e de fim de jogo
- Ajustes nos menus e no sistema de decréscimo de tempo
- Detecção de objetos com raycast e adição de sons na fase
- Prefabs, facilitando a manutenção e reutilização de objetos
- Introdução ao sistema de animações 2D com sprites
- Animações 2D dos objetos coletáveis de uma fase
- Finalizando a construção da primeira fase do game
- Iniciando a elaboração da segunda fase
- Construção e personalização do segundo estágio
- Sistema de controle de pulos para planos inclinados
- Ajustes finais na composição do segundo estágio
- Iniciando a construção da terceira fase do game
- Concluindo o ciclo de cenas do game
- Iniciando a codificação para trocar de personagem
- Finalizando a construção de Motorista da Pesada
Projeto #03: Consultório do Dr. Tratanildo
- Introdução ao desenvolvimento de jogos em 3D
- Estilos de câmera e de controle utilizados em games 3D
- Aspectos que impactam o desempenho de jogos 3D
- O peculiar consultório do Dr. Tratanildo
- Iniciando a configuração do novo projeto
- Elementos iniciais de composição do cenário
- Posicionando paredes e elementos relacionados
- Teto, malhas e conceitos iniciais sobre iluminação
- Novas luzes e primeiros passos com materials e renderers
- Começando a mobiliar o ambiente com biombos
- Adicionando vasos e prateleiras ao consultório
- Povoando as prateleiras com recipientes coloridos
- Pílulas da saúde e recursos avançados de Prefabs do Unity
- Organizando objetos e iniciando a construção do leito
- O surgimento de uma cama hospitalar no cenário
- Rigidbody e Colliders em cenas tridimensionais
- Colliders misteriosos e parâmetros de um Rigidbody
- Especial 1 ano: doze meses, cinquenta textos e muitos aprendizados
- Começando a interagir com o modelo dos pacientes
- Introdução às animações para modelos humanoides 3D
- Animações que influenciam no posicionamento de personagens
- Interferindo nas transições de estado entre animações
- Implementando melhorias nos fluxos de transição entre animações
- Corrigindo parâmetros para impedir o atravessamento de paredes
- Uma caminhada segura rumo às paredes do consultório
- Controlando a movimentação dos personagens
- Os “primeiros passos” do médico em seu consultório
- Consertando a câmera que atravessa as paredes do consultório
- Corrigindo bugs de câmera e iniciando novas implementações
- Iniciando a elaboração de nosso “labirinto da saúde” tridimensional
A partir de agora, siga conosco na estrada do aprendizado; muitos conhecimentos valiosos o aguardam no decorrer dessa jornada. Boa leitura!
Os games em nossas vidas
Em algum momento da vida você já parou para pensar o que te faz gostar de videogames? Podem ser tantos os fatores envolvidos, tais como o senso de exploração e pertencimento, os desafios propostos, bons enredos e narrativas, momentos de tensão misturados com medo e alívio, jogabilidade e dinâmica do jogo, recompensas...
Cada gamer é único e tem suas preferências, seja de gênero de jogo (ação, aventura, plataforma, esportes, luta, etc.), seja de grau de dificuldade, estilos gráficos, dentre outros; mas um consenso geral é que, quando um game é legal, entramos em imersão naquilo que ele pode oferecer, esquecendo-se um pouco dos problemas da vida “lá fora” para passarmos horas a fio na frente da telinha (ou da telona), divertindo-se como se não houvesse amanhã.
Embora já existam milhares de games diferentes no mundo, sempre há uma boa história a ser contada, desenvolvida e jogada, a partir das experiências, vivências, sonhos e imaginação de um desenvolvedor ou de uma equipe de desenvolvimento. Se você, assim como eu, já pensou em transformar suas ideias em um game de verdade, então aqui é o seu lugar: seja bem-vindo(a) ao Game Dev: Aprendendo a programar jogos em Unity!
A estrutura de um jogo
Antes de começarmos a desenvolver um jogo no computador, é preciso pensar no que compõe um jogo, seja ele digital ou não.
O pesquisador Kelley D. define um jogo como sendo “uma forma de recreação constituída por um conjunto de regras que especificam objetos ou objetivos a serem atingidos e meios que possibilitem alcançá-los”. Sendo assim, o primeiro passo para o nascimento de um jogo é definir o que vai ser feito pelo jogador, como será feito, quais serão as regras, objetivo final.
Um exemplo prático desse processo é analisar o que compõe uma partida de futebol: o objetivo para cada equipe é marcar mais pontos que seu adversário; o meio para alcançar essa meta envolve ter de deslocar uma bola até o gol do adversário com os pés (ou cabeça); as regras são inúmeras (compor equipes com 11 jogadores; não tocar na bola com as mãos, com exceção do goleiro; jogar dentro das quatro linhas que delimitam o campo; etc.) e a diversão reside no desafio que é vencer a equipe do adversário, utilizando suas técnicas e habilidades.
Feito isso, o próximo passo na criação de jogos digitais é começar a estruturar a codificação do jogo, normalmente utilizando programas de desenvolvimento de jogos em um computador, como é o caso do Unity, que iremos conhecer a partir de agora.
O que é Unity
Unity é o nome de uma ferramenta de desenvolvimento de jogos que apoia o programador em diversas tarefas que, se ele tivesse de fazer de forma totalmente manual, provavelmente levaria muito mais tempo para criar suas obras. Ferramentas como o Unity são conhecidas pelo nome de game engines e são amplamente utilizadas no desenvolvimento de jogos profissionais em todo o mundo.
Algumas das tarefas em que game engines como o Unity auxiliam o desenvolvedor são a criação de ambientes virtuais 2D e 3D, inserção e operação de multimídias (sons, imagens, modelos tridimensionais), renderização, animação, cálculos envolvendo física, scripts de controle, comunicação do jogo com redes e Internet, inteligência artificial, interação do jogo com o sistema operacional do equipamento em que estiver funcionando…
Além dessa enorme lista, no caso específico do Unity, ele permite a criação de versões do jogo para diferentes sistemas e dispositivos, como computadores com sistemas operacionais Windows, macOS e Linux; celulares e tablets Android, iOS e iPadOS; e videogames Xbox e PlayStation.
A primeira iteração do Unity foi desenvolvida em 2005 para computadores Apple Macintosh. De lá para cá, foram criadas versões para Windows e Linux, fazendo com que a adoção da ferramenta no mundo do desenvolvimento de jogos crescesse muito.
Atualmente, as duas game engines mais utilizadas no mercado são Unity e Unreal Engine. Diversos jogos de sucesso foram desenvolvidos com Unity como sua game engine: Pokémon GO, Among Us, Ori and the Will of the Wisps, Super Bomberman R, Cuphead e Rust são alguns exemplos famosos.
Requisitos
Existem diversos modos de licenciamento do Unity, dependendo do tamanho da equipe de desenvolvimento. Durante este processo de aprendizado, iremos utilizar o plano Personal, que é gratuito e atenderá ao que precisamos.
Para utilizar o Unity no desenvolvimento de jogos, é importante que o programador conheça ao menos um pouco da linguagem de programação C#. Essa linguagem, desenvolvida pela Microsoft, será utilizada para o desenvolvimento de scripts, que são peças de código que controlam diversas ações dos elementos que irão compor o jogo (iremos ver detalhes sobre scripts nas próximas semanas).
Caso você queira aprender mais sobre a sintaxe da linguagem C#, a Microsoft oferece alguns materiais e cursos (em inglês). Uma alternativa é acompanhar o desenvolvimento com uma apostila em português, como a do professor Carlos Vamberto (Etec Lauro Gomes).
Agora, se essa é a primeira vez que você ouve falar em programação, indico fortemente que aprenda alguns conceitos de lógica de programação antes de partir para a codificação em si. Um exemplo de material é o oferecido pelo blog AdolescenTI 2016, em que é utilizada a linguagem Pascal como plano de fundo para se ensinar conceitos de lógica. Embora C# e Pascal sejam linguagens de programação diferentes, os conceitos de lógica de programação são aplicáveis a todas elas.
Configurando o ambiente
Agora que já realizamos uma boa contextualização sobre a ferramenta, que tal configurarmos o ambiente em seu computador?
Para realizarmos as atividades, iremos utilizar a versão Unity 2020.3.48. Já existem versões mais recentes do Unity, como as branches 2022 e 2023, mas as mais recentes podem funcionar com mais dificuldade em determinados computadores, sobretudo os mais antigos.
Para os exemplos que iremos desenvolver, você não precisará de um computador “top de linha”. Mesmo um equipamento com processador Core i3 e placa de vídeo onboard já é o bastante para nossas atividades.
Este tutorial será realizado em um computador com Windows 11, mas os passos são bem semelhantes também em outros sistemas, como Windows 10, Linux e macOS. Então, mãos à obra!
Primeiro, realize o download do programa Unity Hub através deste site, por meio da opção Download.
Feito isso, execute o programa que foi baixado, cujo nome é “UnityHubSetup”. Uma pequena janela será apresentada, clique em Avançar nas telas até completar essa etapa. Ao término, iremos executar o Unity Hub:
O Unity Hub é um aplicativo que concentra em uma só interface tanto as instalações das versões de Unity que temos configuradas quanto os projetos que iremos desenvolver. Ao abri-lo pela primeira vez, a tela a seguir é apresentada. Como esta é a primeira vez que utilizamos o Unity, teremos de clicar em Create account para criar uma conta nova.
Uma janela se abrirá em seu navegador. Preencha os campos correspondentes com seu e-mail, username (nome de usuário para o Unity), full name (seu nome completo) e password (uma senha, que não precisa ser a mesma que utiliza para entrar em seu e-mail). Feito isso, selecione as opções conforme imagem a seguir e, em seguida, clique em Create a Unity ID.
Você receberá um e-mail, confirmando o cadastro de sua conta. Clique em Link to confirm email para validar esse cadastro.
Após essas etapas, podemos voltar ao Unity Hub e clicar em Sign in para entrarmos com nossas novas contas criadas.
Uma janela solicitando o preenchimento de usuário e senha será apresentada. Após isso, irá aparecer uma mensagem pedindo autorização para abrir o Unity Hub. Confirme clicando em Abrir:
Como essa é nossa primeira configuração de instalação do Unity na máquina, o Unity Hub poderá propor a instalação da versão estável mais recente. Como no momento iremos utilizar a versão 2020, clique em Skip installation na tela a seguir:
Na tela seguinte, clique em Agree and get personal edition license, para que sua conta do Unity utilize a licença Personal (gratuita).
Feito isso, agora iremos instalar de fato o Unity no computador. Na tela do Unity Hub, clique em Installs e, em seguida, em Install Editor.
Na tela que se apresentar, clique em Archive e, em seguida, Download archive. Uma janela do navegador será aberta no momento:
No navegador, clique em Unity 2020.X e, em seguida, no botão Unity Hub da entrada Unity 2020.3.48, conforme imagem a seguir. Podemos ter mais de uma versão do Unity instalada, se desejarmos, mas no momento não é o caso. Caso o navegador peça permissão para abrir o Unity Hub, clique em Abrir.
Iremos escolher agora os itens da versão do Unity que iremos instalar em nosso computador, para que ele dê suporte ao desenvolvimento dos jogos para as plataformas que desejarmos.
Para as atividades que iremos desenvolver em breve, recomendo selecionar as seguintes opções: Microsoft Visual Studio Community 2019, Android Build Support (e subitens), Universal Windows Platform, WebGL e Windows Build Support. Caso esteja utilizando Linux ou macOS para desenvolver, as opções podem mudar um pouco.
Após isso, o processo de instalação irá se iniciar. Fique atento pois determinados módulos podem pedir alguma intervenção do usuário na tela, seja uma confirmação, um “Agree” ou um OK.
No caso específico da etapa de instalação do Visual Studio, é necessário selecionar o item “Desenvolvimento de jogos com Unity” antes de clicar em Instalar, conforme imagem a seguir:
O processo de instalação pode levar vários minutos, dependendo de sua conexão com a Internet, se seu equipamento usa SSD ou HD (que é mais lento), memória, dentre outros fatores.
Ao término do processo, na página Installs do Unity Hub, você poderá ver quais versões do Unity você tem instaladas em seu equipamento e quais plataformas elas suportam. No caso da imagem a seguir, é a versão 2020.3.48f1 já configurada para gerar jogos para Android, Windows, WebGL e UWP (Universal Windows).
Por último, para termos certeza de que está tudo OK com o Unity, vamos criar um projeto vazio e abrir o Editor. Para isso, no Unity Hub, clique em Projects e, então, em New project, conforme imagem a seguir:
Clique então em All templates, em 3D, dê um nome para seu projeto no campo Project name e, finalmente, clique em Create project.
Na primeira vez que é aberto um projeto pelo Unity, ele leva alguns minutos para carregar os arquivos correspondentes; é um comportamento normal. Após esse processo, o programa será exibido em toda sua glória, e nossa instalação estará concluída!
Próximos passos
Agora que temos um ambiente de programação de jogos Unity funcional em nossos computadores, nas próximas semanas iremos conhecer aspectos muito interessantes do processo de desenvolvimento de um game, tais como as configurações de ambientes 2D e 3D, câmeras, sprites, modelos tridimensionais, animação, física, scripts de controle, collisors, utilização de músicas, criação de menus, organização de dados... Um novo mundo de conhecimentos irá se abrir!
No próximo GameDev iremos conhecer melhor a interface do Unity e como funciona a interação entre os objetos e os scripts. Aproveitando para dar um spoiler, nos próximos textos você irá aprender a desenvolver por meio da criação de alguns pequenos jogos, aplicando o que aprendeu nos tutoriais.
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
Referência: Kelley, D. (2013, livro)