Opublikowano 23 godziny temu23 godz. Chciałbym popracować nad optymalizacją gry i chciałbym lepiej zrozumieć, które elementy mają największy wpływ na spadki FPS oraz stabilność. Z tego co udało mi się ustalić, największe problemy pojawiają się przy: - dużej liczbie efektów (skille, dymki, pioruny, ognie i inne pochodnie) renderowaniu tekstów (outline/fonty) ładowaniu modeli i postaci do gry/po zmianie kanału/mapy synchronizacji klient–serwer (ilość pakietów) Na forach często pojawiają się „gotowe paczki optymalizacyjne”, które zawierają m.in.: optymalizację efektów i tekstów zmiany w zarządzaniu pamięcią (fixy leaków) usprawnienia ładowania modeli/map ograniczenie liczby pakietów sieciowych Chciałbym podejść do tego samodzielnie i mam kilka pytań: 1. Jakie narzędzia polecacie do profilowania klienta (CPU/GPU/memory) w tym przypadku? 2. Które obszary binarki/rootów są najczęściej odpowiedzialne za spadki FPS? 3. Jak identyfikować bottlenecki – bardziej iść w stronę renderingu (DirectX), czy logiki klienta? 4. Na co zwrócić uwagę przy analizie wycieków pamięci w tym kliencie? 5. Jakie są narzedzia/sposoby na poprawe networkingu? słyszałem coś o protobufJeśli ktoś może wskazać konkretne entry pointy (np. nazwy funkcji, klasy, patterny w IDA) albo kierunek analizy w binarce/rootach, będę wdzięczny.
Opublikowano 2 godziny temu2 godz. może nie odkryję ameryki ale może nie każdy wie.Ja sam osobiście, przy optymalizacji projektu używam Visual Studio a dokładniej sesje diagnostyczną (ALT+F2). Odpalasz grę przez to, po wejściu robisz coś co chcesz zoptymalizować (np. spawn setek mobów, którzy przy normalnym kliencie wykaże obciążenie CPU przez RenderTextTail a po jego fixie (np. można zrobić bufor na tekst w prosty sposób, co da dużą optymalizację) a po tym drugim największym obciążnikiem jest Deform czyli obliczanie pozycji kości dla każdego moba (domyślnie CPU Skinning), można to zoptymalizować przez GPU Skinning tworząc własne shadery HLSL w directx ale to już poważniejsza zabawa)(Jakby ktoś robił GPU skinning, warto zwrócić uwagę i nie kasować domyślnej metody obliczania czyt. CPU Skinning, ponieważ DX ma limity na bodajże 255 rejestrów i warto ustawić limit np. modele < 70 kośćmi GPU a powyżej klasyczne CPU)Tak samo chodzenie po mapie może Ci w tym profilerze w VS pomóc, i pokaże co dokładanie powoduje shutter lagi (np. chodzenie po M2 na martysamie w domyślnej wersji powoduje te mikro lagi)To są rzeczy które moge od siebie dać, ponieważ sam optymalizuję i uczę się/szukam rozwiązań czy pomysłów i jeśli gdzieś popełniłem błąd albo coś źle napisałem - śmiało możecie mnie poprawiać :D
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto