Programaci n de juegos m viles con j2me
Download
1 / 38

Programación de Juegos Móviles con J2ME - PowerPoint PPT Presentation


  • 140 Views
  • Uploaded on

Programación de Juegos Móviles con J2ME. Fernando Sansberro Exposición de Videojuegos Argentina 19-20 Septiembre 2003. Contenido. La Industria de Juegos Móviles. Las Herramientas de Desarrollo. Desarrollo de Juegos Móviles. Programación Java con J2ME / MIDP 1.0.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' Programación de Juegos Móviles con J2ME' - heath


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
Programaci n de juegos m viles con j2me

Programación de Juegos Móviles con J2ME

Fernando Sansberro

Exposición de Videojuegos Argentina

19-20 Septiembre 2003


Contenido
Contenido

  • La Industria de Juegos Móviles.

  • Las Herramientas de Desarrollo.

  • Desarrollo de Juegos Móviles.

  • Programación Java con J2ME / MIDP 1.0.

  • APIs de Teléfonos y MIDP 2.0.

  • Conclusiones.

Programación de Juegos Móviles con J2ME - EVA 2003


La industria de juegos m viles caracter sticas
La Industria de Juegos MóvilesCaracterísticas

  • Se encuentra en su infancia.

  • Juegos desde Pacman hasta RPG multijugador.

  • Esperando un juego que revolucione ($$$).

Programación de Juegos Móviles con J2ME - EVA 2003


La industria de juegos m viles desarrollador
La Industria de Juegos MóvilesDesarrollador

  • Es una gran oportunidad.

  • Costos de producción muy bajos.

  • ¡Es como en los años ’80!

    • En casa se puede hacer un juego comercial.

    • Grupo de 2-3 personas 2-3 meses.

    • Tecnología al alcance y manejable.

  • Accesible para desarrolladores independientes.

  • ¡El sueño del desarrollador independiente!

Programación de Juegos Móviles con J2ME - EVA 2003


La industria de juegos m viles actores
La Industria de Juegos MóvilesActores

  • Developers (juego).

  • Publishers (entre developer y carrier).

  • Carriers (aire=red).

  • Manufacturers (teléfonos).

Programación de Juegos Móviles con J2ME - EVA 2003


Las herramientas de desarrollo lenguajes
Las Herramientas de DesarrolloLenguajes

  • Lenguajes posibles:

    • Java

    • C++

  • Programación Orientada a Objetos.

  • Mucho material en la web: tutoriales, libros online, artículos, forums, código fuente, etc.

Programación de Juegos Móviles con J2ME - EVA 2003


Las herramientas de desarrollo cuales son
Las Herramientas de Desarrollo¿Cuales son?

  • Java

    • J2ME (Java 2 Micro Edition)

      • MIDP 1.0, MIDP 2.0, APIs fabricantes

    • ExEn

    • WGE

  • C++

    • Mophun

    • Brew

Programación de Juegos Móviles con J2ME - EVA 2003


Las herramientas de desarrollo elegir plataforma
Las Herramientas de DesarrolloElegir Plataforma

  • J2ME

    • 75 millones de teléfonos.

    • No tiene modelo de negocios.

    • Nokia, Motorola, Siemens, Samsung...

  • ExEn

    • Modelo de negocios y mejor API.

    • Panasonic, Alcatel, Siemens, Philips, Vitelcomm.

  • BREW

    • 5 millones de teléfonos.

Programación de Juegos Móviles con J2ME - EVA 2003


Las herramientas de desarrollo j2me
Las Herramientas de DesarrolloJ2ME

  • Sun J2ME (Java 2 Micro Edition).

  • Sun J2ME Wireless Toolkit 2.0.

  • IDE (JCreator, Sun ONE Studio, etc.).

  • SDKs y APIs de fabricantes.

  • Emuladores.

  • Teléfonos.

Programación de Juegos Móviles con J2ME - EVA 2003


Las herramientas de desarrollo j2me tecnolog as
Las Herramientas de DesarrolloJ2ME - Tecnologías

  • J2ME es un subconjunto de J2SE.

  • MIDP (Mobile Information Device Profile):

    • Conjunto de estándares para fabricantes de dispositivos definiendo memoria, teclas, tamaño de display, etc.

    • Actualmente MIDP 1.0.

    • MIDP 2.0 contiene transparencia, full screen, sprites, tiled layers, sonido, etc.

Programación de Juegos Móviles con J2ME - EVA 2003



Desarrollo de juegos m viles ventajas
Desarrollo de Juegos MóvilesVentajas

  • Todos tienen un teléfono celular.

  • Hay millones de potenciales compradores.

    • Por ejemplo, Nokia piensa tener en el mercado entre 50 y 100 millones de teléfonos J2ME/Color para fines del 2003.

  • Sencillo comparado con otras plataformas.

  • Juegos chicos.

Programación de Juegos Móviles con J2ME - EVA 2003


Desarrollo de juegos m viles dise ando un juego
Desarrollo de Juegos MóvilesDiseñando un Juego...

  • La persona lleva el teléfono consigo a todos lados.

  • Juega mientras espera el omnibus, el tren, en la clase aburrida, etc.

  • Se juega en sesiones cortas.

  • Es fácilmente interrumpible (implementar autosave).

  • Masivo, fácil de entender, etc.

Programación de Juegos Móviles con J2ME - EVA 2003


Desarrollo de juegos m viles factores en contra
Desarrollo de Juegos MóvilesFactores en contra

  • Hay que trabajar con recursos limitados.

  • Tamaño del display.

  • Diferentes capacidades de los dispositivos.

  • Interface del juego (teclas).

  • No hay punto flotante en MIDP.

  • Hay que usar API para cada fabricante (hoy).

  • No hay acceso a pixels, rotaciones, scaling, etc.

  • Hay que optimizar memoria, ejecución, .jar, etc.

Programación de Juegos Móviles con J2ME - EVA 2003


Desarrollo de juegos m viles variedad de dispositivos
Desarrollo de Juegos MóvilesVariedad de Dispositivos

  • Tamaño del display (ejemplo: Miki’s World)

    Serie 30 - 96x65 Serie 40 - 128x128 Serie 60 - 176x208

  • Cantidad de colores

    Blanco y Negro (Solo Serie 30).

    4096 Colores (12 bits) (Serie 30, 40 y 60).

Programación de Juegos Móviles con J2ME - EVA 2003


Desarrollo de juegos m viles variedad de dispositivos1
Desarrollo de Juegos MóvilesVariedad de Dispositivos

Ejemplo: Nokia

Serie 30 Serie 40 Serie 60

  • Heap memory

    200 K - 255 K 200 K 1.4 Mb

  • Record Management System

    140 K - 600 K 725 K – 4 Mb 4 Mb

  • Máximo tamaño del archivo .JAR

    32 K – 64 K 64 Kb 4 Mb

Programación de Juegos Móviles con J2ME - EVA 2003


Desarrollo de juegos m viles teclados diferentes
Desarrollo de Juegos MóvilesTeclados Diferentes

SERIE 40

NO SOPORTA TECLAS

SIMULTANEAS

Programación de Juegos Móviles con J2ME - EVA 2003


Desarrollo de juegos m viles teclados diferentes1
Desarrollo de Juegos MóvilesTeclados Diferentes

NOKIA 3300

Programación de Juegos Móviles con J2ME - EVA 2003


Desarrollo de juegos m viles teclados diferentes2
Desarrollo de Juegos MóvilesTeclados Diferentes

NOKIA 3650

Programación de Juegos Móviles con J2ME - EVA 2003


Desarrollo de juegos m viles teclados diferentes3
Desarrollo de Juegos MóvilesTeclados Diferentes

NOKIA N-GAGE

Programación de Juegos Móviles con J2ME - EVA 2003


Programaci n con j2me midp 1 0 componentes a desarrollar
Programación con J2ME / MIDP 1.0Componentes a Desarrollar

  • Sistema de sprites.

  • Mapa de tiles.

  • Game loop (Thread).

  • Menú del juego.

  • High score, Instrucciones, etc. (state machine).

  • Animación inicial y carga de imágenes (Thread).

  • Inteligencia Artificial.

  • Multiplayer.

  • Optimizar el código.

Programación de Juegos Móviles con J2ME - EVA 2003


Programaci n con j2me midp 1 0 proceso de desarrollo
Programación con J2ME / MIDP 1.0Proceso de Desarrollo

  • Preparar los documentos de especificación ayuda a evitar problemas mas tarde.

  • Game Design Specification.

  • Technical Design Specification.

  • Budget / Schedule.

  • Plan de Testing.

Programación de Juegos Móviles con J2ME - EVA 2003


Programaci n con j2me midp 1 0 c mo es un midlet
Programación con J2ME / MIDP 1.0Cómo es un MIDlet

// HelloGameMIDlet.java

import javax.microedition.midlet.*;

import javax.microedition.lcdui.*;

public class HelloGameMIDlet extends MIDlet

{

private GameCanvas gameCanvas;

private Display display;

public HelloGameMIDlet()

{

gameCanvas = new GameCanvas();

}

protected void startApp()

{

display = Display.getDisplay(this);

display.setCurrent(gameCanvas);

gameCanvas.repaint();

gameCanvas.serviceRepaints();

}

protected void pauseApp()

{}

protected void destroyApp(boolean u) {}

}

Programación de Juegos Móviles con J2ME - EVA 2003


Programaci n con j2me midp 1 0 c mo es un midlet1
Programación con J2ME / MIDP 1.0Cómo es un MIDlet

// GameCanvas.java

import javax.microedition.lcdui.*;

class GameCanvas extends Canvas

{

public void paint(Graphics g)

{

g.setColor(0x000000);

g.fillRect(0, 0, getWidth(), getHeight());

g.setColor(0xFFFFFF);

g.drawString("Hello Game!", getWidth() / 2, getHeight() / 2,

Graphics.HCENTER | Graphics.TOP);

}

}

Programación de Juegos Móviles con J2ME - EVA 2003


Programaci n con j2me midp 1 0 double buffer
Programación con J2ME / MIDP 1.0Double Buffer

Image buffer = null;

Graphics gOff = null;

// En el constructor del Canvas...

if (!isDoubleBuffered()) {

buffer = Image.createImage(getWidth(), getHeight());

}

Public void paint(Graphics g) {

Graphics gr = (buffer != null) ? buffer.getGraphics() : g;

dibujarFrame(gr);

if (buffer != null) {

gr.drawImage(buffer, 0, 0, Graphics.TOP | Graphics.LEFT);

}

}

Programación de Juegos Móviles con J2ME - EVA 2003


Programaci n con j2me midp 1 0 game loop
Programación con J2ME / MIDP 1.0Game Loop

public class GameThread extends Thread

{

public void run()

{

while(running)

{

long time = System.currentTimeMillis();

moveSprites();

checkCollision();

repaint();

serviceRepaints();

time = System.currentTimeMillis() - time;

try { if (time < DELAY) Thread.sleep(DELAY-(int)time); }

catch( Exception) {}

}

}

}

Programación de Juegos Móviles con J2ME - EVA 2003


Programaci n con j2me midp 1 0 optimizar tama o del jar
Programación con J2ME / MIDP 1.0Optimizar tamaño del .JAR

  • El juego se distribuye OTA como un MIDlet (archivos .jad y .jar) – ~64K.

  • Obfuscation.

    • Además hace difícil la Ingeniería Reversa.

  • No crear demasiadas clases ni packages.

Programación de Juegos Móviles con J2ME - EVA 2003


Programaci n con j2me midp 1 0 optimizar tama o del jar1
Programación con J2ME / MIDP 1.0Optimizar tamaño del .JAR

  • Poner todos los gráficos en una sola imágen.

  • Los gráficos son .PNG.

  • Stripping.

Header

Datos

Header

Datos

Header

Datos

Programación de Juegos Móviles con J2ME - EVA 2003


Programaci n con j2me midp 1 0 levantar los frames
Programación con J2ME / MIDP 1.0Levantar los frames

Graphics g;

Image imagenTiles;

try {

imagenTiles = Image.createImage("/graphics.png");

}

catch (Exception e)

{error();}

try {

for (int i=0; i<50; i++) {

sprite[i] = Image.createImage(8, 8);

g = sprite[i].getGraphics();

g.drawImage(imagenTiles, -((i%10)*8), -((i/10)*8),

Graphics.TOP|Graphics.LEFT);

}

}

catch (Exception e)

{error();}

Programación de Juegos Móviles con J2ME - EVA 2003


Programaci n con j2me midp 1 0 optimizar tama o del c digo
Programación con J2ME / MIDP 1.0Optimizar tamaño del código

Public abstract class Base {

protected int value;

public abstract void setValue(int v);

}

Public class Ext1 extends Base {

public void setValue(int v) {

value = v;

}

}

Public class Ext2 extends Base {

public void setValue(int v) {

value = v * v;

}

}

Public class Base {

public static final int EXT1 = 0;

public static final int EXT2 = 1;

private int type;

private int value;

public Base(int t) {type = t;}

public void setValue(int v) {

switch(type) {

case EXT1: value = v;

break;

case EXT2: value = v * v;

break;

}

}

}

Programación de Juegos Móviles con J2ME - EVA 2003


Programaci n con j2me midp 1 0 garbage collector
Programación con J2ME / MIDP 1.0Garbage Collector

  • En Java hay un thread del sistema que libera la memoria cuando no se referencia más un objeto.

    miObjeto = null;

    System.gc();

  • No se puede hacer new() dentro del juego porque es muy costoso.

  • Implementar Pool de objetos.

Programación de Juegos Móviles con J2ME - EVA 2003


Programaci n con j2me midp 1 0 optimizaciones
Programación con J2ME / MIDP 1.0Optimizaciones

  • Dirty Rectangles.

  • Usar char[ ] en lugar de String y StringBuffer (hay que escribir rutinas de conversión a y desde int, por ejemplo).

  • Usar arrays en lugar de HashTable y Vector.

  • Minimizar el uso de clases.

  • Reducir las invocaciones (no usar interface).

  • Usar métodos final.

Programación de Juegos Móviles con J2ME - EVA 2003


Programaci n con j2me midp 1 0 ultimos detalles
Programación con J2ME / MIDP 1.0Ultimos detalles

  • Que cumpla con las “Usability Guides”.

  • Internacionalización (idiomas).

  • Certificación da acceso a los mejores lugares de exposición para vender.

Programación de Juegos Móviles con J2ME - EVA 2003


Apis de tel fonos y midp 2 0 qu trae midp 2 0
APIs de Teléfonos y MIDP 2.0¿Qué trae MIDP 2.0?

  • Game API:

    • Clase GameCanvas.

    • Clase Layer (abstracta: Sprite o Tile).

    • Clase Sprite.

    • Clase TiledLayer (Mapa de tiles).

    • Clase LayerManager.

  • Full screen.

  • Audio (MIDP 2.0 Media API es un subconjunto de Mobile Media API, JSR 135).

  • Graphics.FillTriangle (3D engine básico).

Programación de Juegos Móviles con J2ME - EVA 2003


Apis de tel fonos y midp 2 0 qu traen las apis
APIs de Teléfonos y MIDP 2.0¿Qué traen las APIs?

  • Full Canvas.

  • Transparencia (Mask y Alpha Channel).

  • Sprites.

  • Layers (Mapas de Tiles).

  • Sonido (WAV, .MIDI o Ring Tones).

  • Otros (Vibración, Rotación de imágenes, etc).

Programación de Juegos Móviles con J2ME - EVA 2003


Conclusiones
Conclusiones

  • Es una gran oportunidad.

  • Herramientas al alcance.

  • Se necesita ser muy disciplinado.

  • Diseñar primero (modelos de teléfonos).

  • Programar un juego es sencillo.

  • Que corra bien en el teléfono no es fácil pero una vez que se desarrollaron los componentes es sencillo.

  • Emuladores y teléfonos.

Programación de Juegos Móviles con J2ME - EVA 2003


Preguntas y respuestas
Preguntas yRespuestas

Programación de Juegos Móviles con J2ME - EVA 2003


Contacto
Contacto

Fernando Sansberro

[email protected]

Programación de Juegos Móviles con J2ME - EVA 2003


ad