Download - Desenvolvimento de Jogos - Android
-
Anderson Leite - MobileConf 2013 - So Paulo
MobileConf
Desenvolvimento de jogos | AndroidA trajetria de criao de um game
1
Friday, April 5, 2013
-
Anderson Leite - MobileConf 2013 - So Paulo
MobileConf
2
Sobre mimAnderson Leite
Trabalho em uma agncia digital chamada
R/GA, sou desenvolvedor web e gosto de
coisas como Ruby, Rails, Frontend,
Android e design.
Entre em contato!
Twitter @anderson_leite
Web andersonleite.com.br
Friday, April 5, 2013
-
Anderson Leite - MobileConf 2013 - So Paulo
MobileConf
3
Friday, April 5, 2013
-
Anderson Leite - MobileConf 2013 - So Paulo
MobileConf
4
Market Share
Friday, April 5, 2013
-
Anderson Leite - MobileConf 2013 - So Paulo
MobileConf
5
Uso do smartphone
Friday, April 5, 2013
-
Anderson Leite - MobileConf 2013 - So Paulo
MobileConf
5
Uso do smartphone
Friday, April 5, 2013
-
Anderson Leite - MobileConf 2013 - So Paulo
MobileConf
5
Uso do smartphone
Friday, April 5, 2013
-
Anderson Leite - MobileConf 2013 - So Paulo
MobileConf
5
Uso do smartphone
Friday, April 5, 2013
-
Anderson Leite - MobileConf 2013 - So Paulo
MobileConf
5
Uso do smartphone
Friday, April 5, 2013
-
Anderson Leite - MobileConf 2013 - So Paulo
MobileConf
5
Uso do smartphone
Friday, April 5, 2013
-
Anderson Leite - MobileConf 2013 - So Paulo
MobileConf
6
Smartphones trazem
novos modelos pra pensar
Friday, April 5, 2013
-
Anderson Leite - MobileConf 2013 - So Paulo
MobileConf
7
River RideAtari
River Raid e um jogo do tipo scrolling shooter videogame e foi
criado em 1982 pela Activision para o Atari 2600.
O jogador controla uma nave de baixo para cima que sobrevoa
um rio e ganha pontos por atirar em naves inimigas,
helicpteros, e bales.
Fabricante
Atari
Data
1982
Video games
Friday, April 5, 2013
-
Anderson Leite - MobileConf 2013 - So Paulo
MobileConf
8
Desenvolver um jogo
uma das formas mais
divertidas de programar
Friday, April 5, 2013
-
Anderson Leite - MobileConf 2013 - So Paulo
MobileConf
9
1Prottipo
Friday, April 5, 2013
-
Anderson Leite - MobileConf 2013 - So Paulo
MobileConf
10
Prototype it First!
Valide suas ideias e tenha
uma viso geral do que vem
pela frente
Friday, April 5, 2013
-
Anderson Leite - MobileConf 2013 - So Paulo
MobileConf
11
FuncionalidadesUm player que ser representado por uma circunferncia
verde, posteriormente, a nave
Mover o player de acordo com o toque na tela
Um inimigo que ser representado por uma circunferncia
que aumentar com o passar do tempo.
Um placar que ser atualizado de acordo com o tempo
Game Over quando o inimigo encostar no player
Restart e exit como opes
Prottipo do jogo
Friday, April 5, 2013
-
Anderson Leite - MobileConf 2013 - So Paulo
MobileConf
12
public class Impossible extends SurfaceView implements Runnable {
public Impossible(Context context) {
super(context);
}
@Override
public void run() {
while(running) {
System.out.println("LGICA DO JOGO");
}
}
}
Game Loop
Friday, April 5, 2013
-
Anderson Leite - MobileConf 2013 - So Paulo
MobileConf
13
public class Game extends Activity {
Impossible view;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Lgica do jogo
view = new Impossible(this);
// Configura view
setContentView(view);
}
}
Android Activity
Friday, April 5, 2013
-
Anderson Leite - MobileConf 2013 - So Paulo
MobileConf
14
private void drawPlayer(Canvas canvas) {
paint.setColor(Color.GREEN);
canvas.drawCircle(100, 100, 100, paint);
}
Player
Friday, April 5, 2013
-
Anderson Leite - MobileConf 2013 - So Paulo
MobileConf
15
public class Game extends Activity implements OnTouchListener {
protected void onCreate(Bundle savedInstanceState) {
// Touch Listener
view.setOnTouchListener(this);
}
@Override
public boolean onTouch(View v, MotionEvent event) {
view.moveDown(10);
return true;
}
}
Movendo o player
Friday, April 5, 2013
-
Anderson Leite - MobileConf 2013 - So Paulo
MobileConf
16
\
Flickering
Friday, April 5, 2013
-
Anderson Leite - MobileConf 2013 - So Paulo
MobileConf
17
private void drawEnemy(Canvas canvas) {
paint.setColor(Color.GRAY);
enemyRadius++;
canvas.drawCircle(100, 100, enemyRadius, paint);
}
Player
Friday, April 5, 2013
-
Anderson Leite - MobileConf 2013 - So Paulo
MobileConf
18
private void checkCollision(Canvas canvas) {
// calcula a hipotenusa
distance = Math.pow(playerY - enemyY, 2)
+ Math.pow(playerX - enemyX, 2);
distance = Math.sqrt(distance);
// verifica distancia entre os raios
if (distance
-
Anderson Leite - MobileConf 2013 - So Paulo
MobileConf
19
ConceitosGame Loop rodando vrias vezes por segundo
Desenhar objetos na tela
Detectar colises entre objetos
Atualizar placar e efeitos quando coliso for detectada
Prottipo do jogo
Friday, April 5, 2013
-
Anderson Leite - MobileConf 2013 - So Paulo
MobileConf
20
Desenvolver jogos,
essa porra foda
para caraleo,
mas divertida!
Friday, April 5, 2013
-
Anderson Leite - MobileConf 2013 - So Paulo
MobileConf
21
2Histria
Friday, April 5, 2013
-
Anderson Leite - MobileConf 2013 - So Paulo
MobileConf
22
14 bis14 bis
O 14-bis era constitudo
por um aeroplano unido
ao balo 14, que fora
utilizado em vos feitos
por Santos Dumont em
meados de 1906.
Friday, April 5, 2013
-
Anderson Leite - MobileConf 2013 - So Paulo
MobileConf
23
Tela de abertura Tela de jogo
14 bis VS 100 meteoros
Friday, April 5, 2013
-
Anderson Leite - MobileConf 2013 - So Paulo
MobileConf
24
3Jogo com Cocos2D
Friday, April 5, 2013
-
Anderson Leite - MobileConf 2013 - So Paulo
MobileConf
25
Friday, April 5, 2013
-
Anderson Leite - MobileConf 2013 - So Paulo
MobileConf
26
Usar um framework?No se preocupar com a posio exata em pixels dos objetos
Utilizar comportamentos j implementados para Sprites
Eliminar da lgica a questo da limpeza de tela
Conseguir efeitos interessantes j implementados pelo Cocos2D
Sons e efeitos de formamais fcil
Friday, April 5, 2013
-
Anderson Leite - MobileConf 2013 - So Paulo
MobileConf
27
Cocos2DCCScene Cenas do jogo
CCLayer Camadas do jogo
CCSprite Imagens do jogo
Schedule | Unschedule Agendamento de game loop
CCScaleBy | CCFadeOut Efeitos e Animaes
SoundEngine Sons e Msica
Friday, April 5, 2013
-
Anderson Leite - MobileConf 2013 - So Paulo
MobileConf
28
Camadas | CCLayerpublic class TitleScreen extends CCLayer {
public CCScene scene() {
CCScene scene = CCScene.node();
scene.addChild(this);
return scene;
}
}
Friday, April 5, 2013
-
Anderson Leite - MobileConf 2013 - So Paulo
MobileConf
29
Imagens | CCSpritepublic class ScreenBackground extends CCSprite {
public ScreenBackground(String image) {
super(image);
}
}
public TitleScreen() {
CCSprite title = CCSprite.sprite(Assets.logo);
title.setPosition(CGPoint.ccp( screenWidth() /2 , screenHeight() - 130 )));
this.addChild(title);
}
Friday, April 5, 2013
-
Anderson Leite - MobileConf 2013 - So Paulo
MobileConf
30
Transio | CCDirectorpublic class GameScene extends CCLayer {
public static CCScene createGame() {
CCScene scene = CCScene.node();
GameScene layer = new GameScene();
scene.addChild(layer);
return scene;
}
}
CCDirector.sharedDirector().replaceScene(
CCFadeTransition.transition( 1.0f, GameScene.createGame() ) );
Friday, April 5, 2013
-
Anderson Leite - MobileConf 2013 - So Paulo
MobileConf
31
Imagens | CCSpritepublic class Meteor extends CCSprite{
public Meteor(String image) {
super(image);
x = new Random().nextInt(Math.round(screenWidth()));
y = screenHeight();
this.schedule("update");
}
public void update(float dt) {
y -= 1;
this.setPosition(screenResolution( x, y ));
}
}
Friday, April 5, 2013
-
Anderson Leite - MobileConf 2013 - So Paulo
MobileConf
32
Engines e Delegatespublic class MeteorsEngine extends CCLayer {
private MeteorsEngineDelegate delegate;
public MeteorsEngine() {
this.schedule("meteorsEngine", 1.0f / 10f);
}
public void meteorsEngine(float dt) {
if(new Random().nextInt(30) == 0){
this.getDelegate().createMeteor(
new Meteor(Assets.meteor).generate(), 1,1);
}
}
public void setDelegate(MeteorsEngineDelegate delegate) {
this.delegate = delegate;
}}
Friday, April 5, 2013
-
Anderson Leite - MobileConf 2013 - So Paulo
MobileConf
33
Utilize ENGINES para fazer a
ponte entre um objeto
do jogo e a tela principal
Friday, April 5, 2013
-
Anderson Leite - MobileConf 2013 - So Paulo
MobileConf
34
Detectando Colisespublic CGRect getBoarders(CCSprite object){
CGRect rect = object.getBoundingBox();
CGPoint GLpoint = rect.origin;
CGRect GLrect = CGRect.make(GLpoint.x, GLpoint.y,
rect.size.width, rect.size.height);
return GLrect;
}
Friday, April 5, 2013
-
Anderson Leite - MobileConf 2013 - So Paulo
MobileConf
35
Detectando Colises// Meteoros e tiros
hitTest = this.checkRadiusHitsOfArray(this.meteorsArray,
this.shootsArray, false, this, "meteoroHit");
// Avio e meteoros
hitTest = this.checkRadiusHitsOfArray(this.meteorsArray,
this.playersArray, false, this, "playerHit");
Friday, April 5, 2013
-
Anderson Leite - MobileConf 2013 - So Paulo
MobileConf
36
Detectando Colises// Check Hit!
if (CGRect.intersects(rect1, rect2)) {
System.out.println("Colision Detected: " + hit);
method = GameScene.class.getMethod(hit,
CCSprite.class, CCSprite.class);
method.invoke(gameScene, array1.get(i), array2.get(j));
}
Friday, April 5, 2013
-
Anderson Leite - MobileConf 2013 - So Paulo
MobileConf
37
Efeitos e Animaes // Remove from Game Array
this.delegate.removeMeteor(this);
// Stop Shoot
this.unschedule("update");
// Pop Actions
float dt = 0.2f;
CCScaleBy a1 = CCScaleBy.action(dt, 0.5f);
CCFadeOut a2 = CCFadeOut.action(dt);
CCSpawn s1 = CCSpawn.actions(a1, a2);
// Call RemoveMe
CCCallFunc c1 = CCCallFunc.action(this, "removeMe");
// Run actions!
this.runAction(CCSequence.actions(s1, c1));
Friday, April 5, 2013
-
Anderson Leite - MobileConf 2013 - So Paulo
MobileConf
38
Sons e msica// Msica
SoundEngine.sharedEngine().playSound(
CCDirector.sharedDirector().getActivity(),
R.raw.music);
// Efeitos de Som
SoundEngine.sharedEngine().playEffect(
CCDirector.sharedDirector().getActivity(), R.raw.bang);
Friday, April 5, 2013
-
Anderson Leite - MobileConf 2013 - So Paulo
MobileConf
39
Faa sempre o cache
de efeitos de sons
no seu jogo
Friday, April 5, 2013
-
Anderson Leite - MobileConf 2013 - So Paulo
MobileConf
40
Cache de Sons// Cache
SoundEngine.sharedEngine().preloadEffect(
CCDirector.sharedDirector().getActivity(),
R.raw.bang);
Friday, April 5, 2013
-
Anderson Leite - MobileConf 2013 - So Paulo
MobileConf
41
Cocos2DCCScene Cenas do jogo
CCLayer Camadas do jogo
CCSprite Imagens do jogo
Schedule | Unschedule Agendamento de game loop
CCScaleBy | CCFadeOut Efeitos e Animaes
SoundEngine Sons e Msica
Friday, April 5, 2013
-
Anderson Leite - MobileConf 2013 - So Paulo
MobileConf
42
Friday, April 5, 2013
-
Anderson Leite - MobileConf 2013 - So Paulo
MobileConf
43
Livro!
Friday, April 5, 2013
-
Anderson Leite - MobileConf 2013 - So Paulo
MobileConf
44
Desenvolvimento deJogos para AndroidExplore sua imaginao com o framework Cocos2D
Construa um jogo do incio ao fim, sem esquecer a importncia do enredo, distribuio, arte e como prender a ateno do jogador.Lgica, matemtica e fsica so apresentados sem traumas. Tambm conheceremos muitos dos benefcios do framework Cocos2D, utilizado na verso definitiva do nosso game.
casadocodigo.com.br
Desconto de 10%
CUPON: MOBILECONF
Meu livro!
Friday, April 5, 2013
-
Anderson Leite - MobileConf 2013 - So Paulo
MobileConf
45
Obrigado!Perguntas?
Entre em contato!
Twitter @anderson_leite
Blog andersonleite.com.br
Friday, April 5, 2013