Optimización de servidores FiveM: reduce el lag y mejora el rendimiento
Optimización

Optimización de servidores FiveM: reduce el lag y mejora el rendimiento

Guía práctica de optimización de FiveM: entiende el resmon, reduce el lag de recursos, arregla tirones y mantén tu servidor fluido incluso con el cupo lleno.

Nada mata más rápido a una comunidad de rol que el lag. Los jugadores perdonan funciones que faltan; no perdonan el rubber-banding en plena persecución. La buena noticia: la mayoría de problemas de rendimiento de FiveM tienen solución una vez sabes medirlos. Esta guía te enseña cómo.

Primero, aprende a medir: resmon

No puedes optimizar lo que no ves. El monitor de recursos integrado de FiveM es tu herramienta más importante.

Abre la consola y ejecuta:

resmon

Verás cada recurso en ejecución y su tiempo de CPU por frame en milisegundos (ms). Ese es el número que importa. Algunas referencias:

  • Menos de 0,5 ms — sano para un script activo.
  • 0,5–1,0 ms — aceptable, merece un vistazo.
  • Por encima de 2–3 ms sostenido — un problema; perfílalo.
Idea clave: los jugadores sienten el total de ms de todos los recursos, no uno solo. La muerte por mil cortes es real: veinte scripts a 1 ms cada uno es peor de lo que suena.

Entiende las dos caras del rendimiento

El rendimiento de FiveM tiene un lado de servidor y uno de cliente.

  • El coste de servidor afecta a todos y suele venir de consultas a la base de datos, bucles grandes y spam de eventos.
  • El coste de cliente afecta a los FPS de cada jugador y viene de interfaces pesadas de renderizar, bucles Citizen.Wait(0) constantes y entidades sin culling.

Un recurso puede ser barato en el servidor pero destrozar los FPS del cliente, o al revés. Comprueba siempre ambos.

Las mayores mejoras, las más comunes

1. Elimina los bucles apretados

El clásico asesino del rendimiento en FiveM es un hilo que corre cada frame cuando no lo necesita:

-- Malo: corre cada frame para siempre
CreateThread(function()
  while true do
    Wait(0)
    -- comprobaciones de distancia, dibujar marcadores, etc.
  end
end)

La mayoría pueden esperar más, dormir cuando el jugador está lejos o basarse en eventos. Subir Wait(0) a Wait(500) cuando no pasa nada puede recortar el coste de un recurso un 90%.

2. Sustituye el sondeo por eventos

Si un script comprueba constantemente si algo ha pasado, mira si el framework puede avisarle en su lugar. El código basado en eventos duerme hasta que se le necesita y no cuesta nada en reposo.

3. Corrige tus hábitos con la base de datos

Consultar MySQL dentro de un bucle, o en cada tick de jugador, hundirá un servidor con tráfico. Agrupa consultas, cachea valores que cambian poco y usa bien los patrones asíncronos de oxmysql.

4. Audita tus interfaces más pesadas

La NUI (la capa de interfaz basada en navegador) es potente pero fácil de abusar. Un HUD que se re-renderiza constantemente, o un inventario que nunca limita sus actualizaciones, puede comerse los FPS del cliente en silencio. Los sistemas bien hechos solo actualizan el DOM cuando los valores cambian de verdad.

Elige recursos base optimizados desde el principio

Aquí está la verdad incómoda: los recursos que eliges importan más que cualquier ajuste posterior. Tu inventario, HUD y demás sistemas siempre activos corren para cada jugador todo el tiempo, así que su coste por frame fija tu línea base.

Al evaluar un recurso siempre activo, busca:

  • Un valor de resmon bajo y estable bajo carga (no solo en reposo).
  • NUI eficiente que se actualiza al cambiar, no por temporizador.
  • Lógica de servidor que agrupa el trabajo de base de datos.
  • Mantenimiento activo y un historial de optimización.

Por esto muchas comunidades consolidadas estandarizan un pequeño conjunto de sistemas premium probados: un inventario bien optimizado como Quasar Inventory, por ejemplo, está diseñado para mantener su huella baja incluso en una ciudad llena, lo que libera tu presupuesto de rendimiento para todo lo demás. Desglosamos las mejores opciones en nuestra guía de mejores inventarios.

Un flujo de optimización repetible

  1. Línea base. Anota tu resmon total con un número realista de jugadores.
  2. Ordena por coste. Identifica los cinco recursos más pesados.
  3. Perfila al peor. Usa resmon y el profiler del servidor.
  4. Arregla o reemplaza. Optimiza el bucle o cámbialo por una alternativa más ligera.
  5. Vuelve a medir. Confirma la mejora y repite.

Haz esto cada mes y tu servidor se mantendrá rápido al crecer, en vez de degradarse poco a poco hasta que los jugadores se van.

Checklist rápido de optimización

  • Ningún recurso por encima de 2–3 ms sin motivo.
  • Escalado de Wait() por distancia en scripts de proximidad.
  • Lógica basada en eventos en vez de sondeo constante.
  • Consultas a la base de datos cacheadas y agrupadas.
  • NUI ligera y basada en cambios para HUD e inventario.
  • Auditorías de resmon regulares con el cupo de jugadores lleno.

La optimización no es una tarea única: es un hábito. Intégralo pronto, elige recursos base eficientes y tu ciudad de rol irá fluida por muy grande que se haga. Después, asegúrate de que tu base es la correcta con nuestra comparativa de frameworks.