Metadatos Globales

Los metadatos globales son la configuración a nivel de juego que se define en la sección global del archivo PBS metadata.txt. A diferencia de los metadatos de mapa (que se definen por cada mapa individual), los metadatos globales afectan al juego completo: personajes jugables, música predeterminada, punto de inicio, y otras configuraciones fundamentales. Esta sección corresponde al bloque con ID 0 en el archivo.

Ubicación del archivo

El archivo de metadatos se encuentra en:

PBS/metadata.txt

Este archivo contiene tanto la sección global (ID 0) como las secciones de cada mapa (ID > 0). La sección global siempre debe ser la primera entrada del archivo.

Formato del archivo

La sección global usa el formato estándar de los archivos PBS, con el ID 0:

[000]
Home             = 3,5,8,8
PlayerA          = POKEMONTRAINER_Red,trchar000,trainer_POKEMONTRAINER_Red,Pokemon_Trainer_Red
PlayerB          = POKEMONTRAINER_Leaf,trchar001,trainer_POKEMONTRAINER_Leaf,Pokemon_Trainer_Leaf
WildBattleBGM    = Battle wild.ogg
TrainerBattleBGM = Battle trainer.ogg
WildVictoryBGM   = Battle victory wild.ogg
TrainerVictoryBGM = Battle victory trainer.ogg
SurfBGM          = Surfing.ogg
BicycleBGM       = Bicycle.ogg

Propiedades globales

A continuación se detallan todas las propiedades disponibles en la sección global:

Home

Define el punto de inicio del jugador y el punto al que regresa al perder un combate sin Centro Pokémon asignado.

Home = MAP_ID,X,Y,DIRECTION

Ejemplo:

Home = 3,5,8,8   # Mapa 3, posición (5,8), mirando arriba

PlayerA, PlayerB, PlayerC, etc.

Define los personajes jugables disponibles. El jugador selecciona uno al inicio del juego. Puedes definir tantos como necesites (PlayerA, PlayerB, PlayerC, PlayerD, etc.).

PlayerA = TRAINER_TYPE,CHARSET,BATTLER,DISPLAY_NAME

Ejemplo con dos personajes:

# Personaje masculino
PlayerA = POKEMONTRAINER_Red,trchar000,trainer_POKEMONTRAINER_Red,Entrenador Pokémon

# Personaje femenino
PlayerB = POKEMONTRAINER_Leaf,trchar001,trainer_POKEMONTRAINER_Leaf,Entrenadora Pokémon

En el PBS de trainer_types.txt, asegúrate de que los tipos de entrenador POKEMONTRAINER_Red y POKEMONTRAINER_Leaf estén definidos.

WildBattleBGM

Música de fondo que suena durante los combates contra Pokémon salvajes. Se busca en Audio/BGM/.

WildBattleBGM = Battle wild.ogg

TrainerBattleBGM

Música de fondo durante los combates contra entrenadores.

TrainerBattleBGM = Battle trainer.ogg

WildVictoryBGM

Música (o ME, Music Effect) que suena al ganar un combate contra un Pokémon salvaje.

WildVictoryBGM = Battle victory wild.ogg

TrainerVictoryBGM

Música que suena al ganar un combate contra un entrenador.

TrainerVictoryBGM = Battle victory trainer.ogg

SurfBGM

Música que suena mientras el jugador navega por el agua usando Surf. Reemplaza la BGM del mapa actual mientras se está surfeando.

SurfBGM = Surfing.ogg

BicycleBGM

Música que suena mientras el jugador va en bicicleta. Reemplaza la BGM del mapa actual.

BicycleBGM = Bicycle.ogg

Propiedades adicionales

Dependiendo de la versión de Essentials o de La Base de Sky, pueden existir propiedades adicionales:

StartMoney

Dinero inicial del jugador al comenzar una nueva partida.

StartMoney = 3000

StartItemStorage

Objetos que aparecen en el almacenamiento del PC al inicio del juego.

StartItemStorage = POTION,1

TextSkin

Define la skin (apariencia visual) predeterminada de los cuadros de diálogo. El número corresponde al índice en los archivos de windowskin.

TextSkin = 0

Diferencia entre metadatos globales y de mapa

Es importante distinguir entre la sección global y las secciones de mapa:

Característica Metadatos Globales (ID 0) Metadatos de Mapa (ID > 0)
Alcance Afecta todo el juego Afecta solo un mapa específico
Home point ✔ Define el punto de inicio
Personajes jugador ✔ Todos los PlayerA/B/C
BGM de batalla ✔ BGM predeterminada ✔ Puede sobreescribir la global
Entorno de batalla ✔ BattleBack, entorno visual
Tipo de terreno ✔ Outdoor, Cave, etc.
Clima ✔ Weather para el mapa
Posición en mapa regional ✔ MapPosition

Si un mapa tiene definida una música de batalla salvaje en sus metadatos, esta sobreescribe la definida globalmente solo mientras el jugador esté en ese mapa.

Agregar un nuevo personaje jugable

Para añadir un tercer personaje jugable, sigue estos pasos:

  1. Define el tipo de entrenador en trainer_types.txt:
    [POKEMONTRAINER_Ethan]
    Name = Entrenador Pokémon
    
  2. Coloca el charset del jugador en Graphics/Characters/ con el nombre correspondiente (ej: trchar002.png).
  3. Coloca el gráfico de batalla en Graphics/Trainers/ (ej: trainer_POKEMONTRAINER_Ethan.png).
  4. Añade la línea PlayerC en la sección global del metadata.txt:
    PlayerC = POKEMONTRAINER_Ethan,trchar002,trainer_POKEMONTRAINER_Ethan,Entrenador Pokémon
  5. Compila el juego para que los cambios surtan efecto.

El sistema de selección de personaje al inicio del juego detectará automáticamente los personajes definidos y los mostrará como opciones.

Configurar la música predeterminada

La música configurada en los metadatos globales actúa como valores predeterminados. Puedes cambiar temporalmente la música de batalla con comandos de script:

# Cambiar BGM de batalla salvaje temporalmente
setBattleRule("wildBattleBGM", "Battle special.ogg")

# Cambiar BGM de batalla de entrenador temporalmente
setBattleRule("trainerBattleBGM", "Battle boss.ogg")

# Estos cambios solo afectan al siguiente combate.
# Después del combate, se restaura la BGM global.

Para cambiar la música de forma persistente (por ejemplo, al avanzar en la historia), modifica los valores globales con script:

# Cambiar la música de batalla salvaje global por script
$PokemonGlobal.wildBattleBGM = RPG::AudioFile.new("Battle wild v2.ogg", 100, 100)

# Cambiar la música de surf
$PokemonGlobal.surfBGM = RPG::AudioFile.new("Surfing v2.ogg", 100, 100)

# Restaurar a los valores del PBS
$PokemonGlobal.wildBattleBGM = nil  # Vuelve al valor de metadata.txt

Ejemplo completo de sección global

Este es un ejemplo completo y funcional de la sección global en metadata.txt:

[000]
Home              = 5,7,10,8
PlayerA           = POKEMONTRAINER_Red,trchar000,trainer_POKEMONTRAINER_Red,Entrenador Pokémon
PlayerB           = POKEMONTRAINER_Leaf,trchar001,trainer_POKEMONTRAINER_Leaf,Entrenadora Pokémon
WildBattleBGM     = Battle wild.ogg
TrainerBattleBGM  = Battle trainer.ogg
WildVictoryBGM    = Battle victory wild.ogg
TrainerVictoryBGM = Battle victory trainer.ogg
SurfBGM           = Surfing.ogg
BicycleBGM        = Bicycle.ogg

Acceder a los metadatos por script

Puedes acceder a los metadatos globales desde scripts Ruby con:

# Obtener el objeto de metadatos globales
metadata = GameData::Metadata.get

# Acceder a propiedades específicas
home = metadata.home          # [map_id, x, y, direction]
players = metadata.player_A   # Datos del jugador A
bgm = metadata.wild_battle_BGM

# Verificar si existe un dato
if metadata.surf_BGM
  pbMessage("La BGM de surf está configurada.")
end

Errores comunes

Relación con otros archivos PBS

El archivo metadata.txt trabaja en conjunto con otros archivos PBS: