Интервью VGTimes.Ru с разработчиками Unity — как создается самый популярный игровой движок (Эксклюзив)

На отечественной игровой конференции 4C, которая проводится компанией Wargaming.net, мы получили возможность напрямую пообщаться с ребятами из Unity Technologies — разработчика популярнейшего инструментария для создания видеоигр и приложений. Узнайте, кто стоит за множеством популярных проектов!

На вопросы VGTimes.ru отвечали сразу трое участников команды Unity:

  • Валентин Симонов — филд-инженер, также занимается консалтинговой работой со студиями;
  • Елена Зезюлина — директор по развитию бизнеса;
  • Антон Яковлев — ведущий программист по физике.

Оптимизация и подходы к реализации

VGTimes: Расскажите кратко, с чем вы приехали на 4C?

Валентин: Смысл первой части доклада — техническая оптимизация проектов. Я общаюсь с разработчиками и вижу, как они делают игры на Unity, как создают архитектуру проекта. Часто вижу, как делать не надо. Это проводит к разным проблемам, которые проявляются только в конце, и чтобы исправить их, нужно приложить много усилий.

VGTimes: А можно какой-нибудь пример?

Валентин: Самый распространенный пример — это люди, которые только начали работать с Unity. Они почитали «туториалы» у нас на сайте, которые позволяют быстро начать работу с Unity. У нас очень удобный редактор, с его помощью можно быстро собрать прототип.

Но если использовать только знания из обучающих материалов, когда проект и команда побольше, то будут проблемы с производительностью. Но есть альтернативные подходы, которые изначально закладывают возможность масштабирования игры (больше объектов и другого контента). Этим методам и посвящен мой доклад на 4C. Антон, добавишь что-нибудь?

Антон: Да, я могу сказать, что на Unity создается большое количество контента — игры, VR-приложения, интерактивные приложения. Например, интерактивные комнаты, которые позволяют расставить мебель и увидеть свой будущий интерьер. Во всех этих случаях контента со временем становится все больше и больше. Растет детальность, нужно все больше вычислительных ресурсов, чтобы качественно представить приложение пользователю.

К тому же на части платформ нам нужно работать над экономией ресурсов. Это связано, например, с расходом батареи на мобильных устройствах — смартфонах, планшетах и даже ноутбуках. Как этого можно достичь? Путь к экономии лежит через более эффективное использование ресурсов, предоставленных устройством. Например, параллельное использование всех ядер процессора. Сейчас большинство кода, который пишут разработчики, как в играх, так и в мобильных приложениях, идет последовательно, на один процессор. Как в 1971 году, логика осталась та же.

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

VGTimes: И без тормозов, как говорится!

Валентин: Да, для геймера это очень важно — играть без «тормозов». Ведь не у всех есть самый новый процессор или iPhone 8. У многих людей до сих пор слабые девайсы, к сожалению, из-за чего у разработчиков постоянная головная боль по этому поводу: как заставить игру работать хорошо на не самых мощных устройствах.

VGTimes: А какие еще есть способы решить эту проблему?

Антон: Помимо многопоточности большое значение имеет архитектура — внутреннее устройство. Ведь все можно реализовать разными способами, и они далеко не всегда бывают равнозначными по трудозатратам и оптимальности. Что-то может работать быстро, что-то медленно.

Вы можете дойти до дальнего магазина и пешком, но куда выгоднее поехать на машине. А можно сесть в трамвай или троллейбус. У каждого способа есть свои особенности. Например, трамвай следует по определенному маршруту и останавливается только в определенных местах, это тоже следует учитывать при составлении маршрута. Все эти «реальные» штуки отчасти характерны и для разработки ПО, если уметь абстрагироваться.

VGTimes: Получается, что это все относится к оптимизации? Сделать максимум, имея то, что есть?

Антон: Да, конечно. По нашим справочникам можно сделать игру и получить прототип с базовым функционалом. А уже потом нужно его оптимизировать и наполнять интересным содержимым.

VGTimes: Расскажите, как у вас обстоят дела с производителями комплектующих? Есть ли какие-то договоренности?

Антон: Да, работаем очень плотно. Правда, практически все находится под NDA — соглашениями о неразглашении информации. Со всеми крупными и не очень разработчиками программного обеспечения также есть партнерские соглашения. Это нужно, чтобы убедиться в правильности нашего курса и что технологии будут работать корректно.

Валентин: Мы всегда стараемся быть в курсе новых технологий. Мы, конечно, сейчас о них говорить ничего не можем, но когда производитель собирается пускать в серийное производство какую-то новую «железку» или даже консоль, то он обычно заглядывает к нам. У нас есть специальная команда, которая под жуткими NDA, смотрит рабочие прототипы, изучает документацию, а потом заранее начинает внедрять поддержку новинки в движок.

Благодаря этому уже на запуске разработчики могут делать программы на Unity и компилировать под нужную среду. Последний пример — Nintendo Switch. Это популярная консоль, и уже сейчас для нее можно делать игры на Unity.

VGTimes: Популярность Switch постепенно нарастает. После анонса особого ажиотажа не было, а сейчас почти каждый день появляется новость о том, что какая-то новая игра издается и там тоже.

Валентин: Да, и некоторые из них на Unity!

Движок для всех

VGTimes: Кого вы видите главным конкурентом для своего движка?

Валентин: Главные конкуренты — это самописные движки, которые пишутся самими разработчиками. Это крупные команды, у которых есть возможность работать над собственным движком, и именно они составляют главную конкуренцию, ведь переход с одной технологии на другую почти всегда проходит трудно и долго.

VGTimes: Какие планы по развитию Unity? Что планируете добавлять, убирать? Что нового хотите предложить разработчикам?

Антон: Например, сейчас у нас есть важное направление — развитие функциональности для художников и вообще для создателей контента, а не только для программистов. В ближайшие годы мы хотим сделать так, чтобы Unity был установлен и у художников, и у аниматоров тоже.

Елена: С выходом версии 2017 мы полностью пересмотрели принципы работы. Теперь подход к развитию движка изменился, и каждый квартал будет выходить глобальное обновление с новыми возможностями. Кое-что можно будет попробовать в бета-версиях еще до релиза, но позже на релизе мы выпускаем уже стабильную версию. К слову, за последние годы мы значительно улучшили стабильность работы движка.

Еще одно изменение — это более индивидуальный подход к аудитории, то есть к нашим пользователям. Мало кто знает, что на официальном сайте Unity есть специальная форма для обратной связи. Каждый может написать туда, что он хочет увидеть в ближайшем будущем. Таким образом, наша команда всегда знает, какие «фичи» волнуют пользователей и корректирует курс разработки, исходя из полученной информации.

VGTimes: Расскажите нашим читателям, насколько доступен ваш движок? Как он распространяется?

Валентин: Unity доступна в нескольких версиях. Есть так называемое персональное издание (Unity Personal)? любой желающий может скачать его с официальной страницы, при этом дистрибутив будет иметь полный функционал. Единственное ограничение связано с тем, что если разработчик начинает зарабатывать на игре или приложении довольно значительные суммы (от $100.000), то он должен будет приобрести подписку Unity Plus ($35 в месяц).

Елена: Идея подписки в том, что если продукт начинает приносить ощутимую прибыль и разработчик фактически переходит в бизнес-сегмент, то ему не составит труда заплатить за технологию. При этом возможности у всех версий самого движка одинаковые, а подписка дает доступ к различным дополнительным сервисам, которые полезны в первую очередь средним и крупным студиям — аналитика, анализ производительности, мультиплеер и так далее.

Позднее команда вообще может перейти на еще более высокий уровень подписки (Unity Pro за $125) и получить доступ к премиум-поддержке и даже исходному коду движка.

Большие и маленькие игры

VGTimes: Какие игры, сделанные на Unity, вызвали у вас наибольший восторг? Какая игра стала предметом гордости?

Валентин: Из тех, в которые играю я, это Hearthstone.

Елена: Из недавних Gwent от CD Project. Это карточная игра, но графика в ней очень высокого уровня. Далеко не каждый движок на такое способен, и уж тем более не каждый специалист может написать соответствующий функционал без применения сторонних технологий.

VGTimes: Вопрос общего плана. Что вдохновляет вас на работу? Что мотивирует продолжать развивать Unity?

Валентин: Нашей миссией всегда была демократизация разработки. Мы хотим предоставить каждому человеку возможность создавать свои проекты. 10 лет назад было чрезвычайно сложно взять и сделать игру. Нужно было с нуля писать собственную технологическую базу или покупать чужой движок за астрономические суммы.

Елена: Это даже не миссия, а то, что находится в генетическом коде компании. С момента основания мы выбрали этот путь и до сих пор неотступно следуем ему.

VGTimes: А бывали ли сентиментальные моменты? Например, когда люди стали разработчиками только благодаря вам?

Антон: Да, такое бывает часто. Одно время у нас даже была рассылка, в которой мы публиковали такие истории. Я помню, это было несколько лет назад: семья в Техасе, одинокая мать, ребенок и большой кредит за дом. Чтобы выплатить его обычным способом, пришлось бы платить много десятков лет. А маленький мальчик сделал простенькую игру. И она в какой-то степени «выстрелила».

Она, конечно, не стала супер-популярной, но определенные деньги все же заработала, и благодаря этому семья смогла выплатить весь кредит. Мама этого ребенка написала нам большое благодарственное письмо, и его было очень трогательно читать: как простой бесплатный движок смог не только помочь в очень непростой ситуации, но и в целом поднять жизнь на новый уровень, о котором они не могли даже и мечтать. У них началась хорошая жизнь. Не этого ли хотим мы все?

VGTimes: Понятно, что вы стараетесь поддерживать контакт с разработчиками. Но расскажите, имеет ли для вас значение их профессионализм? Есть ли для вас разница между большими компаниями и маленькими студиями?

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

VGTimes: Вы можете привести пример такой «экспериментальной» игры?

Валентин: Да, например, в Superhot очень интересная механика. Это тот самый шутер, в котором время идет только тогда, когда персонаж игрока двигается. Прототип был создан на каком-то польском «хакатоне», ребята довели проект до релиза: придумали, как правильно развить игровую механику, и даже портировали игру для VR.

Это как раз тот случай, когда игра особенно хороша в виртуальной реальности. Это яркий пример, когда буквально трое человек сделали игру на «коленке», а теперь у них большая команда и они вовсю ездят по мероприятиям и делятся своим опытом.

Елена: Тут нужно отметить, что одним из важнейших аспектов разработки на Unity является большое сообщество. Разработчики на Unity есть практически в каждом городе, они активно кооперируются. Получается такая автономная система, которая растет и поддерживает себя сама. Люди общаются и делятся разной полезной информации. Мы тоже стараемся помогать по мере сил, но сообщество, конечно, делает это не хуже. Очень здорово, что люди в нашем коммьюнити такие дружелюбные.

Работа с сообществом

VGTimes: На какую официальную поддержку может рассчитывать начинающий разработчик? Может ли он написать напрямую вам и задать интересующие вопросы?

Валентин: Прежде всего у нас есть очень активный форум, на котором сидят не только пользователи движка, но и мы — его разработчики. Для русскоязычной аудитории есть группы в социальных сетях «ВКонтакте» и Facebook. В крупных городах есть отдельные группы, которые собираются для обмена опытом. У них тоже можно узнать много интересного.

Антон: У наших подразделений тоже есть средства связи. Например, группа, которая занимается подготовкой обучающих материалов, ведет свой Twitter и часто отвечает на вопрос. Да и в целом мы всегда относимся к людям лояльно и стараемся им помочь по мере возможностей. Мы считаем, что нужно делиться, а не забирать все себе.

Елена: И это правильно, ведь успех какой-то отдельной студии, разрабатывающей на Unity, это и наш успех тоже.

VGTimes: Расскажите, какие самые последние технологические новшества были внедрены исключительно по запросу сообщества?

Антон: Целая куча разных небольших улучшений! Например, в Unity есть так называемый Profiler — это инструмент, позволяющий замерять производительность. Пользователи очень активно обсуждали этот инструмент и сделали множество интересных предложений, на которые мы опирались при выпуске обновлений. Например, почему бы с помощью «Профайлера» не измерять нагрузку памяти? Как правило, потребление памяти тоже имеет большое значение при разработке.

Есть целая куча примеров, связанных с физикой. Люди банально писали в Twitter и просили реализовать тот или иной функционал.

VGTimes: Какой? Давайте хотя бы парочку примеров!

Антон: Так я добавил функцию Physics.BoxCast. Допустим, у вас есть объект («коробка»), вы можете протащить ее через игровую сцену, а на выходе функция показывает, с какими другими объектами пересеклась «коробка». Оказалось, что у этой «фичи» есть разные полезные применения. Еще одна штука: мы выложили в Asset Store специальное расширение, которое позволяет в один клик создать простенькую «машинку». Это полезно для тех, кто хочет просто протестировать свои наработки. Скачиваешь, делаешь пару кликов, и вот у тебя готовая «машинка», готовая к тестам!

Елена: Кстати, Антон затронул очень интересный аспект разработки на Unity — это так называемые расширения, или ассеты. У нас есть Asset Store. Эта такая площадка, на которой каждый разработчик может опубликовать свои «ассеты» — различные компоненты, фрагменты кода, модули. Их можно выкладывать бесплатно или на продажу. Мы следим за самыми популярными и востребованными ассетами и если видим, что они пользуются спросом, то нередко выкупаем ассеты и делаем их доступными для всех. Такая история произошла, к примеру, с ассетом TextMesh Pro.

Будущее Unity

VGTimes: Многие люди делают долгосрочные планы. А вы? Каким вы видите Unity через 10 лет?

Елена: Сейчас начинается очень интересный этап нашей деятельности, ведь Unity начинают использовать не только для игр, но и для множества других программ. Это различные симуляторы, создаваемые далекими от геймдева людьми. Это и нефтяные компания, и автопром, авиапромышленность. Движок развивается по всем направлениям.

Немаловажную роль тут играет маркетинг, ведь компания с громким именем может хорошо продвигать любой свой проект, а для сокращения затрат на производство использовать Unity. Медицина, виртуальная реальность, 3D-печать, протезирование — наша технология может быть применена везде. Мы также поддерживаем большую часть мобильных девайсов, практически все PC-решения. Большая часть VR-контента в мире создана на Unity, и это наша большая победа.

VGTimes: Вас не пугает такой быстрый рост? Ведь запросов становится много, и нужно постоянно расти, чтобы соответствовать ожиданиям.

Валентин: Тут есть один очень важный момент. Unity — это не только игры, на нашем движке делается очень много всего. Технологией интересуются даже анимационные студии. И получается так, что движок должен уметь все. Поэтому мы хотим предоставить пользователям как можно больше возможностей по работе на самом низком уровне. Чтобы движок не был таким «черным ящиком», на который сам пользователь не может никак повлиять, только работать в пределах дозволенного функционала.

Например, если человек делает 2D-игру, то он должен иметь возможность отключить 3D-функции и все остальные модули, которые ему не нужны. Это позволит освободить часть ресурсов компьютера и в конечном итоге улучшить производительность. Особенно это важно на консолях, которые очень ограничены в возможностях, но, как правило, продаются именно за счет технологичных AAA-проектов.

Мы стараемся развивать все эти инициативы. К примеру, традиционный рендеринг относительно простых 3D-мультфильмов занимает по несколько минут на один кадр, в то время как правильный «сетап» в движке позволяет значительно сократить это время и, тем самым, ускорить получение результата.

VGTimes: Какие возможности для анимации были добавлены в последних обновлениях?

Валентин: В версии 2017.1 появились крутые «фичи» — Timeline и Cinemachine. Timeline — это, по сути, секвенсор, который очень полезен как разработчикам, так и аниматорам, особенно для пост-процессинга. Этот инструмент позволяет создавать разнообразные кат-сцены прямо в игре, и потому будет удобен для аниматоров. Мы получили очень много отзывов, и еще много чего нужно будет улучшить, но уже сейчас это очень мощная штука.

А с помощью Cinemachine можно применять все основные эффекты, такие как Color Grading, Depth of Field и многие другие, которые иначе пришлось бы программировать вручную.

Елена: Два этих инструмента будут полезны прежде всего художникам и дизайнерам, которые не занимаются программированием, так как они смогут создавать очень классный контент с помощью интуитивно-понятного интерфейса. Так что теперь эти люди тоже смогут работать в Unity напрямую, без посредника в лице программиста. Это экономит время и деньги.

Впечатления и пожелания

VGTimes: С какими мыслями и эмоциями вы ехали на конференцию 4C? Были ли вы здесь в прошлом году? Какие впечатления у вас?

Валентин: Я вообще очень часто посещаю разные мероприятия, и потому для меня все это уже в какой-то степени стало рутиной. Но, тем не менее, я хочу отметить хорошую организацию 4C, технический «сетап», никаких проблем. Впечатления положительные. Аудитория интересная, вопросы хорошие.

VGTimes: А какие вопросы вам задавали?

Валентин: В основном это были уточняющие вопросы по теме доклада — эффективной оптимизации. Отвечал в основном не я, а мой коллега.

Антон: Да, была масса уточняющих технических вопросов, я был очень рад на них ответить, я благодарен смелым людям, которые не побоялись спросить.

VGTimes: Что бы вы хотели сказать геймерам с VGTimes.ru, которые, возможно присматриваются к разработке игр, но не знают, с какой стороны подступиться к этому делу?

Валентин: Отвечу кратко. Самое важное для любого разработчика, особенно начинающего — закончить проект. Многие люди участвуют в конкурсах, но 99% проектов так и остаются на стадии чернового прототипа. Поэтому вот мой совет: закончите хотя бы один проект, пусть даже совсем небольшой. Это сразу поднимет вас на новый уровень.

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

Антон: Даже не знаю… Классические законы Ньютона работают при малых скоростях, поэтому не спешите. Не бойтесь, сделайте первый шаг, начните делать игру, закончите ее. Ну и, конечно, будьте частью сообщества, поддерживайте любимых разработчиков, покупайте их игры. Больше хайпа, больше «движухи», и все будет здорово!

VGTimes: Спасибо вам, ребята! Вы очень классные!

Задавала вопросы Анастасия Ворошина, администратор VGTimes.ru. Расшифровал и оформил Тырлов Владимир.

+4
Комментарии 9