Buscar

teorico_III

Prévia do material em texto

Inserir Título Aqui 
Inserir Título Aqui
Jogos para 
Dispositivos Móveis
Projeto de Jogos
Responsável pelo Conteúdo:
Prof. Me. Rafael Oliveira Martins
Revisão Textual:
Prof.ª Dr.ª Selma Aparecida Cesarin
Nesta unidade, trabalharemos os seguintes tópicos:
• Introdução ao Projeto;
• Pré-Produção: Conceito e Design;
• Produção: Desenvolvimento;
• Configuração de Ambiente;
• Editor e Cenas;
• Recursos Gráficos e Sonoros;
• Scripts;
• HUD;
• Compilação;
• Pós-Produção: Distribuição e Manutenção.
Fonte: iStock/Getty Im
ages
Objetivos
• Aprender como projetar um jogo para dispositivos móveis, desde a fase de requerimento 
e conceito até a distribuição na loja de aplicativos;
• Utilizar a Game Engine Unity 3d para Android como ferramenta de prova de conceito;
• Compreender o processo de distribuição do jogo na loja de aplicativos Google Play.
Normalmente, com a correria do dia a dia, não nos organizamos e deixamos para o 
último momento o acesso ao estudo, o que implicará o não aprofundamento no material 
trabalhado ou, ainda, a perda dos prazos para o lançamento das atividades solicitadas.
Assim, organize seus estudos de maneira que entrem na sua rotina. Por exemplo, você 
poderá escolher um dia ao longo da semana ou um determinado horário todos ou alguns 
dias e determinar como o seu “momento do estudo”.
No material de cada Unidade, há videoaulas e leituras indicadas, assim como sugestões 
de materiais complementares, elementos didáticos que ampliarão sua interpretação e 
auxiliarão o pleno entendimento dos temas abordados.
Após o contato com o conteúdo proposto, participe dos debates mediados em fóruns de 
discussão, pois estes ajudarão a verificar o quanto você absorveu do conteúdo, além de 
propiciar o contato com seus colegas e tutores, o que se apresenta como rico espaço de 
troca de ideias e aprendizagem.
Bons Estudos!
Projeto de Jogos
UNIDADE 
Projeto de Jogos
Contextualização
A importância da realização de um projeto na prática na área de desenvolvimento de 
jogos para dispositivos móveis é importante para a grade curricular do aluno. O projeto 
acadêmico como um todo, contribui para o aprendizado do aluno sobre os pontos de 
vista de desenvolvimento e concepção de projetos.
No Mercado de jogos nacional, alguns fatores ainda atrapalham o crescimento, como:
 · Ausência de mão de obra qualificada;
 · Falta de portfólio específico;
 · Generalização de áreas de produção;
 · Investimento.
Um Projeto de Jogo na prática contribui para que o aluno esteja preparado para situa-
ções como exibição de portfólio, entrevista e até envio de projetos de escala internacional.
Sendo assim, ressalta-se que o Projeto de Jogo é importante para a formação do aluno 
em ambos os pontos, acadêmico e profissional.
6
7
Introdução ao Projeto
Como vimos nas Unidades anteriores, desenvolver jogos é uma atividade multidisci-
plinar e requer times com diversas habilidades para seu sucesso.
Existem casos em que desenvolvedores independentes possuem diferentes conheci-
mentos Em Arte, Programação e Design; consequentemente, conseguem distribuir um 
produto final, sem investimentos altos, como acontece em estúdios de maior porte.
Seguindo o conceito de pipeline de produção (KEITH, 2010), pode-se construir um 
projeto de jogo faseado em (1) conceito, (2) pré-produção, (3) desenvolvimento (produ-
ção) e (4) pós-produção.
Esse conteúdo reforça o contexto visto na Unidade anterior; porém, adota-se um ponto de 
vista prático para a produção do Projeto.
Para garantir que essa etapa linear funcione, pode-se pensar em responder às seguin-
tes perguntas:
1. Em qual mercado o jogo será distribuído?
2. Quem é a audiência?
3. Em quais plataformas meu jogo rodará?
4. Quem são meus competidores?
Para esta Unidade, trabalharemos num projeto 2d baseado num jogo clássico, o
Breakout (Atari, 1976). Utiliza-se a ferramenta Unity para a plataforma Android como 
forma de prova de conceito. Como resultado, espera-se que o Jogo funcione em qualquer 
dispositivo da plataforma e tenha um fluxo mínimo de menu, jogo e tela de fim de jogo.
Figura 1 – Breakout (Atari,1976)
Fonte: Wikimedia Commons
7
UNIDADE 
Projeto de Jogos
Espera-se que, mesmo com a execução de um Jogo de mecânica simples, o aluno pesquise e 
modifique o código e os recursos inseridos na aula para reforçar o conceito e se familiarizar 
com a engine.
Baseando-se nas perguntas feitas acima, são respondidas as perguntas na Tabela 
a seguir para início do Projeto e se pode executar as etapas que compõem a fase de 
pré-produção.
Tabela 1 – Requerimentos iniciais
Mercado Google Play
Audiência Todas as idades
Plataformas Android
Competidores Jogos casuais e clássicos
Pré-Produção: Conceito e Design
A etapa de pré-produção consiste em definir os requerimentos que o Jogo pre-
cisa para ir ao ar. Nesse processo, desenvolvedores, produtores, designers e outras 
áreas trabalham em conjunto, de modo que todos os requerimentos sejam validados 
(TSIKINAS, 2015).
Outra etapa importante é a documentação do Projeto. Do ponto de vista técnico e 
operacional, existem algumas formas de elaborar documentos que envolvem Arquite-
tura, Programação e camadas de Tecnologia envolvidas. Empresas maiores adotam o 
TDD (Technical Design Document).
Para projetos menores ou independentes, uma documentação simples pode ser reali-
zada; no entanto, é necessário clarificar o processo de programação para que o projeto 
tenha sucesso na fase de manutenção.
Na área de game design, o documento padrão utilizado é o GDD (Game Design Do-
cument). Esse documento contém informações como história, funcionamento de pro-
tótipo e níveis, mecânicas e economia do jogo, entre outros aspectos (SCHELL, 2008). 
Baseando-se no projeto da Unidade, pode-se responder algumas questões para auxi-
liar no processo de produção:
 · Definição de História: breakout não tem uma história elaborada em roteiro, 
vez que o objetivo é controlar uma plataforma que colide com uma bola para 
atingir blocos coloridos. Se a bola atingir um nível espacial inferior ao do 
jogador, a partida encerra;
 · Mecânica: a mecânica principal é controlar uma plataforma no eixo X. Ao 
iniciar o jogo, a bola colidirá com outros blocos e sofrerá ações de física, 
mudando sua trajetória;
8
9
 · Design de Nível: o jogo possui apenas uma imagem de fundo. O HUD é 
composto pela pontuação botão, com ação de pausar a partida. Elementos 
visuais do jogador (plataforma), bola e blocos podem ser customizados. 
Outro ponto é que o jogo original é executado em modo landscape (largura 
maior que altura). Dispositivos móveis funcionam em duas orientações: 
portrait e landscape;
 · Custos do jogo: os custos são definidos para a realização e a manutenção do 
jogo. Esse processo sofre variação por conta dos processos adotados pelos 
desenvolvedores. Empresas de maior porte utilizam mais recursos, pois pos-
suem times maiores e mais caros. Desenvolvedores menores podem estimar 
o valor por hora ou valor investido (interno ou externo).
Pode-se criar, também, protótipos desenhados no papel, de modo que sirvam de 
referência de funcionamento e visual para designers e programadores. Apesar de parecer 
uma prática ultrapassada, desenvolvedores de jogos continuam utilizando práticas mais 
manuais para desenhar processos e mecânicas, uma vez que se torna o meio mais 
rápido de exposição de ideias.
Independente da complexidade da mecânica de seu jogo, tenha sempre em mente o 
objetivo de tornar o jogo divertido. Muitos dos jogos de maior sucesso para dispositivos 
móveis possuem mecânicas extremamente simples (Por exemplo: Timberman).
Produção: Desenvolvimento
Na etapa de produção, deve-se avaliar o conteúdo gerado no conceito, design e nas 
documentações para o início da criação do jogo de fato. Essa etapa, na maioria dos casos, 
exige mais tempo e esforço, vez que é exigido trabalho de todas as áreas, principalmente 
as de Arte, Design e Programação. Em jogos mais simples ou Empresas de menor porte,
é comum encontrarprofissionais generalistas ou que executam diversas funções ao
mesmo tempo.
O tutorial completo do projeto de jogo está disponível dentro da pasta da Unidade 3.
Configuração de Ambiente
Para o Projeto de Jogo da Unidade, deve-se instalar a última versão da engine Unity 
3d. Dentre as opções de instalação, é necessário marcar a opção de pacote Android, 
para que a engine instale os arquivos necessários para a plataforma. Outra instalação 
necessária é o Android SDK, que acompanha o Android Studio e contém os arquivos 
necessários para a compilação e a geração da camada nativa do projeto para a platafor-
ma do Google.
9
UNIDADE 
Projeto de Jogos
A Tabela a seguir informa os recursos necessários e seus respectivos links:
Tabela 2 – Requerimentos mínimos de ambiente para o projeto
Unity 3D Game Engine https://goo.gl/a6oKRb
Java Kit de Desenvolvimento Java https://goo.gl/S7mzmt
Android SDK Kit de desenvolvimento do Android https://goo.gl/eiJ2kJ
Android NDK r13b Configuração nativa https://goo.gl/8CKK6Z
Visual Studio Code IDE para programação https://goo.gl/9rvdWc
Para entender de forma ampla a configuração do ambiente Android e tirar dúvidas, acesse 
o endereço: https://goo.gl/5QzGCj
Após a configuração do ambiente e a execução da engine, pode-se criar o Projeto 
com a configuração 2D. Habilitar o Unity Analytics é opcional, podendo ser habilita-
do posteriormente.
Figura 2 – Criação de projeto e confi guração inicial
Editor e Cenas
Com o Projeto criado, são necessárias algumas alterações nas configurações iniciais. 
Por padrão, a Unity vem configurada na plataforma do Sistema Operacional (Windows/
Mac/Linux).
Para o Projeto da Unidade, deve-se alterar a plataforma para Android e realizar as 
mudanças para que a engine consiga compilar e executar o Projeto.
O menu Build Settings, acesso por meio da opção File do menu principal, exibe as 
plataformas disponíveis. As configurações extras de cada plataforma são acessadas por 
meio da opção Player Settings.
10
11
No menu Preferences/External Tools, é necessário informar à engine os caminhos 
de instalação das ferramentas da Tabela 2 (GODBOLD, 2016).
Fugira 3 – Confi gurações de plataforma e build
Para que tenha um funcionamento adequado em dispositivos móveis, a cena preci-
sa ser adaptada (resolução ou aspecto). Na aba Game, é possível definir configurações 
pré-definidas de resoluções ou criar sua própria resolução (mantendo ou não o aspecto 
da tela).
Para dispositivos Android, recomenda-se utilizar os padrões de aspecto 16:9, 
16:10 ou resolução 1280 x 800. Para o projeto da Unidade, a orientação do 
jogo definida é Landscape.
O mapeamento dos objetos de jogo na hierarquia do Projeto é definido pela 
imagem a seguir:
Fugira 4 – Hierarquia de objetos do projeto Breakout
Seguindo o material da Unidade e a documentação de configuração e implementação 
do Projeto, deve-se finalizar a tela de jogo como mostra a imagem a seguir.
11
UNIDADE 
Projeto de Jogos
Fugira 5 – Cena de jogo concluída
Outras cenas podem ser criadas de modo que o jogo possua um fluxo adequado. 
Os métodos de transição de tela não variam nas plataformas mobile, portanto, o 
uso da classe SceneManagement é recomendado para realizar as transições.
Crie novas cenas para o Projeto como Menu, Tela de Game Over, Ranking ou outras telas 
que compõem a sua regra de negócio.
Recursos Gráficos e Sonoros
Os recursos gráficos presentes no Projeto são imagens 2d e também componentes da 
própria engine. Recursos 3d, shaders e materiais mais complexos não são necessários, 
mas a utilização deles fica a critério do Projeto.
Estude a documentação da engine e os materiais complementares para fazer modificações 
no projeto como modos de jogo, suporte a 3d e utilização de shaders, entre outros.
Os elementos para criação da cena são: (1) imagem de fundo para menu e tela de 
jogo, (2) imagem do racket (Jogador), (3) imagens de blocos, (4) imagem para a bola e 
(5) imagens para as paredes laterais e superior (colidíveis).
Para suprir os recursos sonoros, utilizam-se dois efeitos: (1) para a colisão da bola 
com o jogador e (2) um efeito para representar o fim do jogo.
12
13
Tabela 3 – Mapeamento de recursos utilizados no Projeto
Nome Recurso Nota
background.png Gráfico Tela de fundo do menu e cena de jogo
bat_orange.png Gráfico Jogador
ball_red.png Gráfico Bola que colide com o jogador, cenário e blocos
brick_color_small.png Gráfico Blocos (adversários) que colidem com a bola no cenário
brick_red.png Gráfico
Imagem de suporte para 
construção das paredes laterais 
e superiores
Game_ended.wav Sonoro (FX) Efeito sonoro para fim de jogo
Ball_hit.wav Sonoro (FX) Efeito sonoro para colisão do jogador com a bola
Em jogos casuais mais simples, não são necessárias modificações nas imagens e spri-
tes do jogo, assim como otimizações de texturas (a não ser que o desenvolvedor deseje 
fazer alterações específicas).
Para jogos 3d ou jogos 2d que exigem a utilização de muitas imagens e texturas 
de dimensões maiores, a Unity oferece um recurso para compressão e qualidade das 
imagens. Para acessá-lo, basta clicar na imagem no Editor e alterar as configurações de 
compressão na aba Inspector, de modo que o tamanho máximo de textura reduza o 
tamanho do arquivo em memória.
Fugira 6 – Compressão de texturas para a plataforma Android
As sprites adicionadas ao projeto já possuem conversão para o modo Sprite 2d; 
portanto, é necessário apenas arrastar seu conteúdo para um GameObject, de modo 
que seja exibido na cena de jogo.
A mesma mecânica funciona com os arquivos de efeito sonoro e os componentes de 
áudio (AudioClip).
13
UNIDADE 
Projeto de Jogos
Scripts
Como visto anteriormente, os scripts são os arquivos de código-fonte que compõem 
os objetos de Jogo na engine. Por terem uma abordagem diferente da programação 
convencional, eles podem ser adicionados a componentes de qualquer tipo.
Após o mapeamento dos elementos do Jogo, pode-se definir as entidades que inte-
ragem com scripts, assim como a implementação de controle e também da física que 
compõe a mecânica principal.
Tabela 4 – Entidades (scripts) adicionadas no projeto
Classe Utilidade
Racket.cs Controla o jogador
Ball.cs Controla a bola
Block.cs Controla os blocos
ScoreController.cs Gerenciador de pontos
GameManager.cs Gerencia estados do jogo
Para dispositivos móveis, a implementação do controle é realizada através da tela de 
toque (diferente da implementação original). A classe Racket controla o jogador e recebe 
os eventos de entrada do usuário para se mover na tela. 
Além disso, as classes Racket, Ball e Block possuem dois objetos de colisão 2d (Box 
Collider 2d e Rigid body 2d) e são esses componentes que fazem com que a velocidade 
seja aplicada no jogador. 
O trecho de código a seguir é específico para plataformas móveis (utiliza controle de 
toque ao invés de teclado/mouse):
if (Input.touchCount > 0){
 foreach (Touch touch in Input.touches) {
 if (touch.phase == TouchPhase.Moved && 
touch.position.x <= Screen.width / 2) {
 GetComponent<Rigidbody2D>().velocity 
= Vector2.right * -1 * speed;
 }
 if (touch.phase == TouchPhase.Moved && 
touch.position.x > Screen.width / 2){
 GetComponent<Rigidbody2D>().velocity 
= Vector2.right * 1 * speed;
 }
 if (touch.phase == TouchPhase.Ended){
 GetComponent<Rigidbody2D>().velocity 
= Vector2.right * 0 * speed;
 }
 }
}
14
15
HUD
O HUD (Heads Up Display) é a interface primária entre o jogador e o jogo; e um 
ponto a se considerar, principalmente, em jogos móveis é a apresentação e a experiên-
cia desse componente em telas que se adaptam (THEVATHASAN, 2014).
Em jogos como estratégia, simuladores e RPGs, mesmo em versões para dispositivos 
móveis, é comum encontrar diversas opções contidas no HUD, de modo que o jogador 
tenha todas as informações necessárias para ter progresso no jogo.
Em jogos casuais, as informações, nesse tipo de interface, precisam ser claras e 
simples, como pontuação, tempo, número de vidas ou barra deenergia. Elementos 
adicionais podem atrapalhar o jogador e com isso, fazê-lo desistir do jogo rapidamente.
Em um jogo como Breakout, as informações necessárias para o jogador no HUD 
são pontuação, número de vidas (caso exista limite) e um botão de pausa, de modo que 
o jogador possa parar a partida.
O posicionamento dos elementos do HUD em um jogo em modo retrato, é colocado 
na parte de cima da tela, para que o usuário consiga visualizar seu progresso. Elementos 
posicionados na parte debaixo da tela podem ser ofuscados pela própria mão do usuário 
ao segurar o dispositivo.
Um protótipo básico do jogo pode ser útil não só do ponto de vista de design, mas 
também para se visualizar possíveis ações.
Fugira 6 – Protótipo básico do jogo. Em vermelho, destaque para os elementos de HUD
15
UNIDADE 
Projeto de Jogos
Na cena de jogo, um objeto do tipo Canvas deve ser adicionado para o suporte de 
elementos de interface. A representação da pontuação e do número de vidas pode ser 
feita por meio de um componente Text, enquanto o botão de pausa utiliza o componen-
te Button, que possui evento de clique, troca de estados e transformações.
Como mencionado, o script ScoreController.cs é responsável por atualizar o componente 
de texto de pontuação e a classe GameManager.cs controla o estado de pausa e resumo do 
botão Pausar.
Compilação
No processo de compilação, deve-se, por meio do menu Build Settings, acessar a 
opção Player Settings para a definição de requerimentos da plataforma Android. 
Entre os requerimentos, deve-se considerar:
Tabela 4
Orientação Escolher a orientação entre Portrait e Landscape.
Ícone Ícones para as resoluções presentes no Android (hdpi, xhdpi, xxhdpi, xxxhdpi).
Identificação Nome do pacote e versionamento. (Novas versões distribuídas na loja precisam de incremento no Version Code).
Device Filter Escolha de arquiteturas de aparelhos Android como ARMv7 e x86.
Install Location A opção Prefer External faz com que o jogo seja instalado preferencialmente na memória externa.
Scripting Define Symbols Habilita macros para compilar código específico (exemplo: Google Game Services).
Otimização Área para definir assets que podem ser carregados previamente na memória, compressão de texturas e meshes de colisão.
Publicação Criação de arquivo para assinatura de build (Keystore: só é possível distribuir na loja arquivos assinados).
Para compreensão da área de Player Settings em qualquer plataforma suportada, acesse: 
https://goo.gl/CWKHu4
No menu Build Settings, a ação Build ou Build and Run deve gerar um APK como 
arquivo de saída. Com um dispositivo ligado à máquina, a Unity realiza o processo de 
compilação e instala o arquivo no aparelho. Também é possível instalar o APK manu-
almente, utilizando o comando “adb Install nome_arquivo.apk” por meio da linha de 
comando. O arquivo final deve totalizar entre 20 e 30 megabytes.
Não são necessárias alterações nos métodos de compressão do arquivo final. Caso o 
projeto utilize interfaces como a L2CPP, o processo de compilação otimizará o arquivo 
final. Os métodos de compressão da Unity podem auxiliar na otimização do tamanho de 
arquivo; no entanto, existem considerações do ponto de vista de performance.
16
17
Explore a documentação na área de compilação para Android para compreensão do 
processo de otimização. Disponível em: https://goo.gl/Q8nQsJ
Pós-Produção: Distribuição e Manutenção
A fase de distribuição compõe duas etapas de finalização do Projeto: a distribuição 
e a manutenção. A primeira é a validação do processo de desenvolvimento, de modo 
que o projeto é exposto para usuários finais por meio de algum meio de venda (Lojas 
de aplicativos).
A segunda, não menos importante, deve ser executada em períodos de tempo pré-
-definidos, para que o Projeto se mantenha estável e novas funcionalidades sejam apre-
sentadas. Bons exemplos de manutenção de jogos móveis são vistos em Bejeweled 
Stars (POPCAP EA, 2017) e a franquia Candy Crush (KING, 2012).
Ambos os jogos são atualizados semanalmente, trazendo novas fases, funcionalida-
des, correções de erros e otimizações.
O passo inicial é se inscrever numa conta do Google Play Developer e pagar a inscri-
ção anual (ou perpetual, de acordo com a conta). Uma vez que o processo foi validado, o 
usuário é introduzido ao painel de desenvolvimento, em que pode criar e gerenciar suas 
aplicações, cadastrar serviços de jogos como placares e conquistas e também checar 
seus ganhos com aplicações pagas.
Fugira 8 – Painel de desenvolvimento do Google Play
17
UNIDADE 
Projeto de Jogos
Ao criar um aplicativo ou jogo, alguns passos são mandatórios para que o produto 
seja aprovado ou pelo menos tenha o status mínimo de lançamento.
Dentre os requerimentos obrigatórios, pode-se destacar:
 · Listagem (Store Listing): procedimento para preencher informações como 
nome, descrição, imagens do aplicativo, vídeos, políticas de privacidade e 
textos promocionais;
 · Rating: para liberar essa funcionalidade, o desenvolvedor precisa enviar uma 
versão mínima para o painel e, dessa forma, consegue avaliar a que faixa 
etária seu jogo se dirige; 
 · Precificação: na aba de precificação, o desenvolvedor deve informar se
a aplicação é gratuita ou paga, se possui propaganda e em quais países
será distribuída;
 · Game Services: caso o jogo possua integração com placares, conquistas e 
outros serviços do Android, a aba de Game Services precisa ser preenchida 
de forma semelhante à listagem da loja, adicionando nome do placar e o 
mínimo de cinco conquistas desbloqueáveis.
Em alguns países, a faixa etária sofre variação, assim como seu conteúdo.
Com todos os processos validados, o desenvolver pode distribuir o jogo na área App 
Releases. Essa área pode ser acessada também para a criação de testes pré-lançamento, 
como fases Alfa e Beta.
Grupos de teste também podem ser criados, de modo que se tenha feedback de tes-
tadores da mesma Empresa, pessoas conhecidas ou até mesmo pessoas envolvidas em 
Relações Públicas (para divulgação).
Fugira 9 – Área para lançamentos (App Releases)
Para compreender todo ecossistema e processo de distribuição do Google Play, acesse a 
documentação em: https://goo.gl/GubtoU
18
19
Material Complementar
Indicações para saber mais sobre os assuntos abordados nesta Unidade:
 Sites
Curso – Udemy Unity 2D
https://goo.gl/m3ScgJ
Unity
https://goo.gl/ULYtSd
 Livros
Mastering Unity 2D Game Development
GODBOLD, A. Mastering Unity 2D Game Development. 2.ed. Packt Publishing, 2016;
Cocos2d-X by Example Beginner´s Guide
ENGELBERT, R. Cocos2d-X by Example Beginner´s Guide. Packt Publishing, 2017.
Design and Development of a Game Production Control Center
TSIKINAS, S. Design and Development of a Game Production Control Center. Universiteit 
Utrecht/Game and Media Technology, 2015.
19
UNIDADE 
Projeto de Jogos
Referências
ENGELBERT, R. Cocos2d-X by Example Beginner´s Guide. Packt Publishing, 2017.
GODBOLD, A. Mastering Unity 2D Game Development. 2.ed. Packt Publishing, 2016.
KEITH, C. Agile Game Development with Scrum. The Addison Wesley Series, 2010.
SCHELL, J. The Art of Game Design. CRC Press, 2008.
TSIKINAS, S. Design and Development of a Game Production Control Center. 
Universiteit Utrecht/Game and Media Technology, 2015.
20

Continue navegando