Unity (игровой движок)

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
Unity
Логотип программы Unity
Скриншот программы Unity
Тип игровой движок, интегрированная среда разработки, конструктор, фреймворк
Разработчик Unity Technologies
Написана на C++ (Runtime), C#
Операционная система Microsoft Windows, macOS, Linux, Android и iOS
Языки интерфейса английский
Первый выпуск 8 июня 2005 года
Аппаратная платформа ПК
PlayStation 4
PlayStation 5
Xbox One
Xbox Series X
Apple TV
Последняя версия
Состояние активное
Лицензия проприетарная
Сайт unity.com/ru
Логотип Викисклада Медиафайлы на Викискладе

Unity (unity в переводе с англ. — «единство») — межплатформенная среда разработки компьютерных игр[2], разработанная американской компанией Unity Technologies. Unity позволяет создавать приложения, работающие на более чем 25 различных платформах, включающих персональные компьютеры, игровые консоли, мобильные устройства, интернет-приложения и другие[3]. Выпуск Unity состоялся в 2005 году и с того времени идёт постоянное развитие.

Основными преимуществами Unity являются наличие визуальной среды разработки, межплатформенной поддержки и модульной системы компонентов. К недостаткам относят появление сложностей при работе с многокомпонентными схемами и затруднения при подключении внешних библиотек[⇨].

На Unity написаны тысячи игр, приложений, визуализации математических моделей, которые охватывают множество платформ и жанров. При этом Unity используется как крупными разработчиками, так и независимыми студиями[⇨].

Возможности[править | править код]

Редактор Unity имеет простой Drag&Drop интерфейс, а также установкой плагинов KALI который легко настраивать, состоящий из различных окон, благодаря чему можно производить отладку игры прямо в редакторе. Движок использует для написания скриптов C#. Ранее поддерживались также Boo (диалект Python, поддержку убрали в 5-й версии) и модификация JavaScript, известная как UnityScript (поддержка прекращена в версии 2017.1). Расчёты физики производит физический движок PhysX от NVIDIA. Графический API — DirectX (на данный момент DX 11, поддерживается DX 12)

Проект в Unity делится на сцены (уровни) — отдельные файлы, содержащие свои игровые миры со своим набором объектов, сценариев, и настроек. Сцены могут содержать в себе как, собственно, объекты (модели), так и пустые игровые объекты — объекты, которые не имеют модели («пустышки»). Объекты, в свою очередь содержат наборы компонентов, с которыми и взаимодействуют скрипты. Также у объектов есть название (в Unity допускается наличие двух и более объектов с одинаковыми названиями), может быть тег (метка) и слой, на котором он должен отображаться. Так, у любого объекта на сцене обязательно присутствует компонент Transform — он хранит в себе координаты местоположения, поворота и размеров объекта по всем трём осям. У объектов с видимой геометрией также по умолчанию присутствует компонент Mesh Renderer, делающий модель объекта видимой.

К объектам можно применять коллизии (в Unity т. н. коллайдеры — collider), которых существует несколько типов.

Также Unity поддерживает физику твёрдых тел и ткани, а также физику типа Ragdoll (тряпичная кукла). В редакторе имеется система наследования объектов; дочерние объекты будут повторять все изменения позиции, поворота и масштаба родительского объекта. Скрипты в редакторе прикрепляются к объектам в виде отдельных компонентов.

При импорте текстуры в Unity можно сгенерировать alpha-канал, mip-уровни, normal-map, light-map, карту отражений, однако непосредственно на модель текстуру прикрепить нельзя — будет создан материал, которому будет назначен шейдер, и затем материал прикрепится к модели. Редактор Unity поддерживает написание и редактирование шейдеров. Редактор Unity имеет компонент для создания анимации, но также анимацию можно создать предварительно в 3D-редакторе и импортировать вместе с моделью, а затем разбить на файлы.

Unity 3D поддерживает систему Level Of Detail (сокр. LOD), суть которой заключается в том, что на дальнем расстоянии от игрока высокодетализированные модели заменяются на менее детализированные, и наоборот, а также систему Occlusion culling, суть которой в том, что у объектов, не попадающих в поле зрения камеры не визуализируется геометрия и коллизия, что снижает нагрузку на центральный процессор и позволяет оптимизировать проект. При компиляции проекта создается исполняемый (.exe) файл игры (для Windows), а в отдельной папке — данные игры (включая все игровые уровни и динамически подключаемые библиотеки).

Движок поддерживает множество популярных форматов. Модели, звуки, текстуры, материалы, скрипты можно запаковывать в формат .unitypackage и передавать другим разработчикам, или выкладывать в свободный доступ. Этот же формат используется во внутреннем магазине Unity Asset Store, в котором разработчики могут бесплатно и за деньги выкладывать в общий доступ различные элементы, нужные при создании игр. Чтобы использовать Unity Asset Store, необходимо иметь аккаунт разработчика Unity. Unity имеет все нужные компоненты для создания мультиплеера. UNet был удалён, начиная с версии 2018.4; решение «из коробки» для мультиплеера отсутствует. Также можно использовать подходящий пользователю способ контроля версий. К примеру, Tortoise SVN, Git или Source Gear.

В Unity входит Unity Asset Server — инструментарий для совместной разработки на базе Unity, являющийся дополнением, добавляющим контроль версий и ряд других серверных решений.

Достоинства и недостатки[править | править код]

Как правило, игровой движок предоставляет множество функциональных возможностей, позволяющих их задействовать в различных играх, в которые входят моделирование физических сред, карты нормалей, динамические тени и многое другое. В отличие от многих игровых движков, у Unity имеется два основных преимущества: наличие визуальной среды разработки и межплатформенная поддержка[4]. Первый фактор включает не только инструментарий визуального моделирования, но и интегрированную среду, цепочку сборки, что направлено на повышение производительности разработчиков, в частности, этапов создания прототипов и тестирования. Под межплатформенной поддержкой предоставляется не только места развертывания (установка на персональном компьютере, на мобильном устройстве, консоли и т. д.), но и наличие инструментария разработки (интегрированная среда может использоваться под Windows и Mac OS)[3].

Третьим преимуществом называется модульная система компонентов Unity, с помощью которой происходит конструирование игровых объектов, когда последние представляют собой комбинируемые пакеты функциональных элементов. В отличие от механизмов наследования, объекты в Unity создаются посредством объединения функциональных блоков, а не помещения в узлы дерева наследования. Такой подход облегчает создание прототипов, что актуально при разработке игр[5].

В качестве недостатков приводятся ограничение визуального редактора при работе с многокомпонентными схемами, когда в сложных сценах визуальная работа затрудняется. Вторым недостатком называется отсутствие поддержки Unity ссылок на внешние библиотеки, работу с которыми программистам приходится настраивать самостоятельно, и это также затрудняет командную работу. Ещё один недостаток связан с использованием шаблонов экземпляров (англ. prefabs). С одной стороны, эта концепция Unity предлагает гибкий подход визуального редактирования объектов, но с другой стороны, редактирование таких шаблонов является сложным[5]. Также, WebGL-версия движка, в силу специфики своей архитектуры (трансляция кода из C# в С++ и далее в JavaScript), имеет ряд нерешённых проблем с производительностью, потреблением памяти и работоспособностью на мобильных устройствах[6][7].

Игры на Unity[править | править код]

Gone Home — Unity

На Unity написаны сотни игр, приложений и симуляций[8], Unity используется как крупными разработчиками (например, Blizzard[9]), так и в создании инди-игр. Компьютерные игры на Unity охватывают множество платформ и жанров, характерными примерами которых являются[10]:

История[править | править код]

Первая версия Unity появилась в 2005 году, когда игровой движок был анонсирован на Worldwide Developers Conference. Изначально Unity предназначался исключительно для компьютеров Mac, а в августе вышло обновление, позволяющее работать под Windows. В следующих версиях постепенно добавлялись новые платформы и развёртывания: межплатформенный веб-плеер в 2006-м, iPhone в 2008-м, Android в 2010-м, и далее на игровых консолях Xbox и Playstation[3].

Есть возможность создавать приложения для запуска в браузерах с помощью специального подключаемого модуля Unity (Unity Web Player), а также с помощью реализации технологии WebGL. Ранее была экспериментальная поддержка реализации проектов в рамках модуля Adobe Flash Player[11], но позже команда разработчиков Unity приняла сложное решение по отказу[12] от этого.

В декабре 2009 года Gamasutra назвал Unity одним из самых значительных участников на рынке игровых компаний[13].

Лицензии[править | править код]

Бесплатная версия Unity имеет некоторые ограничения, но для неё есть возможность распространять игры при условии, что ежегодный доход с игры не превышает 100 000 долларов[14].

Тип лицензии Доход компании в год Экран приветствия Многопользовательские функции Сборка в облачном хранилище Тёмная тема Отчеты по производительности Премиум поддержка Доступ к исходному коду Цена (в долларах)
Personal До 100 000 долларов «Made With Unity» и необязательная пользовательская анимация 20 CCUs Стандартная Да Нет Нет Нет Бесплатно
Plus До 200 000 долларов Пользовательская анимация и/или «Made With Unity» 50 CCUs Приоритетная Да Да Нет Нет 399 в год или 40 ежемесячно
Pro Неограничен Пользовательская анимация и/или «Made With Unity» 200 CCUs Одновременная Да Да Да Нет 1800 в год или 150 ежемесячно
Enterprise Неограничен Пользовательская анимация и/или «Made With Unity» Пользовательский мультиплеер Выделенные ресурсы Да Да Да Да 200$ в месяц

Примечания[править | править код]

  1. https://unity3d.com/get-unity/download/archive
  2. Хокинг, 2016, p. 16.
  3. 1 2 3 Хокинг, 2016, p. 22.
  4. Хокинг, 2016, p. 21.
  5. 1 2 Хокинг, 2016, p. 23.
  6. Memory Considerations when targeting WebGL.
  7. Verge3D versus Unity WebGL - Pipeline and Performance.
  8. Хокинг, 2016, p. 24—26.
  9. Even Hearthstone runs on Unity — and that’s why it’s already on iPad.
  10. Хокинг, 2016, p. 25-.
  11. Dean Takahashi. Unity Technologies developers will be able to publish 3D games via Adobe Flash (англ.). VentureBeat (21 December 2011). Дата обращения: 11 марта 2012. Архивировано 9 июня 2012 года.
  12. David Helgason. Sunsetting Flash (англ.). The Unity Blog (23 April 2013).
  13. Christian Nutt. Gamasutra's Best Of 2009: Top 5 Game Companies (англ.). Gamasutra. — «Unity has become a major player in the market as of 2009, and there's more to come». Дата обращения: 11 марта 2012. Архивировано 9 июня 2012 года.
  14. Unity Software License Agreement 4.x

Литература[править | править код]

Ссылки[править | править код]

  • unity.com​ (англ.) — официальный сайт Unity