Share to: share facebook share twitter share wa share telegram print page

 

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

Unity
Логотип программы Unity
Скриншот программы Unity
Тип игровой движок, интегрированная среда разработки, фреймворк
Разработчик Unity Technologies
Написана на C++ (Runtime), C#
Операционные системы Windows, macOS, Linux, Android и iOS
Языки интерфейса английский
Первый выпуск 8 июня 2005 года
Аппаратные платформы
Последняя версия
Состояние активное
Лицензия проприетарная
Сайт unity.com (англ.)
Логотип Викисклада Медиафайлы на Викискладе

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

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

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

Технические характеристики

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

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

Также 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.

UNet (библиотека для реализации мультиплеера в играх на Unity) была удалёна, начиная с версии 2018.4; решение «из коробки» для мультиплеера отсутствует.

Также можно использовать подходящий пользователю способ контроля версий. К примеру, Tortoise SVN, Git или Source Gear.

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

Достоинства и недостатки

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

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

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

Игры на Unity

Gone Home — Unity

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

История

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

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

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

Лицензии

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

Тип лицензии Доход компании в год Экран приветствия Сборка в облачном хранилище Отчёты по производительности Премиум поддержка Доступ к исходному коду
Personal До 200 тыс. долларов Необязательная пользовательская анимация и (начиная с Unity 6 необязательно) «Made With Unity» Стандартная Нет Нет Нет
Pro Неограничен Пользовательская анимация и/или «Made With Unity» Одновременная Да Да Нет
Enterprise Неограничен Пользовательская анимация и/или «Made With Unity» Выделенные ресурсы Да Да Да
Industry Неограничен Пользовательская анимация и/или «Made With Unity» Выделенные ресурсы Да Да Да

По другим данным, компания взимает с каждого разработчика ежегодную плату, которая варьируется от $400 до $4000 в зависимости от требуемых функций и размера компании-разработчика[19].

Примечания

  1. Unity download archive (англ.)
  2. Хокинг, 2016, p. 16.
  3. 1 2 3 Хокинг, 2016, p. 22.
  4. Unity Technologies. Unity - Manual: Unity architecture (англ.). docs.unity3d.com. Дата обращения: 13 мая 2022. Архивировано 13 мая 2022 года.
  5. Unity Technologies. Unity - Manual: Physics (англ.). docs.unity3d.com. Дата обращения: 13 мая 2022. Архивировано 13 мая 2022 года.
  6. Technologies, Unity. Unity - Manual: OpenGL Core (англ.). docs.unity3d.com. Дата обращения: 9 декабря 2024. Архивировано 9 декабря 2024 года.
  7. Unity Technologies. Unity - Manual: Scenes (англ.). docs.unity3d.com. Дата обращения: 13 мая 2022. Архивировано 18 апреля 2022 года.
  8. Хокинг, 2016, p. 21.
  9. 1 2 Хокинг, 2016, p. 23.
  10. Memory Considerations when targeting WebGL (англ.). Дата обращения: 24 августа 2018. Архивировано 24 августа 2018 года.
  11. Verge3D versus Unity WebGL - Pipeline and Performance (англ.). Дата обращения: 24 августа 2018. Архивировано 24 августа 2018 года.
  12. Хокинг, 2016, p. 24—26.
  13. Even Hearthstone runs on Unity — and that’s why it’s already on iPad (англ.). Дата обращения: 29 сентября 2017. Архивировано 5 ноября 2017 года.
  14. Хокинг, 2016, p. 25-.
  15. Dean Takahashi. Unity Technologies developers will be able to publish 3D games via Adobe Flash (англ.). VentureBeat (21 декабря 2011). Дата обращения: 11 марта 2012. Архивировано 13 июля 2012 года.
  16. David Helgason. Sunsetting Flash (англ.). The Unity Blog (23 апреля 2013). Дата обращения: 9 декабря 2014. Архивировано 29 ноября 2014 года.
  17. 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. Архивировано 11 мая 2012 года.
  18. Unity Software License Agreement 4.x (англ.). Дата обращения: 6 марта 2014. Архивировано 7 марта 2014 года.
  19. Болл, 2023, с. 130.

Литература

  • Хокинг, Джозеф. Unity — в действии. Мультиплатформенная разработка на C# : [рус.]. — 2. — СПб : Питер, 2016. — 336 с. — ISBN 978-1617292323.
  • Торн, Алан. Искусство создания сценариев в Unity: [рус.]. — СПб: ДМК, 2016. — 362 с.
  • Мэтью Болл. Метавселенная. Как она меняет наш мир = Matthew Ball. The Metaverse: And How it Will Revolutionize Everything. — М.: Альпина Паблишер, 2023. — С. 362. — ISBN 978-5-9614-8036-8.

Ссылки

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


Index: pl ar de en es fr it arz nl ja pt ceb sv uk vi war zh ru af ast az bg zh-min-nan bn be ca cs cy da et el eo eu fa gl ko hi hr id he ka la lv lt hu mk ms min no nn ce uz kk ro simple sk sl sr sh fi ta tt th tg azb tr ur zh-yue hy my ace als am an hyw ban bjn map-bms ba be-tarask bcl bpy bar bs br cv nv eml hif fo fy ga gd gu hak ha hsb io ig ilo ia ie os is jv kn ht ku ckb ky mrj lb lij li lmo mai mg ml zh-classical mr xmf mzn cdo mn nap new ne frr oc mhr or as pa pnb ps pms nds crh qu sa sah sco sq scn si sd szl su sw tl shn te bug vec vo wa wuu yi yo diq bat-smg zu lad kbd ang smn ab roa-rup frp arc gn av ay bh bi bo bxr cbk-zam co za dag ary se pdc dv dsb myv ext fur gv gag inh ki glk gan guw xal haw rw kbp pam csb kw km kv koi kg gom ks gcr lo lbe ltg lez nia ln jbo lg mt mi tw mwl mdf mnw nqo fj nah na nds-nl nrm nov om pi pag pap pfl pcd krc kaa ksh rm rue sm sat sc trv stq nso sn cu so srn kab roa-tara tet tpi to chr tum tk tyv udm ug vep fiu-vro vls wo xh zea ty ak bm ch ny ee ff got iu ik kl mad cr pih ami pwn pnt dz rmy rn sg st tn ss ti din chy ts kcg ve 
Prefix: a b c d e f g h i j k l m n o p q r s t u v w x y z 0 1 2 3 4 5 6 7 8 9