beasty-save-system / beasty-save-system.md

Beasty Save System

Beasty Save System guarda y carga los datos de tu juego como archivos JSON en disco, sin dependencias externas y sin excepciones inesperadas. Funciona de dos maneras: coloca dos componentes en una escena y conecta un botón, o llama a una API de C# de cinco líneas desde tu propio código.

Qué lo hace diferente

Cero dependencias. El paquete incluye su propio motor JSON. Sin Newtonsoft, sin los límites de JsonUtility, sin entradas en el package manager que reconciliar con el resto de tu proyecto.

Cada llamada devuelve un resultado tipado. BeastySave.Save devuelve un SaveResult. BeastySave.Load<T> devuelve un LoadResult<T>. Nada lanza excepciones. Compruebas Success, lees el código de Error y decides qué ve el jugador — incluyendo ofrecer la copia de seguridad automática cuando un archivo resulta estar corrupto.

Seguro por defecto. Los guardados se escriben de forma atómica: en un archivo temporal, que luego se intercambia por el slot. Un cierre inesperado a mitad de la escritura no puede dejarte con un guardado a medias. El archivo anterior se rota a .bak, y un archivo que falla su checksum nunca puede sobrescribir la última copia buena.

Características

  • Guarda cualquier objeto C# plano, o el estado de los componentes en tu escena.
  • Un camino sin código: BeastySaveManager + BeastySaveable + un botón uGUI.
  • Escrituras atómicas, copias de seguridad .bak automáticas, checksums SHA-256 y restauración de copia de seguridad con una sola llamada.
  • Encriptación AES-256 opcional. Lee encryption.md para conocer sus límites reales.
  • Metadatos en texto plano (nivel, tiempo de juego, capítulo) legibles sin desencriptar el archivo, para que una pantalla de slots de guardado pueda listarlos de forma económica.
  • Carga estricta (todo o nada, con rollback) o tolerante (omitir y advertir).
  • Versionado de datos con migraciones registradas, para que una actualización pueda leer los guardados que tus jugadores ya tienen.
  • Variantes asíncronas para la IO de archivos.
  • Siete módulos convertidores opcionales (Animation, Audio, Particles, Physics2D, Physics3D, TMPro, UGUI), cada uno de los cuales compila solo cuando el módulo de Unity correspondiente está en el proyecto.
  • Una ventana de editor que lista los saveables en tu escena y los archivos de guardado en disco.
  • Unity 6000.2+, Mono e IL2CPP. WebGL no está soportado.

Por dónde empezar

Si no escribes C#, ve a save-without-code.md. Te lleva desde una escena vacía hasta un guardado y una carga funcionando, solo con clics.

Si sí escribes C#, ve a save-with-code.md. Cinco minutos, una clase de datos y un archivo de guardado en disco.

De cualquier forma, instala primero: installation.md.

La única página que todos deberían leer

what-gets-saved.md. Te dice qué tipos se guardan y recuperan correctamente y — más importante — que las referencias a objetos de Unity (un sprite, un prefab, otro componente) no se guardan. Eso es deliberado, y hay una forma correcta de trabajar con ello. Leer esa página antes de construir una pantalla de guardado vale los diez minutos.

Guías

Escritas para cualquiera, con o sin código.

PáginaQué cubre
what-gets-saved.mdTipos soportados, qué no se guarda, los errores que hacen fallar un guardado
settings.mdCada campo de BeastySaveSettings y cuándo cambiarlo
scene-state.mdBeastySaveable, BeastySaveManager, ids, objetos generados en tiempo de ejecución
slots-and-metadata.mdSlots, cómo listarlos y cómo construir una pantalla de slots de guardado
backups-and-corruption.mdEscrituras atómicas, archivos .bak, restaurar uno
encryption.mdAES, y qué protege y qué no protege la encriptación
strict-vs-tolerant.mdLos dos modos de carga
versioning-and-migrations.mdPublicar una actualización que lee guardados antiguos
async-saving.mdQué hacen realmente los métodos asíncronos
save-manager-window.mdLa ventana del editor, sección por sección

Referencia

Firmas exactas, comportamiento exacto.

PáginaQué cubre
api-beastysave.mdCada método de la fachada BeastySave
results-and-errors.mdSaveResult, LoadResult<T>, los códigos de error
components.mdBeastySaveable y BeastySaveManager, campo por campo
converter-modules.mdLos siete módulos y exactamente qué guarda cada uno
save-file-format.mdEl sobre (envelope), el formato de grupo, los pipelines
json-engine.mdJsonNode, JsonMapper, JsonParser, JsonWriter

Avanzado

PáginaQué cubre
custom-converters.mdEnseñar al sistema a guardar tus propios tipos
platforms-and-limits.mdVersiones de Unity, IL2CPP, WebGL, rendimiento

Cuando algo sale mal

troubleshooting.md relaciona un síntoma con una causa y con una solución. faq.md responde las preguntas que surgen con más frecuencia.