Desenvolvimento e análise de performance de jogos Android com Coco2d-HTML5

36
Globalcode – Open4education Desenvolvimento e análise de performance de jogos Android com Cocos2d-HTML5 George H. Silva Android Community Manager Vinicius Vecchi Game Developer

description

 

Transcript of Desenvolvimento e análise de performance de jogos Android com Coco2d-HTML5

Page 1: Desenvolvimento e análise de performance de jogos Android com Coco2d-HTML5

Globalcode – Open4education

Desenvolvimento e análise de performance

de jogos Android com Cocos2d-HTML5

George H. Silva

Android Community Manager

Vinicius Vecchi

Game Developer

Page 2: Desenvolvimento e análise de performance de jogos Android com Coco2d-HTML5

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

Page 3: Desenvolvimento e análise de performance de jogos Android com Coco2d-HTML5

Globalcode – Open4education

FISL 15Fragmentação

Diversidade de Hardware

PC

Notebook

Tablet

Smartphone

Page 4: Desenvolvimento e análise de performance de jogos Android com Coco2d-HTML5

Globalcode – Open4education

FISL 15Fragmentação

Diversidade de Sistemas Operacionais

IOS

Android

Windows

7

8

Phone

Linux

BlackBerry OS

Page 5: Desenvolvimento e análise de performance de jogos Android com Coco2d-HTML5

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

Page 6: Desenvolvimento e análise de performance de jogos Android com Coco2d-HTML5

Globalcode – Open4education

FISL 15Fragmentação

Interação

NFC

Sensores

Stylus

Cameras

Page 7: Desenvolvimento e análise de performance de jogos Android com Coco2d-HTML5

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

Page 8: Desenvolvimento e análise de performance de jogos Android com Coco2d-HTML5

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!!!

Page 9: Desenvolvimento e análise de performance de jogos Android com Coco2d-HTML5

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

Page 10: Desenvolvimento e análise de performance de jogos Android com Coco2d-HTML5

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

Page 11: Desenvolvimento e análise de performance de jogos Android com Coco2d-HTML5

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

Page 12: Desenvolvimento e análise de performance de jogos Android com Coco2d-HTML5

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.

Page 13: Desenvolvimento e análise de performance de jogos Android com Coco2d-HTML5

Globalcode – Open4education

FISL 15Estrutura

Page 14: Desenvolvimento e análise de performance de jogos Android com Coco2d-HTML5

Globalcode – Open4education

FISL 15Estrutura

Page 15: Desenvolvimento e análise de performance de jogos Android com Coco2d-HTML5

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

Page 16: Desenvolvimento e análise de performance de jogos Android com Coco2d-HTML5

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;

}

Page 17: Desenvolvimento e análise de performance de jogos Android com Coco2d-HTML5

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

Page 18: Desenvolvimento e análise de performance de jogos Android com Coco2d-HTML5

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)

Page 19: Desenvolvimento e análise de performance de jogos Android com Coco2d-HTML5

Globalcode – Open4education

FISL 15Criando um projeto

Page 20: Desenvolvimento e análise de performance de jogos Android com Coco2d-HTML5

Globalcode – Open4education

FISL 15Abrindo no Eclipse

Page 21: Desenvolvimento e análise de performance de jogos Android com Coco2d-HTML5

Globalcode – Open4education

FISL 15Abrindo no Eclipse

Page 22: Desenvolvimento e análise de performance de jogos Android com Coco2d-HTML5

Globalcode – Open4education

FISL 15Compilando mais rápido

Page 23: Desenvolvimento e análise de performance de jogos Android com Coco2d-HTML5

Globalcode – Open4education

FISL 15Análise de desempenho

O que estamos procurando:

Queda de FPS

Uso de energia

Número de zumbis

Page 24: Desenvolvimento e análise de performance de jogos Android com Coco2d-HTML5

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

Page 25: Desenvolvimento e análise de performance de jogos Android com Coco2d-HTML5

Globalcode – Open4education

FISL 15Uso de CPU – Compilação Padrão

Page 26: Desenvolvimento e análise de performance de jogos Android com Coco2d-HTML5

Globalcode – Open4education

FISL 15Uso de CPU – Compilação x86

Page 27: Desenvolvimento e análise de performance de jogos Android com Coco2d-HTML5

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

Page 28: Desenvolvimento e análise de performance de jogos Android com Coco2d-HTML5

Globalcode – Open4education

FISL 15

Page 29: Desenvolvimento e análise de performance de jogos Android com Coco2d-HTML5

Globalcode – Open4education

FISL 15

Page 30: Desenvolvimento e análise de performance de jogos Android com Coco2d-HTML5

Globalcode – Open4education

FISL 15

Page 31: Desenvolvimento e análise de performance de jogos Android com Coco2d-HTML5

Globalcode – Open4education

FISL 15

Page 32: Desenvolvimento e análise de performance de jogos Android com Coco2d-HTML5

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

Page 33: Desenvolvimento e análise de performance de jogos Android com Coco2d-HTML5

Globalcode – Open4education

FISL 15Próximos passos

Page 34: Desenvolvimento e análise de performance de jogos Android com Coco2d-HTML5

Globalcode – Open4education

FISL 15Próximos passos

Page 35: Desenvolvimento e análise de performance de jogos Android com Coco2d-HTML5

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?

Page 36: Desenvolvimento e análise de performance de jogos Android com Coco2d-HTML5

Globalcode – Open4education

FISL 15Contatos

George H. Silva [@ghsilva]

[email protected]

http://software.intel.com

Vinicius Vecchi [@vvecchi]

[email protected]

www.nakedmonkey.mobi