Il MicroProfiler è uno strumento di ottimizzazione delle prestazioni e risoluzione dei problemi in Roblox Studio e nel client di Roblox. Fornisce informazioni dettagliate e visive sui tempi di esecuzione per tutti i compiti del motore che vengono eseguiti durante un frame, come l'animazione dei personaggi, l'aggiornamento della fisica, l'esecuzione degli script e il rendering della geometria. Puoi identificare quali compiti sono stati eseguiti durante quale frame, quanto tempo ci è voluto per eseguire questi compiti e se qualcuno di essi ti ha fatto perdere i tuoi obiettivi di tempo per frame.
Tempi dei frame
Per utilizzare il MicroProfiler, devi comprendere la relazione tra tempo di frame e frequenza dei frame.
- Il tempo di frame è quanto tempo ci è voluto per renderizzare un frame sullo schermo, generalmente misurato in millisecondi.
- La frequenza dei frame è il numero di frame renderizzati sullo schermo, generalmente misurato in frame al secondo (FPS).
Tempi di frame più bassi significano una frequenza dei frame più alta. Dividi 1.000 millisecondi (1 secondo) per il tempo di frame per ottenere la frequenza dei frame.
| Tempo medio di frame | Frame al secondo |
|---|---|
| 33,33 ms | 30 FPS |
| 16,67 ms | 60 FPS |
| 8,33 ms | 120 FPS |
| 4,17 ms | 240 FPS |
Tuttavia, per un gameplay fluido, non basta avere un'alta frequenza dei frame. Hai bisogno di tempi di frame costanti. Ad esempio, se 59 frame arrivano in 10 millisecondi e un frame in 410 millisecondi, i giocatori percepiscono un enorme, brusco sfarfallio, anche se il gioco sta girando a 60 FPS. Se tutti i frame impiegano all'incirca lo stesso tempo per essere renderizzati, il tuo gioco apparirà sensibilmente più fluido grazie a quella coerenza, specialmente a frequenze dei frame più basse.
Il MicroProfiler si concentra completamente sul tempo di frame. Il suo scopo è aiutarti a identificare i picchi di tempo di frame e le cause.
Aprire il MicroProfiler
Aprire il MicroProfiler varia a seconda della piattaforma:
Nel client mobile, apri il menu Impostazioni e imposta il MicroProfiler su Attivo. Quindi, da un computer di sviluppo sullo stesso network, usa il tuo browser web per navigare all'indirizzo IP e alla porta forniti.

Questo screenshot mostra un indirizzo IP di 172.18.56.105 e una porta di 1338, quindi navighi su 172.18.56.105:1338. A seconda della configurazione di rete del tuo dispositivo, potresti vedere più indirizzi IP. Se uno non funziona, prova il prossimo.
Nel client desktop, premi CtrlF6 (⌘F6).
In Studio, premi CtrlF6 (⌘F6).
In generale, il client mobile è il miglior posto per profilo il tuo gioco. La maggior parte dei giocatori su Roblox utilizza telefoni e tablet, e questi dispositivi hanno gravi limitazioni termiche e di potenza che ne limitano le prestazioni. Se il tuo gioco gira bene su un tablet Android di fascia media, probabilmente funziona molto, molto meglio su un desktop da gaming.
Nozioni di base sul MicroProfiler
Il MicroProfiler ha due componenti chiave: il grafico a barre del tempo di frame e la timeline dettagliata dei compiti.
- Il grafico del tempo di frame si estende lungo la parte superiore dell'interfaccia e mostra quanto tempo ogni frame ha impiegato a renderizzarsi. Barre più alte significano tempi di frame più lunghi.
- La timeline mostra tutti i compiti individuali che sono stati eseguiti durante il frame. Barre più larghe rappresentano compiti che hanno impiegato più tempo per essere eseguiti.
Un flusso di lavoro tipico nel MicroProfiler consiste nel utilizzare il grafico dei tempi di frame per identificare un picco (una barra più alta) e poi utilizzare la timeline per identificare quali compiti hanno causato il picco. Puoi poi controllare il Riferimento tag per informazioni sul compito e come migliorarne le prestazioni.

Grafico del tempo di frame
L'altezza di ciascuna barra indica il numero di millisecondi impiegati per completare il frame. I frame più recenti sono a destra. Passa il mouse su un frame per alcune informazioni di base sull'uso della CPU e della GPU.

Le barre arancioni sono frame in cui il Tempo di Muro dei Lavori supera il Tempo di Muro di Rendering. In questi frame, almeno uno dei thread lavoratori, che si occupano di eseguire script, calcolare fisica e riprodurre animazioni, ha impiegato più tempo a esibirsi rispetto al thread di rendering principale.
Se il gioco non raggiunge i tuoi obiettivi di tempo per frame e ha un gran numero di frame arancioni, le cause comuni sono script, fisica e animazioni. Vedi Migiora le prestazioni.
Le barre blu sono frame in cui il Tempo di Muro di Rendering supera il Tempo di Muro dei Lavori. In questi frame, il thread di rendering principale ha impiegato più tempo rispetto a qualsiasi dei thread lavoratori.
Se il gioco non raggiunge i tuoi obiettivi di tempo per frame e ha un gran numero di frame blu, ciò indica un collo di bottiglia nel rendering. Le cause comuni sono una densità eccessiva di oggetti, movimento degli oggetti e illuminazione. Vedi Migiora le prestazioni.
Le barre rosse sono frame in cui sono vere due condizioni:
- Il Tempo di Muro di Rendering supera il Tempo di Muro dei Lavori
- Il Tempo di Attesa della GPU è superiore a 2,5 millisecondi
Le barre rosse sono meno comuni rispetto a quelle arancioni e blu e sono spesso il risultato di una complessità eccessiva degli oggetti, dimensioni delle texture e effetti visivi. L'ottimizzazione è simile a quella delle barre blu. Vedi Migiora le prestazioni.
Piccoli compiti alla fine di un frame possono talvolta interferire con il Tempo di Muro dei Lavori e il Tempo di Muro di Rendering, il che è un buon motivo per concentrarsi più sul tempo di frame rispetto al colore del frame. Non esiste un "colore buono" da cercare. Una miscela di arancione, blu e rosso non è problematica fintanto che raggiungi i tuoi obiettivi di tempo per frame. Se non stai raggiungendo i tuoi obiettivi di tempo per frame, i colori possono indicare dove ottimizzare.
Timeline
Fai clic con il pulsante sinistro e trascina per panoramizzare la timeline. Su una macchina con molti core CPU, potresti dover panoramizzare molto su o giù per trovare il thread che esegue un particolare compito.

Scorrere ingrandisce e rimpicciolisce la timeline. Combinato con le etichette in millisecondi nella parte superiore della timeline, puoi avere un'idea di quanto tempo ha impiegato un compito in senso assoluto, ma anche di quanto tempo ha impiegato rispetto ad altri compiti.

L'overlay verde sul grafico a barre indica il numero di frame attualmente visibili sulla timeline—il tuo livello di zoom. Fai clic con il pulsante sinistro su una barra del frame per saltare a quella posizione sulla timeline.
Potresti dover regolare il tuo livello di zoom, ma passando il mouse su una barra mette in evidenza il frame sulla timeline. Linee grigie chiare delimitano i frame.

Le etichette che appaiono direttamente sotto un'altra etichetta indicano compiti che vengono svolti come parte del compito di livello superiore.
Piuttosto che il compito genitore, in genere vuoi risolvere i compiti figlio con le prestazioni peggiori; un compito genitore non può essere più breve della somma dei suoi compiti figlio.
Fai clic destro su un'etichetta per ingrandire la timeline esattamente alla durata di quel compito.
Se la quantità di informazioni è opprimente, usa il menu Gruppi o Thread per filtrare la timeline. Ad esempio, potresti voler vedere solo i compiti Render nel thread principale.

Usa CtrlF (⌘F) per saltare all'occorrenza di un compito che richiede più tempo nel dump. Ad esempio, computeLightingPerform viene eseguito in ogni frame del client. Se lo cerchi in un dump con 128 frame, puoi saltare al frame in cui ha impiegato più tempo a completarsi.
Thread
Come molti programmi, Roblox utilizza più thread per eseguire sequenze di compiti contemporaneamente. Il MicroProfiler visualizza il nome del thread sul lato sinistro della timeline.

Ci sono tre tipi di thread importanti:
Principale ("RBX Main"): Gestisce compiti di rendering basati su CPU. Elabora input, Humanoids, animazioni/tweening, proprietà fisiche, suono e attende i ripristini degli script. Aggiorna anche le interfacce di Studio e coordina gli altri thread.
Lavoratore ("RBX Worker"): Aiuta il thread principale con networking, fisica e pathfinding. A causa del numero di core nelle CPU moderne, hai probabilmente molti thread lavoratori, la maggior parte dei quali è in stato di attesa in un dato momento.
Render ("GPU"): Segue una logica di "preparare, eseguire, presentare". Comunica con l'unità di elaborazione grafica (GPU) del dispositivo.
- Preparare: Le informazioni dal thread principale vengono utilizzate per aggiornare i modelli di rendering.
- Eseguire: Emissione di comandi di rendering, inclusi interfacce 2D.
- Presentare: Sincronizza con la GPU.
Profili degli script personalizzati
Se i tuoi script stanno eseguendo compiti complicati, puoi profilare porzioni critiche del codice per assicurarti che non ci stiano impiegando troppo tempo. Avvolgi il codice con debug.profilebegin() e debug.profileend() per misurare tutto ciò che viene svolto tra queste chiamate di funzione e creare un'etichetta sulla timeline del MicroProfiler.
local RunService = game:GetService("RunService")
local function onPreSimulation()
debug.profilebegin("Hard Work")
-- Esempio di lavoro duro: scambia due variabili 200.000 volte
local a, b = 0, 1
for _ = 1, 200000 do
a, b = b, a
end
debug.profileend()
end
RunService.PreSimulation:Connect(onPreSimulation)
Dalla sua durata sulla timeline, puoi capire che la funzione sta utilizzando molto tempo di elaborazione rispetto ad altri compiti.
Analizza le catture con Assistant
In Studio, puoi chiedere ad Assistant di analizzare automaticamente una cattura del MicroProfiler messa in pausa, identificare colli di bottiglia delle prestazioni e proporre soluzioni.
- In Studio, apri il MicroProfiler con CtrlF6 (⌘F6).
- Quando noti un picco del tempo di un frame, metti in pausa la cattura premendo Pausa nel menu in alto o utilizzando CtrlP (⌘P).
- Apri Assistant e chiedigli di analizzare la cattura. Esempi di richieste includono:
- "Ho catturato un picco di tempo per frame nel MicroProfiler—analizzalo."
- "Cosa ha causato il picco?"
- "È vincolato alla fisica o agli script?"
- "Quale categoria ha il tempo esclusivo più alto?"
- "Quando sono nel hangar, la FPS diminuisce. Riproduci il problema, usa il MicroProfiler per trovare la causa, risolvila e riesamina."
Assistant legge la cattura messa in pausa tramite l'API del MicroProfiler e restituisce un rapporto sui probabili colli di bottiglia, insieme a proposte di modifiche a script o scenari che puoi applicare.
Questa funzionalità funziona anche tramite il server Studio MCP, quindi puoi integrare le analisi del MicroProfiler nel tuo stesso agente AI o ciclo agentico per ottenere feedback automatico su come le nuove modifiche impattano sulle prestazioni del tuo gioco.
Salva i dati dei frame
Se vuoi salvare un set di dati dei frame per una revisione successiva (o per condividerli con qualcun altro), usa il pulsante Salva su file. Il MicroProfiler salva i dati dei frame in un file HTML autonomo chiamato microprofile-<data>-<ora>.html.

Nel client desktop o in Studio, usa il menu Dump. In entrambi i casi, il MicroProfiler salva automaticamente il file nella directory dei log di Roblox:
Su Windows, controlla %LOCALAPPDATA%\Roblox\logs.
Se usi l'app Universal Windows Platform (UWP), controlla \Users\<username>\AppData\Local\Packages\ROBLOXCORPORATION.ROBLOX_<hash>\LocalState\logs\.
Su macOS, controlla ~/Library/Logs/Roblox.
Profilare il server
Oltre a profilare il client, puoi catturare brevi dump delle attività del server:
Nel client desktop, unisciti a un gioco per il quale hai permessi di modifica.
Apri la Console Sviluppatore con CtrlF9 (⌘F9).
Nel menu a discesa, seleziona MicroProfiler.
Nella scheda Server, specifica il numero di frame da catturare (massimo 60) e il numero di secondi di ritardo prima di iniziare la cattura (massimo 4).
Fai clic su Inizia registrazione server.

Dopo alcuni secondi, la Console Sviluppatore fornisce il percorso del file, che è lo stesso percorso di un dump standard.
Funzionalità riservate al web
Il MicroProfiler ha due interfacce utente: l'interfaccia web (mobile e dump) e l'interfaccia desktop (client e Studio). Consigliamo di utilizzare l'interfaccia web ogni volta che è possibile. In generale, le due funzionano in modo simile, ma l'interfaccia web ha alcune funzionalità extra:
Usa il menu X-Ray per abilitare o disabilitare la codifica dei colori per l'allocazione della memoria.

- I frame più chiari all'interno del grafico a barre principale indicano una maggiore allocazione di memoria.
- Porzioni più chiare della barra di anteprima e etichette più chiare sulla timeline indicano porzioni del frame con una maggiore allocazione di memoria.
- In modalità X-ray, premi C per mostrare la dimensione totale delle allocazioni di memoria anziché il numero di allocazioni.
Usa il menu Esporta per esportare un grafico a fiamma della CPU o della memoria, una visualizzazione specializzata che aggrega tutti gli stack di chiamata inclusi nel dump, mantiene la gerarchia genitore-figlio e li dimensiona in base alla durata. I grafici a fiamma sono particolarmente utili per identificare compiti che non ti fanno perdere i tuoi obiettivi di tempo per frame (e sono quindi difficili da notare), ma vengono eseguiti talmente spesso che il loro tempo di elaborazione diventa significativo.

Puoi anche creare grafici a fiamma in Studio, anche se solo per script (tempo di esecuzione e allocazioni di memoria). Rispetto ai grafici a fiamma basati sul web, quelli in Studio sono dall'alto verso il basso anziché dal basso verso l'alto e supportano tempi di cattura notevolmente più lunghi.

Trascina e rilascia un secondo file dump nell'interfaccia web per generare un grafico a fiamma diff, che può aiutarti a identificare miglioramenti o regressioni nelle prestazioni del tuo gioco nel tempo. Fai clic su Combina e Confronta per esportare un nuovo file HTML.

Il grafico a fiamma diff mette in evidenza il dump (sinistro o destro) che consuma più CPU o memoria, con colori più brillanti che indicano una differenza maggiore.

Funzionalità riservate al desktop
Sulla timeline desktop, fai clic con il pulsante sinistro su un'etichetta per aggiungerla a un grafico a linee in basso a destra. Il grafico mostra il tempo impiegato dal compito in ciascun frame. Utilizzando questo grafico, puoi testare solo le prestazioni di alcuni compiti nel tuo gioco. Quando hai finito, fai clic destro sul grafico per nasconderlo.

Questo grafico è sincronizzato con le barre del profiler principale. L'intervallo di frame attualmente selezionato è evidenziato in verde nel grafico. Puoi anche fare clic ovunque su questo grafico per ri-centrare la vista principale del profiler su quel particolare frame, utile per trovare picchi nella vista dettagliata.