\clearpage \section{Charakterystyka współczesnych silników gier} \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 \cite{unity_components_docs, unity_gameobject_docs}. 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 \cite{unity_urp_docs, unity_hdrp_docs} \item \textbf{Fizyka} -- integracja z silnikami PhysX (3D) i Box2D (2D) \cite{unity_physics} \item \textbf{Animacja} -- system Mecanim z obsługą maszyn stanów i blendingu animacji \cite{unity_animation_docs} \item \textbf{Audio} -- wbudowany system dźwięku przestrzennego \cite{unity_audio_docs} \item \textbf{UI} -- dwa systemy interfejsu użytkownika: uGUI oraz nowoczesny UI Toolkit \cite{unity_ugui_docs, unity_uitoolkit_docs} \item \textbf{Multiplayer} -- Netcode for GameObjects oraz integracja z usługami sieciowymi \cite{unity_netcode_docs} \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 \cite{unreal_nanite,unreal_lumen} \item \textbf{Fizyka} -- silnik Chaos Physics z obsługą destrukcji i symulacji ciał miękkich \cite{unreal_docs} \item \textbf{Animacja} -- Control Rig, Animation Blueprints, IK Retargeting \cite{unreal_docs} \item \textbf{Landscape} -- zaawansowane narzędzia do tworzenia dużych terenów \cite{unreal_docs} \item \textbf{Niagara} -- system efektów cząsteczkowych nowej generacji \cite{unreal_niagara} \item \textbf{Sequencer} -- narzędzie do tworzenia cinematików i cutscen \cite{unreal_docs} \end{itemize} \subsubsection{Narzędzia deweloperskie} Unreal Editor oferuje rozbudowane środowisko deweloperskie: \begin{itemize} \item Edytor poziomów z obsługą streamingu i Level of Detail (LOD) \cite{unreal_docs} \item Blueprint Visual Scripting -- programowanie wizualne \cite{unreal_docs} \item Material Editor -- węzłowy edytor materiałów \cite{unreal_material_editor} \item Wbudowany profiler z analizą GPU/CPU i pamięci \cite{unreal_docs} \item Marketplace -- sklep z zasobami i pluginami \cite{unreal_docs} \item Dostęp do kodu źródłowego silnika \cite{unreal_wikipedia} \item Live Coding -- eksperymentalne wsparcie dla hot reload w C++ \cite{unreal_docs} \end{itemize} \subsection{Porównanie architektoniczne} \begin{table}[H] \centering \caption{Porównanie kluczowych cech Unity i Unreal Engine} \label{tab:unity-vs-unreal} \begin{tabular}{|l|c|c|} \hline \textbf{Cecha} & \textbf{Unity} & \textbf{Unreal Engine} \\ \hline Język programowania & C\# & C++ / Blueprints \\ \hline Zarządzanie pamięcią & Automatyczne (GC) & Ręczne / Smart pointers \\ \hline Architektura & GameObject-Component & Actor-Component \\ \hline Natywne wsparcie 2D & Tak & Nie (symulowane) \\ \hline Kod źródłowy & Częściowo dostępny & Pełny dostęp \\ \hline Główne zastosowania & Mobile, indie, 2D & AAA, FPS, 3D \\ \hline \end{tabular} \end{table} \subsection{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.