Ottimizzare un server FiveM: ridurre il lag e aumentare le prestazioni
Ottimizzazione

Ottimizzare un server FiveM: ridurre il lag e aumentare le prestazioni

Guida pratica all'ottimizzazione di FiveM: capire resmon, ridurre il lag delle risorse, eliminare gli scatti e tenere il server fluido anche pieno.

Niente uccide una community roleplay più in fretta del lag. I giocatori perdonano le funzionalità mancanti; non perdonano il rubber-banding durante un inseguimento. La buona notizia: quasi tutti i problemi di prestazioni di FiveM si risolvono una volta che sai misurarli. Questa guida ti mostra come.

Prima impara a misurare: resmon

Non puoi ottimizzare ciò che non vedi. Il monitor delle risorse integrato in FiveM è il tuo strumento più importante.

Apri la console ed esegui:

resmon

Vedrai ogni risorsa attiva e il suo tempo di CPU per frame in millisecondi (ms). È questo il numero che conta. Qualche riferimento:

  • Sotto 0,5 ms — sano per uno script attivo.
  • 0,5–1,0 ms — accettabile, da tenere d’occhio.
  • Sopra 2–3 ms in modo costante — è un problema; analizzalo.
Idea chiave: i giocatori sentono il totale dei ms di tutte le risorse, non una singola. La morte per mille tagli è reale — venti script da 1 ms l'uno sono peggio di quanto sembri.

Capire i due lati delle prestazioni

Le prestazioni di FiveM hanno un lato server e un lato client.

  • Il costo lato server colpisce tutti e nasce spesso da query al database, loop grandi e spam di eventi.
  • Il costo lato client colpisce gli FPS di ogni giocatore e nasce da UI pesanti da renderizzare, loop Citizen.Wait(0) continui ed entità senza culling.

Una risorsa può costare poco sul server e distruggere gli FPS del client, o viceversa. Controlla sempre entrambi.

Le vittorie più grandi e più comuni

1. Elimina i loop stretti

Il classico killer delle prestazioni su FiveM è un thread che gira a ogni frame senza bisogno:

-- Male: gira a ogni singolo frame, per sempre
CreateThread(function()
  while true do
    Wait(0)
    -- controlli di distanza, disegno dei marker, ecc.
  end
end)

La maggior parte può aspettare di più, dormire quando il giocatore è lontano, o diventare event-driven. Alzare Wait(0) a Wait(500) quando non succede nulla può tagliare il costo di una risorsa del 90%.

2. Sostituisci il polling con gli eventi

Se uno script controlla di continuo se è successo qualcosa, verifica se il framework può dirglielo. Il codice event-driven dorme finché non serve e a riposo non costa nulla.

3. Sistema le abitudini col database

Interrogare MySQL dentro un loop, o a ogni tick del giocatore, mette in ginocchio un server affollato. Raggruppa le query, metti in cache i valori che cambiano di rado e usa correttamente i pattern asincroni di oxmysql.

4. Analizza le UI più pesanti

La NUI (lo strato di interfaccia basato su browser) è potente e facile da abusare. Un HUD che si ri-renderizza di continuo, o un inventario che non limita mai i suoi aggiornamenti, si mangia gli FPS del client in silenzio. I sistemi costruiti bene aggiornano il DOM solo quando i valori cambiano davvero.

Scegli risorse core ottimizzate fin dall’inizio

La verità scomoda: le risorse che scegli pesano più di qualsiasi ritocco applicato dopo. Inventario, HUD e gli altri sistemi sempre attivi girano per ogni giocatore, tutto il tempo: il loro costo per frame definisce la tua base di partenza.

Quando valuti una risorsa sempre attiva, cerca:

  • Un valore di resmon basso e stabile sotto carico (non solo a riposo).
  • Una NUI efficiente, che si aggiorna al cambiamento e non a timer.
  • Logica lato server che raggruppa il lavoro sul database.
  • Manutenzione attiva e una storia di ottimizzazioni.

È esattamente per questo che molte community consolidate standardizzano su un piccolo insieme di sistemi premium collaudati — un inventario ben ottimizzato come Quasar Inventory, per esempio, è progettato per mantenere un’impronta bassa anche a città piena, il che libera il tuo budget di prestazioni per tutto il resto. Analizziamo le opzioni principali nella nostra guida ai migliori inventari.

Un flusso di ottimizzazione ripetibile

  1. Misura di riferimento. Annota il resmon totale con un numero realistico di giocatori.
  2. Ordina per costo. Individua le cinque risorse più pesanti.
  3. Analizza la peggiore. Usa resmon e il profiler del server.
  4. Correggi o sostituisci. Ottimizza il loop, o passa a un’alternativa più leggera.
  5. Rimisura. Conferma il guadagno, poi ripeti.

Fallo ogni mese e il server resta veloce mentre cresce, invece di degradare piano fino a far andare via i giocatori.

Checklist rapida di ottimizzazione

  • Nessuna risorsa sopra 2–3 ms senza motivo.
  • Wait() scalato sulla distanza negli script di prossimità.
  • Logica event-driven invece del polling continuo.
  • Query al database raggruppate e in cache.
  • NUI snella e guidata dal cambiamento per HUD e inventario.
  • Audit regolari di resmon a città piena.

L’ottimizzazione non è un compito una tantum — è un’abitudine. Costruiscila presto, scegli risorse core efficienti, e la tua città roleplay resterà fluida per quanto cresca. Poi assicurati che le fondamenta siano giuste con il nostro confronto tra framework.