Przejdź do głównej treści

Uczymy Robić Gry

Zajęcia stacjonarneWarsztat 2x45min
Opis jednozdaniowyPodczas tego modułu uczestnicy zapoznają się z tematem profilowania oraz optymalizacji gier wykorzystując narzędzia dostępne w Unity.
Materiały źródłowePodstawowe:

“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 lekcjaCelem 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