[Tipeee] Wiadomości od deweloperów - Październik/listopad 2023

Ustawienia dźwięków, optymalizacja map i aktorzy.

Adnotacja: Ten artykuł pierwotnie został udostępniony 6 miesięcy temu użytkownikom wspierającym nas na Tipeee. Co miesiąc publikuję posty, w których pokazuję wewnętrzne zrzuty ekranu, jak i filmy, opisując najnowsze funkcje w pracach nad nadchodzącą grą Urban Terror na silniku Unreal Engine 5.

Jeśli chcesz wesprzeć rozwój i utrzymanie gry, mając dostęp do najnowszych newsów, to możesz to zrobić na Tipeee za 1 € napiwku. Od teraz będę je również publikował tutaj z 6-miesięcznym opóźnieniem. Miłej lektury i daj nam znać, czy Ci się to podoba!

Cześć,

w listopadzie wydaliśmy dość obszerną wersję QA, która zawierała wiele optymalizacji i ulepszeń.

Przede wszystkim, jak już wspomnieliśmy we wrześniowym wpisie, skupiliśmy się na poprawie wrażeń z walki. Dodaliśmy ustawienia głośności dźwięków trafień i zabójstw, dźwięki przelatujących pocisków, śledzenie pocisków (które można również wyłączyć w ustawieniach) oraz dźwięki uderzeń w różne powierzchnie w pobliżu gracza. Nasza pierwsza sesja QA z tymi zmianami odbędzie się w tę niedzielę, więc jest zbyt wcześnie, aby uzyskać obszerne opinie od członków QA, ale ich pierwsze testy wydają się bardzo obiecujące.

Kolejna duża optymalizacja dotyczyła map. JohnnyEnglish i Neon pracowali nad ulepszeniem zasobów wielu map, aktualizując ich ustawienia LOD, zastępując wiele obiektów fizyki siatkami i zaczynając dobrze wykorzystywać Nanite, który jest dostarczany z Unreal Engine 5, upewniając się, że ustawienia kolizji dla wszystkich obiektów i aktorów zostały odpowiednio ustawione. Wszystko to doprowadziło do znacznego wzrostu liczby klatek na sekundę na kilku mapach bez pogorszenia jakości grafiki.

Najbardziej zauważalne zmiany zostały wprowadzone przez Neona częściowo dzięki implementacji Significance Manager UE5. Silnik ten posiada natywne optymalizacje sieciowe i wizualne dla poszczególnych aktorów, które są w większości oparte na odległości; odkryliśmy jednak, że nie były one wystarczające w przypadku sytuacji bojowych, w których wielu graczy znajdowało się w pobliżu. Skutkowało to dużymi spadkami FPS w sytuacjach walki z 5-10 graczami w pobliżu.

Wtyczka Significance Manager pozwala nadawać priorytety różnym aktorom względem siebie, a aktorzy mogą modyfikować swoje zachowanie w locie w oparciu o predefiniowane parametry.

Na przykład aktorzy, którzy nie są kontrolowani przez lokalnego gracza, tacy jak inne postacie i ich bronie, przedmioty, dodatki (np. akcesoria do broni - przyp. tłum.) i flagi drużyn, nie muszą mieć lokalnie aktualizowanych animacji z każdą kolejną klatką gry w czasie rzeczywistym, jeśli aktualnie nie znajdują się w naszym widoku, nawet jeśli są tuż za nami lub ukryci za ścianą. Dlatego też ustaliliśmy zasady zmniejszania interwału tyknięć aktorów w zależności od ich pozycji i widoczności względem lokalnego gracza, a nie tylko odległości. Te zmiany, zastosowane do większości aktorów, znacznie poprawiły wydajność w sytuacjach o szczególnie dużym natężeniu obiektów.

Kolejnym ważnym usprawnieniem było przekonwertowanie niektórych zasobożernych schematów (ang. blueprints) na C++. Są one dobre do szybkiego prototypowania nowych koncepcji, trybów gry, interfejsu użytkownika itp., co robiliśmy często na wczesnych etapach rozwoju Urban Terror 5, ale znacznie, znacznie wolniejsze do wykonania, niż natywny C++. Mamy wielu aktorów, którzy opierają się na schematach i wykonują funkcje schematów co tyknięcie/ramkę, a wszystkie one stanowią zauważalny procent ogólnego czasu gry.

Zdecydowaliśmy się przepisać najbardziej obciążające schematy na C++. Jednym z nich był projekt obsługujący MrSentry. Pamiętasz MrSentry? To automatyczny karabin maszynowy rozmieszczony w miejscu odradzania (ang. spawn), strzelający do każdego wroga, który zbliży się zbyt blisko, a także do sojuszników próbujących ukryć flagę wroga na swoim spawnie (ups!). Wcześniej wykonanie tego schematu dla każdej klatki zajmowało 180 μs. Teraz, gdy przepisałem go w C++ (i zoptymalizowałem sposób, w jaki wygląda dla wrogów), zajmuje to tylko 20 μs, co stanowi przyspieszenie o 800%! Może się to wydawać niewielką zmianą, ponieważ mówimy dosłownie o zyskach w mikrosekundach, ale przy dziesiątkach schematów szybko sumują się one do milisekund, a większość z nich jest wykonywana co każdą klatkę!

W najbliższym czasie skupię się na konwersji do C++ niektórych elementów interfejsu (HUD), których rysowanie jest obecnie bardzo kosztowne (pół milisekundy na klatkę).

Przechodząc do lżejszych tematów, Lizart wykonał niesamowitą pracę na mapie Thingley w motywie Halloween ze szkieletami, dyniami i przerażającą atmosferą. Pracował również nad teksturowaniem dróg i trawy, które z każdym dniem stają się coraz piękniejsze.

Dziękuję wszystkim za nieustające wsparcie! Miłego świętowania Bożego Narodzenia i do zobaczenia na początku przyszłego roku!

-- Barbatos

Galeria zdjęć na stronie pod filmami:

O artykule: