Ottimizzazione

L'ottimizzazione in Roblox è cruciale per un gameplay più fluido su tutti i dispositivi, una migliore stabilità del gioco e una maggiore fidelizzazione degli utenti. I giochi ottimizzati sono più propensi a ricevere valutazioni e recensioni positive, aumentando la loro visibilità. Esistono numerose tecniche per ottimizzare efficacemente il tuo gioco.

Streaming

Lo streaming in Roblox carica e scarica dinamicamente i contenuti 3D secondo necessità, migliorando l'esperienza del giocatore.
Image 1
Roblox Studio
  • Riducendo il numero di parti, poiché meno parti portano a prestazioni migliori.
  • Ottimizza le texture per bilanciare la qualità visiva e le prestazioni, soprattutto per i dispositivi di fascia bassa.
  • Ottimizza l'illuminazione limitando le luci dinamiche e utilizzando luci senza ombre quando possibile, poiché questi aggiustamenti riducono il carico computazionale e migliorano le prestazioni complessive del gioco.

Configurazioni di Streaming

DefaultIl motore sceglie l'opzione migliore, attualmente uguale a Legacy.
LegacyI modelli si caricano con il loro genitore quando un giocatore si unisce e non vengono scaricati a meno che il genitore non lo faccia.
ImprovedI modelli si caricano solo quando necessario, non durante l'accesso del giocatore. I modelli non spaziali si caricano poco dopo, mentre i modelli spaziali si caricano quando richiesto e possono essere scaricati successivamente.

Abilita o disabilita lo streaming del contenuto di gioco.

DefaultNessun controllo extra; i giocatori potrebbero incontrare contenuti mancanti.
PauseReceivePausa la ricezione dei dati se mancano parti critiche, evitando problemi di gameplay.
RequestRichiede le parti mancanti quando un giocatore entra in un'area, riducendo la probabilità di incontrare contenuti non caricati.

Imposta l'area minima attorno al giocatore in cui il contenuto viene trasmesso con la massima priorità. Il valore predefinito è 64 stud. Aumentare questo valore utilizza più memoria e larghezza di banda.

Definisce la distanza massima dal giocatore in cui il contenuto viene trasmesso. Il valore predefinito è 1024 stud. Il motore può mantenere i contenuti precedentemente caricati oltre questo raggio se la memoria lo consente.

DefaultIl contenuto viene rimosso solo quando la memoria è bassa (come LowMemory).
LowMemoryScarica il contenuto per liberare memoria quando necessario.
OpportunisticScarica il contenuto oltre il raggio target anche senza pressione sulla memoria, ottimizzando le prestazioni.

Livello di Dettaglio (LOD)

In Roblox, questa impostazione determina la qualità visiva dei modelli nelle esperienze con streaming di istanze abilitato.
StreamingMeshUsa una mesh 'impostore' a risoluzione inferiore per i modelli al di fuori del raggio di streaming.
Disabled/AutomaticLe mesh a bassa risoluzione non vengono visualizzate, mantenendo i dettagli completi all'interno del raggio di streaming.
Image 1
Roblox Studio

Fisica

Per ottimizzare le prestazioni di gioco in Roblox, è cruciale gestire le impostazioni di fisica. Puoi disattivare le parti che non richiedono fisica impostandole come ancorate (part.Anchored = true). Inoltre, ridurre le collisioni non necessarie disabilitando la collisione per alcune parti (part.CanCollide = false) migliora ulteriormente le prestazioni.
Image 1
Image 2
Roblox Studio

Altre Opzioni di Ottimizzazione

  • Riducendo il numero di parti, poiché meno parti portano a prestazioni migliori.
  • Ottimizza le texture per bilanciare la qualità visiva e le prestazioni, soprattutto per i dispositivi di fascia bassa.
  • Ottimizza l'illuminazione limitando le luci dinamiche e utilizzando luci senza ombre quando possibile, poiché questi aggiustamenti riducono il carico computazionale e migliorano le prestazioni complessive del gioco.
  • Uso Efficiente delle Parti e delle Mesh: Minimizza l'uso di mesh ad alto numero di poligoni e utilizza i BaseParts di Roblox quando possibile.
  • Ottimizzazione degli Script: Identificare ed eliminare i cicli non necessari, ottimizzare gli algoritmi e utilizzare strutture dati efficienti.
  • Ottimizzazione della Rete: Ridurre la trasmissione dei dati e garantire una comunicazione fluida tra client e server.
  • Ottimizzazioni Lato Client: Scaricare compiti sul client per ridurre il carico sul server e migliorare la reattività.
  • Servizio Debris: Utilizzo del Servizio Debris per gestire oggetti temporanei.
local Debris = game:GetService("Debris")

local part = Instance.new("Part")
part.Position = Vector3.new(0, 10, 0)
part.Parent = workspace

-- Add the part to Debris, which will remove it after 5 seconds
Debris:AddItem(part, 5)

MicroProfiler

Il MicroProfiler è uno strumento in Roblox Studio utilizzato per analizzare e diagnosticare i problemi di prestazioni nel tuo gioco.
Image 1
Roblox Studio

Ctrl Alt F6 (⌘⌥F6)

Image 1
Roblox Studio

MicroProfiler (Colore Blu & Arancione)

Image 1
Roblox Studio
Color BarDetailsIndication
ArancioneIl tempo dei compiti supera il tempo di rendering nei frame standard.Indica prestazioni normali in cui la CPU è il focus.
BluIl tempo di rendering supera il tempo dei compiti.Indica un collo di bottiglia nel rendering. Passa il mouse per vedere i dettagli su 'In attesa del thread di rendering'. Un gran numero di barre blu suggerisce che il rendering è il problema principale.

MicroProfiler (Picchi)

Image 1
Roblox Studio
Graph PositionDetailsIndication
MezzoLe barre dovrebbero generalmente essere intorno al centro del grafico.Indica un funzionamento normale con pianificazione dei compiti bilanciata.
PicchiLe barre aumentano di valore sopra il centro del grafico.Indica che è stato impiegato più tempo per eseguire un processo del Task Scheduler, spesso a causa di un aumento del carico di lavoro, come la gestione di molte parti in movimento.

MicroProfiler (Pausa)

Ctrl P (⌘P)

I frame nel MicroProfiler possono essere navigati facendo clic o trascinando sul grafico, con la rotella di scorrimento utilizzata per ingrandire la timeline. I diversi compiti sono mostrati con etichette colorate e quando un compito viene eseguito durante un altro, l'etichetta corrispondente appare direttamente sotto l'altra.
Image 1
Roblox Studio

MicroProfiler (Zoom)

Fare clic con il pulsante destro su un'etichetta per ingrandire la timeline in modo che corrisponda alla durata dell'etichetta.

Image 1
Image 2
Roblox Studio

Fare clic con il pulsante sinistro mostra il grafico a linee in basso a destra nella vista del gioco, mostrando quanto tempo impiega ogni frame per eseguire il compito. Questo grafico consente di testare le prestazioni.

Image 1
Roblox Studio
PrincipaleDetails
PrincipaleGestisce input, fisica, animazioni, suoni, aggiornamenti di Studio e coordina altri thread.
WorkerAssiste il thread principale con compiti come networking, fisica e pathfinding. Più worker sono usati in base ai core della CPU.
Render (GPU)Gestisce il rendering grafico.

Profilazione Personalizzata

Per monitorare quanto tempo impiegano gli script per compiti complessi. Inizia usando debug.profilebegin all'inizio e debug.profileend alla fine della sezione. Questo misurerà il tempo trascorso tra questi punti e creerà un'etichetta nella timeline del MicroProfiler.
local Debris = game:GetService("Debris")

local part = Instance.new("Part")
part.Position = Vector3.new(0, 10, 0)
part.Parent = workspace

-- Add the part to Debris, which will remove it after 5 seconds
Debris:AddItem(part, 5)