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 serie di migliori pratiche mentre costruisci il tuo gioco. Rispetto a trovare e risolvere problemi di prestazioni più avanti nel processo di sviluppo, progettare per le prestazioni fin dall'inizio può farti risparmiare molto tempo e sforzo.

Dispositivi di fascia bassa

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

  • Se desideri supportare dispositivi di fascia bassa, scegli almeno un dispositivo "di base", testa il tuo gioco su di esso durante il processo di sviluppo e fai particolare attenzione al frame rate e all'utilizzo 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) abilitate. Se il frame rate inizia a scendere in un'area particolarmente affollata, potresti esaminare i numeri Draw (scene) e determinare che devi rimanere al di sotto di 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 dello sviluppatore (F9) e notare che l'utilizzo della memoria è un po' alto a meno che tu non abiliti lo 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 dispositivi in Roblox Studio è utile per controllare il rapporto d'aspetto e i controlli, ma non è accurato per l'utilizzo della memoria; quando testi un gioco in Studio, esso esegue il server e il client, quindi l'utilizzo della memoria è significativamente più alto.

In generale, testare su una varietà di dispositivi può aiutarti a verificare che il gioco corrisponda alle tue aspettative visive e di prestazioni a diversi livelli di qualità grafica. Per un esempio molto più dettagliato di come potresti pensare a ottimizzare il tuo gioco per dispositivi mobili di fascia bassa, vedi Ottimizzazione nella costruzione e nella programmazione nel mondo reale.

Streaming e teletrasporto

  • Lo streaming delle istanze consente a Roblox di caricare e scaricare dinamicamente contenuti 3D ed è una grande opzione per la maggior parte dei luoghi, soprattutto quelli più grandi. Lo streaming migliora i tempi di accesso, 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 visivamente popolati pur scalando attraverso un'ampia gamma di capacità dei dispositivi. Per maggiori informazioni, vedi SLIM e Migliora le prestazioni.

  • Considera di suddividere luoghi grandi in luoghi più gestibili e utilizzare il teletrasporto per spostare i giocatori tra di essi. Questo approccio può ridurre i tempi di accesso iniziali, ma impone ulteriori tempi di accesso man mano che i giocatori si teletrasportano da un luogo all'altro. I benefici per l'utilizzo della memoria variano a seconda delle dimensioni del luogo e se hai abilitato lo streaming.

    Anche ignorando considerazioni sulle prestazioni, potresti scoprire che avere più luoghi semplifica il processo di sviluppo, soprattutto se aggiungi regolarmente nuovi contenuti al tuo gioco o fai parte di un team più grande.

Materiali e duplicazione

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

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

  • Quando aggiungi mesh e texture, utilizzale e riutilizzale invece di importare copie duplicate. Ridimensionando, ruotando e sovrapponendo, puoi creare ambienti ricchi e vari che richiedono poche chiamate di disegno. Per ulteriori informazioni, vedi Rimuovi le texture duplicate.

Trasparenza

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

Programmazione

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

  • Trova modi per suddividere codice a lungo termine in parti gestibili. Se un pezzo di codice richiede 100 ms per essere eseguito 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 un'irregolarità fastidiosa.

    Invece, indaga su come puoi suddividere il codice. Forse puoi eseguire 5 ms di lavoro per frame, utilizzare 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 le funzioni da essere chiamate inutilmente la prossima volta che un evento viene attivato.

  • Non chiamare lo stesso metodo ogni volta che hai bisogno di un valore. Chiama il metodo una volta, memorizza il valore e poi sovrascrivilo più tardi se necessario.

  • Non memorizzare tutto in ReplicatedStorage. Il client carica tutto ciò che si trova in questo contenitore. Invece, utilizza 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.