mirror of
https://github.com/kuhyx/praca_magisterska.git
synced 2026-07-04 12:03:01 +02:00
222 lines
11 KiB
TeX
222 lines
11 KiB
TeX
\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.
|