\clearpage
\section{Podsumowanie i wnioski}

\subsection{Realizacja celów pracy}

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:

\paragraph{Wydajność w~fazie maksymalnego obciążenia}
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.

\paragraph{Wykorzystanie zasobów GPU}
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.

\paragraph{Architektura renderowania}
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}

\paragraph{Stabilność wydajności}
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ń}

\subsubsection{Wyniki testów wydajnościowych}

\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}

\subsubsection{Wyniki analizy implementacji}

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}

\subsubsection{Wyniki wywiadów z~deweloperami}

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:

\subsubsection{Wybór Unity jest wskazany gdy}

\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}

\subsubsection{Wybór Unreal Engine jest wskazany gdy}

\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ń:

\paragraph{Rozszerzenie zakresu gatunkowego}
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.

\paragraph{Testy wieloplatformowe}
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.

\paragraph{Analiza ekonomiczna}
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.

\paragraph{Badania longitudinalne}
Ś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.

\paragraph{Automatyzacja metodologii}
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}

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.
