>
Tutorial 2026-03-05

Cómo optimizar tus scripts de FiveM a 0ms de resmon

TDYSKY

TDYSKY

Fundador y desarrollador principal de Agency Scripts

Entender resmon y el rendimiento de los scripts

El comando resmon de FiveM muestra métricas de rendimiento en tiempo real de cada recurso, indicando cuántos milisegundos consume cada script por tick del servidor. Un script bien optimizado debería mostrar 0,00 ms en resmon la mayor parte del tiempo, con subidas breves solo cuando procesa eventos activamente. Los scripts que muestran valores altos de forma sostenida degradan el rendimiento del servidor, aumentan la desincronización de los jugadores y pueden causar el temido lag que espanta a las comunidades. Perfilar tus scripts con regularidad es el primer paso para mantener un servidor fluido.

Gestión de threads y tiempos de espera

El mayor asesino del rendimiento en scripts de FiveM es una mala gestión de threads. Usar Citizen.Wait(0) dentro de un bucle significa que tu código corre en cada frame, más o menos 60 veces por segundo. La mayoría de tareas no necesitan esa frecuencia. Aumenta los tiempos de espera a Wait(500) o Wait(1000) para comprobaciones que solo necesitan ejecutarse periódicamente, como detección de proximidad para markers o zonas. Para sistemas basados en distancia, usa un enfoque por niveles en el que compruebes a intervalos largos cuando estés lejos de los puntos de interés y a intervalos más cortos cuando te acerques.

Desactivar threads innecesarios

En lugar de ejecutar threads de forma continua, plantéate activarlos solo cuando hagan falta. Usa eventos o cambios de estado para arrancar y parar los bucles de procesado. Por ejemplo, un script de pesca no necesita ejecutar su bucle de lanzado cuando el jugador no está cerca del agua. Guarda una variable de estado activo y sal del thread con return cuando la funcionalidad no esté en uso. Este patrón puede llevar tu script de un 0,50 ms constante a 0,00 ms en reposo, que es la diferencia entre un script que escala y uno que ahoga tu servidor.

Caché y evitar llamadas redundantes

Las llamadas a funciones native de FiveM tienen sobrecarga, sobre todo cuando se llaman repetidamente dentro de bucles apretados. Cachea los resultados de llamadas como GetEntityCoords, GetPlayerPed y GetPlayerServerId al inicio de tu iteración en lugar de llamarlas varias veces en el mismo ciclo. Guarda datos estáticos como valores de configuración, posiciones de markers y coordenadas de blips en variables locales al cargar el script. Esta técnica sencilla puede reducir drásticamente el tiempo de ejecución y es una de las optimizaciones con más impacto que puedes hacer.

Optimizaciones matemáticas

Los cálculos de distancia están entre las operaciones más comunes en scripts de FiveM. Sustituye la comprobación de distancia estándar #(coords1 - coords2) por comparaciones de distancia al cuadrado cuando solo necesites distancia relativa. Como calcular la raíz cuadrada es caro, comparar distancias al cuadrado contra umbrales al cuadrado da el mismo resultado sin la operación costosa. Además, evita llamar a la native GetDistanceBetweenCoords cuando puedas calcular la distancia en Lua, porque las llamadas native suman sobrecarga frente a las operaciones puras de Lua.

Gestión de entidades y blips

Crear entidades, blips y markers tiene coste tanto de renderizado como de red. Retira blips y entidades cuando ya no se necesiten en lugar de dejarlas en el mundo. Usa DrawMarker solo cuando el jugador esté en distancia de renderizado, no de forma global en todo el mapa. Para scripts que gestionen muchas entidades, implementa particionado espacial para procesar solo objetos cercanos. Plantéate usar sistemas de streaming que creen y destruyan entidades en función de la proximidad del jugador en lugar de cargarlo todo de golpe al arrancar el recurso.

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.