Post on 18-Dec-2014
description
Globalcode – Open4education
Desenvolvimento e análise de performance
de jogos Android com Cocos2d-HTML5
George H. Silva
Android Community Manager
Vinicius Vecchi
Game Developer
Globalcode – Open4education
FISL 15Agenda
Fragmentação
A importância de Open Source
Desenvolvendo jogos em HTML5
Cocos2d-HTML5
Ambiente de desenvolvimento
Análise de desempenho
Otimizações
Globalcode – Open4education
FISL 15Fragmentação
Diversidade de Hardware
PC
Notebook
Tablet
Smartphone
…
Globalcode – Open4education
FISL 15Fragmentação
Diversidade de Sistemas Operacionais
IOS
Android
Windows
7
8
Phone
Linux
BlackBerry OS
Globalcode – Open4education
FISL 15Fragmentação
Versões de Sistemas Operacionais
Windows Phone 7 vs Windows Phone 8
Android 2.3, 3.0, 4.0 … 4.4
Globalcode – Open4education
FISL 15Fragmentação
Interação
NFC
Sensores
Stylus
Cameras
Globalcode – Open4education
FISL 15Fragmentação
Componentes de Hardware
Tipo de GPU
Arquitetura de CPU
ARM
X86
MIPS
Quantidade de memória RAM
Espaço em disco
…
Globalcode – Open4education
FISL 15Como resolver tudo isso?
1. Impossível!
2. Mas …
1. Conheça o público alvo
2. Mire nas fatias mais grossas do Mercado
3. Quem pode te ajudar
1. Open Source!!!
Globalcode – Open4education
FISL 15Open Source
Além de todas as vantagens que conhecemos …
Fabricantes de Hardware podem contribuir
Desenvolvedores de SO podem contribuir
Desenvolvedor final pode escolher como
compilar e otimizar
Globalcode – Open4education
FISL 15Estudo de Caso
Ambiente AndroidSDK + NDK
Cocos2dFramework de desenvolvimento de jogos open source
Multi plataforma
Baseado em Open GL
E o melhorRecompilável :-D
Globalcode – Open4education
FISL 15Cocos-2d
Criada em 2008 em python
Em seguida portada para iOS e objective-c
Cocos2d-x port em c++ da cocos2d-iphone
Cocos2d-html5 port para javascript
Globalcode – Open4education
FISL 15Por que usar Cocos?
Open-source
Comunidade ativa
Várias ferramentas e editores
Cross-Platform
Mesmo código pode rodar em várias plataformas móveis
e desktops.
Globalcode – Open4education
FISL 15Estrutura
Globalcode – Open4education
FISL 15Estrutura
Globalcode – Open4education
FISL 15Colocando um Sprite na tela
var lazyLayer = cc.Layer.create();
this.addChild(lazyLayer);
// adicionando o sprite ao lazyLayer, centralizado e usando oarquivo .png como fonte.
this.sprite = cc.Sprite.create("res/sprite.png");
this.sprite.setPosition(cc.p(size.width / 2, size.height / 2));
// escala o Sprite para ter tamanho 0
this.sprite.setScale(0);
this.sprite.setRotation(180); // gira o Sprite em 180 graus
// cria ações parar girar e escalar o sprite
// para o tamanho e rotação certos
this.sprite.runAction(cc.ScaleTo.create(1,1));
this.sprite.runAction(cc.RotateTo.create(1,0));
lazyLayer.addChild(this.sprite, 0); //coloca no layer
Globalcode – Open4education
FISL 15Entrada
// ao tocar na tela
onTouchesBegan:function (touches, event) {
this.isMouseDown = true;
},
// ao mover o toque na tela
onTouchesMoved:function (touches, event) {
if (this.isMouseDownc && touches) {
this.sprite.setPosition(cc.p(touches[0].getLocation().x,
touches[0].getLocation().y));
}},
// ao remover o toque da tela
onTouchesEnded:function (touches, event) {
this.isMouseDown = false;
}
Globalcode – Open4education
FISL 15Javascript Binding
Permite utilizar o código javascript em plataformas
móveis com desempenho similar ao nativo.
Usa spidermonkey para executar o código de jogo
em javascript
Usa código nativo para transformações de cena,
física e desenho.
Por enquanto somente disponível nas versões 2.x
da cocos2d-x
Globalcode – Open4education
FISL 15Ambiente
Uso de ferramentas para desenvolvimento web
Webstorm + Chrome para desenvolvimento e
depuração
Use o eclipse ou a linha de comando para testar
em aparelhos Android(e o Xcode para iOS)
Globalcode – Open4education
FISL 15Criando um projeto
Globalcode – Open4education
FISL 15Abrindo no Eclipse
Globalcode – Open4education
FISL 15Abrindo no Eclipse
Globalcode – Open4education
FISL 15Compilando mais rápido
Globalcode – Open4education
FISL 15Análise de desempenho
O que estamos procurando:
Queda de FPS
Uso de energia
Número de zumbis
Globalcode – Open4education
FISL 15Cenário de Teste
Criamos um herói imortal
Iniciamos a partir do dia 27
Fluxo continuo de 2 Zumbis por segundo
Compilação padrão
Compilação x86
NDK Android + ICC (também usamos o GCC)
Medição de desempenho usando o Intel GPA
Globalcode – Open4education
FISL 15Uso de CPU – Compilação Padrão
Globalcode – Open4education
FISL 15Uso de CPU – Compilação x86
Globalcode – Open4education
FISL 15Comparação do uso de CPU
Usamos o mesmo Workload nos dois testes
Compilação padrão
Levou cerca de 25 segundos para ficar sobrecarregada
Compilação x86
Levou cerca de 45 segundos para ficar sobrecarregada
Globalcode – Open4education
FISL 15
Globalcode – Open4education
FISL 15
Globalcode – Open4education
FISL 15
Globalcode – Open4education
FISL 15
Globalcode – Open4education
FISL 15Comparação de consumo
Consumo 2.35% superior na compilação x86
Por quê?
Não é apenas a CPU que consome energia
Preço associado a uma melhor experiência de usuário
FPS 57.87% superior
Globalcode – Open4education
FISL 15Próximos passos
Globalcode – Open4education
FISL 15Próximos passos
Globalcode – Open4education
FISL 15Conclusões
Analise dados pelos mais diversos ângulos
Open Source permite otimizações consideráveis
Relativar o gasto de energia
Gasto por tempo de execução
Gasto por frame
HTML5 precise de ajuda para multi threading
É uma preocupação válida?
Em uma situação real você sobreviveria a mais de 100
zumbis te perseguindo?
Globalcode – Open4education
FISL 15Contatos
George H. Silva [@ghsilva]
george.silva@intel.com
http://software.intel.com
Vinicius Vecchi [@vvecchi]
vinicius@nakedmonkey.mobi
www.nakedmonkey.mobi