Crea tus Juegos con 8BPCursos

8BP: Tabla de secuencias de animación

5
(9)

En nuestra entrega semanal de 8 Bits de Poder hablaremos de las secuencias de animación, que como podrás ver a continuación, son secuencias de sprites que utilizaremos para hacer posible y más reales los movimientos de nuestros personajes en el juego.

¿Todavía no sabes lo que es 8 Bits de Poder? Entonces tienes que leer nuestro primer artículo del curso para saber la razón por la cual programar HOY una maquina de 1984.

Las animaciones suelen componerse de un número par de fotogramas, aunque esto no es una regla estricta. Piensa por ejemplo en la animación simple de un personaje con solo dos fotogramas: piernas abiertas y cerradas. Son dos fotogramas.

Cómo hacer secuencias de animación en 8BP

Ahora piensa en una animación mejorada, con una fase de movimiento intermedia. Esto supone crear la secuencia: cerradas-intermedia-abiertas-intermedia- y vuelta a empezar. Como ves es número par, son 4.

Las secuencias de animación de 8BP son listas de 8 fotogramas, no pueden tener más, aunque siempre puedes hacer secuencias más cortas.

Los fotogramas de una secuencia de animación son las direcciones de memoria donde están ensambladas las imágenes de las que se componen, pudiendo ser diferentes en tamaño, aunque lo normal es que sean iguales. Si a mitad de la secuencia introduces un cero, el significado es que la secuencia ha terminado.

NOTA: Aunque antes de la versión V33 existía un comando RSX llamado SETUPSQ para crear secuencias desde BASIC, lo he eliminado en la V33, debido a que su uso es más complejo que definir secuencias desde el fichero sequences.asm y, de hecho, nunca he usado el comando SETUPSQ en ninguno de mis juegos, de modo que decidí sacrificarlo para ahorrar memoria.

Veamos un ejemplo de creación de una secuencia en el fichero sequences.asm

dw MONTOYA_R0,MONTOYA_R1,MONTOYA_R2,MONTOYA_R1,0,0,0,0

Antes de explicarte como asignar una secuencia a un sprite, te recuerdo como se asignan imágenes a sprites. Desde la versión V26 de 8BP, existe la posibilidad de incluir una lista de imágenes (sus etiquetas) en una lista llamada IMAGE_LIST de tu fichero images_tujuego.asm,

Con ello puedes referenciar las imágenes desde BASIC con un índice en lugar de una dirección de memoria. Así no tendrás que consultar las direcciones de memoria cada vez que ensambles. Esto aplica a la instrucción SETUPSP, #, 9, <dirección>

El ejemplo muestra una secuencia de animación de 3 fotogramas diferentes, pero para que sea fluida antes de volver a empezar hay que pasar por el fotograma “intermedio” otra vez ( fíjate que el segundo y el cuarto son iguales), de modo que al final son 4 fotogramas.

secuencias-de-animacion
y vuelta a empezar…

Si quisieses hacer una secuencia de más de 8 fotogramas podrías simplemente encadenar dos secuencias seguidas y cuando el personaje llegase al último fotograma de la primera secuencia usar el comando |SETUPSP para asignarle la segunda secuencia

Las secuencias de animación se ensamblan a partir de la dirección 33500 y puedes definir hasta 31 secuencias de animación (a partir del número 32 no se consideran secuencias, sino “macrosecuencias”, que es otro concepto). Cada secuencia estará identificada por un número que se encontrará en el rango [1..31]. La secuencia cero no existe, se usa para indicar que un sprite no tiene secuencia.

Para asignar una secuencia a un Sprite usa el comando SETUPSP con parámetro 7:

|SETUPSP, <sprite_id>, 7,  <sequence number>

Cada secuencia almacena 8 direcciones de memoria correspondientes a los 8 fotogramas, esto son 16 bytes consumidos por cada secuencia.

Tu fichero de secuencias de animación se puede parecer a esto:

org 33500;
;=====================================================================
; hasta 31 secuencias de animacion 
;=====================================================================
; debe ser una tabla fija y no variable
; cada secuencia contiene las direcciones de frames de animacion ciclica
; cada secuencia son 8 direcciones de memoria de imagen
; numero par porque las animaciones suelen ser un numero par
; un cero significa fin de secuencia, aunque siempre se gastan 8 words 
; por secuencia
; al encontrar un cero se comienza de nuevo. 
; si no hay cero, tras el frame 8 se comienza de nuevo
; si a un Sprite se le asigna la secuencia cero es que no tiene secuencia. 
; empezamos desde la secuencia 1

;--------------secuencias de animacion del personaje montoya--------
_SEQUENCES_LIST
dw MONTOYA_R0,MONTOYA_R1,MONTOYA_R2,MONTOYA_R1,0,0,0,0	  ;1
dw MONTOYA_UR0,MONTOYA_UR1,MONTOYA_UR2,MONTOYA_UR1,0,0,0,0  ;2
dw MONTOYA_U0,MONTOYA_U1,MONTOYA_U0,MONTOYA_U2,0,0,0,0      ;3
dw MONTOYA_UL0,MONTOYA_UL1,MONTOYA_UL2,MONTOYA_UL1,0,0,0,0  ;4
dw MONTOYA_L0,MONTOYA_L1,MONTOYA_L2,MONTOYA_L1,0,0,0,0      ;5
dw MONTOYA_DL0,MONTOYA_DL1,MONTOYA_DL2,MONTOYA_DL1,0,0,0,0  ;6
dw MONTOYA_D0,MONTOYA_D1,MONTOYA_D0,MONTOYA_D2,0,0,0,0      ;7
dw MONTOYA_DR0,MONTOYA_DR1,MONTOYA_DR2,MONTOYA_DR1,0,0,0,0  ;8

;--------------secuencias de animacion del soldado – ------
dw SOLDADO_R0,SOLDADO_R2,SOLDADO_R1,SOLDADO_R2,0,0,0,0 ;9
dw SOLDADO_L0,SOLDADO_L2,SOLDADO_L1,SOLDADO_L2,0,0,0,0 ;10

Secuencias de muerte en 8BP

La librería 8BP te permite hacer “secuencias de muerte”, que son secuencias que al terminar de recorrerlas, el sprite pasa a estado inactivo. Esto se indica con un simple “1” como valor de la dirección de memoria del fotograma final.

Estas secuencias son muy útiles para definir explosiones de enemigos que están animados con |ANIMA o |ANIMAALL. Tras alcanzarles con tu disparo, les puedes asociar una secuencia de animación de muerte y en los siguientes ciclos del juego pasarán por las distintas fases de animación de la explosión, y al llegar a la última pasarán a estado inactivo, no imprimiéndose más.

8BP: Tabla de secuencias de animación 1

Este paso a inactivo se hace automáticamente, de modo que lo que debes hacer es simplemente chequear la colisión de tu disparo con los enemigos y si colisiona con alguno le cambias el estado con SETUPSP para que no pueda colisionar más y le asignas la secuencia de animación de muerte, también con SETUPSP.

Si usas una secuencia de muerte, no te olvides de que el último fotograma antes de encontrar el “1” sea uno completamente vacío, de modo que no quede ningún resto de la explosión.

Ejemplo de secuencia de muerte (fíjate que incluye un “1”):

dw EXPLOSION_1,EXPLOSION_2,ExPLOSION_3,1,0,0,0,0

Un efecto interesante es hacer pasar por varios fotogramas repetidamente antes de terminar con un fotograma negro que sirva para borrar.

8BP: Tabla de secuencias de animación 2
Secuencia de muerte

Ahora el “1” aparece en octava posición:

dw EXPLOSION_1,EXPLOSION_2, EXPLOSION_1,EXPLOSION_2, EXPLOSION_1,EXPLOSION_2, ExPLOSION_3,1

En el próximo articulo veremos como hacer una macrosecuencia de animación con 8 Bits de Poder. ¿Qué tal llevas tu juego con 8BP?

¿De cuánta utilidad te ha parecido este contenido?

¡Haz clic en una estrella para puntuar!

Mostrar más

Un comentario

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Publicaciones relacionadas

Botón volver arriba