Per far sì che le tue isole siano eseguite su tutte le piattaforme supportate, Fortnite ha implementato alcune limitazioni di memoria.
In Unreal Editor per Fortnite (UEFN), puoi utilizzare capacità di memoria espansa per creare esperienze più ampie e diversificate. Per sfruttare appieno questa funzionalità, è utile comprendere il modo in cui viene calcolato l'utilizzo della memoria in UEFN.
World Partition
World Partition rappresenta il tocco di magia dietro alla creazione di un'ampia esperienza sull'isola. Questa funzione suddivide il mondo in una griglia e trasmette solo le celle rilevanti.
World Partition utilizza lo Streaming, che carica e scarica le celle, e il Livello gerarchico di dettaglio (HLOD), che raggruppa e diminuisce la quantità di dettagli sugli asset man mano che la telecamera del giocatore si allontana.
Per maggiori informazioni su World Partition, Streaming e HLOD, vedi Streaming e HLOD.
Come viene calcolata la memoria
UEFN calcola l'utilizzo della memoria in base ai dati prodotti al momento della conversione. In altre parole, devono valere queste condizioni:
Risultati rapidi sulle isole di grandi dimensioni.
Coerenza nei numeri ogni volta che esegui il calcolo sulla stessa versione di isola, sulla compilazione di Fortnite e sul dispositivo.
Ampio supporto per più tipi di asset e per SceneGraph.
Il sistema di calcolo della memoria in UEFN viene eseguito solo in fase di modifica e non può essere utilizzato per valutare l'utilizzo della memoria durante il gioco. Viene utilizzato per verificare che l'utilizzo di memoria di base di un'isola non superi una soglia ragionevole.
Tuttavia, la logica di runtime personalizzata può portare a un utilizzo elevato della memoria che potrebbe causare problemi agli utenti, limitandone le possibilità giocare sulla tua isola. Ti consigliamo di utilizzare Profilatore spaziale per capire come la tua isola utilizza la memoria e si comporta durante il gioco, in modo da evitare che i tuoi giocatori riscontrino problemi di stabilità e prestazioni.
Il layout di sessione
Quando si carica nella sessione, viene visualizzata una barra Utilizzo memoria corrente sull'HUD.
La barra mostra un massimo di 100.000 unità di memoria per fornire un'immagine dell'utilizzo della memoria sull'isola.
Con lo streaming abilitato, la memoria viene calcolata in base alla posizione del giocatore sull'isola invece che sulla memoria totale utilizzata da tutti gli asset dell'isola. L'esecuzione di un calcolo della memoria ti fornisce i valori di consumo di memoria più precisi per ogni cella di streaming.
Alcuni asset rimangono in memoria indipendentemente dalla posizione del giocatore e aumentano l'utilizzo della memoria in qualsiasi punto della mappa. La maggior parte degli asset verrà caricata e scaricata man mano che vengono trasmessi in streaming, e la barra si aggiornerà di conseguenza.
Tutti gli asset a cui fa riferimento il livello (inclusi Dispositivi, Paesaggi, Mesh personalizzate e texture, ecc.) vengono conteggiati nell'utilizzo totale della memoria.
Tieni presente che se un'area del tuo livello supera 100.000, non potrai pubblicare la tua isola.
Come utente UEFN, puoi superare il limite di 100.000 termometri purché non procedi alla pubblicazione. Tieni presente che le persone che collaborano con te su una console potrebbero raggiungere un limite hardware di memoria disponibile che li escluderà dalla sessione. Potranno riconnettersi una volta risolto il problema.
Apportare modifiche ai contenuti
Il sistema necessita di dati convertiti aggiornati per calcolare con precisione l'utilizzo della memoria. Dopo aver apportato modifiche ai contenuti con Modifica in diretta o tramite lo strumento Telefono, verrà visualizzato un messaggio che ti chiederà di applicare le modifiche anche se l'indicatore della modalità risulta aggiornato in quanto Modifica in diretta non aggiorna i dati convertiti utilizzati per i calcoli della memoria.
Fino a quando non applicherai le modifiche, la barra di utilizzo continuerà ad aggiornarsi ma mostrerà un valore non attuale. Il costo delle modifiche ai contenuti non si rifletterà.
Avvia calcolo della memoria
La tua isola deve essere in grado di funzionare su tutte le piattaforme hardware supportate per essere pubblicata correttamente.
Prima di procedere alla pubblicazione, è fondamentale assicurarsi che il progetto non superi i limiti di memoria. Nel menu a discesa Progetto, seleziona Avvia calcolo della memoria.
Questo processo calcola la memoria utilizzata in ogni cella.
Una finestra di dialogo ti chiederà di Caricare la versione privata. Fai clic sul pulsante e osserva la barra di avanzamento.
Facoltativamente, puoi aggiungere una descrizione della versione del progetto.
Un pop-up nella parte inferiore dello schermo indica che il calcolo della memoria è in corso.
Una volta completato il caricamento, il popup cambia per indicare che il calcolo è stato avviato.
Nel client viene visualizzato il risultato del calcolo della memoria. Premendo Continua, riprendi il controllo del tuo personaggio giocatore.
Una volta terminato, il personaggio giocatore si teletrasporta nella posizione originale prima dell'inizio del calcolo e visualizzerai uno dei due stati seguenti:
Se hai abilitato lo streaming nel tuo progetto, ora puoi passare in rassegna e controllare i vari settori per verificare quanto spazio occupano.
Se l'opzione di Streaming è abilitata, la barra Memoria utilizzata cambia durante il controllo. Puoi utilizzare questa opzione per identificare le aree del livello che potrebbero superare il budget.
Se la tua isola ha superato il budget, devi risolvere i problemi di memoria locale prima di pubblicarla.
La mia isola è fuori budget. Cosa posso fare?
Esistono molte strategie per risparmiare memoria una volta raggiunto il limite. Prova una combinazione delle opzioni seguenti:
Dopo il calcolo della memoria, puoi aprire un foglio con i primi 100 asset di memoria pesante sulla tua isola. Vai a Finestra > Registro messaggi > Risultati del test di memoria.
La tabella seguente definisce ogni termine:
Termine Spiegazione Risorsa
Solitamente è il nome di un asset in Esplora contenuti. Alcune risorse potrebbero essere visualizzate come "Asset Fortnite": si tratta di un nome che assegniamo alle risorse non create nel tuo progetto, ma che influiscono comunque sull'utilizzo di memoria della tua isola.
Tipo
Questo è il tipo di risorsa/asset. Ad esempio texture, materiale, livello e altro ancora.
Numero riferimenti attore
Il numero di attori che fanno riferimento alla risorsa, direttamente o indirettamente.
Numero riferimenti pacchetto
Il numero di pacchetti convertiti che fanno riferimento alla risorsa. In genere, questo numero aumenta se una risorsa è referenziata da più celle della World Partition.
Dimensioni
Dimensione della risorsa. L'impatto di una determinata risorsa sulla barra dell'utilizzo attuale della memoria nella posizione campionata.
Ti consigliamo di eseguire lo streaming delle texture, quando possibile. Ciò significa creare texture in modo che siano compatibili con lo streaming (potenza di due dimensioni) e configurarle in modo che vengano generate le mipmap. Se non è possibile eseguire lo streaming, le texture useranno sempre la quantità massima di memoria indipendentemente dalla distanza di utilizzo. Per maggiori informazioni, consulta Ridimensionamento delle texture.
Attiva lo streaming nel pannello World Partition. Sebbene rappresenti un must per le isole di grandi dimensioni, anche le isole più piccole possono trarre vantaggi dallo streaming, soprattutto se il contenuto diventa troppo denso.
Una volta attivato lo streaming, assicurati che Is Spatially Loaded sia attivato per gli attori, quando possibile. In caso contrario, verranno convertiti nel pacchetto del livello principale e saranno sempre caricati. Ciò è particolarmente rilevante nel caso in cui il paesaggio effettui lo streaming di attori proxy, in quanto questi possono contenere molti dati di collisione di cui sarebbe meglio eseguire lo streaming solo quando necessario.
Distribuisci i contenuti della tua isola in modo uniforme. La concentrazione di un numero eccessivo di attori in un'area ridotta non permette uno stream ottimale dei contenuti e contribuirà a superare il budget di memoria.
Riduci il numero di dispositivi utilizzati dalla tua isola. I dispositivi rappresentano gli attori con il consumo maggiore di memoria che puoi posizionare. Al contrario, il posizionamento di istanze dello stesso dispositivo si traduce in un costo di memoria notevolmente inferiore.
Dai un'occhiata alla finestra Dimensioni progetto. Se vedi alcuni oggetti pesanti in termini di memoria sul disco, è probabile che saranno anche pesanti per la memoria in fase di esecuzione. Per verificare le dimensioni del progetto, fai clic sul menu a discesa Progetto e seleziona Dimensioni progetto.
Riduci il livello di qualità dei LOD degli asset personalizzati, specialmente sugli asset che sono visibili solo da lontano.
Riutilizza gli asset più volte. In una foresta composta da 100 alberi, utilizza 5 varianti e duplicale invece di usare 100 alberi unici. Questo farà un'enorme differenza sull'impronta della memoria.
Se utilizzi HLOD, generali durante tutto il processo del progetto e assicurati di generarli solo per oggetti che puoi vedere da lontano.
Utilizza i livelli dati se le tue isole possono essere suddivise in configurazioni che non devono essere necessariamente visualizzate tutte in una volta. Ad esempio, un dungeon sotterraneo che non è raggiungibile a meno che il giocatore non entri in un santuario.
Riduci la complessità delle mesh dei tuoi contenuti personalizzati. Le mesh con un alto numero di pixel comportano un costo di memoria più elevato. Modifica le mesh facendo due volte clic in Esplora contenuti e regolando il valore Mantieni percentuale triangoli in Impostazioni Nanite. Utilizzando un valore più basso, diminuisce la complessità delle mesh e si riduce il costo di memoria dell'attore.
Risoluzione di altri problemi
Per una convalida corretta, i creatori devono avere lo streaming abilitato; inoltre, è necessario che le texture generino mipmap. In passato, se una texture era configurata con l'opzione MipGenSettings impostata su Nessuna Mipmaps, questa condizione non veniva rilevata durante la pubblicazione dell'isola. Tuttavia, se una Texture nel progetto riporta MipGenSettings impostata su Nessuna Mipmaps, la convalida ora avrà esito negativo.
Tieni presente le seguenti eccezioni a questo requisito per lo streaming e le mipmap:
Questa regola si applica solo alle texture con più di 1 milione di texel. Quindi, ad esempio, se le dimensioni di una texture risultano inferiori a 1.048.576 quando vengono moltiplicate, la convalida avverrà anche con MipGenSettings impostato su Nessuna Mipmap.
Non è necessario che le texture nel gruppo UI non abbiano lo streaming abilitato.