Implementação de um Motor de Jogos de Carta para a Plataforma Android Massami Welington Kamigashima Orientador: Paulo César Rodacki Gomes
Roteiro - Introdução - Objetivos - Fundamentação teórica - Jogos de carta - Motor de jogos - A plataforma Android - Recursos gráficos - Trabalhos correlatos - Desenvolvimento - Conclusões - Extensões
Introdução Estima-se que para 2011 o lucro da indústria de jogos alcance aproximadamente 74 bilhões de dólares. Existem jogos para todas as idades e gostos. Aumento na demanda por jogos para dispositivos móveis e para mídias sociais.
Introdução Tabela de venda de smartphones no terceiro semestre de 2011: Operating System 3Q11 Units 3Q11 Market Share (%) 3Q10 Units 3Q11 Market Share (%) Android 60,490.4 52.5 20,544.0 25.3 Symbian 19,500.1 16.9 29,480.1 36.3 ios 17,295.3 15.0 13,484.4 16.6 Research In Motion 12,701.1 11.0 12,508.3 15.4 Bada 2,478.5 2.2 920.6 1.1 Microsoft 1,701.9 1.5 2,203.9 2.7 Others 1,018.1 0.9 1,991.3 2.5 Total 115,185.4 100 81,132.6 100 Fonte: Gartner (Novembro, 2011)
Objetivos disponibilizar um gerador de cartas de um baralho; disponibilizar funções para a distribuição das cartas entre o(s) jogador(es); disponibilizar recursos gráficos para a manipulação de cartas pelo cenário; determinar um conjunto limitado de constantes para auxiliar na implementação do protótipo; implementar um protótipo de jogo utilizando o motor desenvolvido; disponibilizar os conjunto de cartas do baralho padrão francês e suas variantes.
Jogos de carta O baralho tradicional francês possui 52 cartas O baralho espanhol utiliza 40 cartas, porém algumas variações utilizam 44 cartas Cada naipe possui um significado que representa as classes sociais do século XIV
Motor de jogos Um motor de jogos pode ser um aplicativo ou um conjunto de bibliotecas para simplificar o desenvolvimento de um jogo; As funcionalidades podem variar de um motor para outro;
A plataforma Android
A plataforma Android Sugere-se algumas diferenças no conceito tradicional do Java; Permite integração com algumas bibliotecas escritas em C/C++; Sistema operacional multitarefa;
A plataforma Android Existem quatro componentes principais disponíveis para serem utilizados numa aplicação: Activities Services Content providers Broadcast receivers
Recursos gráficos Drawables Canvas OpenGL ES
M3GE (Pamplona,2005)
MJ3I (Takano, 2009)
Blender Game Engine (BGE)
Havok
Requisitos funcionais permitir alterar regras de jogo durante a implementação de cada jogo; permitir alterar a velocidade dos movimentos das cartas na cena; permitir configurar a pontuação do jogo; permitir definir o conjunto de cartas a ser utilizado no protótipo de jogo; permitir definir a ordem das cartas do protótipo; permitir definir o modo de distribuição inicial e durante a partida; permitir a movimentação e manipulação das cartas pelo jogador;
Implementação - ferramentas Android SDK Eclipse IDE GT-I9100
Implementação - XML R.class AndroidManifest.xml Layout Resources
Implementação - Desenho Views Loop de desenho Utilização de imagens Animação das cartas
Implementação - Interação Componentes pré-definidos onbackpressed() ontouchlistener() oncreateoptionsmenu(menu)
Fonte: Android Developers (2011)
Desafios Adaptação às restrições da plataforma; Devida a quantidade de bibliotecas disponíveis, encontrar as mais adequadas para a situação; Buscar exemplos práticos para melhor entendimento do uso de certas classes;
Testes
Testes
Resultados e discussões Os objetivos foram alcançados; A preocupação com a restrição de recursos ainda está presente; As APIs do Android trouxeram um grande avanço para o desenvolvimento de aplicativos em relação ao J2ME; A experiência do usuário ainda é a maior prioridade dentro do jogo.
Conclusões A funcionalidade de algumas classes só são realmente descobertas com a prática; As APIs do Android facilitam a integração com os recursos do dispositivo; A velocidade apresentada em emuladores ainda é bastante inferior à velocidade em um dispositivo real.
Extensões Módulo multiplayer Suporte a conexões em rede e base online Torná-lo multiplataforma
Implementação - Código
Obrigado!