10 de septiembre de 2012

"Scrollando" el mundo...

Estos últimos días sin actualizar el blog, los he empleado en reparar un problema que encontré durante mis pruebas del gameplay.

Inicialmente, todo el diseño del juego, el movimiento del protagonista controlado por el jugador, así como los bots enemigos que aparecen, estaban pensados para una sola pantalla estática (tal como se ha podido ver en las capturas en este blog).

Utilizar una sola pantalla limitaba un poco mis espectativas en el diseño de los mapas. Siempre pensé en añadir algún tipo de mapa/sector que se interconectara con otra sala. Poner más salas no representó más problema que añadir una nueva "dimensión" a la matriz de datos de los mapas para poder soportar todas las pantallas.

Hasta aquí todo bien, siempre y cuando el diseño de los mapas estén a cargo del programador. En mi caso, al añadir la opción de Diseñar mapas propios, puedo encontrarme con un problema:

- Los mapas están diseñados como cuadrículas contiguas, de forma que cuando el jugador mueve el protagonista hasta el borde izquierdo de un mapa, se carga el mapa contíguo, y el jugador pasa a la posición más a la derecha del nuevo mapa.

Pero: ¿Qué hacer si se ha colocado un item/enemigo/obstáculo en esa posición?

Si es un ítem es sencillo, se recoge y se actualizan las variables en función de los beneficios/pérdidas del objeto en cuestión.

Si se trata de un enemigo, nos encontramos con el protagonista en la misma posición que un bot, por lo que correspondería empezar un combate... sin que el jugador se de cuenta de porqué y además sin opción a esquivar ó evitar el combate.

En el caso de un obstáculo, podemos detener el moviento del personaje ANTES de cargar el siguiente mapa, dejándolo en la posición X más a la derecha. Para el jugador será incomprensible el porque no se puede pasar al siguiente mapa (no sabe QUE hay en la posición contigua).

Tras consultarlo con algunos amiguetes, he decidido tomar la solución que creo es más elegante, aunque modifica en sobremanera el gameplay del juego. Se trata, tal como indica el título del post, en "scrollar"(desplazar/mover) el mapa por la pantalla, dejando al personaje protagonista siempre en la posición central, pudiéndolo mover en caso necesario hacia los bordes.

He tenido que reescribir todas las partes relativas al mapa y al control de movimiento, ya que ahora se mueve el mapa, y no el protagonista. Ahora cargo todo el mapa entero en memoria, y con una rutina de recorte, presento solo la posición actual en el mapa.

También se ha visto afectada toda la parte relativa al Editor, reemplazando el código relativo a los sectores, por un sólo mapa único... etc.

Espero tener en breve ya una muestra en vídeo de todo el trabajo, ahora toca modificar toda la parte de control de los enemigos... buffff.

No hay comentarios: