programaci n de juegos m viles con j2me
Download
Skip this Video
Download Presentation
Programación de Juegos Móviles con J2ME

Loading in 2 Seconds...

play fullscreen
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