Почему VR разработка вам не подходит +4


Всем привет! Меня зовут Григорий Дядиченко, и я занимаюсь AR/VR. (Слышны хлопки по залу). В AR/VR я уже больше 4 лёт, хотя занимаюсь не только исключительно ими, а самыми различными проектами под заказ всё это время. Я работал в студиях, я долгое время был фрилансером и даже целый год у меня была своя студия. Сегодня же я хочу рассказать с разных точек зрения и нюансов “почему вам не стоит идти в VR”, как разработчику. Если вас интересует то, с чем вы столкнётесь в виртуальной реальности — добро пожаловать под кат!



VR для энтузиастов


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

Очень дорогое оборудование




Тут небольшая предыстория. Во-первых, в студиях это не играет такой роли для разработчика, так как оборудование дают, и когда я работал в компаниях думать об этом не приходилось. Во-вторых, тут надо немного разделять десктоп VR и мобильный VR. В мобильном VR — оно просто дорогое, в десктоп VR — оно нереально дорогое.

Когда я начинал фрилансить у меня был неплохой ноутбук MSI за 40к рублей и GearVR с последним флагманом самсунга. То есть суммарно сетап стоил около 130к рублей. В целом на мой взгляд, минимальный (не самый комфортный) комплект для Unity фрилансера — это ноутбук от 40-50к рублей. Вы уже можете с ним разрабатывать проекты под заказ. Для мобильного VR же, если брать текущий момент времени, нужно купить ещё Oculus Quest — который стоит около 60к рублей (то есть дороже, чем ваш ноут). Уже 100к рублей, что не так уж и дёшево. Особенно не для Москвы.

Но возьмём худший вариант. Десктопный VR. Что нам нужно? Комп, монитор (хотя бы один), клавиатура, мышь, HTC Vive (хотя бы первый). И стоит этот минимальный комплект ну где-то в районе 200-250к рублей. Так как минимальная видеокарта для разработки это 1060 в данном случае. Это уже прям ощутимая сумма денег. Сейчас хотя бы хорошо, что в Unity есть абстракция над разными контроллерами, в древние времена маппинг на кнопки приходилось писать под каждый, и это очень неудобно, когда у вас скажем вайв, но нет окулуса. Не потестировать.

Для мобильного AR нужен минимально — хороший телефон. Пока лучшее соотношению цены и качества по моему опыту — это Redmi Note 7. Его можно найти за 10-11к рублей, так что тут не всё так плохо. У него есть проблемы, и это конечно не айфон. Но для тестирования подходит отлично (сейчас это основное тест устройство на андроиде). Есть правда один нюанс, что это подходит разве что для изучения AR или разработки только под андроид, что редкость (хотя в b2b задачах бывает) На айос — это соответственно IPhone 8 — 25к. Плюс чтобы было комфортно нужен макбук, но на первых порах можно скрипя зубами попользоваться Unity Cloud Build. + аккаунт разработчика — 150$ в год (около 10-11к по текущему курсу). Что суммарно нам даёт 90-100к. Зачем же нужен айфон? Даже в ARFoundation одно и то же API работает по разному на Android и на IOS. Особенно в случае маркеров

У меня же за год скопилось огромное количество оборудования. Несколько шлемов, липмоушены, куча телефонов и прочая фигня.

То есть сводно.
Минимальный набор для коммерческой Unity разработки — 40к-50к рублей (потом можно уже разогнаться и купить себе SSD и прочие прелести жизни для комфортной разработки) Причём лучше не покупать макбук на старте, если вы решили работать с 3д. Так как там есть задача — запекать свет. И в отличии от макбука за 50к, на винде есть ноуты с нормальными видеокартами, где это не превратится в боль.
Минимальный набор для мобильного VR — 100к-110к рублей
Минимальный набор для дектопного VR — 200-250к рублей.
Минимальный набор для мобильного AR — 90к-100к рублей

И да, без оборудования нельзя. Даже если у тебя гора опыта работы, ты можешь “на глаз” сделать лишь часть задач. Если же мы касаемся любых игр, то их надо тестировать в шлеме. В мобильной и веб разработке правда тоже бывает не всегда всё так гладко, так как нужны разные телефоны. Но всё зависит от задачи, и как минимум это значит, что у вас уже есть проект. Хотя может кто в комментариях поделится, какой на ваш взгляд минимальный комплект для таких вещей, как фронтенд, бекенд и т.п. Лично с моей точки зрения для бекенда один из самых простых минимальных наборов, так как по SSH заходим на виртуалку, хоть с чайника. Дальше уже именно вопрос комфорта работы, чтобы локально виртуалочку поднять, энвайромент и вообще купить макбук.

Тестирование




Пожалуй моя главная боль. Я как опытный разработчик в первую очередь делаю систему так, чтобы абстрагировать инпут и 90% работы делать всё же в движке. То есть, шутер? Ну 3д контроллер — постреляем. Текстовый инпут? Тоже переносим на экран. Сложный алгоритм или визуализация? Тестовый скрипт, который прогоняет разные варианты входных данных.

И работая в студии или компании — у вас есть рабочая зона, где всё можно тестировать. В целом по сравнению с любой другой разработкой меня всё ещё фрустрируют задачи, которые могут быть выполнены только за пределами Unity и разных IDE, когда в руки нужно брать устройство. В мобильном геймдеве тоже хорошо бы играть в то, что ты делаешь. Особенно, если не разбираться в UX, но там это менее критично во многих случаях. В скажем пошаговых играх или головоломках. И основной вопрос отвечаете ли вы за UX. Если нет и у вас не скрам команда — в этом нет необходимости, хотя и полезно. Большая часть багов (не все) ловится в пределах фреймворка.

Любая же AR/VR механика тестируется только в оборудовании. Один из самых удобных с точки зрения AR/VR интерфейсов — относится к каждому элементу в мире, как к физическому объекту. Поэтому нужно смотреть, как работают ваши силы, физические механики и т.п. Помимо, пока не выработаны гайдлайны на эту тему нужно смотреть, что скажем шрифты читаемы. Из-за проблем с разрешением — что графика не рябит. Плюс, чтобы пользователя не укачивало в вашем контенте. Одну только механику невесомости для одного проекта (пользователь перемещался отталкиваясь от стен) я 2 недели калибровал по скоростям и их затуханию, чтобы игра не превращалась в блеватрон.

И это всё реально протестировать только в шлеме. В AR ещё бывает ряд нюансов связанных с тестированием маркеров, трекингом и прочим, что так же делает тестирование сложнее, чем при многих других видах разработки. Для энтузиаистов конечно это вероятно даже не будет проблемой, но из этого следует следующая проблема.

Забудьте про путешествия, если работаете над VR




Немного иронично про это говорить сейчас, но тем не менее так было не всегда, и я уверен, что мир придёт в норму. Путешествовать разрабатывая VR проекты — это 25 литровый рюкзак, в котором будут: игровой ноут, Vive, штативы, и вы довольно подозрительно будете смотреться в аэропортах. А номера в отелях или букинг вам нужны весьма специфичные. Так как в идеале, чтобы было хотя бы 3х3 метра свободного пространства, чтобы штативы поставить. Либо вероятнее всего путешествовать вы будете по 360 панорамам в VR с красивыми видами саванны и прочего.

В случае фриланса путешествия — это сложно, но у некоторых моих знакомых получается. Это конечно не как на картинках из интернета, так как вы работаете не на пляже с май-тай и мулатками, а в номере, под кондиционером, молясь что интернет потянет и всё получится. Правда вечер можно проводить как хочется, или то время когда работа закончится, так как в той же Азии не так уж и дорого, и можно работать не 24/7.

Так же VR проекты достаточно увесистые. Мой средний проект за 3 года весит 2-3гб. На интернете в отелях, да и по интернету вне РФ — сложно передавать такие файлы.

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

VR разработка — это сложно




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

Скажем в плане тех же игр типа тенниса. Под десктоп — это по сути сигнал нажата кнопка. В VR же вам нужно рассчитать, какое ускорение и направление скорости придать мячу в момент коллизии, чтобы пользователь поверил тому, куда мяч полетел и мог удобно играть (и это не всегда простые формулы).

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

Если же вас всё это не пугает




В целом VR/AR разработке есть один большой плюс. Она интересна своей неизученностью и там бесконечный простор для экспериментов. Много раз получалось что-то красивое совершенно случайно. Так как не думаешь “А что, так можно было?”

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




К сожалению, не доступен сервер mySQL