\clearpage
\raggedbottom
\section{Podsumowanie i wnioski}

Celem niniejszej pracy było porównanie wydajności i~możliwości dwóch wiodących silników gier komputerowych -- Unity oraz Unreal Engine -- ze~szczególnym uwzględnieniem ich wpływu na~proces tworzenia gier oraz~końcową jakość produktu. Cel ten został zrealizowany poprzez:

\begin{enumerate}
    \item Przeprowadzenie szczegółowych testów wydajnościowych z~wykorzystaniem niezależnego narzędzia NVIDIA Nsight Systems.
    \item Implementację identycznej gry typu bullet hell w~obu silnikach.
    \item Analizę porównawczą funkcjonalności i~możliwości obu silników.
    \item Przeprowadzenie wywiadów jakościowych z~ośmioma deweloperami gier.
\end{enumerate}

\subsection{Weryfikacja hipotezy badawczej}

Postawiona hipoteza badawcza brzmiała: \textit{,,Silnik Unity, dzięki natywnemu wsparciu 
dla~grafiki 2D, osiągnie lepszą wydajność w~grze typu bullet hell niż Unreal Engine, 
który jest zoptymalizowany przede wszystkim pod~kątem aplikacji 3D.''}

Wyniki badań \textbf{częściowo potwierdzają} tę hipotezę, jednak obraz jest bardziej złożony niż początkowo zakładano:

W~fazie 3 testu (60--90 sekund), reprezentującej maksymalne obciążenie sceny, oba silniki osiągnęły zbliżoną wydajność: Unity z~wartością 1\% low na~poziomie 132~FPS oraz Unreal Engine ze~średnią 162~FPS. Różnica około 23\% na~korzyść Unreal wynika częściowo z~różnych konfiguracji synchronizacji pionowej.

Unity wykorzystywał jedynie 23\% mocy obliczeniowej GPU (ograniczony przez V-Sync), podczas gdy Unreal Engine osiągał 91\% wykorzystania w~fazach 1--2. Sugeruje to znaczny potencjał wydajnościowy Unity przy wyłączonej synchronizacji pionowej.

Analiza wywołań Vulkan API ujawniła fundamentalne różnice architektoniczne:
\begin{itemize}
    \item Unity: prosty, dwuetapowy potok renderowania (2 wywołania \\ \texttt{vkQueueSubmit} na~klatkę), 
    zdominowany przez oczekiwanie na~GPU \\ (\texttt{vkWaitForFences} -- 95,2\% czasu).
    \item Unreal Engine: złożony potok z~16 wywołaniami \texttt{vkQueueSubmit} na~klatkę, zdominowany przez dynamiczną kompilację potoków (47--72\% czasu).
\end{itemize}

Unity wykazał większą stabilność czasów klatek (98,24\% klatek w~przedziale 5--10~ms), podczas gdy Unreal Engine doświadczył spadku wydajności o~ponad 50\% między fazami niskiego (332--339~FPS) a~wysokiego obciążenia (162~FPS).

\subsection{Główne wyniki badań}


\begin{table}[H]
\centering
\caption{Zestawienie kluczowych wyników testów wydajności}
\label{tab:podsumowanie-wydajnosc}
\begin{tabular}{|l|r|r|}
\hline
\textbf{Metryka} & \textbf{Unity} & \textbf{Unreal Engine} \\
\hline
Średni FPS (niskie obciążenie) & 164 (V-Sync) & 332--339 \\
FPS w~wymagającej scenie & 132 (1\% low) & 162 (faza 3) \\
Wykorzystanie GPU (\%) & 23 & 91 / 50 \\
Wywołania Vulkan API & $\sim$0,5 mln & $\sim$32 mln \\
Wywołania synchronizacji OS & 29\,383 & $\sim$9 mln \\
Potoki graficzne utworzone & 3 & $\sim$2\,400 \\
\hline
\end{tabular}
\end{table}


Praktyczna implementacja gry bullet hell potwierdziła przewagę Unity dla~tego typu projektów:

\begin{itemize}
    \item \textbf{Czas implementacji}: Unity wymagał około 60\% czasu potrzebnego na~implementację w~Unreal Engine.
    \item \textbf{Wsparcie 2D}: Unity oferuje natywne komponenty 2D (\texttt{Rigidbody2D}, \texttt{Collider2D}), podczas gdy Unreal symuluje 2D w~środowisku 3D.
    \item \textbf{Object pooling}: Implementacja w~Unity jest prostsza
    (pojedyncza metoda \\ \texttt{SetActive}) vs Unreal (trzy osobne metody:
    \texttt{SetActorHiddenInGame}, 
    \\ \texttt{SetActorEnableCollision}, 
    \texttt{SetActorTickEnabled}).
    \item \textbf{Instalacja na~Linux}: Unity -- około 30 minut, Unreal -- 2--4 godziny.
\end{itemize}


Badania jakościowe z~udziałem 8~deweloperów potwierdziły:

\begin{itemize}
    \item Unity charakteryzuje się niższym progiem wejścia i~lepszą dokumentacją.
    \item Unreal Engine wymusza bardziej uporządkowaną strukturę projektu.
    \item System Blueprints ułatwia współpracę z~osobami nietechnicznymi.
    \item Problemy z~garbage collectorem w~Unity są znane, ale~rzadko doświadczane przy stosowaniu dobrych praktyk (object pooling).
    \item Obie społeczności deweloperskie są aktywne, choć Unity ma~przewagę ilościową w~materiałach edukacyjnych.
\end{itemize}

\subsection{Rekomendacje praktyczne}

Na~podstawie przeprowadzonych badań sformułowano następujące rekomendacje:


\begin{itemize}
    \item Projekt dotyczy gry 2D lub mobilnej.
    \item Zespół składa się z~początkujących deweloperów.
    \item Wymagany jest szybki cykl iteracji (hot reload).
    \item Projekt ma~ograniczony budżet czasowy na~naukę narzędzia.
    \item Preferowany jest język C\# nad C++.
    \item Wymagana jest dobra integracja z~Git (tekstowa serializacja scen).
\end{itemize}


\begin{itemize}
    \item Projekt wymaga fotorealistycznej grafiki 3D.
    \item Zespół posiada doświadczenie w~C++.
    \item Projekt jest typu FPS lub AAA.
    \item W~zespole znajdują się osoby nietechniczne (designerzy, artyści).
    \item Wymagane są zaawansowane funkcje wizualne (Nanite, Lumen).
    \item Projekt wymaga dostępu do~kodu źródłowego silnika.
\end{itemize}

\begin{table}[H]
\centering
\caption{Macierz rekomendacji wyboru silnika}
\label{tab:macierz-rekomendacji}
\begin{tabular}{|l|c|c|}
\hline
\textbf{Typ projektu} & \textbf{Rekomendacja} & \textbf{Uzasadnienie} \\
\hline
Gra 2D indie & Unity & Natywne wsparcie 2D \\
\hline
Gra mobilna & Unity & Optymalizacja, rozmiar buildu \\
\hline
Gra bullet hell & Unity & Prosty potok renderowania \\
\hline
Gra 3D AAA & Unreal & Nanite, Lumen, fotorealizm \\
\hline
Gra VR high-end & Unreal & Zaawansowane oświetlenie \\
\hline
Gra VR mobilna & Unity & Optymalizacja mobilna \\
\hline
Prototyp & Unity & Szybki cykl iteracji \\
\hline
\end{tabular}
\end{table}

\subsection{Wkład naukowy pracy}

Niniejsza praca wnosi następujące elementy do~dziedziny badań nad~silnikami gier:

\begin{enumerate}
    \item \textbf{Zunifikowana metodyka pomiaru} -- wykorzystanie NVIDIA Nsight Systems jako 
    niezależnego narzędzia profilowania eliminuje różnice wynikające z~wbudowanych profilerów 
    silników, zapewniając porównywalność wyników.

    \item \textbf{Szczegółowa analiza wywołań API} -- dokumentacja ponad 32~milionów wywołań 
    Vulkan API dla~Unreal Engine i~0,5~miliona dla~Unity dostarcza wglądu w~architekturę 
    renderowania obu silników.

    \item \textbf{Triangulacja metod badawczych} -- połączenie testów wydajnościowych, analizy 
    funkcjonalności, doświadczeń implementacyjnych i~wywiadów jakościowych daje kompleksowy 
    obraz porównawczy.

    \item \textbf{Praktyczne przypadki użycia} -- konkretne rekomendacje oparte na~danych empirycznych mogą służyć jako przewodnik dla~deweloperów.
\end{enumerate}

\subsection{Ograniczenia badań}

Przeprowadzone badania posiadają następujące ograniczenia:

\begin{enumerate}
    \item \textbf{Zakres gatunkowy} -- koncentracja na~grach typu bullet hell 
    nie~pokrywa 
    wszystkich możliwych zastosowań silników gier; inne gatunki (RPG, RTS, puzzle) 
    mogą wykazywać odmienne charakterystyki wydajnościowe.


    \item \textbf{Pojedyncza konfiguracja sprzętowa} -- testy na~wysokowydajnym sprzęcie (RTX 3090, Ryzen 9 7900X3D) nie~odzwierciedlają wydajności na~typowych konfiguracjach graczy.

    \item \textbf{Próba badawcza} -- 8~wywiadów stanowi relatywnie małą próbę, choć~wystarczającą dla~badań jakościowych o~charakterze eksploracyjnym.

    \item \textbf{Ewolucja silników} -- szybki rozwój obu silników może spowodować dezaktualizację wyników w~ciągu 12--24 miesięcy.
\end{enumerate}

\subsection{Propozycje dalszych badań}

Na~podstawie zidentyfikowanych ograniczeń proponuje się następujące kierunki przyszłych badań:

Przeprowadzenie analogicznych testów 
dla~gier RPG (open world), strategii czasu rzeczywistego, gier puzzle oraz symulatorów 
pozwoliłoby na~bardziej kompleksową ocenę wydajności silników.

Porównanie wydajności na~różnych konfiguracjach sprzętowych 
(PC low-end, \\ mid-range, high-end; urządzenia mobilne; konsole) dostarczyłoby 
praktycznych informacji dla~deweloperów celujących w~różne platformy.

Badanie Total Cost of Ownership (TCO) uwzględniające czas nauki zespołu, 
koszty licencji, assetów, czas rozwoju i~koszty utrzymania projektu mogłoby 
dostarczyć cennych informacji biznesowych.

Śledzenie wydajności obu silników przez~2--3 lata, dokumentując wpływ kolejnych aktualizacji, pozwoliłoby na~ocenę długoterminowej stabilności i~kierunków rozwoju.

Stworzenie frameworka do~automatycznego uruchamiania i~profilowania scenariuszy testowych 
umożliwiłoby powtarzalne badania na~większą skalę.

\subsection{Refleksje końcowe}

Przeprowadzone badania potwierdzają, że~nie~istnieje jednoznaczna odpowiedź na~pytanie ,,
który silnik jest lepszy''. Unity i~Unreal Engine reprezentują różne filozofie projektowe 
i~są zoptymalizowane pod~odmienne przypadki użycia.

\textbf{Unity} wyróżnia się jako silnik oferujący:
\begin{itemize}
    \item Niższy próg wejścia i~szybszą krzywą uczenia.
    \item Lepsze natywne wsparcie dla~grafiki 2D.
    \item Prostszy i~bardziej przewidywalny potok renderowania.
    \item Efektywniejszą pracę na~platformach mobilnych.
    \item Większą społeczność i~więcej materiałów edukacyjnych.
\end{itemize}

\textbf{Unreal Engine} natomiast dominuje w~obszarach:
\begin{itemize}
    \item Zaawansowanej grafiki 3D i~fotorealizmu.
    \item Produkcji wysokobudżetowych (AAA).
    \item Współpracy z~osobami nietechnicznymi (Blueprints).
    \item Dostępu do~kodu źródłowego silnika.
    \item Wbudowanych zaawansowanych funkcji (Nanite, Lumen).
\end{itemize}
\newpage
W~kontekście testowanej gry bullet hell hipoteza o~przewadze Unity została częściowo potwierdzona -- 
silnik oferuje prostszą architekturę renderowania, stabilniejsze czasy klatek i~znacznie 
łatwiejszy proces implementacji. Jednakże Unreal Engine wykazał zdolność do~osiągania porównywalnej 
wydajności w~wymagających scenach, co~sugeruje, że~różnice wydajnościowe są mniejsze niż różnice 
w~doświadczeniu deweloperskim.

Kluczem do~sukcesu jest \textbf{świadomy wybór narzędzia dopasowanego do~konkretnego projektu}, zespołu i~celów biznesowych. W~dynamicznie rozwijającej się branży gier znajomość obu silników staje się coraz bardziej wartościową umiejętnością, pozwalającą na~elastyczne dostosowanie się do~wymagań różnorodnych projektów.

Niniejsza praca stanowi wkład w~systematyzację wiedzy o~współczesnych silnikach gier i~może służyć jako punkt odniesienia dla~deweloperów podejmujących decyzję o~wyborze technologii oraz~dla~przyszłych badań w~tej dynamicznie rozwijającej się dziedzinie.
