- Drogi Graczu:
v1.18.2-rc.1 i v1.18.2-rc.2 to niestabilne wersje gry, które można teraz pobrać za pośrednictwem menedżera konta (sekcja „Inne dodatki”). Wpływ dużej liczby aktywnych graczy sprawił, że serwery w wersji 1.18 pracują pod dużym obciążeniem. W tej aktualizacji próbowano zredukować to obciążenie, stosując bardziej optymalne algorytmy i opcjonalnie wykorzystując więcej rdzeni CPU. Zaleca się właścicielom serwerów, którzy borykają się z niskimi wskaźnikami tików, wypróbowanie tej wersji i dostosowanie ustawienia „MaxPhysicsThreads” w pliku servermagicnumbers.json. Sugerowany zakres ustawienia to od 2 do 8, w zależności od liczby dostępnych wątków CPU. Dobrą wiadomością jest to, że gracze korzystający z starszej wersji gry 1.18.1 powinni być w stanie normalnie łączyć się i grać na serwerach z wersją 1.18.2-rc.1 lub 1.18.2-rc.2, i nie zgłoszono żadnych problemów z tą konfiguracją. Jeśli jednak doświadczysz jakiejkolwiek nietypowej fizyki lub generowania obiektów, zachęcamy do przekazywania informacji zwrotnych, aby pomóc deweloperom dalszo usprawniać tę aktualizację.
[Edycja:] Dodano także wersję rc.2, aby rozwiązać wiele problemów.
Oto zmiany wprowadzone w aktualizacji gry v1.18.2-rc.2:
- Modyfikacje:
- Skala kształtu terenu jest teraz konfigurowalnym parametrem na ekranie dostosowania świata.
- Zmiany domyślnych wartości w stylu gry „Standard Survival”: Zredukowano wskaźnik wstrząsów (z 40% na 30%) oraz zredukowano skalę kształtu terenu (z 120% na 100%). Te zmiany wpłyną tylko na nowo tworzone światy, a istniejące światy nie zostaną dotknięte.
- Na systemach Linux została włączona opcja mesa_glthread tam, gdzie jest to obsługiwane, zwłaszcza na układach AMD/Intel, za pośrednictwem pliku run.sh.
- Wprowadzono uporządkowane zamykanie serwera i wyjście z gry w prawie wszystkich sytuacjach. To rozwiązanie ma potencjalnie poprawić problem z „ciemnymi chunkami”.
- Naprawiono rotację obiektów przechowywalnych na ziemi podczas ich obracania za pomocą narzędzia WorldEdit.
- Rozwiązano rzadki problem związany z crashem związanym z mapami skarbów.
- Przepis na narzędzia typu „tongs” teraz wykorzystuje linę zamiast sznurka.
- Metalowe tabliczki teraz są materiałem metalowym i nie mogą płonąć.
- Tusz i pióro można teraz przechowywać na ziemi.
- Poprawiono wskazówki w grze dotyczące zrozumienia wyników prospekcji.
- Zasłona morska teraz bardziej naturalnie wygina się i kołysze.
- Ze schematów do wydobycia skrzynki, kratka i płyty metalowe zostały usunięte, aby uniknąć omijania wieku.
- Świeczki umieszczone pod wodą (przez graczy lub przez generację świata) zostaną zgaszone.
- W jeziorach o głębokości 2 lub większej, woda może teraz płynąć bokiem, podobnie jak w 1-głębokich stawach, jeśli brzeg zostanie usunięty.
- Dziury w wodzie poniżej powierzchni jeziora mogą teraz normalnie się zagoić, jeśli wokół jest wystarczająco dużo źródeł wody.
- Dodano ponownie tekst dotyczący klasy Łowcy.
- Jeśli wejście do Archiwum Rezonansów byłoby poniżej poziomu morza, zostanie podniesione do poziomu morza.
- Dodano dodatkową kontrolę uprzywilejowaną „ignoremaxclients”, która może być dodana, aby umożliwić uprzywilejowanym graczom (np. personelowi) dołączanie do serwerów wieloosobowych pomimo ograniczenia maksymalnej liczby klientów.
- W przypadku poleceń dostępne są bardziej informatywne komunikaty o błędach, gdy wprowadzona zostanie nieprawidłowa podkomenda w poleceniu, które można również używać bez podkomend, takim jak /time.
- Wprowadzono kilka modyfikacji wydajności, aby poprawić różne aspekty gry.
Należy pamiętać, że jest to wersja niestabilna, więc mogą występować nadal problemy lub błędy. Upewnij się, że raportujesz wszelkie problemy, z jakimi się spotykasz podczas rozgrywki.
W aktualizacji gry v1.18.2-rc.2 wprowadzono wsparcie dla wielowątkowości w zakresie fizyki jednostek. To eksperymentalne rozwiązanie, dostępne tylko po stronie serwera. Można włączyć od 2 do 8 wątków fizyki ogółem (włączając wątek główny). Domyślnie wielowątkowość jest wyłączona (ustawione na 1). Można ją włączyć, ustawiając wartość „MaxPhysicsThreads” w pliku servermagicnumbers.json na 2 lub wyższą (gra zignoruje ustawienia wyższe niż 8).
- Ta zmiana ma na celu poprawę wydajności gry, szczególnie w przypadku serwerów. Dzięki wielowątkowemu podejściu, serwer może lepiej radzić sobie z obliczeniami fizyki jednostek i przyspieszyć różne operacje z nią związane. Oto główne korzyści wynikające z tej zmiany:
- Znaczące usprawnienie wydajności generowania jednostek na serwerze.
- Skrócenie czasu wykonywania cyklu jednostki (entity tick) dla zadań typu „fleeentity,” „seekentity” i „stayclosetoentity” zarówno po stronie serwera, jak i klienta.
- Poprawa wydajności fizyki jednostek w zakresie wykrywania odpychania i kolizji z blokami (ang. knockback check and trigger-insideblock).
- Ogólnie niewielka poprawa wydajności serwera wieloosobowego w przypadku wysyłania aktualizacji jednostek blokowych do wielu klientów.
- Ogólnie niewielka poprawa wydajności po stronie serwera i klienta podczas tworzenia nowych jednostek.
Dodatkowo, w przypadku aktualizacji bloków trawy, dokonano niewielkich usprawnień, które polegają na zastąpieniu operacji SetBlock operacją ExchangeBlock.
Warto zaznaczyć, że wielowątkowość może poprawić wydajność gry na serwerach z wieloma graczami lub w środowiskach, w których obciążenie serwera jest znaczne. To jednak eksperymentalna funkcja, więc warto monitorować, jak działa na konkretnej konfiguracji serwera i dostosować ustawienia zgodnie z potrzebami.
- W aktualizacji gry v1.18.2-rc.2 wprowadzono wiele poprawek i naprawiono różne problemy. Oto najważniejsze zmiany:
- Naprawiono problemy z belek wspierających, które wcześniej mogły usuwać istniejące bloki i znikać z pola widzenia, gdy ich blok podstawowy znajdował się za graczem.
- Rozwiązano problem z piaskiem i żwirem opadającym, gdy umieszczano ruiny i inne schematy, co prowadziło do efektu opadania piasku i wydawania dźwięku upadku przy wchodzeniu na nowe obszary świata.
- Poprawiono rotacje różnych bloków, takich jak skrzynie, kowadła, zsyp, gabloty, skrzynie z etykietami, drzwi i chropowate bloki, kiedy były używane w schematach i narzędziu WorldEdit. To obejmuje także bloki używane w karawanach handlowych, ponieważ karawany mogły być losowo obracane podczas generowania świata.
- Poprawiono zachowanie gracza pod wodą. Teraz gracz będzie się dusić, jeśli w jego przestrzeni występują latarnie lub drabiny.
- Poprawiono mechanizmy zwalczania upicia lub niskiej stabilności tekstów w czacie.
- Naprawiono problem z nieodtwarzaniem ścieżki dźwiękowej „The Invention.”
- Usunięto nieznane bloki z niektórych stron w podręczniku, a także z niektórych skrzyń w Archiwach Rezonansu.
- Poprawiono różne problemy z serwerem, w tym wyjątki serwera, które wywalały graczy, oraz niewyświetlanie wyników komendy /help we.
- Naprawiono błędy związane z seraficzną odzieżą, niewykorzystywanymi ziołami i innymi drobnymi problemami.
- Wprowadzono także drobne modyfikacje interfejsu API, w tym opcjonalną metodę „AfterInitialize()” dla zachowań (behaviors) i zadań sztucznej inteligencji (AITasks), która może być wykorzystywana do uzyskiwania informacji od innych zachowań dla tej samej jednostki po tym, jak wszystkie zachowania są zainicjowane.
- Naprawiono literówkę w metodzie MultiBlock.OnBlockInteractStop(), która wcześniej wywoływała niewłaściwe metody zamiast właściwych.
To tylko kilka z głównych zmian w tej aktualizacji. Wprowadzone zostały również inne mniejsze poprawki i usprawnienia, aby gra działała bardziej płynnie i stabilnie.
- Oto techniczne informacje dla modderów, którzy pracują z API gry, zwłaszcza dotyczące fizyki jednostek i wielowątkowości:
- Fizyka jednostek, w tym aktualizacje flag takich jak entity.OnGround i .Swimming, teraz zachodzi po tym, jak wszystkie inne zachowania jednostek zostaną przetworzone, ale przed kolejnym cyklem fizyki jednostek. Ta fizyka może być przetwarzana wielowątkowo, co oznacza, że wiele wątków może równocześnie przetwarzać fizykę jednostek w określonym momencie ogólnego cyklu gry. Modderzy muszą zagwarantować, że ich implementacje metod, takich jak Entity.OnFallToGround(), Entity.OnCollideWithLiquid() i Entity.OnExitedLiquid(), są globalnie bezpieczne dla wątków. Oznacza to, że zmiany w polach lub właściwościach samej jednostki są dozwolone (dla jednej jednostki te metody nie mogą być wywoływane jednocześnie na różnych wątkach), i inne zachowania jednostek nie będą działać w trakcie aktualizacji fizyki.
- Jeśli kod twojego moda zastępuje lub rozszerza EntityBehaviorControlledPhysics.OnGameTick() lub .OnPhysicsTick(), może on nie działać poprawnie z nowym systemem wielowątkowym. W takich przypadkach powinieneś skontaktować się z deweloperami gry w celu uzyskania konkretnej pomocy.
- Profiler ramki serwera (FrameProfiler) może teraz mieć wartość null na wątkach, które nie są wątkiem głównym, w tym na wątkach utworzonych przez mod lub używających wielowątkowości. Ta zmiana jest zamierzona, i powinieneś unikać zapisywania do FrameProfiler poza wątkiem głównym. Jeśli masz wątpliwości, w swoim kodzie możesz używać warunkowych sprawdzeń, np. ServerMain.FrameProfiler?.Mark() lub podobnych konstrukcji, aby uniknąć wyjątków związanych z wartością null.
Te techniczne informacje mają na celu zapewnienie stabilności i wydajności modów w środowisku wielowątkowym oraz minimalizację potencjalnych problemów z wspólnymi zasobami i narzędziami profilującymi.