Blog

Napraw zacinanie się Minecrafta: eliminuj skoki opóźnień w generowaniu klatek

Minecraft stutter pochodzi z przerw w procesie zbierania śmieci i ładowania fragmentów, a nie z niskiego FPS. Zmniejsz obciążenie pamięci, wygładź ładowanie fragmentów i zaprzestaj nadmiernej alokacji pamięci RAM.

TRtrolPublished 6 min read

Co to jest Minecraft co tak naprawdę oznacza zająkanie?

Zająkanie to problem związany z czasem trwania klatek, a nie z liczbą klatek na sekundę. Twoja średnia liczba FPS może wynosić 300, a gra może zawieszać się na ułamek sekundy co kilka sekund. Licznik wygląda dobrze, ponieważ wygładza te skoki. To, co czujesz, to sam skok. Przyczyną tego są przerwy w działaniu garbage collectora i ładowanie fragmentów, a żaden z tych problemów nie zostanie rozwiązany przez zwiększanie liczby FPS.

Wyobraź sobie stałe 120 FPS obok 300 FPS, które spada do 20 na jedną klatkę, kiedy uruchamia się garbage collector. 120 FPS sprawia lepsze wrażenie. Twoje oczy śledzą najgorszą klatkę, a nie średnią. Całe zadanie polega więc na tym, aby najgorsza klatka była mniej zła, a kolejność naprawiania rzeczy ma znaczenie.

To, co czujeszTo, co się naprawdę dziejeCo to powoduje
Zawieszenie się co kilka sekundPrzerwa w działaniu garbage collectoraFerriteCore, ModernFix
Zatrzymanie podczas wchodzenia w nowy terenGenerowanie fragmentów w głównym wątkuC2ME, Lithium
Zająkanie, które pogorszyło się po zwiększeniu pamięci RAMZbyt duża sterta, dłuższe cykle garbage collectoraZmniejsz alokację
Losowe, krótkie zatrzymaniaAplikacje działające w tle lub zmęczony dyskZamknij aplikacje, sprawdź dysk

Jak powstrzymać zająkanie spowodowane garbage collection?

Zmniejsz zużycie pamięci przede wszystkim. Większość mikrozacięć to przerwy spowodowane przez garbage collector Javy, który na chwilę wstrzymuje działanie gry, aby odzyskać pamięć. Zmniejszenie ilości pamięci, którą gra wykorzystuje, sprawi, że te przerwy będą zarówno krótsze, jak i rzadsze. Dwie modyfikacje robią większość pracy. FerriteCore deduplikuje i kompresuje dane, które Minecraft przechowuje w pamięci, a ModernFix dodatkowo optymalizuje alokacje i eliminuje niepotrzebne zużycie pamięci podczas ładowania.

Uzasadnienie jest proste. Collector musi zatrzymać grę tylko wtedy, gdy jest wystarczająco dużo śmieci do posprzątania. Daj mu mniej do zebrania, a on będzie cię przerywał rzadziej. FerriteCore samodzielnie potrafi znacząco zmniejszyć zużycie pamięci, dlatego zajmuje pierwsze miejsce w każdej poważnej poprawce wydajności.

RdzeńFerrytowy

Kompresuje dane przechowywane przez Minecraft w pamięci RAM. Mniejszy ślad pamięci oznacza krótsze i rzadsze przerwy GC.

ModernFix

Optymalizuje przydziały zasobów i redukuje nadmiar czasu ładowania. Czysto nakłada się na FerriteCore.

C2ME

Przenosi generowanie fragmentów na więcej wątków procesora, aby nowe tereny przestały się zacinać.

Lit

Sprawia, że symulacja świata jest tańsza, dzięki czemu gra działa płynnie podczas poruszania się i walki.

Jak wygładzić zacięcia związane z ładowaniem fragmentów?

Szarpnięcie, które czujesz, gdy pędzasz w nowe tereny, jest spowodowane tym, że generowanie fragmentów blokuje główny wątek. C2ME przenosi te zadania na więcej rdzeni Twojego procesora, dzięki czemu świat buduje się przed Tobą, zamiast gonić Cię z tyłu. Połącz to z Lithium, które obniża koszt na tick dla encji, sztucznej inteligencji mobów i fizyki, dzięki czemu symulacja nigdy nie zostaje w tyle.

Te dwa rozwiązania dzielą pracę. C2ME zajmuje się nowymi fragmentami. Lithium utrzymuje istniejący świat w niskich kosztach działania. Razem zamienia sprint w otwartym świecie z zatrzymywano-ruszaj z pełzania w coś, co utrzymuje tempo. To tutaj najbardziej zauważysz różnicę, podczas szybkiej rozgrywki. Jeśli zależy Ci na płynnym ruchu pod presją, zobacz jak uzyskać stabilne FPS do PvP.

Dlaczego więcej RAM-u pogarsza szarpanie?

Ponieważ większy stertownik zajmuje więcej czasu na czyszczenie. Kiedy przydzielisz Javie więcej pamięci, każde czyszczenie śmieci obejmuje większy obszar, więc przerwa, która zamraża Twoją klatkę, staje się dłuższa, a nie krótsza. Ludzie zwiększają przydział oczekując płynności i otrzymują efekt przeciwny. Jeśli szarpanie się zaczęło lub pogorszyło bezpośrednio po zwiększeniu ilości RAM-u, znalazłeś winowajcę.

Dlatego też, instalowanie mnóstwa modyfikacji bez wcześniejszego zwolnienia pamięci to pułapka. Zainstaluj FerriteCore i ModernFix zanim dotkniesz suwaka alokacji. Jeśli problemem jest pamięć RAM, najlepsze modyfikacje redukujące zużycie pamięci RAM zagłębiają się w ten temat.

Jaka jest właściwa kolejność naprawy tego problemu?

  1. Zainstaluj parę pamięci

    Dodaj FerriteCore i ModernFix na Fabric. To zmniejsza stertę i tam znika większość zacięć.

  2. Dodaj parę kawałka i haczyka

    Zainstaluj C2ME i Lithium. Nowy teren zapobiega zacinaniu się i symulacja pozostaje tania.

  3. Dopasuj pamięć RAM do swoich potrzeb

    Zmniejsz alokację do 4-6 GB, jeśli jest wyższa. Przetestuj w ruchliwym obszarze, a nie na świeżo utworzonym, płaskim świecie.

  4. Załóż czapkę i posprzątaj

    Ustaw limit klatek nieco poniżej częstotliwości odświeżania lub włącz VSync i zamknij działające w tle aplikacje obciążające procesor.

Szybka lista kontrolna przed obwinianiem moderatorów

Kilka przyczyn niezwiązanych z moderacją może się tu kryć, warto je wykluczyć zanim cokolwiek zainstalujesz ponownie.

  • Ograniczenie liczby klatek na sekundę lub VSync. Stabilne tempo jest lepsze niż szczytowe, nawet jeśli najwyższa wartość spadnie.
  • Aplikacje działające w tle. Przeglądarki, klient głosowy i zadania aktualizacji kradną zasoby procesora i powodują zacięcia w trakcie gry.
  • Twój dysk. Pełny lub uszkodzony dysk powoduje zacięcia podczas odczytu fragmentów. Zwolnij miejsce i sprawdź stan dysku.
  • Shadery. Rozbudowany pakiet shaderów generuje dodatkowy koszt związany z czasem renderowania klatki. Wyłącz go, aby wyizolować przyczynę.

To właśnie tutaj opłaca się ręczne dostrojenie konfiguracji. Terminus wysyła swój stos wydajności już podłączony i z wstępnie ustawionym profilem startowym, więc omijają Państwo labirynt flag JVM i po prostu grają.

FAQ

Pobierz Terminus

Performance stack pre-tuned. No JVM flags to memorize.