Jukebox

La Jukebox es una función integrada en el Pokégear que permite al jugador escuchar y cambiar la música de fondo (BGM) del juego a voluntad. Inspirada en la función homónima de Pokémon Gold, Silver y Crystal, la Jukebox ofrece una forma de personalizar la experiencia auditiva del jugador permitiéndole seleccionar entre las canciones disponibles.

En Pokémon Essentials, la Jukebox viene desactivada por defecto y requiere una configuración específica para habilitarla. Este artículo explica cómo activarla, cómo gestionar la lista de canciones disponibles y cómo personalizar su comportamiento.

Requisitos Previos

Para utilizar la Jukebox, necesitas:

Habilitar la Jukebox en el Pokégear

La Jukebox es una de las funcionalidades opcionales del Pokégear. Para activarla, debes registrarla como una página del Pokégear usando el siguiente comando en un evento:

# Habilitar la Jukebox en el Pokégear del jugador
pbPokegearJukeboxOn

Generalmente, este comando se ejecuta en un evento de historia, por ejemplo cuando el jugador recibe el Pokégear o cuando completa cierta misión. También puedes habilitarlo a través de un interruptor global:

# Alternativa: usar un interruptor del juego
# En la configuración del Pokégear, asigna un interruptor que controle la visibilidad
$game_switches[JUKEBOX_SWITCH] = true

Verificar disponibilidad

Puedes comprobar en cualquier momento si la Jukebox está habilitada:

# Devuelve true si la Jukebox está disponible
if pbHasJukebox?
  pbMessage("¡La Jukebox está disponible en tu Pokégear!")
end

Configuración de la Lista de Canciones

La Jukebox funciona con una lista predefinida de canciones que el jugador puede seleccionar. Esta lista se configura en los scripts del proyecto y cada entrada asocia un nombre visible para el jugador con el archivo de audio correspondiente.

Formato de la lista

La lista de canciones se define como un array de pares [nombre_visible, nombre_archivo]:

# Definición de canciones disponibles en la Jukebox
JUKEBOX_SONGS = [
  ["Ciudad Paleta",       "Pokemon RZ - Ciudad Paleta"],
  ["Ruta 1",              "Pokemon RZ - Ruta 1"],
  ["Ciudad Plateada",     "Pokemon RZ - Ciudad Plateada"],
  ["Gimnasio",            "Pokemon RZ - Gimnasio"],
  ["Centro Pokémon",      "Pokemon RZ - Centro Pokemon"],
  ["Tienda Pokémon",      "Pokemon RZ - Tienda Pokemon"],
  ["Cueva",               "Pokemon RZ - Cueva"],
  ["Batalla Salvaje",     "Pokemon RZ - Batalla Salvaje"],
  ["Batalla Entrenador",  "Pokemon RZ - Batalla Entrenador"],
  ["Batalla Líder",       "Pokemon RZ - Batalla Lider"],
  ["Victoria",            "Pokemon RZ - Victoria"],
  ["Sala de la Fama",     "Pokemon RZ - Sala de la Fama"]
]

El primer valor del par es el nombre que ve el jugador en la interfaz de la Jukebox. El segundo valor es el nombre del archivo de audio (sin extensión) ubicado en Audio/BGM/.

Canciones desbloqueables

Puedes hacer que ciertas canciones solo estén disponibles después de que el jugador cumpla ciertos requisitos (por ejemplo, visitar una ciudad o derrotar un gimnasio). Para ello, añade condiciones a las canciones:

# Lista de canciones con condiciones de desbloqueo
JUKEBOX_SONGS_CONDITIONAL = [
  {
    name:      "Tema del Campeón",
    file:      "Pokemon RZ - Campeon",
    condition: proc { $game_switches[CHAMPION_DEFEATED] }
  },
  {
    name:      "Pueblo Lavanda",
    file:      "Pokemon RZ - Pueblo Lavanda",
    condition: proc { $game_variables[STORY_PROGRESS] >= 5 }
  }
]

En este caso, la canción solo aparecerá en la lista del jugador si la condición (proc) devuelve true.

Interfaz de la Jukebox

Cuando el jugador accede a la Jukebox desde el Pokégear, se muestra una interfaz de lista con las canciones disponibles. La interfaz estándar incluye:

Navegación del jugador

El flujo de uso para el jugador es el siguiente:

  1. Abrir el Pokégear desde el menú de pausa.
  2. Seleccionar la opción Jukebox.
  3. Navegar por la lista de canciones usando las flechas de dirección.
  4. Seleccionar una canción con el botón de confirmación.
  5. La música de fondo cambia inmediatamente a la canción seleccionada.
  6. La canción seleccionada se mantiene incluso al cambiar de mapa (hasta que el jugador la cambie o seleccione "Música del mapa").

Comandos de Script

Además de la interfaz visual, puedes controlar la Jukebox desde eventos y scripts:

Abrir la Jukebox directamente

# Abre la interfaz de la Jukebox sin necesidad de pasar por el Pokégear
pbJukebox

Reproducir una canción específica

# Cambia la música de fondo a una canción específica
pbJukeboxPlay("Pokemon RZ - Ciudad Paleta")

# Con volumen personalizado
pbJukeboxPlay("Pokemon RZ - Ruta 1", 80)  # 80% de volumen

Detener la Jukebox

# Detiene la reproducción de la Jukebox y vuelve a la música del mapa
pbJukeboxStop

# Comprueba si la Jukebox está reproduciendo algo
if pbJukeboxPlaying?
  pbMessage("La Jukebox está sonando.")
end

Añadir canciones en tiempo de ejecución

# Desbloquea una nueva canción para el jugador durante el juego
pbJukeboxUnlock("Tema Secreto", "Pokemon RZ - Secreto")
pbMessage("¡Has desbloqueado una nueva canción en la Jukebox!")

Personalización de la Interfaz

La interfaz visual de la Jukebox puede personalizarse editando los gráficos y el script de la escena:

Gráficos

Los gráficos de la interfaz de la Jukebox se encuentran en la carpeta Graphics/UI/Pokegear/. Puedes modificar los siguientes archivos:

Colores y fuentes

Para cambiar los colores del texto o la fuente utilizada en la lista de canciones, modifica las constantes en la clase de la escena de la Jukebox:

class PokegearScene_Jukebox
  TEXT_BASE_COLOR   = Color.new(72, 72, 72)     # Color del texto normal
  TEXT_SHADOW_COLOR = Color.new(168, 168, 168)   # Color de la sombra del texto
  TEXT_SEL_COLOR    = Color.new(24, 24, 120)     # Color del texto seleccionado
  FONT_NAME         = "Power Green"              # Fuente utilizada
  FONT_SIZE         = 22                         # Tamaño de la fuente
end

Integración con Eventos del Juego

La Jukebox puede integrarse con otros sistemas del juego para crear experiencias más ricas:

NPC DJ

Puedes crear un NPC que funcione como un DJ, permitiendo al jugador escuchar canciones sin necesidad del Pokégear:

# Evento de NPC DJ
pbMessage("¡Soy el DJ del Centro Pokémon!")
pbMessage("¿Quieres escuchar alguna canción?")
choices = ["Ciudad Paleta", "Ruta 1", "Gimnasio", "No, gracias"]
choice = pbMessage("¿Qué quieres escuchar?", choices, choices.length)
case choice
when 0
  pbBGMPlay("Pokemon RZ - Ciudad Paleta")
  pbMessage("¡Aquí tienes el tema de Ciudad Paleta!")
when 1
  pbBGMPlay("Pokemon RZ - Ruta 1")
  pbMessage("¡La Ruta 1! ¡Un clásico!")
when 2
  pbBGMPlay("Pokemon RZ - Gimnasio")
  pbMessage("¡Hora de luchar!")
when 3
  pbMessage("¡Vuelve cuando quieras!")
end

Desbloqueo por colección

Un sistema popular es desbloquear canciones conforme el jugador progresa. Por ejemplo, desbloquear la música de una ciudad cuando la visita por primera vez:

# En un evento de la ciudad (ejecución automática, una vez)
if !$PokemonGlobal.jukeboxSongs.include?("Ciudad Trigal")
  pbJukeboxUnlock("Ciudad Trigal", "Pokemon GS - Ciudad Trigal")
  pbMessage("♪ La música de Ciudad Trigal se ha añadido a tu Jukebox.")
end

Comportamiento al Cambiar de Mapa

Por defecto, cuando la Jukebox está activa y el jugador cambia de mapa, existen dos comportamientos posibles que puedes configurar:

# Configurar el comportamiento de persistencia
# En Settings o en tu código de configuración:
JUKEBOX_PERSISTENT = true   # true = la canción se mantiene entre mapas
                             # false = se reinicia al cambiar de mapa

Añadir Canciones Personalizadas

Para añadir tus propias canciones a la Jukebox, sigue estos pasos:

  1. Prepara el archivo de audio: Convierte tu canción al formato compatible con RPG Maker XP. Los formatos soportados son .ogg, .mid, .wav y .mp3 (se recomienda .ogg por su equilibrio entre calidad y tamaño).
  2. Copia el archivo: Coloca el archivo en la carpeta Audio/BGM/ de tu proyecto.
  3. Registra la canción: Añade una entrada en el array JUKEBOX_SONGS con el nombre visible y el nombre del archivo (sin extensión).
  4. Prueba: Inicia el juego, abre la Jukebox y verifica que la nueva canción aparece y suena correctamente.

Resolución de Problemas

La Jukebox no aparece en el Pokégear

Una canción no suena

La canción se corta al cambiar de mapa

El volumen de la Jukebox es diferente al de la música normal