| Zajęcia stacjonarne | Warsztat 2x45min |
| Opis jednozdaniowy | Podczas tego modułu uczestnicy zapoznają się z tematem profilowania oraz optymalizacji gier wykorzystując narzędzia dostępne w Unity. |
| Materiały źródłowe | Podstawowe: “Getting started with the Project Auditor”, Unity https://www.youtube.com/watch?v=8QQG0J624LY “Unity Profiler Walkthrough & Tutorial | Unity”, Unity https://www.youtube.com/watch?v=xjsqv8nj0cw “Profile Analyzer Walkthrough & Tutorial | Unity”, Unity https://www.youtube.com/watch?v=Ypg84Fr20Sw “Ultimate guide to profiling Unity games”, S. Duffy https://unity.com/resources/ultimate-guide-to-profiling-unity-games Dodatkowe “FIX Your UNITY PROJECTS With This (Free Unity Project Auditor)”, SpeedTutor https://www.youtube.com/watch?v=2e9_XUzG4Ig “Boosting your game performance with Unity 6 Profiling tools | Unite 2024”, Unity https://www.youtube.com/watch?v=_cV1B2hqXGI “Optimizing smarter, not harder with Unity’s performance tools | Unite 2025”, Unity https://www.youtube.com/watch?v=S4xF-eE1pBg |
| Czemu służy ta lekcja | Celem zajęć jest zapoznanie uczestników z technikami, które poprawią wydajność ich gier. Dzięki wykorzystaniu wiedzy z tej lekcji uczestniy będą w stanie znaleźć wąskie gardła wydajności dzięki wykorzystaniu wbudowanych narzędzi w edytor Unity. W trakcie tego warsztatu uczestnicy zapoznają się z takimi narzędziami jak Project Auditor, Profiler, czy Analyzer. Zobaczą również jak mogą wykorzystać informacje zebrane we wspomnianych narzędziach by poprawić wydajność ich gier. |
Jak się przygotować
Aby przygotować się do zajęć należy zapoznać się z podstawowymi materiałami źródłowymi. Pełne zrozumienie ich funkcjonowania pozwoli na lepsze przekazanie wiedzy uczestnikom w tracie zajęć.
Do tej lekcji warto będzie przygotować krótką prezentację oraz kilka scen demonstracyjnych, na których będzie można prezentować różne aspekty technik optymalizacji gier w Unity. W prezentacji warto zawrzeć następujące informacje:
- Czym jest profilowanie i dlaczego jest ono istotne
- Frame budget – ile czasu ma komputer na obsłużenie gry aby działała płynnie w 30 lub 60 FPS (33.33ms vs 16.66ms)
- Wąskie gardło na procesorze oraz karcie graficznej – jak rozpoznać
- Krótkie omówienie dostępnych narzędzi:
- Project Auditor
- Profiler
- Frame Debugger
- Analyzer
- Omówienie najczęściej spotykanych problemów z optymalizacją, np:
- Częste korzystanie z GetComponent
- Inicjalizacja i niszczenie obiektów zamiast ich reużywania (object pool)
- Operacje na stringach
- LINQ
- Optymalizacja renderowania – batching, occlusion culling, LOD
Następnie warto przygotować projekt demonstracyjny, który będzie zawierał kilka przykładowych scen:
- Scenę porównawczą 10000 obiektów z dołączonym komponentem zawierającym pustą definicję metody Update () lub zawierające wywołanie Debug.Log, kontra 1 obiekt z komponentem zawierającym metodę Update, która wywołuje tą samą logikę w pętli 10000 razy
- Scenę z 1000 obiektów fizycznych (posiadają np Box Collider), które się przemieszczają. Można tutaj porównać jak wygląda wydajność z oraz bez dołączonego komponentu Rigidbody (wraz z włączoną kinematyką)
- Scena na której często są tworzone i niszczone obiekty (tak by dobrze zaprezentować zalety korzystania z Object Pool)
- Scena z przykładem nieefektywnego kodu, który na przykład co klatkę wywołuję metodę GetComponent by dostać się do innego komponentu
- Scena z dużą ilością Draw Calls, gdzie posiadamy bardzo dużo siatek, ale nie są one łączone w batch.
W trakcie zajęć można jeszcze dodatkowo poruszyć następujące zagadnienia:
- Wydajność w edytorze nie zawsze będzie identyczna jak w zbudowanej grze
- Zalety Development Buildów oraz wykorzystywanie AutoConnect w Profilerze
- Zbieranie bardziej szczegółowych informacji dzięki wykorzystaniu Profiler.BeginSample() / EndSample() wewnątrz własnego kodu
- Warto rozwiązywać problemy z optymalizacją uwzględniając, która część sprzętu niedomaga (CPU vs GPU)
Jaką wiedzę należy przekazać
Dzięki udziałowi w zajęciach uczestnicy:
- Poznają narzędzia jak Auditor, Profiler czy Analyzer
- Poznają narzędzia jak Frame czy Physics Debugger
- Zrozumieją koncepcję Frame Budget
- Nauczą się rozróżniać problemy wydajności dla procesora oraz karty graficznej
- Dowiedzą się w jaki sposób bardziej precyzyjnie profilować własny kod
- Poznają najczęstsze problemy spowalniające grę, oraz w jaki sposób można je rozwiązać
Powyższe efekty to podstawowa wiedza i umiejętności jakie chcemy przekazać podczas zajęć.
Warto zapamiętać
Z angielskiego “key takeaways”, czyli kluczowe zagadnienia, które powinny zostać przyswojone przez odbiorców kursu.
- Jakie są dostępne narzędzia w Unity by profilować wydajność gry
- Czym jest Frame Budget i ile czasu ma gra by działać płynnie w 30 lub 60 FPS
- Różnica między wąskim gardłem na CPU oraz GPU i w jaki sposób sobie radzić w obu przypadkach
- Jakie są popularne problemy oraz jak można je rozwiązywać
- Unikanie GetComponent
- Poprawna konfiguracja obiektów fizycznych
- Unikanie nadmiernej alokacji pamięci, oraz minimalizacja GC
- Wykorzystanie Object Pool zamiast ciągłego tworzenia i niszczenia obiektów
- Łączenie gry w Development Build z Profilerem, poprzez opcję AutoConnect.
- Profilowanie oraz sprawdzanie optymalizacji powinno odbywać się przede wszystkim na platformach docelowych – optymalizacja problemów w edytorze pomoże, ale to finalny build gry jest tutaj najważniejszy