Asteroids: la nave #Programación retro del Commodore 64

Nuestro siguiente objetivo será diseñar el sprite de la nave.

Para diseñar el sprite utilizamos el editor de sprites de CBM prg Studio. Será un sprite multicolor con estos colores:

  • Color del sprite: gris claro ($0f).
  • Color multicolor 1: gris oscuro ($0b).
  • Color multicolor 2: amarillo ($07).

Asteroids - Nave

Inicialmente, la nave se moverá tal cual (usando como único "frame" el anterior) hacia arriba, hacia abajo, hacia la derecha y hacia la izquierda, en función de la tecla pulsada o el interruptor del joystick presionado.

Sin embargo, un poco más adelante cambiaremos el movimiento, de modo que al pulsar derecha o izquierda cambiemos la orientación o ángulo de la nave (cambiemos el "frame") y, al pulsar arriba aceleremos, y al pulsar abajo frenemos.

Por tanto, es un buen momento para diseñar tantos "frames" como ángulos vayamos a considerar. Yo particularmente creo que con ocho ángulos es más que suficiente:

Asteroids - Angulos

De este modo, diseñamos ocho "frames" para el sprite de la nave:

  • Frame 0: Nave hacia arriba (0 grados).
  • Frame 1: Nave hacia arriba y la derecha (45 grados).
  • Frame 2: Nave hacia la derecha (90 grados).
  • Frame 3: Nave hacia abajo y la derecha (135 grados).
  • Frame 4: Nave hacia abajo (180 grados).
  • Frame 5: Nave hacia abajo y la izquierda (225 grados).
  • Frame 6: Nave hacia la izquierda (270 grados).
  • Frame 7: Nave hacia la arriba y la izquierda (315 grados).

Nosotros en el programa usaremos una variable "ángulo" que tomará los valores desde el 0 hasta el 7, pero el editor de sprites numerará los "frames" desde el 1 hasta el 8. En realidad, el editor de sprites ni siquiera maneja el concepto de "frame"; para él todo son sprites (diseños) que se pueden exportar como bloques de 64 bytes. Es cuestión del programador utilizar esas definiciones de 64 bytes para el mismo sprite, en plan animación, o para sprites diferentes.

El frame 0 (hacia arriba) hay que diseñarlo desde cero. Diseñar el frame 4 (hacia abajo) a partir del frame 0 es fácil. Llega con utilizar la opción "Flip U/D" (flip upside down) en el editor de sprites. Para los demás "frames" habrá que trabajárselo un poco más o usar algún programa de utilidad. Yo he usado la opción "Rotate" del editor de sprites, que se alimenta con el ángulo de rotación (45 grados, 90 grados, etc.). Lo que ocurre es que esta opción funciona bien con sprites monocolor y, en el caso de sprites multicolor, hay que repasar el resultado a fondo.

Al final tendremos ocho "frames" con aspectos similares estos:

Asteroids - Frames

Es más, utilizando la opción "Animation" del editor de sprites se puede ver el efecto que hará la nave al girar:

Asteroids - Giro

Por último, queda exportar los datos de los "frames" a un archivo binario. Esto se consigue con la opción File > Export > To Binary File. Le indicamos que exporte todos los sprites o frames, que rellene a 64 octetos (recordemos que un sprite en realidad sólo ocupa 63 bytes), y llamamos al fichero binario "Sprites.bin" o similar. Posteriormente incluiremos este fichero en el juego mediante la directiva "incbin Sprites.bin".


Código del proyecto: Asteroids01


Editar

Josepzin

No hay comentarios:

Publicar un comentario