Como Se Hacen Los Videojuegos Para Moviles

  • November 2019
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Como Se Hacen Los Videojuegos Para Moviles as PDF for free.

More details

  • Words: 4,399
  • Pages: 29
Interacciones móviles: extensiones de la comunicación ¿Cómo se hacen los juegos para móviles?

Julio 2005 David Bueno Vallejo

Índice • Consideraciones generales de los juegos • Inteligencia Artificial en los Juegos –

Carreras de coches

– –

Path finding (b (bú úsqueda de caminos) Juegos mesa

– –

Shooting games (FPS -First Person Shooter Shooter)) Dead Reckoning (shooting games games,, red)

• J2ME – –

Introducció n Introducció Primer programa

– –

Interfaz de usuario GameCanvas

– – –

Ciclo de vida de un juego Sprites,, TyledLayer Sprites TyledLayer,, Scroll Scroll,, Colisiones Almacenamiento (RMS)

– –

Bluetooth Versiones de prueba

– –

Comunicaciones Sonidos, vibració vibración, iluminació iluminación

• Referencias 2

1

Consideraciones generales de los juegos • En la programació programaci ón de videojuegos es necesario prestar atenció atenci ón al elementos té técnicos como:

– Lectura del dispositivo de entrada: teclado, rató rató n, volante, joystick,, keypad joystick keypad… … – Refresco/Modos de pantalla – Uso eficiente de la Memoria – Tama Tamañ ño del programa – Gesti Gestió ón de colisiones

• Y a otros como: – Objetivo del juego – Jugabilidad – Capacidad de motivació motivació n – Calidad grá gr áfica – Multijugador o Red – Inteligencia Artificial

3

Inteligencia Artificial en los Juegos • Desde hace mucho tiempo se ha intentado que los ordenadores muestren cierta inteligencia

– En el siglo XIX, Babbage Babbage,, arquitecto de computadoras, pensó pensó en programar su má má quina analí analí tica para que jugara al ajedrez – En los 50, Shannon describi describió ó los mecanismos que podí podían usarse en un programa jugara al ajedrez – Tambi Tambié én en esa decada decada,, Turing describi describió ó un programa para jugar al ajedrez pero no lo construyó construyó – En 1952, Arthur Samuel construyó construyó el primer programa de juegos importante y operativo, jugaba a las damas en un IBM 701 y podíía aprender de sus errores para mejorar su comportamiento pod – En 1966, Joseph Weizenbaum desarrollo el programa Eliza Eliza.. Simulaba una sesió sesión con un psicó psicólogo – En 1997 el ordenador Deep Blue de IBM gana al campeó campeón del mundo de ajedrez Gary Kasparov

4

2

Carreras de coches • En este apartado se pretende dar una idea de có cómo un juego de coches genera los enemigos inteligentes

• El primer paso consiste en dividir el circuito en sectores • Cada lílínea que separa el sector indica por donde deberí debería pasar el coche

5

Carreras de coches • El jugador conoce el sector en el que se encuentra, la distancia al principio, final y posició posici ón de otros jugadores

• Para hacer jugadores má más inteligentes, pueden mirar en la lílí nea de • • •

carrera de varios sectores má más allá allá de su posició posici ón actual Esto le permite ajustar la aceleració aceleració n y direcció direcció n El algoritmo má más sencillo para adelantar consiste en seguir la linea de adelantamiento Una forma rá rápida de generar la lílí nea de carrera es almacenando los datos de la mejor vuelta de un jugador humano.

6

3

Path finding (B (Bú úsqueda de caminos) • Uno de los problemas que deben resolverse en muchos juegos es encontrar un camino para ir de un punto a otro

• El algoritmo A* utiliza búsqueda heurí heur ística y es uno de los más • • •

empleados con sus muchas variaciones Para cada nodo del camino se tiene en cuenta lo que cuesta llegar llegar a ese punto y el coste estimado desde ese punto hasta el final La estimació estimación que suele utilizarse es la distancia de Manhattan Se tienen dos listas de nodos – Abierta. Con los nodos que pueden visitarse en cada iteració iteració n – Cerrada. Con los nodos ya visitados

7

Path finding (Algoritmo Bá Básico sico-- simplificado) 1. 2. 3. 4.

Se selecciona el punto inicial y se vací vacían las 2 listas Se asignan los valores de coste a destino y a final al nodo inicial inicial Se añ añade el nodo a la lista abierta Se selecciona el nodo con menor coste de la lista abierta y se almacena en la lista cerrada. 1. Si es el final termina terminaà à Camino encontrado 2. Si la lista abierta esta vací vac ía à No ha solució solució n

5. Selecciona los nodos conectados con el anterior. Para cada uno: 1. Si no estaba en ninguna lista se añ añade a la lista abierta 2. Si estaba y el coste nuevo es mejor, se actualiza el coste y el camino hacia el 3. En otro caso no se hace nada

6. Repetir desde 4

8

4

Demo Path Finding B ásico (J.A (J.A.. Chacó Chacón)

9

Path finding (tres pasos) • El algoritmo A* bá básico tiene le problema de que el ‘jugador jugador’’ no avanza hasta que no ha calculado el camino completo

• Eso da un efecto raro pues decimos a nuestro personaje que se •

mueva y se queda parado un rato poniendo nervioso al jugador La solució solución es usar el algoritmo en 3 pasos

– Camino rá rápido. Avance inmediato hacia el destino (en lílínea recta) – Camino completo. Mientras tanto se calcula el A* desde el destino destin o al final del camino rá rápido (donde colisione) – Conexi Conexió ó n entre los dos caminos

10

5

Demo 3 pasos

11

Path finding finding-- Táctico • Cuando hay enemigos que pueden representar una amenaza para el jugador. Se puede implementar una variante tá t áctica de A* • La idea consiste en dar un coste mayor a las celdas en las que un enemigo tiene contacto visual

12

6

Demo Path finding Táctico (J.A (J.A.. Chacó Chacón)

13

Juegos de mesa • Ajedrez, Othello Othello,, Damas, Cuatro en raya raya… … • Algoritmo Minimax – Este algoritmo toma la situació situació n actual del tablero – Prueba los posibles movimientos del jugador actual intentando maximizarlos utilizando una funció función que evalú evalúa la situació situació n del tablero – De forma recursiva, para cada una de las situaciones obtenidas se miran los movimientos del contrario intentando minimizar la funci funció n de evaluació evaluaci ón

• Es decir, seleccionando los mejores movimientos del contrario

– Las llamadas terminará terminarán por:

• Se alcance un nivel de profundidad suficiente • El tiempo de bú búsqueda esté esté restringido • Uno de los jugadores gana

– la decisió decisió n minimax maximiza la utilidad bajo el supuesto de que el contrincante jugará jugará perfectamente para minimizarla

• Poda alfaalfa- beta

– Se dejará dejarán de explorar las situaciones que no lleven a obtener resultados relevantes – Esto permitirá permitirá analizar má más situaciones útiles a mayor profundidad 14

7

Juegos de mesa: mesa : Cuatro en raya • Como ejemplo se muestra una implementació implementaci ón de las cuatro en raya • Caracter Caracteríísticas

– Permite 1 o 2 jugadores en el mismo terminal – 2 jugadores por bluetooth – 3 niveles de dificultad (fá (fácil, medio, difí difícil) – Música – Vibraci Vibració ón

• Inteligencia de la má m áquina con minimax – Con poda por niveles 3, 5 y 7 para cada dificultad Autores: JOSÉ GUERRERO BENÍTEZ JUAN DANIEL GUERRERO LUQUE JOSÉ ÁNGEL RELAÑO GALLARDO JUAN RIVAS ORTIZ

15

Juegos de mesa: mesa : Cuatro en raya • Funci Funció ón de evaluació evaluaci ón – Cuenta el nú número de vecinos del mismo color en las 4 posibles direcciones (horizontal, vertical, diagonales)

• Para cada posible posició posici ón de la ficha se evalú eval úan – El ordenador mueve con negras

Posición elegida (5ª columna)

-300,-300,-300,2,3,-300,-300

16

8

Juegos de mesa: mesa : Cuatro en raya • Otra situació situaci ón – No habrá habr á un ganador pronto, pero una de las posiciones destaca con respecto a las demá demás por dar varias opciones de victoria Posición elegida (5)

3, 3, 3, 3, 4, 3, 3

17

Shooting games (FPS (FPS--First Person Shooter Shooter)) • Curiosamente en los juegos es má más difí difícil hacer que el ordenador falle que acierte

• Hay que intentar que el jugador IA falle por poco para dar sensaci sensació ón • •

de realismo al usuario Para no tener que realizar cálculos excesivos en tiempo real, en algunos juegos se marca un punto en la parte superior derecha/izquierda del jugador al que el jugador IA apunta Si el objetivo está está en movimiento se utiliza la técnica de Dead Reckoning que se describirá describirá a continuació continuaci ón

18

9

Dead Reckoning (shooting games games)) • Los algoritmos de Dead Reckoning predicen el movimiento • El origen fue una herramienta para navegantes. – Un barco puede usar té cnicas de dead reckoning para estimar la posició posici ó n de su barco dado su posició posició n original, el camino deseado y la velocidad

• En dominios militares se utiliza para estimar movimientos de flotas flo tas o •

trapas enemigas entre diferentes saté satélites, radares o contactos visuales Ejemplo para juegos militares:

– Si hay un objetivo a 150 metros, que se mueve a 1 metro por segundo segundo a la derecha y la bala viaja a 50 m/s. Cuando llegue al destino el objetivo ya no estará estará en esa posició posició n Correcto (Dead Reckoning) Fallado

19

Dead Reckoning (juegos en red) • Los juegos en red tienen problemas a la hora de sincronizar los diferentes jugadores en cada ordenador

• Lo que todos los jugadores vean en sus ordenadores debe ser lo • •

mismo Una primera solució solución es mandar todos los movimientos que se realizanà realizan à Coste excesivo de recursos de red La segunda solució soluci ón es el dead reckoning – Só lo se mandan algunos datos. Cada ordenador independientemente hasta que se llega a un umbral de error – Si se llega al umbral se vuelven a actualizar los datos

planifica

20

10

J2ME :Introducci :Introducció ón • Se

llama J2ME (Java Micro Edition Edition)) a las implementaciones de Java par dispositivos mó móviles • Hay varias implementaciones dependiendo del tipo de dispositivo Teléfonos, PALM, Blackberry à CLDC y MIDP PDAs Pocket PC à Personal Java (jdk 1.22) Blackberry à API propia

• En esta presentació presentaci ón se ve la implementació implementaci ón

relacionada con Telé Tel éfonos Móviles, PALM y Blackberry (API MIDP)

21

Introducció Introducci ón

El universo de J2ME.

Imagen de [Knudsen2003]

22

11

Introducció Introducci ón

Componentes software de MIDP.

Imagen de [Knudsen2003]

23

Primer Programa: Hola Mundo • A continuació continuaci ón se va a realizar el primer programa: • • • 1.

HolaMundo Primero se compilará compilar á y ejecutará ejecutar á en el PC en un emulador Despué Despu és se enviará enviar á al mó m óvil y se ejecutar á en él. Los pasos son los siguientes: Con un editor de texto escribir el programa de la transparencia siguiente. Guardarlo como HolaMundo.java

24

12

Primer Programa: Có Código y explicació explicación import javax.microedition.midlet.*; import javax.microedition.lcdui.*; public class DBVHolaMundo extends MIDlet implements CommandListener { private Display pantalla ; private TextBox texto1 ; private Command salir; public DBVHolaMundo() { pantalla = Display.getDisplay(this); // Devuelve un manejador de la pantalla salir = new Command("Salir", Command.SCREEN, 1); // Crea un nuevo comando para Salir texto1 = new TextBox("Hola Mundo", "Mi primer MIDlet", 40, 0); // Crea un cuadro de texto texto1 .addCommand(salir); // A ñade el comando al cuadro de texto texto1 .setCommandListener(this); // Indica que la gestión de evento se hace en esta clase } public void startApp() { // Se ejecuta al comenzar la aplicación pantalla .setCurrent(texto1); // Muestra en la pantalla el texto y el comando } public void pauseApp() { } // Se ejecuta si se interrumpe la aplicación public void destroyApp(boolean unconditional) { } // Se ejecuta al terminar public void commandAction(Command c, Displayable displayable) { // Gestiona los eventos if (c == salir) { // Si el evento es pulsar el botón salir, termina destroyApp(false); notifyDestroyed(); } } }

25

Primer Programa: Proyecto 2. Abrir el programa Ktoolbar (c: (c:\\j2me j2me\\WTK23 WTK23\\bin bin)) 1. Seleccionar New Project

•Esto crea la siguiente estructura en c:\ c:\ j2me \WTK23 WTK23\\ apps apps\\ HolaMundo •Hay que guardar en src el có có digo (.java) (HolaMundo.java (HolaMundo.java anterior) •En classes se guardará guardarán los (.class (.class)) •En bin se guardará guardarán los ficheros que hay que enviar al mó mó vil (.jad (.jad y .jar .jar)) 26

13

Primer Programa: Generació Generación 2. Ktoolbar 2. Compilar/Enlazar el có có digo con el botó botó n Build

27

Primer Programa: Ejecució Ejecución en emulador 2. Ktoolbar 3. Seleccionar el emulador en el desplegable Device 4. Ejecutar mediante el botó bot ón Run

•Siguiendo estos pasos se pueden probar todos los programas que se realicen en el emulador. El siguiente paso será ser á pasar el programa al telé telé fono 28

14

Primer Programa: Preparació Preparación para el mó móvil 2. Ktoolbar 5. Editar datos del proyecto: (Project ( Project àSettings Settingsà àRequired Required))

Nombre del proveedor

Nombre del perfil. Por defecto es MIDP-2.0. Si el teléfono sólo es compatible con MIDP -1.0 es IMPRESCINDIBLE cambiarlo. (Por ejemplo, para el Nokia 3650)

Información sobre versiones soportadas para todos los dispositivos: http://jal.sun.com /webapps/device/device

6. Generar los fichero .jar .jar y .jar .jar:: Project àPackage Packageà àCreate Package 7. Los 2 ficheros a enviar al telé telé fono son: HolaMundo.jad HolaMundo.jar,, guardados en c: HolaMundo.jar c:\\ j2me \WTK23 WTK23\\ apps apps\\ HolaMundo HolaMundo\\ bin

y 29

Primer Programa: Enví Envío al telé teléfono bluetooth 3. Enviar los 2 ficheros al telé tel éfono por bluetooth 1. Instalar dispositivo bluetooth en PC (Como ejemplo se explicará explicar á n los pasos para el dispositivo Bluetooth 3Com) 2. Arrancar en el PC el Bluetooth Connection Manager (o programa similar que traiga el Bluetooth Bluetooth)) 3. Encender en el telé teléfono el bluetooth (Normalmente: Conexionesà Conexiones à Bluetooth Bluetoothà àActivar Activar)) 4. Si todo va bien J el PC verá verá el telé tel é fono. Con el botó botó n derecho sobre el icono seleccionar enviar archivo 5. Seleccionar los 2 ficheros HolaMundo.jad y HolaMundo.jar y enviarlos al telé teléfono

30

15

Primer Programa: Enví Envío al telé teléfono bluetooth 3. Enviar los 2 ficheros al telé tel éfono por bluetooth 6. En el telé teléfono se recibirá recibirán 2 mensajes. Uno por cada fichero. Aceptarlos. 7. En el menú men ú mensajes mensajesà à Buzon de entrada del telé teléfono Abrir el fichero HolaMundo.jad HolaMundo.jad.. Aparecerá Aparecerá un mensaje como: ¿Instalar HolaMundo 1.0 suministrado por David Bueno?

8. Donde el nombre de la aplicació aplicación, la versió versió n y el suministrador son los que se hayan seleccionado al editar los datos del proyecto 9. Si la instalació instalación es correcta, se podrá podr á ejecutar la aplicació aplicación en el menú menú del telé teléfono Aplicaciones Aplicacionesà à Hola Mundo

31

Interfaz de Usuario en J2ME • Hay 3 formas como un usuario puede interactuar con las aplicaciones

– Command. Command.- Son acciones que se asocian a los botones que el usuario pulsa en el dispositivo para realizar alguna tarea – Screen Screen..- Interfaz de alto nivel con alertas, formularios, cuadros de texto, radiobuttons radiobuttons,, checkbox checkbox,, listas similares a las utilizadas en HTML – Canvas. Canvas.- Interfaz de bajo nivel en la que el usuario trabaja a nivel de pixel pixel,, utilizadas para aplicaciones como juegos

32

16

Programa: DBVCommands (Commands Commands))

33

Programa: DBVChoice (Screen Screen))

34

17

IU: Canvas y GameCanvas • Canvas es la clase bá básica para trabajar con la pantalla a bajo nivel: Dibujar pixels pixels,, lineas lineas,, figuras, etc.

• GameCanvas mejora Canvas incluyendo carga de Imá Im á genes, Sprites Sprites,, • • •

TiledLayers y un mejor control de los botones del telé teléfono Estas clases son la utilizada para hacer los juegos Java que han hecho tan populares los mó m óviles La programació programació n de juegos se convierte en algo mucho má más sencillo que en cualquier otra plataforma El programador no tiene que preocuparse de problemas clá clásicos como: – Refresco de pantalla, doble buffering buffering,, colisiones, gestió n de capas o mapas

• Las clases anteriores se encargan de todo el ‘trabajo sucio’ sucio’

35

IU: GameCanvas (Ciclo de vida de un juego juego)) • Las aplicaciones no

suelen utilizar directamente GameCanvas,, sino que heredan de esta clase GameCanvas • Como mínimo hay dos clases clases:: Una para el midlet principal y otra para la clase que hereda de GameCanvas • El juego suele ejecutarse en una hebra independiente con el siguiente bucle principal // Dentro de la clase que hereda de GameCanvas public void run() { Graphics g = getGraphics(); while (jugando == true) { colision(); // Controla colisiones leeTeclado(); // Lee acciones del usuario dibujaPantalla(g); // Dibuja la escena actual try { Thread.sleep(retraso ); } // Retraso entre iteraciones catch (InterruptedException ie) {} } }

36

18

IU: GameCanvas GameCanvas:: Sprites • La clase Sprite maneja los personajes del juego • Carga del Sprite en un fichero con 5 posiciones • Se indica el tamañ tamaño de un elemento 24

Sprite babosin; Image imagen; imagen = Image.createImage("/babosin.png"); babosin = new Sprite (image,16,24);

0

1

16 2

3

4

24

80

Fichero: babosin.png

37

IU: GameCanvas GameCanvas:: Sprites • Para mostrar el sprite hay que seleccionar la posició posici ón de pantalla • Tambi Tambié én cual de los frames se va a mostrar • Y có cómo quiere mostrarse: Su posició posici ón original, invertida o girada en x grados

Sprite.TRANS_NONE , Sprite.TRANS_MIRROR, Sprite.TRANS_ROT90, Sprite.TRANS_ROT180, Sprite.TRANS_ROT270, Sprite.TRANS_MIRROR_ROT90, Sprite.TRANS_MIRROR_ROT180, Sprite.TRANS_MIRROR_ROT270

• Para dibujar se necesita un Graphics g que puede obtenerse con: Graphics g = getGraphics getGraphics(); ();

babosin.setFrame(3); // Selecciona el frame (4ª imagen de las 5) babosin.setTransform(Sprite.TRANS_NONE ); // Muestra la imagen en su posición original babosin.setPosition(100,100); // Colocará en la pantalla el sprite en la posición (100,100) babosin.paint(g); // Dibuja el Sprite.

38

19

IU: GameCanvas GameCanvas:: TiledLayer

Deco.png

+

=

Image tileImages = Image.createImage("/deco.png"); // Carga la imagen con los elementos de la pantalla TiledLayer decorado = new TiledLayer(40,24,tileImages ,8,8); // reserva espacio para la capa del decorado // Selecciona los 40x24 elementos del decorado según su posición en deco.png // 0 indica que no hay nada en esa posición int[] map= {42,41,42,41,1,2,42,41,1,2,42,41,1,2,42,41,1,2,42,41,1,2,42,41,1,2,42,41,1,2,42,41,1,2,42,41,42,41,1,2, 264,264,264,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,264, 264,264,264,0,0,248,249,250,251,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,264, … } // Guarda los elementos del mapa en la posición de pantalla que corresponda for (int i=0; i < mapa.length; i++) { int columna = i % 40; // Se divide por el número de elementos de una fila =numero de columnas int fila = i/40; decorado.setCell(columna,fila,mapa[i]); // Actualiza 1 a 1 todas las celdas }

39

IU: GameCanvas GameCanvas:: TiledLayer+Sprite+Image

+ +

= // Dibuja la imagen de fondo g.drawImage(fondo,decox/4,decoy/4,0); decorado.setPosition(decox,decoy ); // Actualiza el decorado controlcapas.paint(g,0,0); // Pinta el decorado // Actualiza el personaje babosin.setPosition(babosinX,babosinY ); babosin.paint(g ); // pinta el personaje 40

20

IU: GameCanvas GameCanvas:: Scroll Fondos TRUCO • En muchos juegos de plataformas los escenarios pueden estar a diferentes distancias • Los escenarios má m ás lejanos deben moverse a menor velocidad que los cercanos para producir un movimiento real • Es fá fácil conseguir ese efecto dá dándole al primer plano unas coordenadas (x,y (x,y)) y a cada plano má más lejano se le asignará asignar á un (x/distancia,y (x/distancia,y/distancia) /distancia) • En el ejemplo anterior el fondo se desplaza 4 veces má más lentamente que el decorado principal // Dibuja la imagen de fondo g.drawImage(fondo,decox/4,decoy/4,0);

41

IU: GameCanvas GameCanvas:: Colisiones • Se puede mirar en cada momento si un Sprite choca con

otro Sprite, Imagen o TiledLayer • Las colisiones se pueden hacer a nivel de pixel (pixelLevel pixelLevel=true) =true) o aproximando la imagen a un rectangulo (pixelLevel pixelLevel=false) =false) // Mira si el sprite babosin choca con la imagen situada en x,y choca=babosin.collidesWith(imagen,x,y,pixelLevel); // Mira si el sprite babosin choca con la otro Sprite choca=babosin.collidesWith(enemigo,pixelLevel); // Mira si el sprite babosin choca con un tiledLayer choca=babosin.collidesWith(escenario,pixelLevel);

42

21

Programa: DBVBabosin • En el siguiente programa se combina todo lo relacionado • • • •

con GameCanvas GameCanvas:: Sprites Sprites,, Imá Im ágenes, TiledLayer TiledLayer,, LayerManager,, Control de Teclado LayerManager Teclado… … Con esto se podrí podría hacer prá prácticamente cualquier juego en 2D Se va a utilizar para el midlet la misma clase que en (DBVGameCanvas DBVGameCanvas)) Por otro lado, se va a utilizar una clase que hereda de GameCanvas (BabosinCanvas BabosinCanvas)) en la que se desarrolla el juego El programa carga una imagen de fondo, un tiledLayer y un sprite y cuando se mueven los cursores, el sprite se desplaza por el fondo que tambié también se desplaza, detectando posibles colisiones 43

Programa: DBVBabosin

Con los cursores se desplaza el personaje, el escenario y el fondo

44

22

RMS (Record Management System) • • • • •

El almacenamiento en J2ME se realiza a travé través de RMS No existen ficheros RMS permite guardar registros numerados El contenido de un registro es un array de bytes La gestió gestió n de todo lo que haya en el registro debe hacerla el usuario. – Por ejemplo, si se guarda una cadena y un nú número será será el usuario el encargado de escribirlo y leerlo correctamente convirtiendo los datos a arrays de bytes

• La clase RecordStore es la encargada de la manipulació manipulación de los registros

Id registro

contenido

1

valor1

2

45

Bluetooth:: Mario Karts Bluetooth • Juego de coches para dos jugadores – Se juegan en dos mó mó viles con bluetooth – Scroll de pantalla – Música de fondo – Uso de má máscaras y puntos de control – Minimapa – La pantalla se ajusta al tamañ tama ño del telé teléfono

Autores: JESUS BEAS ARCO PABLO GÓMEZ JIMÉNEZ FCO JAVIER RODRIGUEZ PABLO SANTANA BASTIDA

46

23

Bluetooth:: Mario Karts Bluetooth • Estructura clientecliente-servidor – Uno de los mó mó viles hace de servidor de la partida – El otro se conecta como cliente

• Servidor – Se da de alta el servicio bluetooth para que otros dispositivos lo encuentren – Permanece a la espera hasta que algú alg ún cliente inicie la conexió conexi ón

• Cliente – – – –

Busca los dispositivos bluetooth que haya en las proximidades Busca en cada uno de ellos el servidor del juego El usuario selecciona una de los servidores disponibles Se inicia la conexió conexi ón

• Conectados – Una vez conectados, cada movimiento se enví envía al otro telé teléfono 47

Bluetooth:: Mario Karts Bluetooth

48

24

Problema: Versiones de Prueba • Cuando se quiere entregar una muestra de un programa antes de venderlo hay varias opciones: – Limitar opciones – Fecha lílímite de uso – Nú mero limitado de ejecuciones

• Se pide utilizando RMS hacer una aplicació aplicaci ón que sólo pueda ejecutarse 5 veces

– Cada vez que se ejecuta debe decirnos cuantas pruebas nos quedan

• Puede ser necesario otro programa que inicialice o modifique el nú número de evaluaciones posibles

49

Comunicaciones HTTP • J2ME permite hacer conexiones por HTTP • Esto permite hacer cualquier tipo de aplicació aplicaci ón en la que

el dispositivo m óvil será ser á el cliente • Lo único que hay que hacer es definir un protocolo propio para interpretar los mensajes entre el cliente y el servidor • Lo má m ás sencillo es que el servidor devuelva texto plano • Por ejemplo, el telé tel éfono pide por el mé método get la lista de citas del dí día, y el servidor las devuelve: Cliente (Teléfono abre esta dirección)

http://miservidor.es/citas.jsp?idusuario=bueno&fecha=hoy

El servidor devuelve texto plano

Citas para hoy: 9:00-14:00 Curso de J2ME 16:00-20:00 Examen 1ºTeleco

50

25

Vibraci ibració ón, iluminació iluminación • Para hacer vibrar el telé tel éfono a partir de MIDP 2.0 – Display.vibrate Display.vibrate(100) (100) ..- Tiempo en Milisegundos – Display.flashBacklight(tiempo Display.flashBacklight(tiempo). ).-- Enciende la luz del telé teléfono

• Para probar estas caracterí caracter ísticas se va a mostrar un • • • •

programa que permitirá permitirá usar el telé tel éfono para dar masajes o como una linterna ::- ) En el emulador la vibració vibraci ón se muestra con un zumbido La luz de fondo se muestra con un marco de color No todos los telé tel éfonos permiten controlar la luz y el vibrador Estos efectos son muy útiles para los juegos, como la vibració vibraci ón de los keypad keypad/volantes /volantes de las consolas 51

Programa:: DBVMasaje Programa

zumbido

52

26

Sonidos • Tonos en la clase Manager playTone(int nota, int duracion, int volumen)

• Las notas se asocian igual que en un midi midi,, cada tecla del piano es una nota • C(60 C(60--440Hz)C#(61)D(62)D#(63)E(64)F(65)F#(66) G(67)G#(68)A(69) • Volumen má m áximo=100 Manager.playTone(60,1000,100)

53

Juegos de mis alumnos del Master 2004/05

Knight Rider

Master Esquivador

Nemo Persia

Puzzle Booble Star Battle

4 en raya

Mario Karts

54

27

Para ampliar ampliar… … • • • • •

Servicios Web (jsr172) Bluetooth/OBEX (jsr82) Grá Gr áficos 3D (jsr184) Sonidos y Música sica.. MMAPI(Mobile Media APIAPI-jsr135) Uso de push para iniciar aplicaciones desde un servidor en el movil • Location (jsr179) Localizaci Localizació ón geogr geográ áfica (CLDC 1.1) Cada especificación jsrXYZ se puede encontrar en: http://jcp.org/en/jsr/detail?id=XYZ

55

Referencias Libros sobre programació programación de Juegos (Algunas imá imágenes tomadas de estos libros) libros) • Steve Rabin, “AI Games Programming Wisdom 1 y 2” 2”, 2002, 2004 de Ed. Charles River Media • Serie “Games Programming Gems 1, 2 y 3”,2000,2001,2002 de Ed. Charles River Media • Mat Buckland, “AI Techniques for Game Programming” Programming”, 2002

• Antonio Ruiz, “Có mo Programar Videojuegos en Windows” Windows”, 2001, Ed. Rama

56

28

Referencias Libros • Jonathan Knudsen, “Wireless Java: Developing with J2ME” J2ME ”, 2nd edition. Ed. APress APress,, 2003. • James Keogh, “The Complete Reference: J2ME” J2ME ”, Ed. Osborne, 2003. • Jason Lam, “J2ME & Gaming” Gaming”, 2004. http://www.jasonlam604.com

Art ículos Artí • Qusay H. Mahmoud Mahmoud,, “Wireless Application Programming with J2ME and Bluetooth””, 2003 Bluetooth http://developers.sun.com/techtopics/mobility/midp/articles/bluetoot http ://developers.sun.com/techtopics/mobility/midp/articles/bluetooth1/ h1/ y /bluetooth2/

• Jonathan Knudsen, “Creating 2D Action Games with the Game API API””, 2003. http http://developers.sun.com/techtopics/mobility/midp/articles/game/ ://developers.sun.com/techtopics/mobility/midp/articles/game/ Webs de Inter Interé és Forum Nokia. http:// http://www.forum.nokia.com www.forum.nokia.com// Java en sun. http://java.sun.com/ Dispositivos que soportan j2me: http://jal.sun.com/webapps/device/device

57

29

Related Documents