IIC3686 - Creación de Videojuegos Nicolás Mery Programación de juegos en J2ME para celulares.

Slides:



Advertisements
Presentaciones similares
DESARROLLO DE SOLUCIONES EMPRESARIALES MOVILES USANDO TECNOLOGIA SUN
Advertisements

10. Modelación de un Videojuego. BALLOON ATTACK. El planeta está siendo invadido por extraños extraterrestres en forma de globos, y ningún arma existente.
Programación de Dispositivos Móviles Estructura de un programa en J2ME Rogelio Ferreira Escutia.
“Java para Dispositivos Móviles”
Sección 4 Gastos Generales
Interprete o máquina real
DESARROLLO DE SOLUCIONES EMPRESARIALES MOVILES USANDO TECNOLOGIA SUN APLICACIONES MOVILES CON J2ME RMS Ing. Ronald Criollo.
DESARROLLO DE SOLUCIONES EMPRESARIALES MOVILES USANDO TECNOLOGIA SUN
DESARROLLO DE SOLUCIONES EMPRESARIALES MOVILES USANDO TECNOLOGIA SUN APLICACIONES MOVILES CON J2ME Ing. Ronald Criollo.
LEgo Java Operating System (LeJOS)
ÍNDICE Introducción. Trabajar con Applets. Definición de Applet.
Marcos y multimedia con html
Programación de Juegos Móviles con J2ME
CONCEPTES AVANÇATS DE SISTEMES OPERATIUS Departament dArquitectura de Computadors (Seminaris de CASO) Autors MOVING JAVA INTO MOBILE PHONES Josep Pinyol.
Java Applets Ing. Martín Jiménez.
7. Programación en Videojuegos 2D I.
JME Java Micro Edition.
Curso de Java y Aplicaciones Web
JAVA FX Es un paquete de software que te permitirá desarrollar aplicaciones web para diferentes plataformas, desde un ordenador ordinario hasta teléfonos.
INTERFAZ DE ACCES DISEÑO DE BASE DE DATOS
Jesús Arellano. La plataforma Java Micro Edition, o anteriormente Java 2 Micro Edition(J2ME), es una especificación de un subconjunto de la plataforma.
Qué es una ventana En informática, una ventana es un área visual, normalmente de forma rectangular, que contiene algún tipo de interfaz de usuario, mostrando.
Java Parte II Taller de Sistemas de Programas Enero-Marzo 99 Prof. : Sandra Zabala, Marilenis Olivera Ivette C. Martínez, Pedro García, Alejandra Blanco.
M.C. Juan Carlos Olivares Rojas
Figure: Lenguajes. Generaciones de lenguajes de programación.
Aplicaciones GUI en Java
Irrumpiendo en el Mercado de Juegos para Celulares Exposición de Videojuegos Argentina 2005 Fernando Sansberro 29 de Octubre 2005.
Lenguajes Orientados a Objetos M.C. Juan Carlos Olivares Rojas.
Tema 6: Clases Antonio J. Sierra.
Tema 10: Interfaces Antonio J. Sierra.
Nuevas Aplicaciones en Equipos Móviles Pablo Roncagliolo B. Valparaíso – Chile 2006.
MENSAJES SMS.
1 TEMA 5. Seguridad en Java 1.Introducción a los Controladores de Seguridad 2.Decidir qué Métodos Sobreescribir del SecurityManager 3.Escribir un Controlador.
GAME MAKER. INTRODUCCIÓN Game Maker es un entorno para el desarrollo de juegos, creado en 1999 por Mark Overmars, profesor del departamento de Ciencia.
CS-434: Programación Orientada a Objetos usando Java Semana 1
 LOPEZ MENDOZA CORINA AMALINALLI  GRUPO 304.  Una base de datos o banco de datos (en ocasiones abreviada BB.DD.) es un conjunto de datos pertenecientes.
Introducción a Java 2D y LG3D
Valor X Valor Y Punto (0,0) Coordenadas.
IIC Creación de Videojuegos Sebastián Montabone Programación de juegos en J2ME para celulares.
EI, Profesor Ramón Castro Liceaga Agosto de 2005 UNIVERSIDAD LATINA (UNILA) PROGRAMACION ORIENTADA A OBJETOS EN JAVA (Optativa) PROGRAMACION DE INTERFASES.
CONCEPTES AVANÇATS DE SISTEMES OPERATIUS Departament d’Arquitectura de Computadors (Seminaris de CASO) Autors Introducción a J2ME Bruno Rodríguez Rodríguez.
Tecnología java para dispositivos con recursos limitados
Motor RPG Cristóbal Troncoso. Objetivos Una persona que no sepa programar pueda crear su propio juego de rol a través de editores de niveles y editores.
ELO3091 Interfaz de Socket Agustín J. González ELO309.
J2ME M.C. Juan Carlos Olivares Rojas Department of Computer and System Instituto Tecnológico de Morelia
Introducción al Lenguaje. ¿Qué es PHP? O Es un lenguaje de programación que es interpretado por un servidor web. O El lenguaje es genérico. PHP está orientado.
Graficación M.C. Juan Carlos Olivares Rojas. Agenda Diseño de juegos con DirectX. OpenGL. Java3D.
Seminario de Arquitectura e Implementación de Aplicaciones Inalámbricas Internet Móvil: Tecnología y Aplicaciones (J2ME y WAP) Fecha: 26–Junio Autores:Julián.
Java for Mobile Devices M.C. Juan Carlos Olivares Rojas Department of Computer and System Instituto Tecnológico de Morelia
Programación de Dispositivos Móviles “Conceptos de J2ME” Rogelio Ferreira Escutia.
“Programando con J2ME” Rogelio Ferreira Escutia. 2 MIDlet mínimo.
Programación de Interfaces Gráficas en Java
JME Integrantes: Gabriel Centurión Maximiliano Felix.
Introducción al Lenguaje. ¿ Qué es PHP ? O Hypertext Pre-processoes (PHP) es un lenguaje de "código abierto" interpretado, de alto nivel, embebido en.
Sun Microsystems. Los servlets son objetos que corren dentro del contexto de un contenedor de servlets y extienden su funcionalidad. También podrían correr.
JavaME Integrantes: Gabriel Centurión Maximiliano Felix.
Programación AvanzadaProgramación Avanzada. Herramientas de Programación  NetBeans.  SDK Sony Ericsson, Micro Edition.  Editor de mapas Game Builder.
ING.CIP.IVAN PETRLIK AZABACHE. GRAFICOS CON EL API DE BAJO NIVEL Para poder utilizar la pantalla de un dispositivo movil a traves del API de bajo nivel.
Programación de Interfaces Gráficas en Java
Microsoft Power Point Tema: “Como manejo del Power Point como herramienta estudiantil”.
Naime Cecilia del Toro Alvarez
Programación de Videojuegos
Introducción a GDevelop
J2ME Java 2 Platform, Micro Edition (J2ME): Esta versión de Java está enfocada a la aplicación de la tecnología Java en dispositivos electrónicos con capacidades.
El contexto gráfico La función paint y update nos suministran el contexto gráfico del applet o del componente, en otros casos, hemos de obtener el contexto.
ANÁLISIS Y DESARROLLO DE UNA APLICACIÓN INTERACTIVA PARA TELEVISIÓN DIGITAL MEDIANTE EL USO DEL API JAVA TV POR: David Jarrín.
Clase Nº1 Métodos, texturas, rectángulos. Introduccion ¿Que vamos a aprender en el taller? Programar juegos Un poco de historia…
Juan José López Espinosa Servicio de Desarrollo, ATICA Universidad de Murcia 02/06/2007 1Arquitecturas multimedia - Programación Móvil.
DLM Transact SQL Sesión I Introducción al SQL Server Uso de las herramientas de consultas del Transact SQL.
API J2ME Fernando Jesús Sánchez Herrera Técnico de Apoyo de Investigación Universidad Extremadura.
Transcripción de la presentación:

IIC Creación de Videojuegos Nicolás Mery Programación de juegos en J2ME para celulares

Introducción : Recursos  Recursos limitados RAM en kilobytes Almacenamiento (RMS) alrededor de 1 mb Pantallas más comunes de 128x128 pixeles  Diferentes configuraciones  Necesidad de adaptarse a las diferentes configuraciones  Optimizar todo lo posible en pro de la jugabilidad.

Introducción : APIs  Java J2SE: Standard Edition J2EE: Enterprise Edition J2ME: Micro Edition  Configuraciones Máquina virtual, interfaz de programación básica  Connected Limited Device Configuration (CLDC) CLDC 1.1 CLDC 1.0  Connected Device Configuration (CDC)

Introducción (cont.)  Perfiles Interfaz de más alto nivel  Mobile Information Device Profile(MIDP) 1.0  Mobile Information Device Profile(MIDP) 2.0  Próximamente MIDP 3.0…  Interfaz propia del celular (ej: Nokia UI)  Cada celular implementa una configuración y un perfil Esto define las posibilidades de programación que el desarrollador tiene disponible.

Introducción (cont.)  MIDP1.0 No tiene soporte para audio No hay pintado de pantalla completa No soporta transparencias Conectividad sólo vía HTTP Todos los celulares actuales soportan MIDP1.0  MIDP2.0 Soporte multimedia Soporte para pintado a pantalla completa Soporte para transparencias Conectividad ampliada (HTTP, sockets, etc…) Mejoras específicas para desarrollo de juegos Varios soportan MIDP2.0 hoy en día. (2007)

Programación en J2ME  javax.microedition.MIDlet startApp()  Cuando parte la aplicación o cuando vuelve de pausa pauseApp()  Sucede cuando llaman al celular o un SMS, etc. destroyApp()  Cuando se sale de la aplicación.

Programación en J2ME (cont.)  Ciclo de vida de un MIDlet Activo  El MIDlet está siendo ejecutado y tiene control sobre los recursos del sistema Destruido  El MIDlet fue destruido. Todos sus recursos han sido liberados. Pausado  El MIDlet está corriendo en el fondo. No puede responder a ningún evento de la interfaz de usuario, pero puede ser devuelto a Activo por el AMS

Programación en J2ME (cont.)  Game Loop Leer Input del usuario  ( Canvas.keyPressed(), CommandListeners ) Simular el mundo (IA, colisiones, etc.)  Dentro del loop cuando el juego se esta corriendo. Dibujar el resultado  Al final o entremedio cuando se quiere obligar a que ciertas cosas se dibujen antes que otras. ( No abusar ) Esperar para completar el tiempo del frame

Demo  FishGame  Netbeans Movility pack

Links a sitios de desarrollo  Nokia  Siemens.  Sony Ericsson.  Motorola.

Instalación  NetBeans J2SE v html 50.html  NetBeans Mobility Pack (incluye Wireless Toolkit 2.2). Extra:  Tabla comparativa de celulares con sus configuraciones, perfiles, y otros datos. device device

Otros links útiles  Página j2me del curso Página j2me del curso  Wikipedia MIDP2 Wikipedia MIDP2  Wikipedia CLDC Wikipedia CLDC  Carbide.j Carbide.j

Anexo  Más sobre programación en J2ME

Programación en J2ME  javax.microedition.lcdui.Display Display representa a la pantalla LCD del celular  Display.getDisplay(MIDlet m) Obtiene el Display asociado al MIDlet  Display.setCurrent(Displayable d) Setea el objeto que se quiere desplegar en la pantalla LCD

Programación en J2ME (cont.)  javax.microedition.lcdui.Displayable Displayable representa un objeto que puede ser desplegado en la pantalla LCD  Displayable Screen  Form ChoiceGroup DateField ImageItem Gauge StringItem TextField  Alert  List  TextBox Canvas

Programación en J2ME (cont.)  Displayable.setCommandListener(CommandLi stener cl) Especifica quién interpretará los comandos recibidos por el objeto Displayable El intérprete debe implementar el método abstracto CommandListener  Displayable.addCommand(Command c) Agrega un comando a la pantalla  Displayable.removeCommand(Command c) Elimina un comando de la pantalla

Programación en J2ME (cont.)  Canvas permite interpretar el input del usuario void keyPressed(int keycode) void keyReleased(int keycode) void keyRepeated(int keycode) int getGameAction(int keycode)  Posee constantes para comparar KEY_NUM0 KEY_NUM9 KEY_STAR KEY_POUND LEFT, RIGHT, UP, DOWN, FIRE GAME_A, GAME_B, GAME_C, GAME_D

Programación en J2ME (cont.)  La clase que extienda Canvas tiene que implementar el método abstracto Paint(Graphics g)  En esa función definimos lo que queremos pintar  Cada vez que queremos que se refresque la pantalla, llamamos al método repaint()

Programación en J2ME (cont.)  Graphics drawImage drawString drawRect drawRoundRect drawLine drawArc fillRect fillRoundRect fillArc setColor setStrokeStyle …

Programación en J2ME (cont.)  Game Loop Leer Input del usuario Simular el mundo (IA, colisiones, etc.) Dibujar el resultado Esperar para completar el tiempo del frame  Hasta ahora, todo lo visto se puede implementar en MIDP1.0

Programación en J2ME (cont.)  Game API javax.microedition.lcdui.game.*  GameCanvas  Layer  LayerManager  Sprite  TiledLayer Sólo disponible desde MIDP2.0

Programación en J2ME (cont.)  GameCanvas Extiende a Canvas Agrega un buffer fuera de pantalla Permite hacer polling a las teclas El método getGraphics() retorna el buffer Al finalizar de pintar el frame fuera de la pantalla, se llama a flushGraphics() setFullScreenMode(Boolean)

Programación en J2ME (cont.)  GameCanvas int getKeyStates()  UP_PRESSED  DOWN_PRESSED  LEFT_PRESSED  RIGHT_PRESSED  FIRE_PRESSED Cómo usarlo?  keyStates=getKeyStates();  If(keyStates & LEFT_PRESSED != 0) Usuario presionó izquierda…

Programación en J2ME (cont.)  Layer Base para Sprite y TiledLayer void setPosition(int x, int y) void setVisible(int x, int y) boolean isVisible() void move(int dx, int dy) int getHeight() int getWidth() int getX() int getY()

Programación en J2ME (cont.)  Sprite Extiende Layer agregando animación, detección de colisión, transformaciones de imagen Sprite(Image imagen) Sprite(Image imagen, int frameWidth, int frame Height) Sprite(Sprite s) collidesWith(Image imagen, int x, int y, bool pixelLevel) collidesWith(Sprite s, bool pixelLevel) collidesWith(TiledLayer t, bool pixelLevel) defineCollisionRectangle(int x, int y, int width, int height)

Programación en J2ME (cont.)  Animación del Sprite void setFrameSequence(int[] sequence)  Establece una secuencia a partir de los frames de la imagen original del sprite int getFrameSequenceLength()  Retorna el número de frames que tiene la secuencia actual int getRawFramesCount()  Retorna el número de frames que tiene la imagen original del sprite

Programación en J2ME (cont.)  Animación del Sprite void setFrame(int sequenceIndex)  Selecciona un frame en particular de la secuencia para el próximo paint del sprite void nextFrame()  Selecciona el siguiente frame en la secuencia void prevFrame()  Selecciona el frame anterior en la secuencia int getFrame()  Retorna el número de frame dentro de la secuencia que está selecconado actualmente void paint(Graphics g)  Pinta el Sprite. El pixel de referencia es el de arriba a la izquierda

Programación en J2ME (cont.)  Transformaciones del Sprite defineReferencePixel(getWidth()/2, getHeight()/2) setTransform(transformación)  TRANS_NONE  TRANS_ROT90  TRANS_ROT180  TRANS_ROT270  TRANS_MIRROR  TRANS_MIRROR_ROT90  TRANS_MIRROR_ROT180  TRANS_MIRROR_ROT270

Programación en J2ME (cont.)  TiledLayer TiledLayer(int columns, int rows, Image image, int tileWidth, int tileHeight)  Especifica las columnas y filas del fondo, imagen donde estás los tiles y sus dimensiones Void setCell(int col, int row, int tileIndex)  Pinta en (col, row) con el tile tileIndex (parte de 1, el 0 es transparente) Void fillCells(int col, int row, int numCols, int numRows, int tileIndex)  setCell pero en un rectángulo

Programación en J2ME (cont.)  LayerManager Sirve para pintar grupos de Layers Void append(Layer l) Void insert(Layer l, int index) Int getSize() Void remove(Layer l) Void setViewWindow(int x, int y, int width, int height) Void paint(Graphics g, int x, int y) Layer getLayerAt(int index)

Programación en J2ME (cont.)  Esperar para completar el tiempo del frame 15 FPS o menos Aprox. 70 milisegundos por frame elapsed=startTime; startTime=System.currentTimeMillis(); elapsed=startTime-elapsed; If(elapsed < MILLISECS_PER_FRAME) { thread.sleep(MILLISECS_PER_FRAME-elapsed); } Else { thread.yield(); }