Sincronización de contactos entre dispositivos
En servidores de FiveM con teléfono y tablet, o con soporte multipersonaje, sincronizar contactos adecuadamente es un reto técnico importante. Los contactos deben estar disponibles donde el jugador espera verlos (su teléfono actual, su tablet, sus distintos personajes) sin mezclarse entre cuentas o personajes. Una mala sincronización genera frustración y rompe inmersión.
Patrones de base de datos
La clave es indexar contactos por citizenid en lugar de por player ID. Así los contactos pertenecen al personaje, no al jugador. Al cambiar de personaje, el teléfono carga los contactos del nuevo citizenid. Al cambiar entre teléfono y tablet del mismo personaje, los contactos son idénticos porque comparten la misma fuente. La tabla de contactos debe tener una foreign key a character_id para facilitar cascadas de eliminación.
Sincronización en tiempo real
Cuando un jugador añade un contacto nuevo, los otros dispositivos del mismo personaje deberían reflejar el cambio al momento. Usa eventos de servidor que broadcasteen los cambios a todos los clientes de ese player, o un sistema de polling ligero cada pocos segundos. Los sistemas más avanzados usan state bags sincronizadas para actualizaciones sin latencia.
Multichar y aislamiento
Para multipersonaje, los contactos deben estar estrictamente aislados. Un personaje policía no debería ver los contactos del personaje criminal. Valida en servidor que los contactos solicitados coincidan con el citizenid activo del jugador. Nunca cargues los contactos de otros personajes del mismo jugador en el cliente, porque un cheater podría filtrarlos.
Agency Phone y la implementación de referencia
Agency Phone gestiona todo esto de forma nativa. Los contactos se sincronizan automáticamente entre el teléfono y Agency Pad del mismo personaje, se aíslan entre personajes multichar y se actualizan en tiempo real al añadir o modificar. La base de datos está diseñada para escalar a miles de jugadores sin degradar rendimiento, usando índices apropiados y consultas optimizadas.
