Miesiące problemów z dźwiękiem w Apex Legends spowodowanych „pojedynczą linijką kodu” – potwierdza Respawn

Miesiące problemów z dźwiękiem w Apex Legends spowodowanych „pojedynczą linijką kodu”, potwierdza Respawn

Węzeł źródłowy: 2627193

Dzisiaj w „Tworzenie gier wideo jest trudne”: podróż Respawn w celu wyśledzenia błędu, który spowodował miesiące problemów z dźwiękiem w Apex Legends. Granaty, które nie wybuchają, pistolety, które nie strzelają, uszkodzenia, które nie mają źródła, i miesiące bolesnego śledztwa – wszystko to najwyraźniej spowodowane pojedynczą linijką kodu dodaną w aktualizacji 16. sezonu Apex Legends.

Jak opisano w dokładny post z Reddita (otwiera się w nowej karcie) przez menedżera społeczności Respawn, Amy Thiessen, kłopoty zaczęły się na początku sezonu 16 w lutym. Studio zaczęło otrzymywać raporty o „znikających nades” w Apex. Respawn wkrótce ustalił, że granaty nie „znikały” dokładnie, ale czasami nie eksplodowały pomimo obrażeń graczy.

„To nie miało miejsca podczas naszych testów gry w sezonie 16, nie mogło zostać odtworzone wewnętrznie po wstępnych raportach i było bardzo trudne do ustalenia za pomocą filmów z rozgrywki na żywo, ponieważ podstawowa przyczyna nie zawsze była pokazana w POV gracza” – czytamy we wpisie.

Respawn lepiej poradził sobie z problemem po otrzymaniu podobnych zgłoszeń o brakujących efektach dźwiękowych broni i efektach cząsteczkowych. „Po wstępnym dochodzeniu ustalono, że głównym podejrzanym był system używany przez nasze serwery do wysyłania poleceń „start”/„stop” w celu uzyskania różnych efektów (np. niektórych dźwięków, systemów cząsteczek, uderzeń fizycznych, śladów pocisków, eksplozji).”

Aktualizacja zespołu programistów: Aktualizacja dźwięku od r / apexlegends

Zasadniczo podczas meczu działo się coś, co mogło przeciążyć limit serwera dla efektów dźwiękowych lub efektów cząsteczkowych, powodując odrzucanie niektórych dźwięków i efektów.

„Stąd teoria była taka, że ​​coś może zalewać to ograniczenie silnika, żądając tysięcy efektów na sekundę!” post mówi. „Ale czy był to problem systemowy, czy może działała pojedyncza jednostka? Każda aktualizacja sezonu zawiera tysiące zmian w zasobach, kodzie, skrypcie i poziomach. Co oznaczało znalezienie igły w stogu siana.

Respawn zwrócił się do metryk, aby pomóc rozwiązać problem, ale nic w telemetrii nie wskazywało na wyraźny problem. Sugerowało to Respawnowi, że ten błąd był wyjątkową sytuacją, której ich systemy wcześniej nie widziały.

„Pozostawiło nas to przed złożonym problemem, o którym wiedzieliśmy, że ma wpływ na naszą społeczność, ale pomimo szczegółowych raportów był trudny do odtworzenia, miał minimalne wewnętrzne powiązania i nie było danych, które ostatecznie dowiodłyby, że ten limit w ogóle został osiągnięty”.

Dokąd stamtąd jedziesz? Firma Respawn postanowiła przetestować swoją teorię skutków przeciążenia, celowo psując serwery Apex Legends. Zespół opracował wersję testową i stworzył 50 postaci, z których wszystkie strzelały jednocześnie z broni palnej i nieskończenie wykorzystywały umiejętności, aby przesunąć ładowanie efektów serwera do granic możliwości. Udało się — zespołowi udało się w końcu odtworzyć spadki dźwięku podobne do zgłoszonych błędów, ale to, jak to się stało z prawdziwymi graczami, wciąż pozostawało tajemnicą.

„To dało nam dowód, że FX zostanie odrzucony, ale tylko z całkowicie nierealistycznymi przypadkami testowymi. Zbadano różne aspekty wydajności naszego serwera, ale nie znaleziono niczego konkretnego”.

Respawn uważnie obserwował ten problem, gdy szalał sezon 16. W końcu zespół zauważył, że upuszczone raporty dźwiękowe zwykle pochodziły z gry na wysokim poziomie. To podsunęło im pomysł wdrożenia aktualizacji serwera, która pozwoli Respawn śledzić nowe wskaźniki w mniejszym podzbiorze meczów, co natychmiast doprowadziło do przełomu.

„Gdy aktualizacja serwera dobiegała końca, znaleźliśmy ją. Zidentyfikowano pojedynczą linię kodu jako podstawową przyczynę problemu. Nowa broń sezonu 16.

Tą bronią jest Nemezis, najnowszy energetyczny karabin szturmowy firmy Apex. Nemezis ma unikalną mechanikę, w której zadawanie obrażeń „ładuje” broń i sprawia, że ​​strzela ona szybciej (jak np wykazać (otwiera się w nowej karcie) autorstwa YouTubera Dazsa powyżej). Ten efekt ładowania jest reprezentowany wizualnie na pistolecie przez wyładowanie łukowe w lufie. Respawn mówi, że wiersz kodu mający na celu „zatrzymanie” tego efektu, gdy broń nie była naładowana ani schowana, w rzeczywistości powtarzał się w nieskończoność dla wszystkich graczy posiadających Nemezis w swoim ekwipunku.

„Oznacza to, że każdy gracz z nienaładowaną Nemezis tworzył efekt „cząsteczek zatrzymania” na serwerze w każdej klatce, a ten wiersz kodu był wywoływany nawet wtedy, gdy broń była schowana”.

Co zabawne, wyjaśnia to również, dlaczego spadki dźwięku zdarzały się częściej podczas gry na wysokim poziomie. „Wystarczyłoby 14 klientów z Nemezisem działającym w 180 fps, aby zaczęły spadać efekty”. Tym razem to najlepsi gracze na PC mieli niekorzyść.

Respawn mówi, że wyjaśnia to również, dlaczego jego wewnętrzne testy nie napotkały błędu.

„Konfiguracje użyte do testów mogły nie mieć wystarczającej liczby Nemezis w kaburze, miały rzadszą korelację z brakującymi efektami lub nie miały wystarczającej liczby klientów przy tej liczbie klatek na sekundę — coś, o czym powinniśmy pamiętać i ulepszyć do przyszłych testów”.

Łatka wprowadzona w zeszłym tygodniu w końcu zmiażdżyła błąd na dobre. I proszę bardzo — wścibski błąd dźwiękowy ze skomplikowaną przyczyną, który na dłuższą metę pomoże Respawnowi wykryć podobne błędy, zanim dotrą one do graczy. Respawn zakończył post z boku na temat testowania, przypominając graczom, że „minuta graczy grających w Apex jest odpowiednikiem 10 testerów grających w tę grę przez rok!”

Znak czasu:

Więcej z PC Gamer