Ta strona jest dodatkiem do szablonu Talisman: Environment, który demonstruje najlepsze praktyki przygotowywania bardzo szczegółowych, realistycznych środowisk. Talisman wykonano z wykorzystaniem modułowej konstrukcji i najlepszych praktyk optymalizacji w Unreal Editor dla Fortnite (UEFN).
Szablon znajdziesz w sekcji Przykłady funkcji w Przeglądarce projektów.
Możesz odtworzyć rozgrywkę Talisman zaprezentowaną podczas Game Developers Conference 2024 uruchamiając Fortnite i wprowadzając kod wyspy 7100-3544-3074.
Lokalizacja szablonu Talisman: Environment w Przeglądarce projektów.
Niniejszy przegląd opisuje wyzwania dotyczące optymalizacji, przed którymi stanęliśmy tworząc projekt Talisman, oraz sposób, w jaki poradzono sobie z każdym z nich:
Zarządzanie ograniczeniami pamięci projektu i czasu wykonania
Projektowanie materiałów z użyciem dynamicznej kontroli materiałów
Szablon jest zaprojektowany do uruchamiania na wszystkich dostępnych platformach, dlatego zasoby i styl Talismana muszą być zgodne z wymaganiami UEFN dotyczącymi limitu dostępnej przestrzeni dyskowej i rozmiaru projektu. Stwarza to kilka wyzwań dla projektów opracowanych w bardziej szczegółowym stylu artystycznym:
Rozmiar projektu: Zasoby o wysokiej szczegółowości w grach mogą zajmować dużo miejsca, a UEFN ma ograniczenie rozmiaru projektu do 400 MB.
Ograniczenia pamięci w czasie wykonania: UEFN ma limit 100.000 jednostek pamięci w streamingu, co zmniejsza liczbę zasobów, niestandardowych krajobrazów i urządzeń, które mogą znajdować się na ekranie w tym samym czasie.
Jakość na wszystkich obsługiwanych platformach: Te ograniczenia zapewniają, że zawartość UEFN jest dostępna dla wszystkich graczy na wszystkich platformach obsługiwanych przez Fortnite.
UEFN obsługuje różne sposoby spełnienia tych wymagań, w tym poziomy szczegółów (LOD), hierarchiczne poziomy szczegółów (HLOD), World Partition, instancje poziomów oraz warstwy danych.
Stosowanie dobrych praktyk
Szablon Talisman: Environment został stworzony, aby zaprezentować szereg najlepszych praktyk i procesów, które pozwolą uzyskać realizm na poziomie AAA w Unreal Editor dla Fortnite. Ten szablon wykorzystuje następujące najlepsze praktyki zarządzania projektem i streamowaniem pamięci w celu zoptymalizowania wydajności:
Tworzenie niestandardowej zawartości, która jest modułowa i lekka.
Poprawa wyglądu geometrii twardych powierzchni przy użyciu normalnych ważonych względem powierzchni.
Dodanie szczegółów do siatek przy użyciu naklejek siatek.
Budowanie przygód pod kątem najsłabszej platformy docelowej i dodawanie funkcji z tego poziomu.
Minimalizacja poleceń rysowania na siatkach innych niż Nanite.
Tworzenie niestandardowej zawartości, która jest modułowa i lekka
Środowisko Talisman zostało zbudowane przy użyciu techniki kitbashing, czyli modelowania modułowego, która wykorzystuje wcześniej istniejące siatki ze środowiska modułowego i ponownie wykorzystuje je do tworzenia nowych zasobów. Dzięki wtórnemu wykorzystywaniu zasobów, twórcy byli w stanie zmniejszyć rozmiar projektu poprzez zminimalizowanie liczby jednorazowych siatek.
Ten zasób składa się z sześciu różnych statycznych siatek.
Zazwyczaj twórcy tworzą tego typu środowisko mapując siatkę o wysokiej szczegółowości i dużej liczbie wielokątów na siatkę o niskiej liczbie wielokątów, wykorzystując unikatowe wypalane mapy normalnych, aby utrzymać szczegółowość pomiędzy nimi. Jest to metoda wymagająca dodatkowych map tekstur, które mogą zwiększyć rozmiar projektu, są wymagające w czasie wykonania i nie skalują się dobrze podczas korzystania z techniki kitbashing.
Siatki o średniej liczbie wielokątów z normalnymi ważonymi względem powierzchni zostały użyte w celu zaoszczędzenia pamięci, a naklejki siatki dodano, by dorzucić drobne szczegóły.
Aby dowiedzieć się więcej, patrz Projektowanie i budowanie siatek.
Budowanie przygód pod kątem wszystkich platform docelowych
Fortnite został zaprojektowany do działania na różnych platformach. Dla zapewnienia graczom jak najlepszych wrażeń z gry na każdym z tych urządzeń, bardzo ważne jest, by projektować grę z myślą o wszystkich platformach, a następnie dodawać funkcje dla mocniejszych urządzeń w trakcie prac nad grą.
Przykładowo geometria zwirtualizowana Nanite pomaga platformom renderować niezwykle szczegółowe siatki i poprawić wydajność, ale jest dostępna tylko dla pewnych wysokiej klasy urządzeń, takich jak komputery PC z DirectX 12. Z tego powodu wciąż istotne jest zoptymalizowanie zawartości tak, aby radziła sobie dobrze na wszystkich platformach.
Poniższe obrazy przedstawiają LOD siatek przy ustawieniach epickich, wysokich, średnich i niskich.
Aby dowiedzieć się więcej na temat tworzenia własnych, niestandardowych zasobów dla UEFN, patrz Projektowanie i budowanie siatek.
Minimalizacja poleceń rysowania przy korzystaniu z siatek innych niż Nanite
Polecenia rysowania to proces informujący API grafiki, co i jak narysować w trakcie każdej klatki. Nanite omija standardowe polecenia rysowania dzięki streamowaniu geometrii do sceny wedle potrzeb. Dla siatek innych niż Nanite, wszystkie poniższe elementy inicjują polecenie rysowania w scenie:
Każda siatka z osobna.
Każdy materiał na siatce.
Każde światło.
Każdy rzucony cień.
Szablon Talisman: Environment używa zarówno siatek Nanite, jak i siatek innych niż Nanite. Celem optymalizacji wydajności w przypadku korzystania z siatek innych niż Nanite, liczba poleceń rysowania w scenie została zminimalizowana poprzez:
Usunięcie siatek o znaczeniu innym niż niezbędne.
Usunięcie naklejek siatek o znaczeniu innym niż niezbędne.
Usunięcie świateł generujących cień i uzupełnienie ich funkcjami świetlnymi.
Zarządzanie ograniczeniami pamięci projektu i czasu wykonania
Zarządzanie pamięcią czasu wykonania i zarządzanie rozmiarem projektu są kluczowymi komponentami każdego projektu tworzonego w UEFN. Talisman: Environment radzi sobie z tymi wymaganiami dzięki:
Zawężeniu zakresu projektu.
Ponownemu wykorzystaniu niestandardowych zasobów.
Zarządzaniu pamięcią w czasie wykonania.
Wąski zakres projektu
Aby sprostać ograniczeniu rozmiaru projektu do 400 MB, postać MetaHuman przeniesiono do szablonu Talisman: MetaHuman. Szablon ten znajdziesz w sekcji Przykłady funkcji w Przeglądarce projektów. Aby dowiedzieć się więcej o MetaHumans w UEFN, patrz Szablon Talisman: MetaHuman.
Poziomy szczegółów
Każda siatka wykorzystana do zbudowania Talismana wykorzystuje trzy poziomy szczegółów (LOD), aby nie przekroczyć założonego limitu 100 000 jednostek pamięci.
Automatyczne ustawienia LOD znajdują się w przeglądarce siatki statycznej.
Siatki LOD są automatycznie generowane, korzystając z automatycznych narzędzi LOD UEFN i są przypisane do określonych poziomów jakości. Aby dowiedzieć się więcej na temat używania poziomów szczegółów w UEFN, patrz Ustawianie poziomu szczegółów.
Zarządzanie pamięcią w czasie wykonywania
Szablon Talisman: Environment wykorzystuje niestandardowe rozwiązanie streamowania utworzone z wykorzystaniem warstw danych i narzędzia Sequencer, aby nie przekroczyć limitu 100 000 jednostek pamięci przewidzianych w budżecie streamingu. Pionowy rozmiar obszarów, takich jak przestrzeń ładowni i długość holu oznaczała, że statek nie mieścił się w siatce streamingowej World Partition.
Każda warstwa danych reprezentuje inne pomieszczenie na Talismanie.
Aby poradzić sobie z tym ograniczeniem, warstwy danych zostały połączone z sekwencerem, aby ładować i wyładowywać obszary statku w oparciu o lokalizację gracza.
Strefy modyfikatorów wyzwalają zdarzenia ładowania w sekwencji poziomu.
Każde pomieszczenie ma odpowiadającą mu warstwę danych i strefy modyfikatorów rozmieszczone na całym statku, które wyzwalają zdarzenia w sekwencji poziomu. Zdarzenia te ładują i wyładowują sekcje statku, w miarę jak gracz porusza się po poziomie. Strefy modyfikatorów są strategicznie rozlokowane w obszarach statku, aby ukryć to przed graczem.
To rozwiązanie nie jest przystosowane do rozgrywki wieloosobowej. Warstwy danych i sekwencja poziomu zostały uwzględnione, ale strefy modyfikatorów zostały usunięte, aby szablon był kompatybilny z rozgrywką wieloosobową.
Używanie niestandardowych elementów UI
Ten szablon wykorzystuje Verse do wyświetlania widżetu niestandardowej ikonki zadania i odtwarza audio, gdy gracz wejdzie w interakcję z konsolą w pokoju startowym.
Niestandardowy sztandar zadania jest uruchamiany przez skrypt Verse.
Gdy gracz korzysta z urządzenia przycisk VO kwatery załogi, plik skryptu starting_sequence_device.verse wykona następujące polecenia:
using { /Fortnite.com/Devices }
using { /Verse.org/Simulation }
using { /Fortnite.com/Characters }
using { /UnrealEngine.com/Temporary/UI }
using { /UnrealEngine.com/Temporary/Diagnostics }
Anuluje dźwięk powitalny, jeśli komunikat audio jest wciąż odtwarzany.
Włącza minimapę statku, aby ułatwić graczom eksplorację Talismana.
Wyświetla niestandardowy blueprint widżetu UI quest_icon_widget.
Odtwarza klip dźwiękowy.
Aby dowiedzieć się więcej na temat używania Verse do modyfikowania projektów UEFN, patrz Przewodnik wprowadzający do programowania w Verse.
Oświetlanie dużych przestrzeni
Talisman wykorzystuje oświetlenie globalne Lumen do oświetlania otoczenia, które zapewnia graczowi cienie i precyzyjne oświetlenie pośrednie na całym statku.
Ten hol prezentuje wszystkie opisane tutaj techniki.
Lumen zapewnia okluzję otoczenia i globalne oświetlenie dla obiektów nieoświetlonych bezpośrednim światłem. Lumen jest potężnym narzędziem do tworzenia rozwiązań oświetlenia, ale wciąż istotne jest zoptymalizowanie środowiska, aby uzyskać maksymalną wydajność. Lumen jest używany w szablonie Talisman: Environment z kilkoma optymalizacjami.
Generowanie cieni jest wyłączone na wszystkich siatkach statycznych, które są oświetlone pośrednio na całym poziomie. Lumen zapewnia znakomite cienie dla tych siatek, więc wyłączenie właściwości Rzucaj cienie zwiększyło wydajność bez uszczerbku dla jakości wizualnej.
Większość świateł w szablonie ma wyłączone rzucanie cieni.
Generowanie cieni jest także dopełnione funkcjami światła i teksturą w paski z kilkoma górnymi światłami.
Szum Lumen i migotanie światła z emisyjnych paneli świetlnych są zredukowane poprzez połączenie każdego z nich z reflektorem nie rzucającym cienia.
Ten reflektor wzbogaca światło z tego panelu świetlnego
Wartość emisyjna każdego panelu jest obniżona i uzupełniona reflektorem nie rzucającym cienia. Każdy reflektor ma krótki promień działania i zapewnia dodatkowe światło, jednocześnie stwarzając pozory, że światło nadal pochodzi z panelu świetlnego.
Oświetlenie otoczenia zoptymalizowano dodatkowo ustawiając najmniejszą możliwą odległość rysowania obiektów. To ustawienie odrzuca każde światło z widoku, kiedy nie trzeba go renderować.
Do oświetlenia całości Talismana użyto także wizualizatora złożoności oświetlenia.
Wizualizator złożoności oświetlenia można przełączać używając Alt+7
To okno wizualizacji wyświetla liczbę świateł innych niż statyczne wpływających na geometrię w poziomie jako cieniowanie kolorów i pomaga śledzić obciążenia wynikające z oświetlenia. Ten wizualizator jest pomocny w minimalizowaniu nakładania się świateł w poziomie, aby ograniczyć obciążenie.
Projektowanie i budowanie siatek
Szczegółowe wnętrze Talismana uzyskano stosując technikę kitbashing i niestandardowe siatki o średniej liczbie wielokątów. Kitbashing to niezwykle skuteczna technika, która pomaga zminimalizować liczbę niezbędnych zasobów w projekcie, jednocześnie dając możliwość ponownego wykorzystania i łączenia siatek, aby tworzyć nową geometrię.
Każda siatka w projekcie opiera się na wielu różnych technikach, aby poprawić wygląd zasobu bez dodawania dodatkowej geometrii.
Normalne ważone względem powierzchni to technika, która dostosowuje normalne wierzchołków modelu do większych, płaskich powierzchni, aby poprawić cieniowanie bez obniżania wydajności.
Normalne wierzchołków (zielone linie) ustawiają się równo względem większych, płaskich powierzchni, aby poprawić cieniowanie.
Detale takie jak śruby, oznaczenia i uszkodzenia dodano używając naklejek siatki. Naklejki wykorzystują niestandardowe UV do rzutowania złożonej geometrii na powierzchnie i mają możliwość owijania się wokół narożników lub rozciągania wzdłuż krzywych sklejanych, zachowując przy tym swój wygląd.
Projektowanie materiałów z użyciem dynamicznej kontroli materiałów
Tekstury i materiały są często największą częścią każdego projektu UEFN. Aby jeszcze bardziej zmniejszyć rozmiar projektu, szablon wykorzystuje dynamiczne podejście do tekstur i materiałów, które eliminuje konieczność stosowania unikatowych map tekstur. Do uzyskania ostatecznego efektu wykorzystano przepływ pracy proceduralnej, który przechowuje dane okluzji otoczenia, zakrzywienia i maski na siatce za pomocą kolorów wierzchołków. Zapisane dane zostały następnie wykorzystane do zastosowania i mieszania materiałów.
Dane kolorów wierzchołków
Najlepiej jest unikać używania unikatowych map tekstur dla każdego zasobu, pakując dane okluzji otoczenia, zakrzywienia i maski tekstur do każdej siatki za pomocą kolorów wierzchołków. Siatki dla Talismana są projektowane z geometrią pomocniczą i gęstością siatki (wielokąty na cal kwadratowy), aby zapewnić płynną gradację między kolorami wierzchołków. Pomaga to tworzyć wyraźne przejścia między materiałami.
Dane są przechowywane przy użyciu następującej metody:
| Mapa | Kanał koloru |
|---|---|
Okluzja otoczenia | Czerwony |
Zakrzywienie | Zielony |
Maska ID materiału | Niebieski |
Więcej informacji na temat malowania kolorów wierzchołków znajduje się w sekcji Materiały kolorów wierzchołków.
Sloty materiałów na każdej siatce są następnie używane do określania, która część siatki otrzymuje określony materiał. Więcej informacji na temat slotów materiałów zawiera temat FBX Material Pipeline (Potok materiału FBX).
To krzesło ma sloty materiału dla metalu i gumy.
Kontrola materiałów dynamicznych
Siatki dla Talismana używają połączenia pięciu głównych typów materiałów:
Metal
Malowany metal
Tworzywa sztuczne
Gumy
Tekstylia
Każdy materiał polega na pojedynczym materiale wzorcowym, który wykorzystuje wyrównane do świata tekstury kafelkowe i parametry definiowane przez użytkownika w celu wygenerowania wyniku. Utrzymuje to ogólny koszt pamięci materiałów na niskim poziomie, umożliwiając naszym artystom korzystanie z tych samych materiałów na całym statku.
Jedna z części materiału wzorcowego Talisman: Environment
Kurz, zadrapania i inne ślady zużycia są również uwzględnione w materiale wzorcowym i są nakładane na siatki za pomocą masek sterowanych parametrami. Parametry te są przechowywane na siatce przy użyciu niestandardowych danych podstawowych.
Korzystanie z urządzenia kamery okrążającej
Urządzenie kamery okrążającej tworzy widok, który podąża za postacią gracza, ale który gracz może obracać, aby swobodnie się rozglądać. Szablon wykorzystuje to urządzenie, aby umożliwić graczowi przełączanie się między widokiem trzecioosobowym a symulowanym widokiem pierwszoosobowym.
Gracze mogą przełączać się między trzema różnymi widokami za pomocą urządzenia kamery okrążającej
Jest to możliwe za pomocą skryptu camera_switch_mode_device Verse.
# This file handles swapping between different cameras when an input is pressed.
using { /Fortnite.com/Devices }
using { /Verse.org/Simulation }
using { /Fortnite.com/Characters }
using { /UnrealEngine.com/Temporary/Diagnostics }
Kod Verse nasłuchuje, aż gracz wyzwoli akcję docelową trybu kreatywnego, która domyślnie jest mapowana na kliknięcie prawym przyciskiem myszy lub na lewy spust kontrolera. Następnie wykonuje następujące czynności:
Usuwa bieżącą kamerę ze stosu kamer.
Pobiera następną kamerę z tablicy kamer.
Dodaje nową kamerę do agenta.
W razie potrzeby ukrywa postać gracza.
W razie potrzeby odkrywa postać gracza.