Le texture di gioco hanno requisiti specifici per il rendering corretto nel gioco. Quando crei texture in Unreal Editor per Fortnite (UEFN) con immagini importate assicurati che il file immagine di origine utilizzi la potenza di due per altezza e larghezza. In questo modo, aumenta la compatibilità e la stabilità della tua isola in piattaforme diverse.
I formati di file compressi delle unità di elaborazione grafica (GPU) devono utilizzare la potenza di due texture in tutte le console, i PC e i dispositivi mobili. Texture non conformi alla regola della potenza di due diventeranno instabili su piattaforme di fascia bassa e potrebbero causare crash nel gioco. La potenza di due viene utilizzata anche nello streaming delle texture per ridurre la risoluzione delle texture sulle piattaforme con meno memoria.
Lo streaming delle texture consente di:
Modificare la risoluzione di una texture.
Determinare la velocità di caricamento di un gioco.
Aumentare la qualità visiva del gioco.
Salvare la memoria GPU.
Definizione della potenza di due
Computer e console gestiscono ed elaborano dati in chunk limitati invece che tutti insieme. Si tratta di un principio simile al modo in cui gli sfondi vengono renderizzati utilizzando World Partition.
Quando sono conformi alla regola della potenza di due, i chunk di dati di gioco stabiliscono un set di limiti fisici e codificati sui supporti multimediali. Se non si rispettano questi limiti, il motore di gioco spreca risorse nel tentativo di renderizzare correttamente gli asset.
La potenza di due consente di ottimizzare i dati di gioco e renderizzare le immagini in modo efficace per creare esperienze visive accattivanti.
Esempi di dimensioni di immagine accettabili sono: **256x256,** **512x512** o **1024x2048**. Texture non conformi alla potenza di due non saranno ottimizzate e comporteranno problemi di instabilità e prestazioni ridotte in un'isola.
Grazie alle texture conformi alla potenza di due, UEFN può sfruttare le tre funzionalità chiave seguenti:
Compressione delle texture: riduce le dimensioni della memoria di circa otto volte a un costo di qualità visiva minimo.
Mipmapping: generazione automatica di varianti a bassa risoluzione
Streaming delle texture: mostra una variante a risoluzione più bassa prima di trasmettere in memoria i dati a risoluzione più alta.
Combinate, queste funzionalità permettono di renderizzare anche un asset di qualità elevata con texture in 4K su qualsiasi piattaforma. Ciò si verifica perché le texture avranno varianti di alta qualità a una risoluzione ridotta.
Ad esempio, una texture di 4000x4000 senza livello alfa richiederebbe 64 megabyte di memoria. Questa texture deve essere caricata interamente e verrebbe visualizzata alla sua risoluzione originale di 4000x4000, anche se ciò potesse causare aliasing su un piccolo billboard posizionato lontano dal giocatore. Dimensioni di texture troppo elevate possono mandare in crash i dispositivi che non hanno abbastanza memoria.
Al contrario, una versione 4096x4096 di una texture che utilizza la compressione predefinita consumerà solo 8 megabyte, effettuerà uno streaming progressivo e produrrà meno aliasing a distanza. Dimensioni troppo elevate potrebbero anche aumentare le dimensioni del pacchetto, senza però causare il crash del gameplay.
Convalida delle texture
Le texture devono essere convalidate ai fini delle prestazioni prima di essere utilizzate in un progetto. Se una texture non viene convalidata, causerà i seguenti problemi:
Arresto anomalo per memoria insufficiente (OOM) dovuto a texture di origine troppo grandi.
Le piattaforme si bloccano a causa di texture troppo grandi.
Problemi di prestazioni della piattaforma dovuti a texture non ottimali.
Le texture che non superano la convalida impediscono la pubblicazione di un progetto.
Regole di validazione
Le regole di validazione includono regole universali che si applicano a tutti gli asset e tre regole principali che si applicano solo alle texture.
Regola universale
Nessuna dimensione di origine può essere maggiore di 4096 texel.
Texture 2D nella UI
Qualsiasi texture sottoposta a cooking inferiore a 1.048.576 texel (1024 X 1024) supererà automaticamente la convalida.
Texture 2D
Le texture sottoposte a cooking inferiori a 1.048.576 texel (1024 X 1024) superano automaticamente la convalida.
Le dimensioni di conversione non possono essere maggiori di 2048 texel.
Le dimensioni convertite devono essere una potenza di due.
Deve essere riproducibile in streaming e permettere la creazione di mips.
Texture cubemap
Qualsiasi texture sottoposta a cooking (per faccia) inferiore a 1.048.576 texel supererà automaticamente la convalida.
Le dimensioni di conversione non possono essere maggiori di 1024 texel. Ciò vale per ogni singola faccia, non per asset.
Le dimensioni convertite devono essere una potenza di due.
Deve essere riproducibile in streaming e permettere la creazione di mips.
Ricerca di texture non valide
UEFN ha severi requisiti di dimensione per le texture: per garantire che tutte le texture importate utilizzino i vincoli di dimensione corretti, UEFN include validatori aggiuntivi oltre a quelli offerti da Fortnite. Questi validatori utilizzano regole per individuare ed evidenziare i problemi nelle prime fasi del processo di costruzione per evitare di caricare progetti che inevitabilmente non vengono convertiti.
Ci sono due aree in cui una texture viene convalidata; durante il processo di convalida del progetto e anche quando viene aggiunto a Esplora contenuti.
Convalida del progetto
Gli errori di convalida delle texture vengono visualizzati dopo che un progetto ha completato il processo di convalida. Il processo utilizza sempre i dati della texture effettivi (al contrario dei tag asset). Tutti i risultati vengono stampati nel registro dei messaggi con un token "Correzione automatica".
Convalida di Esplora contenuti
L'anteprima e il tooltip della texture mostrano rispettivamente un'icona e un riepilogo. Il menu contestuale offre un'opzione "Conforma texture". Texture conforme tenta di utilizzare i dati effettivi della texture e, per motivi di prestazioni, ricorre ai tag asset se la texture non è caricata. Se legge i tag asset, potrebbe essere leggermente meno precisa se alcuni tag sono mancanti. Tuttavia, la prossima volta che i dati effettivi della texture vengono convalidati (Convalida del progetto, OnObjectTransacted), il tooltip e l'anteprima verranno aggiornati in modo accurato.
Gli asset di texture che non sono conformi ai requisiti indicati sopra sono contrassegnati in Esplora contenuti da un'icona di errore. Passando il mouse sull'asset, nella parte superiore del tooltip vengono visualizzati ulteriori dettagli sul problema specifico:
Per informazioni sull'utilizzo di texture conformi, consulta la sezione Texture non valide conformi di seguito.
Requisiti di ridimensionamento delle texture per UEFN
Per garantire che tutte le isole funzionino bene su tutte le piattaforme di destinazione, UEFN impone alcuni requisiti agli asset di texture.
Se il tuo progetto contiene asset di texture che non sono conformi a questi requisiti, tali texture non saranno convalidate e ti sarà impedito di caricare il tuo progetto.
Se la texture è assegnata al gruppo di texture UI, le sue dimensioni devono essere inferiori alla dimensione massima di 2048x2048. Tuttavia, non è necessario che le dimensioni della texture siano potenze di 2. (Le texture UI in genere non hanno flussi, quindi appariranno sempre il più nitide possibile).
Se la texture è _not _assigned al gruppo di texture UI, le sue dimensioni devono essere inferiori alla dimensione massima di 4096x4096. Inoltre, se contiene un numero di pixel superiore alla soglia minima (1024x1024, o 1048576), deve essere trasmissibile. Ciò significa che;
Ogni dimensione deve essere una potenza di due (ad esempio, 256x256, 512x512, 1024x1024 e così via).
L'immagine non deve essere necessariamente quadrata, purché ogni dimensione sia una potenza di due. Ad esempio, 256x512, 512x1024, 256x1024 e così via.
La proprietà Non eseguire mai lo streaming della texture deve essere disabilitata.
La texture deve essere impostata per generare le mipmap.
Il costo totale della memoria di tutte le texture non in streaming nel progetto deve essere inferiore a un budget massimo prestabilito. Il costo della memoria per il progetto è determinato sommando il costo della memoria di tutte le texture la cui proprietà Non eseguire mai lo streaming è abilitata. Questo include:
Tutte le texture le cui dimensioni non sono potenze di due (e che non sono con padding o allungate a potenze di due usando la proprietà Padding e ridimensionamento). La proprietà Non eseguire mai lo streaming è sempre automaticamente abilitata per queste texture.
Tutte le altre texture la cui proprietà Non eseguire mai lo streaming è stata abilitata manualmente.
Ogni texture ha un'impostazione di Gruppo di texture che ne indica l'uso previsto. È possibile impostare questo gruppo e le altre proprietà della texture di cui sopra facendo doppio clic sull'asset texture in Esplora contenuti per aprire l'Editor texture.
Ridimensionamento delle texture
In UEFN, vecchie texture importate che utilizzano dimensioni non uniformi o eccessivamente elevate possono essere ricalcolate e adattate alla potenza di due. Trova e correggi eventuali texture problematiche seguendo questi passaggi:
Apri il Cassetto dei contenuti o Esplora contenuti e assicurati di selezionare la cartella principale dei contenuti del tuo progetto nel pannello ad albero di sinistra FortniteGame.
Sotto Tutti, trova la cartella denominata Contenuto YourProjectName.
Digita
NeverStream==true&&TextureGroup!=UInella barra di ricerca della parte superiore del Cassetto dei contenuti. In questo modo, si avvia una query per identificare eventuali asset da correggere.
Tutti gli asset che appaiono nella vista filtrata risultano problematici. Anche se richiede un po' di tempo risolvere i problemi, ciò migliorerà le prestazioni del tuo livello.
Hai a disposizione due opzioni per aggiornare le texture interessate che non fanno parte del gruppo UI.
Opzione A: utilizza le funzionalità di modifica in blocco di UEFN per raggruppare le texture e modificarle in un unico passaggio. Rappresenta il modo più rapido per adattare automaticamente le texture, riempiendole per raggiungere il rapporto d'aspetto desiderato; tuttavia, questo processo di riempimento potrebbe portare a un consumo di memoria non necessario.
Opzione B: richiede un po' più di tempo ma sfrutta al meglio il budget della memoria se è necessario modificare più texture interessate. Questa opzione ti consente di modificare e ricaricare texture per evitare la creazione di spaziature non necessarie.
Opzione A
Fai clic sul menu hamburger in Esplora contenuti accanto alla barra di ricerca e seleziona Texture. Tutte le texture sono isolate in Esplora contenuti.
Fai clic sull'icona Impostazioni e attiva l'opzione Colonne. Visualizzerai ora tutte le texture disposte in colonne in Esplora contenuti.
Nella colonna Dimensioni cerca qualsiasi asset che non impiega la potenza di due.
Seleziona tutte le texture non conformi alla potenza di due.
Fai clic con il tasto destro del mouse in Esplora contenuti e seleziona Azioni asset > Modifica selezione in matrice proprietà. In questo modo, si apre lo strumento Editor modifiche in blocco in cui sono elencate tutte le texture nella scheda Editor componenti.
Seleziona tutti i nomi file delle texture nella sezione Radice.
Fai clic sull'immagine per ingrandirla.
Apri l'opzione Texture nella scheda Colonne con pin.
Seleziona Adatta alla potenza di due dal menu a discesa Padding e ridimensionamento. Visualizzerai ora una barra di avanzamento nella parte inferiore della finestra dell'editor.
Le texture sono state tutte convertite in dimensioni di potenza di due e ora funzionano su tutte le piattaforme.
Opzione B
Fai doppio clic sulla texture per aprire l'editor texture.
Nella barra di ricerca della parte superiore del pannello Dettagli, inserisci il nome del tuo file di origine. Come risultato, verrà visualizzato il percorso del file sul tuo PC che sarà utilizzato come il file di origine per la texture.
Fai clic sull'immagine per ingrandirla.
Ridimensiona la texture con le dimensioni più vicine ai valori di potenza di due utilizzando un editor di immagini come GIMP o Paint.NET 5. Puoi anche utilizzare Paint se la texture non ha un livello alfa.
Le dimensioni di potenza di due includono 256, 512, 1024, ecc.
Ad esempio, una texture 500x500 deve essere 512x512 e una texture 600x256 potrebbe essere 512x256.
Eventuali modifiche apportate al rapporto d'aspetto non devono avere effetti negativi sull'isola.
Fai clic con il tasto destro del mouse sulla texture in Esplora contenuti e seleziona Reimporta.
Se l'immagine della texture originale non è presente nei tuoi file:
Fai clic con il pulsante destro del mouse sulla texture in Esplora contenuti, quindi seleziona Azioni asset > Esporta per ottenere una nuova copia.
Ridimensiona la texture con le dimensioni più vicine ai valori di potenza di due. Poi fai clic con il tasto destro del mouse sulla texture in Esplora contenuti e seleziona Reimporta con nuovo file. Quando il file viene importato, fai due volte clic sulla texture per aprire l'Editor texture.
Nella barra di ricerca del pannello Dettagli, digita Non eseguire mai streaming, quindi imposta l'opzione su False. Se non è possibile impostarla su False, assicurati che la specifica Importazione in alto indichi che l'immagine abbia dimensioni conformi alla potenza di due.
Nel pannello Dettagli, cerca l'opzione Impostazioni gen Mip. Poi, nel menu a discesa seleziona Da gruppo di texture.
Nel pannello Dettagli, cerca l'opzione Impostazioni compressione, quindi seleziona Predefinite (DXT1/5) nel menu a discesa.
Una volta completati questi passaggi, controlla di aver rimosso correttamente la texture con limitazioni digitando di nuovo NeverStream==true&&TextureGroup!=UI nella barra di ricerca di Esplora contenuti. Gli asset che hai aggiornato non dovrebbero più essere visualizzati qui.
Modifica di una singola texture
Attieniti alle indicazioni seguenti se hai una sola texture non conforme alla regola della potenza di due.
Fai doppio clic sulla texture per aprire l'editor texture.
Fai clic sull'immagine per ingrandirla.
Nella barra di ricerca Dettagli, digita Modalità potenza di due. Quindi, nel menu a discesa Padding e ridimensionamento, seleziona Potenza quadrata.
Cerca l'opzione Non eseguire mai in streaming e impostala su False.
Cerca l'opzione Impostazioni gen Mip. Poi, nel menu a discesa seleziona Da gruppo di texture.
Cerca l'opzione Impostazioni compressione, quindi seleziona Predefinite (DXT1/5) nel menu a discesa.
Una volta completati questi passaggi, controlla di aver rimosso correttamente la texture con limitazioni digitando NeverStream==true&&TextureGroup!=UI nella barra di ricerca di Esplora contenuti. Gli asset che hai aggiornato non devono più comparire nell'elenco mostrato.
Conformare texture non valide
Il modo migliore per correggere le texture non valide importate da file esterni è modificarle nell'applicazione originale con cui sono state create, quindi reimportare l'asset. Puoi anche usare un'altra applicazione dedicata all'editing delle immagini per modificare le texture prima di reimportarle in UEFN.
Assicurati che le dimensioni di ogni immagine siano inferiori alle dimensioni massime indicate sopra. Se non usi l'immagine per l'interfaccia utente, l'altezza e la larghezza dell'immagine devono essere potenze di due. L'immagine non deve essere necessariamente quadrata, purché ogni dimensione sia una potenza di due.
In alternativa, UEFN offre un metodo integrato per rendere le dimensioni delle texture conformi ai requisiti UEFN in modo automatico. Per farlo:
In Esplora contenuti, seleziona una o più texture non valide.
Fai clic con il tasto destro del mouse sull'anteprima di una texture e scegli Conforma texture dal menu contestuale.
L'editor tenta di regolare le proprietà delle texture selezionate per evitare problemi di convalida e scrive i risultati nel Registro di output.
Questa operazione ha i seguenti effetti:
Se la texture è nel gruppo di texture UI e le sue dimensioni sono superiori al massimo consentito, l'impostazione Compressione > Avanzate > Dimensione massima texture della texture viene regolata per limitare la risoluzione massima della texture che può essere caricata in runtime.
Se la texture non è nel gruppo di texture UI e le sue dimensioni sono superiori al massimo consentito, l'impostazione Bias LOD della texture viene regolata in modo che le mipmap più grandi della texture vengano scartate. Questo limita di fatto la risoluzione massima della texture che può essere caricata in runtime.
Se la texture non è nel gruppo di texture UI e le sue dimensioni non sono potenze di due, l'impostazione Padding e ridimensionamento della texture è impostata su Allunga a potenze di due.
Se la texture non è nel gruppo di texture UI, l'impostazione Non eseguire mai lo streaming è disattivata.