Длябагатокористувацького режиму гри підтримуються технологіїWindows Live,Xbox Live іGameSpy, що дає можливість під'єднати до 64 гравців (клієнтів) одночасно[10]. Попри те, що офіційно засоби розробки не містять у собі підтримки великої кількості клієнтів на одному сервері, рушій використовувався для створенняMMORPG-ігор.
Зонування. У камеру не потрапляє жоден портал (пунктирна лінія) червоної зони, тому об'єкти в ній не обробляються зовсім
Усі елементи ігрового рушія представлені у виглядіоб'єктів, що мають набір характеристик іклас, який визначає доступні функції. Так само, будь-який клас є «дочірнім» класом об'єкта. Серед основних класів і об'єктів можна виділити такі:
Актор (actor) — базовий клас, що містить усі об'єкти, які стосуються ігрового процесу й мають просторові координати.
Пішак (pawn) — фізична модель гравця або об'єкта, керованого штучним інтелектом. Назва походить відангл.pawn — той, кимманіпулюють (pawn можна перевести також якпішак, тому такий об'єкт без якої-небудь моделі виглядає, якпішак). Метод керування описаний спеціальним об'єктом, що називаєтьсяконтролером. Контролер штучного інтелекту описує лише загальну поведінку пішака під час ігрового процесу, а такі параметри як «здоров'я» (кількість пошкоджень, після яких пішак перестає функціонувати) або, наприклад, відстань, на якій пішак звертає увагу на звуки, задаються для кожного об'єкта окремо.
Світ,рівень (world,game level) — об'єкт, що характеризує загальні властивості «простору», наприклад, силу тяжіння й туман, у якому розташовуються всі актори. Також може містити в собі параметри ігрового процесу, як, наприклад, ігровий режим, для якого призначений рівень.
Для роботи з простими та, як правило, нерухомими елементами ігрового простору (наприклад, стіни) використовуєтьсябінарна розбивка простору — увесь простір ділиться на «заповнене» й «порожнє». У «порожній» частині простору розташовуються всі об'єкти, а також лише в ній може перебувати «точка спостереження» під час рендерингу сцени. Можливість повного або часткового поміщення об'єктів у «заповнену» частину простору не виключається, однак може призвести до неправильної обробки таких об'єктів (наприклад, розрахунки фізичної взаємодії) або некоректного рендеру у випадку поміщення туди «точки спостереження» (наприклад, ефект «залу дзеркал»). Усі пішаки, що потрапляють у «заповнену» частину простору, відразу «гинуть».
Порівняння якості деталізації персонажів у різних версіях рушія
Поверхня (surface) є основним елементом бінарного дерева простору. Ці елементи створюються на грані перетину між «заповненою» й «порожньою» частинами простору. Група елементів бінарного дерева простору називаєтьсянодом (node,укр.вузол). Цей термін, як правило, вживається в контекстіnode count — кількістьнодів на екрані або в ігровому просторі взагалі. Кількість нодів, одночасно видимих на екрані, впливає на продуктивність під час промальовування сцени. Якщо якийсьнод не потрапляє на екран або повністю перекривається іншиминодами, він не обраховується — це допомагає підвищити продуктивність, особливо в замкнених просторах. Розбивка всього простору на групинодів називаєтьсязонуванням[11]. Для цього іноді використовуютьсяпортали[12] — невидимі поверхні, які служать для того щоби вручну розділити великийнод на два менші[13][14]. Крім порталів використовуютьсяантипортали[15], які обмежують зони рендерингу.
Опис «заповнених» і «порожніх» частин простору виконується завдяки набору замкнених тривимірних об'єктів, складених із непересічних поверхонь —брашів (brush,укр.пе́нзель). Цей принцип побудови простору називаєтьсяконструктивною суцільною геометрією. Геометрія може бути «адитивною» (увесь простір початково «порожній») і «попередньо прорахованою» (початково заповнений матерією простір, пререндерених,англ.Pre-rendered[en]).Браші діляться на три типи:
Суцільні (solid) — повноцінно беруть участь у бінарній розбивці простору.
Віднімальні (subtractive) — «вирізають» об'єми в просторі.
Напівсуцільні (semi-solid) — не впливають напряму на бінарне дерево простору, однак впливають на його фізичну модель. Можуть тільки «заповнювати» простір. Слугують для створення «невидимих» перешкод, а також зниження числа полігонів інодів[16].
Порожні (non-solid) — тільки створюють поверхні, не впливають на бінарне дерево простору. Використовуються переважно для створенняоб'ємів (volume) — частина простору, яка має властивості, відмінні від властивостей ігрового світу.Об'єми мають пріоритет. Властивостіоб'єму з великим пріоритетом застосовуються до акторів, що перебувають у ньому. Ігровий світ завжди має мінімальний пріоритет. За допомогоюоб'ємів можна змінити гравітацію, в'язкість, туман тощо.Об'єми, починаючи з версії рушіяUnreal Engine 2, використовуються для створення води (але не водної поверхні).
Дебютувавши в 1998 році зі гроюUnreal, Unreal Engine 1 сполучав в одному рушієвіграфічний рушій,фізичний рушій,штучний інтелект, керуванняфайловою і мережевою системами та готове середовище розробки для ігорUnrealEd. З огляду на рівень продуктивності більшості комп'ютерів того часу, розробники дещо спростили деякі елементи рушія: системувиявлення зіткнень, мережевий код, кодконтролера для гравця[17].
Деякі технології рушіяUnreal Engine були революційно новими, наприклад використанняDynamic scene graph (DSG). Ця технологія надавала змогу працювати низці ефектів для накладення на поверхні:
Частково або повністю дзеркальні поверхні.
Технологія "варпінгу" (warp) — можливість під час промальовування змінювати зображення однієї поверхні проєкцією зображення паралельною їй поверхнею. Попри те, що низка об'єктів могла безперешкодно переходити черезварп-зони (наприклад, пущена гравцем ракета), була присутня велика кількість обмежень на роботу таких зон[18]. Ця технологія виглядала в грі як портали (через які можна було стріляти та проходити, але вони не пропускали звуки), що суттєво випередили свій час. Дизайнери гри додавали до таких порталів чудовий динамічний ефект переливчастої та світної поверхні, у результаті чого портали були однієї з помітних особливостей Unreal 1.
Скайбокс (Skybox) — проєктування на поверхні рендеру з іншої точки (яка зазвичай в невеличкому «боксі» (англ.box) з накладеною текстурою неба, звідси й назваSkybox). Простіше кажучи, відображення не лицьової грані полігонів, а зворотної, із заздалегідь накладеною текстурою «неба» на об'єкт. У грі взагалі досить широко використовувався метод масштабування текстур таким способом, що призводило до досить реалістичних (і найголовніше — динамічних, на відміну від ігор попередніх поколінь) картинок навколишнього середовища. Для порівняння, в Quake3 також було динамічне небо, але на відміну від Unreal, там воно абсолютно не виглядало фотореалістичним (маючи, крім того, помилку в декомпресії алгоритму S3TC, що призвела до появи градієнтів). Unreal була однією з перших ігор, що широко використовували мультитекстурування, що надавало змогу (при правильному розміщенні джерел світла й орієнтації відносно пререндерених текстур) досягти ефекту тривимірності поверхонь (хоча справжніх технологій Bump mapping у той час не було ще в жодній грі).
Особливо добре в рушія вийшли неперевершенігало навколо джерел світла, які плавно (а не миттєво) загасали, бувши перекритими краями стін у міру руху гравця; лава й деякі текстури калюж води, у які падали краплі (що виглядають надзвичайно живими й динамічними завдяки використанню процедурних текстур); і фотореалістичне небо. Загалом, гра мала своєрідну графіку, що відрізняє її від інших ігор (тому, що «епоха подібності» ігор одна на одну почалася після її появи).
Спочатку рушій був випущений із підтриманням для двох платформ:IBM PC та Macintosh. Завдяки модульній системі рушія була заявлена можливість портування рушія на приставки «нового покоління» того часу й пізніше був успішно використаний на таких платформах якGameCube,PlayStation 2 іXbox. Також підтримувалася незалежність мережевого коду від платформи клієнта, тобто користувачіMac OS могли грати в багатокористувацькому режимі Unreal з користувачами Microsoft Windows.
У гріWheel Of Time рушійUnreal 1 був удосконалений додаванням деталізації текстур при наближенні до них, що забрало один із недоліків графіки — низькодетальні «замилені» поверхні (тому, що гра розроблялася в розрахунку на прискорювачі3Dfx, що мають усього 4 MB текстурної пам'яті, і часто використовувався метод масштабування, описаний вище).
У1999 році вийшла покращена версія рушіяUnreal, призначена для тогочасних комп'ютерів і консолейDreamcast іPlayStation 2. Були внесені значні доповнення — підтримання лицьової анімації, максимальна роздільна здатність текстур збільшена до 1024x1024, розширювана система «часток», технологіяS3TC. Також була інтегрована друга версія редактораUnrealEd. Ця версія рушія використовується в онлайн-шутеріUnreal Tournament, і в аркадіГаррі Поттер і Філософський камінь.
Через кілька років група незалежних розробників UTPG звернулася до Epic Games за доступом довихідних кодів виконуваних файлівUnreal Tournament, щоби продовжити підтримування гри.Epic Games прийняли пропозицію і якийсь час команда розробників випускала неофіційні патчі для гри[19].
Друга версіяUnreal Engine побачила світ у2002 році з появоюUnreal Tournament 2003. У ній були практично повністю переписані ядро й механізм рендерингу, а також інтегрована нова версія редактораUnrealEd 3. Крім цього, рушій використовував фізичну підсистемуKarma[20]. Інші частини рушія були також поліпшені або змінені для кращої сумісності зPlayStation 2,GameCube іXbox.
З'явилися такі технології:
Рідка поверхня (fluid surface) — плаский об'єкт, що складається з великої кількості полігонів, що імітує поверхню рідини. Такий об'єкт можна помістити на межі з об'ємом води й він буде спотворюватися під дією минаючих через нього об'єктів (наприклад гравця, що пірнає).
Листя (foliage) — генеровані на льоту об'єкти, які декоруютьландшафт (наприклад, трава).
ПідтриманняVoIP — можливість переговорів через мікрофон з іншими гравцями під час гри.
Розпізнавання мовлення — переклад голосу в текст і обробка як команди (наприклад, можливість віддаватиботам команди голосом). Ця технологія використовувалаMicrosoft Speech API й тому підтримувалася тільки в 32-бітній версії Windows.
Складніша фізика тіл,технологія «Карма» (Karma) — обробка дії на тіла не як дію на один об'єкт, а як дію на скелет (Ragdoll) із прив'язкою до нього частин тіла. У кожного суглоба персонажа з'явилися обмежувачі (обертання), ці обмежувачі бувають 2-х видів: шарнірні й лінійні. Лінійні можуть обертатися тільки навколо однієї осі, а шарнірні по всім 3-м. Також сама дія на деякі об'єкти визначається не по коробках колізій, а по складних моделях, які також прив'язані до скелета. Звичайно така технологія використовувалася тільки там де необхідно, наприклад для розрахунків взаємодії із гранатою застосовувалася тільки сфера колізій для економії ресурсів.
Фізика Ragdoll (як наслідок переходу на Karma) — попри те що «скелетна» структура об'єктів була реалізована ще в першій версії рушія, можливість використання фізики «ганчіркової ляльки» з'явилася тільки разом із переходом на нову фізичну підсистему.
Транспортні засоби (vehicles) — можливість обробляти події від стороннього актора. ВUnreal Tournament 2003 реалізовані не повністю, є недопрацьований акторBulldog. Однак є реалізація[21] рівня для UT2003, на якому перебуває модифікований актор, що виконує всі функції транспортного засобу. Транспортні засоби діляться по типах реалізацій — нерухомі (стаціонарні оборонні установки), складені з декількох об'єктів (Karma vehicle), з використанням скелетної структури і транспортні засоби, що прикріплюються до інших транспортних засобів (наприклад, кулемет на вежі танка). Деякі транспортні засоби можуть діяти без «пілота», керовані власним штучним інтелектом.
У цій версії був вкотре покращено та оптимізованографічний рушій — з'явилась підтримка Direct3D 9, OpenGL 2 і Pixomatic (остання система рендерингу слугує для комп'ютерів зі слабкою відеокартою, але потужним центральним процесором). Додана підтримка64-бітнихопераційних системWindows NT іGNU/Linux. Найбільша можлива роздільна здатність текстур досягла розміру в 4096x4096пікселів, додана повноцінна підтримкаюнікоду (16-біт), що дало змогу створювати повністю локалізовані ігри на азійських мовах. У пізніших версіях впровадженийSpeedTree. З'явилася можливість відтворення відео у форматіDivX іBink. Крім того, була покращена оптимізація рушія, що дозволило досягти більшої продуктивності на тих же обчислювальних ресурсах.
Спеціальна версія рушія для консоліXbox. Окрім оптимізації коду, мала нові візуальні ефекти, такі якdepth of field (зангл. — глибина зору), динамічна гамма-корекція,bloom і різні варіаціїblur. Формат текстур був змінений для реалістичнішого відображення тіней у високій якості, доданийMemory Tracking, підтримка голосового чату, сервісуXbox Live, а також функція поділу екрана[22].
Unreal Engine 2 Runtime є спеціальною версією рушія Unreal Engine 2.0 з обмеженою ліцензією. Користувач може завантажити дистрибутивwindows-версії рушія з офіційного сайту (для інших операційних систем необхідно придбати ліцензію). У комплекті поставляєтьсяредактор картUnrealEd, утилітаucc, а також тестовий рівень і невеликий набір моделей ітекстур, що демонструють можливості технології «Unreal». Рушій безкоштовний для некомерційних проєктів, а також для використання в освітніх цілях (таких як створення3D-презентацій). Для використання в комерційних цілях потрібно придбати ліцензію[23][24]. Завантажити безкоштовну версію, іменовану на офіційному сайті як «демо» можнатут.
UE3 був розроблений з урахуванням персональних комп'ютерів, що використовують сучасні системи рендерингу (DirectX 9/10 і OpenGL 2/3, а з березня 2011 року було додано підтримкуDirectX 11), і консолей наступного покоління (PlayStation 3 іXbox 360). У зв'язку із широким розповсюдженням багатопроцесорних систем рушій використовує два паралельні головніпотоки — основний потік (що відповідає переважно за ігровий процес) і потік рендерингу. Крім двох головних потоків можуть бути створені другорядні, які виконують разові задачі[25]. З'явилася підтримка багатопоточного динамічного завантаження даних (streaming), наприклад, завантаження «локації» безпосередньо при переміщенню по ній з метою економії ресурсів.
Оновлений графічний рушій підтримує більшість сучасних технологій, включаючиHDR, освітлення кожного пікселя, динамічні тіні, shader model 4, геометричні шейдери. Самграфічний конвеєр був переведений під керування шейдерів. Від фізичної підсистеми Karma відмовилися на користь іншої за назвоюPhysX від компаніїAGEIA. Пізніше AGEIA випустила набір додаткових бібліотек до гри, що дозволяють залучити всі можливості фізичної системи (такі як ефект «рідини» або тканини). За анімацію облич персонажів відповідає механізмFaceFX. Оновлена версіяEAX до 5-ї[26]. Додана підтримкаSpeedTree для генерації дерев. Наголос був зроблений на additive-геометрію, однак від підтримки від'ємної геометрії не відмовилися. Недоліком від'ємної геометрії в першу чергу є набагато триваліші розрахунки освітлення[27]. Представлений новий редакторUnrealEd, переписаний з використаннямwxWidgets.
У цій версії було додано фільтр постобробкиAmbient occlusion, що покращує тіні та освітлення. Було збільшено число оброблюваних персонажів у кадрі. Перероблена на новому рівні технологія динамічної водної поверхні, фізика м'яких тіл і руйноване оточення також значно поліпшені.
У березні2010 року був опублікований анонс нових можливостей рушія, які будуть представлені наGame Developers Conference 2010. Одним з основних нововведень є нова система розрахунків освітленняUnreal Lightmass, що використовуєглобальне освітлення без втрат функцій, які були реалізовані в старіших системах освітлення. Поліпшена робота з багатопроцесорними системами — розподіл завдань між декількома потоками за допомогоюUnreal Swarm, а також прискореннякомпіляції кодуC++ і обробкаUnreal Script за рахунокUnreal Build Tool (останнє збільшення продуктивності торкнеться тільки розробників або творців аматорських модифікацій). Доданий власний засіброзповсюдження користувацького контенту —Unreal Content Browser. Буде докладніше розказано проUnreal Master Control Program — новий майстер-сервер, для оновлення клієнтів і ведення глобальної статистики, який уже використовується вGears of War 2. У зв'язку з нововведеннямиEpic Games China планує продемонструвати використання рушія длямасових багатокористувацьких онлайн ігор[28].
18 серпня2005 року віцепрезидентEpic GamesМарк Рейн повідомив, щоUnreal Engine 4 вже два роки як перебуває в розробці і його цільовими платформами єперсональні комп'ютери й консолі 4-го покоління, а єдиною людиною, що працювала над рушієм, єТім Свіні. Сам же Свіні на GDC 2006 оголосив, що розробка четвертогоUnreal Engine не почнеться раніше2008 року, оскількиUE3 буде актуальний аж до2010 року.
9 жовтня2008 року наTGS група розробниківSquare Enix повідомила, що вони «бачили наступнийUnreal Engine (Unreal Engine 4)» і «не можуть дочекатися можливості попрацювати з ним»[29]. РанішеSquare Enix випустилаThe Last Remnant і «не зустрічалася із проблемами при роботі зUnreal Engine 3».
19 березня 2014Epic Games представила[30] рушійUnreal Engine 4, примітний повною доступністюсирцевих текстів для сторонніх розробників. Код рушія розміщений наGitHub для передплатників сервісуEpic Games[31]. При цьому кардинально змінена бізнес модель розповсюдження рушія — за 19 доларів на місяць надається повний доступ до всіх компонентів продукту, включаючи середовищеUnreal Editor, приклади контенту, шаблони готових ігор та повні сирцеві тексти рушія, написаного на мовіC++. Рушій доступний для платформWindows,Mac OS X,Apple iOS іAndroid. Також офіційно заявлено про нативну підтримки десктоп-дистрибутивівLinux іSteam OS.
Код рушія може використовуватися в будь-яких комерційних проєктах, але з розробників даних проєктів здійснюється відрахування у розмірі 5% від доходу, отриманого від продажу гри користувачам. Збір відрахувань з доходів від продажу робить рушійUnreal Engine 4 цікавим рішенням не тільки для великих ігрових проєктів, але і для невеликих стартапів і авторів безкоштовних ігор.
Можна відзначити також спільну з проєктомMozilla ініціативу[32] зі створенняHTML5-варіанту рушіяUnreal Engine 4, що дозволяє створювати3D-ігри, що запускаються всерединібраузера без використання зовнішніхплаґінів (C/C++ код гри і рушія за допомогоюкомпілятораEmscripten перетвориться вJavaScript з розширеннями статичної типізаціїAsm.js, для виводу графіки використовуєтьсяWebGL).
13 травня 2020 рокуEpic Games розкрила перші відомості про створення нової версії рушія, продемонструвавши нові можливостіUnreal Engine у демовідео під назвою «Lumen in the Land of Nanite» (укр.Люмен у Землях Наніту), створеному на консолі дев'ятого поколінняPlayStation 5[34]. Поліпшення найбільше торкнулися анімації, звуку, технічної та графічної складової рушія тощо[35]. Було також представлено дві нові технології:Наніт іЛюмен[36]. Рання версія рушія запланована до випуску на початку 2021 року, а повноцінний випуск має відбутися пізніше того ж року[37]. Новий рушій підтримуватимеMicrosoft Windows,macOS,iOS таAndroid, а також не лишевосьме, а й дев'яте покоління ігрових консолей, яке розпочнеться з випускомPlayStation 5 таXbox Series X[38].
Деякі компанії-розробники воліють використовувати технології «Unreal» як основу для розробки власного рушія. Наприклад,Unreal Engine 2 був спеціально дороблений для гриThief: Deadly Shadows і отримав внутрішнє ім'я«Flesh Engine».
Ubisoft використовують для своїх проєктів рушіїYETI engine іLEAD engine. Примітно, що обидві технології засновано наUnreal Engine 2.5 і застосовуються компанією в іграх нового покоління, а також використовуються на консоляхXbox 360 іPlayStation 3.
Наприкінці1999 рокуEpic Games опублікувала частинупочаткового кодувиконуваних файлівUnreal Tournament, що допомогло на початкових етапах проєктуOpenut з портування рушія й гри наLinux. Через деякий час роботу над проєктом перехопила компанія з розробки відеоігорLoki Games, а підтримкаOpenut була припинена[40]. Linux-версіяUnreal Tournament була випущена в продажLoki Games.
У цей час, перша версія рушія більше не доступна для ліцензування, однакпочатковий код, необхідний для створення власних виконуваних файлів, існує у вільному доступі. Варто відзначити, що вони поширюються за «Unreal Retail» ліцензією — тобтотільки для персонального використання[41]. Крім того, у 2004 році був опублікований початковий код гриRune[42].
Друга версія як і раніше доступна для ліцензування.Epic Games пропонують її для створення ігор на «діючі» персональні комп'ютери або ігорові консолішостого покоління за суму $350 000 і більше (залежить від кількості підтримуваних платформ)[43].
Для некомерційних проєктів, що не стосуються відеоігор, доступна «закрита» версія Unreal Engine 2 Runtime. Розробка ігор на цій версії рушія суворо заборонена (попри те що конкретного визначення «ігор» у ліцензії немає) через те що «основний дохідEpic Games отримує від створення ігор, і якщо ви прагнете зробити свою гру — зробіть її як модифікацію до існуючого продукту»[44].
Для бюджетних проєктів доступно також ліцензуванняUnreal Engine 2 Runtime за порівняно низькоюціною (від $8 000). Вартість ліцензії залежить від кількості розробників (числа «робочих місць»). Разом з ліцензуванням хоча б одного «робочого місця» доступне замовлення заголовних файлів другої версії рушія за ціною $5 000[45].
Ціна ліцензування версій3.0 і старше не публікується, однак згадується що є вибір з різних варіантів ліцензій, у тому числі й для не ігрових продуктів[43].
Попри те, що рушій розроблений для створення відеоігор, його адаптують і для інших цілей — конструкторські, дизайнерські, тренувальні програми та інше.
5 листопада 2009 року був випущений пакетUnreal Development Kit, безкоштовна версіяUnreal Engine 3 для некомерційного використання з можливістю купівлі дешевої комерційної ліцензії[46]. Якщо написання ігор наUnreal Engine 2 Runtime було суворо заборонене, то написання ігор з використаннямUDK припустиме, однак заборонене на його базі створення продуктів, «які можуть або будуть конкурувати зUDK, а також проміжним ПЗ (middleware) або ПЗ для розробки ігор (game development software) створенимEpic Games»[47].
Більшість відеоігор наUnreal Engine виконані в жанрі 3D-шутера абобойовика, однак серед випущених продуктів є ігри іншого жанру:аркади,рольові ігри,файтинги й різного родусимулятори. Крім того, рушій адаптується для обробкитривимірної графіки в кінематографі й освітніх цілях.