World Partition otwiera przed twórcami możliwość budowania dużych i złożonych wysp, a jednocześnie umożliwia zmniejszenie użycia pamięci i płynne działanie na różnych platformach.
W tym celu World Partition wykorzystuje dwa ważne komponenty: Streaming i HLOD (hierarchiczny poziom szczegółów).
Streaming
World Partition używa komponentu Streaming do ładowania komórek siatki wokół gracza lub komponentu Źródło streamingu do ładowania komórek do pamięci i ich wyładowywania z pamięci. Pozwala to ograniczyć ilość danych, jakie komputer musi zapamiętać, do komórek otaczających postać gracza.
Jeśli długość wyspy w najszerszym miejscu przekracza 1 km, pojawi się wyskakujące okno z prośbą o włączenie streamingu.
Zaznaczenie opcji Włącz streaming sprawi, że wartość Aktualne zużycie pamięci będzie uwzględniać tylko komórki otaczające bieżące położenie gracza (z kilkoma wyjątkami).
Kliknij Okno > Ustawienia świata, aby sprawdzić, czy jest włączona opcja Włącz streaming.
Przy pierwszym zaznaczeniu pola wyboru konieczne będzie potwierdzenie wyboru.
Wówczas funkcja streamingu powinna zostać włączona w projekcie.
Aby zwizualizować siatkę wyspy, zaznacz opcję Podgląd siatek w ustawieniach świata.
Możesz zmodyfikować rozmiar poszczególnych komórek oraz zakres ładowania, jednak pamiętaj, że ustawienia domyślne zostały zoptymalizowane pod kątem rozmiarów wysp stosowanych w rozgrywkach Fortnite: Battle Royale.
Więcej szczegółowych informacji znajdziesz na stronie World Partition w dokumentacji Unreal Engine 5.
Poziomy HLOD
Hierarchiczny poziom szczegółów (tj. HLOD) w optymalny sposób grupuje znajdujących się blisko siebie aktorów, a gdy grupa znajdzie się dostatecznie daleko od źródła streamingu, zostaje uproszczona do postaci jednej siatki statycznej.
Poziomy HLOD generowane są z zastosowaniem poziomu szczegółów (LOD) o najmniejszej dokładności danego zasobu. Jeśli niestandardowe zasoby nie mają ustawionych poziomów LOD, poziom HLOD będzie bardzo kosztowny obliczeniowo, ponieważ będzie generowany z zasobów o pełnej rozdzielczości.
LOD0 oznacza zasób o najwyższym poziomie dokładności. LOD1 oznacza siatkę o niższym poziomie dokładności, a każdy kolejny numer LOD oznacza coraz niższą dokładność.
Ilustracja z lewej strony przedstawia zasoby z zastosowaniem pełnej szczegółowości, natomiast ilustracja z prawej strony przedstawia zasób HLOD wygenerowany na podstawie tej komórki siatki.
Tworzenie poziomów HLOD powoduje dodanie nowych zasobów do projektu, co z kolei zwiększa całkowite użycie pamięci wyspy.
Decyzje podjęte przy doborze ustawień streamingu i poziomów HLOD wpływają na użycie pamięci w następujący sposób:
Streaming jest WYŁĄCZONY | Zasoby nigdy nie są wyładowywane z pamięci, a poziomy HLOD nie są używane. | Najwyższe zużycie pamięci |
Streaming jest WŁĄCZONY i są generowane poziomy HLOD | Zasoby znajdujące się w pewnej odległości wciąż będą widoczne, ale w miarę odsuwania się od nich kamery, będą one mniej szczegółowe. | Umiarkowane zużycie pamięci |
Streaming jest WŁĄCZONY i nie są generowane poziomy HLOD | W miarę odsuwania kamery zasoby znajdujące się w oddali będą znikać. | Najniższe zużycie pamięci |
Budowanie poziomów HLOD
Aby utworzyć poziomy HLOD, upewnij się, że w projekcie jest włączona opcja Streaming, a następnie przejdź do menu Buduj na pasku narzędzi i wybierz Zbuduj HLOD.
W zależności od używanego komputera oraz złożoności świata, zbudowanie poziomów HLOD może chwilę potrwać. Dobra wiadomość jest taka, że w przypadku ponownego uruchomienia procesu poziomy HLOD będą budowane tylko dla tych regionów świata, które uległy zmianie, zatem operacja będzie szybsza.
Więcej informacji o działaniu poziomów HLOD znajdziesz na stronie World Partition – hierarchiczny poziom szczegółów w dokumentacji Unreal Engine 5.
Wykluczanie zasobów przy generowaniu poziomów HLOD
Niektóre zasoby nie wymagają poziomów HLOD. Poniżej przedstawiono przykładowe zasoby, które można wykluczyć:
Rekwizyty w pomieszczeniach i zasoby budowli | Nie powinno się tworzyć poziomów HLOD dla zasobów, których nie da się zobaczyć z pewnej odległości. Na przykład dotyczy to mebli, ścian wewnętrznych, posadzek itp. |
Zasoby pod ziemią | Każda część wyspy znajdująca się pod ziemią, która nigdy nie będzie widoczna na linii wzroku gracza. Na przykład dotyczy to piwnic, jaskiń, rowów, bunkrów itp. |
Mali aktorzy | Nie powinno się tworzyć poziomów HLOD dla małych aktorów, którzy nie zajmują znacznej części ekranu gracza. Na przykład dotyczy to skrzyń, roślin i latarni ulicznych. |
Duzi aktorzy | Nie powinno się tworzyć poziomów HLOD dla dużych aktorów stanowiących tło, takich jak drapacze chmur lub góry. Jeśli wykluczysz te zasoby przy generowaniu poziomów HLOD, pamiętaj, aby zawsze pozostawały załadowane. W tym celu usuń zaznaczenie opcji Jest przestrzennie załadowane w panelu Szczegóły. |
Wybierz wszelkie zasoby, które nie wymagają tworzenia poziomu HLOD. W panelu Szczegóły usuń zaznaczenie opcji Uwzględnij aktora w HLOD lub Uwzględnij komponent w HLOD (w zależności od zasobu).
Dobrym sposobem na ustalenie, czy uwzględniać zasób w poziomach HLOD, jest pomniejszenie widoku w edytorze i sprawdzenie, czy wykluczenie mało istotnych zasobów przy generowaniu poziomów HLOD ma sens.
Cofanie zakresu ładowania
Jakość poziomów HLOD jest powiązana z ich oczekiwaną odległością rysowania. Gdy korzystasz z funkcji streamingu, najkrótszą odległość, z której widoczne będą poziomy HLOD, wyznacza zakres ładowania skonfigurowany dla siatki World Partition.
Jeśli poziomy HLOD ładowane są dopiero wówczas, gdy na ekranie gracza są już małe, będą zajmowały mniej pamięci.
Aby zmienić zakres ładowania:
Wybierz kartę Konfiguracja systemu World Partition.
Rozwiń sekcję Ustawienia wykonawcze, a następnie rozwiń sekcję Siatki.
Zmodyfikuj zakres ładowania, klikając lewym przyciskiem myszy i przeciągając wartość liczbową w lewo lub w prawo, albo wprowadzając dokładną wartość.
Zwiększanie wydajności edytora poprzez ładowanie regionów
Podczas pracy przy dużych projektach w UEFN, gdy wyspa osiąga pewną wielkość mogą zacząć pojawiać się problemy z wydajnością. Domyślnie cała wyspa jest załadowana do pamięci. Aby uzyskać lepszą częstotliwość wyświetlania klatek i poprawić czas reakcji okna wizualizacji, możesz ładować i wyładowywać regiony podczas pracy nad różnymi obszarami wyspy.
Podczas pracy nad dużą i zagęszczoną wyspą w edytorze UEFN korzystaj z minimapy World Partition, aby ładować i wyładowywać sekcje wyspy, co pozwoli radykalnie skrócić czasy ładowania.
Aby to zrobić:
Upewnij się, że w przypadku poziomu jest włączona opcja Streaming.
Na pasku menu wybierz Edytuj, a następnie wybierz Preferencje edytora....
Przejdź do sekcji World Partition i usuń zaznaczenie opcji „Wyłącz ładowanie w edytorze”.
Ponownie załaduj projekt. Funkcja ta nie zacznie działać, dopóki projekt nie zostanie ponownie załadowany.
Na karcie World Partition kliknij lewym przyciskiem myszy i przeciągnij myszą w poprzek obszaru do wyładowania.
Kliknij prawym przyciskiem myszy obszar zaznaczenia i wybierz Wyładuj wybrane regiony.
Aby ponownie załadować region, kliknij i przeciągnij myszą w poprzek odpowiedniego regionu, kliknij prawym przyciskiem myszy i wybierz Załaduj region z zaznaczenia.
Pamiętaj, że ładowanie i wyładowywanie nie wpływa na żaden krajobraz ani urządzenie. To samo dotyczy każdego zasobu, w przypadku którego w sekcji Opcje użytkownika usunięto zaznaczenie opcji „Jest przestrzennie załadowane”.
Warstwy danych w UEFN
Warstwy danych są w UEFN systemem służącym do porządkowania aktorów przez rozmieszczenie na różnych warstwach. Warstwy te można ładować i wyładowywać, aby uporządkować świat, zarządzać złożonymi poziomami i tworzyć unikatowe przygody w rozgrywkach. Wyobraź sobie grę z poziomami losowymi. Ustawienie różnych układów poziomu na różnych warstwach i losowe wybieranie jednego z nich przy rozpoczęciu rozgrywki pozwala zróżnicować doświadczenia i sprawić, że przygody będą ciekawsze. Warstwy danych można wykorzystać nawet do większych przejść, na przykład do zmiany całego poziomu z letniego na zimowy lub dodania zniszczeń do zamku po bitwie.
Szczegółowe informacje o tworzeniu warstw danych i zarządzaniu nimi znajdziesz na stronie dotyczącej warstw danych w witrynie dokumentacji Unreal Engine.
Manipulowanie warstwami danych przy użyciu sequencera filmowego
Za pomocą sekwencji filmowej w UEFN można załadować, aktywować i wyładować warstwy danych w czasie wykonywania programu oraz w reakcji na zdarzenia.
Na karcie Sequencer kliknij przycisk Ścieżka i wybierz Warstwa danych, aby dodać istniejącą warstwę danych do ścieżki narzędzia Sequencer.
Po ustawieniu ścieżki kliknij prawym przyciskiem myszy ścieżkę Warstwa danych i wybierz Edytuj sekcję. Następnie na karcie Zasoby warstwy danych kliknij Dodaj element i wybierz warstwę danych, którą chcesz stosować z sequencerem filmowym.
Kliknięcie prawym przyciskiem myszy warstwy danych na osi czasu pozwala wyświetlić jej właściwości. Tutaj w polu Pożądany stan możesz wybrać odpowiednią wartość, czyli stan, w którym ma znajdować się warstwa, gdy oś czasu będzie przeprowadzać ocenę. Ponadto możesz zmodyfikować ustawienie w polu Stan wstępny. Stan wstępny to stan, w którym znajduje się warstwa przed rozpoczęciem ścieżki, a stan końcowy to stan po jej zakończeniu. Jeśli na przykład chcesz aktywować warstwę danych, jako stan pożądany ustawisz wartość Aktywowana, a jako stan wstępny ustawisz wartość Załadowana. Ustawienie stanu wstępnego Załadowana i zwiększenie liczby wstępnych klatek sprawi, że warstwa będzie miała więcej czasu na załadowanie, zanim zostanie aktywowana, dzięki czemu może działać płynniej.
Przesuwając kursor osi czasu, możesz sprawdzić podgląd stanu warstwy w procesie oceny osi czasu.
Aby dowiedzieć się więcej na temat korzystania z urządzenia sequencera filmowego, patrz: Urządzenie sekwencji filmowej.
Generowanie minimapy edytora
Krokiem opcjonalnym jest wygenerowanie minimapy o wysokiej dokładności w sesji edytora. W ten sposób można szybko wyszukać różne obszary poziomu, nad którymi chcemy pracować.
Na pasku menu wybierz Buduj, a następnie wybierz Zbuduj minimapę edytora World Partition....
Na ekranie pojawi się okno dialogowe Status budowania. Zachowaj cierpliwość, ponieważ w zależności od stopnia złożoności wyspy, wykonanie tego kroku może potrwać kilka minut.
Twoja minimapa będzie teraz odpowiadać oknu wizualizacji. Regiony nadal można ładować i wyładowywać w ten sam sposób.
Rozwiązywanie problemów
Pytanie: Dlaczego nie widzę żadnych poziomów HLOD po ich zbudowaniu?
Odpowiedź: Domyślnie edytor nie ładuje aktorów HLOD. Aby sprawdzić poziomy HLOD, wyszukaj je na panelu Outliner i przypnij.
Pytanie: Dlaczego zasoby generują poziomy HLOD, gdy aktorzy są daleko od siebie?
Odpowiedź: Sprawdź, czy aktorzy są dołączeni/zagnieżdżeni pod aktorem nadrzędnym. Kliknij aktora i wybierz Dołącz: brak, aby go odłączyć.
Pytanie: Po wyładowaniu komórek znikają niektóre ważne zasoby.
Odpowiedź: Domyślnie niektóre zasoby przygotowane do pracy w UEFN nie będą miały zaznaczonej opcji Uwzględnij aktora w HLOD. Jeśli zauważysz problem, sprawdź właściwości zasobu.
Pytanie: Dlaczego pojawia się monit o włączenie streamingu, mimo że największy wymiar mojej wyspy nie przekracza 1 km?
Odpowiedź: Monit o włączenie streamingu może się pojawić, gdy krajobraz ma ponad 1 km wzdłuż najdłuższej osi lub gdy jakikolwiek aktor znajduje się w odległości powyżej 1 km od punktu początkowego na poziomie.
Pytanie: Dlaczego duży aktor nie jest zastępowany poziomami HLOD po oddaleniu się od niego?
Odpowiedź: Co najmniej jeden aktor w hierarchii gotowca mógł zostać skopiowany i przeniesiony tak daleko, że World Partition uznaje go za siatkę, którą zawsze trzeba ładować. Aby naprawić ten problem, usuń bardzo odległych aktorów z hierarchii.