Resmon e Profiling
INFO
Prima di ottimizzare bisogna misurare. resmon (client) e il profiler (server) mostrano quanto tempo di CPU usa ogni risorsa.
| Obiettivo | Dettagli |
|---|---|
| Cosa imparerai | • Usare resmon sul client• Leggere il profiler del server • Interpretare i numeri e trovare i colli di bottiglia |
| Prerequisiti | • Server avviato • Giocatore connesso (anche tu) |
1. resmon (Client)
resmon è il monitor di performance integrato in FiveM.
- Apri la console con F8
- Digita
resmon - Premi Esc per uscire dalla console: appare la tabella
Come leggere resmon
| Colonna | Significato |
|---|---|
| ms | Millisecondi di CPU usati per frame |
| time | Tempo cumulativo |
| calls | Numero di chiamate a nativi |
| allocs | Allocazioni di memoria |
TIP
In generale: 1 ms di client ≈ 60 fps. Più risorse totali si avvicinano al budget, più scende l’FPS. Risorse sopra 2-3 ms sono candidate per l’ottimizzazione.
2. Profiler Server
Il server ha un profiler nativo che mostra il tempo di CPU per risorsa.
Comandi
profiler_record_interval 1000 # registra per 1 secondo
profiler_periodic_flush 1
profiler_output <nome_file>
Oppure con txAdmin → Live Console → comandi.
Output tipico
profiler data
myscript_loop 45.2ms 25.6%
ox_inventory 20.1ms 11.4%
WARNING
Un server lento (tick rate basso) causa lag per tutti i giocatori. Mentre lo script client influisce solo sul singolo giocatore, un evento server pesante (loop su tutti i giocatori) penalizza l’intero server.
3. Pattern: Loop Che Toccano Tutti i Giocatori
Il peggior nemico del server è un while true che itera su tutti i giocatori ogni frame.
Non ottimale ❌
-- server.lua
CreateThread(function()
while true do
Wait(0)
for _, player in pairs(GetPlayers()) do
local coords = GetEntityCoords(GetPlayerPed(player))
-- ... check per ogni giocatore
end
end
end)Ottimale ✅ — riduci frequenza e iterazioni
-- server.lua
CreateThread(function()
while true do
Wait(1000) -- 1 volta al secondo, non ogni frame
for _, player in pairs(GetPlayers()) do
-- ... check
end
end
end)TIP
Sul server usa
Wait(1000)+ per controlli globali. Usa eventi e callback per le azioni singole invece di pollare.
4. Identificare il Colpevole
- Apri
resmon, guarda le prime 5 risorse per ms - Ferma (
stop) la risorsa sospetta e ricontrolla se l’FPS sale - Se sale: quella è la causa. Se non cambia: era un falso positivo
- Controlla il server con
profilerper problemi server-side
TIP
I loop con
Wait(0)dentrowhile truesono la causa #1 di lag client. Vedi Ottimizzazione Script.
Verifica
- resmon mostra risorse sotto 1-2 ms
- Nessuna risorsa brucia il 50%+ del budget
- Il server non mostra loop pesanti nel profiler
- I controlli globali usano
Wait(1000)+ sul server
TIP
Prossimo passo: 03 - Asset Budget e Streaming
Torna alla: Indice Generale