Baixe o app para aproveitar ainda mais
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
Compartilhar