Ulepszenia wydajności i logiki dla AI modów
0 polubień
32 pobrań
Uwaga[1]: Jeśli masz problemy z wydajnością, które nie zostały uwzględnione, śmiało zgłoś zapytanie.
Uwaga[2]: Nie oczekuje się, że ten mod we wszystkich przypadkach poprawi wydajność. Upewnij się, że przetestowałeś wyniki, aby sprawdzić, czy go potrzebujesz.
Uproszczony mod modyfikacji SI skoncentrowany na wydajności i niskopoziomowych zmianach w SI w grze. Wypełnia luki pozostawione przez podstawową wersję gry i ulepsza ją dla ekosystemu modów. Radzi sobie z typowymi problemami, takimi jak zbyt wiele zwierząt, spadki wydajności od rojów zombie oraz prostymi zadaniami pomijanymi przez większe mody optymalizacyjne.
AI Improvements powstał z potrzeby rozwiązania problemów z wydajnością serwerów w mocno modyfikowanych paczkach. TPS serwera jest pochłaniany przez mody walczące o zasoby. Użytkownicy często atakują ten problem, przycinając mody i ograniczając zawartość/funkcjonalność. Zamiast walczyć z modami, zacząłem przyglądać się samemu Minecraftowi. Skupiłem się na tym, jak został zaprojektowany do działania i jak przyczynia się do problemów z wydajnością.
Odkryłem, że wraz ze wzrostem populacji serwera rośnie liczba encji i wymagania dotyczące obciążenia geograficznego. Pierwsza myśl to ograniczenie współczynników spawnu i całkowitej liczby encji. Jednak testy wykazały minimalne korzyści, zwłaszcza biorąc pod uwagę, jak szybko użytkownicy narzekają na farmy. Ostatecznie, po kilku innych bezowocnych rozwiązaniach konfiguracyjnych, przyjrzałem się funkcjonalności SI. Szybko stało się jasne, jak słabo zoptymalizowane są SI w grze. Po przeanalizowaniu setek zrzutów profilerów i testowaniu teorii, doszliśmy do AI Improvements. Pierwszym ulepszeniem była optymalizacja matematyki używanej przez SI. Efekty były ogromne... zwłaszcza w przypadku farm graczy :D
Głównym celem tego moda zawsze będzie przede wszystkim wydajność, a na drugim miejscu niskopoziomowe dostosowania. Ma to na celu utrzymanie moda w małym rozmiarze i łatwość zarządzania przez cały okres istnienia Minecrafta. Jeśli chodzi o inne funkcje, możemy wydać dodatkowe mody, ale zalecamy niektóre ze wspaniałych modów już obecnych w społeczności.
Zainstalowałem, ale nie zauważyłem dużej poprawy, jak obiecywano?
Nowsze wersje MC implementują poprawki dla SI. W ostatnich kilku wersjach zaimplementowano poprawkę obrotów oraz inne poprawki. Dlatego wpływ tego moda jest znacznie mniejszy niż w starszych wersjach.
Czy można zainstalować tylko na serwerze?
Tak, mod jest napisany tak, aby działał bez instalacji po stronie klienta.
Czy można zainstalować tylko po stronie klienta?
Tak, choć może to nie wpłynąć znacząco na poprawę fps.
Gdzie jest konfiguracja?
1.12.2-: '.minecraft/config/bbm/AI_Improvements.cfg'
1.14+: '.minecraft/config/aiimprovements-common.toml'
Co się stanie, jeśli wyłączę zamiennik EntityLookHelper?
Nie zobaczysz dużej poprawy w kodzie SI. Jeśli jednak włączysz inne wyłączone opcje konfiguracyjne, powinno być w porządku.
Jak ten mod działa, aby poprawić wydajność?
Zależy od funkcji i wersji Minecrafta. Większość poprawy wydajności pochodzi z zapamiętywania (caching) intensywnie obliczanych wartości. Skutkuje to zmniejszeniem czasu procesora kosztem pomijalnie małej ilości RAM. Szczegóły znajdziesz na liście funkcji...
Konfiguracja wyłączająca AI Watch Closest Entity (obserwowanie najbliższej encji przez SI)
Domyślnie opcja jest ustawiona na false i nic nie robi. Po zmianie na true usunie segment SI o nazwie EntityAIWatchClosest. Ten segment SI odpowiada za kodowanie SI tak, aby obracały głowę w stronę pobliskiej encji. Wizualnie może to powodować kilka dziwnych efektów. Jednak dla procesora oznacza to uwolnienie sporego obciążenia powodowanego przez encje.
Konfiguracja wyłączająca losowe rozglądanie się SI - domyślnie wyłączona
Domyślnie opcja jest ustawiona na false i nic nie robi. Ustawienie jej na true spowoduje, że encje nie będą już używać kodu SI do 'bezczynnego patrzenia'. Może to poprawić wydajność na serwerach z dużą populacją, ponieważ prawie każda encja na mapie używa tego, gdy nie robi nic ważnego. Wizualnie może to powodować, że głowa encji czasem się nie obraca, ale głównie pozostaje niezauważone.
Konfiguracja zastępująca EntityLookHelper bardziej wydajną wersją - domyślnie włączona
To główna funkcja moda, która może znacznie poprawić wydajność procesora kosztem niewielkiej ilości RAM. Działa to w ten sposób, że kod helpera do patrzenia w MC jest zastępowany niestandardową wersją. Niestandardowa wersja przechowuje pewne dane, które przyspieszają obliczanie kąta dla danej lokalizacji. Dzięki testom z VisualVM wyniki wykazały 50% do 80% spadek użycia procesora przez kod SI. Dla serwera ze stałą liczbą 25 graczy przełożyło się to na wzrost od 5 do 7 TPS.
Udało się!