Cómo preparar sprites de un enemigo en Game Maker

Resumen

Crear un personaje enemigo en Game Maker Studio empieza por algo que muchos saltan: definir su comportamiento antes de tocar código. En esta etapa del videojuego incorporamos a Neo, un vigilante con poderes de energía cinética, y preparamos sus animaciones para que en la siguiente fase podamos programar sus estados.

Quién es Neo y por qué importa su diseño

Neo viene directamente de Neon City Riders, un juego ambientado en una ciudad futurista post cyberpunk donde un vigilante enmascarado recorre cuatro territorios llenos de maleantes, mutantes y personajes con superpoderes. Neo pertenece al área del cementerio y dispara bolas de energía apuntando con los dedos.

Darle contexto al enemigo no es un capricho narrativo. Cuando sabes qué hace tu personaje, decides mejor qué animaciones necesitas y qué patrón de ataque vas a programar. En este caso, vamos a replicar ese mismo patrón de disparo. [01:00]

¿Por qué definir el comportamiento del enemigo antes de programarlo? Porque el diseño guía las animaciones y los estados. Si sabes que Neo dispara desde el dedo, necesitas un sprite de attack coherente con esa acción.

Cómo organizar los sprites del enemigo en Game Maker

Lo primero es mantener el proyecto ordenado. Dentro de la sección Sprites creamos una carpeta llamada Enemy y, dentro, los sprites que componen al personaje siguiendo una nomenclatura clara: spr_enemyneo_idle, spr_enemyneo_attack y spr_enemyneo_move. [00:30]

Esta convención de nombres te ahorra tiempo cuando el proyecto crece. Saber que cualquier sprite que empiece con spr_enemy pertenece al enemigo facilita encontrar archivos y evita confusiones.

Qué medidas usar al importar cada animación

Cada sprite se importa con la opción import strip image, que toma una tira de frames y los separa automáticamente. Las medidas exactas que usamos para Neo son:

  • Idle: 28 por 54 píxeles, 6 frames. [02:00]
  • Attack: 47 por 55 píxeles, 10 frames. [03:30]
  • Move (run): 29 por 58 píxeles, 7 frames. [04:00]

Es fundamental colocar los valores en pixel offset y no en cell offset. Confundirlos hace que el cuadro de recorte quede fuera de la imagen y la animación no se importe bien. Pasa, se corrige, y se sigue.

Cómo ajustar la velocidad y el pivote del sprite

Por defecto, Game Maker reproduce las animaciones a una velocidad muy alta. Bajarla a 10 da una sensación mucho más natural en pantalla. Lo aplicamos a las tres animaciones de Neo. [02:30]

Dos detalles que no se pueden olvidar:

  • Todas las animaciones deben mirar hacia la derecha por defecto. Si miran a la izquierda, tendrás que espejearlas después, como pasó con el personaje principal.
  • El pivote del sprite siempre va en el centro. Esto evita problemas de posicionamiento y colisiones más adelante.

¿Qué es el pivote de un sprite y por qué centrarlo? Es el punto de referencia desde el que el motor calcula la posición del sprite. Centrarlo hace que rotaciones, espejos y colisiones se comporten de forma predecible.

Cómo corregir un frame desalineado en una animación

Al revisar la animación de move, notamos que el primer frame estaba desplazado un píxel hacia la derecha respecto al resto. Es un detalle minúsculo, pero genera ese efecto de vibración que delata que algo no está pulido.

La solución es simple. Abres el frame, seleccionas la herramienta de rectángulo, marcas todo el contenido y lo mueves un píxel a la izquierda. Haces clic fuera para confirmar y listo. [05:30]

Este tipo de revisión cuadro por cuadro es parte del trabajo de pulido que separa una animación amateur de una profesional. No la subestimes.

Qué sigue antes de programar al enemigo

Con las tres animaciones importadas, ajustadas y organizadas en su carpeta, el enemigo ya está listo a nivel visual. Lo que viene es diseñar un diagrama de flujo que defina cómo debe comportarse Neo: cuándo está quieto, cuándo se mueve, cuándo ataca y cómo transita entre esos estados.

Ese diagrama es la base de lo que en programación de videojuegos se conoce como máquina de estados, una forma de organizar el comportamiento de un personaje en bloques claros y reutilizables.

Si tienes preguntas sobre la importación de sprites o el manejo de pivotes, déjalas en la sección de comentarios.