mirror of
https://github.com/kuhyx/praca_magisterska.git
synced 2026-07-04 13:43:05 +02:00
157 lines
6.4 KiB
TeX
157 lines
6.4 KiB
TeX
\clearpage
|
|
\section{Metodologia badań i kryteria porównania}
|
|
|
|
\subsection{Założenia metodologiczne}
|
|
\subsubsection{Cel badań}
|
|
Głównym celem badań jest porównanie wydajności i możliwości
|
|
wybranych silników gier.
|
|
|
|
\subsubsection{Hipotezy badawcze}
|
|
\begin{enumerate}
|
|
\item Silniki komercyjne oferują lepszą wydajność niż rozwiązania open source
|
|
\item Kompleksowość funkcjonalności wpływa negatywnie na wydajność
|
|
\item Łatwość użycia jest odwrotnie proporcjonalna do możliwości konfiguracji
|
|
\end{enumerate}
|
|
|
|
\subsection{Kryteria porównania}
|
|
\subsubsection{Wydajność}
|
|
\begin{itemize}
|
|
\item Szybkość renderowania (FPS)
|
|
\item Zużycie pamięci RAM
|
|
\item Obciążenie procesora
|
|
\item Zużycie pamięci karty graficznej
|
|
\item Czas ładowania scen
|
|
\end{itemize}
|
|
|
|
\subsubsection{Funkcjonalność}
|
|
\begin{itemize}
|
|
\item Wsparcie dla różnych typów renderingu
|
|
\item Systemy fizyki
|
|
\item Systemy audio
|
|
\item Wsparcie dla VR/AR
|
|
\item Możliwości skryptowania
|
|
\end{itemize}
|
|
|
|
\subsubsection{Użyteczność}
|
|
\begin{itemize}
|
|
\item Intuicyjność interfejsu
|
|
\item Jakość dokumentacji
|
|
\item Dostępność tutoriali
|
|
\item Wsparcie społeczności
|
|
\item Czas potrzebny na naukę
|
|
\end{itemize}
|
|
|
|
\subsection{Środowisko testowe}
|
|
|
|
\subsubsection{Specyfikacja sprzętowa}
|
|
\label{subsubsec:specyfikacja-sprzetowa}
|
|
|
|
Wszystkie testy wydajnościowe przeprowadzono na komputerze o następującej specyfikacji:
|
|
|
|
\begin{itemize}
|
|
\item \textbf{Procesor}: AMD Ryzen 9 7900X3D 12-Core Processor (24 rdzenie, 48 wątków)
|
|
\item \textbf{Karta graficzna}: NVIDIA GeForce RTX 3090
|
|
\item \textbf{Pamięć GPU}: 24 GB GDDR6X
|
|
\item \textbf{Sterowniki NVIDIA}: wersja 590.48.01
|
|
\item \textbf{Pamięć RAM}: 32 GB
|
|
\item \textbf{System operacyjny}: Arch Linux (jądro Linux 6.18.5-arch1-1)
|
|
\item \textbf{Dysk}: SSD o pojemności 3,6 TB
|
|
\end{itemize}
|
|
|
|
\subsubsection{Specyfikacja oprogramowania}
|
|
\label{subsubsec:specyfikacja-oprogramowania}
|
|
|
|
W badaniach wykorzystano następujące wersje oprogramowania:
|
|
|
|
\begin{itemize}
|
|
\item \textbf{Unity}: 6.0 (6000.0.58f2) LTS
|
|
\item \textbf{Unreal Engine}: 5.5.3
|
|
\item \textbf{NVIDIA Nsight Systems}: 2025.5.2
|
|
\end{itemize}
|
|
|
|
Wybór wersji LTS silnika Unity podyktowany był stabilnością oraz długoterminowym wsparciem, co jest istotne z punktu widzenia powtarzalności badań. W przypadku Unreal Engine wybrano najnowszą dostępną wersję stabilną w momencie rozpoczęcia badań.
|
|
|
|
\subsubsection{Konfiguracja testowa}
|
|
\label{subsubsec:konfiguracja-testowa}
|
|
|
|
Przed wykonaniem każdego testu zastosowano następującą procedurę przygotowawczą:
|
|
\begin{enumerate}
|
|
\item Zamknięto wszystkie aplikacje działające w tle
|
|
\item Wyłączono automatyczne aktualizacje systemu
|
|
\item Ustawiono tryb wydajności zasilania (performance mode)
|
|
\item Odczekano 5 minut na stabilizację termiczną systemu
|
|
\item Wykonano 3 pomiary dla każdego scenariusza testowego, z których obliczono wartość średnią
|
|
\end{enumerate}
|
|
|
|
\subsection{Projekt testów}
|
|
|
|
\subsubsection{Gra testowa typu \emph{bullet hell}}
|
|
\label{subsubsec:gra-testowa}
|
|
|
|
Na potrzeby badań porównawczych zaimplementowano identyczną grę w gatunku \emph{bullet hell} w obu silnikach. Gra charakteryzuje się następującymi cechami:
|
|
|
|
\begin{itemize}
|
|
\item Sterowany przez gracza statek kosmiczny
|
|
\item System generowania przeciwników z progresywnie rosnącym obciążeniem
|
|
\item Generowanie wzorców pocisków
|
|
\item Wykrywanie kolizji między obiektami
|
|
\item Tryb przetrwania trwający 90 sekund
|
|
\end{itemize}
|
|
|
|
Wybór gatunku \emph{bullet hell} podyktowany był możliwością generowania dużej liczby obiektów na ekranie (pociski, przeciwnicy, efekty wizualne), co pozwala na skuteczne obciążenie silnika graficznego i zbadanie jego wydajności w warunkach ekstremalnych.
|
|
|
|
\subsubsection{Fazy obciążenia}
|
|
\label{subsubsec:fazy-obciazenia}
|
|
|
|
Gra testowa została zaprojektowana tak, aby w ciągu 90 sekund rozgrywki przechodziła przez trzy fazy o różnym poziomie obciążenia:
|
|
|
|
\paragraph{Faza 1: Niskie obciążenie (0--30 sekund)}
|
|
\begin{itemize}
|
|
\item Liczba pocisków na ekranie: 50--100
|
|
\item Aktywni przeciwnicy: 2--3
|
|
\item Oczekiwana stabilna liczba klatek: 60 FPS
|
|
\item Oczekiwane wykorzystanie GPU: poniżej 50\%
|
|
\end{itemize}
|
|
|
|
\paragraph{Faza 2: Średnie obciążenie (30--60 sekund)}
|
|
\begin{itemize}
|
|
\item Liczba pocisków na ekranie: 200--300
|
|
\item Aktywni przeciwnicy: 5--7
|
|
\item Oczekiwane wykorzystanie GPU: 50--70\%
|
|
\item Możliwe niewielkie spadki liczby klatek
|
|
\end{itemize}
|
|
|
|
\paragraph{Faza 3: Wysokie obciążenie (60--90 sekund)}
|
|
\begin{itemize}
|
|
\item Liczba pocisków na ekranie: ponad 500
|
|
\item Aktywni przeciwnicy: ponad 10
|
|
\item Oczekiwane wykorzystanie GPU: powyżej 70\%
|
|
\item Potencjalne znaczące spadki liczby klatek
|
|
\end{itemize}
|
|
|
|
\subsubsection{Metryki i wskaźniki}
|
|
\label{subsubsec:metryki}
|
|
|
|
W ramach testów wydajnościowych mierzono następujące parametry:
|
|
|
|
\begin{enumerate}
|
|
\item \textbf{Czas klatki} (ang. \emph{frame time}) -- czas potrzebny na wyrenderowanie pojedynczej klatki, wyrażony w milisekundach
|
|
\item \textbf{Liczba klatek na sekundę} (FPS) -- wartość pochodna od czasu klatki
|
|
\item \textbf{Wykorzystanie GPU} -- procentowe obciążenie karty graficznej
|
|
\item \textbf{Zużycie pamięci} -- pamięć VRAM oraz RAM wykorzystywana przez aplikację
|
|
\item \textbf{Liczba wywołań rysowania} (ang. \emph{draw calls}) -- liczba wywołań API graficznego na klatkę
|
|
\item \textbf{Liczba wierzchołków} -- całkowita liczba wierzchołków renderowanych na klatkę
|
|
\end{enumerate}
|
|
|
|
\subsubsection{Procedura zbierania danych}
|
|
\label{subsubsec:procedura-zbierania}
|
|
|
|
Dla każdego silnika przeprowadzono trzy pełne przebiegi gry (90 sekund każdy), co dało łącznie 6 sesji pomiarowych. Narzędzie NVIDIA Nsight Systems rejestrowało dane wydajnościowe przez cały czas trwania rozgrywki, umożliwiając późniejszą analizę poszczególnych faz obciążenia.
|
|
|
|
Punkty pomiaru dla każdej fazy:
|
|
\begin{itemize}
|
|
\item \textbf{Faza 1}: 10s (wczesne niskie obciążenie), 20s (stabilne niskie obciążenie), 25s (koniec fazy)
|
|
\item \textbf{Faza 2}: 35s (przejście do średniego obciążenia), 45s (stabilne średnie obciążenie), 55s (koniec fazy)
|
|
\item \textbf{Faza 3}: 65s (przejście do wysokiego obciążenia), 75s (szczytowe obciążenie), 85s (koniec fazy)
|
|
\end{itemize}
|