Progettare 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 il tuo gioco. Rispetto a trovare e risolvere problemi di prestazioni in un secondo momento nel processo di sviluppo, progettare per le prestazioni sin dall'inizio può farti risparmiare molto tempo e sforzo.

Dispositivi di fascia bassa

I dispositivi di fascia bassa, in particolare quelli mobili, hanno gravi limitazioni di memoria e sono suscettibili a crash a causa di errori di memoria esaurita (OOM):

  • Se desideri supportare dispositivi di fascia bassa, scegli almeno un dispositivo "di base", testa il tuo gioco su di esso durante tutto il processo di sviluppo e presta particolare attenzione al frame rate e all'uso della memoria. Man mano che scopri aree problematiche nel tuo gioco, utilizza quelle aree per identificare i limiti del tuo dispositivo.

    Ad esempio, potresti testare un gioco con le statistiche di debug Render (ShiftF2) e Summary (ShiftF2) attivate. Se il frame rate inizia a scendere in un'area particolarmente affollata, potresti esaminare i numeri Draw (scene) e determinare che devi rimanere sotto 1.000 chiamate di disegno e 1.000.000 triangoli affinché il gioco funzioni bene sul tuo dispositivo di base.

    Oppure potresti esaminare la Console Sviluppatore (F9) e notare che l'uso della memoria è un po' alto a meno che tu non abiliti il streaming. Avere una chiara comprensione dei limiti del dispositivo può aiutarti a rimanere al di sotto di essi mentre continui a costruire il tuo gioco.

    Un gioco Roblox con tre sovrapposizioni attive.

  • L'emulatore di dispositivo in Roblox Studio è utile per controllare il rapporto d'aspetto e i controlli, ma non è preciso per l'uso della memoria; quando testi un gioco in Studio, esegue il server e il client, quindi l'uso della memoria è significativamente più alto.

In generale, testare su una varietà di dispositivi può aiutarti a verificare che il gioco soddisfi le tue aspettative visive e di prestazioni a diversi livelli di qualità grafica. Per un esempio molto più dettagliato su come potresti pensare di ottimizzare il tuo gioco per dispositivi mobili di fascia bassa, vedi Ottimizzazione della Progettazione e Scripting nel Mondo Reale.

Streaming e teletrasporto

  • Lo streaming di istanze consente a Roblox di caricare e scaricare dinamicamente contenuti 3D ed è un'ottima opzione per la maggior parte dei luoghi, specialmente quelli più grandi. Lo streaming migliora i tempi di ingresso, riduce l'impronta di memoria e aumenta il frame rate.

    Ad esempio, quando abiliti Workspace.EnableSLIMAvatars e imposti la proprietà LevelOfDetail dei tuoi modelli di mondo su SLIM, puoi creare mondi con spazi sociali e eventi affollati che rimangono visualmente popolati mentre si adattano a una vasta gamma di capacità dei dispositivi. Per ulteriori informazioni, vedere Migliora le prestazioni.

  • Considera di suddividere grandi luoghi in altri più gestibili e utilizzare il teletrasporto per spostare i giocatori tra di essi. Questo approccio può ridurre i tempi di ingresso iniziali, ma impone tempi di ingresso aggiuntivi man mano che i giocatori si teletrasportano da un luogo all'altro. I benefici per l'uso 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 al tuo gioco o fai parte di un team più ampio.

Materiali e duplicazione

  • I materiali predefiniti utilizzano molta meno memoria rispetto alle texture personalizzate, ma potrebbero non corrispondere alla tua visione artistica. Prova a utilizzare materiali ogni volta che è possibile per preservare il budget di memoria per le texture che sono centrali per il tuo gioco.

  • Man mano che crei asset, converti in pacchetti. Rendere i pacchetti parte del tuo flusso di lavoro aiuta ad evitare il comune problema degli asset duplicati con ID diversi, che possono danneggiare le prestazioni.

  • Quando aggiungi mesh e texture, usale e riusale invece di importare copie duplicate. Ridimensionando, ruotando e sovrapponendo, puoi creare ambienti ricchi e vari che richiedono pochissime chiamate di disegno. Per ulteriori informazioni, vedere Rimuovi texture duplicate.

Trasparenza

  • Evita valori di trasparenza diversi da 0 (visibile) e 1 (invisibile). Quando utilizzi la trasparenza parziale, fai attenzione ad evitare l'overdraw di alta trasparenza.

Scripting

  • Ogni volta che è possibile, scrivi codice basato su 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 che sembrano minori possono utilizzare una parte significativa di quel budget.

  • Trova modi per suddividere il codice che richiede molto tempo in parti gestibili. Se un pezzo di codice richiede 100 ms per l'esecuzione e lo esegui ogni frame, il tuo gioco può funzionare solo a 10 FPS. Se decidi di eseguire il codice solo una volta al secondo in un gioco che altrimenti funziona a 60 FPS, 59 dei tuoi frame arrivano dopo 16.67 ms... e poi uno dopo 100 ms, il che provoca uno scossone doloroso.

    Invece, indaga come puoi suddividere il codice. Forse puoi eseguire 5 ms di lavoro per frame, usare task.wait(), e avere il calcolo completato ogni 20 frame mantenendo comunque 60 FPS. Il multithreading, a volte chiamato Parallel Luau, può anche aiutare.

  • Usa il metodo RBXScriptConnection:Disconnect() per fermare la chiamata di funzioni inutilmente ogni 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 sovrascrivilo successivamente se necessario.

  • Non memorizzare tutto in ReplicatedStorage. Il client carica tutto ciò che si trova in questo contenitore. Invece, usa ServerStorage per qualsiasi cosa a cui il client non deve avere accesso.

© 2026 Roblox Corporation. Roblox, il logo Roblox e Powering Imagination sono tra i nostri marchi registrati e non registrati negli Stati Uniti. e altri paesi.