miércoles, 29 de octubre de 2008

Esto es lo que hay... :)

Bueno, de momento voy a hacer un poco de recapitulación de lo que se ha estado cociendo hasta ahora:

- El editor de mapas.
- El juego (sin modo de red)


El editor:

El editor esta hecho integramente en flash al igual que el juego.

En realidad lo hice solo por la comodidad de no tener que andar picando el XML a mano sin tener ninguna referencia visual de lo que estaba haciendo hasta que cargara el mapa en formato XML dentro de el visor de mapas del juego (sistema harto engorroso).

Y aprovechando que ya esta hecho, cuando el jueego ya este online le daremos al publicon la posibilidad de crear sus propiso mapas a modo de Arenas o algo similar, aunque todo se andará a su tiempo, por ahora lo que más me interesa es que el proyecto se termine y vea la luz, no esta la cosa como para ir vendiendo vaporware ;)

Aquí teneis una captura del editor en funcionamiento con un mapa de testeo a medio hacer, la resolución (tamaño) de los hextiles es cconfigurable al igual que el número de azulejos que hay en "X" y en "Y". Por ahora los tiles que representan cada tipo de terreno y demas singularidades orológicas estan seleccionados a mano, pero el sistema es plenamente escalable.

Obviamente a diferencia de los tiles tradicionales, cuadrados o rectangulares, los hex-tiles son bastante más complicados (almenos para mi, jeje) de manejar. Así que tuve que hacer un poco de I+D para aprender el funcionamiento y las características de nuestros nuevos amigos: los Hex-Tiles.

Encontré algunas páginas bastante interesantes que me dieron buena idea de por donde andaban los tiros. Una es la de nuestro tocayo de Actionscript Tonypa (http://www.tonypa.pri.ee/tbw/tut25.html) en la que guarda este mini tutorial que me hizo vislumbrar el poder de la operación "Modulo" (A.K.A. "%" en actionscript) cuando debemos manejarnos con hex-tiles. La otra es la página de Emanuele Feronato (http://www.emanueleferonato.com/2008/04/16/understanding-hexagonal-tiles/) donde nos explica un monton de cosas utiles y las curiosas propiedades del hexágono.

Por último aquí os adjunto la captura del mapa que nos ocupa en cuestion. Los que hayais jugado alguna vez al juego probablemente lo reconozcais en seguida, en efecto, se trata del mapa del mundo de Zargo's Lords.

Al empezar a representar el mapa del mundo de Zargo me di cuenta de un detalle que se me habia pasado por alto en un principio (Aunque lo planees sobre papel siempre siempre pasa...). El mapa de Zargo's Lords representa un globo terraqueo desplegado (simplificandolo como buenamente se puede ajustandose a los hex-tiles) de manera que muchas de las "aristas" de estos hemisferios desplegados conectan con otras secciones del mapa. Para ello tuve que ingeniarme un sistema de conexiones que quedaran memorizadas en el archivo que contenia el mapa. Es por eso que se ven esas lienas amarillas recorriendo el mapa, conectando parejas de tiles.


El juego:

Por ahora el tema está aun verde...
Lo que hay por el momento es:
- Cargar los mapas y moverlos con total fluidez.
- Se monta un GUI básico en el que tenemos la ventana de "terreno", la ventana del "miniMapa" y la ventana o marco "general".
- Se dibuja un minimapa a imagen y semejanza del mapa global. en este minimapa aparece un cuadro que podemos despllazar con drag'n drop del ratón y que no muestra que zona estamos visualizando del mapa en este momento. Esto también es plenamente funcional.

De trasfondo tenemos que: Todas las clases referentes a las tropas, jugadores, ciudades, ejercitos, etc. están más o menos esbozadas para ir dando los nuevos pasos. (Evidentemente las clases referentes al mapa, al editor, los tiles y demás ya estan operativas y fucionando!)
De rebote en busca de un algoritmo para mover una tropa en un ratio determinado hextiles cree una clase que no solo permitia hacer eso sino que ademñas hacia pathfinding optimo hasta esa posición. Tarde me di cuenta de que en un juego táctico como este el pathfinding es algo absurdo pues es el jugador quien movera las fichas y elegira la ruta más optima (bien sea para esquivarlas tropas enemigas, buscar refugio en el terreno o preparar una emboscada).

Lo que viene:
Creo que visto lo visto, el paso siguiente será, añadir en plan "tweak", alguna ciudad o tropa y empezar a programar su movimiento.


2 comentarios:

  1. Muy buenas, Neodroid!

    Feliz me hace encontrar esta entrada en tu blog, pues ahora mismo me encuentro diseñando un videojuego para una asignatura de la universidad y precisamente quería hacer algo muy parecido a lo tuyo, por no decir lo mismo!

    Verás, estoy diseñando la parte de combate de un juego de estrategia espacial. Yo también encontré la página de tonypa y me fue muy útil para generar el mapa de tiles, pero tengo graves problemas para crear el algoritmo de pathfinding (que yo encuentro necesario puesto que también existirá una IA enemiga y queremos que las tropas se muevan por el escenario).

    Podrías echarme una mano con el argoritmo? Has usado A*? Te puedo asegurar que he removido hasta los cimientos de internet, y aunque he encontrado código ActionScript para pathfinding de grids cuadrados y rectangulares, no he sido capaz de encontrarlos para hexágonos.

    Gracias de todos modos!

    ResponderEliminar
  2. Hola!

    Perdona por la tardanza en mi respuesta, espero que aun llegue a tiempor de salvar esas practicas de la universidad!

    En efecto he usado A* para el enrutameinto. Puedes ecnontrar la clase que ccree para ello en mi página web de juegos flash (en la seccion tutoriales):
    http://www.emerge-designs.com/neodroid



    o bien entrando en el portal:
    http://www.gotoandplay.it

    y buscando en la seccion de protos y tutoriales. Encontraras los mismols archivos fuente creados por mi.

    Encaontado de haberte sido de utilidad.

    Ya me contarás...

    saludos y gracias por el feedback! :)

    ResponderEliminar