W tym tygodniu mamy olbrzymiego devbloga (-.-): pierwsze spojrzenie na ekspresję twarzy (grr, ups i seryjny morderca*), rozszerzyliśmy używalność wody, i możecie teraz udostępniać swoje benchmarki z poziomu gry.
Jest tutaj więcej balansów, ubrań, rzeczy do stawiania, rzygania i wiele więcej.
Mieszanka kształtów twarzy (Taylor Reynolds)
W trwającym wysiłku próbujemy zrobić tak, by gracze Rust'a wyglądali jak żywi, pracuję nad oddychającą mieszanką kształtów. Te mieszanki połączą normalne mapy i cele morph, by uzyskać realistyczne wrażenie skóry i mięśnie poruszające się z kością
(Filmik możecie zobaczyć tu: https://files.facepunch.com/taylor/2016/04/test1 (49).mp4)
Głownie będą używane, do oceny stanu gracza: jeśli ktoś będzie głodny i będzie mu zimno, to będzie wyglądał jak ktoś w depresji, albo jeśli są samotni w ciemności, to będą przestraszeni. Jest duży zakres z tym materiałem, jak możliwość zaawansowanych emotikon, albo wasz awatar wyrażający emocje, w zależności od tego co napiszecie na czacie.
Włosy (Taylor Reynolds) (Matt Isaac)
To jest coś, co idzie ramię w ramię z mieszanką nad którą pracowałam. Nie jest to również konieczny wyznacznik tego, że włosy i brody będą wkrótce wydane, ale jest to bardziej przypadek zapewniający, że wszystko co zrobimy teraz z modelem gracza, będzie w przyszłości kompatybilne z włosami. Są to wczesne testy, głównie sprawdzające, czy włosy działają z motoryką twarzy, specjalnie łącząc wariacje głowy z mieszanką emocji w bardziej efektywny sposób.
(Filmik możecie zobaczyć tu: https://files.facepunch.com/taylor/2016/04/test1 (51).mp4)
Używamy szorstkich siatek, nad którymi Matt pracował chwilę temu, i nadal jest przedmiotem kontroli wydajności, więc wiele może się zmienić. Warto zauważyć, że praca ta obejmuje wszystkie włosy, nie tylko brody, więc nie martwcie się, jeśli jesteście kobietami: też dostaniecie fajny rzeczy.
Słona woda (Maurino Berry)
Dalsze wprowadzenie zeszło-blogowego tematu o beczkach z wodą i kubełkach, znacznie rozszerzyłem system wody. Dodałem słoną wodę, która oczywiście pochodzi z oceanu i nie jest do picia. Wciąż możecie gasić nią pożar, ale wzięcie łyka skutkuje odniesieniem obrażeń i zmniejszenie poziomu jedzenia i wody.
Świeża woda (Maurino Berry)
Świeża woda może zostać znaleziona w jeziorach i strumykach... gruntownie w każdym miejscu powyżej poziomu morza. Działa jak stara woda: uzupełniając wasze nawodnienie i dające małe życiowe korzyści. Jednakże, została znerfiona. by nie dawała powyżej 40 hp. Dodałem również nowy przedmiot, dzban z wodą, który jest gruntownie większą wersją kubełka z wodą.
Aspekty przetrwania (Maurino Nerry)
W nawiązaniu do powyższych zmian, przeszedłem przez nie i zrobiłem kilka zmian do metabolizmu, swoiście będziecie tracić więcej kalorii, przez bieganie przez świat i używanie narzędzi. Również będziecie używać o wiele więcej wody z przedłużających się wymagających aktywności fizycznych i od przebywania w wysokich temperaturach. Jeśli poziom nawodnienia spadnie zbyt nisko, to nie będziecie mogli biegać, dopóki nie weźmiecie łyka świeżej wody i się ochłodzicie. Zmniejszyłem o połowę ilość kalorii/nawodnienia które gracz może składować w ciele. Liczby te mogą być wyłączone i mogą być potrzebne pewne korekty, ale nie powinniście mieć zbyt dużego problemu z znalezieniem źródła świeżej wody, którą można pic bezpośrednio ze świata, poprzez popatrzenie w dół i naciśnięcie E (chociaż oprócz oceanów)
Bukłak (Maurino Berry)
Przebrnąłem przez to i zmieniłem bukłak tak, że pracuje podobnie do kubełka z wodą. To znaczy, że możecie go napełnić przy jakimkolwiek źródle wody i pić bezpośrednio z niego za pomocą LPM, można również użyć jej do ugaszenia pożarów. Posiada pokrywkę, więc możecie zachować ją w swoim ekwipunku na później! Zredukowałem też koszt wytworzenia do 15 skór (zamiast 100 i 30 tłuszczów zwierzęcych, łał). Jako domyślny przedmiot, przedmioty do wytworzenia nie powinny być trudne do znalezienia. Żłopcie!
Nerf krwawienia (Maurino Berry)
Jedną z rzeczy którą nie lubiłem, było krwawienia, które zabijało zbyt szybko. Wykrwawianie się w ciągu kilku sekund, nie jest tym, nad czym myślałem, więc przebrnąłem przez to i znerfinłem to, by robiło o 1/4 obrażeń którą robiło poprzednio. Jeśli jesteście ranni, będziecie mieć czas by wytworzyć bandaż albo by znaleźć kogoś kto was opatrzy. Będziemy musieli zobaczyć jak to zadziała i prawdopodobnie będziemy potrzebowali więcej zmian w balansie. Będę nasłuchiwał.
Pojemność wody (Maurino Berry)
Wraz z wprowadzeniem bukłaku i dzbanku, dwukrotnie zwiększyłem pojemność beczek z wodą i kubełków. by zrobić je bardziej opłacalne dla trzymania/transportu dużych ilości wody. To będzie ważniejsze w nadchodzących tygodniach, gdy dodamy do gry odsalarkę. (zobacz sekcję Howe'ego)
Benchmarking (Garry Newman)
Gdy myślimy, że zwiększyliśmy optymalizację, nie mamy dowodów by to poprzeć. Ślepo strzelamy w ciemności, mając nadzieję trafienia w coś. To jest okropne. Od dłuższego czasu mówiłem, że potrzebujemy benchmarku, i że musimy uruchomić go na tych samych komputerach, na każdym buildzie, i tak w kółko. Tym sposobem możemy porównywać zmiany zestawów do poprzednich i mamy twardy dowód, że ten zestaw kodów jest szybszy od innego.
Więc to jest to, nad czym zaczęliśmy pracować. Założyliśmy kilka serwerów z punktów sprzętowych które chcemy kierować (z tego co zostało leżąc wokół). Więc mamy jeden niskiej specyfikacji, jeden średni, iMac, i kilka innych, wszystkie mają uruchomiony benchmark na każdej wersji Rust'a którą zbudowaliśmy i wrzuciliśmy wyniki na stronę.
Potem możemy iść i zobaczyć, czy wyniki są spójne w całym buildzie.
Więc jeśli zaktualizujemy Unity, nie będziemy musieli pytać na Reddit'cie czy wydajność jest lepsza czy gorsza, my już wiemy czy jest jakaś zmiana.
Udostępnij swojego benchmarka
Też możecie zostać zaangażowani: po prostu otwórzcie grę, otwórzcie konsolę i wpiszcie benchmark. Uruchomi to kilka testów, a wtedy otworzy stronę z waszymi wynikami. Możecie udostępnić URL swoim przyjaciołom albo z nami, byśmy zobaczyli jakiego rodzaju wydajność dostajecie. Tutaj jest mój PC do pracy. Jeśli zachowacie swoje wyniki, to będziecie mogli porównać je z wynikami wzdłuż wersji, i napisać nam o jakiejkolwiek zmianie wydajności.
Wydajność gry jest ostatnimi czasy gówniana, i zrobiło się gorzej. Ten system był dla nas ważny by go dodać - nie tylko przez to, że wykrywa pozytywne zmiany - ale powinna również pozwalić nam zidentyfikować i cofnąć zmiany, które sprawiają, że jest gorzej.
Wyniki testów są podawane w milisekundach, gdzie mniejsza jest prawie zawsze lepsza. Dodamy więcej benchmarków z biegiem czasu: gdy będziemy chcieli udowodnić, że coś jest wolne, czy optymalizacja zadziałała itd. Tutaj macie szybkie wytłumaczenie aktualnych testów:
Player Model
Renderowanie i animacja setek modeli graczy. Prędkość ta testuje nasz kod animacji, takielunek i oczek skórowania.
PlayerModelRebuild
Gdy model gracza jest wyświetlany po raz pierwszy, lub gdy gracz zmienia ubranie, my musimy przebudować model. To mógłby być potencjalnie wolny proces, szczególnie gdy odradza się zgraja śpiochów, więc chcemy mieć oko na wydajność tego.
Procmap.Gen
Jak długo trwa generacja mapy proceduralnej? Jest to ogromna większość czasu ładowania aktualnie w Rust'cie. Chcemy to udoskonalić, nie chcemy tego pogorszyć. Czas zależy również od sprzętu, celując w 30 sekund do 3 minut.
ProcMap.Normal
Renderowanie mapy proceduralnej wraz z trawą i dekoracjami, ale bez drzew. Dla mnie jest to zaskakujące, jak wolne to jest, gdyż poprzednio przypuszczaliśmy, że złe klatki był spowodowane budynkami. Jeśli to zwalnia nawet bez budynków, to wtedy będziemy mieli problem.
ProcMap.noGrass
Wielu ludzi narzeka, że przez trawę mają problemy wydajnościowe. Ten test ma raz i na zawsze dowieść, czy jest to słuszne, czy nie.
ProcMap.NoDecor
Dekoracjami są rzeczy takie jak krzaki, kwiatki, driftwood. Ten test jest podobny do testu trawy, chcemy zobaczyć jak bardzo te rzeczy mają wpływ na wydajność, i czy powinny one być włączone, czy nie.
ProcMap.Rain
Czy deszcz powoduje spadki klatek? Historycznie tak, ale czy aktualnie? Badanie to wydaje się sugerować, że deszcz zwiększa klatki... powodem tego może być mgła.
SkinnedMeshCollider
Ten test wystrzeliwuje masę niewidzialnych pocisków w masę modeli graczy, by przetestować szybkość generacji hitboxów. Jest to potencjalnie wolna operacja, i ten sam kod jest używany dla masy innych rzeczy, które potencjalnie mogą być wezwane w każdej klatce.
Dalsza część w poście poniżej!