Unity: что это за движок, для чего нужен и почему так популярен
Кратко перечисляем особенности.
Иллюстрация: Google Deepmind / Unsplash / Colowgee для Skillbox Media
Сейчас стать разработчиком игр гораздо проще, чем каких-нибудь 20 лет назад. Если раньше студиям часто приходилось самим создавать движок под игру, то сейчас есть множество бесплатных инструментов, которые легко освоить и с помощью которых можно создать проект любой сложности. Среди них один из самых известных — это Unity. Рассказываем, чем он примечателен.
Содержание
Что такое Unity
Unity — это кроссплатформенный игровой движок, созданный компанией Unity Technologies в 2005 году. С его помощью делают одиночные и многопользовательские игры с современной 2D- и 3D-графикой для таких платформ, как ПК, PlayStation, Xbox, Nintendo Switch.
Также на Unity создают игры для браузеров и устройств, работающих на Android и iOS. С помощью Unity можно делать игры с использованием технологий AR и VR. Технологии Unity используются в кино для создания компьютерной анимации, а также в промышленности для разработки иммерсивных 3D-приложений для AR и VR.
Преимущества Unity
Unity — это современный движок, который позволяет делать игры с современной графикой. Его преимущества можно перечислять очень долго. Пройдёмся по основным.
Unity отлично работает с мобильными платформами
В Unity очень легко внедрить инструменты, которые отвечают за монетизацию игр, выпущенных на мобильных платформах, — такие, как показ рекламы и внутриигровые платежи. Также движок предусматривает использование технологий, которые есть практически в каждом современном смартфоне, — акселерометры, гироскопы, GPS, камеру…
Благодаря этому на Unity можно создать для смартфона не только очередную вариацию на тему «три в ряд», но и игры с использованием технологий дополненной реальности, как Pokemon Go например.
Интересно и то, что движок позволяет в удобной форме ещё на этапе разработки проверить, как игра будет чувствовать себя на конкретной модели мобильного устройства. Для этого в окне Game есть режим Simulator. Он позволяет прямо в движке посмотреть, как будет выводиться изображение на экран выбранной модели смартфона или планшета. Клик мышкой в этом случае будет равнозначен тапу.
Также есть приложение для смартфонов Unity Remote. Если установить его и подключить смартфон через USB-кабель к компьютеру, то при запуске игры в движке изображение будет выводиться на ваш смартфон. Вы сможете сразу поиграть в неё. Это позволяет протестировать игру на этапе разработки без создания билда.
У Unity низкий порог вхождения
Порой можно наткнуться на мнение, что Unity это скорее конструктор игр, нежели движок в привычном понимании. И это отчасти правда, ведь каждую игру вы собираете из объектов, которые, в свою очередь, собираются из компонентов, определяющих, как будет действовать объект.
При этом использование скриптов на относительно простом в освоении языке C# позволяет запрограммировать логику любой сложности для игры любого жанра и масштаба. По урокам вы за пару дней разберётесь, как сделать свой кликер, раннер или простенький платформер.
Дальнейшее изучение позволит вам создавать игры с более сложными механиками. Для сравнения, порог вхождения в Unreal Engine значительно выше, ведь тот движок использует язык С++, который труднее в освоении, чем С# (впрочем, и на Unity, и на Unreal Engine есть инструменты для визуального программирования, которые облегчают создание игровой логики).
Также у игрового движка за годы существования сформировалось огромное сообщество. Поэтому если при изучении Unity у вас возникнет проблема или непонимание по какому-то вопросу, то на русскоязычных и англоязычных форумах вы обязательно найдёте тех, кто уже сталкивался с этой проблемой и нашёл решение, либо тех, кто поможет вам во всём разобраться.
Снижает порог вхождения и то, что всю игру вы будете делать в понятном визуальном редакторе. Строить уровни, работать с интерфейсом, настраивать шейдеры и генераторы частиц, создавать противников, анимации и даже в некоторых случаях трёхмерные модели… всё это вы будете делать в одном и том же приложении. Разве что для написания кода на C# понадобится открывать отдельно редактор Visual Studio.
Unity — отличный инструмент для прототипирования
Игры, как правило, создаются путём постоянных доработок. Unity в этом смысле очень удобен, ведь позволяет запустить игру в редакторе и опробовать её без создания отдельного билда, на который понадобится время.
Более того, пока игра запущена, вы можете что-нибудь изменить, чтобы сразу посмотреть, как изменение скажется на геймплее. Например, можно увеличить скорость персонажа, поменять урон оружия, добавить ещё несколько противников, передвинуть ящик, сделать маленького паука огромным и увеличить его HP до 1000, чтобы он стал боссом.
Все объекты в Unity собираются из компонентов, которые очень легко удалять и добавлять. Это также облегчает создание прототипов, ведь всегда можно наделить любой объект уже проработанной логикой поведения, добавив готовый скрипт. Любой автомобиль можно заставить летать, если добавить ему код, написанный для самолёта. Любой фонарный столб может превратиться в NPC, если добавить ему код с диалоговой системой.
Лёгкое создание игр под разные платформы
Если вы сделали игру на Unity, допустим, для компьютера, то вы очень быстро и легко сможете сделать её же версию для смартфона, планшета, игровой приставки или, например, просто для сайта, чтобы поиграть в неё можно было прямо в браузерном окне. При этом использовать Unity вы можете не только на Windows, но и на macOS.
Как отметил автор книги «Unity в действии» Джозеф Хокинг, это стала следствием того, что изначально Unity создавалась лишь под Mac, а затем её расширили до работы с Windows. Дальнейшая работа над движком добавила в качестве платформ для развёртывания смартфоны и такие игровые консоли, как Xbox и PlayStation.
Большой магазин ассетов
Игру в Unity можно целиком собрать из чужих моделей, спрайтов, кода, расширений для движка и всего остального. Всё это можно найти в Unity Asset Store, зайти в который можно прямо в движке. Есть множество бесплатных моделей. Платных вариантов, разумеется, гораздо больше.
Минусы работы на Unity
Минусов у игрового движка Unity тоже хватает, хотя плюсов на чаше весов всё же больше. Вот основные проблемы, о которых надо знать.
За кодом сложно уследить
Да, игру вы собираете в простом и понятном визуальном редакторе, но код для объектов приходится писать в отдельном редакторе. Если у вас простенькая игра, то вы напишете с десяток скриптов, и в целом всё будет нормально. Но если игра большая и для неё нужно написать под сотню разных скриптов, регулирующих работу десятков разных систем и механик, то в какой-то момент вы можете осознать, что забыли, как объекты и разные скрипты взаимодействуют друг с другом и почему, когда вы открываете дверь, у главного героя внезапно пополняется здоровье.
В итоге вам придётся просматривать разные объекты, чтобы попытаться понять, как у вас связаны между собой разные элементы. Подобные проблемы решаются грамотной организацией кода и иерархии объектов в сцене, а также использованием паттернов проектирования. Но всё это приходит лишь с большим опытом.
Проблемы с производительностью
Мультиплатформенность движка — это, конечно, благо. Но в то же время на некоторых платформах производительность игры может быть ниже, чем если бы ту же игру сделали при помощи инструментов, специально заточенных под конкретную платформу.
Мобильный гейминг в приоритете
Не столько минус, сколько реальность, к которой стоит быть готовым. На Unity можно делать совершенно разные игры, включая AAA-проекты. Но исторически так сложилось, что чаще всего с его помощью создают мобильные тайтлы. Поэтому если вы освоите этот игровой движок и устроитесь в компанию, разрабатывающую игры, то, скорее всего, будете работать именно над казуальными играми для смартфонов.
Какой язык программирования используется в Unity и его главные особенности
Изначально версия Unity 1.0, вышедшая в 2005 году, поддерживала три языка программирования:
- C#;
- UnityScript, который был создан под Unity по образцу JavaScript;
- Boo, похожий на Python.
Но так сложилось, что на С# писали 80,4% разработчиков игр. UnityScript пользовались 18,9% пользователей. А на долю Boo пришлось всего 0,44% разработчиков. Поэтому в версии Unity 5.0, вышедшей в 2015 году, официальная поддержка языка Boo была прекращена.
Ну а в 2017 году в компании объявили, что начинают отказываться и от UnityScript. Это решение объяснили тем, что UnityScript мешал добавлять в движок новые функции, завязанные на создании кода. Язык C# развивался стремительно, и UnityScript за ним не поспевал. А учитывая, что к тому моменту лишь 3,6% проектов были сделаны на нём, в Unity решили сосредоточить свои силы на взаимодействии движка с C#.
Уже в версии 2017.2 beta из меню Create Assets исчез пункт, отвечавший за создание файла на языке UnityScript (в интерфейсе он назывался JavaScript). Поэтому в настоящий момент C# — это основной язык для работы в Unity.
С# — это объектно-ориентированный язык программирования. Он был разработан в 2001 году компанией Microsoft. Это язык с С-подобным синтаксисом. То есть он очень похож на Java и С++.
У использования С# в Unity есть свои особенности. При разработке игры вы создаёте объекты GameObjects. Их поведение определяют компоненты и скрипты, написанные на С#. Каждый скрипт содержит класс, который и описывает, как будет работать объект. В Unity по умолчанию все классы наследуются от базового класса MonoBehaviour. Каждый кадр Unity проверяет все данные в сцене и следит, не изменилось ли что-нибудь. Это похоже на большую петлю, которую проходит движок снова и снова. Разработчик при помощи кода объясняет Unity, что должно измениться в следующем кадре. А класс MonoBehaviour как раз и поддерживает этот жизненный цикл. Для этого в нём есть множество методов. Основные из них — это Start() и Update(). Они будут созданы внутри класса по умолчанию.
Всё, что вы напишете в Update() будет выполняться каждый кадр работы игры. В свою очередь Start() вызывается всего один раз до обновления первого кадра, если сам компонент скрипта в объекте включён.
Также следует упомянуть следующие методы:
- Awake() — запускается лишь раз в начале работы игры, даже если компонент скрипта не включён. Используется, чтобы настраивать связи между разными объектами. Вызывается до Start().
- FixedUpdate() — то же, что и Update(), но используется для корректной работы физики в игре.
- LateUpdate() — выполняется каждый кадр, но уже после того, как будут вызваны все Update() в игре. Используется, например, когда надо, чтобы камера правильно следила за героем, движение которого передвижение реализовано в Update().
Системные требования
В зависимости от сложности вашего проекта и его графики требования к компьютеру могут различаться. Но минимальные системные требования для версии Unity 2022.3, необходимые, чтобы редактор просто запускался и работал на Windows, такие:
- Операционная система: Windows 7 (SP1+), Windows 10 и Windows 11, только 64-битные версии.
- Процессор: архитектура x64 с поддержкой SSE2.
- Графический API: DX10, DX11, и DX12, поддерживаемый GPU.
Для запуска игры в Unity Player есть отдельные минимальные системные требования, которые различаются в зависимости от того, на каком устройстве вы запускаете игру. Для компьютера на Windows они следующие:
- Операционная система: Windows 7 (SP1+), Windows 10 и Windows 11.
- Процессор: архитектура x86, x64 с поддержкой SSE2.
- Графический API: DX10, DX11, DX12.
Важно!
У разных версий Unity для Windows минимальные системные требования могут отличаться друг от друга. Также они различаются для версий движка, работающих на macOS и Linux, и для использования Unity с различными устройствами виртуальной реальности и мобильных платформ. Ознакомиться с ними подробнее можно в официальной документации.
Как установить Unity
Зайдите на сайт unity.com, нажмите на кнопку Plans and pricing («Тарифы и цены»). Так вы попадёте на страницу с тарифными планами. По умолчанию будет открыт раздел Individuals and teams («Физические лица и команды»). Если вы только начинаете знакомство с Unity, то здесь лучше всего перейти в раздел Student and hobbyist («Студент и энтузиаст») и выбрать тарифный план Unity Personal. Это полноценная бесплатная версия Unity.
Далее следуйте инструкциям. Сначала вам надо установить программу Unity Hub. С её помощью вы скачаете актуальную версию Unity.
Политика отчислений Unity
Unity предлагает несколько тарифных планов. Если вы частное лицо и просто хотите делать игры на Unity и продавать их, то можете использовать Unity Personal — это бесплатная базовая версия Unity, включающая также учебные материалы для начинающих. Unity Personal могут использовать также небольшие организации.
Но есть ограничение: денежный оборот или объём привлечённых инвестиций за последние 12 месяцев не должен превышать 100 тысяч долларов. Эта сумма по-прежнему указана в разделе сайта с тарифными планами, но в 2023 году в компании заявили, что порог дохода от продаж игр увеличится со 100 до 200 тысяч долларов. При этом тарифном плане каждая ваша игра будет сопровождаться загрузочным экраном с логотипом Unity.
Если доход физического лица или команды либо финансирование составляет более 200 тысяч долларов за последние 12 месяцев, то надо использовать тарифный план Unity Pro. Среди плюсов, которые предоставляет этот тарифный план, — возможность, например, добавить в игру физический движок Havok Physics (по умолчанию Unity использует собственный физический движок Unity Physics).
Также Unity Pro позволяет развёртывать приложения для таких консолей, как PlayStation, Xbox и Nintendo Switch. Заставку с логотипом Unity можно полностью убрать или заменить на что-то своё. Подписка на Unity Pro стоит 1877 евро в год за рабочее место либо 170 евро в месяц за рабочее место.
Тарифный план Unity Enterprise, как и Unity Pro, нужен при доходах от 200 тысяч долларов за последние 12 месяцев. Но этот тарифный план создан специально для больших команд разработки. Для него надо оформить подписку минимум на 20 рабочих мест. Этот тарифный план среди прочего даёт доступ к исходному коду Unity, предоставляет облачные инструменты для совместной работы и поддержку экспертов.
Ну а тарифный план Unity Industry нужен, когда крупная компания разрабатывает приложения, не связанные с играми и развлечениями, и её общий объём финансирования превышает миллион долларов США. Он подобен Unity Enerprise, но имеет свои особенности вроде персонального менеджера по работе с партнёрами. Стоит он 414 евро за рабочее место в месяц или 4554 евро за рабочее место в год.
Также с 2024 года для тарифных планов Unity Pro и Unity Enterprise вводится комиссия Unity Runtime Fee. Её анонс вызвал возмущение у разработчиков в сентябре 2023 года. В итоге компания немного изменила условия комиссии.
За игры, созданные на версиях Unity, вышедших до 2024 года, комиссия взиматься не будет. Она распространяется только на Unity 6, который выйдет в 2024 году. При этом комиссия будет взиматься только с игр с доходом более миллиона долларов за 12 месяцев и при миллионе установок. Пользователь сможет сам решить, как он будет платить комиссию. Либо 2,5% от ежемесячного дохода, либо комиссия будет построена на основе ежемесячных установок игры.
Читайте также:
Подписывайтесь на наш телеграм-канал «Чекпоинт». Это уютное место, в котором мы рассказываем об играх и о том, как они создаются, а также делимся полезными советами разработчиков и пишем о важных обновлениях популярного софта. Комментарии открыты: вы можете предложить идею для нового текста или просто обсудить всё, что связано с геймдевом.