top of page

Van Damme Devlog #01 | Territorios

  • Foto del escritor: Samuel Rodríguez
    Samuel Rodríguez
  • 18 nov 2023
  • 2 Min. de lectura

Actualizado: 19 nov 2023

Una vez definida la idea general del prototipo en el Devlog #0, el siguiente paso era implementar las mecánicas básicas. Y no hay nada más básico que el mapa de juego.


La mayoría de juegos de referencia como Risk o Europa Universalis IV suelen implementar los mapas empleando dos archivos. Un primer archivo representa un mapamundi con cada territorio de un color estrictamente diferente. Esto también es aplicable a los mares y océanos que se quieran crear.


Mapa de Provincias de EU IV

Luego se emplea otro fichero (normalmente en formato CSV) para definir datos de cada territorio en función de su color:


province_id, red, green, blue, Nombre, ...

1, 255, 0, 0, Andalucía, ...

10, 0, 255, 0, Paris, ...

20, 0, 0, 255, Londres, ...


De manera que al hacer clic en un territorio en el mapa, se obtienen sus coordenadas para leerlas en el fichero de colores y poder obtener el color de ese territorio. Luego acudimos fichero CSV con ese color para leer datos como su nombre y poder mostrarlo en pantalla. Por ejemplo, si el jugador selecciona un territorio cuyo color sea rojo, obtendrá de nombre Andalucía, ya que el código RGB del rojo es (255, 0, 0).


Pero esto no es lo que queremos para el proyecto Van Damme, este tipo de mapas son estáticos, fijos. Andalucía siempre tendrá la misma forma y nunca cambiará. La idea de este proyecto es que el mapa pueda cambiar su forma de manera dinámica por lo que está técnica no nos sirve. Aunque si quieres que muestre una implementación de esta técnica puedes escribirme y me pondré a ello.


Para lograr esa dinamicidad del mapa necesitamos que cada territorio de nuestro juego sea un objeto independiente, que pueda cambiar su forma en tiempo de ejecución mediante código. Tal vez podamos usar el componente Mesh de Unity para esa tarea.


Un Mesh es un conjunto de puntos (o vértices) y triángulos que permiten definir el contorno de un elemento. Combinando una cantidad suficiente podemos obtener figuras como la de la imagen:


Mesh de la documentación de Unity

Sabiendo esto solo necesitamos los puntos que componen cada territorio y generar los meshes correspondientes asignando esos puntos. Para obtener esos datos se usó un fichero GEOJSON, que es un formato para representar elementos geográficos, de geojson-maps, pudiendo elegir los territorios que queremos y la precisión de los datos.


Teniendo los datos 'solo' es cuestión de ir recorriendo los campos de cada territorios y generar distintos GameObjects añadiendo los puntos que lo componen al mesh. Si quieres que cree otro devlog más técnico sobre este tema puedes dejarme un mensaje en esta web o en mi perfil de Twitter (o X).


Como resultado final tenemos un mapa con todos los territorios que contiene el fichero .geojson que usamos:


Resultado Final

Y, lo más interesante de todo, cada territorio es un objeto independiente al que podremos realizarle modificaciones a nuestro gusto, como resaltar el territorio al pasar el ratón por encima, cambios de color o de forma (muy importante en la mecánica de fusionar territorios).



España como objeto independiente

Espero que este devlog te haya resultado interesante, ante cualquier duda, comentario o sugerencia no dudes en escribir en este post, en la sección de contacto de la web o en mis redes sociales.

Entradas recientes

Ver todo
Van Damme Devlog #0 | Idea

El proyecto Van Damme pretende ser un juego de estrategia al estilo 'Risk' pero cambiando el sistema de combate mediante dados por...

 
 
 

Comments


  • GitHub
  • itch-io-icon-1024x1024-fev9qpvd
  • alt.text.label.Twitter

©2023 por SamuDev. Creado con Wix.com

bottom of page