Devblog 122

Rust house

W tym tygodniu wprowadziliśmy naprawdę porządne poprawki wydajności, więc mamy nadzieję, że wszyscy je zauważycie. Dajcie nam znać! Dodatkowo, spojrzenie na Tunele Wojskowe i ‘nową’ Latarnię, fajne screenshoty z nadchodzącej aktualizacji grafiki (powyżej), i wiele więcej.

 

 

 

Wydajność CPU – Ukryci Gracze Maurino Berry

No, z tym musiałem się nieźle postarać! Cały czas pytałem siebie, ‘Dlaczego moje FPSy są wysokie, gdy wchodzę na pusty serwer, a gdy wchodzę na mocno zaludniony serwer, to spadają do 30?’ Zakładałem, że dużo ludzi to dużo budowania i więcej rzeczy do zrenderowania, co powodowało niższe FPSy. Byłem w błędzie. Zobaczcie:

Rust landscape

Widzicie te wszystkie czarne znaczki? To inni gracze. Albo żyją i śpią, albo Myślą, Renderują się, Skórują się i robią mnóstwo niepotrzebnych rzeczy na moim komputerze, mimo że nie widzę ich i nie mogę przeprowadzać z nimi interakcji. Gracze są najbardziej obciążającym elementem gry dla CPU, wystarczy 10, żeby zauważyć spadki wydajności. Pomyślałem sobie, ‘Co jeśli spróbujemy sprawdzić, czy gracz byłby dla nas widoczny, i jeśli nie, to wyłączymy go?’ Co rozpoczęło się jako test, skończyło się jako zadziwiające i imponujące polepszenie wydajności. Tworzę promień pomiędzy graczami i lokalną kamerą, i jeśli nie widzicie gracza, to wyłącza się on. Doprowadziło to do znaczących ulepszeń wydajności dla większości ludzi, z którymi rozmawiałem, przy czym średnie ulepszenie wynosi 20-30%!

Oto porównanie przed i po (zwróćcie uwagę na licznik FPS/MS na dole).

Przed

Rust landscape

Po

Rust landscape

Musiałem zająć się kilkoma sprawami, żeby rozwiązać problemy dotyczące graczy, którzy pojawiali się i znikali podczas walk, ale na ten moment działa to tak:

Jeśli gracz śpi i jest dalej niż playercull.maxSleeperDist, zostaje wyłączony
Jeśli gracz żyje i jest dalej niż playercull.maxPlayerDist, zostaje wyłączony
Jeśli gracze jest bliżej niż playercull.minCulldist, jest włączony
Jeśli celujemy w kierunku innego gracza, jest włączony
Jeśli inny gracz celuje w naszym kierunku, jest włączony
Jeśli gracz jest za nami, zostaje wyłączony

Jeśli żaden z tych przypadków nie występuje:

Tworzymy linię pomiędzy graczem a nami z wielu punktów jego ciała, jeśli jakakolwiek część jego ciała może nas zobaczyć, zostaje on włączony na co najmniej 2 sekundy.

Istnieje lista convarów, które mogą pomóc w konfiguracji Cullingu Graczy jeśli istnieje taka potrzeba, ale domyślne ustawienia powinny być wystarczające. Wpiszcie “find playercull” w konsoli (F1) żeby zobaczyć ustawienia konfiguracyjne. Mają tekst pomocniczy, żeby oznajmić do czego służą.

Jeśli, z jakiegokolwiek powodu będziecie mieli niższe FPSy, zawsze możecie zdezaktywować player culling wpisując “playercull.enabled false” w konsoli.

Mam nadzieję, że każdy zauważy ulepszenie wydajności razem z tą optymalizacją. Zauważycie to szczególnie w wysoko zaludnionych miejscach, albo na przykład po czystce, gdy większość graczy jest na plaży.

Wydajność CPU – Strzelanie Maurino Berry

Znalazłem poważny powód lagów podczas strzelania, który powodował, że niektórzy ludzie doświadczali ‘mikrozacięć’. W zasadzie, za każdym razem, gdy ubranie gracza się zmieniało, wysyłane zostawały o tym informacje do innych graczy, których klient musiał na nowo zbudować model danego gracza. Problemem z tym było to, że przebudowanie następowało niezależnie od tego, jak ubranie gracza się zmieniło. Pamiętacie jak dodaliśmy stan do pancerza? Zmniejszanie stanu z powodu otrzymywania obrażeń liczy się jako zmiana, co znaczy, że cały model gracza był przebudowywany za każdym razem, gdy trafiło się kogoś z pancerzem, co zatrzymywało klienta na ułamek sekundy. Zmieniłem to, od teraz porównywany jest ubiór przed i po i jest zmieniany tylko, gdy naprawdę został zmieniony. Mimo, że może to być trudniejsze do zauważenia, ten lag zdarzał się też podczas zbierania i zadawania obrażeń zwłokom graczy, to też zostało już naprawione.

Wydajność CPU – Widoczni Gracze Diogo Teixeira

Jak już wiecie, nasza wydajność CPU była bardzo słaba od już bardzo dawna. W tym tygodniu, Helk i ja dotarliśmy do jednego z największych zatorów; modeli graczy. Na mocno zaludnionych serwerach – selekcja LOD, animacje, maszyny stanu, skórowanie – samo to kosztowało nas do 10 ms (!!) czasu CPU. Zasadniczo byliśmy przywiązani do CPU i posiadanie mocnej karty graficznej nic nie dawało.

Helk i ja byliśmy odpowiedzialni za player culling – więcej detali w tym devblogu – podczas gdy ja zająłem się optymalizacja graczy, którzy byli widoczni. Jak na razie, zidentyfikowałem i wyeliminowałem ważne źródło, które było na szczęście możliwe do wyeliminowania korzystając z kilu trików:

Rust CPU benchmark

Pomiędzy zmianami Helka i moimi, wprowadziliśmy poważne ulepszenia wydajności i w końcu na nowo jesteśmy przywiązani do GPU, co jest bardzo dobrą rzeczą, ponieważ grafika skaluje się bardzo dobrze w jakości i wydajności.

Buff Dwururki Maurino Berry

Pograłem sobie z Dwururką i uważam, że nie jest na tyle silna na ile powinna, więc zwiększyłem jej mnożnik obrażeń z 0.75 do 1.0. To znaczy, że zadaje tyle samo obrażeń co strzelba z rury wodnej, ale zwiększyłem rozrzut, więc jest mniej celna – to znaczy, że jej zasięg efektywny jest mniejszy – ale zmniejszyłem też wskaźnik ponownego strzału do 0.5 zamiast 1.0, co znaczy, że możecie wystrzelić oba naboje szybciej. Myślę, że jest to dobra i zbalansowana zmiana.

Zmiany w Sygnale Zaopatrzeniowym Maurino Berry

Ludzie mogli rzucić sygnał zaopatrzeniowy i być pewnym na 100%, że zrzut zaopatrzenia wyląduje idealnie na markerze. Ludzie robili to, żeby upewnić się, że zrzut zaopatrzenia wyląduje perfekcyjnie na dachu ich wieży o powierzchni 1×1 bez ryzyka, że ktokolwiek inny go przechwyci. Zmieniłem to, od teraz trzeba zrobić poprawkę na +/- 20 metrów od markera, zrzut zaopatrzenia nadal będzie lądował bardzo blisko sygnału, ale nie będzie to całkowicie przewidywalne. Zmniejszyłem też szansę na znalezienie sygnałów zaopatrzeniowych w skrzynkach, itp.

Loot ze Zrzutów Zaopatrzenia Maurino Berry

Kontynuując moja pracę z zeszłego tygodnia, wyczyściłem loot ze Zrzutów Zaopatrzenia. Nigdy więcej jabłek i pochodni! Amunicja to od teraz ‘najgorsza’ rzecz, jaką można z nich uzyskać.

Inne Ścinki Maurino Berry

jednym problemem, który nadal istnieje i który być może zauważyliście, to poważne obniżenie FPSów podczas chodzenia, gdy w tym samym momencie ładowane były bazy graczy, przez kilka sekund. Jest to długo istniejący problem, na rozwiązaniem którego pracujemy i powinnyśmy być w lepszej sytuacji jeśli chodzi o wydajność, gdy już go rozwiążemy.

Przeróbka Latarni Damian Lazarski

Cześć! Jestem tutaj jako Artysta Środowiska, więc będę głównie pracował razem z Vince’m nad pomnikami i ulepszaniem jakości świata. Skończyłem greybox odnowionej Latarni. Część zewnętrzna i wewnętrzna są już gotowe, więc siatki są gotowe na detalowanie. Ta nowa wersja jest zdecydowanie większa od starej i składa się zarówno z latarni, jak i bunkrowej struktury. Bardziej złożony układ powinien sprawić, że będzie ona bardziej interesująca do odkrywania, plus Latarnia powinna stać się dobrym miejscem dla snajperów. Rozmawiałem z Vince’m o dodaniu drugiego wariantu, który składałby się tylko z latarni, i oboje zgodziliśmy się, że dodało by to trochę różnorodności.

Rust lighthouse Rust lighthouse Rust lighthouse Rust lighthouse Rust lighthouse

Tunele Wojskowe Vincent Mayeur

Progres dotyczący tuneli idzie dobrze. Jestem w trakcie przerabiania tuneli wojskowych. Dotychczasowy układ wydawał mi się nieinteresujący, i dzięki dodaniu kilku nowych tuneli (takich jak prowadzących w dół/w górę) będę mógł poszerzyć je do bardziej przykuwających uwagę układów.

Rust tunnels

Jedną rzeczą, na którą wpadłem to to, że podczas gdy tunele są fajne dla mapy, to są one duże i być może nie powinno ich być w więcej niż na dwóch miejscach na serwerze. Myślę o dodaniu staro stylowych tuneli kopalnianych stworzonych z pomocą drewna; oferowałyby one fajną alternatywę dla dużych, betonowych struktur. Byłyby też idealnego rozmiaru do wtapiania się w kanały i naturalne sieci jaskiń, ponieważ duże betonowe tunele wymagają tak samo dużych jaskiń i powodów do połączenia się z nimi. Zobaczymy jak wyjdzie.

Serwerowa Weryfikacja Broni André Straubmeier

Musiałem się nieźle w to zagłębić. W Rust, jakakolwiek interakcja z bronią jest weryfikowania w ten czy inny sposób na serwerze, żeby upewnić się, że klienci nie robią czego tylko chcą. Te sprawdzenia zostały dodane przez trzy różne osoby odkąd powstała nowa wersja Rust. Sporo rzeczy zostało zapomnianych i zagubionych, więc regresje są gwarantowane. Najgorsze jest to, że większość bardzo starych sprawdzeń nie wprowadzało żadnych wpisów do logu serwera, tylko po prostu cicho odmawiały wykonania akcji przez gracza. Dla broni z pociskami znaczyło to głównie, że po pewnym czasie do logów wysyłana została wiadomość “X wystrzelił nieprawidłowy pocisk: Brakujące ID”, ale było to już za późno, żeby dowiedzieć się gdzie wystąpił problem.

Poszperałem w kodzie szukając tego typu sprawdzeń, ujednoliciłem je wszystkie i dodałem ostrzeżenia pokazujące się za każdym razem, gdy akcje gracza były uważane jako nieprawidłowe i byłyby odmówione. Następnie ustawiłem je na naszych serwerach testowych i razem z Alistairem śledziliśmy logi. Zidentyfikowaliśmy sporo problemów, na przykład nieprawidłowo odmawianych ataków wręcz, lub znikających pociskach na serwerze i na ten moment wydaje się, że wszystko naprawiliśmy.

Odkąd tego typu problemy są trudne do odtworzenia w środowiskach testowych, możliwe jest to, że nadal istnieje trochę problemów, których nie znaleźliśmy. Jednakże, przynajmniej mamy szczegółowe logi serwera, które powinny nam powiedzieć co poszło źle od razu, gdy coś pójdzie źle.

Interakcja Blokad Kodowych André Straubmeier

Był to kolejny bardzo wkurzający błąd, który istniał od zawsze: interakcja z blokadą kodową była możliwa tylko z jednej strony bramy. Rozwiązanie okazało się bardzo proste, ale bardzo dobrze się poczułem, gdy je znalazłem.

Aktualizacje Modelu Granatu Alex Webster

Większość rzeczy, którymi się zająłem w tym tygodniu nie trafią do aktualizacji, ponieważ nadal wymagają trochę pomocy kodera. Przynajmniej udało mi się zaktualizować animacje modelu Granatu z Puszki po Fasoli. Wyjmowanie go zaczynało się w złej pozie, powodując wizualne zakłócenie, oraz nie było animacji do pętli. Sprawiłem też, że inne animacje bardziej pasują do Granatu F1.

Przed

Po

Kościany Pancerz Taylor Reynolds

Skończyłem niskiej jakości model 3D kościanego pancerza. Jest on bardzo skomplikowanym przedmiotem, ale jestem z niego bardzo zadowolony. Nadal pracuję nad hełmem z ludzkiej czaszki, i wydaje mi się, że zrobię też badassowy hełm z czaszki jelenia, który Paul pokazał w swoim koncepcie, żeby dodać różnorodności do gry.

Rust bone armour

Możecie pokręcić nim tutaj, żeby zobaczyć jak wygląda z każdej strony:

Karabin Szturmowy LR300 Minh Le

Skończyłem wysokiej jakości model 3D Karabinu szturmowego LR300. Próbowałem dodać trochę więcej kolorów, żeby karabin nie był cały czarny, ponieważ wydaje mi się, że jest to trochę nudne.

Rust assault rifle Rust assault rifle Rust assault rifle

Poniżej możecie zobaczyć jego model 3D:

Dźwięki Dwururki Alex Rehberg

Zrobiłem pierwszą wersję dźwięków dla Dwururki w tym tygodniu. Ludziom bardzo spodobały się dźwięki zastępcze, ze względu na ich głębię i skojarzenie z armatami, więc postarałem się skorzystać z tego przy tworzeniu nowych dźwięków!

Jestem całkiem zadowolony z nowych dźwięków, ale myślę, że trochę efektów dźwiękowych podczas przeładowania brzmi trochę za lekko w porównaniu z odgłosem strzału, więc będę szukał większych kawałków metalu połączonych w interesujący sposób, żeby nagrać mocniejsze dźwięki przeładowania.

Muzyka Alex Rehberg

Teraz, gdy mamy już działającą bazę systemu muzycznego, pracuję nad wypełnieniem braków. W tym momencie brakuje nam najbardziej muzyki typu zbieranie-drzew-i-skał-na-słonecznym-polu, więc pisałem więcej i skupiałem się na tym w tym tygodniu.

Skupiam się na muzyce grającej przy zerowej intensywności zanim wskoczę w coś związanego z wyższą intensywnością. Pisanie tego wydawało mi się o wiele bardziej naturalne, ponieważ system odtwarzania muzyki już działa, ale nadal niełatwo jest utrzymać tajemniczy/niebezpieczny klimat Rust i równocześnie zachować spokojne uczucie zen. Oto podgląd tego, nad czym pracowałem:

Koncept Automatów dla Graczy Paul Bradley

Oto podgląd konceptu możliwych do zbudowania automatów dla graczy do stawienia w swoich bazach i do wykorzystania w celu handlowania z innymi graczami. Jest to tylko wizualny rozwój wyglądu i sposobu umiejscowienia przy ścianie. Zmierzamy w kierunku widoku improwizowanego: korzystanie ze starego automatu z napojami zmodyfikowanego z klawiaturą i ekranem, którego używałoby się do wybrania handlu, oraz duża taca na dole do stawiania własnych przedmiotów i odbierania przedmiotów, które chcieliśmy w zamian. Będzie interesujące zobaczyć jakiego typu ekonomia wyniknie z tego, oraz to, jak gracze cenią określone przedmioty takie jak broń i surowce w grze.

Rust vending machine

Przeróbka Grafiki Petur Agust

Nagłówkowy zrzut ekranu to kolejne spojrzenie na przeróbkę grafiki, nad którą pracuję. Oto kilka więcej.

Rust house Rust cellar Rust attic Rust night

Progres Badań Maurino Berry

Nadal pracuję nad ponownym dodaniem badania do gry. Zajmuje to trochę dłużej, niż się spodziewałem, przez co zrobiłem trochę mniej optymalizacji wydajności w tym tygodniu. Celuję w przyszły tydzień, będę dawał wam znać na Reddicie.

 

Wprowadzone zmiany

Aktualizacje animacji modelu granatu z puszki po fasoli
Śrut posiada lekko losową prędkość (nie wpływa to na obrażenia, jedynie na aspekt wizualny)
Dodano bardziej szczegółową weryfikację ataku i pocisków na serwerze
Ulepszono weryfikację broni wręcz i linii wzroku pocisków na serwerze
Ulepszono weryfikację pozycji dystansu jednostek podczas bycia atakowanym
Ulepszono weryfikację czasu schłodzenia broni na serwerze
Naprawiono lag serwera spowodowany niesynchronizowanymi obliczeniami po stronie gracza
Naprawiono niektóre sytuacje, które mogły powodować "nieprawidłowy pocisk: Brakujące ID"
Naprawiono pociski, które czasem były całkowicie niszczone, gdy penetrowały obiekt
Naprawiono blokady kodowe, do których dostęp można było uzyskać tylko z jednej strony bramy, do której były przyczepione
Naprawiono sposób wykorzystania błędu, który pozwalał na stackowanie podłóg poprzez obracanie ścian
Naprawiono możliwość interakcji z obiektami podczas bycia rannym
Nowe dźwięki dla dwururki
Ulepszono wydajność dla widocznych graczy i zwierząt
Dodano Player culling, 20-30% lepsza wydajność na zaludnionych serwerach
Obszar zrzutu Zaopatrzenia po wezwaniu go sygnałem ma od teraz 20-metrowy losowy promień
Usunięto śmieci z lootu Zrzutu Zaopatrzenia
Sygnały Zaopatrzenia znajduje się od teraz rzadziej
Miotacze Ognia znajduje się od teraz rzadziej
Mnożnik obrażeń dwururki zwiększony z 0.75 do 1.0
Rozrzut Dwururki zwiększony
Wskaźnik ponownego strzału Dwururki zmniejszony z 1.0 do 0.5

Prawa do wszelkich zamieszczonych we wpisie multimediów należą do firmy Facepunch Studios LTD lub twórców contentu. Wpis ten ma charakter informacyjny, jest skierowany do graczy Rust w wersji polskiej.

The rights to all media included in this blog post belong to Facepunch Studios LTD or the content’s creators. This post is only informative and it is addressed to polish players of Rust.

Facebooktwittergoogle_plusredditpinterestlinkedinmail

Komentarze Facebook

komentarzy. Jeżeli nie widzisz okienka wpisu i komentarzy blokuje je któraś z Twoich wtyczek w przeglądarce. Możliwe też że działasz w trybie incognito gdzie Twoja przeglądarka również blokuje tutaj dostęp.