Rincón del desarrollador
Queremos contaros en qué estamos trabajando y porqué estas medidas que tomamos son necesarias para continuar con el desarrollo del servidor.
¡Hola a todos!
Que bonito es, después de más de 1 año, escribir un nuevo Rincón del desarrollador. Aquí, para los que no lo sepan, contaré el porqué hacemos las cosas así, intentaré explicarlo con lenguaje poco técnico, y también brevemente, ¡comencemos!
En nuestra versión actual, la caché nos permite almacenar muchos datos en un lugar para poder acceder a ella rápidamente.
Esto trae un problema: La PCU no puede saber qué está ocurriendo ahora mismo en el juego, porque muchos elementos no se actualizan hasta que el servidor se cierra.
Esto también trae otros problemas: Si el servidor cae sin ser un apagado seguro, se perderán datos casi un 100% de las veces.
Os dejo esta imagen para que lo entendáis mejor:

Como veis, en el icono de la web los personajes los he puesto en gris. Esto significa que la información está desactualizada. Y en FiveM, en color. Esto significa que la información está lo más actualizada posible.
Os preguntaréis... ¿Porqué queremos acceder a los datos más nuevos posibles?
Muy sencillo, esto no se limita únicamente a los personajes, pero imagina poder contratar empleados, manejar stock, gestionar tu facción directamente desde la PCU, para esto necesitamos la información más reciente posible.
Vale, pero... ¿Porqué no se hacen consultas directamente a la base de datos en ambos casos?
Buenísima pregunta. Utilizar una caché puede rebajar mucho la carga tanto en el servidor, como en la PCU, como en la base de datos. Puede que no se note con 1 o 2 jugadores, pero sí que se puede notar si hay tráfico.
Por todo esto que hemos explicado, estamos reconstruyendo nuestra caché. Ahora está en un servicio centralizado mediante una API. Esta API proporciona los datos necesarios para que tanto la PCU como el juego se comuniquen entre sí.

Pero... ¡Vaya!, hemos puesto una API en medio que proporciona la información, pero los personajes siguen en gris. Básicamente, esto no funcionaría simplemente poniendo esta API, porque aún tendríamos esa separación.., entonces, ¿Qué hemos hecho?
Muy sencillo: La API no solo carga, sino muta, es decir, modifica la información cacheada en tiempo real. Imagina borrar un texto de una libreta y volver a escribir encima. Eso hace la API, quedando algo así:

Ahora, la API es quien proporciona toda la información a los servicios Web y al Servidor, el servidor es capaz de mandar y recibir información de la API, igual que la web, ambos pueden mudar entre sí. El servidor sigue teniendo una caché interna para pequeñas cosas.
Esto es una de las cosas más grandes que estamos trabajando. Los usuarios no lo notarán, es algo mayormente interno... ¡Pero es mejor para todos! Espero pronto poder enseñaros algo más suculento de nuestros sistemas.
Un saludo.
