Linha de Produção de Jogo Móveis
Danilo Cavalcanti Torres - dct
Hugo Siqueira - hlfs
Contextualização
• Constante crescimento do número de
dispositivos móveis
• Cada vez mais aplicações móveis de todos os
tipos (ex.: jogos)
• Incompatibilidade dos aparelhos
– Tamanho de tela
– API específica do fabricante
– Exigências das operadoras
– Quantidade de memória do aparelho
Porting
• Última fase do ciclo de desenvolvimento de
jogos móveis
• Tem a função de portar o jogo para o maior
número de aparelhos possíveis
Na Meantime já foram geradas mais de 2.000
builds diferentes para um mesmo jogo
Estudo de Caso
T
E
T
R
I
S
Variação escolhida
1. Tamanho do campo visual do jogo
Variação 1
• Técnica: Compilação condicional
• Pontos de variação: Parte do código onde é pego a
altura e largura do fundo do jogo
• Refactoring: Nenhum
Variação 1
• Técnica: Arquivo de
propriedades
• Não foi possível visto que
não há suporte para
arquivos .properties
– Até poderíamos fazê-lo “na
mão”, mas pelas limitações
de memória dos aparelhos
não seria viável
Variação 1
• Técnica: Generics
• Não foi possível visto que não há suporte à generics
• Exemplo de uso:
Variação 1
• Técnica: Dependence Injection (com Spring)
• Pontos de variação: Parte do código onde é
chamada a classe TelaPadrao
• Refactoring: Houve,
visto que foi
rearranjado o código
para solicitar ao
Spring o objeto da
interface Tela
Variação 1
• Técnica: Herança/Mixins
• Ponto de variação: Parte do código onde a
classe que possui os atributos de altura e
largura herda de diferentes classes.
• Refactoring: Criação das classes a serem
herdadas.
Herança/Mixins
• Definição do Produto
Herança/Mixins
• Exemplo de uso do Mixins (CaesarJ):
Variação 1
• Técnica: AspectJ
• Refactoring: Criação dos Aspectos referentes
aos diferentes produtos.
Download

AspectJ – Aspect-oriented programming with Java