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) oLoopOnce(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.