>
Tutorial 2026-04-27

Guía de almacenamiento y persistencia de datos de jugador en FiveM

OntelMonke

OntelMonke

Admin y desarrollador de Agency Scripts

Opciones de almacenamiento de datos

Los datos de los jugadores en FiveM pueden guardarse en varios sistemas: MySQL para persistencia robusta, KVP para almacenamiento local en cliente o servidor, state bags para sincronización en tiempo real. Cada uno tiene su caso de uso y entender cuándo aplicar cada uno es clave para construir un servidor escalable sin bugs de persistencia.

MySQL para persistencia robusta

MySQL (generalmente mediante oxmysql) es la opción principal para datos que deben sobrevivir reinicios: inventarios, dinero, personajes, propiedades, vehículos. Ofrece ACID transactions, índices para búsquedas rápidas y una estructura madura. El coste es la latencia de red: consultas costosas en el hot path pueden ralentizar el servidor. Optimiza con caché en memoria de datos accedidos frecuentemente.

KVP para datos locales

KVP (key-value pairs) guarda datos localmente en cada cliente sin involucrar al servidor ni la base de datos. Perfecto para preferencias del jugador: temas de HUD, configuración del teléfono, acciones rápidas favoritas. Son datos específicos de ese cliente que no necesitan sincronizar. KVP escribe en el almacenamiento local del FiveM del jugador y persiste entre sesiones.

State bags para sincronización

Las state bags sincronizan datos entre cliente y servidor automáticamente. Son ideales para datos que cambian a veces pero todos los clientes necesitan ver: estado de servicio del jugador, título del trabajo, indicadores visuales. Evita usarlas para datos que cambian constantemente como posición, porque saturarás la red. Úsalas para estado, no para eventos rápidos.

Patrones de framework

Los frameworks (QBCore, ESX, ox_core) encapsulan estos patrones con APIs coherentes. QBCore usa Player.PlayerData con commit a MySQL periódico. ox_core persiste por jugador con ops transaccionales. Adhiérete a las convenciones del framework para que los scripts sean compatibles y que el almacenamiento esté centralizado. Crear tu propia capa de datos sin conocer los patrones del framework suele ser fuente de bugs.

Rendimiento y buenas prácticas

Cachea datos leídos frecuentemente en memoria Lua. Agrupa writes en transacciones cuando sea posible. Usa índices SQL en columnas de búsqueda. Haz commits a base de datos en eventos naturales (logout, cambio de zona) en lugar de en cada acción pequeña. Monitoriza con slow query logs para identificar cuellos de botella. Un servidor bien optimizado puede aguantar cientos de jugadores sin problemas de datos.

Compartir este artículo

¿Listo para mejorar tu servidor?

Echa un vistazo a nuestros scripts premium de FiveM en la tienda de Agency Scripts o únete a nuestra comunidad de Discord para soporte y novedades.