ayudantia android
TRANSCRIPT
-
7/31/2019 Ayudantia Android
1/68
-
7/31/2019 Ayudantia Android
2/68
Un par de preguntas...
Cuantos de ustedes han desarrollado unaaplicacin Android?
Cuantos de ustedes tienen un equipo
Android? Cuantos de ustedes saben lo que es Android?
Cuantos han escuchado alguna vez el nombre
Android?
-
7/31/2019 Ayudantia Android
3/68
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)
-
7/31/2019 Ayudantia Android
4/68
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)
-
7/31/2019 Ayudantia Android
5/68
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 celularavsenme
Pregunta: Sabes cuanto cuesta desarrollar unjuego AAA?
-
7/31/2019 Ayudantia Android
6/68
Mejores grficos no lo es todo
Tamao relativo a capacidad de procesamiento
-
7/31/2019 Ayudantia Android
7/68
Mejores grficos no lo es todo
Tamao relativo a ventas en 2007
-
7/31/2019 Ayudantia Android
8/68
Mejores grficos no lo es todo
Gears of War Mario Kart DS
-
7/31/2019 Ayudantia Android
9/68
Mejores grficos no lo es todo
Tamao relativo a ventas en 2007 incluyendo Nintendo DS
-
7/31/2019 Ayudantia Android
10/68
Algunas cifras
iPhone: 79% de los usuarios han comprado almenos 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 enconjunto suman alrededor de 200 millones deunidades
Cifras estimadas el 2009
-
7/31/2019 Ayudantia Android
11/68
Las Plataformas Mviles
Estn siempre con el usuario
Redes Sociales
Altamente conectados
Bajos costos de desarrollo
Innovacin
-
7/31/2019 Ayudantia Android
12/68
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)
-
7/31/2019 Ayudantia Android
13/68
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)
-
7/31/2019 Ayudantia Android
14/68
Qu es Android?
o mejor dicho....
-
7/31/2019 Ayudantia Android
15/68
Quin es Android?
-
7/31/2019 Ayudantia Android
16/68
Quin es Android?
-
7/31/2019 Ayudantia Android
17/68
En serio
Android is a software stack for mobile devices
that includes an operating system, middlewareand key applications
http://developer.android.com/guide/basics/what-is-android.html
-
7/31/2019 Ayudantia Android
18/68
Qu es Android?
-
7/31/2019 Ayudantia Android
19/68
Cosas Importantes
Linux Kernel
Dalvik VM
SGL y Open GL ES
SQLite
Se programa en Java
Ejecutables = .apk Open Source
Notepad Tutorial
http://developer.android.com/resources/tutorials/notepad/index.htmlhttp://developer.android.com/resources/tutorials/notepad/index.html -
7/31/2019 Ayudantia Android
20/68
Componentes Principales
Activities
Services
Intents
Views
Manifest
-
7/31/2019 Ayudantia Android
21/68
Activity Lifecycle
Una Activity tiene tres estados principales:
Esta activa si est en pantalla (foreground)
Estpausada 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
-
7/31/2019 Ayudantia Android
22/68
Activity Lifecycle
-
7/31/2019 Ayudantia Android
23/68
Mas Info
Android Developer Guide
Application Fundamentals
http://developer.android.com/guide/topics/fundamentals.html
-
7/31/2019 Ayudantia Android
24/68
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)
-
7/31/2019 Ayudantia Android
25/68
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)
-
7/31/2019 Ayudantia Android
26/68
El Estado del Arte en Android
Vale la pena desarrollar para Andoid?
-
7/31/2019 Ayudantia Android
27/68
-
7/31/2019 Ayudantia Android
28/68
-
7/31/2019 Ayudantia Android
29/68
Qu produjo el Cambio?
Q4 2009: Aparece Motorola Droid
Primer Android 2.0
-
7/31/2019 Ayudantia Android
30/68
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%
-
7/31/2019 Ayudantia Android
31/68
Mercado dentro del Mundo Android
Primera Generacin Segunda Generacin
-
7/31/2019 Ayudantia Android
32/68
Android Market
-
7/31/2019 Ayudantia Android
33/68
Android Market
-
7/31/2019 Ayudantia Android
34/68
Android Market
-
7/31/2019 Ayudantia Android
35/68
Android Market
-
7/31/2019 Ayudantia Android
36/68
Entonces...
Hay una gran oportunidad La mala noticia
No en todos los paises se pueden comprar ni
vender aplicaciones, entre ellos.... CHILE :(
Pero an hay esperanzas
30 de septiembre: Se anuncia que desarrolladores20 nuevos pases podrn vender, entre los cualesse incluyen Brasil y Argentina.
Mientras tanto: Admob.com
-
7/31/2019 Ayudantia Android
37/68
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)
-
7/31/2019 Ayudantia Android
38/68
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)
-
7/31/2019 Ayudantia Android
39/68
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.
P i G i
-
7/31/2019 Ayudantia Android
40/68
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
S d G i
-
7/31/2019 Ayudantia Android
41/68
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
R lt d d P fil
-
7/31/2019 Ayudantia Android
42/68
Resultados de Profiler
Fuente: Writing Real-Time Games For Android Redux, Chris Puett, Mayo 2010
C i t t
-
7/31/2019 Ayudantia Android
43/68
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
C l A
-
7/31/2019 Ayudantia Android
44/68
Cool Apps
Google Voice Google Googles
Sky Map
Barcode Scanner
Chrome to Phone
Abduction
Replica Island
A d d l Di
-
7/31/2019 Ayudantia Android
45/68
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
-
7/31/2019 Ayudantia Android
46/68
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
-
7/31/2019 Ayudantia Android
47/68
Primeros Pasos
Primero hay que preparar el ambiente dedesarrollo:
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
-
7/31/2019 Ayudantia Android
48/68
Manos a la obra!Ver Tutorial: Hello World aqui
Agenda del Dia
http://developer.android.com/resources/tutorials/hello-world.htmlhttp://developer.android.com/resources/tutorials/hello-world.html -
7/31/2019 Ayudantia Android
49/68
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
-
7/31/2019 Ayudantia Android
50/68
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?
-
7/31/2019 Ayudantia Android
51/68
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
-
7/31/2019 Ayudantia Android
52/68
Primer approach
Es lo ms simple No tenemos control del thread
Poca eficiencia
Segundo Approach
-
7/31/2019 Ayudantia Android
53/68
Segundo Approach
Extender la clase SurfaceView Ver tutorial en
http://www.droidnova.com/playing-with-graphics-in-
android-part-ii,160.html Es ms complejo
Pero tenemos control del thread
Sin embargo...
Tiles tiles y ms tiles
-
7/31/2019 Ayudantia Android
54/68
Tiles, tiles y ms tiles
El approach anterior funciona si se dibujanpocas imgenes en pantalla
Una escena de tiles puede tener ms de 30
En dispositivos de primera generacin elrendimiento cae considerablemente (~10fps)
Que hacemos entonces?
Open GL ES al rescate
Nuestro Amigo Open GL ES
-
7/31/2019 Ayudantia Android
55/68
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
-
7/31/2019 Ayudantia Android
56/68
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
-
7/31/2019 Ayudantia Android
57/68
Pero alguien ya lo debe haber resuelto
Cierto?
SI
....quin?
-
7/31/2019 Ayudantia Android
58/68
....quin?
Replica Island: http://www.replicaisland.net/
PROS:
Open Source Funciona en todos los dispositivos
CONTRAS:
Alta complejidad Poca documentacin
Cero tutoriales
...quien ms?
http://www.replicaisland.net/http://www.replicaisland.net/ -
7/31/2019 Ayudantia Android
59/68
...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?
http://www.rokonandroid.com/http://www.rokonandroid.com/ -
7/31/2019 Ayudantia Android
60/68
...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
http://code.google.com/p/angle/http://code.google.com/p/angle/ -
7/31/2019 Ayudantia Android
61/68
g
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
-
7/31/2019 Ayudantia Android
62/68
g
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)
-
7/31/2019 Ayudantia Android
63/68
p ( )
2 reglas generales de eficiencia: No hagas trabajo que no necesitas
No pidas memoria si puede evitarlo
Algunos Consejos: Evite crear objetos
Los objetos no son gratis, usan memoria
Un arreglo de ints es mejor que un arreglo de Integers
Prefiera static en vez de virtual
15% a 20% ms rpido
Haga sus contantes final
Ms Consejos de Performance
-
7/31/2019 Ayudantia Android
64/68
j
Evite Getters y Setters internos 3x ms rpido
Evite usar enum
Evite usar floats
Responsiveness
-
7/31/2019 Ayudantia Android
65/68
p
ANR of Death
Responsiveness
-
7/31/2019 Ayudantia Android
66/68
p
Cundo se ejecuta el ANR No hay respuesta a un input eventdurante 10
segundos
Un BroadcastReceiver no termina su ejecucin en
5 segundos
Conclusin Clave
Usar Threads!
-
7/31/2019 Ayudantia Android
67/68
Desarrollo de Videojuegos
Android
Francisco [email protected] 2010
Referencias
mailto:[email protected]:[email protected] -
7/31/2019 Ayudantia Android
68/68
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
http://developer.android.com/index.htmlhttp://code.google.com/events/io/2010/sessions.html#Androidhttp://www.droidnova.com/playing-with-graphics-in-android-part-ii,160.htmlhttp://www.droidnova.com/playing-with-graphics-in-android-part-ii,160.htmlhttp://code.google.com/events/io/2010/sessions.html#Androidhttp://developer.android.com/index.html