mirror of
https://github.com/kuhyx/praca_magisterska.git
synced 2026-07-04 11:43:16 +02:00
chore: copilot instructions md
This commit is contained in:
parent
83251d52b1
commit
c0a479492e
112
.github/copilot-instructions.md
vendored
Normal file
112
.github/copilot-instructions.md
vendored
Normal file
@ -0,0 +1,112 @@
|
||||
# Copilot Instructions for Game Engine Comparison Thesis
|
||||
|
||||
## Project Overview
|
||||
|
||||
This is a **master's thesis** (praca magisterska) at Warsaw University of Technology (Politechnika Warszawska), Faculty of Electronics and Information Technology (EiTI). The thesis compares performance and capabilities of modern game engines, primarily **Unity vs Unreal Engine**.
|
||||
|
||||
### Repository Structure
|
||||
|
||||
- **`latex/`** - LaTeX thesis document using WUT-Thesis template
|
||||
- **`magisterka_2/`** - Unity bullet-hell demo game (performance testing, newer version)
|
||||
- **`games/unity/magisterka_1/`** - Unity bullet-hell demo (earlier iteration)
|
||||
- **`My project/`** - Unity 3D Tic-Tac-Toe demo (URP pipeline)
|
||||
- **`transcripts/`** - Interview transcripts with game developers (Polish)
|
||||
- **`raw_observations/`** - Research observations and images
|
||||
|
||||
## Performance Testing
|
||||
|
||||
### Tools
|
||||
- **NVIDIA Nsight** - Primary profiling tool for comparing GPU/CPU performance between Unity and Unreal implementations
|
||||
|
||||
### Methodology
|
||||
Performance comparisons are made using equivalent bullet-hell game implementations in both engines. Metrics captured include frame time, draw calls, GPU utilization, and memory allocation patterns.
|
||||
|
||||
## LaTeX Thesis
|
||||
|
||||
### Build Commands
|
||||
```bash
|
||||
cd latex
|
||||
scons quick # Fast build using SCons
|
||||
scons # Full build with all checks
|
||||
```
|
||||
|
||||
### Document Configuration (main.tex)
|
||||
- **Faculty**: `\facultyeiti` (Electronics and IT)
|
||||
- **Thesis type**: `\MasterThesis`
|
||||
- **Language**: `\langpol` (Polish)
|
||||
- **Bibliography**: BibLaTeX with `bibliografia.bib`
|
||||
|
||||
### Chapter Structure
|
||||
Chapters are in `latex/tex/` following pattern `N-name.tex`:
|
||||
1. `1-wstep.tex` - Introduction and methodology
|
||||
2. `2-przeglad-literatury.tex` - Literature review
|
||||
3. `3-silniki-gier.tex` - Game engine characteristics (Unity, Unreal, Godot)
|
||||
4. `4-metodologia.tex` - Research methodology
|
||||
5. `5-testy-wydajnosci.tex` - Performance tests
|
||||
6. `6-analiza-mozliwosci.tex` - Capabilities analysis
|
||||
7. `7-porownanie-wynikow.tex` - Results comparison
|
||||
8. `8-podsumowanie.tex` - Conclusions
|
||||
|
||||
### LaTeX Conventions
|
||||
- Images go in `latex/tex/img/`
|
||||
- Use `\input{tex/N-filename}` for chapters
|
||||
- Tables: caption above, `\label{tab:name}`, centered
|
||||
- Figures: caption below, `\label{fig:name}`
|
||||
|
||||
## Unity Projects
|
||||
|
||||
### magisterka_2 (Bullet Hell Game)
|
||||
**Namespace**: `Magisterka.BulletHell`
|
||||
|
||||
Key architecture patterns:
|
||||
- **Bootstrap pattern**: `GameBootstrap.cs` ensures `GameInitializer` exists via `RuntimeInitializeOnLoadMethod`
|
||||
- **Singleton managers**: `GameDirector.Instance` for global game state
|
||||
- **Object pooling**: `BulletPool.cs` for performance-critical bullet spawning
|
||||
- **Component composition**: Enemies use `[RequireComponent(typeof(Health))]`
|
||||
|
||||
Core scripts:
|
||||
- `GameDirector.cs` - Timer, victory detection, difficulty pacing
|
||||
- `EnemySpawner.cs` + `EnemyController.cs` - Enemy lifecycle
|
||||
- `BulletPool.cs` - Object pooling with warm capacity
|
||||
- `PlayerController.cs` - Player input and movement
|
||||
|
||||
### My project (Tic-Tac-Toe 3D)
|
||||
**Namespace**: `TicTacToe3D`
|
||||
|
||||
Uses Unity's Universal Render Pipeline (URP). Simpler architecture for 3D showcase:
|
||||
- `TicTacToeGameManager.cs` - Game logic, board generation, win detection
|
||||
- `Tile.cs` - Individual tile interaction
|
||||
|
||||
## Research Data
|
||||
|
||||
### Interview Transcripts (`transcripts/`)
|
||||
Polish-language interviews with Unity/Unreal developers.
|
||||
|
||||
**Participant Criteria**: Minimum 1 year of amateur or professional experience in at least one engine.
|
||||
|
||||
**Question Template**:
|
||||
1. Years of professional/amateur experience per engine
|
||||
2. Number of projects completed in each engine
|
||||
3. Architecture comparison (C++ vs C#)
|
||||
4. Collaboration workflows (working with teams, non-technical members)
|
||||
5. Official documentation quality
|
||||
6. Unofficial guides (YouTube tutorials, community resources)
|
||||
7. AI/LLM usage in development workflow
|
||||
8. Anticipated future features
|
||||
9. External tool support (Git, Blender, etc.)
|
||||
10. Free section (open-ended observations)
|
||||
|
||||
When working with transcripts, preserve original Polish text and speaker attributions.
|
||||
|
||||
## Code Style Guidelines
|
||||
|
||||
### C# (Unity)
|
||||
- XML doc comments (`/// <summary>`) on public classes/methods
|
||||
- `[SerializeField]` for inspector-exposed private fields
|
||||
- Prefix private fields with underscore: `_spawner`, `_bulletPool`
|
||||
- Use namespaces matching project: `Magisterka.BulletHell`, `TicTacToe3D`
|
||||
|
||||
### LaTeX
|
||||
- Polish language for main content
|
||||
- English abstracts via `\secondabstract`
|
||||
- Follow WUT editorial requirements (margins, fonts per `wut-thesis.cls`)
|
||||
2
.gitignore
vendored
2
.gitignore
vendored
@ -489,3 +489,5 @@ DerivedDataCache/*
|
||||
|
||||
# Temp Files
|
||||
Config/DefaultEditorPerProjectUserSettings.ini
|
||||
|
||||
transcripts/
|
||||
@ -86,3 +86,125 @@
|
||||
howpublished = {Dostęp zdalny (14.03.2019): \url{https://github.com/ArturB/DCP-19}},
|
||||
year = {2019}
|
||||
}
|
||||
|
||||
% Game Engine Research Literature
|
||||
|
||||
@article{ullmann2022game,
|
||||
author = {Ullmann, G. C. and Politowski, C. and Guéhéneuc, Y.-G. and Anquetil, N.},
|
||||
title = {Game engine comparative anatomy},
|
||||
journal = {International Conference on Software Architecture},
|
||||
year = {2022},
|
||||
publisher = {Springer},
|
||||
pages = {117--136}
|
||||
}
|
||||
|
||||
@article{christopoulou2017overview,
|
||||
author = {Christopoulou, E. and Xinogalos, S.},
|
||||
title = {Overview and comparative analysis of game engines for desktop and mobile devices},
|
||||
journal = {International Journal of Serious Games},
|
||||
volume = {4},
|
||||
number = {4},
|
||||
year = {2017},
|
||||
pages = {21--36}
|
||||
}
|
||||
|
||||
@inproceedings{sharif2021game,
|
||||
author = {Sharif, K. H. and Ameen, S. Y.},
|
||||
title = {Game engines evaluation for serious game development in education},
|
||||
booktitle = {2021 International Conference on Advanced Computer Applications},
|
||||
year = {2021},
|
||||
pages = {1--6},
|
||||
publisher = {IEEE}
|
||||
}
|
||||
|
||||
@inproceedings{pavkov2017comparison,
|
||||
author = {Pavkov, S. and Franković, I. and Hoblaj, M.},
|
||||
title = {Comparison of game engines for serious games},
|
||||
booktitle = {2017 40th International Convention on Information and Communication Technology},
|
||||
year = {2017},
|
||||
pages = {728--733},
|
||||
publisher = {IEEE}
|
||||
}
|
||||
|
||||
@article{messaoudi2017performance,
|
||||
author = {Messaoudi, F. and Ksentini, A. and Simon, G.},
|
||||
title = {Performance analysis of game engines on mobile and fixed devices},
|
||||
journal = {ACM Transactions on Multimedia Computing, Communications, and Applications},
|
||||
volume = {13},
|
||||
number = {4},
|
||||
year = {2017},
|
||||
pages = {1--24}
|
||||
}
|
||||
|
||||
@article{abramowicz2024comparative,
|
||||
author = {Abramowicz, K. and Borczuk, P.},
|
||||
title = {Comparative analysis of the performance of Unity and Unreal Engine game engines in 3D games},
|
||||
journal = {Journal of Computer Science Institute},
|
||||
volume = {30},
|
||||
year = {2024},
|
||||
pages = {1--8}
|
||||
}
|
||||
|
||||
@mastersthesis{pattrasitidecha2014comparison,
|
||||
author = {Pattrasitidecha, A.},
|
||||
title = {Comparison and evaluation of 3D mobile game engines},
|
||||
school = {Chalmers University of Technology},
|
||||
year = {2014},
|
||||
type = {Master's thesis}
|
||||
}
|
||||
|
||||
@inproceedings{vohera2021game,
|
||||
author = {Vohera, C. and Chheda, H. and Chouhan, D.},
|
||||
title = {Game engine architecture and comparative study of different game engines},
|
||||
booktitle = {2021 12th International Conference on Computing Communication and Networking Technologies},
|
||||
year = {2021},
|
||||
pages = {1--7},
|
||||
publisher = {IEEE}
|
||||
}
|
||||
|
||||
@inproceedings{marks2008evaluation,
|
||||
author = {Marks, S. and Windsor, J. and Wünsche, B.},
|
||||
title = {Evaluation of game engines for simulated clinical training},
|
||||
booktitle = {New Zealand Computer Science Research Student Conference},
|
||||
year = {2008},
|
||||
pages = {25--30}
|
||||
}
|
||||
|
||||
@inproceedings{ali2016framework,
|
||||
author = {Ali, Z. and Usman, M.},
|
||||
title = {A framework for game engine selection for gamification and serious games},
|
||||
booktitle = {2016 Future Technologies Conference},
|
||||
year = {2016},
|
||||
pages = {1--8},
|
||||
publisher = {IEEE}
|
||||
}
|
||||
|
||||
@article{barczak2019comparative,
|
||||
author = {Barczak, A. and Woźniak, H.},
|
||||
title = {Comparative study on game engines},
|
||||
journal = {Studia Informatica. System and Information Technology},
|
||||
volume = {23},
|
||||
number = {1},
|
||||
year = {2019},
|
||||
pages = {5--18}
|
||||
}
|
||||
|
||||
@article{masood2022high,
|
||||
author = {Masood, Z. and Jiangbin, Z. and Irfan, M. and Ahmad, I.},
|
||||
title = {High‐performance virtual globe GPU terrain rendering using game engine},
|
||||
journal = {Computer Animation and Virtual Worlds},
|
||||
volume = {33},
|
||||
number = {6},
|
||||
year = {2022},
|
||||
pages = {e2108}
|
||||
}
|
||||
|
||||
@article{firat2022sound,
|
||||
author = {Fırat, H. B. and Maffei, L. and Masullo, M.},
|
||||
title = {3D sound spatialization with game engines: the virtual acoustics performance of a game engine and a middleware for interactive audio design},
|
||||
journal = {Virtual Reality},
|
||||
volume = {26},
|
||||
number = {3},
|
||||
year = {2022},
|
||||
pages = {1181--1195}
|
||||
}
|
||||
|
||||
@ -1,2 +1,2 @@
|
||||
\contentsline {subsection}{\hspace *{-1.1em}1.\hspace *{0.5em} Nazwa załącznika 1}{20}{section*.5}%
|
||||
\contentsline {subsection}{\hspace *{-1.1em}2.\hspace *{0.5em} Nazwa załącznika 2}{22}{section*.7}%
|
||||
\contentsline {subsection}{\hspace *{-1.1em}1.\hspace *{0.5em} Nazwa załącznika 1}{22}{section*.4}%
|
||||
\contentsline {subsection}{\hspace *{-1.1em}2.\hspace *{0.5em} Nazwa załącznika 2}{24}{section*.6}%
|
||||
|
||||
BIN
latex/main.pdf
BIN
latex/main.pdf
Binary file not shown.
@ -2,23 +2,75 @@
|
||||
\section{Przegląd literatury i istniejących rozwiązań}
|
||||
|
||||
\subsection{Historia rozwoju silników gier}
|
||||
W tym podrozdziale zostanie przedstawiona ewolucja silników gier od prostych bibliotek graficznych po współczesne, kompleksowe środowiska deweloperskie.
|
||||
Silniki gier ewoluowały znacząco od prostych bibliotek graficznych lat 80. i 90. XX wieku po współczesne, kompleksowe środowiska deweloperskie. Według Ullmann et al. \cite{ullmann2022game}, współczesne silniki gier charakteryzują się modularną architekturą, która umożliwia ponowne wykorzystanie komponentów między różnymi projektami.
|
||||
|
||||
Gregory \cite{gregory2018game} w swojej fundamentalnej pracy "Game Engine Architecture" przedstawia kompleksowy przegląd ewolucji silników gier, definiując je jako "oprogramowanie zaprojektowane specjalnie do tworzenia gier". Jego analiza pokazuje, że współczesne silniki gier składają się z kilku kluczowych warstw: warstwy platformy (platform layer), warstwy podstawowych systemów (core systems), warstwy zasobów (resource manager), warstwy renderingu (rendering engine), systemów animacji, fizyki oraz gameplay. Ta architektura warstwowa umożliwia modularność i ponowne wykorzystanie komponentów.
|
||||
|
||||
Pierwsze silniki gier były ściśle powiązane z konkretnym sprzętem i grami, jak np. silniki do gier id Software (Doom, Quake). Według Gregory'ego \cite{gregory2018game}, przełomem było zrozumienie, że oddzielenie logiki gry od podstawowej infrastruktury technicznej pozwala na tworzenie bardziej uniwersalnych rozwiązań. Przełomem było wprowadzenie pierwszych uniwersalnych silników, które mogły być adaptowane do różnych rodzajów gier. Dzisiejsze silniki oferują zintegrowane środowiska deweloperskie z edytorami wizualnymi, systemami skryptowymi i zaawansowanymi narzędziami do debugowania.
|
||||
|
||||
\subsection{Klasyfikacja silników gier}
|
||||
|
||||
\subsubsection{Architektura silników według Gregory'ego}
|
||||
Gregory \cite{gregory2018game} przedstawia szczegółową taksonomię architektur silników gier, wyróżniając kilka kluczowych typów organizacji:
|
||||
|
||||
\begin{itemize}
|
||||
\item \textbf{Silniki obiektowe} - bazujące na hierarchii obiektów gry z dziedziczeniem
|
||||
\item \textbf{Silniki komponentowe} - wykorzystujące systemy entity-component-system (ECS)
|
||||
\item \textbf{Silniki hybrydowe} - łączące elementy różnych podejść architektonicznych
|
||||
\end{itemize}
|
||||
|
||||
Autor podkreśla, że wybór architektury ma fundamentalny wpływ na wydajność, skalowalność i łatwość rozwoju gier. Systemy ECS zyskują na popularności ze względu na lepszą wydajność cache procesora i większą elastyczność w definiowaniu zachowań obiektów gry.
|
||||
|
||||
\subsubsection{Silniki komercyjne vs. open source}
|
||||
% Analiza różnic między rozwiązaniami komercyjnymi a otwartymi
|
||||
Analiza literatury pokazuje wyraźne różnice między rozwiązaniami komercyjnymi a otwartymi. Christopoulou i Xinogalos \cite{christopoulou2017overview} wskazują, że silniki komercyjne jak Unity czy Unreal Engine oferują lepsze wsparcie techniczne i dokumentację, podczas gdy rozwiązania open source zapewniają większą elastyczność i kontrolę nad kodem źródłowym.
|
||||
|
||||
Sharif i Ameen \cite{sharif2021game} podkreślają, że wybór między rozwiązaniem komercyjnym a open source zależy głównie od budżetu projektu i wymagań dotyczących dostosowania silnika do specyficznych potrzeb.
|
||||
|
||||
\subsubsection{Silniki specjalistyczne vs. uniwersalne}
|
||||
% Porównanie silników dedykowanych konkretnym gatunkom gier z rozwiązaniami uniwersalnymi
|
||||
Pavkov et al. \cite{pavkov2017comparison} przedstawiają podział na silniki dedykowane konkretnym gatunkom gier (np. silniki do gier strategicznych czasu rzeczywistego) oraz rozwiązania uniwersalne mogące obsługiwać różnorodne typy gier. Silniki specjalistyczne oferują zoptymalizowane funkcjonalności dla określonego zastosowania, podczas gdy uniwersalne zapewniają większą wszechstronność kosztem specjalizacji.
|
||||
|
||||
\subsection{Aktualny stan badań}
|
||||
Przegląd istniejących prac naukowych dotyczących porównania silników gier, ze szczególnym uwzględnieniem metodologii badawczych i uzyskanych wyników.
|
||||
|
||||
\subsubsection{Badania wydajności}
|
||||
Messaoudi et al. \cite{messaoudi2017performance} przeprowadzili kompleksową analizę wydajności silnika Unity na urządzeniach mobilnych i stacjonarnych, koncentrując się na zużyciu CPU i optymalizacji logiki gry. Ich badania pokazują znaczące różnice w wydajności między platformami mobilnymi a desktop.
|
||||
|
||||
Abramowicz i Borczuk \cite{abramowicz2024comparative} porównali wydajność Unity i Unreal Engine w grach 3D, skupiając się na renderowaniu, systemach fizyki i zarządzaniu pamięcią. Wyniki wskazują na przewagę Unreal Engine w renderowaniu zaawansowanej grafiki 3D, podczas gdy Unity wykazuje lepszą wydajność na urządzeniach o ograniczonych zasobach.
|
||||
|
||||
\subsubsection{Metodologie porównawcze}
|
||||
Pattrasitidecha \cite{pattrasitidecha2014comparison} opracował macierz porównawczą dla silników gier mobilnych 3D, definiując kryteria selekcji i kluczowe aspekty oceny. Ta metodologia została szeroko adoptowana w późniejszych badaniach.
|
||||
|
||||
Vohera et al. \cite{vohera2021game} przedstawili architekturę silników gier i przeprowadzili studium porównawcze Unity, GameMaker, Unreal Engine i CryEngine, koncentrując się na parametrach wydajności, funkcjonalności i łatwości użycia.
|
||||
|
||||
\subsubsection{Specjalizowane zastosowania}
|
||||
Marks et al. \cite{marks2008evaluation} oceniali silniki gier pod kątem zastosowań w symulacjach medycznych i szkoleniach klinicznych, wprowadzając specyficzne kryteria oceny dla aplikacji edukacyjnych.
|
||||
|
||||
Ali i Usman \cite{ali2016framework} opracowali framework do selekcji silników gier dla zastosowań w gamifikacji i serious games, uwzględniając specyficzne wymagania tych dziedzin.
|
||||
|
||||
\subsubsection{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.
|
||||
|
||||
\subsection{Identyfikacja luk badawczych}
|
||||
Wskazanie obszarów, które nie zostały dotychczas wystarczająco zbadane oraz uzasadnienie potrzeby przeprowadzenia niniejszych badań.
|
||||
|
||||
% Bibliografia dla tego rozdziału będzie zawierać odniesienia do:
|
||||
% - publikacji naukowych
|
||||
% - dokumentacji technicznej
|
||||
% - raportów branżowych
|
||||
% - analiz rynkowych
|
||||
Analiza dostępnej literatury ujawnia kilka istotnych luk badawczych:
|
||||
|
||||
\begin{enumerate}
|
||||
\item \textbf{Brak kompleksowych badań wielokryterialnych} - większość istniejących prac koncentruje się na pojedynczych aspektach (wydajność, funkcjonalność) bez holistycznego podejścia
|
||||
|
||||
\item \textbf{Ograniczone badania długoterminowe} - brakuje analiz wpływu aktualizacji silników na stabilność i wydajność projektów
|
||||
|
||||
\item \textbf{Niewystarczające dane o współczesnych silnikach} - wiele badań koncentruje się na starszych wersjach silników, nie uwzględniając najnowszych możliwości
|
||||
|
||||
\item \textbf{Brak standaryzacji metodologii} - różne badania stosują odmienne kryteria oceny, co utrudnia porównanie wyników
|
||||
|
||||
\item \textbf{Ograniczone badania cross-platform} - niewiele prac analizuje wydajność silników na różnych platformach docelowych w sposób systematyczny
|
||||
\end{enumerate}
|
||||
|
||||
Niniejsza praca ma na celu wypełnienie tych luk poprzez przeprowadzenie kompleksowej analizy porównawczej współczesnych silników gier z zastosowaniem ustandaryzowanej metodologii i wielokryterialnego podejścia do oceny.
|
||||
|
||||
\subsection{Trendy technologiczne}
|
||||
Ostatnie badania wskazują na rosnące znaczenie technologii ray tracing, sztucznej inteligencji w grach oraz wsparcia dla rzeczywistości wirtualnej i rozszerzonej. Masood et al. \cite{masood2022high} analizują wykorzystanie silników gier do wysokowydajnego renderowania terenu GPU, pokazując nowe kierunki rozwoju technologii renderowania.
|
||||
|
||||
Badania Firat et al. \cite{firat2022sound} dotyczące przestrzennego dźwięku 3D w silnikach gier wskazują na rosnące znaczenie immersyjnych doświadczeń audio jako czynnika różnicującego poszczególne rozwiązania.
|
||||
|
||||
% Bibliografia zawiera odniesienia do kluczowych publikacji naukowych,
|
||||
% dokumentacji technicznej oraz raportów branżowych
|
||||
|
||||
Loading…
Reference in New Issue
Block a user