Guardar y Cargar
El sistema de guardado de Pokémon Essentials permite al jugador guardar su progreso y cargarlo posteriormente. Este artículo cubre el funcionamiento del sistema de guardado, la ubicación de los archivos, el autoguardado y cómo personalizar el comportamiento.
Sistema de Guardado
Cuando el jugador selecciona "Guardar" en el menú de pausa, se ejecuta el proceso de guardado que serializa todos los datos del juego en un archivo.
Funciones principales
| Función | Descripción |
|---|---|
pbSave |
Guarda la partida normalmente (con confirmación al jugador) |
pbEmergencySave |
Guarda la partida de emergencia (sin confirmación, usado ante errores) |
Game.save |
Método interno que realiza la escritura del archivo de guardado |
Guardar por script
# Guardar la partida (muestra la pantalla de guardado al jugador)
pbSave
# Guardar silenciosamente (sin interfaz)
Game.save
# Guardado de emergencia (ante un error crítico)
pbEmergencySave
Ubicación del archivo de guardado
El archivo de guardado se almacena en la carpeta del juego por defecto:
| Archivo | Descripción |
|---|---|
Game.rxdata |
Archivo principal de guardado |
Game_backup.rxdata |
Copia de seguridad del último guardado |
La ubicación se puede consultar y cambiar con:
# Obtener la ruta del archivo de guardado actual
ruta = SaveData::FILE_PATH
# Por defecto es:
# "Game.rxdata" (en la carpeta raíz del juego)
Datos que se guardan
El sistema de guardado serializa los siguientes datos globales:
| Dato | Variable global | Contenido |
|---|---|---|
| Jugador | $player |
Nombre, ID, equipo Pokémon, medallas, objetos clave, dinero |
| Sistema del juego | $game_system |
Música actual, sonidos, temporizadores |
| Mapa | $game_map |
ID del mapa actual, posición del jugador, eventos del mapa |
| Pantalla | $game_screen |
Tono de pantalla, clima, flash |
| Switches | $game_switches |
Estado de todos los interruptores del juego |
| Variables | $game_variables |
Todas las variables del juego |
| Self Switches | $game_self_switches |
Interruptores locales de cada evento |
| Opciones | $PokemonSystem |
Preferencias del jugador (velocidad de texto, volumen, etc.) |
| Mochila | $bag |
Inventario completo con cantidades |
| PC | $PokemonStorage |
Pokémon almacenados en las cajas del PC |
| Estadísticas | $stats |
Tiempo de juego, pasos, combates ganados, etc. |
Pantalla de Carga
La pantalla de carga (Load Screen) aparece al iniciar el juego si existe un archivo de guardado. Muestra información básica de la partida guardada:
- Nombre del jugador
- Número de medallas
- Número de Pokémon en la Pokédex
- Tiempo de juego
- Ubicación actual
Opciones de la pantalla de carga
| Opción | Descripción |
|---|---|
| Continuar | Carga la partida guardada |
| Nueva Partida | Comienza una partida nueva (pide confirmación si hay partida guardada) |
| Opciones | Abre la pantalla de opciones |
| Regalo Misterioso | Acceso a regalos misteriosos (si está habilitado) |
| Debug | Modo depuración (solo si $DEBUG es true) |
Autoguardado
Pokémon Essentials v21.1 soporta un sistema de autoguardado que puede guardar automáticamente en ciertos momentos:
# Activar el autoguardado
Settings::AUTOSAVE_ENABLED = true
# El autoguardado ocurre:
# - Al entrar a un nuevo mapa
# - Después de un combate importante
# - En intervalos definidos
Múltiples archivos de guardado
Para implementar múltiples ranuras de guardado, puedes cambiar la ruta del archivo de guardado dinámicamente:
# Ejemplo: Sistema de 3 ranuras de guardado
def pbSaveToSlot(slot_number)
# Cambia la ruta del archivo de guardado
file = "Game_Slot#{slot_number}.rxdata"
SaveData.set_file_path(file)
Game.save
end
def pbLoadFromSlot(slot_number)
file = "Game_Slot#{slot_number}.rxdata"
SaveData.set_file_path(file)
Game.load
end
Prevenir guardado en ciertas áreas
Puedes desactivar el guardado en mapas específicos o situaciones especiales:
Método 1: Desactivar desde un evento
# Desactivar el guardado
$game_system.save_disabled = true
# Volver a activar el guardado
$game_system.save_disabled = false
Método 2: Por metadatos de mapa
Puedes configurar un mapa para que no permita guardar estableciendo sus metadatos:
# En los metadatos del mapa, se puede marcar como "no guardar"
# Esto se configura en el editor de mapas o en map_metadata.txt
Método 3: Condicional en el menú
# Modificar la condición del botón Guardar en el menú de pausa
MenuHandlers.add(:pause_menu, :save, {
"name" => _INTL("Guardar"),
"order" => 60,
"condition" => proc {
# No permitir guardar si el interruptor 50 está activado
# o si el guardado está desactivado globalmente
next !$game_system.save_disabled && !$game_switches[50]
},
"effect" => proc { |menu|
scene = PokemonSave_Scene.new
screen = PokemonSaveScreen.new(scene)
screen.pbSaveScreen
next false
}
})
Manejo de errores al cargar
Si el archivo de guardado se corrompe, Essentials intentará cargar la copia de seguridad
(Game_backup.rxdata). Si tampoco funciona, se muestra un mensaje de error y se ofrece iniciar una
nueva partida.
# Verificar si existe un archivo de guardado
if SaveData.exists?
pbMessage(_INTL("Se encontró una partida guardada."))
else
pbMessage(_INTL("No hay partida guardada."))
end
# Borrar la partida guardada (¡con confirmación!)
if pbConfirmMessage(_INTL("¿Borrar la partida guardada? Esto no se puede deshacer."))
SaveData.delete_file
pbMessage(_INTL("Partida borrada."))
end
Pantalla de guardado
La pantalla de guardado muestra información de la partida actual antes de confirmar:
# Abrir la pantalla de guardado directamente
scene = PokemonSave_Scene.new
screen = PokemonSaveScreen.new(scene)
screen.pbSaveScreen
Gráficos
Los gráficos de las pantallas de guardado y carga se encuentran en Graphics/UI/Save/ y
Graphics/UI/Load/:
| Archivo | Ubicación | Descripción |
|---|---|---|
bg.png |
Graphics/UI/Save/ |
Fondo de la pantalla de guardado |
bg.png |
Graphics/UI/Load/ |
Fondo de la pantalla de carga |
panels.png |
Graphics/UI/Load/ |
Paneles de información de la partida |
SaveData.register_conversion para convertir datos
viejos al nuevo formato al cargar partidas antiguas.