Programista skrócił czas ładowania w GTA Online o prawie 70%

Wincenty Wawrzyniak
2021/03/04 12:30
1
0

Pewien programista znalazł sposób na skrócenie czasu ładowania w trybie sieciowym GTA V o prawie 70 procent – i wytłumaczył, jak to zrobił.

Od premiery Grand Theft Auto Online minęło już sporo czasu. Tryb wieloosobowy do gry Grand Theft Auto V nie może narzekać na brak zainteresowania ze strony graczy; Rockstar Games nieustannie go rozbudowuje oraz uzupełnia o nową zawartość. Spora część społeczności od dawna narzeka jednak na jeden konkretny problem: czasy ładowania. Pewnemu internaucie – użytkownikowi o pseudonimie T0ST – udało się jednak skrócić je o prawie 70 procent. Jakim cudem? Okazało się, że wystarczą niewielkie zmiany w kodzie gry, który, zdaniem użytkownika, jest po prostu wadliwy. Programista postanowił wyjaśnić, jak tego dokonał. W tym celu udostępnił szczegółowy post, który przeanalizował Will Judd z redakcji serwisu Eurogamer oraz zespołu Digital Foundry.Programista skrócił czas ładowania w GTA Online o prawie 70%

W pierwszej kolejności T0ST postanowił dokładnie zbadać problem. Używając swojego komputera z procesorem AMD FX-8350, kartą graficzną NVIDIA GeForce GTX 1070, 16 gigabajtami pamięci RAM oraz dyskiem SSD, ustalił, że załadowanie kampanii fabularnej trwa około minuty i dziesięciu sekund, zaś załadowanie sieciowego trybu zajmuje aż sześć minut. Następnie uruchomił GTA Online po raz kolejny, tylko z uruchomionym menadżerem zadań w tle – po minucie zużycie procesora wzrosło z 25 procent do ponad 60, a gra przy tym wszystkim wykorzystywała tylko jeden rdzeń z łącznie ośmiu dostępnych. Co więcej, praktycznie wszystkie inne podzespoły były wówczas bezczynne. T0ST wiedział już, że problem tkwi w kodzie produkcji.

Użytkownik ustalił, że cała wina leży po stronie pliku ważącego 10 megabajtów oraz rozszerzeniu .json. Tam znajdziemy listę wszystkich przedmiotów, które możemy kupić w grze, a jest ich łącznie około 63 tysiące. Problemem jest system, który przy wczytaniu pliku rozpoczyna jego analizę składniową, powtarzając to tyle razy, ile jest przedmiotów. Czyli, delikatnie rzecz ujmując, dużo. Po wykonaniu stosownych obliczeń T0ST ustalił, że w sumie system wykonuje prawie dwa miliardy akcji. Jeśli dodamy do tego fakt, że każdy z przedmiotów ma swój unikalny kod do identyfikacji (hash), efekty są podobne do tych, które uzyskamy po walnięciu głową w ścianę.

GramTV przedstawia:

Ostatecznie programista stworzył własny kod, nadpisując dwie konkretne funkcje gry – zredukował łączną liczbę analiz składniowych do jednej, a także wyłączył automatycznie sprawdzanie duplikowanych przedmiotów, co znacząco wydłużało cały proces. Eliminacja pierwszego problemu poskutkowała skróceniem czasu ładowania do 4,5 minuty, zaś po zastosowaniu obu rozwiązań GTA Online wczytało się w zaledwie 110 sekund. Warto też zaznaczyć, że T0ST udostępnił kod w serwisie GitHub. Nie zadziała to jednak na każdym sprzęcie – użytkownik przestrzega również, że po dodaniu kodu istnieje ryzyko zablokowania konta.

Przypomnijmy jeszcze na koniec, że Grand Theft Auto Online jest bezpłatnym dodatkiem multiplayer do gry Grand Theft Auto V, która zadebiutowała na rynku we wrześniu 2013 roku. Jeżeli chcecie być na bieżąco z wiadomościami dotyczącymi GTA Online, zapraszamy pod ten adres.

Komentarze
1
ruryk
Gramowicz
04/03/2021 16:07

Mając na celu, że przy produkcjikodu jest regaktoryzacja, optymalizacja i code review, skłaniam się do przypuszczeń, że był to raczej zamierzony zabieg aby w czasie ładowania, gracz mógł zobaczyć wszystkie reklamy