Está en la página 1de 68

Desarrollo de Videojuegos

Android
Francisco Alcntara
francisco@amnesiagames.cl
Octubre 2010

Un par de preguntas...

!uantos de ustedes "an desarrollado una


aplicaci#n Android$

!uantos de ustedes tienen un e%uipo


Android$

!uantos de ustedes saben lo %ue es Android$

!uantos "an escuc"ado alguna &e' el nombre


Android$

Agenda del Dia

(or %u) "acer juegos para plataformas m#&iles

*u) es Android

+l estado del arte en Android

*u) puedo "acer

(rimeros pasos

, c#mo "ago un juego$ ------$$$

.ips and .ric/s 01 and DO23.3s4



Agenda del Dia

(or %u) "acer juegos para plataformas m#&iles

*u) es Android

+l estado del arte en Android

*u) puedo "acer

(rimeros pasos

, c#mo "ago un juego$ ------$$$

.ips and .ric/s 01 and DO23.3s4



(or %u) plataformas m#&iles

5i tienen pantallas tan c"icas

(oco procesador

6imites de tama7o

.eclado de un celular es malo como jo8stic/

!uando se pueda jugar !r8sis en el celular


a&9senme

(regunta: 5abes cuanto cuesta desarrollar un


juego AAA$

-ejores grficos no lo es todo
.ama7o relati&o a capacidad de procesamiento

-ejores grficos no lo es todo
.ama7o relati&o a &entas en 200;

-ejores grficos no lo es todo
<ears of =ar -ario >art D5

-ejores grficos no lo es todo
.ama7o relati&o a &entas en 200; inclu8endo 2intendo D5

Algunas cifras

i("one: ;?@ de los usuarios "an comprado al


menos un juego

Aa8 ms de 100 millones de 2intendo D5 en el


mundo

5on8 (5( "a &endido ms de B0 millones de


dispositi&os

2intendo <amebo8 8 <amebo8 Ad&ance en


conjunto suman alrededor de 200 millones de
unidades
!ifras estimadas el 200?

6as (lataformas -#&iles

+stn siempre con el usuario

Cedes 5ociales

Altamente conectados

Dajos costos de desarrollo

Enno&aci#n

Agenda del Dia

(or %u) "acer juegos para plataformas m#&iles

*u) es Android

+l estado del arte en Android

*u) puedo "acer

(rimeros pasos

, c#mo "ago un juego$ ------$$$

.ips and .ric/s 01 and DO23.3s4



Agenda del Dia

(or %u) "acer juegos para plataformas m#&iles

*u) es Android

+l estado del arte en Android

*u) puedo "acer

(rimeros pasos

, c#mo "ago un juego$ ------$$$

.ips and .ric/s 01 and DO23.3s4



*u) es Android$

o mejor dic"o....

*ui)n es Android$

*ui)n es Android$

+n serio
Android is a software stack for mobile devices
that includes an operating system, middleware
and key applications
"ttp:FFde&eloper.android.comFguideFbasicsFG"atHisHandroid."tml

*u) es Android$

!osas Emportantes

6inuI >ernel

Dal&i/ V-

5<6 8 Open <6 +5

5*6ite

5e programa en Ja&a

+jecutables K .ap/

Open 5ource

2otepad .utorial

!omponentes (rincipales

Acti&ities

5er&ices

Entents

VieGs

-anifest

Acti&it8 6ifec8cle

Una Acti&it8 tiene tres estados principales:

+sta activa si est en pantalla 0foreground4

+st pausada si otra Acti&it8 se coloc# en frenteL


pero aMn es &isible.

+sta detenida si otra Acti&it8 la obscureci# por


completo.
Killed no es lo mismo que Destroyed

Acti&it8 6ifec8cle

-as Enfo

Android De&eloper <uide

Application Fundamentals
"ttp:FFde&eloper.android.comFguideFtopicsFfundamentals."tml

Agenda del Dia

(or %u) "acer juegos para plataformas m#&iles

*u) es Android

+l estado del arte en Android

*u) puedo "acer

(rimeros pasos

, c#mo "ago un juego$ ------$$$

.ips and .ric/s 01 and DO23.3s4



Agenda del Dia

(or %u) "acer juegos para plataformas m#&iles

*u) es Android

+l estado del arte en Android

*u) puedo "acer

(rimeros pasos

, c#mo "ago un juego$ ------$$$

.ips and .ric/s 01 and DO23.3s4



+l +stado del Arte en Android
Vale la pena desarrollar para Andoid$



*u) produjo el !ambio$

*N 200?: Aparece -otorola Droid

(rimer Android 2.0



-ercado dentro del -undo Android

Distintas &ersiones de Android:


-a8o 2010O 5e estima %ue para fines de a7o los dispositi&os con android 2.1 superarn el B0@

-ercado dentro del -undo Android

(rimera <eneraci#n

5egunda <eneraci#n

Android -ar/et

Android -ar/et

Android -ar/et

Android -ar/et

+ntonces...

Aa8 una gran oportunidad

6a mala noticia

2o en todos los paises se pueden comprar ni


&ender aplicacionesL entre ellos....

!AE6+ :0

(ero aMn "a8 esperan'as

P0 de septiembre: 5e anuncia %ue desarrolladores


20 nue&os pa9ses podrn &enderL entre los cuales
se inclu8en Drasil 8 Argentina.

-ientras tanto: Admob.com



Agenda del Dia

(or %u) "acer juegos para plataformas m#&iles

*u) es Android

+l estado del arte en Android

*u) puedo "acer

(rimeros pasos

, c#mo "ago un juego$ ------$$$

.ips and .ric/s 01 and DO23.3s4



Agenda del Dia

(or %u) "acer juegos para plataformas m#&iles

*u) es Android

+l estado del arte en Android

*u) puedo "acer

(rimeros pasos

, c#mo "ago un juego$ ------$$$

.ips and .ric/s 01 and DO23.3s4



*u) (uedo Aacer

!apacidades de los Dispositi&os Android

(antalla .ouc"screen

Aceler#metro

<(5

5ensor de Orientaci#n

Dluetoot"

=ifi

.rac/ballL .eclado 8 otros m)todos de input no


siempre asegurados.

(rimera <eneraci#n

!(U Arm N00QB00-"'

Open <6 +5 1.0 R 1.1 S +Itensiones

(antalla de P.2T AV<A P20INU0

QB000 &ertsFframe @P0fps

Q102N &ertsFframe @V0fps

Android 1.B H 1.V


Fuente: =riting CealH.ime <ames For Android CeduIL !"ris (uettL -a8o 2010

5egunda <eneraci#n

!(U V00-"' R 1 <"'

Open <6 +5 2.0 R 1.1 S +Itensiones

(antalla =V<A NU0IU00

Q2;000 &ertsFframe @P0fps

F(5 limitados por el tama7o de pantalla

Android 2.0 R 2.1 R 2.2


Fuente: =riting CealH.ime <ames For Android CeduIL !"ris (uettL -a8o 2010

Cesultados de (rofiler
Fuente: =riting CealH.ime <ames For Android CeduIL !"ris (uettL -a8o 2010

!#mo escoger mi target

.odo depende de lo %ue necesites

Android es Dac/GardsH!ompatible

!aracter9sticas Emportantes:

1.V: (antallas con distinta relaci#n de aspecto

2.0: A(E de Dluetoot"L multitouc"

Open <6 +5

!ool Apps

<oogle Voice

<oogle <oogles

5/8 -ap

Darcode 5canner

!"rome to ("one

Abduction

Ceplica Esland

Agenda del Dia

(or %u) "acer juegos para plataformas m#&iles

*u) es Android

+l estado del arte en Android

*u) puedo "acer

(rimeros pasos

, c#mo "ago un juego$ ------$$$

.ips and .ric/s 01 and DO23.3s4



Agenda del Dia

(or %u) "acer juegos para plataformas m#&iles

*u) es Android

+l estado del arte en Android

*u) puedo "acer

(rimeros pasos

, c#mo "ago un juego$ ------$$$

.ips and .ric/s 01 and DO23.3s4



(rimeros (asos

(rimero "a8 %ue preparar el ambiente de


desarrollo:

Enstalar el ultimo JD>

Enstalar +clipse para Ja&a

Descargar Android 5D>

Enstalar el (lugin AD. para +clipse

!rear emuladores

Er a Cesources W .utorials W Aello =orld

Enstrucciones detalladas en:

"ttp:FFde&eloper.android.comFsd/Finstalling."tml

X-anos a la obraY
Ver .utorial: Aello =orld a%ui

Agenda del Dia

(or %u) "acer juegos para plataformas m#&iles

*u) es Android

+l estado del arte en Android

*u) puedo "acer

(rimeros pasos

, c#mo "ago un juego$ ------$$$

.ips and .ric/s 01 and DO23.3s4



Agenda del Dia

(or %u) "acer juegos para plataformas m#&iles

*u) es Android

+l estado del arte en Android

*u) puedo "acer

(rimeros pasos

, c#mo "ago un juego$ ------$$$

.ips and .ric/s 01 and DO23.3s4



, c#mo "ago un juego$

(rimer approac"

!rear un VieG 8 sobreescribir el m)todo onDraG


public class Tutorial2D extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
superonCreate(savedInstanceState)!
re"uest#indo$%eature(#indo$%&AT'(&)*O)TIT+&)!
setContent,ie$(ne$ -anel(t.is))!
/

class -anel extends ,ie$ {
public -anel(Context context) {
super(context)!
/

@Override
public void onDra$(Canvas canvas) {
Bit0ap )scratc. 1 Bit0ap%actorydecode(esource(2et(esources()3 (dra$ableicon)!
canvasdra$Color(ColorB+AC4)!
canvasdra$Bit0ap()scratc.3 563 563 null)!
/
/
/

(rimer approac"

+s lo ms simple

2o tenemos control del t"read

(oca eficiencia

5egundo Approac"

+Itender la clase 5urfaceVieG

Ver tutorial en

"ttp:FFGGG.droidno&a.comFpla8ingHGit"Hgrap"icsHinH
androidHpartHiiL1V0."tml

+s ms complejo

(ero tenemos control del t"read

5in embargo...

.ilesL tiles 8 ms tiles

+l approac" anterior funciona si se dibujan


pocas imgenes en pantalla

Una escena de tiles puede tener ms de P0

+n dispositi&os de primera generaci#n el


rendimiento cae considerablemente 0Q10fps4

*ue "acemos entonces$

Open <6 +5 al rescate



2uestro Amigo Open <6 +5

6o bsico: usar VDO

VerteI Duffer Object

<6Z+[.+25EO25

.eIture compression: A.E.!L (VC.!L +.!1

DraGing -et"ods

*uads Git" ort"ograp"ic projection

VDO %uads

draGZteIture

2uestro Amigo Open <6 +5

6o bsico: usar VDO

VerteI Duffer Object

<6Z+[.+25EO25

.eIture compression: A.E.!L (VC.!L +.!1

DraGing -et"ods

*uads Git" ort"ograp"ic projection

VDO %uads

draGZteIture

(ero alguien 8a lo debe "aber resuelto
!ierto$
5E

....%ui)n$

Ceplica Esland:

"ttp:FFGGG.replicaisland.netF

(CO5:

Open 5ource

Funciona en todos los dispositi&os

!O2.CA5:

Alta complejidad

(oca documentaci#n

!ero tutoriales

...%uien ms$

CO>O2

"ttp:FFGGG.ro/onandroid.comF

(CO5:

Facil de comen'ar a usar

Documentado

DoI 2D

!asos de +Iito: Drop Dloc/

!O2.CA5:

2o "a8 tutoriales a&an'ados

2o tiene motor de .iles



...8 algMn otro$

A2<6+

"ttp:FFcode.google.comFpFangleF

(CO5:

Varios ejemplos

.iene motor de .iles

!O2.CA5:

-otor de f9sica pobre

2o encontr) casos de )Iito



Agenda del Dia

(or %u) "acer juegos para plataformas m#&iles

*u) es Android

+l estado del arte en Android

*u) puedo "acer

(rimeros pasos

, c#mo "ago un juego$ ------$$$

.ips and .ric/s 01 and DO23.3s4



Agenda del Dia

(or %u) "acer juegos para plataformas m#&iles

*u) es Android

+l estado del arte en Android

*u) puedo "acer

(rimeros pasos

, c#mo "ago un juego$ ------$$$

.ips and .ric/s 01 and DO23.3s4



.ips and .ric/s 01 and DO23.3s4

2 reglas generales de eficiencia:

2o "agas trabajo %ue no necesitas

2o pidas memoria si puede e&itarlo

Algunos !onsejos:

+&ite crear objetos

6os objetos no son gratisL usan memoria

Un arreglo de ints es mejor %ue un arreglo de Entegers

(refiera static en &e' de &irtual

1B@ a 20@ ms rpido

Aaga sus contantes final



-s !onsejos de (erformance

+&ite <etters 8 5etters internos

PI ms rpido

+&ite usar enum

+&ite usar floats



Cesponsi&eness
A2C of Deat"

Cesponsi&eness

!undo se ejecuta el A2C

2o "a8 respuesta a un input event durante 10


segundos

Un DroadcastCecei&er no termina su ejecuci#n en


B segundos

!onclusi#n !la&e

Usar ."readsY

Desarrollo de Videojuegos
Android
Francisco Alcntara
francisco@amnesiagames.cl
Octubre 2010

Ceferencias

"ttp:FFde&eloper.android.comFindeI."tml

"ttp:FFcode.google.comFe&entsFioF2010Fsessions."tml\Android

"ttp:FFGGG.droidno&a.comFpla8ingHGit"Hgrap"icsHinHandroidHpartHiiL1V0."tml

También podría gustarte