viernes, 14 de septiembre de 2012

Vassal como plataforma para probar el juego

Una vez que ya tenía los componentes del juego determinados, decidí que las primeras maquetas del juego fueran digitales.
Entre las aplicaciones de juegos de mesa que hay, al final la única que era multiplataforma y ampliamente aceptada fue Vassal. Las otras grandes aplicaciones son Cyberboard, y ZunTzu pero sólo son para Windows.

Vassal provee de multitud de elementos y opciones para permitir jugar en red, tras haber preparado un módulo con las definiciones y gráficos de cada juego en particular.
Árbol de elementos del módulo de "Aventuras en Candromedal"



Ventajas:
  • Versátil. La plataforma tiene muchísimas posibilidades. Desde simular dados, tablero, losetas tipo Carcassonne, fichas, cartas, ... hasta manejar lo que puede ver cada jugador (no todas las piezas las ven todos los jugadores boca arriba).
  • Multiplataforma. Como ya he comentado anteriormente, al ser Vassal Java, se puede ejecutar en múltiples entornos.
  • Cliente - servidor con plataforma para conversación entre los jugadores. Basado en la arquitectura Cliente - servidor, provee de la funcionalidad suficiente para realizar convesaciones entre los jugadores
  • Sigue evolucionando. Acaban de salir la versión 3.2 (en beta) y la 3.1.20 ,  lo que indica que goza de buena salud, junto con una comunidad bastante participativa.
  • Muchos módulos. Fruto de la comunidad tan participativa, hay muchos módulos de juegos disponibles, que sirven tanto para jugar, como de ejemplo para la creación de nuevos módulos.
  • Con el propio cliente de juego viene el editor de los módulos.
Desventajas:
  • Documentación de algunas características NULA. Principalmente las características más avanzadas no estan documentadas. Por ejemplo  los traits mediante programación
  • Solo para testing: es "algo" complejo lanzar 2 clientes con el mismo juego en local
  • Carece de operativas para hacer más mantenible el módulo. Aunque dispone de prototipos reutilizables, hacer ciertos cambios, que afecten a varios elementos se vuelven muy trabajosos, algo que unido a los líos que hay que montar para lograr algunos comportamientos, da con módulos que no se pueden meter mano directamente con la aplicación de edición de módulos.
Dados todos estos condicionantes, mi procedimiento para generar una maqueta es:
  1. Generar los diseños de los componentes en Inkscape, dando lugar a plantillas SVG
  2. En dichas plantillas poner ciertas marcas / textos especiales
  3. Ejecutar varios scripts que, a partir de tablas de datos y de las plantillas generarán todos los componentes, y los convertirán a imágenes PNG
  4. Descomprimir el módulo Vassal
  5. Sustituir los componentes
  6. Recomprimir el módulo, ya que no es mas que un ZIP con otra extensión. 

Elementos de la maqueta

Dentro de la maqueta de "Aventuras en Candromedal", uno de los elementos más importantes son los Prototipos, que son los elementos reutilizables dentro de Vassal. Luego, muchos otros elementos comienzan indicando que hacen todo lo que indiquen 1 o varios prototipos.
Listado de prototipos del juego



Decidí hacer un prototipo por cada tipo de carta (carta_juego, carta_util,...), así como un prototipo por cada posible pertenencia de un elemento a un jugador (token_rojo, token_azul,...).
Y luego se van definiendo los diferentes elementos, donde podemos apreciar que siempre tienen algún prototipo asociado:

Definición de carta de personaje

Definición de loseta
El problema reside cuando queremos que un elemento cambie de dueño, o que se le puedan cambiar una restricciones por otras en mitad del juego. En ese caso, la única solución práctica que se indica en los foros es la de que el objeto se cambie por otro. Eso, si el juego es complicado o los elementos pueden tener diferentes estados, derivaría en algo inmantenible.
Y, desarrolladores, ¿donde esta la documentación para los Traits programables en Java?

No hay comentarios:

Publicar un comentario