Вы находитесь на странице: 1из 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

No en todos los paises se pueden comprar ni vender aplicaciones, entre ellos.... CHILE :( 30 de septiembre: Se anuncia que desarrolladores 20 nuevos pases podrn vender, entre los cuales se incluyen Brasil y Argentina.

Pero an hay esperanzas

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 Alta complejidad Poca documentacin Cero tutoriales

CONTRAS:

...quien ms?

ROKON http://www.rokonandroid.com/ PROS:


Facil de comenzar a usar Documentado Box 2D Casos de Exito: Drop Block No hay tutoriales avanzados No tiene motor de Tiles

CONTRAS:

...y algn otro?


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


Varios ejemplos Tiene motor de Tiles Motor de fsica pobre No encontr casos de xito

CONTRAS:

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 Evite crear objetos

Algunos Consejos:

Los objetos no son gratis, usan memoria Un arreglo de ints es mejor que un arreglo de Integers 15% a 20% ms rpido

Prefiera static en vez de virtual

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

Conclusin Clave

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

Вам также может понравиться