\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}
