Archivos PBS
¿Qué son los PBS?
Los archivos PBS (Pokémon Battle System) son archivos de texto que contienen toda la información de datos del juego: Pokémon, movimientos, habilidades, objetos, entrenadores, encuentros, etc. Son la forma principal de modificar el contenido del juego sin tocar el código Ruby.
Ubicación
Los archivos PBS se encuentran en la carpeta:
PBS/
Dentro del directorio raíz del proyecto. Al compilar el juego, estos archivos se convierten en datos binarios utilizados internamente.
Lista de archivos PBS
| Archivo | Contenido | Doc. relacionada |
|---|---|---|
| pokemon.txt | Definición de todas las especies de Pokémon | Pokémon |
| pokemon_forms.txt | Formas alternativas (regionales, Mega, etc.) | Pokémon |
| moves.txt | Todos los movimientos/ataques | Movimientos |
| abilities.txt | Todas las habilidades | Habilidades |
| items.txt | Todos los objetos | Objetos |
| trainers.txt | Entrenadores y sus equipos | Entrenadores |
| trainer_types.txt | Tipos de entrenadores (clases) | Entrenadores |
| encounters.txt | Encuentros salvajes por mapa | Combate |
| types.txt | Tipos de Pokémon y tabla de efectividad | — |
| metadata.txt | Metadatos de mapas | Mapas |
| map_metadata.txt | Metadatos adicionales por mapa | Mapas |
| town_map.txt | Mapa del pueblo/región | Mapas |
| map_connections.txt | Conexiones entre mapas | Mapas |
| ribbons.txt | Cintas/medallas | — |
| shadow_pokemon.txt | Pokémon oscuros | — |
| phone.txt | Contactos del Pokégear | Interfaz |
| berry_plants.txt | Datos de plantas de bayas | Objetos |
| regional_dexes.txt | Pokédex regionales | Pokédex |
| pokemon_metrics.txt | Posición de sprites en batalla (offsets) | — |
| battle_tower_trainers.txt | Entrenadores para la Battle Tower | Desafío de Batalla |
| battle_tower_pokemon.txt | Pool de Pokémon para la Battle Tower | Desafío de Batalla |
| battle_facility_lists.txt | Configuración de instalaciones de batalla | Desafío de Batalla |
| dungeon_parameters.txt | Parámetros de mazmorras procedurales | Mazmorras |
| dungeon_tilesets.txt | Tilesets para mazmorras procedurales | Mazmorras |
Formato de los PBS
Los PBS utilizan un formato de texto plano basado en secciones. Ejemplo de una entrada de Pokémon:
[PIKACHU]
Name = Pikachu
Types = ELECTRIC
BaseStats = 35,55,40,90,50,50
GenderRatio = Female50Percent
GrowthRate = Medium
BaseEXP = 112
EVs = SPEED,2
CatchRate = 190
Happiness = 70
Abilities = STATIC
HiddenAbilities = LIGHTNINGROD
Moves = 1,TAILWHIP,1,THUNDERSHOCK,4,GROWL,...
EggMoves = BESTOW,BIDE,CHARGE,...
EggGroups = Field,Fairy
HatchSteps = 2560
Height = 0.4
Weight = 6.0
Color = Yellow
Shape = 8
Habitat = Forest
Category = Ratón
Pokedex = Cuando varios de estos Pokémon se juntan...
Archivos adicionales y parciales
Cada PBS admite archivos adicionales junto al original, con el mismo nombre base más un sufijo: _algo. Sirven para no tocar el archivo original y mantener tus cambios separados (por ejemplo, en su propio commit o carpeta de mods).
PBS/pokemon.txt <- archivo base
PBS/pokemon_custom.txt <- adicional
PBS/pokemon_AAA.txt <- adicional
PBS/pokemon_custom_001.txt <- adicional
PBS/pokemon_custom_002.txt <- adicional
El sufijo puede ser cualquier texto. Los archivos se cargan en orden alfabético (sin distinguir mayúsculas/minúsculas) por nombre completo, y el archivo base (sin sufijo) siempre carga primero. En el ejemplo de arriba el orden real es: pokemon.txt → pokemon_AAA.txt → pokemon_custom.txt → pokemon_custom_001.txt → pokemon_custom_002.txt.
Añadir o redefinir una sección
Una sección con un ID nuevo en un archivo adicional añade una entrada nueva. Una sección con un ID que ya existe la redefine: solo hace falta escribir los campos que cambian, el resto se hereda tal cual del archivo cargado antes. No hace falta repetir el Pokémon entero.
# PBS/pokemon.txt (original, completo)
[BULBASAUR]
Types = GRASS,POISON
BaseStats = 45,49,49,65,65,45
Abilities = OVERGROW
Moves = 1,TACKLE,3,GROWL,...
Evolutions = IVYSAUR,Level,16
(...resto de campos)
# PBS/pokemon_custom.txt (adicional, parcial)
[BULBASAUR]
BaseStats = 50,50,50,50,50,50
Evolutions = IVYSAUR,Level,12
Tras compilar, Bulbasaur queda con BaseStats y Evolutions nuevos, y Types, Abilities, Moves, etc. exactamente como en el original.
El merge parcial aplica a los PBS "por entidad" (una sección = un registro con muchos campos): pokemon.txt, pokemon_forms.txt, pokemon_metrics.txt, shadow_pokemon.txt, moves.txt, abilities.txt, items.txt, types.txt, berry_plants.txt, ribbons.txt, trainer_types.txt, town_map.txt, metadata.txt, map_metadata.txt, dungeon_tilesets.txt, dungeon_parameters.txt y phone.txt.
encounters.txt y trainers.txt también aceptan archivos adicionales, pero ahí repetir el mismo mapa/entrenador en un archivo adicional reemplaza el registro entero (no fusiona campo a campo: hay que reescribir todos los tipos de encuentro o todo el equipo). map_connections.txt y regional_dexes.txt son listas: un archivo adicional solo añade filas, no hay un ID individual que fusionar.
Formato JSON
Cualquier PBS (el original o uno adicional) se puede escribir en JSON en vez de texto plano, con el mismo nombre base y en la misma carpeta PBS/. Si existen los dos para el mismo archivo (p. ej. pokemon_custom.txt y pokemon_custom.json), gana el .txt y el .json se ignora — la regla es por archivo, no global: podés mezclar .txt y .json libremente entre el original y los adicionales.
La estructura general es un objeto raíz donde cada key es el ID de sección (el mismo que irías entre corchetes en el .txt) y el valor es un objeto con los campos:
{
"PIKACHU": {
"Name": "Pikachu",
"Types": ["ELECTRIC"],
"BaseStats": {
"HP": 35, "ATTACK": 55, "DEFENSE": 40,
"SPECIAL_ATTACK": 50, "SPECIAL_DEFENSE": 50, "SPEED": 90
},
"GenderRatio": "Female50Percent",
"GrowthRate": "Medium",
"BaseEXP": 112,
"EVs": { "SPEED": 2 },
"CatchRate": 190,
"Happiness": 70,
"Abilities": ["STATIC"],
"HiddenAbilities": ["LIGHTNINGROD"],
"Moves": [
{ "level": 1, "move": "TAILWHIP" },
{ "level": 1, "move": "THUNDERSHOCK" },
{ "level": 4, "move": "GROWL" }
],
"EggMoves": ["BESTOW", "BIDE", "CHARGE"],
"EggGroups": ["Field", "Fairy"],
"HatchSteps": 2560,
"Height": 0.4,
"Weight": 6.0,
"Color": "Yellow",
"Shape": 8,
"Habitat": "Forest",
"Category": "Ratón",
"Pokedex": "Cuando varios de estos Pokémon se juntan..."
}
}
Dos comodidades solo disponibles en JSON, pensadas para no errar el orden de un campo posicional:
- BaseStats / EVs se pueden dar como objeto
{ "HP": ..., "ATTACK": ..., "DEFENSE": ..., "SPECIAL_ATTACK": ..., "SPECIAL_DEFENSE": ..., "SPEED": ... }en vez del array posicional del.txt(donde Speed va en 4ª posición, no al final). Las 6 keys son obligatorias. - Moves (nivel de subida) y Evolutions se pueden dar como array de objetos nombrados (
{"level": 1, "move": "TACKLE"},{"species": "IVYSAUR", "method": "Level", "parameter": 16}) en vez de un array plano donde hay que recordar qué posición es cada campo.
Un archivo adicional parcial en JSON se ve así (equivalente al ejemplo de Bulbasaur de la sección anterior):
{
"BULBASAUR": {
"BaseStats": {
"HP": 50, "ATTACK": 50, "DEFENSE": 50,
"SPECIAL_ATTACK": 50, "SPECIAL_DEFENSE": 50, "SPEED": 50
},
"Evolutions": [
{ "species": "IVYSAUR", "method": "Level", "parameter": 12 }
]
}
}
Solo se escriben los campos que cambian — el resto se hereda igual que en .txt.
.json, pero con una forma distinta: map_connections.json es un array de filas [map1, side1, offset1, map2, side2, offset2] (o de objetos con esas mismas keys); regional_dexes.json es un objeto keyed por número de Pokédex con un array de especies; encounters.json es un objeto keyed por "MapID_Version"; trainers.json es un objeto keyed por "Tipo,Nombre,Version".
Dynamic PBS
La Base de Sky incluye el plugin Dynamic PBS que permite modificar datos de PBS en tiempo real durante el juego sin necesidad de recompilar:
- Cambiar stats, tipos, habilidades de Pokémon existentes
- Modificar propiedades de movimientos
- Útil para eventos especiales, pruebas o cambios dinámicos
Compilar los PBS
Para que los cambios en los PBS tomen efecto:
- Editar el archivo PBS correspondiente con un editor de texto
- Abrir el juego en modo Debug
- El juego detecta cambios y recompila automáticamente
- Los datos actualizados se guardan en la carpeta
Data/
Siempre haz una copia de seguridad de tus archivos PBS antes de editarlos. Un error de formato puede causar que la compilación falle.