Saltar a contenido

Guardado, versionado y replay

El sistema de guardado necesita representar el mundo suficiente para continuar después de cerrar el juego. Un replay, en cambio, puede buscar reproducir acciones o permitir depurar la divergencia entre dos ejecuciones. Son problemas relacionados pero distintos.

Definir el contrato de persistencia

Persistí IDs estables, estado mutable, relaciones y progreso relevantes. No guardes referencias directas a objetos de UI, handles de motor, punteros o sockets. Guardá la identidad que permita reconstruirlos cuando sea apropiado.

SaveHeader:
    schema_version
    game_content_version
    world_id
    timestamp
WorldSnapshot:
    entities
    inventories
    quests
    relationships
    simulation_clock

La estructura es ilustrativa. Cada proyecto debe decidir atomicidad, integridad, compresión y políticas para contenido eliminado o modificado.

Snapshots y event log

Snapshot: captura un estado que permite restaurar. Action log: registra intenciones para reproducir una secuencia cuando la simulación es suficientemente controlable. Event sourcing: persiste cambios como hechos; ofrece auditoría en algunos sistemas, pero no debería convertirse en obligación universal para todo el juego.

Una combinación práctica es guardar snapshots periódicos y registrar información diagnóstica entre ellos cuando sea útil. Para replay exacto no basta con guardar inputs si la simulación usa física no determinista, RNG no controlado o tareas concurrentes con distinto orden.

Migración

Asigná versiones a los esquemas. Probar una migración desde una versión antigua es más importante que prometer compatibilidad universal. Si se renombra una definición YAML, usá IDs estables y una estrategia de alias o migración.

Qué verificar

Guardar/cargar un mundo con entidades enlazadas, restaurar IDs y relaciones, simular después de cargar, rechazar archivos corruptos de forma controlada, y detectar el primer tick divergente cuando se usa un replay determinista.

Relacionado: Estado del mundo, definiciones e identidad, Intenciones, acciones y eventos, Núcleo de simulación y scheduler, Probar la simulación y medir antes de optimizar.

Fuente: Unreal Replay System.


Mencionado desde