% Test Scenarios for Chapter 5 - Performance Tests % Copy this content into latex/tex/5-testy-wydajnosci.tex \clearpage \section{Testy wydajności} \label{sec:testy-wydajnosci} \subsection{Metodyka przeprowadzania testów} \subsubsection{Przygotowanie środowiska testowego} Wszystkie testy wydajnościowe przeprowadzono w~kontrolowanych warunkach, zapewniających powtarzalność i~porównywalność wyników~\cite{petridis2012benchmarking}. Przed każdym cyklem pomiarowym wykonano następujące kroki przygotowawcze: \begin{enumerate} \item Zamknięto wszystkie aplikacje działające w~tle \item Wyłączono automatyczne aktualizacje systemu operacyjnego \item Odczekano 1~minutę na stabilizację temperatury komponentów \item Wykonano jeden pomiar próbny przed rejestracją właściwych wyników \end{enumerate} \subsubsection{Standaryzacja warunków testowych} Aby zapewnić porównywalność wyników między Unity a~Unreal Engine, opracowano trzy scenariusze testowe o~zróżnicowanym poziomie obciążenia. Każdy scenariusz został zaimplementowany w~identyczny sposób w~obu silnikach, z~następującymi parametrami: \begin{table}[h!] \centering \caption{Parametry scenariuszy testowych} \label{tab:test-scenarios} \begin{tabular}{|l|c|c|c|} \hline \textbf{Parametr} & \textbf{Niski} & \textbf{Średni} & \textbf{Wysoki} \\ \hline\hline Liczba pocisków & 50--100 & 200--300 & 500+ \\ \hline Liczba przeciwników & 2--3 & 5--7 & 10+ \\ \hline Czas trwania testu & 30 s & 30 s & 30 s \\ \hline Liczba pomiarów & 5 & 5 & 5 \\ \hline \end{tabular} \end{table} \subsection{Scenariusze testowe gry bullet-hell} \subsubsection{Scenariusz 1: Niski poziom trudności (baseline)} \paragraph{Cel testu} Ustalenie wydajności bazowej przy minimalnym obciążeniu systemu renderowania i~fizyki. \paragraph{Parametry} \begin{itemize} \item \textbf{Liczba pocisków na ekranie}: 50--100 jednocześnie \item \textbf{Aktywni przeciwnicy}: 2--3 jednostki \item \textbf{Czas trwania pomiaru}: 30 sekund \item \textbf{Liczba powtórzeń}: 5 przechwytów klatek w~odstępach 5-sekundowych \end{itemize} \paragraph{Oczekiwane rezultaty} W~scenariuszu bazowym oczekiwano stabilnej częstotliwości odświeżania na poziomie 60~FPS, niskiego wykorzystania GPU~(<50\%) oraz minimalnego zużycia pamięci. \subsubsection{Scenariusz 2: Średni poziom trudności} \paragraph{Cel testu} Ocena wydajności przy umiarkowanym obciążeniu systemu, symulująca typową rozgrywkę. \paragraph{Parametry} \begin{itemize} \item \textbf{Liczba pocisków na ekranie}: 200--300 jednocześnie \item \textbf{Aktywni przeciwnicy}: 5--7 jednostek \item \textbf{Czas trwania pomiaru}: 30 sekund \item \textbf{Liczba powtórzeń}: 5 przechwytów klatek w~odstępach 5-sekundowych \end{itemize} \paragraph{Oczekiwane rezultaty} Przewidywano umiarkowane wykorzystanie GPU~(50--70\%), możliwe niewielkie spadki częstotliwości klatek oraz wzrost zużycia pamięci. \subsubsection{Scenariusz 3: Wysoki poziom trudności (test obciążeniowy)} \paragraph{Cel testu} Weryfikacja wydajności w~ekstremalnych warunkach przy maksymalnym obciążeniu systemu. \paragraph{Parametry} \begin{itemize} \item \textbf{Liczba pocisków na ekranie}: 500+ jednocześnie \item \textbf{Aktywni przeciwnicy}: 10+ jednostek \item \textbf{Czas trwania pomiaru}: 30 sekund \item \textbf{Liczba powtórzeń}: 5 przechwytów klatek w~odstępach 5-sekundowych \end{itemize} \paragraph{Oczekiwane rezultaty} W~scenariuszu obciążeniowym spodziewano się wysokiego wykorzystania GPU~(>70\%), potencjalnych spadków wydajności oraz maksymalnego zaobserwowanego zużycia pamięci. \subsection{Metryki wydajności} \subsubsection{Zbierane dane} Dla każdego scenariusza i~silnika rejestrowano następujące metryki przy użyciu NVIDIA Nsight Graphics: \begin{itemize} \item \textbf{Czas klatki} (frame time) -- czas renderowania pojedynczej klatki w~milisekundach \item \textbf{FPS} (frames per second) -- liczba klatek na sekundę, wyliczana jako $1000 / \text{frame time}$ \item \textbf{Wykorzystanie GPU} -- procent wykorzystania mocy obliczeniowej karty graficznej \item \textbf{Zużycie pamięci VRAM} -- ilość zajętej pamięci karty graficznej w~megabajtach \item \textbf{Liczba wywołań rysowania} (draw calls) -- liczba instrukcji renderowania na klatkę \item \textbf{Liczba wierzchołków} -- całkowita liczba przetworzonych wierzchołków na klatkę \end{itemize} \subsection{Wyniki testów} \subsubsection{Tabele z wynikami pomiarów} % Placeholder table - fill with actual data \begin{table}[h!] \centering \caption{Wyniki testów wydajności -- Scenariusz niski} \label{tab:results-low} \begin{tabular}{|l|c|c|c|c|} \hline \textbf{Metryka} & \textbf{Unity śr.} & \textbf{Unity odch.} & \textbf{Unreal śr.} & \textbf{Unreal odch.} \\ \hline\hline Czas klatki [ms] & [DATA] & [DATA] & [DATA] & [DATA] \\ \hline FPS & [DATA] & [DATA] & [DATA] & [DATA] \\ \hline GPU [\%] & [DATA] & [DATA] & [DATA] & [DATA] \\ \hline VRAM [MB] & [DATA] & [DATA] & [DATA] & [DATA] \\ \hline Draw calls & [DATA] & [DATA] & [DATA] & [DATA] \\ \hline Wierzchołki [tys.] & [DATA] & [DATA] & [DATA] & [DATA] \\ \hline \end{tabular} \end{table} \begin{table}[h!] \centering \caption{Wyniki testów wydajności -- Scenariusz średni} \label{tab:results-medium} \begin{tabular}{|l|c|c|c|c|} \hline \textbf{Metryka} & \textbf{Unity śr.} & \textbf{Unity odch.} & \textbf{Unreal śr.} & \textbf{Unreal odch.} \\ \hline\hline Czas klatki [ms] & [DATA] & [DATA] & [DATA] & [DATA] \\ \hline FPS & [DATA] & [DATA] & [DATA] & [DATA] \\ \hline GPU [\%] & [DATA] & [DATA] & [DATA] & [DATA] \\ \hline VRAM [MB] & [DATA] & [DATA] & [DATA] & [DATA] \\ \hline Draw calls & [DATA] & [DATA] & [DATA] & [DATA] \\ \hline Wierzchołki [tys.] & [DATA] & [DATA] & [DATA] & [DATA] \\ \hline \end{tabular} \end{table} \begin{table}[h!] \centering \caption{Wyniki testów wydajności -- Scenariusz wysoki} \label{tab:results-high} \begin{tabular}{|l|c|c|c|c|} \hline \textbf{Metryka} & \textbf{Unity śr.} & \textbf{Unity odch.} & \textbf{Unreal śr.} & \textbf{Unreal odch.} \\ \hline\hline Czas klatki [ms] & [DATA] & [DATA] & [DATA] & [DATA] \\ \hline FPS & [DATA] & [DATA] & [DATA] & [DATA] \\ \hline GPU [\%] & [DATA] & [DATA] & [DATA] & [DATA] \\ \hline VRAM [MB] & [DATA] & [DATA] & [DATA] & [DATA] \\ \hline Draw calls & [DATA] & [DATA] & [DATA] & [DATA] \\ \hline Wierzchołki [tys.] & [DATA] & [DATA] & [DATA] & [DATA] \\ \hline \end{tabular} \end{table} \subsubsection{Placeholder dla wykresów} % Placeholder - replace with actual figures generated from data \begin{figure}[h!] \centering % \includegraphics[width=0.8\linewidth]{tex/img/frame-time-comparison.pdf} \caption{Porównanie czasu klatki między Unity a~Unreal Engine w~trzech scenariuszach testowych. [PLACEHOLDER -- wygeneruj wykres za pomocą skryptu scripts/generate\_plots.py]} \label{fig:frame-time-comparison} \end{figure} \begin{figure}[h!] \centering % \includegraphics[width=0.8\linewidth]{tex/img/gpu-utilization.pdf} \caption{Wykorzystanie GPU w~funkcji liczby obiektów na ekranie. [PLACEHOLDER -- wygeneruj wykres za pomocą skryptu scripts/generate\_plots.py]} \label{fig:gpu-utilization} \end{figure} \begin{figure}[h!] \centering % \includegraphics[width=0.8\linewidth]{tex/img/memory-usage.pdf} \caption{Zużycie pamięci VRAM w~trzech scenariuszach testowych. [PLACEHOLDER -- wygeneruj wykres za pomocą skryptu scripts/generate\_plots.py]} \label{fig:memory-usage} \end{figure} \subsection{Analiza wyników} \subsubsection{Wydajność w scenariuszu bazowym} [ANALIZA -- wypełnij po zebraniu danych] Jak przedstawiono w~Tabeli~\ref{tab:results-low}, w~scenariuszu o~niskim obciążeniu oba silniki... \subsubsection{Wydajność w scenariuszu średnim} [ANALIZA -- wypełnij po zebraniu danych] Wyniki przedstawione w~Tabeli~\ref{tab:results-medium} wskazują, że... \subsubsection{Wydajność w scenariuszu obciążeniowym} [ANALIZA -- wypełnij po zebraniu danych] Najbardziej wymagający scenariusz (Tabela~\ref{tab:results-high}) ujawnił... \subsection{Podsumowanie wyników testów wydajności} \begin{table}[h!] \centering \caption{Zestawienie zbiorcze wyników testów} \label{tab:summary} \begin{tabular}{|l|c|c|c|} \hline \textbf{Kryterium} & \textbf{Unity} & \textbf{Unreal} & \textbf{Zwycięzca} \\ \hline\hline Średni FPS (niski) & [DATA] & [DATA] & [TBD] \\ \hline Średni FPS (średni) & [DATA] & [DATA] & [TBD] \\ \hline Średni FPS (wysoki) & [DATA] & [DATA] & [TBD] \\ \hline Zużycie VRAM & [DATA] & [DATA] & [TBD] \\ \hline Efektywność draw calls & [DATA] & [DATA] & [TBD] \\ \hline \end{tabular} \end{table}