\clearpage
\section{Charakterystyka współczesnych silników gier}

W tym rozdziale omówiono kryteria wyboru silników, charakterystyki Unity i Unreal oraz uzasadnienie wyboru do badań.

\subsection{Kryteria wyboru silników do analizy}

Rynek silników gier komputerowych oferuje szeroki wachlarz rozwiązań,
od prostych frameworków 2D po zaawansowane środowiska do tworzenia
fotorealistycznych produkcji AAA \cite{gregory2018game}.
W ramach niniejszej pracy zdecydowano
się na dogłębną analizę dwóch silników: \textbf{Unity}
oraz \textbf{Unreal Engine}. Wybór ten podyktowany był
kilkoma kluczowymi czynnikami:

\begin{itemize}
    \item \textbf{Dominacja rynkowa} -- według raportu Video Game Insights,
    w~2024 roku 51\% gier wydanych na platformie Steam powstało w~Unity,
    a 28\% w~Unreal Engine \cite{vgi2025engines}.
    \item \textbf{Reprezentatywność podejść architektonicznych} -- 
    silniki reprezentują odmienne filozofie: Unity opiera się na 
    języku C\# z~garbage collectorem, a~Unreal wykorzystuje C++ 
    z~własnym systemem refleksji, makrami oraz garbage collectorem 
    dla obiektów UObject.
    \item \textbf{Różnorodność zastosowań} -- Unity dominuje
    w~segmencie gier mobilnych (71\% z~top 1000 gier mobilnych)
    oraz wśród deweloperów indie, natomiast
    Unreal generuje większe przychody w~produkcjach AAA
    (31\% przychodów Steam w~2024 vs 26\% dla Unity)
    \cite{vgi2025engines, g2gameengines}.
    \item \textbf{Dostępność} -- oba silniki oferują darmowe wersje
    dla małych zespołów i projektów edukacyjnych.
    \item \textbf{Aktywna społeczność} -- Unity posiada ponad
    5~milionów zarejestrowanych deweloperów \cite{g2gameengines}.
\end{itemize}

\subsection{Unity}\label{subsec:unity}

\subsubsection{Wprowadzenie i historia}

Unity to wieloplatformowy silnik gier stworzony przez Unity
Technologies, którego pierwsza wersja została zaprezentowana
w czerwcu 2005 roku na konferencji Apple Worldwide Developers Conference
jako narzędzie dla systemu Mac OS X \cite{unity_wikipedia}.
Od tego czasu silnik przeszedł znaczącą ewolucję, stając się jednym
z najpopularniejszych rozwiązań do tworzenia gier na świecie.

Kluczowym momentem w historii Unity było wprowadzenie darmowej wersji
silnika, co znacząco obniżyło barierę wejścia dla początkujących
deweloperów i małych studiów \cite{unity_wikipedia}. Decyzja ta
przyczyniła się do wzrostu popularności silnika w segmencie gier
mobilnych oraz indie.

Unity wykorzystuje język programowania \textbf{C\#} działający
na platformie .NET/Mono, co zapewnia:
\begin{itemize}
    \item Automatyczne zarządzanie pamięcią poprzez garbage collector.
    \item Bezpieczeństwo typów i obsługę wyjątków.
    \item Bogatą bibliotekę standardową.
\end{itemize}

Architektura Unity opiera się na wzorcu \textit{GameObject-Component},
gdzie każdy obiekt w scenie (GameObject) może posiadać dowolną
liczbę komponentów definiujących jego zachowanie.
Podejście to promuje kompozycję nad dziedziczeniem i ułatwia
tworzenie modularnego kodu.

\subsubsection{Możliwości i funkcjonalności}

Unity oferuje kompleksowy zestaw narzędzi do tworzenia gier 2D i 3D:

\begin{itemize}
    \item \textbf{Rendering} -- wsparcie dla wielu pipeline'ów
    renderowania: Built-in, Universal Render Pipeline (URP) dla platform
    mobilnych oraz High Definition Render Pipeline (HDRP) dla wysokiej
    jakości grafiki.
    \item \textbf{Fizyka} -- integracja z silnikami PhysX (3D) i Box2D (2D).
    \item \textbf{Animacja} -- system Mecanim z obsługą maszyn stanów
    i blendingu animacji.
    \item \textbf{Audio} -- wbudowany system dźwięku przestrzennego.
    \item \textbf{UI} -- dwa systemy interfejsu użytkownika: uGUI oraz
    nowoczesny UI Toolkit.
    \item \textbf{Multiplayer} -- Netcode for GameObjects oraz
    integracja z usługami sieciowymi.
\end{itemize}

\subsubsection{Narzędzia deweloperskie}

Edytor Unity zapewnia interfejs graficzny z~następującymi
funkcjonalnościami \cite{unity_wikipedia}:
\begin{itemize}
    \item Hierarchiczny widok sceny z możliwością edycji w czasie
    rzeczywistym.
    \item Inspektor właściwości z obsługą serializacji pól poprzez
    atrybut \texttt{[SerializeField]}.
    \item Wbudowany profiler wydajności (CPU, GPU, pamięć)
    \cite{unity_profiler}.
    \item Asset Store -- marketplace z gotowymi zasobami i
    rozszerzeniami.
    \item Obsługa hot reload -- możliwość edycji kodu podczas działania
    gry.
\end{itemize}

\subsection{Unreal Engine}\label{subsec:unreal}

\subsubsection{Wprowadzenie i historia}

Unreal Engine to silnik gier stworzony przez Epic Games, 
którego historia sięga 1998 roku, kiedy to zadebiutował wraz z 
grą \textit{Unreal} \cite{unreal_wikipedia}. Od początku silnik był projektowany z myślą o 
tworzeniu gier pierwszoosobowych (FPS) o wysokiej jakości graficznej, 
co nadal pozostaje jego mocną stroną \cite{unreal_wikipedia,unreal_docs}.

Przełomowym momentem było wydanie Unreal Engine 4 w 2014 roku na 
licencji royalty-free (5\% od przychodów powyżej \$1 miliona), a 
następnie Unreal Engine 5 w 2022 roku, wprowadzającym 
technologie takie jak Nanite (wirtualizowana geometria) i Lumen 
(globalne oświetlenie w czasie rzeczywistym) \cite{unreal_wikipedia,unreal_nanite,unreal_lumen}.

Unreal Engine wykorzystuje język programowania \textbf{C++} z 
rozszerzeniami specyficznymi dla silnika (makra UE), co zapewnia:
\begin{itemize}
    \item Maksymalną wydajność dzięki kompilacji do kodu natywnego.
    \item Pełną kontrolę nad zarządzaniem pamięcią.
    \item Strome krzywe uczenia, szczególnie dla programistów bez doświadczenia w C++.
\end{itemize}

Dodatkowo Unreal oferuje system \textbf{Blueprints} -- 
wizualny język skryptowy pozwalający na tworzenie logiki gry 
bez pisania kodu \cite{unreal_docs}. Szczególnie przydatne dla 
designerów i artystów, choć dla złożonych systemów mogą 
być mniej wydajne niż natywny C++.

\subsubsection{Możliwości i funkcjonalności}

Unreal Engine wyróżnia się zaawansowanymi możliwościami graficznymi:

\begin{itemize}
    \item \textbf{Rendering} -- fotorealistyczna grafika z obsługą ray tracingu, Nanite i Lumen.
    \item \textbf{Fizyka} -- silnik Chaos Physics z obsługą destrukcji i symulacji ciał miękkich.
    \item \textbf{Animacja} -- Control Rig, Animation Blueprints, IK Retargeting.
    \item \textbf{Landscape} -- zaawansowane narzędzia do tworzenia dużych terenów.
    \item \textbf{Niagara} -- system efektów cząsteczkowych nowej generacji.
    \item \textbf{Sequencer} -- narzędzie do tworzenia cinematików i cutscen.
\end{itemize}

\subsubsection{Narzędzia deweloperskie}

Unreal Editor oferuje rozbudowane środowisko deweloperskie~\cite{unreal_docs}:
\begin{itemize}
    \item Edytor poziomów z obsługą streamingu i Level of Detail (LOD).
    \item Blueprint Visual Scripting -- programowanie wizualne.
    \item Material Editor -- węzłowy edytor materiałów.
    \item Wbudowany profiler z analizą GPU/CPU i pamięci.
    \item Marketplace -- sklep z zasobami i pluginami.
    \item Dostęp do kodu źródłowego silnika.
    \item Live Coding -- eksperymentalne wsparcie dla hot reload w C++.
\end{itemize}

\textbf{Porównanie architektoniczne}
\begin{table}[H]
\centering
\caption{Porównanie kluczowych cech Unity i Unreal Engine}
\label{tab:unity-vs-unreal}
\small
\begin{tabular}{|l|l|l|}
\hline
\textbf{Cecha} & \textbf{Unity} & \textbf{Unreal} \\
\hline
Język & C\# & C++ \\
\hline
Pamięć & Automatyczne (GC) & Ręczne (smart pointers) \\
\hline
Architektura & GameObject Component & Actor Component \\
\hline
2D & Natywne & Ograniczone \\
\hline
Kod źródłowy & Częściowy & Pełny \\
\hline
Główne zastosowania & Mobile, indie, 2D & AAA, FPS, 3D \\
\hline
\end{tabular}
\end{table}

\textbf{Uzasadnienie wyboru do badań}
Wybór Unity i Unreal Engine jako przedmiotu porównania pozwala na 
analizę dwóch fundamentalnie różnych podejść do tworzenia gier:

Motywacja wyboru: Unity i Unreal Engine pozostają dwoma najpopularniejszymi silnikami 
używanymi w większości nowoczesnych produkcji --- zarówno w segmencie indie, jak i w 
grach AAA --- co czyni ich porównanie reprezentatywnym dla współczesnego rynku gier 
\cite{vgi2025engines,g2gameengines}.

Wybór Unity i Unreal Engine jako przedmiotu porównania pozwala na 
analizę dwóch fundamentalnie różnych podejść do tworzenia gier:

\begin{enumerate}
    \item \textbf{Produktywność vs wydajność} -- C\# w Unity oferuje 
    szybszy rozwój kosztem pewnego narzutu wydajnościowego, podczas 
    gdy C++ w Unreal wymaga więcej pracy, ale zapewnia maksymalną 
    kontrolę.
    \item \textbf{Dostępność vs specjalizacja} -- Unity celuje w 
    szeroki rynek z niskim progiem wejścia, Unreal koncentruje się 
    na produkcjach premium.
    \item \textbf{Elastyczność vs integracja} -- Unity pozwala 
    na większą swobodę w doborze zewnętrznych narzędzi, Unreal 
    oferuje bardziej zintegrowane rozwiązania.
\end{enumerate}

Analiza tych dwóch silników dostarcza kompleksowego obrazu
współczesnego stanu technologii do tworzenia gier i~pozwala na
sformułowanie praktycznych rekomendacji dla deweloperów.
