fix: some mintor visual errors

This commit is contained in:
Krzysztof kuhy Rudnicki 2026-01-31 21:33:47 +01:00
parent 01e7d3d037
commit 5c49242587
6 changed files with 11 additions and 17 deletions

Binary file not shown.

View File

@ -86,7 +86,7 @@ uwzględniając specyficzne wymagania tych dziedzin.
\textbf{Badania społeczności i ekosystemu}
Barczak i Woźniak \cite{barczak2019comparative} przeprowadzili kompleksowe studium porównawcze silników gier, analizując nie tylko aspekty techniczne, ale również dostępność zasobów edukacyjnych, aktywność społeczności i długoterminowe wsparcie.
\newpage
\textbf{Motywacja i cel pracy}
Przegląd literatury pokazuje, że istnieje wiele badań porównawczych

View File

@ -93,7 +93,7 @@ progresywnie zwiększała obciążenie poprzez:
\item \textbf{Maksymalna liczba przeciwników} -- limit jednoczesnych
przeciwników na scenie wynosi 200 jednostek
\end{itemize}
\newpage
Na potrzeby profilowania rozgrywka została podzielona na trzy fazy czasowe:
Początkowa faza z~niskim obciążeniem. Spawner generuje wyłącznie podstawowych

View File

@ -476,7 +476,6 @@ SM Issue [\%] & 13,94 & 0 & 99 \\
\end{tabular}
\end{table}
Metryka \texttt{GPU Active} określa procentowy udział czasu, w którym karta graficzna wykonuje jakąkolwiek pracę obliczeniową.
Średnia wartość \textbf{90,98\%} dla faz 1--2 (aktywna rozgrywka) oznacza, że GPU był niemal w pełni wykorzystany podczas właściwej rozgrywki.
Faza 3 wykazała niższą wartość (49,55\%) ze względu na włączenie ekranu zwycięstwa i procesu zamykania gry.
@ -601,8 +600,10 @@ Minimalne wartości odpowiadają krótkim momentom niższego obciążenia podcza
Dzięki zastosowaniu profilowania fazowego uzyskano \textbf{kompletne dane} śledzenia Vulkan API z całego 90-sekundowego przebiegu gry Unreal Engine.
Dane podzielone na trzy fazy (0--30s, 30--60s, 60--90s) umożliwiają szczegółową analizę ewolucji wykorzystania GPU w czasie rozgrywki.
\begin{table}[H]
\begingroup
\setlength{\textfloatsep}{0.5\baselineskip}
\setlength{\intextsep}{0.5\baselineskip}
\begin{table}[H]
\centering
\caption{Porównanie wywołań Vulkan API silnika Unreal Engine między fazami}
\label{tab:unreal-vulkan-phases}
@ -622,7 +623,7 @@ vkCmdBindPipeline & 2\,236\,013 & 2\,528\,014 & 1\,007\,615 \\
\end{tabular}
\end{table}
\endgroup
Tabela~\ref{tab:unreal-vulkan-phases} ujawnia znaczącą dynamikę wydajności między fazami.
Fazy 1 i 2 (aktywna rozgrywka) osiągają wysoką wydajność
(332--339 FPS), natomiast faza 3 pokazuje \textbf{znaczący spadek do 162 FPS} -- redukcję o
@ -668,7 +669,6 @@ wskazuje na konsystentną architekturę potoku renderowania niezależną od obci
\end{tabular}
\end{table}
W przeciwieństwie do Unity, gdzie dominującą funkcją był \texttt{vkWaitForFences},
w Unreal Engine \textbf{57--72\% czasu} Vulkan API
pochłonęły funkcje tworzenia potoków.
@ -704,7 +704,6 @@ Nsight Systems tworzy nową sesję dla każdej fazy.
\end{tabular}
\end{table}
W ostrzym kontraście z Unity (gdzie \texttt{vkWaitForFences} stanowił 95,2\% czasu), w Unreal Engine funkcja ta pochłonęła zaledwie
\textbf{0,5\% czasu} ze średnim czasem oczekiwania 3,63 $\mu$s. Tak niski czas oczekiwania wskazuje na:
\begin{itemize}
@ -736,7 +735,6 @@ wieloma przebiegami (deferred rendering, post-processing, UI).
\end{tabular}
\end{table}
Liczba wywołań \\ \texttt{vkCmdBindPipeline} (\textbf{5\,771\,642}
łącznie we wszystkich fazach) jest \\ ponad \textbf{213 razy większa} niż w
Unity (27\,027), \\ co odpowiada około 218 zmianom potoku na klatkę. Tak wysoka wartość wynika z:
@ -784,9 +782,7 @@ wielowątkowego Unreal Engine. Łącznie zarejestrowano ponad \textbf{9 milionó
\end{tabular}
\end{table}
Funkcja \texttt{pthread\_cond\_wait} \\ pochłonęła \textbf{64,6\% czasu} przy
\textbf{3\,095\,188 wywołaniach} we wszystkich trzech fazach.
Funkcja \texttt{pthread\_cond\_wait} \\ pochłonęła \textbf{64,6\% czasu} przy \textbf{3\,095\,188 wywołaniach} we wszystkich trzech fazach.
Jest to funkcja POSIX do oczekiwania na zmienną warunkową, używana gdy wątek musi czekać na spełnienie określonego warunku sygnalizowanego przez
inny wątek.
@ -1007,7 +1003,6 @@ większe jednostki pracy autonomicznie, co minimalizuje narzut komunikacji.
\textbf{Unreal Engine} implementuje drobnoziarnisty paralelizm poprzez system TaskGraph. Praca jest dzielona na tysiące
małych zadań często komunikujących się ze sobą (ponad 3 miliony wywołań synchronizacji w 90 sekund).
\subsection{Podsumowanie wyników testów wydajności}
\label{subsec:podsumowanie-testow}
@ -1029,6 +1024,7 @@ Potoki graficzne utworzone & 3 & $\sim$2\,400 \\
\hline
\end{tabular}
\end{table}
\newpage
Przeprowadzone testy wydajnościowe pozwalają na sformułowanie następujących wniosków:

View File

@ -48,7 +48,7 @@ podgląd podstawowych metryk wydajności podczas \\ rozgrywki~\cite{unreal_docs}
\begin{figure}[H]
\centering
\includegraphics[width=0.9\textwidth]{tex/img/unreal_profiler.png}
\includegraphics[width=0.8\textwidth]{tex/img/unreal_profiler.png}
\caption{Interfejs Unreal Insights z~widokiem analizy wydajności.}
\label{fig:unreal-profiler}
\end{figure}
@ -95,7 +95,6 @@ był następującymi czynnikami:
NVIDIA Nsight Graphics oferuje szereg funkcjonalności istotnych dla badań wydajnościowych:
\newpage
Główny moduł analizy wydajności, umożliwiający:
\begin{itemize}
\item Przechwycenie i~analizę pojedynczej klatki (frame capture)

View File

@ -209,7 +209,7 @@ Część respondentów wyraziła zainteresowanie silnikiem Godot jako alternatyw
Respondenci przewidywali, że jeśli Unity nie poprawi swojego wizerunku \\
i~oferty, Godot może w~przyszłości stać się poważną konkurencją w~segmencie gier indie.
\newpage
\subsection{Podsumowanie wyników badań jakościowych}
\label{subsec:podsumowanie-wywiady}
@ -239,7 +239,6 @@ Na podstawie przeprowadzonych wywiadów można sformułować następujące wnios
\item Poradniki koncentrujące się na implementacji kosztem dobrych praktyk
\item Problemy z kompatybilnością między wersjami silników
\end{itemize}
\newpage
Na podstawie wywiadów można zasugerować następujące kryteria wyboru silnika: