viernes, 4 de julio de 2008

Game Over

Acabé el proyecto, con ello también el Máster y mi estancia en Oviedo, así que básicamente esta es la última entrada en el blog. Gracias a los miembros de HCI por leer esto y por las buenas ideas aportadas.

sábado, 24 de mayo de 2008

Pantallas PDA

Estas son algunas capturas de pantalla del juego en la PDA. La interfaz gráfica es MUY sencilla.
Login


Inmediatamente después del login te muestra la pantalla para elegir una partida que tengas iniciada. Se muestra el nombre del juego y la fecha de inicio de cada partida. Puedes entrar a una de esas partidas o elegir iniciar una partida nueva.

Para iniciar una partida nueva eliges el juego y, de la lista de tus contactos, eliges con quien quieres jugar.

Una vez dentro de una partida, el mapa se muestra como se ve a continuación. Los textos no forman parte de la pantalla. Los he añadido yo a esta imagen con el fin de explicar la pantalla, pero no sé si sería buena idea que el juego los mostrara. Las posiciones de los puntos las obtengo a partir de las coordenadas geográficas con que se crea el juego, convertidas a coordenadas cartesianas y después a escala de acuerdo a la pantalla del dispositivo. La foto que se ve es la imagen con que se registra el jugador en el portal web. Esa imagen el jugador la puede cambiar cuando quiera desde el mismo portal. La posición de la imagen se muestra de acuerdo a las coordenadas GPS. También se muestra la posición de otros jugadores en la partida que estén conectados en ese momento. He fijado un timeout de 5 minutos, si el usuario no actualiza su posición en 5 minutos asumo que no está conectado.


Finalmente, esta pantalla en donde puedes ver el nivel en que estás, los puntos y recursos que tienes.

En los próximos días estaré trabajando en el resto de la documentación, manuales de usuario y esas cosas. Si alguien quiere probar el juego, lo que sería de mucha utilidad, le paso el fichero y una explicación más amplia de como funciona. Es necesario tener Windows Mobile 5 o superior porque estoy utilizando el GPS Intermediate Driver. Yo por ahora lo he probado en una iPAQ hw6945.

domingo, 11 de mayo de 2008

Conexión WiFi

Parece que ha quedado resuelto uno de los pendientes que me quedaba en la aplicación para el dispositivo móvil. Finalmente lo resolví mediante eventos cada vez que cambia el status de la conexión. La librería que revisa si el dispositivo tiene conexión a Internet tiene un background thread que lanza un evento cada vez que cambia el estado de la conexión. La interfaz de usuario recibe el evento y si el dispositivo está conectado reanuda las invocaciones a los servicios web.

jueves, 8 de mayo de 2008

Gestión de usuarios y contactos

Siguiendo alguna sugerencia de Tejo he implementado la gestión de contactos utilizando FOAF (Friend of a Friend). Ha sido un ejercicio interesante dado que luego de dar Web Semántica en el máster lo dejé registrado como un mito en mi cerebro. Así que ha valido la pena ponerlo un poco en práctica. Entonces las cosas han quedado implementadas de la siguiente forma. Como todo en el proyecto esto funciona mediante servicios web porque siempre necesito acceder desde dos clientes distintos, un portal web y la aplicación del dispositivo móvil. Entonces tengo publicados dos nuevos servicios, uno para gestión de usuarios y otro para gestión de contactos. Lo típico, registro de usuario, modificar datos, cancelar la cuenta y validar el login. En cuanto a la gestión de contactos, puedes agregar contactos (friends) y luego es con estos contactos con quienes puedes jugar partidas. En base de datos sólamente tengo la información relativa a la autenticación de usuario y en ficheros xml tengo la descripción del usuario en FOAF. En el resultado final me parecen interesantes dos cosas, la primera es que podrías registrarte cargando directamente tu fichero FOAF (evitando registrarte una y otra vez en distintas aplicaciones) y la segunda es que una vez teniendo la red de amigos de un usuario, podrían iniciarse partidas con sus conocidos, con los conocidos de sus conocidos y así a distintos niveles.

jueves, 10 de abril de 2008

GPS

En las últimas semanas estuve (además de estar de vacaciones, desde luego) trabajando con el tema del GPS. Para empezar tengo ya implementado el "algoritmo radial" para saber si un punto está dentro de un polígono. Hasta ahora parece que funciona correctamente. He conseguido trabajar con el GPS Intermediate Driver utilizando el código de ejemplo que viene con el SDK de Windows Mobile y parece que funciona. Tuve algún problema porque aparentemente hay un error en alguno de los códigos (concretamente el método ParseDegreesMinutesSeconds de la clase GPSPosition) y entonces el GPS me ponía sobre el mar. Encontré las correcciones y ahora parece darme una coordenada con algún error de unos metros, lo que supongo será normal (ya no me pone sobre el mar én Gijón, ahora me pone sobre la piscina de la universidad). Quiero hacer más pruebas, pero el tiempo en Oviedo ahora dice que no es el mejor momento para andar por ahí probando el GPS. Así que por el momento pasaré a otras cosas y cuando el sol decida visitar Oviedo nuevamente retomaré las pruebas con el GPS y decidiré cuál será la mejor forma de manejar el error del GPS.

jueves, 21 de febrero de 2008

Juegos

Hola. Escribiré un poco sobre como serán los ficheros XML para definir los juegos. Los juegos están formados básicamente por estos elementos.
  1. Sistema de puntuación.
  2. Lugares. Que corresponderán a las coordenadas geográficas.
  3. Personajes. El número de personajes define el número máximo de jugadores.
  4. Recursos. Son objetos en el juego sobre los que se realizan acciones.
  5. Niveles. En cada nivel se pueden definir recursos y puntos que el personaje debe tener para superar ese nivel.
  6. Acciones. Una acción siempre es con un recurso y en un lugar. Las acciones posibles son las siguientes: hacer que un recurso esté disponible, comprar un recurso, alquilar un recurso, intercambiar recurso con otro jugador, perder un recurso, recoger un recurso.

Las acciones son lo más importante. En cada acción se pueden definir recursos y puntos que el personaje debe tener para poder realizar esa acción. Se pueden definir acciones opcionales u obligatorias. Y cada acción puede dar o quitar puntos al personaje. Las acciones también pueden tener un requisito mínimo en tiempo, es decir, algo que no puede suceder hasta después de un tiempo de iniciado el juego.

Dado esto, en el UC hablamos de las reglas del juego para el GeoMonopoly. Es posible comprar, alquilar propiedades, venderlas a otro jugador. Una idea (gracias a Jaime) para simular la cárcel fue que en determinado lugar el usuario recogiera un objeto que le impidiera hacer otras cosas, y para deshacerse del objeto tuviera que ir a un determinado lugar. De esta forma obligaríamos al jugador a moverse por los lugares del juego. Hablamos también acerca de la necesidad de darle al jugador alguna motivación para pasar por las propiedades que son de otro y para no apagar la PDA mientras recorre la ciudad. Por ejemplo, mientras el jugador no está jugando, no paga alquiler pero tampoco cobra el alquiler de sus propiedades.

Se aceptan toda clase de sugerencias.

viernes, 1 de febrero de 2008

Señales de vida

Entre terminar las asignaturas del máster, vacaciones y finalmente retomar el trabajo llevo un tiempo sin escribir aquí. Pero ahora explicaré en qué va este tema.

Estoy implementando un primer prototipo del motor de juegos principalmente con dos objetivos: comprobar que es posible definir los juegos en lenguaje XML y probar las reglas de los juegos. Tengo ya una versión del GeoMonopoly (se compran propiedades, se paga alquiler, ... ). En el caso del GeoMonopoly lo único que no veo muy claro como hacer es lo de subastar las propiedades, le daré más vueltas al tema. En los próximos días escribiré otro post con los detalles de como serían los ficheros XML para definir los juegos.