Proyecto Nirvash (Parte 1)

El otro día escribí una entrada sobre Pygame, a modo de presentación, pero hoy voy a hablar sobre lo que estoy haciendo con Pygame.

El proyecto se llama "Nirvash", y consiste en reconstruir diversos elementos de todo RPG en 2D (mapas, colisiones, movimiento de personajes, secuencias, batallas, menús...) utilizando Pygame. Para empezar estoy intentando desarrollar el tema del movimiento de personajes.

La idea es conseguir que un personaje se mueva libremente por un mapa, con movimiento por píxel (no por cuadros o tiles como RPG Maker) en 8 direcciones y con animación al caminar (3 frames/imágenes de pose en cada una de las 4 direcciones, para las diagonales no uso poses propias aún).

Voy a hacer un repaso rápido por lo que he estado haciendo, sin pararme en detalles técnicos. Ya llegará el día en el que repase todo de forma que solo me entiendan los que programen. xD

El mapa

No quería empezar complicándome así que utilicé una imagen sólida como mapa. El personaje podrá pasar por encima de todo (árboles, agua, montes...), ya llegará el momento de meterse con el asunto del mapa para crear el bloqueo y la disposición de diversos elementos del mapa en varias capas.

El personaje

Al principio utilicé una sola pose mirando hacia abajo, porque lo que quería era probar que el personaje se movía correctamente por píxel. Más adelante me centré en la animación del personaje mientras se movía, para ello utilicé 12 frames (3 frames en cada una de las 4 direcciones) como en RPG Maker.

Conseguí que el personaje se moviese correctamente por el mapa con animación (parece que va andando y se para cuando tiene que pararse), así que pasé a meterme con las diagonales. La idea es que el personaje pueda moverse en diagonal pero sin utilizar frames nuevos para esos movimientos, y que la transición entre el movimiento normal (4 direcciones) y el diagonal fuese muy directa.

Resultado

Bueno, 2 días y medio fueron suficientes para conseguir que el personaje se moviese por el mapa libremente (movimiento por píxel) en 8 direcciones y con animación (3 frames por dirección).

En el vídeo se puede ver como el personaje se mueve libremente (por píxel y en 8 direcciones) por el mapa. También se ve que pasa por encima de todo, pero eso es algo que queda para más adelante. xD

Siguiente etapa

Lo siguiente es preparar la interacción básica entre personaje y mapa, es decir:

  • Que el personaje no se salga de los bordes de la pantalla (y además se quede quieto)
  • Que según se mueve el personaje, la cámara le acompañe (el scroll, porque los mapas son más grandes de lo que puede mostrar la pantalla, así que la cámara debe seguir correctamente al personaje).

Más información

No he programado todo el código desde 0, de hecho he utilizado trozos de ejemplos publicados por Hugo Ruscitti en LosersJuegos, aunque he tenido que adaptarlos (pero me han servido como base). En cualquier caso no hubiese llegado a lo que estoy haciendo si no fuese por la cantidad de documentación que he leído en LosersJuegos.

Imagen de Anónimo

Ahora te metes en otro

Ahora te metes en otro fregao? xD

Me recordó por un momento al Lunar cuando caminan que también es de 8 direcciones y a pixel, sólo que está activado el movimiento incluso cuando está quieto. A ver que va saliendo a medida que avances (aunque sólo sean partes de lo q podría ser un RPG).