Unity (рушій гри)

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку
Unity
Unity logo 2014.png
Unity game engine example.png
Приклад роботи в Unity
Тип Ігровий рушій,фреймворк
Розробник Unity Technologies
Стабільний випуск 2019.1 (квітень 2019)
Операційна система
Мова програмування C Sharp і C++
Доступні мови Англійська мова
Ліцензія Власницьке програмне забезпечення
Вебсайт unity3d.com

CMNS: Unity у Вікісховищі

Unity — багатоплатформовий інструмент для розробки відеоігор і застосунків, і рушій, на якому вони працюють. Створені за допомогою Unity програми працюють на настільних комп'ютерних системах, мобільних пристроях та гральних консолях у дво- та тривимірній графіці, та на пристроях віртуальної чи доповненої реальності. Застосунки, створені за допомогою Unity, підтримують DirectX та OpenGL.

Технічні характеристики[ред. | ред. код]

Unity — це кросплатформовий ігровий рушій.[1] Програма-редактор Unity працює на Windows, macOS і Linux, а сам рушій може запускатися на 25 платформах[2][3], а саме iOS,[4] Android,[4] Tizen,[5] Windows,[4] Universal Windows Platform,[6] Mac,[7] Linux,[8] WebGL,[3] PlayStation 4,[4] PlayStation Vita,[9] Xbox One,[7] 3DS,[10] Oculus Rift,[4] Google Cardboard,[11] Steam VR,[12] PlayStation VR,[13] Gear VR,[3] Windows Mixed Reality,[14] Daydream,[15] Android TV,[16] Samsung Smart TV,[17] tvOS,[18] Nintendo Switch,[4] Xbox Series X та Series S,[19] PlayStation 5,[20] Facebook Gameroom,[15] Apple ARKit,[21] Google ARCore,[22] Vuforia,[22] і Magic Leap.[23]

Ігрова логіка пишеться за допомогою мови C#, раніше також була можливість використовувати Boo та JavaScript, але розробники відмовились від їх підтримки[24][25].

Функціональні можливості[ред. | ред. код]

Тривимірна графіка в Unity (гра Everything, 2017)

Робота з ресурсами[ред. | ред. код]

Редактор Unity має інтерфейс, що складається з різних вікон, які можна розташувати на свій розсуд. Завдяки цьому можна проводити налагодження гри чи застосунка прямо в редакторі. Головні вікна — це оглядач ресурсів проєкту, інспектор поточного об'єкта, вікно попереднього перегляду, оглядач сцени та оглядач ієрархії ресурсів[26].

Проєкт в Unity поділяється на сцени (рівні) — окремі файли, що містять свої ігрові світи зі своїм набором об'єктів, сценаріїв, і налаштувань. Сцени можуть містити в собі як об'єкти-моделі (ландшафт, персонажі, предмети довкілля тощо), так і порожні ігрові об'єкти — ті, що не мають моделі, проте задають поведінку інших об'єктів (тригери подій, точки збереження прогресу тощо). Їх дозволяється розташовувати, обертати, масштабувати, застосовувати до них скрипти. В них є назва (в Unity допускається наявність двох і більше об'єктів з однаковими назвами), може бути тег (мітка) і шар, на якому він повинен відображатися. Так, у будь-якого предмета на сцені обов'язково наявний компонент Transform — він зберігає в собі координати місця розташування, повороту і розмірів по всіх трьох осях. У об'єктів з видимою геометрією також за умовчанням присутній компонент Mesh Renderer, що робить модель видимою. Різні моделі можуть об'єднуватися в набори (ассети) для швидкого доступу до них. Наприклад, моделі споруд на спільну тему[27][28].

Unity підтримує фізику твердих тіл і тканини, фізику типу Ragdoll (ганчіркова лялька). У редакторі є система успадкування об'єктів; дочірні об'єкти будуть повторювати всі зміни позиції, повороту і масштабу батьківського об'єкта. Скрипти в редакторі прикріплюються до об'єктів у вигляді окремих компонентів[29].

У 2D іграх Unity переважно використовує спрайти. В 3D іграх Unity здебільшого використовує тривимірні моделі (меші)[30], на які накладаються текстури (зумовлюють вигляд поверхні об'єктів), матеріали (зумовлюють як поверхня реагуватиме на різні фактори) та шейдери (невеликі скрипти, за яким вираховується зміна кольору кожного пікселя згідно заданих параметрів, як-от розсіяння відбитого світла)[31]. В обох видах застосовуються системи часток для відображення субстанцій, таких як рідини чи дим[30].

Unity підтримує стиснення текстур, міпмапінг і різні налаштування роздільності екрана для кожної платформи; забезпечує бамп-мапінг, мапінг відображень, паралакс-мапінг, затінення навколишнього світла у екранному просторі, динамічні тіні за картами тіней, рендер у текстуру та повноекранні ефекти обробки зображення, такі як зернистість, глибина чіткості, розмиття в русі[32], відблиски віртуальних лінз або ореол навколо джерел світла[33].

Рендеринг[ред. | ред. код]

Рендеринг зображення відбувається через віртуальну камеру огляду. В робочій області редактора ігрова сцена може розміщуватися як завгодно, а при рендерингу — так, як її видно з камери. В сцені може бути декілька камер, які рухаються за персонажем чи за вказаною траєкторією. Вигляд з камери подається в двовимірно чи тривимірно (в перспективі або ортографічно). Фон сцени, видимий через камеру, типово зображає небо, утворене скайбоксом, але може презентувати й інше довкілля[34].

Графічний рушій використовує DirectX (Windows), OpenGL (Mac, Windows, Linux), OpenGL ES (Android, iOS), та спеціальне власне API для Wii. Також підтримуються bump mapping, reflection mapping, parallax mapping, screen space ambient occlusion (SSAO), динамічні тіні з використанням shadow maps, render-to-texture та повноекранні ефекти post-processing.[35]

Unity підтримує файли 3ds Max, Maya, Softimage, Blender, modo, ZBrush, Cinema 4D, Cheetah3D, Adobe Photoshop, Adobe Fireworks та Allegorithmic Substance. В ігровий проєкт Unity можна імпортувати об'єкти цих програм та виконувати налаштовування за допомогою графічного інтерфейсу.[36]

Для написання шейдерів використовується ShaderLab, що підтримує шейдерні програми написані на GLSL або Cg. Шейдер може включати декілька варіантів реалізації, що дозволяє Unity визначати найкращий варіант для конкретної відеокарти.[37] Unity також має вбудовану підтримку фізичного рушія Nvidia PhysX (колишнього Ageia), підтримку симуляції одягу в системі реального часу на довільній та прив'язаній полігональній сітці (починаючи з Unity 3.0), підтримку системи ray casts та шарів зіткнення.[38]

Скрипти[ред. | ред. код]

Скриптова система ігрового рушія зроблена на Mono — вільному відкритому проєкті з реалізації .NET Framework. Програмісти можуть використовувати UnityScript (власна скриптова мова, подібна до JavaScript та ECMAScript), C# або Boo (мова програмування, подібна до Python).[39] Починаючи з версії 3.0, до Unity входить перероблена версія MonoDevelop для зневадження скриптів.[40]

З виходом версії 5.2 у 2015 році передбачена вбудована можливість редагувати скрипти у середовищі Visual Studio[41].

Asset Tracking[ред. | ред. код]

В Unity включено систему контролю версій для ігрових об'єктів та скриптів під назвою Unity Asset Server. Система використовує PostgreSQL, роботу зі звуком, побудовану на основі бібліотеки FMOD (з можливістю програвати Ogg Vorbis аудіофайли), відеопрогравач із кодеком Theora, рушій для побудови ландшафтів рослинності, вбудовану систему карт освітлення (Beast), мережу для мультиплеєру (RakNet) та вбудовані навігаційні меші для пошуку шляху.[42]

Unity Asset Server[ред. | ред. код]

Сервер наборів ресурсів Unity — це платне доповнення, що додає інструментарій для спільної розробки на базі Unity багатьома користувачами одночасно та контроль версій у функціоналі Unity[43].

Багатогігабайтні проєкти з тисячами мегабайтних файлів піддаються легкому керуванню. Налаштування імпорту та інші метадані також зберігаються разом з історією їх версій. Переглядати зміни ресурсів\версій можна одразу всередині редактора Unity. Якщо файли змінюються, їх статус негайно оновлюється. Перейменування і переміщення ресурсів не створює будь-яких перешкод для безперервного робочого процесу. Сервер ресурсів Unity управляється базою даних PostgreSQL[43].

Сервер ресурсів доступний як для Mac OS X Installer, так і для Linux RPMs. Підтримка декількох платформ забезпечує гнучкість у впровадженні Сервера ресурсів Unity у наявну IT-інфраструктуру[43].

Історія[ред. | ред. код]

Гра Chaos Reborn (2015), створена на Unity
  • Червень 2005, Unity 1.0.1. Перший випуск.
  • Серпень 2005, Unity 1.1. Додана збірка заготовок ігор під Windows та підтримка плагінів C/C++.
  • Грудень 2005, Unity 1.2. Додані ефекти пост-обробки, регдол, тіні, вбудований скрипт управління персонажем, розширені можливості редактора скриптів.
  • Жовтень 2008, Unity iPhone 1.0. Unity приходить на iPhone.
  • Жовтень 2008, Unity iPhone 1.0. Початок офіційних продажів Unity iPhone.
  • Березень 2009, Unity 2.5. Додана підтримка Windows середовищем розробки, перероблений редактор скриптів.
  • Квітень 2009, Unity приходить на ринок ігор Wii.
  • Жовтень 2009, Unity отримує інвестиції від Sequoia Capital в розмірі 5 500 000 доларів США.
  • Жовтень 2009, Unity 2.6. Indie-версія стала безкоштовною[44].
  • Грудень 2009, журнал «Gamasutra» назвав рушій Unity одним із найзначніших учасників на ринку ігрових компаній[45].
  • Березень 2010, Unity iPhone 1.6 Добавлена підтримка .NET 2.1, вбудована підтримка мережі та інші покращення.
  • Квітень 2010, Unity iPhone 1.7 Добавлена підтримка iPad[44].
  • Вересень 2010, Unity Technologies й Electronic Arts (EA) уклали контракт про багаторічну співпрацю[46].
  • Листопад 2012, Unity 4.0. Покращена система анімації (доданий скінінг на GPU), освітлення. Додані візуальні ефекти. Додана збірка ігор під Linux і Adobe Flash. DirectX 11[47].
  • Листопад 2013, Unity 4.3. Підтримка 2D-спрайтів, інтеграція фізичного рушія Box2D, можливість збирати ігри для iOS у версії рушія для Windows[48].
  • Березень 2014, Unity 5. Нові шейдери та інтеграція з технологією глобального освітлення в режимі реального часу Geomerics Enlighten. Це принесе в ігри появу реалістичного освітлення та візуальних ефектів консольного рівня, а також математично точне відображення тіней. Нові інструменти WebGL дозволяють створювати в браузерах більш просунуті проєкти з більш високою продуктивністю[49].
  • Березень 2015, Повноцінна Unity 5 (містить вище перераховане) + додавання всіх можливостей з Pro.-версії в Free. А в Unity Pro. залишилось: Unity Analytics, Team License, Prioritized bug handling, Beta access, Dark Skin та інше[50][51]. Мова скриптів Boo була усунена, як і приклади коду на офіційному сайті документації.
  • Серпень 2017, Unity 2017. Інструмент Timeline для редагування заставок. Набір камер Cinemachine, що можуть слідувати за об'єктами та перемикатися за тригерами та змінювати ефекти зображення. Інструмент Post-Processing Stack, який об'єднує в собі всі візуальні ефекти. Робота з атласами спрайтів у 2D. Можливість записувати взаємодію об'єктів замість покладати їх обрахунок на гру[52].
  • Травень 2018, Unity 2018. Різні конвеєри рендерингу для різного рівня графіки. Компілятор на основі LLVM (Low Level Virtual Machine). Система написання ігрового коду C# Job System для підвищення продуктивності гри[53].
  • Квітень 2019, Unity 2019. Вдосконалення конвеєрів рендеренгу. Інструмент Timeline Signals для керування заставками через тригери. Можливість оновлювати свої готові мобільні ігри замість перезбирати їх. Перебудова ядра Unity на базі DOTS (Data-Oriented Technology Stack) з використанням багатопотоковості процесора[54].
  • Червень 2020, Unity 2020. Система візуального створення скриптів Bolt. Детальніша інформація про набори ресурсів і помилки в них. Детальне налаштування об'єктів безпосередньо в сцені. Запуск інструмента Profiler для оцінки споживання ресурсів грою як окремої програми. Нові інструменти налагодження коду. Прискорена обробка спрайтів. Виведення зображення з кількох камер на одному екрані. Оптимізовано роботу з VR, додано підтримку HDR-дисплеїв[55].

Відомі ігри, базовані на Unity[ред. | ред. код]

Примітки[ред. | ред. код]

  1. Riccitiello, John (23 жовтня 2014). Інтерв'ю з Dean Takahashi. «John Riccitiello sets out to identify the engine of growth for Unity Technologies (interview)». VentureBeat. Архів оригіналу за 17 січня 2015. https://web.archive.org/web/20150117174953/http://venturebeat.com/2014/10/23/john-riccitiello-sets-out-to-identify-the-engine-of-growth-for-unity-technologies-interview/. 
  2. Kelliher, Fiona (24 серпня 2018). Video game company grabs two buildings on Mission Street for big expansion. San Francisco Business Times. Архів оригіналу за 3 жовтня 2019. Процитовано 17 жовтня 2018. 
  3. а б в Robertson, Adi (3 березня 2015). Unity officially releases its new game engine: Unity 5. The Verge. Архів оригіналу за 16 листопада 2018. Процитовано 17 жовтня 2018. 
  4. а б в г д е Dillet, Romain (5 вересня 2018). Unity CEO says half of all games are built on Unity. TechCrunch. Архів оригіналу за 20 грудня 2018. Процитовано 3 грудня 2018. 
  5. Pitcher, Jenna (24 травня 2013). Unity supporting Linux-based platform Tizen. Polygon. Архів оригіналу за 22 березня 2019. Процитовано 3 грудня 2018. 
  6. Coppock, Mark (30 листопада 2016). Unity 5.5 can now be used to create HoloLens augmented reality titles. Digital Trends. Архів оригіналу за 9 лютого 2019. Процитовано 3 грудня 2018. 
  7. а б Помилка цитування: Неправильний виклик тегу <ref>: для виносок під назвою Head не вказано текст
  8. Bright, Peter (18 березня 2014). Unity game engine heading to the browser without plug-ins. Ars Technica. Архів оригіналу за 22 березня 2019. Процитовано 29 жовтня 2018. 
  9. Gilbert, Ben (15 січня 2014). One of gaming's most-used engines arrives today on PlayStation Vita. Engadget. Архів оригіналу за 14 лютого 2019. Процитовано 3 грудня 2018. 
  10. Jarvis, Matthew (1 лютого 2016). Unity now supports Nintendo 3DS. MCVUK. Архів оригіналу за 22 березня 2019. Процитовано 3 грудня 2018. 
  11. Grubb, Jeff (10 лютого 2016). Unity game-making tool gets native support for Google's 5M Cardboard virtual reality devices. VentureBeat. Архів оригіналу за 22 березня 2019. Процитовано 3 грудня 2018. 
  12. Plummer, Quinten (16 лютого 2016). Unity and SteamVR Unite for Native Vive Support. Tech News World. Архів оригіналу за 22 березня 2019. Процитовано 3 грудня 2018. 
  13. De Nisco Rayome, Alison (23 січня 2017). How to become a Unity developer for VR and AR. Tech Republic. Архів оригіналу за 13 грудня 2018. Процитовано 3 грудня 2018. 
  14. Graham, Peter (17 лютого 2018). Build in Unity? Want to Know More About Crafting for Windows Mixed Reality? Then Check out These new Videos From Microsoft. VR Focus. Архів оригіналу за 3 жовтня 2019. Процитовано 4 грудня 2018. 
  15. а б Batchelor, James (14 грудня 2016). Unity dropping major updates in favour of date-based model. Gamesindustry.biz. Архів оригіналу за 21 липня 2018. Процитовано 29 жовтня 2018. 
  16. Lavieri, Edward (2018). Getting Started with Unity 2018: A Beginner's Guide to 2D and 3D game development with Unity, 3rd Edition. Packt Publishing. с. 20. ISBN 9781788832915. Архів оригіналу за 7 жовтня 2021. Процитовано 4 грудня 2018. 
  17. Harris, Richard (28 серпня 2014). Unity Adds Another Big Screen Option for Game Developers with Unity 4.5 for Samsung Smart TV. App Developer Magazine. Архів оригіналу за 22 березня 2019. Процитовано 4 грудня 2018. 
  18. Suckley, Matt (10 грудня 2015). Unity 5.3 launches with improved support for iOS 9 and WebGL. Pocketgamer.biz. Архів оригіналу за 22 березня 2019. Процитовано 4 грудня 2018. 
  19. Parijat, Shubhankar (20 листопада 2020). Xbox Series S is "An Extremely Capable Machine" – Unity Chief Product Officer. GamingBolt (англ.). Архів оригіналу за 22 квітня 2021. Процитовано 24 лютого 2021. 
  20. Takahashi, Dean (4 лютого 2021). Unity Technologies posts Q4 revenue of $220.3 million, up 39%. VentureBeat. GamesBeat (англ.). Архів оригіналу за 21 лютого 2021. Процитовано 25 лютого 2021. 
  21. Clayton, Natalie (15 червня 2018). Unity ARKit update includes persistent mapping and improved tracking. Pocketgamer.biz. Архів оригіналу за 22 березня 2019. Процитовано 4 грудня 2018. 
  22. а б Graham, Peter (4 жовтня 2017). Unity 2017.2 Featuring Optimised Support for ARCore and ARKit launching This Month. VR Focus. Архів оригіналу за 3 жовтня 2019. Процитовано 4 грудня 2018. 
  23. Palladino, Tommy (9 листопада 2018). Magic Leap Publishes More L.E.A.P. Developer Videos Featuring Insomniac Games, Weta Workshop & More. Next Reality. Архів оригіналу за 22 березня 2019. Процитовано 4 грудня 2018. 
  24. UnityScript’s long ride off into the sunset – Unity Blog. Unity Technologies Blog (амер.). Архів оригіналу за 17 жовтня 2017. Процитовано 26 червня 2019. 
  25. Documentation, Unity scripting languages and you – Unity Blog. Unity Technologies Blog (амер.). Архів оригіналу за 22 вересня 2020. Процитовано 26 червня 2019. 
  26. Haas, John (2014). A History of the Unity Game Engine. WPI - Worcester Polytechnic Institute. 
  27. Unity - Manual: Working In Unity. docs.unity3d.com. Архів оригіналу за 24 серпня 2016. Процитовано 5 квітня 2021. 
  28. Unity - Manual: The Main Windows. docs.unity3d.com. Архів оригіналу за 16 лютого 2022. Процитовано 5 квітня 2021. 
  29. Unity - Manual: Physics. docs.unity3d.com. Архів оригіналу за 24 серпня 2016. Процитовано 5 квітня 2021. 
  30. а б Unity - Manual: Particle Systems. docs.unity3d.com. Архів оригіналу за 10 травня 2021. Процитовано 5 квітня 2021. 
  31. Unity - Manual: Materials, Shaders & Textures. docs.unity3d.com. Архів оригіналу за 29 липня 2016. Процитовано 5 квітня 2021. 
  32. Unity - Using DirectX 11 in Unity 4. web.archive.org. 12 березня 2013. Процитовано 5 квітня 2021. 
  33. Unity - Manual: Visual Effects Reference. docs.unity3d.com. Архів оригіналу за 8 вересня 2016. Процитовано 5 квітня 2021. 
  34. Unity - Manual: Cameras. docs.unity3d.com. Архів оригіналу за 23 серпня 2016. Процитовано 5 квітня 2021. 
  35. Using DirectX11 in Unity 4. Unity Technologies. Архів оригіналу за 27 серпня 2013. Процитовано 19 лютого 2013. 
  36. How do I import objects from my 3D app?. Unity Technologies. Архів оригіналу за 27 серпня 2013. Процитовано 19 лютого 2013. 
  37. Shaders. Unity Technologies. Архів оригіналу за 27 серпня 2013. Процитовано 19 лютого 2013. 
  38. Physics. Unity Technologies. Архів оригіналу за 27 серпня 2013. Процитовано 19 лютого 2013. 
  39. Using Scripts. Unity Technologies. Архів оригіналу за 30 січня 2013. Процитовано 19 лютого 2013. 
  40. Getting started with Mono Develop. Unity Technologies. Архів оригіналу за 27 серпня 2013. Процитовано 19 лютого 2013. 
  41. Unity 5.2 and Visual Studio Tools for Unity 2.1. Visual Studio Blog (амер.). 8 вересня 2015. Архів оригіналу за 16 квітня 2021. Процитовано 5 квітня 2021. 
  42. Asset Server (Pro Only). Unity Technologies. Архів оригіналу за 27 серпня 2013. Процитовано 19 лютого 2013. 
  43. а б в Technologies, Unity. Unity Asset Server 2.0 Released | Unity. unity.com (рос.). Процитовано 5 квітня 2021. 
  44. а б Release Archive. Unity (рос.). Архів оригіналу за 19 квітня 2021. Процитовано 9 квітня 2021. 
  45. Christian Nutt. Gamasutra's Best Of 2009: Top 5 Game Companies (англ.). Gamasutra. Архів оригіналу за 9 червня 2012. Процитовано 11 березня 2012. «Unity has become a major player in the market as of 2009, and there's more to come» 
  46. Unity Technologies Wins GigaOM’s Mobilize LaunchPad 2010 (англ.). Unity Technologies. 1 жовтня 2010. Архів оригіналу за 9 червня 2012. Процитовано 11 березня 2012. «We’re excited about and proud of our long term relationship with Electronic Arts.» 
  47. Unity 4.0. Unity (рос.). Архів оригіналу за 15 квітня 2021. Процитовано 9 квітня 2021. 
  48. Unity 4.3. Unity (рос.). Архів оригіналу за 27 квітня 2021. Процитовано 9 квітня 2021. 
  49. Unity 5.0. Unity (рос.). Архів оригіналу за 18 квітня 2021. Процитовано 9 квітня 2021. 
  50. Unity 5's new full-featured Personal Edition is completely, utterly free to use. PCWorld (англ.). 3 березня 2015. Архів оригіналу за 17 травня 2021. Процитовано 9 квітня 2021. 
  51. Nutt, Christian. Unity 5 released with upgrades, full-featured free version. www.gamasutra.com (англ.). Архів оригіналу за 11 травня 2021. Процитовано 9 квітня 2021. 
  52. Unity 2017.1. Unity (рос.). Архів оригіналу за 21 квітня 2021. Процитовано 9 квітня 2021. 
  53. Unity 2018.1. Unity (рос.). Архів оригіналу за 21 квітня 2021. Процитовано 9 квітня 2021. 
  54. Unity 2019.1. Unity (рос.). Архів оригіналу за 19 квітня 2021. Процитовано 9 квітня 2021. 
  55. Unity 2020.1.0. Unity (рос.). Архів оригіналу за 19 квітня 2021. Процитовано 9 квітня 2021. 

Ресурси для навчання[ред. | ред. код]

Посилання[ред. | ред. код]