Especificaciones Técnicas de Scripting para Storyboards en osu!

Introducción al Entorno de Storyboard

La configuración de los storyboards se realiza mediante la sección [Events] en los archivos .osu o a través de archivos independientes .osb. El área de juego principal tiene una resolución fija de 640x480 píxeles. Para garantizar una visualización óptima, se recomienda que los recursos gráficos estáticos y los efectos de fondo se ajusten estrictamente a estas dimensiones.

Declaración de Sprites y Animaciones

Los elementos visuales se dividen en imágenes estáticas (Sprites) y secuencias de imágenes (Animaciones). El orden de declaración en el archivo dicta el orden Z (profundidad). El primer elemento declarado se renderiza al fondo, quedando los elementos posteriores por encima de él.

Sintaxis de Sprite Estático

Sprite, "layer", "origin", "ruta_archivo", x, y
_evento, suavizado, tiempo_inicio, tiempo_fin, [parametros]
_evento, [...]

Sintaxis de Animación

Animation, "layer", "origin", "ruta_archivo", x, y, num_fotogramas, retraso_fotograma, tipo_bucle
_evento, suavizado, tiempo_inicio, tiempo_fin, [parametros]
_evento, [...]

Para las animaciones, se define un archivo base (ej. efecto_luz.png) y el motor buscará archivos numerados secuencialmente (ej. efecto_luz0.png hasta efecto_luz14.png para una animación de 15 fotogramas).

  • num_fotogramas: Cantidad total de imágenes en la secuencia.
  • retraso_fotograma: Tiempo de espera en milisegundos entre cada transición de imagen.
  • tipo_bucle: Define el comportamiento de repetición. LoopForever (repetición infinita, valor por defecto) o LoopOnce (se ejecuta una sola vez y se detiene en el último fotograma).

Capas y Orígenes

Capas (Layers): Determinan la visibilidad según el estado del juego.

  • Background: Visible constantemente.
  • Foreground: Visible constantemente.
  • Fail: Solo visible al fallar.
  • Pass: Solo visible al superar el mapa.

Orígenes (Origins): Define el punto de anclaje para transformaciones como rotación o escalado. Las opciones incluyen TopLeft, Centre, BottomRight, entre otras combinaciones de bordes y centros.

Coordenadas: La posición (x, y) utiliza el sistema de coordenadas donde (0,0) es la esquina superior izquierda y (640,480) es la esquina inferior derecha. Las rutas de archivo deben ser relativas al directorio del archivo .osu y estar entre comillas si contienen espacios.

Tipos de Eventos y Parámetros

Cada evento define una transformación en el tiempo. Los tipos de eventos disponibles son:

  • F: Desvanecimiento (Fade).
  • M: Movimiento (Move).
  • S: Escalado uniforme (Scale).
  • V: Escalado vectorial (Vector Scale).
  • R: Rotación (Rotate).
  • C: Color (Colour).
  • P: Parámetros visuales (Parameters).

Suavizado (Easing): 0 (Lineal/Sin suavizado), 1 (Desaceleración), 2 (Aceleración).

Definición de Parámetros por Evento

Desvanecimiento (F):

F, 0, 1500, 3500, 0.1, 0.85

Controla la opacidad de 0 (invisible) a 1 (totalmente visible).

Movimiento (M):

M, 0, 2000, 4000, 120, 80, 540, 360

Interpola la posición desde las coordenadas iniciales hasta las finales.

Escalado (S) y Escalado Vectorial (V):

S, 0, 0, 2500, 0.5, 1.2
V, 0, 0, 2500, 1.0, 1.0, 1.5, 0.8

Un valor de 1.0 representa el 100% del tamaño original. Se permiten decimales.

Rotación (R):

R, 0, 1000, 5000, 0, 6.28318

Los ángulos se especifican en radianes. Los valores positivos indican rotación en sentido horario.

Color (C):

C, 0, 500, 2000, 255, 255, 255, 50, 100, 200

Define los componentes RGB iniciales y finales. (255,255,255) mantiene el color original, mientras que (0,0,0) lo vuelve negro. Los valores intermedios aplican un tinte sustractivo.

Parámetros (P):

P, 0, 1000, 3000, H

Aplica efectos como H (volteo horizontal), V (volteo vertical) o A (mezcla aditiva).

Sintaxis Abreviada (Shorthands)

Para optimizar la escritura de scripts extensos, se permiten varias abreviaturas:

Encadenamiento de valores: Permite definir múltiples transiciones secuenciales en una sola línea.

_evento, suavizado, tiempo_inicio, tiempo_fin, val1, val2, val3, val4

Duración cero: Cuando el tiempo de inicio y fin son idénticos, el campo de tiempo final puede omitirse, dejando un espacio en blanco.

M, 0, 3000, , 320, 240, 320, 240

Valores estáticos: Si los valores inicial y final son los mismos, solo se requiere especificar uno.

M, 0, 3000, , 320, 240

Sistemas de Bucles

Bucles Estándar

Permiten repetir un bloque de eventos un número determinado de veces. Es crucial que los tiempos internos del bucle comiencen desde 0 (base cero). El motor sumará automáticamente el tiempo de inicio del bucle a estos valores internos.

L, 5000, 4
  F, 0, 0, 500, 0, 1
  M, 0, 0, 1000, 0, 0, 100, 100

Bucles Disparados (Trigger Loops)

Se ejecutan una sola vez cuando se cumple una condición específica del juego. Al igual que los bucles estándar, utilizan tiempos base cero. Si se solapan, el bucle anterior se interrumpe y se reinicia.

T, HitSoundClap, 0, 5000
  S, 0, 0, 200, 1.0, 1.5

Disparadores soportados: HitSoundClap, HitSoundFinish, HitSoundWhistle, Passing y Failing.

Efectos de Sonido

Los samples de audio se declaran utilizando el comando Sample.

Sample, 1500, 3, "audio/efecto_golpe.wav", 85

El primer parámetro es el tiempo en milisegundos. El segundo es la capa (0 a 3, correspondiendo a Background, Fail, Pass y Foreground). La ruta del archivo debe estar entre comillas y el volumen se escala de 1 a 100 (omitiendo el parámetro se asume 100).

Gestión de Variables

Los archivos .osb soportan la declaración de variables en la sección [Variables]. Esto permite reutilizar valores complejos a lo largo del script.

[Variables]
$color_principal=180,200,255
$pos_centro=320,240

Estas variables pueden expandirse a líneas completas. Sin embargo, se recomienda evitar variables de un solo carácter o valores numéricos simples (ej. $v=1), ya que el editor oficial podría no gestionar correctamente la reasignación y reemplazará todas las coincidencias literales al guardar el archivo, corrompiendo la estructura original del script.

Etiquetas: osu storyboard osu-scripting Game-Development 2d-animation

Publicado el 7-26 09:23