Guardar y recuperar un saldo protegido
Conserva las identidades de recuperación y prueba la carga en otro proceso.
Prepara la sesión nativa
La persistencia portable necesita una inicialización controlada por la aplicación. Blueprint o IA por sí solos no proporcionan secretos de recuperación.
- Obtén el ID de clave existente y el secreto aleatorio de 32 bytes del propietario mediante tu sistema protegido de cuenta/recuperación. Genera una clave con
FScientificNumberRecoveryKeys::Generatesolo para un propietario realmente nuevo. - Conserva un anillo compartido
FScientificNumberRecoveryKeys. Añade la clave con su ID estable y distinto de cero. Conserva claves antiguas mientras admitas sus registros y borra los buffers temporales tras utilizarlos. - Elige
FScientificNumberFileSaveStorepara almacenamiento local Win64 o implementaIScientificNumberSaveStorepara un almacén fiable. CompareExchange debe comprobar y aplicar atómicamente la revisión esperada. - Crea y conserva un
UScientificNumberSaveSession. Inicialízalo una vez con perfil, GUID estable del dominio del juego, propietario autenticado, claves y almacén. Comprueba éxito y error. Una sesión inicializada no puede vincularse de nuevo.
Nunca generes una clave sustituta para ocultar un fallo de carga. Perder el secreto original impide recuperar sus registros. No guardes secretos de producción en valores predeterminados de Blueprint, assets públicos ni archivos junto a la partida.
Guarda desde Blueprint
Expón la sesión inicializada al juego conservando su propiedad correctamente en Unreal. Crea un Safe de 12345 y llama a Save con Slot TutorialWallet y Expected Revision 0 para un slot nuevo. Comprueba el éxito, conserva Out Revision e inspecciona Out Error si falla.
En escrituras posteriores usa la revisión que realmente leíste o guardaste. Ante un conflicto, carga y reevalúa la operación de juego; no escribas repetidamente un saldo obsoleto adivinando revisiones.
Cierra y recupera
- Cierra el proceso completo del juego después de guardar correctamente.
- Abre otro proceso e inicializa con los mismos ID de clave, secretos, dominio, propietario y slot.
- Llama a Load. Minimum Revision permite imponer un límite inferior conocido por una fuente fiable; cero acepta la revisión autenticada disponible.
- Tras el éxito, autentica el Safe devuelto con Try Get Safe Number.
El nuevo proceso recupera 12345. Una clave incorrecta, otra identidad o un registro alterado se rechazan; no se cargan como cero.
Contexto y autoridad
Usa SaveContextBound y LoadContextBound para valores ligados a contexto. El contexto en memoria y la identidad del guardado son entradas distintas. No serialices handles opacos de IA ni bytes Safe en memoria como formato de partida.
LocalPortable detecta alteraciones autenticadas y conflictos entre escritores que siguen el protocolo. No impide que el propietario de la máquina restaure una copia antigua completa. TrustedServer requiere identidad, almacenamiento y revisiones realmente fiables; elegir ese enum no crea un backend.
Las llamadas de almacenamiento son síncronas. Planifica el trabajo lento del backend y conserva la sesión y sus dependencias durante la operación. Consulta Documentation/PortableSafePersistence.md, incluido en el plugin, para el contrato nativo y el proveedor anterior.