Está en la página 1de 68

Desarrollo de Videojuegos

Android

Francisco Alcntara
francisco@amnesiagames.cl
Octubre 2010

Un par de preguntas...

Cuantos de ustedes han desarrollado una


aplicacin Android?
Cuantos de ustedes tienen un equipo
Android?
Cuantos de ustedes saben lo que es Android?
Cuantos han escuchado alguna vez el nombre
Android?

Agenda del Dia

Por qu hacer juegos para plataformas mviles

Qu es Android

El estado del arte en Android

Qu puedo hacer

Primeros pasos

Y cmo hago un juego? MMMMMM???

Tips and Tricks ( and DON'T's)

Agenda del Dia

Por qu hacer juegos para plataformas mviles

Qu es Android

El estado del arte en Android

Qu puedo hacer

Primeros pasos

Y cmo hago un juego? MMMMMM???

Tips and Tricks ( and DON'T's)

Por qu plataformas mviles

Si tienen pantallas tan chicas

Poco procesador

Limites de tamao

Teclado de un celular es malo como joystick

Cuando se pueda jugar Crysis en el celular


avsenme
Pregunta: Sabes cuanto cuesta desarrollar un
juego AAA?

Mejores grficos no lo es todo

Tamao relativo a capacidad de procesamiento

Mejores grficos no lo es todo

Tamao relativo a ventas en 2007

Mejores grficos no lo es todo

Gears of War

Mario Kart DS

Mejores grficos no lo es todo

Tamao relativo a ventas en 2007 incluyendo Nintendo DS

Algunas cifras

iPhone: 79% de los usuarios han comprado al


menos un juego
Hay ms de 100 millones de Nintendo DS en el
mundo
Sony PSP ha vendido ms de 50 millones de
dispositivos
Nintendo Gameboy y Gameboy Advance en
conjunto suman alrededor de 200 millones de
unidades
Cifras estimadas el 2009

Las Plataformas Mviles

Estn siempre con el usuario

Redes Sociales

Altamente conectados

Bajos costos de desarrollo

Innovacin

Agenda del Dia

Por qu hacer juegos para plataformas mviles

Qu es Android

El estado del arte en Android

Qu puedo hacer

Primeros pasos

Y cmo hago un juego? MMMMMM???

Tips and Tricks ( and DON'T's)

Agenda del Dia

Por qu hacer juegos para plataformas mviles

Qu es Android

El estado del arte en Android

Qu puedo hacer

Primeros pasos

Y cmo hago un juego? MMMMMM???

Tips and Tricks ( and DON'T's)

Qu es Android?

o mejor dicho....

Quin es Android?

Quin es Android?

En serio

Android is a software stack for mobile devices


that includes an operating system, middleware
and key applications
http://developer.android.com/guide/basics/what-is-android.html

Qu es Android?

Cosas Importantes

Linux Kernel

Dalvik VM

SGL y Open GL ES

SQLite

Se programa en Java

Ejecutables = .apk

Open Source

Notepad Tutorial

Componentes Principales

Activities

Services

Intents

Views

Manifest

Activity Lifecycle

Una Activity tiene tres estados principales:

Esta activa si est en pantalla (foreground)


Est pausada si otra Activity se coloc en frente,
pero an es visible.
Esta detenida si otra Activity la obscureci por
completo.

Killed no es lo mismo que Destroyed

Activity Lifecycle

Mas Info

Android Developer Guide

Application Fundamentals

http://developer.android.com/guide/topics/fundamentals.html

Agenda del Dia

Por qu hacer juegos para plataformas mviles

Qu es Android

El estado del arte en Android

Qu puedo hacer

Primeros pasos

Y cmo hago un juego? MMMMMM???

Tips and Tricks ( and DON'T's)

Agenda del Dia

Por qu hacer juegos para plataformas mviles

Qu es Android

El estado del arte en Android

Qu puedo hacer

Primeros pasos

Y cmo hago un juego? MMMMMM???

Tips and Tricks ( and DON'T's)

El Estado del Arte en Android

Vale la pena desarrollar para Andoid?

Qu produjo el Cambio?

Q4 2009: Aparece Motorola Droid

Primer Android 2.0

Mercado dentro del Mundo Android

Distintas versiones de Android:

Mayo 2010; Se estima que para fines de ao los dispositivos con android 2.1 superarn el 50%

Mercado dentro del Mundo Android

Primera Generacin

Segunda Generacin

Android Market

Android Market

Android Market

Android Market

Entonces...

Hay una gran oportunidad

La mala noticia

CHILE :(

Pero an hay esperanzas

No en todos los paises se pueden comprar ni


vender aplicaciones, entre ellos....

30 de septiembre: Se anuncia que desarrolladores


20 nuevos pases podrn vender, entre los cuales
se incluyen Brasil y Argentina.

Mientras tanto: Admob.com

Agenda del Dia

Por qu hacer juegos para plataformas mviles

Qu es Android

El estado del arte en Android

Qu puedo hacer

Primeros pasos

Y cmo hago un juego? MMMMMM???

Tips and Tricks ( and DON'T's)

Agenda del Dia

Por qu hacer juegos para plataformas mviles

Qu es Android

El estado del arte en Android

Qu puedo hacer

Primeros pasos

Y cmo hago un juego? MMMMMM???

Tips and Tricks ( and DON'T's)

Qu Puedo Hacer

Capacidades de los Dispositivos Android

Pantalla Touchscreen

Acelermetro

GPS

Sensor de Orientacin

Bluetooth

Wifi

Trackball, Teclado y otros mtodos de input no


siempre asegurados.

Primera Generacin

CPU Arm 400~500Mhz

Open GL ES 1.0 1.1 + Extensiones

Pantalla de 3.2 HVGA 320x480

~5000 verts/frame @30fps

~1024 verts/frame @60fps

Android 1.5 - 1.6

Fuente: Writing Real-Time Games For Android Redux, Chris Puett, Mayo 2010

Segunda Generacin

CPU 600Mhz 1 Ghz

Open GL ES 2.0 1.1 + Extensiones

Pantalla WVGA 480x800

~27000 verts/frame @30fps

FPS limitados por el tamao de pantalla

Android 2.0 2.1 2.2

Fuente: Writing Real-Time Games For Android Redux, Chris Puett, Mayo 2010

Resultados de Profiler

Fuente: Writing Real-Time Games For Android Redux, Chris Puett, Mayo 2010

Cmo escoger mi target

Todo depende de lo que necesites

Android es Backwards-Compatible

Caractersticas Importantes:

1.6: Pantallas con distinta relacin de aspecto

2.0: API de Bluetooth, multitouch

Open GL ES

Cool Apps

Google Voice

Google Googles

Sky Map

Barcode Scanner

Chrome to Phone

Abduction

Replica Island

Agenda del Dia

Por qu hacer juegos para plataformas mviles

Qu es Android

El estado del arte en Android

Qu puedo hacer

Primeros pasos

Y cmo hago un juego? MMMMMM???

Tips and Tricks ( and DON'T's)

Agenda del Dia

Por qu hacer juegos para plataformas mviles

Qu es Android

El estado del arte en Android

Qu puedo hacer

Primeros pasos

Y cmo hago un juego? MMMMMM???

Tips and Tricks ( and DON'T's)

Primeros Pasos

Primero hay que preparar el ambiente de


desarrollo:

Instalar el ultimo JDK

Instalar Eclipse para Java

Descargar Android SDK

Instalar el Plugin ADT para Eclipse

Crear emuladores

Ir a Resources > Tutorials > Hello World

Instrucciones detalladas en:

http://developer.android.com/sdk/installing.html

Manos a la obra!
Ver Tutorial: Hello World aqui

Agenda del Dia

Por qu hacer juegos para plataformas mviles

Qu es Android

El estado del arte en Android

Qu puedo hacer

Primeros pasos

Y cmo hago un juego? MMMMMM???

Tips and Tricks ( and DON'T's)

Agenda del Dia

Por qu hacer juegos para plataformas mviles

Qu es Android

El estado del arte en Android

Qu puedo hacer

Primeros pasos

Y cmo hago un juego? MMMMMM???

Tips and Tricks ( and DON'T's)

Y cmo hago un juego?

Primer approach

Crear un View y sobreescribir el mtodo onDraw

public class Tutorial2D extends Activity {


@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(new Panel(this));
}
class Panel extends View {
public Panel(Context context) {
super(context);
}
@Override
public void onDraw(Canvas canvas) {
Bitmap _scratch = BitmapFactory.decodeResource(getResources(), R.drawable.icon);
canvas.drawColor(Color.BLACK);
canvas.drawBitmap(_scratch, 10, 10, null);
}
}
}

Primer approach

Es lo ms simple

No tenemos control del thread

Poca eficiencia

Segundo Approach

Extender la clase SurfaceView

Ver tutorial en

http://www.droidnova.com/playing-with-graphics-inandroid-part-ii,160.html

Es ms complejo

Pero tenemos control del thread

Sin embargo...

Tiles, tiles y ms tiles

El approach anterior funciona si se dibujan


pocas imgenes en pantalla
Una escena de tiles puede tener ms de 30
En dispositivos de primera generacin el
rendimiento cae considerablemente (~10fps)

Que hacemos entonces?

Open GL ES al rescate

Nuestro Amigo Open GL ES

Lo bsico: usar VBO

Vertex Buffer Object

GL_EXTENSIONS

Texture compression: ATITC, PVRTC, ETC1

Drawing Methods

Quads with orthographic projection

VBO quads

draw_texture

Nuestro Amigo Open GL ES

Lo bsico: usar VBO

Vertex Buffer Object

GL_EXTENSIONS

Texture compression: ATITC, PVRTC, ETC1

Drawing Methods

Quads with orthographic projection

VBO quads

draw_texture

Pero alguien ya lo debe haber resuelto


Cierto?

SI

....quin?

Replica Island:

http://www.replicaisland.net/

PROS:

Open Source

Funciona en todos los dispositivos

CONTRAS:

Alta complejidad

Poca documentacin

Cero tutoriales

...quien ms?

ROKON

http://www.rokonandroid.com/

PROS:

Facil de comenzar a usar

Documentado

Box 2D

Casos de Exito: Drop Block

CONTRAS:

No hay tutoriales avanzados

No tiene motor de Tiles

...y algn otro?

ANGLE

http://code.google.com/p/angle/

PROS:

Varios ejemplos

Tiene motor de Tiles

CONTRAS:

Motor de fsica pobre

No encontr casos de xito

Agenda del Dia

Por qu hacer juegos para plataformas mviles

Qu es Android

El estado del arte en Android

Qu puedo hacer

Primeros pasos

Y cmo hago un juego? MMMMMM???

Tips and Tricks ( and DON'T's)

Agenda del Dia

Por qu hacer juegos para plataformas mviles

Qu es Android

El estado del arte en Android

Qu puedo hacer

Primeros pasos

Y cmo hago un juego? MMMMMM???

Tips and Tricks ( and DON'T's)

Tips and Tricks ( and DON'T's)

2 reglas generales de eficiencia:

No hagas trabajo que no necesitas

No pidas memoria si puede evitarlo

Algunos Consejos:

Evite crear objetos

Prefiera static en vez de virtual

Los objetos no son gratis, usan memoria


Un arreglo de ints es mejor que un arreglo de Integers
15% a 20% ms rpido

Haga sus contantes final

Ms Consejos de Performance

Evite Getters y Setters internos

3x ms rpido

Evite usar enum

Evite usar floats

Responsiveness

ANR of Death

Responsiveness

Cundo se ejecuta el ANR

No hay respuesta a un input event durante 10


segundos
Un BroadcastReceiver no termina su ejecucin en
5 segundos

Conclusin Clave

Usar Threads!

Desarrollo de Videojuegos
Android

Francisco Alcntara
francisco@amnesiagames.cl
Octubre 2010

Referencias

http://developer.android.com/index.html

http://code.google.com/events/io/2010/sessions.html#Android

http://www.droidnova.com/playing-with-graphics-in-android-part-ii,160.html

También podría gustarte