Buscar

Desenvolvimento de Jogos Digitais I

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 74 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 74 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 74 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Desenvolvimento de Jogos Digitais I 
Definição
Os jogos digitais estão presentes no cotidiano de muitas pessoas. Veremos o histórico dos ambientes desses jogos desde o seu surgimento, na década de 1970, até os dias atuais. Conheceremos também ferramentas específicas para a criação dos jogos e como aplica-las no desenvolvimento de um projeto de jogo.
Objetivos
· Módulo 1
Conhecer Histórico dos Jogos 2D.
· Módulo 2
Usar Unity 3D para criação de jogos.
· Módulo 3
Explicar os elementos da Unity 3D e aplicá-los para a criação de jogos 2D
Módulo 1
História dos Jogos 2D 
· Década de 1970
O primeiro exemplo de jogo digital comercial de sucesso na história foi o Pong, criado por Nolan Bushnell e Ted Dabney, disponibilizado em bares na forma de um console ligado a um monitor e com um sistema iniciado a partir da introdução de moedas.
Era uma ideia inovadora e que mostrou aos autores a possibilidade de obter lucro com o produto, o que levou à fundação da Atari em 1972.
Esse modelo de máquina com o uso condicionado à introdução de moedas, normalmente chamada de fliperama ou arcade, ficou muito popular, ao ponto de serem criados locais onde os jogadores se reuniam para competir entre diversos exemplares de jogos digitais.
O jogo Pong em si é muito simples, simulando um jogo de pingue-pongue, e necessita de dois jogadores, onde cada um controla uma raquete, representada por uma barra, através de controle na forma original de dial. Cada jogador deve acertar a bola, um quadrado, enviando para o outro lado.
 
· Na verdade, o primeiro console de videogame da história foi o Odyssey, da Magnavox, lançado em 1972, mas que já trazia protótipos datados de 1968, o que levou a uma batalha judicial com a Atari por violação de patente, já que o jogo Pong era muito parecido com o jogo de tênis do Odyssey.
· A empresa Atari entrou em concorrência direta com a Odyssey ao lançar o Atari Video Computer Systems (Atari VCS), em 1977.
· O console que seria mais tarde chamado de Atari 2600, foi o primeiro grande sucesso comercial nesta área, e chegou a vender 8 milhões de unidades até 1983, sendo um dos grandes responsáveis pela popularização dos jogos digitais.
 
Com a possibilidade de utilizar um console para executar diferentes jogos no formato de cartuchos, o mercado começa a se aquecer e surgem diversos exemplares de jogos para o Atari.
Esses jogos apresentavam baixíssima resolução, normalmente com a representação de personagens através de caracteres especiais, contando sempre com a imaginação do jogador, e o que realmente contava era a jogabilidade, ou seja, o nível de satisfação proporcionado pela execução desses jogos.
A tecnologia adotada pelos consoles iniciais permitia apenas o modo 2D, com visão aérea ou frontal, sem rolagem de tela, e eram muito focados em esportes, combates e tabuleiro, podendo ser citados, como exemplo, alguns dos jogos lançados junto ao Atari 2600, como Air Sea Battle, Blackjack, Combat, Video Olympics e Street Racer.
 
Em 1978 foi lançado o jogo Frogs and Flies, pela SEGA-Gremlin, no modelo arcade, sendo portado posteriormente para o Atari 2600.
A importância histórica deste jogo, para o ambiente 2D, se refere ao uso de superfícies sobre as quais os personagens se apoiam, funcionando como predecessor de toda uma nova família de jogos digitais, os jogos de plataforma.
Nesse jogo, temos duas folhas sobre um lago, onde são posicionados dois sapos de cores diferentes, sendo cada um controlado por um jogador, ou, na ausência de um dos jogadores, o console assume o controle do segundo sapo.
O objetivo é simplesmente saltar de uma folha para outra, com o botão de tiro, sempre com a meta de capturar moscas que passam voando durante o salto, vencendo o sapo que capturar mais moscas.
 
Uma característica comum aos primeiros jogos de plataforma era a visão frontal em tela única, ainda sem rolagem de tela, mas eles já traziam alguns dos elementos que ainda hoje são utilizados para este tipo de jogo, como o uso de plataformas para deslocamento e o salto sobre obstáculos.
· Década de 1980
Podemos considerar o jogo Donkey Kong, de 1981, criado pela Nintendo, como o primeiro grande exemplo de jogo digital com as características de saltos e obstáculos necessários aos jogos de plataforma.
O herói deste jogo é o personagem Jumpman, que deve saltar sobre os obstáculos, o qual obtém muito sucesso e acaba obtendo um jogo próprio, chamado Mario Bros, onde passa a ser conhecido como Mario.
Os jogos com transição de tela surgem em 1982, por meio de exemplos como Pitfall, onde a tela é trocada pela sucessora ou antecessora, na sequência definida para o mundo completo, sempre que as extremidades da tela, direita ou esquerda, são atingidas pelo personagem do jogador. Essa troca de tela ainda não definia uma rolagem suave, técnica que surgiria logo em seguida.
 
A rolagem de tela foi bastante popularizada pelo jogo arcade Moon Patrol, lançado pela Irem em 1983 e portado para o Atari 2600 na mesma época.
 
Apesar da baixa resolução, este jogo trouxe a característica de um cenário longo, horizontalmente, que se desloca no sentido contrário ao movimento do jogador, ou seja, a própria definição de rolagem de tela. Também proporcionou a noção de profundidade, com a criação de camadas sobrepostas que se movem em diferentes velocidades, efeito conhecido como paralaxe.
Outros estilos de jogo se beneficiaram da rolagem de tela, como jogos de corrida e combate com visão superior, a exemplo do River Raid, lançado pela Activision em 1982, e o jogo 1942, ambientado na Guerra do Pacífico, lançado pela Capcom em modelo arcade no ano de 1984. Para jogos que se enquadram nestes perfis é mais comum a adoção da rolagem vertical.
Um jogo icônico da história dos jogos, que inicialmente utilizava uma tela fixa e em versões posteriores adotou a rolagem de tela foi o Pac-Man, o que permitiu a criação de labirintos maiores e melhor definidos para o jogo.
· Década de 1990
Vários jogos de plataforma que se sucederam seguiram esse estilo de rolagem da tela, tendo como exemplo o popular Sonic, mascote da SEGA, que surgiu em 1991 para consoles como o Mega Drive, com resolução muito superior ao Atari, deixando a movimentação do cenário mais fluida e os personagens e itens mais realistas.
 
A década de 1990 foi marcada por consoles como Super NES e Mega Drive, mas os computadores também evoluíram e, em 1993, graças ao jogo Doom, os PCs finalmente superam os consoles em termos tecnológicos e de aceitação por parte do público. Esse jogo é uma evolução do Wolfenstein 3D, com qualidade gráfica muito maior, mas ainda seguindo a ideia de jogo de tiro em primeira pessoa.
Esse foi um momento da história dos jogos em que temos uma busca muito grande por uma maior sensação de realismo, e as tecnologias 3D começaram a evoluir em grande velocidade, fazendo com que os jogos de plataforma perdessem um pouco de sua popularidade.
Ocorreu um movimento no sentido de recriar diversos jogos de plataforma no modelo 3D, como o Sonic Adventure, de 1998, mas a jogabilidade desse modelo era bastante diferente do modelo 2D, não obtendo o mesmo sucesso anterior.
 
Ficou claro que o ideal não seria um ambiente com movimentação 3D, mas apenas com a ilusão de profundidade gerada pelo sombreado dos modelos 3D, o que levou à adoção de do estilo conhecido como 2.5D, em que temos elementos 3D vistos de forma frontal, com a movimentação efetuada apenas nos eixos do plano de visualização.
Os consoles portáteis ganharam muita relevância com o lançamento do Game Boy Color, em 1998, trazendo a série Pokémon. A ideia de poder jogar em qualquer lugar agradou ao público, de forma geral, e diversas outras iniciativas ocorreram, como o surgimento posterior do PSP, mas este modelo de dispositivo nunca apresentou o mesmo poder gráfico dos consoles.
 
Os jogos para os portáteisacabavam seguindo o modelo 2D tradicional e variantes, como as ilusões de profundidade simplificadas do 2.5D e da visão isométrica, e esta foi uma tendência que perpetuou mesmo com a evolução destes portáteis.
· Século XXI
No século XXI passamos a observar o uso intensivo de Smartphones e Tablets, passando a constituir um mercado de jogos muito expressivo, com características próximas àquelas apresentadas pelos portáteis, porém com maior poder de influência sobre jogadores não aficionados, e, com a evolução dos sistemas operacionais e hardware desses dispositivos, eles se tornaram uma poderosa plataforma de jogos que executam desde versões dos jogos Atari até Jogos 3D de alta qualidade.
Neste novo ambiente os jogos 2D, particularmente os de plataforma e runners, em que o personagem corre desviando de obstáculos, obtiveram grande sucesso. Além de jogos já tradicionais que foram portados, como o Sonic, surgem diversos jogos como Angry Birds, que aliam todo o carisma dos jogos 2D aos modernos recursos para cálculo de física das ferramentas atuais.
Classificação de Jogos Digitais
Nos jogos digitais vemos que a interatividade e a imersividade são fatores determinantes.
Os jogos da atualidade são mais detalhistas, trazendo uma ilusão cada vez mais próxima da realidade física de nosso cotidiano. Contudo, a qualidade gráfica não determina, por si só, uma boa experiência para o jogador.
Esta experiência deve levar em conta outros elementos, como:
1. Qualidade da entrada de comandos por meio dos controles.
2. Nível de desafio.
3. Utilização de sonorização apropriada.
Atenção
O termo jogabilidade é muito utilizado para denotar a avaliação da qualidade desta experiência proporcionada pelo jogo.
Vamos conhecer algumas dessas tipologias de classificação de jogos digitais:
GRAELLS (2000)
Estabelece uma tipologia para jogos digitais levando em conta a estrutura dos jogos e as principais competências mobilizadas pelo jogador no desenrolar do jogo, ou seja, a psicomotricidade, o raciocínio, a lógica, a estratégia e a memória.
BECTA (2003)
Delineou uma classificação para englobar os vários gêneros de jogos digitais existentes, de acordo com os estilos, narrativas, temáticas e atividades.
Expansão do mercado de jogos para dispositivos móveis
Com a expansão do mercado de jogos para dispositivos móveis, onde jogos casuais se tornam mais rotineiros que aqueles com enredos complexos, os jogos de plataforma se tornaram um grande sucesso, mesmo em uma época onde os consoles buscam realismo cada vez maior e histórias longas e intrincadas.
O uso de jogos de plataforma em um Smartphone permitirá que o jogador pare e continue a partida quando e onde quiser, e isso se torna um grande atrativo, principalmente em instantes ociosos, muito comuns ao utilizar algum meio de transporte público.
Ainda pensando neste mercado, as próprias dimensões do aparelho e recursos de processamento levam à concepção de jogos que se preocupam mais com a jogabilidade do que com o realismo, dando preferência à adoção de gráficos 2D, mesmo que com sombreado, imitando 3D, o que torna a concepção dos projetos mais simples e menos onerosa.
 
O projeto de um jogo do tipo plataforma deve considerar um cenário onde determinadas áreas são acessíveis a partir de movimentos específicos, como saltos, o acesso às mesmas proporcionará, por meio de determinado ordenamento, o desenrolar do enredo do jogo.
· OBSTÁCULOS E INIMIGOS
São colocados em posições estratégicas, de forma a dificultar o acesso do jogador às áreas determinadas para efetivação da sequência do enredo, além da possibilidade de utilizar sequências alternativas de plataformas, algumas funcionando como atalhos e outras como armadilhas, o que permite dar ao jogo de plataforma um aspecto de labirinto.
· ROLAGEM DE TELA
É um elemento invariavelmente utilizado para os jogos atuais de plataforma, logo deve ser definido um cenário razoavelmente grande. Alguns destes cenários aceitam apenas a rolagem horizontal, como em jogos no estilo do Moon Patrol, outros aceitam rolagem vertical, como uma versão expandida do cenário de Donkey Kong, e outros efetuam rolagem nos dois eixos, o que seria o exemplo do Sonic.
· ITENS
A coleta na movimentação pelo cenário, sempre com algum objetivo além da pontuação, como a abertura de portas, ou o acréscimo de armamentos para enfrentar alguns inimigos específicos, pode dar ao jogo de plataforma uma característica de Puzzle, o que muitas vezes acaba tornando-o mais atrativo por causa do desafio proporcionado.
Os jogos do estilo infinite runner podem ser considerados uma interessante variação dos jogos de plataforma, muito aplicável aos dispositivos móveis por definirem ambientes muito casuais, sendo que a movimentação é mais simples para estes casos.
· Basicamente quem se move é o cenário, enquanto o personagem do jogador fica em uma posição horizontal fixa, variando a vertical através de saltos, sob comando de toque de tela ou clique, por exemplo.
· Esses jogos podem envolver a possibilidade de saltos maiores ou menores, ou ainda o agachamento, para o desvio de obstáculos e captura de itens, os quais se aproximam do jogador juntamente com o movimento do cenário.
Embora nas versões tradicionais de jogos runner o personagem do jogador deva se apoiar na superfície, ou plataforma, sobre a qual corre, podemos aproveitar a dinâmica da movimentação do cenário para jogos distintos, como nave em movimentação horizontal (Flappy Bird), com exemplos em que o personagem do jogador deve se manter no ar e perde o jogo se tocar na plataforma.
 
Modelagem 2D
A representação gráfica dos personagens, cenários e demais elementos é crucial para o desenvolvimento de um jogo. Esses elementos podem ser definidos em duas ou três dimensões, e, para cada caso, existe uma grande diversidade de ferramentas que podem ser utilizadas.
Alguns jogos são criados utilizando apenas elementos 2D, mesmo que com efeitos de sombra, simulando efeitos 3D, o que tem sido muito comum nos jogos de plataforma.
Um formato muito utilizado para as imagens 2D da atualidade é o PNG, pois apresenta características de transparência, facilitando a sobreposição de camadas.
As imagens 2D podem ser estáticas, normalmente associadas ao cenário e itens do jogo, ou dinâmicas, por meio de animação quadro a quadro, definindo personagens e seus movimentos.
Um cenário que satisfaça a um enredo mais complexo, no entanto, pode envolver uma grande área, e, para menor consumo de memória, é comum a repetição de elementos de imagem, combinados de forma adequada, para composição desse cenário.
 
Como o acesso ao meio persistente é muito dispendioso em temos de tempo, uma técnica para a redução do delay é a junção dos diversos elementos em uma única grande imagem, reduzindo o número de acessos ao disco.
Essa é a base da técnica conhecida como Tilemap, que divide a imagem fonte em células menores, e aplica estas células em posições específicas do cenário a partir de seus índices. Com isso, temos também menor gasto de memória, pois cada célula é carregada apenas uma vez, sendo reutilizada ao longo de todas as suas ocorrências na área de jogo.
Para a aplicação das células na área definida para o cenário, precisamos dividi-la em quadros com dimensões equivalentes, compondo um grid posicional indexado vertical e horizontalmente.
Ainda podemos trabalhar com dois grids, sendo o Visual Grid, para a definição da imagem completa do cenário, e o Logic Grid, definindo a colisão ao longo do cenário por meio do bloqueio de quadros específicos.
 
Devido ao uso de rolagem de tela, apenas os componentes da área visível do cenário serão carregados a cada quadro, ao invés de ocupar a memória com uma grande imagem de fundo.
Isso acaba permitindo cenários muito maiores, pois é mantida quase constante carga de memória com imagens, mesmo que o cenário seja dezenas de vezes maior do que a área de visualização.Outra técnica muito interessante na área de jogos 2D é a simulação de um ambiente 3D por meio de Tilemap Isométrico. Esse tipo de abordagem é muito comum em jogos de RPG e simulação, como no caso do SimCity 2000.
Ainda em termos de cenário, é possível simular a profundidade a partir da visão frontal por meio de paralaxe, um efeito muito interessante, que é obtido dividindo o fundo em camadas sobrepostas agrupando elementos mais próximos ou mais distantes, e quanto mais distante menor a velocidade com a qual a camada se desloca.
· É algo parecido com o que você observaria na janela de um carro, em que as árvores à beira da estrada passam pela sua visão muito mais rapidamente do que uma montanha que se encontre distante.
· Já em termos de personagens, um elemento muito comum para a criação dos mesmos é o Sprite, que define uma animação quadro a quadro obtida a partir de imagens geradas previamente.
Para diminuir a quantidade de operações de leitura de disco, esse conjunto de quadros também é colocado em um arquivo único, contendo todas as posições do personagem, denominado Sprite Sheet.
 
· Como o personagem apresenta diferentes estados, cada um corresponde a uma sequência de quadros específica para a animação (correndo, andando e pulando) e a alteração do estado corrente deverá ser controlada via programação, sempre em resposta aos comandos do jogador ou à interatividade com outros personagens e demais objetos do cenário.
· Definidas as estratégias para organização de elementos gráficos, devemos buscar as ferramentas adequadas para a criação propriamente dita. Existem diversos softwares para edição de imagens em 2D, alguns gratuitos, como GIMP e InkScape, outros pagos, como Adobe Photoshop.
· Eles serão necessários para o desenho de cenários, personagens, objetos e até mesmo texturas, caso ocorra a combinação com elementos 3D.
As técnicas utilizadas para a criação de imagens 2D podem envolver o simples uso de pixels, de acordo com a técnica denominada pixel art, que deve levar em consideração a resolução do dispositivo para exibição, devido a possíveis distorções, ou trabalhar com elementos vetoriais, os quais mantêm o aspecto visual para as diversas resoluções.
 
Quando vemos o efeito de distorção, causado pelo redimensionamento de uma imagem baseada em pixels além da sua resolução original, dizemos que a imagem está “pixelada”.
Em termos dinâmicos, as animações 2D podem ser geradas com a utilização de programas como Spriter Pro, Pencil 2D ou Adobe Animation CC, este último com grandes recursos para modelagem vetorial e diversas opções de exportação de arquivos.
Essas ferramentas definem linhas de tempo em que são adicionadas chaves de animação, podendo utilizar até mesmo relações hierárquicas com o uso de bones (ossos), como no caso do Spriter.
 
· Comentário
Devemos lembrar que alguns jogos, mesmo utilizando apenas elementos 2D, objetivam simular a visão 3D frontal, por meio de efeitos de sombra, técnica que tem sido muito comum em diversos jogos de plataforma.
Uma forma simples de obter este efeito é modelar no 3DS Max, ou outro editor 3D, em que será definida tanto a malha quanto a animação, e utilizar a opção de renderização para arquivo sequencial, ao invés de vídeo, pois, com as imagens geradas, basta copiar o conjunto para um mesmo arquivo, através de um editor de imagens em 2D, e definir a transparência, salvando em seguida como PNG, o que faz surgir, neste processo, um Sprite Sheet.
Atividades 1
1. Qual dos jogos a seguir pode ser considerado um referencial histórico para o uso de paralaxe?
a) Space Invaders
b) Moon Patrol
c) Pong
d) Frogs and Flies
e) Pac-Man
Gabarito:
A rolagem de tela foi bastante popularizada pelo jogo arcade Moon Patrol. Apesar da baixa resolução, esse jogo trouxe a característica de um cenário longo, que se desloca no sentido contrário ao do jogador, e proporcionou a noção de profundidade, com a criação de camadas sobrepostas que se movem em diferentes velocidades, efeito conhecido como paralaxe.
2. O recurso de rolagem de tela deve ser usado em qual tamanho de cenário?
a) Pequeno
b) Médio
c) Grande
d) Qualquer tamanho
Gabarito: 
Como vimos, a rolagem de tela é um elemento invariavelmente utilizado para os jogos atuais de plataforma, logo deve ser definido um cenário razoavelmente grande.
Módulo 2
Motor de Jogo
Game Engine, ou Motor de Jogo, é um programa utilizado para simplificar e abstrair o desenvolvimento de jogos eletrônicos ou outras aplicações que exijam a criação de gráficos em tempo real.
· Existem várias Game Engines no mercado, e elas podem ser diferenciadas em termos de custo, qualidade gráfica e sonora, praticidade de uso, linguagem de programação utilizada, plataformas abrangidas, entre outros aspectos gerais.
· Nas Game Engines, o processo de personalização da aplicação normalmente é efetuado através de uma ou mais linguagens de programação que sejam suportadas, como o C# na Unity 3D e o C++ na Unreal Engine.
Entre os componentes de uma Game Engines, podemos destacar:
· Motor gráfico para renderizar gráficos 2D e 3D.
· Motor de física para simular forças ou detectar colisão.
· Suporte para animação, sons, inteligência artificial e redes.
· Controle de diversos dispositivos de entrada
· Gerência de memória, arquivos e linha de execução.
· Controles em geral para cenas e entidades.
Devem estar presentes, também, alguns utilitários, como:
· Editores visuais para os elementos do jogo.
· Gerenciadores de materiais e texturas.
· Construtor de árvores, normalmente por utilização de fractais.
· Construtor de terrenos.
· Sistemas de partículas e efeitos diversos.
· Elementos para a construção de menus e HUD.
· Suporte ao uso de veículos.
Características das diversas Game Engines
É interessante observar as características de algumas das diversas Game Engines disponíveis, como Unity 3D e Unreal Engine.
A característica principal da jMonkey Engine é a de ser uma opção gratuita e totalmente programada em Java, sendo voltada para programadores Java que desejam utilizar as mais recentes tecnologias 3D.
Ela trabalha com sistemas de partículas e diversos elementos de física 3D, além de trazer alguns editores gráficos e poder ser integrada a NetBeans e outros ambientes Java.
O motor de jogo da Crytek, chamado Cry Engine, tem grande apelo visual e facilidade com experiências imersivas. Ela apresenta editores extremamente completos e animação de personagens com grande realismo, além de física integrada e soluções de áudio para interações próximas à realidade.
Unreal Development Kit, ou simplesmente UDK, é um ambiente baseado na Unreal Engine, até a versão 3, e sua maior vantagem é a facilidade com que se cria um jogo FPS, até mesmo sem programação.
Tem grande facilidade no uso de veículos e partículas, além de permitir a criação de folhagem e terrenos muito realísticos, mas o que realmente chama a atenção é o editor visual de Scripts, na forma de fluxogramas, denominado Kismet.
 
A partir da versão 4, a Unreal Engine se distanciou do UDK, e, ao invés do Kismet, agora a programação é feita com uso de Blueprints.
Assim como o UDK, traz um ambiente simples para a obtenção e organização de complementos (Assets), e atualmente trabalha com efeitos visuais em cascata, incluindo simulação de partículas com uso da GPU, proporcionando baixo custo computacional e grande velocidade.
 
Blender é um modelador 3D tradicional e gratuito, já muito conhecido no mercado, e ele traz um motor de jogo denominado Blender Game Engine, cuja grande vantagem é a plena interação com o Blender em si.
Baseia-se em blocos lógicos, para permitir uma programação visual simples, tendo sensores, atuadores e controladores como elementos principais.
Uma opção de Game Engine open source, voltada para criação de jogos 2D, é a Cocos2D-X, cujo rendering é otimizado paraa criação de gráficos 2D com utilização de OpenGL. Ela trabalha com TileMaps, Sprites, texturas e partículas, entre diversos outros elementos, além de apresentar um poderoso editor de cenas 2D.
Com relação à Unity 3D, ela permite criar projetos de jogos 2D e 3D com a mesma praticidade, e a qualidade gráfica dos projetos é bastante alta, viabilizando a criação de jogos bastante realísticos.
Ela traz componentes muito úteis para a construção de menus e demais interfaces de usuário e HUD, e para jogos 2D oferece uma gerência simplificada de Sprites e cenários, além de Física 2D, específica para esse tipo de projeto.
Características gerais da Unity 3D
Unity 3D tem grande aceitação no mercado, principalmente devido a sua grande praticidade e sistema de licenciamento. Embora aceite outras linguagens, a programação em C# traz maior dinamismo, sendo amplamente utilizada pela comunidade de desenvolvedores desta plataforma.
· Ela é disponibilizada no site do fabricante, podendo ser baixada e utilizada livremente, porém ressarcindo ao fabricante sob a forma de royalties a partir de determinada quantidade de cópias do jogo comercializada.
· Embora seja possível utilizar o ambiente Mono Develop para a programação, uma opção melhor é o Visual Studio, que pode ser baixado no site da Microsoft. Ambos os sites exigirão o cadastro, que é gratuito, para efetuar download e ativar as ferramentas.
· No site da Unity 3D também podemos obter muitos tutoriais e recursos, denominados Assets, no jargão das Game Engines, constituindo uma ótima fonte de aprendizagem acerca do uso da ferramenta.
· Uma das maiores vantagens dessa ferramenta é a quantidade de plataformas distintas para as quais pode gerar os jogos, como Windows, Linux, Xbox, Play Station e Android.
Da mesma forma, também suporta a importação de arquivos de diversos outros softwares na construção do jogo, como Blender, Zbrush, 3DS Max e Fireworks, entre vários outros.
Em termos de física, além de apresentar um bom suporte à colisão, com diversos tipos de colisores 2D e 3D, traz suporte ao PhysX e permite trabalhar com Soft Body e Ragdoll, além do RigidBody, que trata da opção mais comum nas Game Engines.
Ela também nos oferece um excelente sistema de partículas, sendo possível obter vários Assets com efeitos já configurados no site do fabricante, e um bom suporte ao uso de Shaders personalizados, trazendo uma excelente qualidade gráfica e realismo aos ambientes 3D.
Em termos de jogos cooperativos, a Unity 3D apresenta um conjunto de ferramentas e arquitetura específica para a criação simplificada de jogos em rede (multiplayer).
Os principais componentes voltados para rede são o HLAPI e o Network Manager, mas existem projetos visando a mudança desse sistema em versões futuras da Game Engine.
Já no que se refere à inteligência artificial, esta Engine traz vários sistemas úteis e de fácil aplicação aos jogos, como o Ray Cast, que detecta os inimigos em determinada direção por meio da colisão com um raio traçado virtualmente, ou o Navigation Mesh, que define uma malha de superfície sobre a qual podemos configurar agentes de perseguição e alvos específicos, segundo um algoritmo de Pathfinding.
Para os jogos 2D temos o suporte à criação com uso de camadas, física e colisores, manipulação simplificada de Sprites e controle de animações, permitindo a criação extremamente ágil, particularmente dos jogos de plataforma.
Finalmente, mas ainda não abrangendo todas as diversas funcionalidades da Unity 3D, ela traz boas ferramentas para a criação da interface de usuário, aqui se tratando de menus e avisos, entre outros elementos de interação e HUD.
Os componentes para construção de GUI incluem:
1. PAINÉIS
2. BOTÕES
3. TEXTOS E IMAGENS
4. CAMPOS DE ENTRADA
5. SISTEMA DE EVENTOS
Explorando a Unity
· Na criação de um projeto para Unity 3D deve ser escolhido entre os modelos 2D ou 3D, entre outras opções.
· Também podem ser selecionados os Assets que serão utilizados no novo projeto, mas estes podem ser adicionados posteriormente a partir do ambiente da Game Engine.
Exploraremos aqui as funcionalidades do ambiente 3D por meio de um novo projeto desse tipo, que será chamado de "Exemplo001", sem adicionar Assets durante a criação.
Tendo sido criado o projeto, o ambiente será iniciado, exibindo as diversas ferramentas disponíveis na plataforma.
Na visualização padrão inicial serão observados: 
1. Toolbar
2. Hierarchy Window
3. Scene View
4. Inspector
5. Project Window
 
Todo projeto na Unity 3D é dividido em cenas, sendo definida uma cena inicial com o nome SampleScene, a qual pode ser renomeada a qualquer instante. Podem ser criadas múltiplas cenas, onde cada uma corresponde a um ambiente completamente configurado, como as diversas fases de um jogo.
 
Tendo em mente o objetivo de cada divisão, podemos iniciar a utilização da Unity 3D com um exemplo simples, mostrando potencialidades naturais desta Game Engine para a criação de ambientes 3D.
Atenção
Lembre-se de que este exemplo visa apenas a familiarização com o ambiente, pois nosso objetivo é a criação de projetos em 2D.
Todo elemento manipulável visualmente no Unity é um Game Object, incluindo as primitivas 3D disponibilizadas pela Engine.
Por exemplo, o menu Game Object..3D Object..Cube é utilizado para a criação de um cubo, que poderá ser visualizado e manipulado na Scene View ou pelo Inspector.
Tendo adicionado o cubo à nossa cena, podemos definir pela Toolbar o tipo de transformação linear desejada e modificar o objeto com o uso do mouse na Scene View.
 
Atalhos úteis
Além do acesso pela Toolbar, as operações básicas oferecem alguns atalhos úteis via teclado
Dica
O botão direito do mouse, em conjunto com as teclas W, S, A e D, permite controlar a visualização da câmera na Scene View.
Gizmos
Para as operações de translação, rotação e escala são disponibilizados Gizmos, ou, como poderiam ser descritos, eixos de transformação 3D.
Observe que, ao passar o ponteiro do mouse sobre o Gizmo, ele acenderá o eixo ou plano de modificação, permitindo um ajuste mais controlado em termos da operação desejada, como, por exemplo, translação no eixo Z, ou escala no plano XY.
Atenção
A divisão Hierarchy mostra os objetos da cena e seus relacionamentos, enquanto Inspector mostra todas as propriedades do objeto selecionado, permitindo manipular as mesmas.
Exemplo
Podemos selecionar nosso cubo e efetuar a configuração das transformações lineares por meio do Inspector, centrando nas coordenadas da origem, com rotação de 45 graus no eixo X, e mantendo as escalas todas em 100%, como pode ser observado na imagem seguinte.
 
Após efetuar esta configuração, o nosso cubo será apresentado na Scene View da forma exibida a seguir:
 
Componentes e comportamentos específicos
Ainda falando acerca do Inspector, através da opção Add Component, no nível das propriedades, é possível atribuir componentes e comportamentos específicos, como na utilização de física.
Para testar essa funcionalidade, vamos configurar um corpo rígido em nosso cubo, adicionando um componente do tipo Physics..Rigidbody ao mesmo. Ao executar o jogo, com o botão Play, será possível observar o cubo cair no espaço indefinidamente, sob efeito da gravidade.
 
Note que a janela “Game” foi ativada de forma automática durante a execução, a qual é finalizada pressionando novamente o botão Play.
Durante a execução do jogo, qualquer modificação efetuada na Scene View ou no Inspector não será mantida, logo fique atento ao estado atual do ambiente.
Terrenos
Porém, vamos partir para algo mais efetivo na construção de um jogo, por meio do uso de terrenos, que são elementos de grande importância para a construção de cenários 3D, e a opção Game Object..3D Object..Terrain oferece um ferramental muito completo para a criação dos mesmos.
Com o uso das ferramentas paramodelagem do terreno, disponibilizadas a partir do Inspector, é possível aumentar, diminuir ou suavizar elevações. Com as elevações definidas, texturas podem ser aplicadas ao relevo por meio da opção de pintura. Também é possível adicionar vegetação e detalhes ao terreno, viabilizando a criação de ambientes muito realísticos.
Atenção
As ferramentas para controle de elevação mudaram de posição nas atuais versões da Unity 3D. Para acessá-las, é necessário escolher o pincel e a opção “Raise or Lower Terrain”.
Após posicionar nosso terreno e definir o tipo correto, vamos criar algumas elevações. Para tal devemos escolher o formato do Brush, além do tamanho e opacidade.
Para aumentar as elevações, utilize o clique e arraste sobre a superfície, enquanto para diminuir basta utilizar SHIFT junto ao clique.
Outras opções disponíveis a partir do botão do pincel são a fixação da altura, como na definição de platôs, e a suavização das elevações, além de Paint Texture, onde podem ser definidas as texturas que serão aplicadas ao nosso terreno.
Agora podemos aplicar uma textura ao nosso terreno, o que é feito com o uso de uma imagem em algum formato reconhecido, como JPG ou PNG, bastando arrastar o arquivo para sessão Assets do projeto.
Essa imagem será associada a uma camada sobre o terreno, sendo criada com o clique sobre Edit Terrain Layers e a escolha da opção Create Layer, para as atuais versões da Unity 3D, ou com Edit Textures da ferramenta de pincel nas versões antigas.
 
Atenção
Em ambos os casos, na janela que se abrirá deverá ser escolhida a figura que foi adicionada ao projeto.
A primeira textura aplicada cobrirá todo o terreno, mas podem ser adicionadas outras, segundo o mesmo processo, para pintar áreas diferenciadas com o uso do Brush.
Asset Store
Além de podermos importar recursos comuns por meio de arraste, o fabricante da Unity 3D mantém um comércio virtual denominado Asset Store, em que podemos obter diversos recursos, sendo acessado pelo navegador ou pela Game Engine por meio da opção Window..Asset Store (CTRL+9).
· Muitos componentes são gratuitos, mas também existem Assets pagos, constituindo inclusive um mercado muito interessante para desenvolvedores de jogos.
· Em termos de jogos 3D, as representações mais comuns para o jogador são a primeira e a terceira pessoa, e a Unity 3D fornece Assets prontos para os dois modos, devendo apenas ser acrescentado o pacote correto ao projeto e utilizado o controlador adequado.
· Para a utilização da representação em primeira pessoa no Unity, o caminho mais simples é a utilização de PFPSController, um Prefab presente no pacote Characters.
· Todo pacote, ou Asset Package, pode ser selecionado na criação do projeto ou adicionado por meio do menu Assets..Import Package..[Pacote].
 
Nas versões mais recentes, é necessário importar o pacote Standard Assets da Asset Store, pois estes recursos foram removidos da instalação padrão.
Sistemas de Partículas
· Outra característica interessante da Unity 3D é o Sistema de Partículas, utilizado na construção dos mais diversos efeitos, como fumaça, fogo, neve, elementos líquidos, e muitos outros.
· Com a utilização da Unity, é bastante simples criar e configurar um sistema de partículas a partir do início. No entanto, existem vários efeitos já configurados, no formato de Prefab, disponíveis para utilização através de Assets..Import Package..ParticleSystems.
Para quem utiliza a versão nova, e importou o pacote Standard Assets, os sistemas de partículas já estarão disponíveis.
Dica
Experimente utilizar o efeito Smoke (fumaça) na cena, e veja como o efeito é bastante realista ao executar o jogo.
Terceira pessoa
Tão simples quanto trabalhar com a primeira pessoa é trabalhar na terceira pessoa.
Certamente a definição de um personagem em terceira pessoa exigirá alguma modelagem 3D, mas o Prefab ThirdPersonController já está disponível no pacote Characters e precisa apenas ser arrastado para a cena, assumindo a malha padrão para testes.
A câmera deve ser posicionada corretamente para visualizar o personagem, e as dimensões corrigidas para a cena, e, ao acionar Game Play, podem ser utilizados os comandos comuns de jogos 3D.
 
Modelador de árvores
· Outra ferramenta muito interessante da Unity 3D é o modelador de árvores, o qual permite criar os mais diversos tipos de árvores e arbustos com grande facilidade.
· Uma árvore configurada pode ser reutilizada em toda a cena, e pode conter aspectos aleatórios que denotarão uma individualização de cada instância utilizada.
 
No pacote Environment, temos acesso a diversos elementos que podem ser utilizados na cena, como exemplos de árvores e elementos líquidos.
· Para adicionar as árvores ao mapa, usa-se a opção Paint Trees do editor de terrenos, sendo selecionada a árvore que será utilizada a partir da opção Edit Trees, Add Trees.
· Na janela que se abrirá, deve-se clicar no seletor para Tree Prefab, selecionando uma árvore da biblioteca, como Conifer Desktop.
· Agora, é só adicionar as árvores no ambiente, da mesma forma que foi feito com as elevações.
· Com um pouco de paciência, nós conseguimos criar ótimos cenários 3D, como pode ser observado a seguir.
 
Física para jogos
Os cálculos da física são de grande relevância para a criação de jogos.
Efeitos como gravidade, vento e atrito, entre vários outros, mudarão o comportamento de diversos elementos presentes nos jogos 2D e 3D.
Inicialmente, para entender as relações de ordem física entre os elementos de jogo, devemos entender o conceito e utilização da colisão.
Tanto em jogos 2D quanto em jogos 3D, a colisão é quase sempre o principal elemento funcional, pois permite detectar os diversos eventos relacionados ao contato, ou colisão, entre dois ou mais elementos do jogo, trazendo informações acerca do momento e espaço envolvidos.
Veja exemplos de uso da colisão:
1. Impedir que uma parede seja atravessada.
2. Evitar que objetos caiam indefinidamente.
3. Verificar quando um tiro atinge o personagem.
As técnicas para detecção de colisão surgiram ainda nos jogos 2D mais antigos, sendo algumas delas utilizadas até hoje, como a Bounding-Box, que se baseia na determinação de uma área retangular invisível envolvendo cada Sprite, reduzindo o problema ao simples teste da superposição dessas áreas.
Essa técnica apresenta uma performance muito boa devido ao baixo números de contas e de verificações, mas, como ela testa colisões entre retângulos, em figuras muito curvas e disformes, pode não apresentar um resultado satisfatório.
Além da colisão, o principal elemento representativo da física nos jogos é a força. A gravidade, por exemplo, funcionará aplicando uma aceleração negativa de valor constante aos objetos no eixo y.
No entanto, as forças não atuam sobre todos os elementos da cena, sendo normalmente aplicadas apenas aos corpos rígidos relacionados às mesmas, de acordo com os parâmetros adotados pelo jogo.
Corpos rígidos apresentam características como:
· Posição.
· Velocidade.
· Densidade.
· Massa.
· Rotação.
· Velocidade angular.
Comentário
Força e torque podem ser adicionados a um corpo rígido, modificando algumas de suas características originais.
O ferramental da Unity 3D para aplicação de física nos jogos é muito vasto, a começar pelo suporte à colisão.
Através desta Game Engine, é possível utilizar uma grande gama de estratégias de detecção da colisão sem qualquer tipo de aprofundamento matemático, sendo as áreas (2D) e volumes (3D) para detecção denominadas colisores.
· Embora a metodologia seja sempre a mesma, as fórmulas de cálculo para diferentes áreas ou volumes de colisão podem se tornar bastante complexas. Formatos típicos de colisores podem ser quadrados e círculos, no modelo 2D, ou esferas e cápsulas, no modelo 3D.
· É possível testar a colisão de todos os vértices de um polígono ou de uma malha, mas o gasto computacional envolvidopode não trazer tantos benefícios assim, o que faz com que utilizemos colisores aproximados para a forma predominante no componente.
· Mesmo sem a necessidade de efetuar complexas implementações de colisores, devido ao suporte oferecido pela Unity 3D, é interessante observar os impactos para o jogo na escolha de colisores mais ou menos complexos, pois o aumento da quantidade de cálculos efetuados poderá trazer efeitos catastróficos para a fluidez no momento de execução.
Inicialmente, a Unity 3D apresenta colisores 3D, pela própria natureza da Engine, sendo mais utilizados os colisores Box Collider, Sphere Collider e Capsule Collider. Em situações de maior detalhamento, pode ser utilizado o Mesh Collider. Outro colisor importante é aquele utilizado na criação de terrenos: o Terrain Collider.
Da mesma forma que são oferecidos colisores 3D, são oferecidos colisores 2D, aplicáveis aos Sprites e demais elementos 2D. Os colisores mais utilizados são Circle Collider 2D e Box Collider 2D, e, para elementos mais detalhados, pode ser utilizado o Polygon Collider 2D.
 
Diversos objetos criados no ambiente da Unity 3D já trazem colisores, não sendo necessário que adicionemos os mesmos de forma manual neste primeiro instante.
A criação de um cenário simples, com um box (BoxCollider), quatro esferas posicionadas sobre o box (SphereCollider) e um controlador em terceira pessoa (CapsuleCollider), com o correto posicionamento de câmera, já seria suficiente para observar o efeito da colisão, já que o personagem não consegue atravessar as esferas.
 
É fundamental que você observe, através do Inspector, a relação entre cada Game Object e o colisor utilizado. Inclusive, clicando sobre o colisor associado, é possível observar como ele envolve o objeto, além de viabilizar a edição de seus vértices.
Atenção
Embora a funcionalidade básica dos colisores seja a de efetuar o bloqueio do objeto, nós podemos controlar a resposta às colisões que ocorrem por meio de uma linguagem de programação.
O uso de C# permite a criação de novos Assets e a modificação dos comportamentos da Unity 3D, visando a especificidade para cada jogo. Embora possa ser utilizada também a linguagem Java Script, C# tem obtido a preferência dos desenvolvedores que utilizam esta Game Engine.
A classe básica de comunicação entre Unity 3D e C# é a MonoBehaviour, e devemos estendê-la para adaptar os elementos do projeto às necessidades de um novo jogo.
Por exemplo, se quisermos que as esferas colocadas no cenário desapareçam quando forem tocadas pelo personagem do jogador, devemos criar um Script contendo um descendente de MonoBehaviour que implemente o método OnCollisionEnter, com a codificação adequada, e associá-lo às diversas esferas.
· Vamos escolher uma das esferas e gerar, a partir dela, um novo Script por meio de Add Component..New Script, no Inspector, o nomeando como SelfDestruct.
· Nosso Script poderá ser observado na divisão de projeto, raiz da sessão de Assets, bastando dar um duplo clique sobre ele para abrir o editor de código associado.
Basicamente, trataremos a colisão no método OnCollisionEnter, pois, quando o colisor da esfera entra em contato com outro colisor, ela aciona este método, sendo solicitada a destruição do próprio Game Object com a chamada a DestroyObject.
 
Código
Para as demais esferas, podemos associar o Script através do Inspector utilizando Add Component..Scripts..SelfDestruct, ou arrastar o Script, a partir da divisão de projeto, até cada esfera na Hierarchy View.
Com esses passos efetuados, sempre que o personagem tocar em uma das esferas, ela é destruída, tratando de uma ação muito simples, mas que permite demonstrar a utilização de C# para resposta aos eventos de colisão na Unity 3D.
Atividades 2
3. Qual das Game Engines a seguir é destinada ao uso por programadores Java?
a) UDK
b) Unreal Engine
c) Unity 3D
d) jMonkey Engine
e) Blender Gamer Engine
Gabarito: 
A característica principal da jMonkey Engine é sua especificidade para o ambiente Java, permitindo ser integrada, inclusive, com NetBeans, uma das IDEs de maior utilização para a linguagem.
4. Um dos elementos principais na concepção de jogos é a colisão. Para controlar o efeito da colisão em determinado objeto, precisamos utilizar uma linguagem de programação, e, na Unity 3D, o método que deve ser implementado chama-se:
a) Start
b) OnCollisionEnter
c) Update
d) BoxCollider
e) CapsuleCollider
Gabarito:
O evento de colisão pode ser tratado no método OnCollisionEnter. O método Start é chamado na inicialização do Game Object, enquanto Update é acionado a cada Frame.
Módulo 3
Assets para jogos 2D
De forma geral, a grande diferença entre jogos 2D e 3D se refere à forma como a parte gráfica é tratada:​
 
 
Existem diversas estratégias para a criação das imagens, sendo comum, na área de jogos, o uso de Pixel Art, onde as imagens são criadas pixel a pixel e o rendering de modelos 3D tem visão frontal ou topo.
Durante muito tempo, a única forma de criação de imagens era através de Pixel Art, o que é refletido em jogos como o clássico Pac-Man.
Pelo fato de trabalhar diretamente ao nível de pixels, esse tipo de arte fica sujeita à resolução do dispositivo e paleta disponível, o que exigia ótimo conhecimento acerca da teoria das cores e combinações de luminosidade quando estávamos restritos a paletas de até 256 cores, bem diferente do atual padrão RGB, com milhões de opções de cores.
Quanto à resolução, ainda pode ser um problema corrente, pois, com a grande diversidade de dispositivos do mercado atual, a arte deve ser adaptável a diferentes resoluções, levando ao desenvolvimento de técnicas como MipMap, onde a mesma imagem é criada em várias resoluções, sendo utilizada para exibição aquela que melhor se enquadra nas possibilidades do dispositivo.
Sem o uso desse tipo de artifício podem ocorrer dois efeitos adversos:
1. Imagens desproporcionalmente grandes, quando a resolução é inferior.
2. Imagens pixeladas, quando a figura é expandida em uma resolução superior.
Existem muitas ferramentas que possibilitam a criação de imagens através de Pixel Art, como Adobe Photoshop, GIMP e o próprio MS Paint, além de diversas opções online, como PiskelApp e Pixie.
A criação de imagens desse tipo pode ser feita também através do escaneamento de figuras desenhadas manualmente, ou com o auxílio de mesas digitalizadoras, que capturam o movimento e a posição de um dispositivo apontador sobre uma plataforma, o que torna o processo criativo mais próximo do padrão, com uso de lápis ou caneta.
Em um jogo 2D, as imagens são utilizadas para definir cenários, objetos e personagens, e, no caso específico de personagens, é comum a necessidade de animações, chamadas de Sprites, baseadas na troca rápida de quadros, como nos desenhos animados, o que é conhecido como animação quadro a quadro.
· O processo consiste em gerar diferentes posições de um mesmo personagem, como instantes de uma determinada sequência de movimento, ocorrendo a alternância entre os quadros em uma velocidade igual ou superior à da percepção do olho humano.
· Esse processo, que hoje é feito de forma simples no computador, envolvia para os primeiros desenhos animados o uso de uma câmera estrategicamente posicionada para a fotografia de diversos desenhos, sendo trocados e avançando um quadro por vez, o que podia ser feito com um equipamento chamado rotoscópio.
Quanto ao formato das imagens utilizadas, existe uma preferência atual pelo PNG, podendo ser utilizado também GIF ou JPEG.
No caso do formato JPEG existe a possibilidade de perda de qualidade, devido ao tipo de compactação utilizada.
Renderização de modelos 3D
Outra forma de criar personagens e objetos para jogos 2D é por meio de renderização de modelos 3D para arquivo sequencial, em vez de vídeo, o que permite a junção das imagens geradas em uma ferramenta adequada, como Adobe Photoshop.
Nessa ferramenta,ou em qualquer outra que possibilite a criação de jogos 2D, poderá ser tratada a questão da transparência e montado um SpriteSheet, elemento fundamental para definir a animação de Sprites na Unity 3D.
Um exemplo de ferramenta para modelagem 3D que permite esse tipo de estratégia é o 3DS Max, em que podemos definir um personagem, animá-lo com o uso de Bones, aproveitando todos os recursos para criação de matérias e iluminação, sendo comum o uso de:
· Visão frontal para jogos de plataforma.
· Visão superior para jogos de nave.
· Perspectiva isométrica para jogos de RPG.
Existe diferença na criação de cenários e itens?
Em relação aos personagens, outra estratégia de animação consiste em dividir os elementos constituintes da figura em diversas partes, como cabeça, corpo, braços e pernas, e efetuar a animação independente das partes através de transformações lineares, como rotação e escala.
 
Não existe diferença para o processo de criação de cenários e itens, a não ser pelo fato de que não ocorre a preocupação com animações. No entanto, para economia de memória, os cenários podem ser criados a partir de fragmentos que podem ser combinados de diferentes formas, segundo o recurso conhecido como Tilemap.
 
Os arquivos de som, por sua vez, são os mesmos utilizados em jogos 3D, porém não podemos contar com som espacial, já que estamos em um ambiente 2D. No entanto, é possível trabalhar com som estéreo, distribuído entre os fones ou caixas de som.
Com relação aos recursos específicos da Game Engine, podemos citar os colisores 2D e a física 2D como elementos primordiais na concepção desse tipo de jogo, além da definição de camadas de ordenação para indicar quais elementos ficam sobrepostos a outros. Isso será muito importante para o cenário, permitindo inclusive a ilusão de profundidade segundo o princípio da paralaxe.
Projeto de jogo 2D
Criar um projeto 2D na Unity 3D não é muito diferente de um projeto 3D.
Inicialmente é necessário dar um nome e localização para o projeto, mas devemos lembrar que é imprescindível marcar a opção 2D, pois serão feitas várias configurações no ambiente de forma automática.
A visualização do modo 2D é baseada em uma câmera ortográfica frontal, sendo comum trabalhar com várias camadas sobrepostas, que podem ser observadas mais facilmente chaveando para o modo 3D.
A alternância entre a visualização 2D e 3D é obtida por meio do botão 2D, localizado na parte superior da Scene View.
 
Cenário
Criado o projeto, o primeiro passo é a definição do cenário, podendo ser utilizada qualquer figura, preferencialmente no formato PNG, que deverá ser arrastada para a área de Assets do projeto.
Qualquer imagem adicionada é considerada como uma textura pela Unity 3D, e, para que seja classificada como Sprite, a propriedade Texture Type deve ser escolhida como Sprite (2D and UI).
Se o projeto é do tipo 2D, a imagem adicionada é configurada como textura do tipo Sprite de forma automática.
 
A opção Pixels Per Unit (PPU) terá influência sobre a resolução utilizada para o Sprite, enquanto o Filter Mode padrão é o Bilinear, que utiliza um valor médio para o desenho, enquanto Trilinear combinaria este valor com níveis de MipMaps.
Neste ponto, é interessante observar a diferença de semântica da Unity 3D, pois o termo Sprite deriva do latim Spiritus, caracterizando um objeto que se move pela tela sem deixar “rastros”, como se fosse um “espírito”, e, no entanto, a Unity 3D classifica como Sprite tanto elementos estáticos quanto animados.
Para adicionar o fundo à cena, basta arrastar o Sprite a partir da área de Assets, ajustando a posição e a escala, mas sempre lembrando de buscar uma resolução adequada.
Quando é adicionado ao cenário, o fundo fica encapsulado por um elemento do tipo Sprite Renderer, componente responsável pelo desenho do Sprite em meio à cena.
Vamos renomear a nossa cena para Fase1, de forma a iniciar algum nível de organização em nossos projetos, como a divisão das fases em cenas diferenciadas.
Personagens
Agora podemos começar a pensar em termos de personagens, e, para tal, precisamos de um SpriteSheet em formato PNG com transparência, podendo ser encontrados vários exemplos para teste na Internet.
Atenção
Lembre-se de que essas figuras servem apenas para teste, devendo ser utilizados elementos autorais para a concepção de um jogo comercial.
· Basicamente um personagem 2D trata de uma animação quadro a quadro aplicada a um objeto que pode modificar seu posicionamento.
· A grande dificuldade na criação de Sprites encontra-se na arte gráfica, pois as imagens devem ser criadas de forma que sua alternância represente a direção e a velocidade do movimento atual do objeto.
O formato de arquivo mais indicado para a criação de um SpriteSheet é o PNG, ou Portable Network Graphics.
Este é um formato que veio em substituição ao GIF, pelo fato de incluir algoritmos patenteados, constituindo um padrão livre, recomendado pela W3C.
Ele também possui transparência (canal alfa), além de apresentar grande profundidade de cores e compressão regulável.
A figura com o SpriteSheet, ou atlas, deve ser adicionada ao projeto da mesma forma que o cenário, mas, nesse caso, modificaremos Sprite Mode para Multiple, de forma a permitir a divisão em quadros e posterior criação de animações.
No modo Single, o Sprite é considerado como uma figura única e sem movimentação, enquanto, com o uso de Multiple, o Sprite pode ser dividido em áreas menores, permitindo a típica animação quadro a quadro dos Sprites.
Após a mudança para o modo Multiple, o botão Sprite Editor dará acesso à ferramenta de mesmo nome, permitindo a manipulação do SpriteSheet original. O principal uso desta ferramenta é na divisão da imagem original em figuras parciais de forma a viabilizar a animação.
 
1. Por meio da opção Slice é muito simples efetuar a divisão, ou fatiamento, do SpriteSheet original, podendo ser utilizado modo automático ou grid.
2. Com o uso de Type Automatic, o próprio editor seleciona as áreas de cada quadro, enquanto, na opção Type Grid, é utilizada uma divisão fixa, sendo informado o tamanho da célula, offset e o espaçamento entre células.
3. Pode ser definido também o posicionamento do Pivot para cada figura parcial gerada, impactando diretamente nas operações de transformação, como a rotação. O posicionamento padrão do Pivot é no centro do quadro, mas podem ser utilizadas outras opções, como Top e Bottom Left.
4. Por fim, o método de divisão, no modo automático, assume valores como Delete Existing, Smart e Safe, sendo adotado como padrão a opção Delete Existing, que anulará quaisquer divisões anteriores e efetuará uma nova divisão, tendo como base as áreas com transparência da figura.
Para nosso exemplo, usaremos o Type Automatic e Delete Existing.
Após efetuar a divisão nos quadros constituintes, estes ficam acessíveis a partir do SpriteSheet, na área dos Assets do projeto.
Basta selecionar os quadros desejados e arrastar para a Scene View, o que causará a criação da animação e do controle de estados de forma automática.
O resultado poderá ser observado na Game View, como uma animação quadro a quadro, ao executar o jogo no botão Play.
· É fácil observar a associação do Sprite com o surgimento de uma animação, ou Animation, e um controlador de estados, ou Animator. Estes dois elementos devem ser observados para a correta exibição dos movimentos do Sprite em diferentes instantes do jogo.
· No momento em que arrastamos os quadros de um Sprite para a Scene View, é solicitado que seja dado um nome para o Animation, enquanto o Animator é gerado com o mesmo nome do SpriteSheet, podendo ser renomeado a qualquer instante pela janela de projeto ou na visão hierárquica.
· Os estados estarão associados à intenção de movimento ou situação do jogo, como pode ser observado muito claramente no jogo Sonic, em que o personagem pode estar parado, pulando, andando, correndo ou girando, e asanimações são alternadas para seguir o sentido e a velocidade do movimento de forma harmoniosa.
A sequência de exibição de quadros pode ser manipulada a partir da janela Animation, que apresenta inicialmente uma linha de tempo, relacionada ao Sprite, indicando os momentos em que ocorre a substituição de cada quadro.
Para efetuar modificações na animação ela deve estar selecionada na Hierarchy View.
Podem ser adicionados elementos de transformação na sequência com o uso de Add Property, e a escolha do tipo de transformação utilizada, como rotação (Rotation), o que gerará uma linha de tempo paralela, em que são adicionadas chaves com o uso do botão direito e opção Add Key.
Arrastando a sutil linha branca de referência para um instante da animação, pode ser adicionada uma chave e modificada a rotação do quadro, o que levará a uma interpolação linear dos valores a partir da chave anterior até a chave corrente, proporcionando a execução gradativa da rotação durante a animação.
Atenção
Importante observar que o fato de lidar com o plano de visualização XY nos faz restringir a rotação ao eixo Z.
As transformações lineares costumam ser mais utilizadas em animações 3D ou quando trabalhamos com Sprites constituídos de figuras segmentadas.
 
Exemplo Prático 
· Primeiro estado
Para exemplificar o uso dessas técnicas, vamos iniciar um novo projeto, ou uma nova cena no projeto que estiver utilizando para testes, e adicionar o fundo, no formato PNG, que será um Sprite no modo Single.
Após o posicionamento deste Sprite na cena, devemos adicionar um colisor do tipo Box Collider 2D, obtido com o uso de Add Component, Physics 2D, opção Box Collider 2D.
Inicialmente, o colisor envolverá toda a figura, mesmo a parte transparente, e deverá ser editado a partir do clique na opção Edit Collider, ficando restrito à área inferior do cenário.
A envoltória aparecerá como um retângulo verde, sendo editável a partir do arraste de seus limitadores, representados como pequenos quadrados.
Agora precisamos de um SpriteSheet adequado, com mais de uma configuração de movimento e no formato PNG, devido ao uso da transparência. Na Unity 3D, deverá ser configurado o modo Multiple e efetuada a divisão no Sprite Editor com Slice pelo método automático.
 
Segundo o mesmo processo descrito anteriormente, vamos arrastar a sequência de interesse para a cena, criando a animação (Animation) com o nome “Parado”, e renomeando o Animator como Personagem. Pode ser necessário corrigir a escala nas dimensões X e Y.
 
Com a animação inicial definida, vamos adicionar um Rigidbody 2D e um Box Collider 2D ao personagem, ambos os componentes acessíveis a partir de Add Component, opção Physics 2D.
Não serão necessários ajustes e, ao executar o projeto, poderemos ver o personagem cair até atingir a base do cenário, sendo impedido de cair indefinidamente devido à interação entre os colisores do personagem e do fundo.
· Segundo Estado
Agora vamos criar o segundo estado de nosso personagem, mas lembre-se de parar a execução do projeto para que as alterações tenham efeito.
Com o elemento Personagem selecionado na visão hierárquica, abra a janela Animation e crie outra animação, com o clique sobre o nome da atual e escolha de Create New Clip, como pode ser observado a seguir. O nome da animação será “Pulando”.
A nova animação estará inicialmente vazia. Devemos utilizar Add Property, seguido da escolha de Sprite Renderer, opção Sprite, clicando no sinal de adição localizado ao lado da propriedade. Essa operação fará com que seja definida uma linha do tempo com duas chaves iniciais.
Agora devemos substituir as chaves geradas pelos quadros de interesse, nos instantes em que precisam ocorrer, eliminando qualquer chave que tenha restado.
A operação é simples, com o arraste dos quadros desejados a partir da janela de projeto até a linha de tempo da animação, e uso da tecla Delete para remover as chaves indesejadas.
Com as animações prontas, podemos configurar a FSM e cuidar das transições entre estados. Para tal, deve ser selecionado Personagem na visão hierárquica e aberta a janela Animator.
Nessa janela, definiremos uma transição indo de Parado para Pulando e outra no sentido inverso. Além disso, precisamos definir um parâmetro do tipo Trigger, com o nome “Pulo”, que será utilizado como indutor da primeira transição, enquanto a segunda transição criada, de Pulando para Parado, estará sem restrições, mas com Exit Time marcado, de forma a voltar ao primeiro estado (Parado) após um tempo definido.
Nesse ponto, é possível efetuar um pequeno teste, executando o projeto e deixando a janela Animator aberta em paralelo.
Durante a execução, bastará selecionar o componente Personagem na hierarquia, o que já trará a indicação de qual estado está sendo executado, e clicar na trigger Pulo, o que fará mudar a animação, ao mesmo tempo em que a Máquina de Estados reflete todo o fluxo da mudança.
 
Contudo, ainda precisamos de algo interativo na execução de um jogo. Logo, é preciso um pouco de programação.
· Programação
Vamos adicionar ao objeto Personagem o script necessário com o uso de Add Component, opção New Script, adotando o nome “Pular”.
Em seguida daremos um duplo-clique sobre script criado na janela de projeto, abrindo o editor e modificando para o código seguinte.
Nesse código, é definida uma propriedade Forca, com valor inicial de 30, mas que pode ser ajustada pelo Inspector para a melhoria do movimento.
Quando a tecla de espaço é pressionada, o que é detectado com GetKey, a Trigger “Pulo” do componente Animator é setada, modificando a animação, e é aplicada a força definida ao componente Rigidbody2D na direção Y, contrapondo a gravidade durante um curto período, e causando a elevação do personagem.
Agora, já podemos testar o resultado deste exemplo, executando o projeto e apertando a tecla de espaço.
 
Atividades 3
5. Qual o tipo de Asset que pode ser caracterizado por sua utilização especificamente em um ambiente de jogo 2D?
a) Mesh
b) Sprite
c) Animator
d) Script
Gabarito:
Apenas o Sprite é específico para jogos 2D. Enquanto Mesh, ou malha, é específico para ambientes 3D, Animator, Script e Animation são utilizados tanto em ambiente 2D quanto 3D.
6. Em um projeto 2D, no ambiente da Unify 3D, ocorre a troca da animação do Sprite corrente de acordo com as transições de uma FSM, que é representada por um componente do tipo:
a) Animator
b) Sprite Renderer
c) Animation
d) Box Collider 2D
e) Rigidbody 2D
Gabarito:
a) Animator.
Considerações Finais
Conhecer técnicas e ferramentas para a construção de jogos 2D aumenta a empregabilidade do profissional, já que os jogos são usados para diversos fins, do entretenimento à educação.

Continue navegando