Proposta para o trabalho de conclusão de curso


PROGRAmação JAVA para android



Baixar 0.57 Mb.
Página3/3
Encontro07.10.2019
Tamanho0.57 Mb.
1   2   3

PROGRAmação JAVA para android


Como anteriormente citado, as aplicações desenvolvidas para a plataforma Android são escritas na linguagem Java. Entretanto, para se desenvolver estes aplicativos, é necessária a utilização do Android SDK, responsável por compilar o código e arquivos do projeto e armazená-los em um único “pacote”, um arquivo com extensão .apk que será responsável pela instalação da aplicação no dispositivo (ANDROID DEVELOPERS, 2011b).

Pela preocupação na utilização de recursos nos dispositivos móveis, ao se tratar de performance nas aplicações para o Android, na qual pode implicar diretamente no consumo de bateria que a aplicação utilizará, segundo os desenvolvedores do Android, duas regras básicas devem ser seguidas: “Não faça trabalho desnecessário” e “Evite alocar memória se possível”.



Com base nas regras citadas acima, os desenvolvedores do Android citam algumas formas de reduzir a utilização de recursos do aplicativo (ANDROID DEVELOPERS, 2011c):

  1. evitar criar objetos desnecessários: variáveis temporárias de curta utilização devem ser evitados, pois uma menor quantidade de objetos significa chamadas menos freqüentes do Garbage Collector (GC), o que impacta diretamente na experiência do usuário;

  2. preferir o uso de métodos estáticos a virtuais: o uso de métodos estáticos tornam-nos de 15% a 20% mais rápidos;

  3. evitar o uso de getters e setters: a utilização destas funções são bastante difundidas na programação orientada a objetos, porém a chamadas destas funções de um alto custo, muito maiores que a chamada direta de suas respectivas variáveis. É aceitável o uso das funções ao utilizar chamadas entre classes. Porém dentro de uma mesma classe, a variável deve ser sempre acessada diretamente, pois além do consumo de memória, o acesso a variáveis diretamente é três vezes mais rápida, ou até 7 vezes em sistemas com Just-In-Time4 (JIT);

  4. utilizar static final para constantes: a utilização do parâmetro final facilita o acesso ao valor da constante, pois ao invés de consultar uma tabela de constantes, o valor é diretamente acessado. Esta regra se aplica somente para tipos primitivos como int e String;

  5. utilizar o loop For otimizado: aconselha-se o uso de for-each na interação de vetores, pois eles podem tornar o loop até três vezes mais rápidos;

  6. conhecer e usar as bibliotecas: métodos da biblioteca do sistema podem ser melhores que o melhor método produzido pelo JIT para um equivalente escrito manualmente em Java.

Os aplicativos desenvolvidos para o Android contêm quatro principais componentes (ANDROID DEVELOPERS, 2011c):

  1. atividades (activities): representa uma tela única de interface com o usuário. Cada atividade é independente das outras e outra aplicação pode chamá-la se a atividade permitir;

  2. serviços (services): representa um componente sem interface com o usuário que roda ocultamente para executar processos de longa duração ou remotos;

  3. provedores de conteúdo (content providers): gerenciador de dados da aplicação, controlando seu acesso ao banco de dados e se necessário, alterar dados do usuário;

  4. receptores de transmissão (broadcast receivers): este componente gerencia as notificações e alertas da aplicação, é bastante utilizado para comunicar outros aplicativos quando uma requisição for concluída.
    1. Motor de jogos


Segundo Ward (2008), um motor de jogos, também conhecido como game engine, é uma abstração de detalhes como as tarefas comuns a jogos, como renderização, física, entrada de dados, interface gráfica com o usuário e até inteligência artificial. Porém, o conteúdo, a modelagem e textura, o significado atrás das entradas, colisões e a interação dos objetos no ambiente são os componentes que definem o jogo.

O termo game engine originou durante a década de 90 com a popularização de jogos 3D de tiro em primeira pessoa (First Person Shooter - FPS) como Doom e Quake. Devido suas arquiteturas consistirem componentes bem definidos e separados do núcleo do jogo (renderização, tratamento de colisões ou áudio) da arte, regras de jogo e experiência de jogo, permitiram que seus desenvolvedores criassem novos produtos alterando elementos do mundo e as regras de jogo com mínimas alterações no motor, marcando desta forma o início da “comunidade de mods”. Esta comunidade é composta por grupos de jogadores e pequenos estúdios que constroem novos módulos (mods) ou jogos utilizando ferramentas disponibilizadas pelos desenvolvedores do jogo (GREGORY; LANDER, 2009, p.11-12).

Uma motor de jogos pode ser desenvolvido generalizando partes da implementação para qualquer gênero de jogo, inclusive jogos multiplataforma. Porém, vários autores como Gregory e Lander (2009) afirmam que para fins de otimização e melhor resultado, seja definida uma plataforma e um gênero específico para o motor.

Atualmente são encontrados na internet inúmeros motores de jogos disponíveis gratuitamente ou licenciados por seus desenvolvedores para diversos fins. Não necessariamente específicas para jogos, estas engines também podem ser encontradas na produção de animações e filmes, além de simuladores para fins educativos, militares entre outros. Na maior parte dos casos, costuma-se encontrá-las em forma de Application Programming Interface (API) ou SDKs, e principalmente no caso das gratuitas, é comum encontrar comunidades de desenvolvimento através de fóruns nas quais desenvolvedores podem sugerir e compartilhar novos recursos, melhorias ou corrigir problemas encontrados.


    1. padrões de jogos de CARTAS


Segundo Schuytema e Manyen (2005, p. 92), um jogo é uma atividade composta por um conjunto de ações limitadas a um conjunto de regras, direcionadas para um determinado fim. Estas regras servem para delimitar e contextualizar as ações do jogador, além de criar situações de desafio e oposição ao jogador. Os jogos de cartas, muitas vezes associados como “jogos de azar”, também compartilham um conjunto de regras com o intuito de se alcançar um fim. Atualmente são encontrados vários jogos de cartas com suas próprias regras e cartas personalizadas, porém, este documento tratará somente de jogos nas quais são utilizadas as cartas existentes no baralho francês.

O baralho francês, assim como o espanhol, é composto por quatro conjuntos de cartas denominados naipes: Paus (♣), Espadas (♠), Copas (♥) e Ouros (♦). Cada naipe é composto por um conjunto de 13 cartas, contendo os valores de 2 a 10, e as cartas: Ás (A ou Ace), Valete (J ou Jack), Dama (Q ou Queen) e Rei (K ou King), que representam os valores 1,11,12 e 13, respectivamente. Existem, porém, alguns jogos onde há uma seqüência diferente de valores e naipes que ainda podem conter variações dependendo da regionalidade dos jogadores, como por exemplo, o jogo de truco, que possui regras diferentes em cada região do Brasil e em outros países onde é jogado. Ainda há regras como as do jogo de canastra que permite o uso do Ás como o décimo quarto valor (após o K), porém se esta carta for utilizada para este fim, não poderá ser utilizada para iniciar uma nova seqüência.


    1. trabalhos correlatos


Nesta seção são descritos quatro trabalhos correlatos relacionados ao desenvolvimento de motores de jogos para Android, quais sejam: Motor de jogos 3D para o iPhone OS (MJ3I) apresentado por Takano (2009) , Mobile 3D Game Engine (M3GE), desenvolvido por Pamplona (2005), Blender Game Engine, disponibilizado pela Blender Foundation (VELDHUIZEN, 2011) e a Havok, criado pela empresa de mesmo nome (HAVOK INC, 2011).
      1. MJ3I


Este projeto desenvolvido por Takano (2009), teve como foco o desenvolvimento de um motor de jogos para o iPhone com foco na construção de um ambiente 3D utilizando o Open Graphic Library for Embedded Systems (OpenGL ES), gerenciamento de grafos de cena, importação de arquivos 3D e tratamento de colisões para abstrair a implementação de rotinas básicas necessárias para um jogo em 3D. O MJ3I, assim como este projeto, não implementou rotinas mais complexas de cálculos de física, sistemas de partículas ou áudio.
      1. M3GE


Pamplona (2005) definiu em seu projeto, a elaboração de protótipo de um motor de jogos 3D para dispositivos móveis utilizando um algoritmo leitor de arquivos de modelo 3D e montagem visual do cenário ao jogador, implementação de câmeras de visualização e movimentação do personagem do cenário. Para o desenvolvimento do projeto, foi utilizada a plataforma Java 2 Micro Edition (J2ME), uma das extensões do Java para sistemas embarcados, com o intuito de além de criar uma ferramenta de desenvolvimento para jogos, testar a portabilidade e velocidade de processamento onde o jogo gerado seria instalado.

Diferente da abordagem utilizada por Pamplona (2005), a plataforma Android utiliza a linguagem Java tradicional no lugar do J2ME, pois os dispositivos atuais apresentam uma significativa melhoria em seus recursos, além da utilização de uma máquina virtual otimizada para este fim. Porém, a preocupação com o consumo de recursos ainda existe e afeta diretamente na durabilidade da bateria do dispositivo.


      1. Blender Game Engine (BGE)


O BGE, desenvolvido pela Blender Foundation, é uma ferramenta gratuita open source, escrita na linguagem C++, parte da ferramenta gráfica Blender, sob a licença da GNU GPL5, que contém ferramentas de produção gráfica em 2 e 3D, manipulação de grafos de cena, áudio, tratamento de física e colisão, e permite a utilização da linguagem Python para a geração de scripts (VELDHUIZEN, 2010a). O BGE utiliza um plugin do motor de física Bullet para gerenciar a detecção de colisão, a dinâmica de corpos rígidos e maleáveis de objetos 3D criados na ferramenta. Este motor, também utiliza a biblioteca Open Audio Library (OpenAL) para gerenciar os efeitos sonoros do ambiente. A Figura 2 ilustra a interface do BGE.

Fonte: Veldhuizen, (2010b).

Figura 2 - Interface do BGE

      1. Havok


Este motor proprietário tem sua fama pela sua utilização multiplataforma em títulos de sucesso como Soul Callibur IV (PlayStation 3, Xbox 360), Spore (Personal Computer - PC) e StarCraft II (PC) entre outros (HAVOK INC, 2011a).

O motor é composto por sete módulos de ferramentas (HAVOK INC, 2011b), sendo eles a Havok AI, Animation, Behavior, Cloth, Destruction, Physics e Script, sendo o Havok Animation e o Physics os mais utilizados pelos jogos. Cada módulo foi projetado para atender a uma necessidade específica de um jogo 3D, abstraindo cálculos complexos necessários para seu desenvolvimento.



Fonte: Havok Inc (2011c).



Figura 3 - Interface do Havok Physics
Embora esta ferramenta seja paga, ela também é distribuída gratuitamente com os módulos Physics e Animation em parceria com a Intel, para desenvolvedores sem fins comerciais para o Windows.
  1. Requisitos do SISTEMA a ser desenvolvido


O motor para o desenvolvimento de jogos para Android deverá:

  1. permitir definir o conjunto de cartas a ser utilizado no protótipo de jogo (Requisito Funcional - RF);

  2. permitir definir a ordem das cartas do protótipo (RF);

  3. permitir definir o modo de distribuição inicial e durante a partida (RF);

  4. permitir a movimentação e manipulação das cartas pelo jogador (RF);

  5. utilizar a linguagem de programação Java para Android (Requisito Não-Funcional – RNF);

  6. utilizar o ambiente Eclipse Integrated Development Environment (IDE) como ambiente de desenvolvimento (RNF);

  7. utilizar o Android SDK como ambiente de testes (RNF).



  1. CONsiderações finais


Devido o desenvolvimento de aplicativos para a plataforma Android ser relativamente recente, a necessidade de criar novos recursos para a criação de novos produtos para esta plataforma ainda é relevante. Isto se deve ao crescente avanço na tecnologia dos dispositivos móveis que estão cada vez mais unindo funções de equipamentos que antes haviam somente uma função específica em um único aparelho.

Este projeto terá como meta o desenvolvimento de um motor que permita aos desenvolvedores de jogos da plataforma uma abstração de tratamentos entre os principais elementos de um jogo de cartas. Para isso será utilizado o conceito de orientação a objetos definido para a linguagem Java, e será testado dentro de um simulador e um dispositivo real.

Para se utilizar este motor, deverão ser definidas inicialmente, as configurações utilizadas pelo jogo, como o conjunto de cartas a serem utilizadas, sua seqüência de cartas, a ordem de prioridade das cartas, entre outras regras a serem definidas durante o desenvolvimento do projeto.

Em relação aos trabalhos correlatos, enquanto os trabalhos acadêmicos citados têm foco principal na abstração gráfica para o desenvolvimento, este projeto compartilhará somente uma pequena parcela destes conceitos, pois este terá um foco maior no gerenciamento da estrutura dos jogos. Entretanto, assim como Pamplona (2005), este trabalho terá uma maior preocupação com a forma como os recursos serão utilizados pela linguagem Java, visando que os dispositivos alvos têm uma quantidade limitada de recursos, enquanto quando desenvolvidas para desktop, estas preocupações são menos visíveis.

Da mesma forma na qual a plataforma iPhone utilizada por Takano (2011) disponibiliza recursos de Interface Humano-Computador (IHC), como sensores e multi-toque, os eventos relacionados a toque serão utilizados neste projeto utilizando os recursos disponíveis na plataforma Android.

Referências bibliográficas

ANDROID DEVELOPERS. What is Android? [S.l.], 2011a. Disponível em: . Acesso em: 15 mar. 2011.

______. Application fundamentals. [S.l.], 2011b. Disponível em: . Acesso em: 15 mar. 2011.

______. Designing for performance. [S.l.], 2011c. Disponível em: . Acesso em: 17 mar. 2011.

______. Publishing on Android market [S.l.], 2011d. Disponível em: . Acesso em: 17 mar. 2011.

______. Dalvik JIT. [S.l.], 2010. Disponível em: . Acesso em: 17 mar. 2011.

GREGORY, Jason; LANDER, Jeff. Game engine architecture. Wellesley: A K Peters, 2009.

HAVOK INC. Available games. [S.l.], 2011a. Disponível em: . Acesso em: 22 mar. 2011.

______. Havok product Family. [S.l.], 2011b. Disponível em: . Acesso em: 26 mar. 2011.

______. Product screenshots. [S.l.], 2011b. Disponível em: . Acesso em: 26 mar. 2011.

PAMPLONA, Vitor F. Um protótipo de motor de jogos 3D para dispositivos móveis com suporte a especificação móbile 3D Graphics API for J2ME. 2005. 83 f. Trabalho de Conclusão de Curso (Bacharelado em Ciências da Computação) – Centro de Ciências Exatas e Naturais, Universidade Regional de Blumenau, Blumenau.

SCHUYTEMA, Paul; MANYEN, Mark. Game development with LUA. Hingham: Charles River Media, 2005.

TAKANO, Rafael H. MJ3I: um motor de jogos 3D para o iPhone OS. 2009. 52 f. Trabalho de Conclusão de Curso (Bacharelado em Ciências da Computação) – Centro de Ciências Exatas e Naturais, Universidade Regional de Blumenau, Blumenau.

UOL TECNOLOGIA. Venda de smartphones deve superar a de computadores no Brasil em 2011, diz IDC. [S.l.], 2011. Disponível em: . Acesso em: 11 mar. 2011.

VELDHUIZEN, Bart. Game engine. Amsterdam, [2011a?]. Disponível em: . Acesso em: 22 mar. 2011.

VELDHUIZEN, Bart. Features. Amsterdam, [2011b?]. Disponível em: . Acesso em: 26 mar. 2011.



WARD, Jeff. What is a game engine? [S.l.], abr. 2008. Disponível em: . Acesso em: 20 mar. 2011.

1 Um motor de jogo é um software ou biblioteca responsável por implementar parcialmente ou int

2 O baralho padrão francês é o mais utilizado atualmente e é composto por 52 cartas divididos em 4 naipes (espadas, ouros, copas e paus). Em alguns países, foi inserido ao baralho um conjunto de cartas denominadas curingas, ou jokers, que são cartas independentes de valor ou naipe.

3 Thread é um processo ou tarefa concorrente utilizado em sistemas multitarefas que dependente de um criador.

4 JIT é um compilador desenvolvido para a máquina virtual Dalvik, disponível a partir do Android 2.2, que analisa o código da aplicação e o converte para uma forma mais eficiente enquanto o aplicativo está rodando (ANDROID DEVELOPERS, 2010).

5 GNU General Public Licence (GNU GPL). criada em 1989, foi a primeira licença para softwares livres e atualmente a mais utilizada pelos desenvolvedores de softwares de código aberto.




1   2   3


©aneste.org 2017
enviar mensagem

    Página principal