1 / 38

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. La Industria de Juegos Móviles. Las Herramientas de Desarrollo. Desarrollo de Juegos Móviles. Programación Java con J2ME / MIDP 1.0.

glynis
Download Presentation

Programación de Juegos Móviles con J2ME

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. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Programación de Juegos Móviles con J2ME Fernando Sansberro Exposición de Videojuegos Argentina 19-20 Septiembre 2003

  2. 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

  3. 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

  4. 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

  5. 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

  6. 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

  7. 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

  8. 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

  9. 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

  10. 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

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

  12. 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

  13. 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

  14. 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

  15. 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

  16. 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

  17. Desarrollo de Juegos MóvilesTeclados Diferentes SERIE 40 NO SOPORTA TECLAS SIMULTANEAS Programación de Juegos Móviles con J2ME - EVA 2003

  18. Desarrollo de Juegos MóvilesTeclados Diferentes NOKIA 3300 Programación de Juegos Móviles con J2ME - EVA 2003

  19. Desarrollo de Juegos MóvilesTeclados Diferentes NOKIA 3650 Programación de Juegos Móviles con J2ME - EVA 2003

  20. Desarrollo de Juegos MóvilesTeclados Diferentes NOKIA N-GAGE Programación de Juegos Móviles con J2ME - EVA 2003

  21. 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

  22. 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

  23. 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

  24. 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

  25. 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

  26. 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

  27. 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

  28. 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

  29. 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

  30. 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

  31. 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

  32. 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

  33. 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

  34. 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

  35. 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

  36. 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

  37. Preguntas yRespuestas Programación de Juegos Móviles con J2ME - EVA 2003

  38. Contacto Fernando Sansberro fdsp@adinet.com.uy Programación de Juegos Móviles con J2ME - EVA 2003

More Related