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.