W skrócie: ogromna część graczy jest na skromnym sprzęcie (laptopy, handheldy jak Steam Deck, starsze GPU) a środowisko, które działa tylko na topowym zestawie, wyklucza ich. Dobra wiadomość: większość wydajności środowiska gubi się w kilku przewidywalnych miejscach (overdraw, draw calle, gęste listowie, przewymiarowane tekstury) i odzyskuje kilkoma zdyscyplinowanymi nawykami. To praktyczny podręcznik trafienia w niski budżet klatki bez patroszenia twojej grafiki, plus metoda stałej kamery do łapania regresji, zanim wyjdą.
To najdroższy rodzaj sceny do uruchomienia, warstwy przezroczystych liści, tysiące instancji, ciężki overdraw. To też miejsce, gdzie żyją największe, najłatwiejsze zwycięstwa, gdy już wiesz, dokąd idzie czas klatki.
Najpierw ustaw budżet, w milisekundach
Wybierz docelowy czas klatki na najsłabszym wspieranym sprzęcie (16,6 ms dla 60 fps, 33,3 ms dla 30) i traktuj go jako twardy limit. „Zoptymalizować później" znaczy „przebudować później"; budżetowanie z góry jest znacznie tańsze.
Optymalizacja bez liczby to tylko przeczucie. Zdecyduj klatkę, w którą celujesz na swoim sprzęcie podłogowym, Steam Decku, średnim laptopie, jakakolwiek jest twoja minimalna spec, i przelicz ją na milisekundy, bo milisekundy się sumują, a procenty kłamią. Potem trzymaj każdą scenę przy tym, gdy budujesz, nie na końcu. Zespoły, które wydają płynnie na słabym sprzęcie, nie optymalizują ciężej; po prostu nigdy nie pozwalają scenie rozsadzić budżetu w pierwszej kolejności, co kosztuje ułamek odzyskiwania wydajności po tym, jak grafika jest skończona i wszystko od niej zależy.
Wiedz, dokąd idzie czas
Czas klatki środowiska zwykle zjada overdraw (przezroczyste listowie), zbyt wiele draw calli (nie-batchowane obiekty), przewymiarowane tekstury (przepustowość pamięci) i drogie oświetlenie/cienie. Profiluj, by znaleźć TWOJE wąskie gardło, zanim optymalizujesz na ślepo.
Zgadywanie optymalizacji marnuje dni. Otwórz profiler, znajdź, czy jesteś CPU-bound (zwykle draw calle) czy GPU-bound (zwykle overdraw, cieniowanie lub przepustowość), i uderz w prawdziwe wąskie gardło. Powiedziawszy to, środowiska zawodzą w przewidywalne sposoby, i niemal zawsze jest to jedno z: overdraw z warstwowego przezroczystego listowia; draw calle z tysięcy nieinstancowanych obiektów; pamięć/przepustowość tekstur z przewymiarowanych lub zbyt wielu tekstur; i koszt oświetlenia/cienia ze zbyt wielu świateł dynamicznych lub map cieni wysokiej rozdzielczości. Reszta tego podręcznika przechodzi je w kolejności zwykłego wpływu.
Listowie i overdraw: zwykły złoczyńca
Przezroczyste karty listowia nakładają się i ponownie cieniują te same piksele wiele razy, to overdraw, i to zabójca numer jeden słabego sprzętu. Zmniejsz nakładanie kart liści, użyj agresywnych LOD-ów, i culluj daleko listowie twardo.
Gęsta roślinność to miejsce, gdzie umiera większość budżetów klatki słabego sprzętu, bo każda półprzezroczysta karta liścia zmusza GPU do cieniowania pikseli, które potem przemaluje ponownie, czasem dziesięć-plus razy na piksel w gęstym baldachimie. Poprawki: użyj ciaśniejszych kart liści z mniejszym zmarnowanym obszarem przezroczystym, spadaj szybko na tańsze LOD-y, gdy listowie się cofa, i ustaw twarde dystanse cullingu, by dalekie trawa i krzewy po prostu przestały się rysować. Na handheldzie różnica między „trawa po horyzont" a „trawa zcullowana na rozsądnym dystansie" może być całą różnicą między 25 a 40 fps. Zbakuj listowie do natywnych instancji, by GPU mogło je batchować, i pozwól instancingowi silnika zrobić ciężką robotę.
Draw calle i instancing
Każdy unikalny obiekt składany osobno to draw call, a tysiące z nich dławią CPU. Instancuj powtarzane meshe, by setki kopii kosztowały jeden call; scalaj statyczny clutter, gdzie ma to sens.
Jeśli jesteś CPU-bound, draw calle są zwykle dlaczego. Każda odrębna rzecz, którą prosisz silnik o wyrenderowanie, niesie narzut, a scena ręcznie ułożona z tysiącem indywidualnych skał i krzewów topi CPU w koszcie składania. Instancing to lekarstwo: powtarzane meshe rysowane jako instancje zwijają setki kopii w pojedynczy call, co jest dokładnie tym, dlaczego narzędzia scatteringu, które bakują do natywnych instancji silnika, liczą się dla wydajności (scatter, który wygląda jak tysiąc roślin, kosztuje jak garść. Gdzie instancing nie ma zastosowania, scalanie małego statycznego cluttera w połączone meshe też tnie liczbę calli. To jedno miejsce, gdzie przepływ pracy jak w Numivo) maluj gęstość, potem bakuj do zwykłych instancowanych meshy, opłaca się bezpośrednio na słabym sprzęcie, bo wyjście jest tanią rzeczą, której chce GPU.
Nie każda scena musi być maksymalnie gęsta. Ciche, otwarte przestrzenie kosztują niemal nic i dają zarówno sprzętowi, jak i graczowi odpoczynek) rytmizowanie gęstości jest samo w sobie optymalizacją.
LOD-y, dystanse cullingu i rozmiary tekstur
Daj każdemu znaczącemu meshowi LOD-y, by dalekie kopie były tanie, ustaw dystanse cullingu, by maleńkie-na-ekranie obiekty przestały się rysować, i ogranicz rozdzielczość tekstur do tego, co kamera rozdziela na dystansie. Te trzy odzyskują wiele małym wysiłkiem.
Trzy pozbawione blichtru nawyki niosą większość pozostałego budżetu. LOD-y: dalekie meshe powinny przełączać się na wersje niższopoligonowe, bo pełny detal na 20-pikselowym drzewie jest zmarnowany. Dystanse cullingu: cokolwiek za małego na ekranie, by zauważyć, powinno przestać renderować całkowicie, małe propy, kamyki, drobna trawa, strojone na typ obiektu. Rozmiary tekstur: ogranicz rozdzielczość do tego, co faktycznie rozdzielne na dystansie gracza (zobacz logikę gęstości tekseli, dalekie rzeczy potrzebują znacznie mniej tekseli), bo przewymiarowane tekstury spalają przepustowość pamięci, której słabe GPU nie mogą oszczędzić. Żadne z nich nie szkodzi wyglądowi, gdy dostrojone dobrze; po prostu przestają cię zmuszać do płacenia za detal, którego nikt nie widzi.
Znajduj regresje stałymi kamerami
Zdefiniuj kilka „kamer budżetowych" (twoją najgorszą panoramę, najgęstszą przestrzeń walki, najruchliwsze wnętrze) i sprawdzaj ich czas klatki przy każdym buildzie. Losowe przeloty ukrywają regresje; te same brutalne widoki za każdym razem je odsłaniają.
Wydajność gnije po cichu, gdy dodaje się treść, i nie złapiesz tego, wędrując po poziomie od niechcenia. Zamiast tego przypnij swoją garść najgorszych widoków (punkt widokowy gęstego lasu, zatłoczony rynek, walkę ciężką od efektów) i mierz dokładnie te, przy każdym buildzie, względem budżetu. Gdy liczba robi się czerwona, wiesz, że niedawna zmiana to spowodowała, i mniej więcej gdzie. To różnica między zespołem, który odkrywa kryzys wydajności na końcu, a takim, który naprawia regresję 2 ms w dniu, gdy się pojawia. Na celach słabego sprzętu spraw, by jedna z tych kamer działała na prawdziwym Steam Decku lub maszynie o minimalnej specyfikacji, nie tylko szacunku edytora.
Liczby z pola, które warto ukraść
- Budżety klatki: 16,6 ms (60 fps) / 33,3 ms (30 fps), ustaw na swoim sprzęcie podłogowym
- Zwykły zabójca słabego sprzętu: overdraw listowia, ciaśniejsze karty, szybkie LOD-y, twardy culling
- Powtarzane meshe → instancje: setki kopii za jeden draw call
- Ogranicz rozmiar tekstury do detalu rozdzielnego przez kamerę, dalekie potrzebuje znacznie mniej tekseli
- Łap regresje stałymi kamerami budżetowymi, mierzonymi przy każdym buildzie
Mini-FAQ
Czy muszę wybierać między ładnym a słabym sprzętem? Mniej, niż myślisz. Większość kosztu słabego sprzętu to marnotrawstwo (overdraw, nie-batchowane calle, przewymiarowane tekstury) nie widoczna jakość. Wytnij marnotrawstwo i grafika przetrwa; gracze na słabym sprzęcie rzadko tęsknią za detalem, za który płaciłeś, ale którego nie mogli zobaczyć.
Czy oświetlenie dynamiczne jest zakazane na Steam Decku? Nie zakazane, ale budżetowane. Ogranicz liczbę świateł dynamicznych i rzucających cień, oprzyj się na oświetleniu bakowanym, gdzie scena jest statyczna, i zarezerwuj koszt dynamiczny na to, co się liczy. To linia budżetowa, nie zakaz.
Jaka pojedyncza zmiana pomaga najbardziej na handheldzie? Zwykle okiełznanie listowia: ciaśniejsze karty liści, agresywne LOD-y i twarde dystanse cullingu na trawie i krzewach. Overdraw to najczęstsze wąskie gardło handhelda, a roślinność to miejsce, gdzie żyje overdraw.
Jak wcześnie powinienem testować na sprzęcie docelowym? Od pierwszego vertical slice'a. Szacunek edytora na potężnej maszynie deweloperskiej ukrywa dokładnie te problemy, które będzie miał handheld. Zdobądź build na prawdziwym urządzeniu o minimalnej specyfikacji wcześnie i trzymaj go w pętli.
Działanie na ziemniaku nie polega na czynieniu twojej gry brzydką: polega na niepłaceniu za detal, którego gracze nie mogą zobaczyć. Budżetuj w milisekundach, zabij overdraw, instancuj powtórki, culluj niewidzialne i obserwuj najgorsze kamery przy każdym buildzie, a twoje środowisko będzie wyglądać świetnie i działać dla ogromnej publiczności, która nie jest na topowym zestawie.

