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.
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
- Misura di riferimento. Annota il resmon totale con un numero realistico di giocatori.
- Ordina per costo. Individua le cinque risorse più pesanti.
- Analizza la peggiore. Usa
resmone il profiler del server. - Correggi o sostituisci. Ottimizza il loop, o passa a un’alternativa più leggera.
- 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.