Primero de todo decir que he pensado en cambiar la forma de escribir estos posts y en lugar de ir a lo técnico (código) mejor explico qué he hecho o voy a hacer. Después de todo el código estará ahí y hay quien seguirá el proyecto por el juego y no por el desarrollo.
Dicho queda, a otra cosa. Tras montar la aplicación e importar los juegos continué con la creación de la partida. El usuario tiene partidas creadas a su disposición, y al crear una se crea la sesión, se crea el jugador con los parámetros iniciales, se crean varias tiendas… todo lo necesario para empezar, vaya. Y en este punto debería continuar con la pantalla principal pero el mapa me traía de cabeza, así que me decidí a seguir por ahí y luego ya juntaría pedazos.
Para el mapa tenía una lista de requisitos que había que cumplir sí o sí:
- Debe ser muy extenso
- Debe poderse hallar el camino más corto entre dos puntos y el tiempo en recorrerlo
- Para la temática debería estar ambientado en Japón (Tokyo)
Supongo que en mi cabeza hay más requisitos, pero los más importantes eran estos. Si fuera diseñador podría crear el mapa a mano, pero me apaño con adaptar lo que ya existe. He añadido Leaflet y descargado Tokyo de Openstreetmap para tener un mapa estilo Google Maps. Guardé todos los edificios en base de datos, sus coordenadas y si son edificios comerciales o de otro tipo. Y con esto creé una serie de funcionalidades para poder usarlas en el juego: buscar el edificio más cercano a unas coordenadas para poner ahí la home del jugador, lo mismo para guardar las coordenadas de una tienda al generarla, buscar transportes… A cada cosa le pongo un pin en la vista y ya tenemos algo funcional.
Lo siguiente que haré será implementar la búsqueda de caminos. En el juego irás de una tienda a otra a golpe de click, pero se calculará el tiempo que cuesta llegar (y las tiendas tienen horario!). En la primera versión el viaje será a velocidad constante, pero en futuras versiones quiero que el jugador tenga medios de transporte tanto propios (coche, bici) como ajenos (tren, metro) para darle un toque más estratégico al juego.
Y como dejé en las píldoras, ir implementando el tiempo.