Progettazione per le prestazioni

*Questo contenuto è tradotto usando AI (Beta) e potrebbe contenere errori. Per visualizzare questa pagina in inglese, clicca qui.

Progettare per le prestazioni significa seguire una manciata di migliori pratiche mentre costruisci la tua esperienza.Rispetto alla ricerca e alla risoluzione di problemi di prestazioni più tardi nel processo di sviluppo, progettare per le prestazioni in anticipo può risparmiarti molto tempo e sforzo.

Dispositivi low-end

I dispositivi di fascia inferiore, in particolare i dispositivi mobili, hanno severe limitazioni di memoria e sono suscettibili di crash a causa di errori di memoria esaurita (OOM):

  • Se vuoi supportare dispositivi di fascia inferiore, scegli almeno un dispositivo "baseline", testa la tua esperienza su di esso durante tutto il processo di sviluppo e presta molta attenzione al tasso di frame e all'utilizzo della memoria.Mentre trovi le aree problematiche nella tua esperienza, usa quelle aree per identificare i limiti del tuo dispositivo.

    Ad esempio, potresti testare un'esperienza con il Render ( ShiftF2 ) e le statistiche di debug Sommario ( ShiftF2 ) abilitate.Se il tasso di fotogrammi inizia a diminuire in un'area particolarmente disordinata, puoi esaminare i numeri di Disegna (scena) e determinare che devi rimanere al di sotto di 1,000 richieste di disegno e 1,000,000 triangoli per far funzionare bene l'esperienza sul tuo dispositivo di base.

    Oppure puoi esaminare la Console di sviluppatore ( F9 ) e notare che l'utilizzo della memoria è un po' elevato a meno che non attivi streaming.Avere una chiara comprensione dei limiti del dispositivo può aiutarti a stare sotto di essi mentre continui a costruire la tua esperienza.

  • L'emulatore di dispositivi in Roblox Studio è utile per controllare la proporzione aspetto e i controlli, ma non è preciso per l'utilizzo della memoria; quando testi un'esperienza in Studio, esegue il server e il client, quindi l'utilizzo della memoria è significativamente più alto.

Più in generale, i test su una varietà di dispositivi possono aiutarti a verificare che l'esperienza corrisponda alle tue aspettative visive e di prestazioni a diversi livelli di qualità grafica.Per un esempio molto più dettagliato di come potresti pensare di ottimizzare la tua esperienza per dispositivi mobili di basso livello, vedi Real World Building and Scripting Optimization.

Streaming e teletrasporto

  • Streaming dell'istanza fa in modo che Roblox carichi e scarichi dinamicamente contenuti 3D e sia una grande opzione per la maggior parte dei luoghi, in particolare quelli più grandi.Lo streaming migliora i tempi di join, riduce l'impronta di memoria e aumenta il tasso di frame.Per maggiori informazioni, vedi Migliora le prestazioni.

  • Considera di dividere i grandi luoghi in più gestibili e di utilizzare teletrasporto per spostare i giocatori tra di loro.Questo approccio può ridurre il tempo di join iniziale , ma impone ulteriori tempi di join come i giocatori si teletrasportano da un luogo all'altro.I vantaggi sull'utilizzo della memoria variano a seconda della dimensione del luogo e se hai abilitato lo streaming.

    Anche ignorando le considerazioni sulle prestazioni, potresti scoprire che avere più luoghi semplifica il processo di sviluppo, specialmente se aggiungi regolarmente nuovi contenuti alla tua esperienza o fai parte di una squadra più grande.

Materiali e duplicazione

  • I materiali integrati utilizzano meno memoria delle texture personalizzate, ma potrebbero non corrispondere alla tua visione artistica.Prova ad utilizzare materiali ogni volta che possibile per conservare il budget di memoria per le texture che sono centrali alla tua esperienza.

  • Mentre crei risorse, convertile in pacchetti.Rendere i pacchetti parte del tuo flusso di lavoro aiuta a evitare il problema comune delle risorse duplicate con diversi ID, che possono influire sulle prestazioni.

  • Quando aggiungi mesh e texture, usali e riutilizzali piuttosto che importare copie duplicate.Ridimensionando, ruotando e sovrapponendo, puoi creare ambienti ricchi e vari che richiedono pochissime chiamate di disegno.Per ulteriori informazioni, vedi Rimuovi texture duplicate.

Trasparenza

  • Evita i valori di trasparenza diversi da 0 (visibile) e 1 (invisibile).Quando usi la trasparenza parziale, assicurati di evitare un'eccessiva trasparenza alta.

Programmazione

  • Ogni volta che è possibile, scrivi codice basato sugli eventi piuttosto che calcoli per frame.A 60 FPS, il budget totale per ogni frame è di 16,67 millisecondi (ms).Anche i calcoli per-frame apparentemente minori possono utilizzare una porzione importante di quel budget.

  • Trova modi per spezzare il codice a lungo eseguibile in pezzi gestibili.Se un pezzo di codice richiede 100 ms per l'esecuzione e lo esegui ogni frame, la tua esperienza può funzionare solo a 10 FPS.Se decidi di eseguire solo il codice una volta al secondo in un'esperienza che altrimenti funziona a 60 FPS, 59 dei tuoi frame arrivano dopo 16,67 ms...e poi uno dopo 100 ms, che causa uno stutter improvviso.

    Invece, indaga come puoi rompere il codice.Forse puoi eseguire 5 ms di lavoro per frame, usa task.wait() , e avere il calcolo completato ogni 20 frame mentre mantieni ancora 60 FPS.Multithreading, a volte chiamato Parallel Luau, può anche aiutare.

  • Usa il metodo RBXScriptConnection:Disconnect() per impedire alle funzioni di essere chiamate inutilmente la prossima volta che si attiva un evento.

  • Non chiamare lo stesso metodo ogni volta che hai bisogno di un valore. Chiama il metodo una volta, memorizza il valore e poi sovrascriverlo in seguito come necessario.

  • Non memorizzare tutto in ReplicatedStorage .Il client carica tutto ciò che è in questo container.Invece, usa ServerStorage per qualsiasi cosa per cui il client non abbia bisogno di accesso.