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.
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 czujesz | To, co się naprawdę dzieje | Co to powoduje |
|---|---|---|
| Zawieszenie się co kilka sekund | Przerwa w działaniu garbage collectora | FerriteCore, ModernFix |
| Zatrzymanie podczas wchodzenia w nowy teren | Generowanie fragmentów w głównym wątku | C2ME, Lithium |
| Zająkanie, które pogorszyło się po zwiększeniu pamięci RAM | Zbyt duża sterta, dłuższe cykle garbage collectora | Zmniejsz alokację |
| Losowe, krótkie zatrzymania | Aplikacje działające w tle lub zmęczony dysk | Zamknij 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?
Zainstaluj parę pamięci
Dodaj FerriteCore i ModernFix na Fabric. To zmniejsza stertę i tam znika większość zacięć.
Dodaj parę kawałka i haczyka
Zainstaluj C2ME i Lithium. Nowy teren zapobiega zacinaniu się i symulacja pozostaje tania.
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.
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
Wysoka średnia liczba FPS ukrywa problem. Pojedyncza przerwa w procesie garbage collection lub zawieszenie ładowania fragmentów na ułamek sekundy zamraża klatkę, bez względu na to, jak szybko renderowane są pozostałe klatki. Napraw pamięć i ładowanie fragmentów, a nie licznik klatek.
Rdzeń ferrytowy dla strony pamięci oraz C2ME dla strony ładowania fragmentów. Lit umożliwia obie strony, obniżając koszty symulacji świata. Zainstaluj wszystkie trzy razem, jeśli to możliwe.
Zazwyczaj jest to odwrotnie. Większa sterta danych powoduje, że każde przejście podczas zbierania śmieci ma więcej do przeskanowania, więc przerwy się wydłużają. Jeśli zająknięcia pogorszyły się po zwiększeniu pamięci RAM, zmniejsz ją do 4-6 GB.
Często tak. Stałe tempo klatek wydaje się płynniejsze niż wysoka liczba, która się nagle wzrasta. Ustaw limit o kilka klatek poniżej częstotliwości odświeżania lub włącz VSync, a wygrają konsekwencja.
Pobierz Terminus
Performance stack pre-tuned. No JVM flags to memorize.