Seria gier strategicznych Total War od dwóch dekad przyciąga graczy wizją monumentalnych bitew i rozbudowanej mapy kampanii. Mimo wielkiej popularności, kolejne odsłony cyklu Creative Assembly prześladował jeden grzech główny: słaba optymalizacja. Nawet na nowoczesnych komputerach gracze skarżyli się na długie tury, spadki liczby klatek na sekundę czy nierównomierne obciążenie procesora. Gdy studio koncentruje się na premierach nowych części, ktoś z fanów postanowił samodzielnie uporządkować kod klasyków.
Użytkownik działający w sieci jako SerBenDover w kilka tygodni zyskał reputację człowieka, który naprawia to, z czym oficjalni twórcy nie potrafili sobie poradzić od lat. Korzystając z narzędzi AI oraz własnej wiedzy programistycznej, przygotował modyfikacje zwiększające wydajność trzech odsłon cyklu i zapowiedział dalsze prace.
Łowca klatek kontra 26 lat dziedzictwa strategii
Total War powstało na przełomie wieków, debiutując w 2000 r. pierwszym Shogunem i stopniowo przenosząc nas od feudalnej Japonii przez Republikę Rzymską aż po fantastyczny świat Warhammera. Kolejne części wspierały coraz bardziej złożony silnik Warscape, lecz to właśnie tutaj tkwiły fundamenty problemu. Architektura stawiająca na pojedynczy główny wątek CPU sprawdzała się, gdy jednordzeniowe procesory dominowały rynek; wraz z nadejściem wielordzeniowych układów ograniczenie to stawało się coraz boleśniej odczuwalne. Niewykorzystane zasoby sprzętowe przekładały się na długie oczekiwanie pomiędzy turami AI, niestabilne FPS czy zatory przy dużych armiach.
Wydajnościowe bolączki nie dotyczyły wyłącznie starszych gier. Nawet niedawne części serii potrafią odciążać kartę graficzną, obciążając za to pojedynczy rdzeń procesora do granic możliwości. Oficjalne poprawki zwykle rozwiązywały tylko najpilniejsze błędy lub wprowadzały kompromisy graficzne, nie dotykając samej architektury silnika.
Społecznościowa naprawa — kim jest SerBenDover?
Autor poprawki przedstawia się jedynie nickiem, ale jego podejście zdradza profesjonalne zaplecze inżynierskie. Zaczął od gry Total War: Attila, której premiera w 2015 r. przyniosła największe, historyczne obciążenie procesora w całej serii. Zamiast zawężać się do ustawień graficznych, SerBenDover rozebrał pliki binarne, analizując funkcje odpowiedzialne za aktualizację logiki sztucznej inteligencji i renderowanie. W pracy wspierał się modelem językowym, który pomagał identyfikować nieefektywne bloki kodu, wyjaśniając ich działanie i proponując alternatywy.
Kiedy odkrył, że wątki pomocnicze częściej na siebie czekają, niż równolegle wykonują obliczenia, przebudował kolejkowanie zadań tak, by mnogie rdzenie pracowały równolegle. Modyfikację opublikował w formie nakładki DLL dołączanej w katalogu gry; instalacja sprowadza się do skopiowania plików i aktywacji w opcjach startowych.
Jak działa chirurgia silnika: od wątków CPU po znikające lagi
W Total War: Attila i Thrones of Britannia kluczowy problem stanowiły blokady mutexów: wątki renderujące, AI oraz symulacji ekonomicznej konkurowały o jeden globalny zasób, przez co większość czasu spędzały w stanie oczekiwania. SerBenDover zastąpił je zestawem odrębnych kolejek z priorytetem, co zredukowało wzajemne blokowanie i zwiększyło wykorzystanie wielu rdzeni z 30% do ponad 80% w testach społeczności.
Rome II wymagało innego podejścia. Tu silnik marnował moc obliczeniową na przeliczenia statystyk jednostek w dwóch miejscach jednocześnie, zdublowanych po błędach w późniejszych patchach. Usunięcie jednego z modułów zredukowało o 15–20% obciążenie pojedynczego rdzenia, stabilizując liczbę klatek podczas wielkich bitew. Według nieoficjalnych pomiarów testerów czas oczekiwania na turę AI spadł średnio z 90 do 50 sekund przy kampanii obejmującej wszystkie frakcje.
Trzy gry już przyśpieszyły, kolejne czekają w kolejce
Na liście naprawionych tytułów figurują obecnie: Total War: Attila, Total War Saga: Thrones of Britannia oraz Total War: Rome II. Gracze zgodnie raportują wzrost płynności nawet o 30% i skrócenie tur w kampanii o połowę. W komentarzach na forach można przeczytać entuzjastyczne: „wreszcie 60 FPS przy oblężeniu Rzymu” lub „ta łatka uratowała mi całą kampanię”. Pojawiają się także prośby o wsparcie nowszych odsłon: „Zrób to samo z Troy i Pharaoh”, „Empire i Napoleon proszą się o operację”.
Tempo prac zadziwia. Od pierwszej wersji poprawki do wdrożenia obsługi kolejnych dwóch gier upłynęło ledwie kilka dni. Autor zdradził, że przygotowuje już narzędzia pozwalające półautomatycznie przenosić zmiany między projektami korzystającymi z silnika Warscape. Jeśli plan się powiedzie, jeszcze w tym roku społeczność może doczekać się odświeżonych, szybszych kampanii w całym panteonie historycznych Total War.