Archive for the ‘ gameofzones ’ Category

Game of Zones: Database

Buenas noches a la (cuarta) entrega semanal de Game of Zones, hoy hablaremos sobre la base de datos que usará la aplicación web.

Al principio pensé en usar simplemente variables en memoria para cargar los datos desde la API de foursquare, pero dado que tendría que guardar información propia de la aplicación (por ejemplo, las distintas zonas con sus reyes) decidí usar una base de datos, lo cual creo que es más limpio y eficiente (sobre todo con grandes cantidades de datos, que espero algún día tenerlas).

La base de datos estará compuesta por varios tipos de datos, como por ejemplo, usuarios o venues (cada uno de los lugares de foursquare). Cada uno de estos no será más que un tipo de dato propio de foursquare, formateado para eliminar los atributos que no nos interesan y para añadir otros que hacen falta. Además, se van a añadir tipos de datos propios de Game of Zones, como por ejemplo cada una de las zones del mapa.

Lo siguiente que quiero comentar es la facilidad con la que Django te permite trabajar con bases de datos. De una manera asombrosamente puedes actualizar la existente (si la has configurado al crear el proyecto Django usa una base de datos con varios datos propios) con tus tipos de datos, tus tablas y tus instancias.

Usando Python creas los modelos de datos que necesitas de una manera intuitiva, ayudado por la documentación para las dudas, y simplemente sincronizando la base de datos, Django te genera automáticamente todas las tablas necesarias, incluyendo tablas heredadas o tablas necesarias para relaciones muchos-a-muchos.

Después de esto, simplemente creando objetos de las clases definidas anteriormente y usando el método save() de estas, las instancias quedan registradas y guardadas en la base de datos. Además, también nos permite realizar consultas sin tener que escribir nada en SQLite (que es el sistema de gestión que he usado en el proyecto) por lo que trabajar con la base de datos no es más que un juego de niños.

No tiene mucho más el trabajar con bases de datos gracias a Django. La complicación será la que tú le quieras poner, o la que requieran tus datos.

Para el proyecto estoy usando sqlite3, que viene integrado en Django, por lo que no necesito ninguna librería externa (para usar Oracle, PostgreSQL o MySQL sí que me haría falta una).

Para terminar, decir que ya están activos y actualizándose continuamente los repositorios del proyecto tanto en Github como en la forja de rediris.

Game of Zones: La decisión que condicionó el proyecto

De nuevo estoy aquí para seguir escribiendo sobre Game of Zones (GoZ) con la vista puesta en la fase local del CUSL VI (Concurso Universitario de Software Libre).

El miembro del jurado que le toque revisar mi proyecto, no lo tendrá nada fácil, pues es tan poco el progreso físico que terminará rápidamente su trabajo. Por esto quiero escribir este post, no como escusa, sino como explicación.

A la hora de iniciar cualquier proyecto, siempre se plantean las mismas dudas: ¿qué herramientas utilizamos? ¿sabemos manejar las herramientas que están a la «última» (entiéndase por esto las que tienen más éxito en el mercado)? ¿merece la pena perder tiempo en aprender herramientas nuevas, o seguimos usando las que ya conocemos? Bien, pues mi punto de vista respecto a este tema siempre ha sido el mismo: «el saber no ocupa lugar». A falta de empleo y de quizás «encontrar mi verdadera vocación», creo que lo mejor es probar todo lo que se pueda, para así tener más donde elegir.

Así pues, decidí embarcarme en esta aventura y desarrollar una aplicación web (anteriormente ya había probado con el desarrollo de un videojuego en la facultad). Lo primero es lo que ya he comentado, ¿qué herramientas uso?.

Yo ya conocía herramientas de desarrollo web, tales como HTML, CSS, JavaScript o PHP, y perfectamente era capaz de desarrollar una aplicación web (había trabajado un poco con CodeIgniter) pero mis amigos, más específicamente un django developer, me comentaban de la facilidad y de la versatilidad de la dupla Python+Django. Sin pensármelo dos veces decidí la opción más arriesgada, y la que con un gran sacrificio en tiempo, me iba a reportar mayores ventajas para el futuro.

Así pues me embarqué en una aventura de aproximadamente tres meses, en los que compaginaba las clases con el aprendizaje autodidacta de Python, en un principio, y de Django (cuando ya dominaba más o menos Python). Tras leerme varios libros, tras muchos programas de prueba y muchos quebraderos de cabeza puedo decir que he aprendido más de lo que pensaba.

En Navidad empecé con el desarrollo propiamente dicho, pero me di cuenta de que aún me faltaba mucho para poder desarrollar fluidamente, continuas miradas a los libros para consultas y nuevas trabas me hacían ir muy lento. Continuas luchas con la API de fousquare y con SQLite (que también he tenido que aprender a usarlo) me hicieron retrasarme.

Por fin tras el parón por exámenes pude ponerme al 100% con el proyecto, y desde febrero sólo trabajo en él. La situación actual es la siguiente: trabajo en dos frentes distintos. Por un lado, trabajo en el diseño de la web aprendiendo a usar Bootstrap, que es una interfaz para HTML, CSS y JavaScript que nos permite de manera muy sencilla diseñar las páginas de la aplicación web. Mi negada visión para el diseño y la elección de colores me está dificultando esta tarea, pero por suerte cuento con gente que está ayudándome con las decisiones.

Por otro lado trabajo en el Sistema de Gestión de Base de Datos, usando Python+Django y SQLite para el acceso a los datos. Este trabajo es más sencillo puesto que ya lo he realizado en la facultad antes, así que espero que avance más rápidamente.

Trabajo una media de 6 a 8 horas diarias, repartiendo entre mañana y tarde, y los fines de semana, me relajo un poco más y quizás no llegue a 4 horas.

La forja apenas la he usado, y para colmo este fin de semana ha estado inactiva por problemas internos, así que la actualizaré con la menor brevedad posible.

Espero escribir de nuevo con más problemas que me vaya encontrando y sus respectivas soluciones.

Game of Zones: El proyecto

¡Buenas de nuevo! Hace mucho que no escribo (para variar), soy un desastre…

Estoy aquí de nuevo con motivo de la fase local del CUSL VI (Concurso Universitario de Software Libre), que comienza si no me equivoco hoy mismo. Vamos a comentar muchas de las cosas de Game of Zones (GoZ), aunque seguramente me dejaré otras muchas fuera.

Antes de comenzar, dejaré un enlace al primer artículo que escribí sobre el proyecto: Game of Zones: Introducción, por si es la primera vez que leéis acerca de él.

El proyecto en sí consta de dos partes independientes, pero necesarias en su conjunto. Por un lado, una aplicación web que se encargará de conectar al usuario con su cuenta de foursquare y obtener los datos y la información necesaria, almacenándola en una base de datos interna. A partir de aquí, se trata esta información y se generan diversos resultados, que se muestran al usuario en la aplicación web.

¿Qué clase de resultados? Pues el GoZ está orientado al ocio, más concretamente al mundo de los juegos de mesa, pero con una vuelta de tuerca más. Así pues mi intención es que el proyecto se base en la obtención de puntos en base a los check-in‘s que el usuario haga en foursquare, y a partir de estos puntos que el usuario pueda conquistar los territorios (previamente definidos) pertenecientes a otros usuarios ya sea con batallones (estilo Risk) o canjeando puntos por hechizos o habilidades extra (Aún tengo que evaluar ambas posibilidades y decantarme por una).

¿Cómo se mostrarán los resultados? Pues los territorios se visualizarán mediante un mapa (usando OpenStreetMap) y la puntuación y demás estadísticas se mostrarán de manera visual en una leyenda.

Por otro lado, el proyecto contará con una aplicación móvil que permitirá al usuario, además de tener una versión móvil de la aplicación web, hacer check-in en foursquare sin necesitar el cliente del mismo, haciendo GoZ mucho más independiente. En un principio se trabajaría en la aplicación para Android, pero no se descarta el porte a iOS.

Estas son las dos partes bien diferenciadas del proyecto. Actualmente me encuentro desarrollando la aplicación web. Pero eso lo comentaré en otro post más detalladamente.

Game of Zones: Introducción

¡Buenas! Estreno esta categoría de muy buena gana, ya que espero que esta sea la más usada los próximos días/meses. Antes que nada dar la bienvenida al blog a los que lo visiten a través de la web del CUSL VI (Concurso Universitario de Software Libre).

Empecemos por el principio pues, ¿qué es la frikada esa de Game of Thrones Zones? Pues la frikada esta, es mi PFC (Proyecto Fin de Carrera) con la que espero demostrar a un tribunal de profesores que los más de tres cuatro cinco años que llevo en la facultad han servido para algo.

La idea surgió de un amigo, Pablo, que me comentó que se le podía sacar mucho provecho a acciones simples como hacer un check-in en el lugar dónde estemos. A partir de ahí, jugando con la gamificación, surge la idea de Game of Zones. Para empezar a comprender de qué va el proyecto, hay que explicar algunos conceptos que pueden ser engorrosos, para ellos en este blog he escrito varios artículos que os ayudarán a comprender mejor el por qué de Game of Zones:

Después de esto espero que os haya quedado claro qué conseguimos haciendo un check-in (a parte de satisfacer a nuestros amigos más cotillas) y las posibilidades que nos presenta de crear aplicaciones basadas en la geolocalización.

Tras todo este rollazo, al fin vamos a pasar a comentar en qué consiste Game of Zones (GoZ a partir de ahora). El proyecto consistirá en una aplicación web que usando los datos y estadísticas que obtenemos de foursquare (por un lado) y las funcionalidades de un servicio de gestión de mapas, como por ejemplo Google Maps o Open Street Map (por otro) crear una aplicación que simule el juego Risk con algunas variantes (aún no están claras cuáles serán las reglas) en un mapa «real», entiendo por real un mapa de nuestra cuidad, comunidad autónoma o país.

Esa es la base de GoZ, entraré en más detalle próximamente, pero quería escribir esto para dar una idea inicial de cómo será GoZ. Gracias y un saludo.