\clearpage % Rozdziały zaczynamy od nowej strony. \section{Wstęp} W tym rozdziale przedstawiono motywację, cel oraz zakres pracy, wybór gry testowej oraz przyjętą metodologię. \subsection{Motywacja i cel pracy} Współczesny rynek gier komputerowych charakteryzuje się dynamicznym rozwojem technologicznym i~rosnącymi wymaganiami zarówno twórców, jak i graczy. Wybór odpowiedniego silnika gier jest kluczową decyzją, która wpływa na cały proces tworzenia gry, jej wydajność oraz możliwości techniczne. Celem niniejszej pracy jest porównanie wydajności i~możliwości dwóch głównych, współczesnych silników gier komputerowych, ze szczególnym uwzględnieniem ich wpływu na proces tworzenia gier oraz końcową jakość produktu. \subsection{Zakres pracy} Praca obejmuje analizę następujących aspektów: \begin{itemize} \item Wydajność renderowania grafiki. \item Możliwości i~funkcjonalności oferowane przez różne silniki. \item Łatwość użycia i~krzywa uczenia się. \item Praca z narzędziem przy użycji dużych modeli językowch. \item Ekosystem narzędzi i~społeczność deweloperska. \end{itemize} \subsection{Wybór gry testowej -- gatunek bullet hell}\label{subsec:bullet-hell} W~celu przeprowadzenia praktycznych testów wydajnościowych zdecydowano się na implementację gry z~gatunku \textbf{bullet hell} (dosł. ,,piekło pocisków''), znanego również jako \textbf{danmaku} (z jap. ,,kurtyna pocisków'') lub \textbf{manic shooter}. \textbf{Charakterystyka gatunku} Bullet hell to podgatunek gier typu shoot 'em up, w~którym gracz steruje zwykle niewielkim statkiem kosmicznym lub postacią, mierząc się z~falami przeciwników wystrzeliwujących ogromne ilości pocisków tworzących skomplikowane wzory na ekranie. Kluczowe cechy gatunku obejmują: \begin{itemize} \item \textbf{Masowa ilość pocisków} -- na ekranie jednocześnie może znajdować się od kilkuset do kilku tysięcy pocisków, tworzących złożone formacje geometryczne. \item \textbf{Precyzyjne hitboxy} -- obszar kolizji postaci gracza jest znacznie mniejszy niż jej wizualna reprezentacja (często ograniczony do kilku pikseli), co umożliwia nawigację między pociskami. \item \textbf{Duża liczba przeciwników} -- na ekranie jednocześnie pojawia się wiele jednostek przeciwnika, co zwiększa złożoność sytuacji i obciążenie systemu. \item \textbf{Ciągły ruch} -- gracz musi nieustannie przemieszczać się po ekranie, unikając kolizji. \item \textbf{Eskalacja trudności} -- wraz z~postępem gry wzrasta liczba przeciwników i~gęstość pocisków. \end{itemize} Klasyczne przykłady gatunku to serie \textit{Touhou Project}, \textit{DoDonPachi}, \textit{Ikaruga} lub \textit{Geometry Wars}. \begin{figure}[!h] \centering \includegraphics[width=1\linewidth]{touhou.jpg} \caption{Przykład gry z gatunku bullet hell (seria Touhou). \cite{glau2021touhou}} \label{fig:touhou} \end{figure} \textbf{Uzasadnienie wyboru gatunku} Gatunek bullet hell został wybrany jako podstawa testów wydajnościowych z~następujących powodów: \begin{enumerate} \item \textbf{Intensywne wykorzystanie zasobów} -- jednoczesne renderowanie setek lub tysięcy obiektów (pocisków) stanowi znaczące obciążenie dla systemu renderowania. \item \textbf{Testowanie zarządzania pamięcią} -- ciągłe tworzenie i~niszczenie obiektów pocisków eksponuje różnice w~implementacji garbage collectora (Unity/C\#) versus ręcznego zarządzania pamięcią (Unreal/C++). \item \textbf{Wymagania systemu fizyki} -- wykrywanie kolizji między graczem a~setkami pocisków w~każdej klatce obciąża system fizyki. \item \textbf{Prostota implementacji} -- podstawowa mechanika gry jest stosunkowo prosta koncepcyjnie, co pozwala skupić się na porównaniu wydajności, a~nie złożoności logiki gry. \item \textbf{Skalowalność testu} -- łatwo kontrolować poziom obciążenia poprzez modyfikację liczby aktywnych pocisków i~przeciwników. \item \textbf{Reprezentatywność dla gier 2D} -- gatunek jest typowym przedstawicielem gier 2D, co pozwala ocenić wsparcie silników dla tego segmentu rynku. \end{enumerate} \textbf{Parametry gry testowej} Zaimplementowana gra testowa charakteryzuje się następującymi parametrami: \begin{itemize} \item Czas rozgrywki: 90 sekund. \item Eskalacja trudności: liniowy wzrost częstotliwości spawnu przeciwników. \item Typy przeciwników: 3 warianty z~różnymi wzorami strzelania. \item System punktacji oparty na eliminacji przeciwników. \end{itemize} Te parametry zapewniają wystarczające obciążenie systemu do ujawnienia różnic wydajnościowych między silnikami, pozostając jednocześnie w~granicach typowych dla gier indie z~tego gatunku. \textbf{Struktura pracy} Praca składa się z~następujących rozdziałów: \begin{enumerate} \item \textbf{Wstęp} -- wprowadzenie do tematyki, motywacja, cel i~zakres pracy. \item \textbf{Przegląd literatury} -- analiza istniejących badań porównawczych silników gier. \item \textbf{Charakterystyka silników} -- szczegółowy opis Unity i~Unreal Engine. \item \textbf{Metodologia} -- opis metodyki badawczej i~kryteriów porównania. \item \textbf{Analiza wywiadów} -- wyniki badań jakościowych z~deweloperami. \item \textbf{Implementacja gry testowej} -- doświadczenia z~tworzenia gry w~obu silnikach. \item \textbf{Narzędzia profilowania} -- opis NVIDIA Nsight i~metodyki pomiarów. \item \textbf{Testy wydajności} -- wyniki pomiarów wydajnościowych. \item \textbf{Analiza możliwości} -- porównanie funkcjonalności silników. \item \textbf{Porównanie wyników} -- synteza i~analiza zebranych danych. \item \textbf{Podsumowanie} -- wnioski i~rekomendacje. \end{enumerate} \subsection{Metodologia} \begin{itemize} \item \textbf{Testy wydajnościowe} -- Pomiary z~wykorzystaniem NVIDIA Nsight Graphics, zapewniające porównywalność wyników między silnikami. \item \textbf{Wywiady z~deweloperami} -- badania jakościowe dostarczające kontekstu praktycznego użytkowania silników. \item \textbf{Implementacja porównawcza} -- stworzenie identycznej gry w~obu silnikach, dokumentując różnice w~procesie deweloperskim. \end{itemize}