%----------------------------------------------- % Engineer's & Master's Thesis Template % Copyleft by Artur M. Brodzki & Piotr Woźniak % Warsaw University of Technology, 2019-2022 %----------------------------------------------- \documentclass[ bindingoffset=5mm, % Binding offset footnoteindent=3mm, % Footnote indent hyphenation=true % Hyphenation turn on/off ]{src/wut-thesis} \graphicspath{{tex/img/}} % Katalog z obrazkami. \addbibresource{bibliografia.bib} % Plik .bib z bibliografią \usepackage{placeins} \usepackage{float} % Force Adagio Slab (required) for XeTeX/LuaTeX builds. % This ensures the font is set after other packages (e.g., babel) that may change encodings. \IfFileExists{fonts/PW_Adagio_Slab/Adagio_Slab-Regular.otf}{% \setmainfont[Path=fonts/PW_Adagio_Slab/,UprightFont=Adagio_Slab-Regular.otf,ItalicFont=Adagio_Slab-Regular_italic.otf,BoldFont=Adagio_Slab-Bold.otf,BoldItalicFont=Adagio_Slab-Bold_italic.otf]{Adagio Slab}% }{% \PackageError{wut-thesis}{Adagio Slab fonts not found in 'fonts/PW_Adagio_Slab'. Compilation requires these fonts.}{Please add the OTF files to the repository (latex/fonts/PW_Adagio_Slab/) and recompile with XeLaTeX or LuaLaTeX.} } % Fix ToC number width for deep sections (e.g. 5.10.1) \usepackage{tocloft} \setlength{\cftsecnumwidth}{3em} \setlength{\cftsubsecnumwidth}{4em} \setlength{\cftsubsubsecnumwidth}{5em} %------------------------------------------------------------- % Wybór wydziału: % \facultyeiti: Wydział Elektroniki i Technik Informacyjnych % \facultymeil: Wydział Mechaniczny Energetyki i Lotnictwa % -- % Rodzaj pracy: \EngineerThesis, \MasterThesis % -- % Wybór języka: \langpol, \langeng %------------------------------------------------------------- \facultyeiti % Wydział Elektroniki i Technik Informacyjnych \MasterThesis % Praca inżynierska \langpol % Praca w języku polskim \begin{document} %------------------ % Strona tytułowa %------------------ \instytut{Automatyki i Informatyki Stosowanej} \kierunek{Informatyka} \specjalnosc{Inteligetne Systemy} \title{ Porównanie wydajności i możliwości \\ współczesnych silników gier komputerowych } % Title in English for English theses % In English theses, you may remove this command \engtitle{ Comparison of performance and capabilities of modern computer games engines } \author{inż. Krzysztof Rudnicki} \album{307585} \promotor{dr inż. Michał Chwesiuk} \date{\the\year} \maketitle %------------------------------------- % Streszczenie po polsku dla \langpol % English abstract if \langeng is set %------------------------------------- \cleardoublepage % Zaczynamy od nieparzystej strony \abstract Przez ostatnią dekadę rynek tworzenia gier komputerowych \\ zdominowały dwa silniki: Unity oraz Unreal Engine. Niniejsza praca podejmuje się wyzwania przeprowadzenia analizy porównawczej obu tych silników pod kątem wyd ajności oraz procesu programowania gier. W~tym celu wykorzystano narzędzie do profilowania NVIDIA Nsight, służące do oceny wydajności aplikacji graficznych, w~szczególności do pomiaru czasu klatki, obciążenia GPU oraz efektywności renderowania. Przeprowadzono również wywiady środowiskowe z~osobami związanymi profesjonalnie z~tworzeniem gier na obu platformach, jak również opisano proces twórczy, napotkane trudności oraz przewagi każdego z~silników. Na potrzeby pracy stworzono dwie gry w~tym samym gatunku --- \emph{bullet hell} --- słynącym z mnogości elementów na ekranie i~efektów specjalnych, a~jednocześnie będącym relatywnie łatwym do zaimplementowania. Jedna gra została stworzona w~języku C\# (Unity), druga w~C++ (Unreal Engine). Następnie obie gry zostały poddane analizie w~programie NVIDIA Nsight w~celu oceny możliwości optymalizacji obu silników. Na podstawie wywiadów oraz analizy procesu twórczego scharakteryzowano również inne aspekty obu silników, takie jak próg wejścia, współpraca z systemami kontroli wersji oraz architektura silnika. Praca stara się wypełnić niszę w~literaturze i~badaniach związanych z~oceną obu silników do gier. \keywords Gry, Silniki do gier, C\#, C++, Unreal Engine, Unity, Gry \emph{bullet hell}, NVIDIA Nsight, Wydajność, Wywiady, Analiza porównawcza, Profilowanie, Renderowanie, Optymalizacja, Programowanie gier, Tworzenie gier, Czas klatki, Architektura silnika, Kontrola wersji, GPU %---------------------------------------- % Streszczenie po angielsku dla \langpol % Polish abstract if \langeng is set %---------------------------------------- \clearpage \secondabstract Over the past decade, the video game development market has been dominated by two engines: Unity and Unreal Engine. This thesis undertakes the challenge of conducting a~comparative analysis of both engines in terms of performance and game programming workflows. To this end, the profiling tool NVIDIA Nsight was utilized to evaluate the performance of graphics applications, particularly for measuring frame time, GPU load, and rendering efficiency. Expert interviews were also conducted with professionals involved in game development on both platforms, and the creative process, encountered difficulties, and advantages of each engine were described. For the purposes of this study, two games were developed in the same genre --- \emph{bullet hell} --- known for its abundance of on-screen elements and special effects, while being relatively straightforward to implement. One game was created in C\# (Unity), the other in C++ (Unreal Engine). Both games were then analyzed using NVIDIA Nsight to assess the optimization capabilities of both engines. Drawing from the interviews and analysis of the creative process, other aspects of both engines were also characterized, such as the learning curve, integration with version control systems, and engine architecture. This thesis aims to fill a~gap in the literature and research concerning the evaluation of game engines. \secondkeywords Games, Game engines, C\#, C++, Unreal Engine, Unity, Bullet hell games, NVIDIA Nsight, Performance, Interviews, Comparative analysis, Profiling, Rendering, Optimization, Game programming, Game development, Frame time, Engine architecture, Version control, GPU \pagestyle{plain} %-------------- % Spis treści %-------------- \cleardoublepage % Zaczynamy od nieparzystej strony \tableofcontents %------------ % Rozdziały %------------ \cleardoublepage % Zaczynamy od nieparzystej strony \pagestyle{headings} \input{tex/1-wstep} % Wstęp \input{tex/2-przeglad-literatury} % Przegląd literatury i istniejących rozwiązań \input{tex/3-silniki-gier} % Charakterystyka współczesnych silników gier \input{tex/wywiady-analiza} \input{tex/6-analiza-mozliwosci} % Analiza możliwości i funkcjonalności \input{tex/4-metodologia} % Metodologia badań i kryteria porównania \input{tex/implementacja-gry} % Analiza wywiadów z deweloperami gier \input{tex/narzedzia-profilowania} % Narzędzia profilowania wydajności \input{tex/5-testy-wydajnosci} % Testy wydajności \input{tex/8-podsumowanie} %--------------- % Bibliografia %--------------- \cleardoublepage % Zaczynamy od nieparzystej strony \begingroup \emergencystretch=1em \printbibliography \endgroup \clearpage % Wykaz symboli i skrótów. % Pamiętaj, żeby posortować symbole alfabetycznie % we własnym zakresie. Makro \acronymlist % generuje właściwy tytuł sekcji, w zależności od języka. % Makro \acronym dodaje skrót/symbol do listy, % zapewniając podstawowe formatowanie. \acronymlist \acronym{EiTI}{Wydział Elektroniki i Technik Informacyjnych} \acronym{PW}{Politechnika Warszawska} \vspace{0.8cm} %-------------------------------------- % Spisy: rysunków, tabel, załączników %-------------------------------------- \pagestyle{plain} \listoffigurestoc % Spis rysunków. \vspace{1cm} % vertical space \listoftablestoc % Spis tabel. \vspace{1cm} % vertical space % \listofappendicestoc % Spis załączników %------------- % Załączniki %------------- % Obrazki i tabele w załącznikach nie trafiają do spisów \captionsetup[figure]{list=no} \captionsetup[table]{list=no} % Załącznik 1 %\clearpage %\appendix{Nazwa załącznika 1} %\lipsum[1-3] %\begin{figure}[!h] % \centering \includegraphics[width=0.5\linewidth]{logopw2.png} % \caption{Obrazek w załączniku.} %\end{figure} %\lipsum[4-7] % %% Załącznik 2 %\clearpage %\appendix{Nazwa załącznika 2} %\lipsum[1-2] %\begin{table}[!h] \centering % \caption{Tabela w załączniku.} % \begin{tabular} {| c | c | r |} \hline % Kolumna 1 & Kolumna 2 & Liczba \\ \hline\hline % cell1 & cell2 & 60 \\ \hline % \multicolumn{2}{|r|}{Suma:} & 123,45 \\ \hline % \end{tabular} %\end{table} %\lipsum[3-4] % Używając powyższych spisów jako szablonu, % możesz dodać również swój własny wykaz, % np. spis algorytmów. \end{document} % Dobranoc.