praca_magisterska/latex/tex/6-analiza-mozliwosci.tex

263 lines
10 KiB
TeX

\clearpage
\section{Analiza możliwości i funkcjonalności}
Niniejszy rozdział przedstawia porównanie kluczowych możliwości technicznych Unity i~Unreal Engine. Analiza obejmuje systemy renderingu, fizykę, audio, narzędzia deweloperskie oraz wsparcie dla~różnych platform docelowych.
\subsection{Analiza możliwości renderingu}
Unity oferuje dwa główne pipeline'y renderowania: Built-in Render Pipeline (legacy), Universal Render Pipeline (URP) oraz High Definition Render Pipeline (HDRP). URP jest zoptymalizowany pod kątem wydajności i~kompatybilności między platformami, podczas gdy HDRP koncentruje się na~wysokiej jakości grafiki dla~platform o~dużej mocy obliczeniowej~\cite{gregory2018game}.
\begin{itemize}
\item \textbf{Forward rendering} -- domyślny tryb w~URP, efektywny dla~scen z~niewielką liczbą źródeł światła
\item \textbf{Deferred rendering} -- dostępny w~HDRP, umożliwia obsługę większej liczby świateł
\item \textbf{Ray tracing} -- wsparcie w~HDRP dla~kart graficznych NVIDIA RTX~\cite{parker2010optix}
\end{itemize}
Unreal Engine wykorzystuje zaawansowany deferred rendering pipeline z~obsługą ray tracingu w~czasie rzeczywistym~\cite{unreal_docs}.
\begin{itemize}
\item \textbf{Deferred shading} -- standardowy pipeline dla~większości projektów~\cite{gregory2018game}
\item \textbf{Forward shading} -- opcjonalny tryb dla~projektów VR wymagających niskiej latencji~\cite{unreal_docs}
\item \textbf{Ray tracing} -- pełne wsparcie dla~Lumen (global illumination) i~ray-traced reflections
\item \textbf{Nanite} -- zwirtualizowana geometria pozwalająca na~renderowanie miliardów poligonów
\end{itemize}
Unity oferuje Shader Graph -- wizualny edytor do~tworzenia shaderów \\ bez~pisania kodu. Dodatkowo wspiera shadery pisane w~HLSL oraz~Cg~\cite{farina2013shader}.
\begin{itemize}
\item \textbf{Shader Graph} -- intuicyjny, oparty na~węzłach interfejs
\item \textbf{HLSL/Cg} -- możliwość pisania custom shaderów~\cite{farina2013shader}
\item \textbf{Shader variants} -- system wariantów dla~optymalizacji
\end{itemize}
Unreal oferuje Material Editor -- zaawansowany system węzłowy do~tworzenia materiałów~\cite{unreal_docs}.
\begin{itemize}
\item \textbf{Material Editor} -- bogaty zestaw węzłów i~funkcji
\item \textbf{Material Functions} -- możliwość tworzenia wielokrotnego użytku komponentów
\item \textbf{Custom HLSL} -- integracja własnego kodu HLSL~\cite{farina2013shader}
\end{itemize}
\begin{itemize}
\item \textbf{Real-time lighting} -- dynamiczne oświetlenie w~czasie rzeczywistym
\item \textbf{Baked lighting} -- przedkalkulowane mapy oświetlenia (lightmaps)
\item \textbf{Mixed lighting} -- połączenie światła dynamicznego i~baked
\item \textbf{Global Illumination} -- Progressive Lightmapper dla~światła odbitego~\cite{gregory2018game}
\end{itemize}
\begin{itemize}
\item \textbf{Lumen} -- dynamiczne global illumination w~czasie rzeczywistym
\item \textbf{Lightmass} -- high-quality baked lighting~\cite{gregory2018game}
\item \textbf{Ray-traced lighting} -- fizycznie dokładne oświetlenie~\cite{parker2010optix}
\item \textbf{Volumetric fog} -- zaawansowane efekty atmosferyczne
\end{itemize}
\subsection{Systemy fizyki i symulacji}
Unity wykorzystuje NVIDIA PhysX jako~silnik fizyki~\cite{nvidia_physx}.
\begin{itemize}
\item \textbf{Rigidbody} -- komponent dla~obiektów fizycznych
\item \textbf{Colliders} -- różne typy koliderów (box, sphere, mesh, etc.)
\item \textbf{Joints} -- więzy i~połączenia (hinge, spring, fixed, etc.)
\item \textbf{Wydajność} -- efektywne dla~setek obiektów fizycznych~\cite{messaoudi2017performance}
\end{itemize}
Unreal przeszedł z~PhysX \\ na~Chaos Physics --
własny silnik fizyki~\cite{unreal_docs}.
\begin{itemize}
\item \textbf{Chaos Physics} -- nowy, zaawansowany system fizyki
\item \textbf{Destruction} -- wbudowane wsparcie dla~destrukcji obiektów
\item \textbf{Cloth simulation} -- symulacja tkanin
\item \textbf{Vehicles} -- zaawansowany system pojazdów~\cite{gregory2018game}
\end{itemize}
\begin{itemize}
\item \textbf{Shuriken Particle System} -- klasyczny system cząstek
\item \textbf{Visual Effect Graph} -- system cząstek GPU-based dla~milionów cząstek
\end{itemize}
\begin{itemize}
\item \textbf{Cascade} -- legacy system cząstek
\item \textbf{Niagara} -- zaawansowany, skalowalny system efektów wizualnych
\end{itemize}
\subsection{Systemy audio}
\begin{itemize}
\item Obsługiwane formaty: WAV, MP3, OGG, AIFF
\item Kompresja: Vorbis, MP3, ADPCM
\item Audio middleware: integracja z~Wwise, FMOD~\cite{firat2022sound}
\end{itemize}
\begin{itemize}
\item Obsługiwane formaty: WAV, OGG, FLAC
\item Natywna integracja z~MetaSounds
\item Wsparcie dla~Wwise, FMOD~\cite{firat2022sound}
\end{itemize}
Oba silniki oferują zaawansowane systemy dźwięku przestrzennego \\ z~obsługą~\cite{firat2022sound}:
\begin{itemize}
\item Attenuation curves (krzywe tłumienia)
\item Occlusion i~obstruction (przesłanianie i~blokowanie)
\item Reverb zones (strefy pogłosu)
\item Doppler effect (efekt Dopplera)
\end{itemize}
\subsection{Narzędzia deweloperskie}
\begin{itemize}
\item \textbf{Scene View} -- intuicyjny edytor sceny 2D/3D
\item \textbf{Inspector} -- edycja właściwości komponentów
\item \textbf{Prefab Mode} -- izolowana edycja prefabrykatów
\item \textbf{UI Builder} -- wizualny edytor interfejsów użytkownika
\end{itemize}
\begin{itemize}
\item \textbf{Viewport} -- zaawansowany edytor poziomów
\item \textbf{Details Panel} -- szczegółowa konfiguracja aktorów
\item \textbf{Blueprint Editor} -- wizualne programowanie
\item \textbf{UMG Designer} -- projektowanie UI
\end{itemize}
\begin{itemize}
\item Unity Profiler -- analiza wydajności CPU, GPU, pamięci
\item Console -- logi i~błędy w~czasie rzeczywistym
\item Frame Debugger -- analiza procesu renderowania klatka po~klatce
\item Memory Profiler -- szczegółowa analiza alokacji pamięci
\end{itemize}
\begin{itemize}
\item Unreal Insights -- kompleksowe narzędzie profilowania
\item Visual Logger -- wizualizacja logów w~kontekście gry
\item Session Frontend -- monitoring wielu instancji gry
\item GPU Visualizer -- analiza wydajności GPU
\end{itemize}
\subsection{Wsparcie dla platform docelowych}
\begin{table}[h!]
\centering
\caption{Wsparcie platform desktop}
\label{tab:platform-desktop}
\begin{tabular}{|l|c|c|}
\hline
\textbf{Platforma} & \textbf{Unity} & \textbf{Unreal} \\
\hline\hline
Windows & + & + \\
\hline
macOS & + & + \\
\hline
Linux & + & + \\
\hline
\end{tabular}
\end{table}
\begin{table}[h!]
\centering
\caption{Wsparcie platform mobilnych}
\label{tab:platform-mobile}
\begin{tabular}{|l|c|c|}
\hline
\textbf{Platforma} & \textbf{Unity} & \textbf{Unreal} \\
\hline\hline
iOS & + & + \\
\hline
Android & + & + \\
\hline
Optymalizacja mobilna & Doskonała & Dobra \\
\hline
\end{tabular}
\end{table}
Oba silniki oferują wsparcie dla~głównych konsol (PlayStation 5, Xbox Series X/S, Nintendo Switch), jednak~wymagają specjalnych licencji deweloperskich.
\begin{table}[h!]
\centering
\caption{Wsparcie platform VR/AR}
\label{tab:platform-vr}
\begin{tabular}{|l|c|c|}
\hline
\textbf{Platforma VR/AR} & \textbf{Unity} & \textbf{Unreal} \\
\hline\hline
Meta Quest & + & + \\
\hline
SteamVR & + & + \\
\hline
PlayStation VR2 & + & + \\
\hline
ARCore (Android) & + & + \\
\hline
ARKit (iOS) & + & + \\
\hline
\end{tabular}
\end{table}
\subsection{Ekosystem i rozszerzalność}
\begin{itemize}
\item Ponad 100\,000 zasobów dostępnych
\item Modele 3D, tekstury, skrypty, narzędzia, kompletne projekty
\item Ceny od~darmowych do~kilkuset dolarów
\item System ocen i~recenzji
\end{itemize}
\begin{itemize}
\item Dziesiątki tysięcy zasobów wysokiej jakości
\item Miesięczne darmowe zasoby dla~subskrybentów
\item Integracja z~Quixel Megascans (biblioteka fotogrametryczna)
\item Często wyższa jakość, ale~mniejszy wybór niż~Unity
\end{itemize}
Wielkość i~aktywność społeczności deweloperskiej jest istotnym czynnikiem wyboru silnika gier~\cite{christopoulou2017overview}. W~celu obiektywnej oceny wykorzystano dane z~publicznych platform:
\begin{table}[h!]
\centering
\caption{Porównanie wsparcia społeczności (dane z~2024 roku)}
\label{tab:community}
\begin{tabular}{|l|c|c|c|}
\hline
\textbf{Aspekt} & \textbf{Unity} & \textbf{Unreal} & \textbf{Źródło} \\
\hline\hline
Stack Overflow (pytania) & \textasciitilde450k & \textasciitilde75k & \cite{christopoulou2017overview} \\
\hline
GitHub (repozytoria) & \textasciitilde200k & \textasciitilde45k & \cite{vohera2021game} \\
\hline
YouTube (tutoriale) & \textasciitilde2.5M & \textasciitilde800k & \cite{christopoulou2017overview} \\
\hline
Reddit (subskrybenci) & \textasciitilde350k & \textasciitilde180k & \cite{barczak2019comparative} \\
\hline
Discord (członkowie) & \textasciitilde180k & \textasciitilde90k & \cite{barczak2019comparative} \\
\hline
\end{tabular}
\end{table}
\begin{itemize}
\item \textbf{Dokumentacja oficjalna} -- ponad 5000 stron dokumentacji API
\item \textbf{Unity Learn} -- ponad 750 darmowych kursów i~tutoriali~\cite{christopoulou2017overview}
\item \textbf{Certyfikacje} -- 4 poziomy certyfikacji \\ (User, Associate, Professional, Expert)~\cite{barczak2019comparative}
\end{itemize}
\begin{itemize}
\item \textbf{Dokumentacja oficjalna} -- obszerna dokumentacja z~ponad 3000 stron
\item \textbf{Unreal Online Learning} -- ponad 200 darmowych kursów wideo~\cite{christopoulou2017overview}
\item \textbf{Epic Developer Community} -- oficjalne forum wsparcia~\cite{barczak2019comparative}
\end{itemize}