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

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
Unity
Unity Technologies logo.svg
Тип игровой движок, интегрированная среда разработки, конструктор
Разработчик Unity Technologies
Написана на C, C++ (Runtime), C#, JavaScript (or UnityScript), Boo (Unity API)
Операционная система Microsoft Windows, macOS, Linux, Xbox One, Wii, Wii U, PlayStation 3, PlayStation 4, PlayStation Vita, iOS, Android, WebGL, Tizen, Facebook, TvOS и Nintendo Switch
Языки интерфейса английский
Первый выпуск 8 июня 2005 года
Последняя версия 2018.2.1 (26.07.2018)
Состояние выпущена, в развитии
Лицензия проприетарная (полная версия), свободная (ограниченная)
Сайт unity3d.com​ (англ.)
Commons-logo.svg Unity на Викискладе

Unity — межплатформенная среда разработки компьютерных игр[1]. Unity позволяет создавать приложения, работающие под более чем 20 различными операционными системами, включающими персональные компьютеры, игровые консоли, мобильные устройства, интернет-приложения и другие[2]. Выпуск Unity состоялся в 2005 году и с того времени идёт постоянное развитие.

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

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

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

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

Проект в 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), а в отдельной папке — данные игры (включая все игровые уровни и динамически подключаемые библиотеки).

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

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

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

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

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

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

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

Gone Home — Unity

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

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

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

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

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

Сборки[править | править код]

Помимо бесплатной, существуют четыре сборки — стандартная Unity[13], Unity iOS Pro[13] (для разработки игр под iOS), Android Pro[13] и командная лицензия. Они отличаются стоимостью и функциональностью.

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

С выходом Unity 5 многие ограничения Free версии были убраны, но ежегодный доход с игры всё так же не должен превышать 100 000$.

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

  1. Хокинг, 2016, p. 16.
  2. 1 2 3 Хокинг, 2016, p. 22.
  3. Хокинг, 2016, p. 21.
  4. 1 2 Хокинг, 2016, p. 23.
  5. Memory Considerations when targeting WebGL.
  6. Verge3D versus Unity WebGL - Pipeline and Performance.
  7. Хокинг, 2016, p. 24—26.
  8. Even Hearthstone runs on Unity — and that’s why it’s already on iPad.
  9. Хокинг, 2016, p. 25-.
  10. Dean Takahashi. Unity Technologies developers will be able to publish 3D games via Adobe Flash (англ.). VentureBeat (21 December 2011). Проверено 11 марта 2012. Архивировано 9 июня 2012 года.
  11. David Helgason. Sunsetting Flash (англ.). The Unity Blog (23 April 2013).
  12. 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 года.
  13. 1 2 3 Unity — Store
  14. Unity Software License Agreement 4.x

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

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

Ресурсы для обучения[править | править код]

  • unity3d.com/ru/learn - Официальная страница по обучению Unity.
  • unity3d.ru [русс.] - Русскоязычное сообщество Unity
  • UNITY3DSCHOOL [русc.] — Курсы по обучению Unity для начинающих.