ayudantia android

Upload: gustavo-schimpp

Post on 05-Apr-2018

240 views

Category:

Documents


0 download

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