Unreal Engine: відмінності між версіями

[перевірена версія][неперевірена версія]
Вилучено вміст Додано вміст
трохи правопису
Рядок 15:
'''Unreal Engine''' — [[ігровий рушій]], розроблюваний і підтримуваний компанією [[Epic Games]].
 
Перша гра, створена на цьому рушіюрушії — [[Unreal]], яка з'явилася [[1998]] року. З тих пір різні версії цього ігрового рушія використали в більш ніж сотні ігор, серед яких [[Deus Ex]], [[Lineage II]], [[Thief: Deadly Shadows]], [[Postal 2]], серіях ігор [[Brothers in Arms (серія ігор)|Brothers in Arms]], серія ігор [[Splinter Cell]], [[Tom Clancy's Rainbow Six (серія ігор)|Tom Clancy's Rainbow Six]], а також у відомих ігрових серіях [[Unreal (серія)|Unreal]] і [[Unreal Tournament]] від самих Epic Games. Пристосований у першу чергу для [[Шутер від першої особи|шутерів від першої особи]], рушій використовувався й при створенні ігор інших жанрів.
 
Написаний мовою [[C++]], рушій дозволяє створювати ігри для більшості операційних систем і платформ: [[Microsoft Windows]], [[Linux]], [[Mac OS]] і [[Mac OS X]], консолей [[Xbox]], [[Xbox 360]], [[PlayStation 2]], [[PlayStation Portable]], [[PlayStation 3]], [[Wii]], [[Dreamcast]] і [[Nintendo GameCube]]. У грудні [[Марк Рейн]] продемонстрував роботу рушія Unreal Engine 3 на [[iPod Touch]] і [[iPhone 3GS]].<ref>{{cite web|url=http://www.anandtech.com/gadgets/showdoc.aspx?i=3695|title=Epic Demonstrates Unreal Engine 3 for the ipod Touch/iphone 3Gs|publisher=[[Anandtech]]|publication-date=22 грудня 2009|accessdate=2009-12-22|author=Anand Lal Shimpi|language=англійською|archiveurl=https://www.webcitation.org/65bY6pbh1?url=http://www.anandtech.com/show/2892|archivedate=2012-02-20|deadurl=no}}</ref> У березні 2010 робота рушія була продемонстрована на [[комунікатор]]і [[Palm Pre]], що базується на мобільній платформі [[Palm webOS|webOS]].<ref>{{cite web|url=http://www.palmq.ru/article.php?sid=2479|title=Epic продемонструвала рушій Unreal 3 для webOS|publisher=[[Palmq Online]]|publication-date=12 березня 2010|accessdate=2009-12-22|language=російською|archiveurl=https://www.webcitation.org/65bY7kNva?url=http://www.palmq.ru/article.php?sid=2479|archivedate=2012-02-20|deadurl=no}}</ref>
Рядок 21:
Для спрощення портування рушій використовує модульну систему залежних компонентів: підтримує різні системи [[рендеринг]]у ([[Direct3D]], [[OpenGL]], [[Pixomatic]]; раніше підтримувалися [[Glide API]], [[S3 Metal]], [[PowerVR SGL]]), відтворення звуку ([[Environmental Audio Extensions|EAX]], [[OpenAL]], [[DirectSound3D]]; раніше підтримувалися [[A3D]]), засоби голосового відтворення тексту, розпізнавання мовлення (тільки для Xbox360, PlayStation 3, Nintendo Wii і Microsoft Windows,<ref>{{cite web|url=http://www.fonix.com/pr/20061002.pdf|title=Fonix Speech joins the Unreal Engine 3|publisher=Fonix Speech|accessdate=2009-01-24|language=англійською|archiveurl=https://www.webcitation.org/65bYD3zVC?url=http://www.fonix.com/pr/20061002.pdf|archivedate=2012-02-20|deadurl=yes}}</ref><ref>{{cite web|url=http://www.fonixspeech.com/voicein_ge.php|title=Fonix Voicein Game Edition|publisher=Fonix Speech|accessdate=24 січня 2009|language=англійською|archiveurl=https://web.archive.org/web/20080517145944/http://www.fonixspeech.com/voicein_ge.php|archivedate=17 травень 2008|deadurl=yes}}</ref> також планувалося для Linux і Mac),<ref>{{cite web|url=http://osdir.com/ml/games.devel.linux/2003-11/msg00000.html|title=[Gd-linux] text to speech and speech recognition libraries|publisher=Daniel, Epic Games Inc.|publication-date=Листопад 2003|accessdate=2009-01-24|language=англійською|archiveurl=https://www.webcitation.org/6I3ec6LIm?url=http://osdir.com/ml/games.devel.linux/2003-11/msg00000.html|archivedate=2013-07-12|deadurl=yes}}</ref> модулі для роботи з мережею й підтримка різних пристроїв вводу.
 
Для гри у мережі підтримуються технології [[Windows Live]], [[Xbox Live]], і [[GameSpy]], включаючищо дає можливість підключити до 64 гравців (клієнтів) одночасно.<ref>[http://www.unrealtechnology.com/features.php?ref=technology-overview Unreal Technology Overview] {{Webarchive|url=https://web.archive.org/web/20081217133451/http://www.unrealtechnology.com/features.php?ref=technology-overview |date=17 грудень 2008 }} — Unreal Engine 3{{ref-en}}</ref> Попри те, що офіційно засоби розробки не містять у собі підтримки великої кількості клієнтів на одному сервері, рушій використовувався для створення [[Багатокористувацька рольова онлайн-гра|MMORPG]]-ігор. Один з найвідоміших представників жанру, [[Lineage II]], використовує рушій Unreal Engine.
 
== Основна термінологія рушія ==
Усі елементи ігрового рушія представлені у вигляді [[Об'єкт (програмування)|об'єктів]], що мають набір характеристик, і [[Клас (програмування)|клас]], який визначає доступні характеристикифункції. У свою чергу будь-який клас є «дочірнім» класом '''object'''. Серед основних класів і об'єктів можна виділити наступні:
* Актор ('''actor''') — базовий клас, що містить усі об'єкти, які мають відношення до ігрового процесу й мають просторові координати.
** Павн, пішак ('''pawn''') — фізична модель гравця або об'єкта, керованого штучним інтелектом. Назва походить від {{lang-en|pawn}} — той, ким ''маніпулюють'' (''pawn'' можна перевести також як ''пішак'', тому такий об'єкт без якої-небудь моделі виглядає як [[пішак]]). Метод керування описаний спеціальним об'єктом, такий об'єкт називається ''контролером''. Контролер штучного інтелекту описує лише загальну поведінку пішака під час ігрового процесу, а такі параметри як «здоров'я» (кількість пошкоджень, після яких пішак перестає функціонувати) або, наприклад, відстань, на якій пішак звертає увагу на звуки, задаються для кожного об'єкта окремо.
* Світ, рівень ('''world''', '''game level''') — об'єкт, що характеризує загальні властивості «простору», наприклад, силу тяжіння й туман, у якому розташовуються всі актори. Також може містити в собі параметри ігрового процесу, як, наприклад, ігровий режим, для якого призначений рівень.
Для роботи із простими й, як правило, нерухомими елементами ігрового простору (наприклад, стіни) використовується [[бінарна розбивка простору]] — увесь простір ділиться на «заповнене» і «порожнє». В «порожній» частині простору розташовуються всі об'єкти, а також тільки в ній може перебувати «точка спостереження» при відмальовці сцени. Можливість повного або часткового поміщення об'єктів в «заповнену» частину простору не виключається, однак може привести до неправильної обробки таких об'єктів (наприклад, розрахунки фізичної взаємодії) або неправильної відмальовки у випадку поміщення туди «точки спостереження» (наприклад, ефект «залу дзеркал»). Усі пішаки, що потрапляють в «заповнену» частину простору, відразу «гинуть».
[[Файл:600px-Unreal engine zoning svg.png|thumb|Зонування. У камеру не потрапляє жоден портал (пунктирна лінія) червоної зони, тому об'єкти в ній не обробляються зовсім]]
Поверхня ('''surface''') є основним елементом бінарного дерева простору. Ці елементи створюються на грані перетинанняперетину між «заповненою» і «порожньою» частинами простору. Група елементів бінарного дерева простору називається нодом ('''node''', {{lang-uk|вузол}}). Цей термін, як правило, уживається в контексті '''node count''' — кількість нодів на екрані або в ігровому просторі взагалі. Кількість нодів, одночасно видимих на екрані впливає на продуктивність при промальовуванні сцени. Якщо якийсь нод не потрапляє на екран або перекривається цілком іншими нодами, він не обраховуютьсяобраховується — це служитьдопомагає дляпідвищити підвищення продуктивностіпродуктивність, особливо в закритих просторах. Розбивка всього простору на групи нодів називається зонуванням.<ref>[http://wiki.beyondunreal.com/Legacy:Zoning Зонування] — Unreal Wiki {{ref-en}}</ref> Для цього іноді використовуються ''портали''<ref>[http://wiki.beyondunreal.com/Legacy:Zone_Portal Legacy:Zone Portal — Unreal Wiki<!-- Заголовок доданий ботом -->]</ref> — невидимі поверхні, які служать для того щоб вручну розділити великий нод на два менші.<ref>Не слід плутати ноди Unreal Engine із ключовими точками ('''power nodes''') з ігрових режимів '''Onslaught''' і '''Warfare''' в іграх серії [[Unreal Tournament]]</ref><ref>У версії рушія Unreal Engine 3 ввели підтримку аддитивної геометрії, що дозволило відмовитися від зонування</ref> Крім порталів використовуються ''антипортали'',<ref>[http://udn.epicgames.com/Two/Leveloptimizationantiportals.html Оптимізація рівнів за допомогою антипорталів] {{Webarchive|url=https://web.archive.org/web/20110609123722/http://udn.epicgames.com/Two/LevelOptimizationAntiportals.html |date=9 червень 2011 }} — Unreal Developer Network {{ref-en}}</ref> які обмежують області відмальовки.
 
Опис «заповнених» і «порожніх» частин простору виконується за допомогою набору замкнених тривимірних об'єктів, складених з не пересічних поверхонь — брашейбрашів ('''brush''', {{lang-uk|пе́нзель}}). Цей принцип побудови простору називається [[Конструктивна суцільна геометрія|конструктивною суцільною геометрією]]. Геометрія може бути «аддитивноюадитивною» (увесь простір початково «порожній») і «віднімальною» (початково заповнений матерією простір). БрашиБраші діляться на три типи:
* Суцільні ('''solid''') — повноцінно беруть участь у бінарній розбивці простору.
** Аддитивні ('''additive''') — «заповнюють» бінарний простір.
** Віднімальні ('''substractive''') — «вирізують» об'єми у просторі.
* Напів-СуцільніНапівсуцільні ('''semi-solid''') — не впливають напряму на бінарне дерево простору, однак впливають на її фізичну модель. Можуть тільки «заповнювати» простір. Слугують для створення «невидимих» перешкод, а також зниження числа полігонів і нодів.<ref>[http://wiki.beyondunreal.com/Legacy:Semisolid Semisolid] — Unreal Wiki {{ref-en}}</ref>
* Порожні ('''non-solid''') — тільки створюють поверхні, не впливають на бінарне дерево простору. Використовуються переважно для створення ''об'ємів'' ('''volume''') — частина простору, яка має властивості, відмінні від властивостей ігрового світу. Об'єми мають пріоритет, властивості об'єму з великим пріоритетом застосовуються до акторів, що перебувають у ньому. Ігровий світ завжди має мінімальний пріоритет. За допомогою об'ємів можна змінити гравітацію, в'язкість, туман і таке іншетощо. Об'єми, починаючи з версії рушія Unreal Engine 2, використовуються для створення води (але не водної поверхні).
 
== Версії рушія ==
Рядок 47:
Деякі технології рушія Unreal Engine були революційно новими, наприклад використання Dynamic scene graph (DSG). Ця технологія дозволяла ряд ефектів для накладення на поверхні:
* Частково або повністю дзеркальні поверхні.
* Технологія варпінгаварпінгу ('''warp''') — можливість при промальовуванні заміняти зображення однієї поверхні проекцієюпроєкцією зображення на іншу,паралельну їй паралельну поверхню. Попри те, що ряд об'єктів міг безперешкодно переходити через варп-зони (наприклад, пущена гравцем ракета), була присутня велика кількість обмежень на роботу таких зон.<ref>[http://wiki.beyondunreal.com/Legacy:Warpzoneinfo Warpzoneinfo — Beyondunreal Wiki] {{Webarchive|url=https://web.archive.org/web/20110401003923/http://wiki.beyondunreal.com/Legacy:WarpZoneInfo |date=1 квітень 2011 }}{{ref-en}}</ref> ДанаЦя технологія виглядала в грі як портали (через які можна було стріляти й проходити, але вони не пропускали звуки), що суттєво випередили свій час. Дизайнери гри додавали до таких порталів чудовий динамічний ефект переливчастої й світної поверхні, у результаті чого портали були однієї з помітних особливостей Unreal 1.
* Скайбокс ('''Skybox''') — проектуванняпроєктування на поверхні відмальовки з іншої точки. (яка звичайно поміщалася в невелику «коробку» з накладеною текстурою неба, звідси й назва Skybox). Простіше кажучи, відображення не лицьової грані полігонів, а зворотної, із заздалегідь накладеною текстурою «неба» на об'єкт. У грі взагалі досить широко використовувався прийом масштабування текстур таким способом, що приводило до досить реалістичних (і найголовніше — динамічних, на відміну від ігор попередніх поколінь) картинок навколишнього середовища. Для порівняння, в Quake3 також було динамічне небо, але на відміну від Unreal, там воно абсолютно не виглядало фотореалістичним (маючи крім того, помилку в декомпресії алгоритму S3TC, що привела до появи градієнтів). Unreal був однією з перших ігор, що широко використовували мультитекстурування, що дозволяло (при правильному розміщенні джерел світла й орієнтації відносно пререндерених текстур) досягти ефекту тривимірності поверхонь (хоча справжніх технологій Bump mapping у той час не було ще в жодній грі).
 
Особливо добре в рушіюрушія вийшли неймовірно красиві [[гало]] навколо джерел світла, які плавно (а не миттєво) загасали, будучи перекритіперекритими краями стін у міру руху гравця; лава й деякі текстури калюж води, у які падали краплі (що виглядають надзвичайно живими й динамічними за рахунок використання процедурних текстур); і фотореалістичне небо. У цілому гра мала своєрідну графіку, що відрізняє її від інших ігор (тому що «епоха подібності» ігор одна на одну почалася після її появи).
 
Спочатку рушій був випущений із підтримкою для двох платформ: [[IBM PC-сумісний комп'ютер|IBM PC]] (Windows) і Macintosh. Завдяки модульній системі рушія була заявлена можливість портування рушія на приставки «нового покоління» того часу й пізніше був успішно використаний на таких платформах як GameCube, PlayStation 2 і Xbox. Також підтримувалася незалежність мережевого коду від платформи клієнта — користувачі Mac OS могли грати у багатокористувацькому режимі Unreal з користувачами Microsoft Windows.