Всем привет! Меня зовут Григорий Дядиченко, и я занимаюсь AR/VR. (Слышны хлопки по залу). В AR/VR я уже больше 4 лёт, хотя занимаюсь не только исключительно ими, а самыми различными проектами под заказ всё это время. Я работал в студиях, я долгое время был фрилансером и даже целый год у меня была своя студия. Сегодня же я хочу рассказать с разных точек зрения и нюансов “почему вам не стоит идти в 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 проекты — это 25 литровый рюкзак, в котором будут: игровой ноут, Vive, штативы, и вы довольно подозрительно будете смотреться в аэропортах. А номера в отелях или букинг вам нужны весьма специфичные. Так как в идеале, чтобы было хотя бы 3х3 метра свободного пространства, чтобы штативы поставить. Либо вероятнее всего путешествовать вы будете по 360 панорамам в VR с красивыми видами саванны и прочего.
В случае фриланса путешествия — это сложно, но у некоторых моих знакомых получается. Это конечно не как на картинках из интернета, так как вы работаете не на пляже с май-тай и мулатками, а в номере, под кондиционером, молясь что интернет потянет и всё получится. Правда вечер можно проводить как хочется, или то время когда работа закончится, так как в той же Азии не так уж и дорого, и можно работать не 24/7.
Так же VR проекты достаточно увесистые. Мой средний проект за 3 года весит 2-3гб. На интернете в отелях, да и по интернету вне РФ — сложно передавать такие файлы.
С мобильной виртуальной реальностью чуть проще. Квест не такой большой, да и места именно для теста можно взять поменьше.
На мой взгляд, это пугать не должно, но тем не менее стоит про это сказать. Хороший и интересный VR — это блин очень сложно. Благодаря нереальной степени свободы, и тому, как получается хорошее погружение — в ней тонны математики и физики. Многие стандартные трюки даже из 3д разработки — не применимы. Над тем, как пользователь будет взаимодействовать с миром нужно думать глубоко — так как произвольное движение рук в 3D это сложно.
Скажем в плане тех же игр типа тенниса. Под десктоп — это по сути сигнал нажата кнопка. В VR же вам нужно рассчитать, какое ускорение и направление скорости придать мячу в момент коллизии, чтобы пользователь поверил тому, куда мяч полетел и мог удобно играть (и это не всегда простые формулы).
Поэтому по сравнению с обычной разработкой там больше требований к оптимизации, к знанию математики, физики, шейдеров и прочего. Это то, что мне скорее нравится, но для кого-то это может быть проблемой.
В целом VR/AR разработке есть один большой плюс. Она интересна своей неизученностью и там бесконечный простор для экспериментов. Много раз получалось что-то красивое совершенно случайно. Так как не думаешь “А что, так можно было?”
Но за 3 года работы с этими технологиями я прихожу к выводу, что это больше именно для энтузиастов технологий. Спасибо за внимание, надеюсь эта информация кому-то будет полезна. Плюс может кому-то есть, что к этому дополнить.
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 года работы с этими технологиями я прихожу к выводу, что это больше именно для энтузиастов технологий. Спасибо за внимание, надеюсь эта информация кому-то будет полезна. Плюс может кому-то есть, что к этому дополнить.
AllexIn
1060 как минимум для разработки — совершенно не соответствует реальности.
В 2018 году спокойно занимался разработкой на GTX 650(Даже не TI). Да графоний выкручен на минимум, но графоний VR разработчику вообще по барабану в большинстве задач.
Да и сейчас у меня 1050Ti — хватает выше крыши. Я бы сказал что хороший SSD и мощный проц важнее.
Также хочу немного поспорить с утверждением про то, что крутой VR сложнее. То есть да, с одной стороны он действительно сложнее. Если ко мне придут и скажут «давай сделаем boneworks», я отвечу «Сорри, но такой уровень физики я вот так сходу не потяну. Над этим надо много думать и экспериментировать, чтобы хотя бы понять по плечу оно или нет».
Но если мы чуть снижаем планку, хотя бы до HL: Alyx — почти все проблемы уходят. И разработка наоборот становится проще. Я буквально недавно столкнулся с одинаковой задачей в VR и не VR: инвентарь игрока.
В не ВР — это костыли на костылях и куча условностей. Подбираем предмет, он превращается в объект описания предмета, который где-то надо хранить, после чего в отдельном интерфейсе мы можем мышкой таскать иконку, которая связана с описанием… Костыли на костылях и костылями погоняют.
Интерфейс в VR: предмет можно взять. предмет можно отпустить. если отпустили там, где он может жить — он туда аттачится. контейнер — это куча зон для аттача предметов. Конец.
Я удачно(для написания этого коммента) обновил своей сетап осенью 2019, так что могу сказать сколько он стоил:
8 ядерный 16 поточный AMD, 16 гигабайт оперативной памяти, террабайтный SSD, 4 террабайтный HDD, Rift S обошлись мне все вместе примерно в 110 000 рублей, за абсолютной новое оборудование в России. 1050Ti сюда не входит, я ей купил за 15 000 за год до этого.
Про необходимость личного оборудования: первые 5 заказов я делал на HTC Vive клиента, который он мне присылал под каждый проект.
Прямо сейчас у меня лежит Quest заказчика, потому что ему надо хэндтрэкинг, а в рифте его нету.
Если с заказчиком нормальные отношения — оборудование без проблем присылается. Так что тоже не всё так страшно.
DyadichenkoGA Автор
По поводу видеокарты. 1050TI соглашусь. На 650 свет печься на более менее вменяемой сцене будет вечность. Я пытался работать на 950М, это адекватной работой трудно назвать. Но в целом может быть и можно.
По поводу инвентаря. Да это всё равно придётся делать, если идти по адекватному солиду. Так как данные должны быть отделены от визуализации и состояния по хорошему. Если нужна гибкость. Так что тут я не соглашусь. Даже в аликс если брать, разные состояния разных объектов. То же радио в самом начале с вытаскивающейся антенной — это гемор. И там много таких вещей. Грамотное ограничение телепортации — это не навмеш настроить, там нужно ещё руками размечать. Можно придумать простой кейс. Но сопоставимый по количеству функционала просто в 3д будет проще в разы. Так как там проще вводить ограничения, которые необходимы.
Оборудование заказчика обладает одной проблемой. Нужно постоянно учиться, тестировать новое и так далее, чтобы выдавать качество. Если оборудование лежит чётко на проект, то после проекта экспериментировать уже не с чем. Поэтому я просто с первых контрактов купил всё оборудование и до сих пор докупаю всякое.
AllexIn
Хм. Я на UE работаю, всё пеклось без проблем. Как оно на Unity — не знаю.
Впрочем это тоже не важно — у заказчика то железо нормальное, билд делать можно у него.
Во всяком случае когда я работал с 650 — у заказчика была 1080Ti и можно было туда перенести, если бы возникла необходимость.
По поводу разделения данных — не понимаю о чем вы. В случае не ВР инвентаря у нас не существует предмета пока он в инвентаре. Поэтому надо это его состояние отдельно отрабатывать. В случае ВР мы предмет не уничтожаем. и вся работа с ним выглядит гораздо более логичной.
По поводу телепортации — не знаю как в Unity, в UE телепортация это «мгновенная» ходьба. То есть на уровне програмимрования без разницы курсором передвинуть персонаж или телепортнуть — эффект будет одинаковый, если есть препятствие — он в него упрется не дойдя до финиша.
Но даже без этого: чем не устраивает телепортация по навмешу? Где есть навмеш — можно телепортится, где нету — нет.
Совершенно нет. Jointы делают эту задачу уже решенной по умолчанию.
DyadichenkoGA Автор
Навмеш может забрать зоны, которые недоступны должны быть. Поэтому нужно размечать. И в зависимости от геометрии уровня, их не всегда можно отсечь тупо по дистанции телепортации.
На тему инвентаря, видимо у вас нет сохранения инвентаря. Так как если оно есть, то предмет должен храниться в виде идентификатора и параметров. Поэтому данные отделяются от кода. Вы же не можете сохранить весь мир целиком и его состояние. Поэтому инвентарь и делается абстракцией, которую легко сериализовать.
У меня сетап 1080 TI, i7-8700к, 32 гига оперативы корсаровской и 2тб ssd, вайв, окулус го. Работать то в этом плане очень удобно, но собирал я его довольно долго. И главное, всё познаётся в сравнении. VR проектов я за это время разного масштаба сделал в районе 10. И прикол именно в том, что сейчас у меня много проектов с бекендом, неиронками, OpenCV на бекенде и их разрабатывать именно удобнее.
Нет в целом ничего невозможного, вопрос в том какая работа именно комфортная. А дальше уже что больше нравится. Когда можно целиком всё покрыть тестами, даже в CI&CD систему их впилить — это в разы удобнее. Нежели когда нужно каждый раз прогонять руками, так как задача слишком комплексная для тестирования.
AllexIn
Предметы в инвентаре не отличаются от любых других для которых нужна сериализация. Причем не только для сохранения и загрузки, но и для репликации при сетевой игре.
Однако сериализация не противоречит тому что я писал.
У нас есть объект и механизм сериализации для него.
При этом если это ВР инвентарь то на этом всё и заканчивается.
А в случае не ВР — у нас нарастают костыли в виде UI для взаимодействия со всем этим, причем еще замечу. что актор предмета и предмет в инвентаре в придется по разному сериализовать.
DyadichenkoGA Автор
Да нет, не по разному. Очень зависит. Да и в VR зависит, если в инвентаре может быть 50 предметов, там будет тоже самое. Это уже ваша конкретная задача может быть так решена.
AllexIn
Верно. Но в случае НЕ ВР она не может быть решена по другому. :)
DyadichenkoGA Автор
Проблема не в механизме фиксированных джоинтов. Это детский сад даже руками писать. Проблема в том, что есть комплексный объект с разными контекстными зонами нажатия. Чтобы через него не проходили другие объекты, чтобы физика на нём грамотно работала.
В случае 3д — это коробка с доступными сигналами. А в случае VR — это комплексный физический объект. И он объективно сложнее.
AllexIn
Ну в идеале то да. Но на практике все на эту комплексность забивают, даже в том же HL. Попробуйте ухватить антену за любое место: фиг.
Попробуйте взять предмет в одну руку поставить над антеной и тащить другой рукой — без проблем.
Антена плохой пример комплексности. Она там максимально примитивно сделана.
DyadichenkoGA Автор
То есть суть в том, что я может не совсем верно донёс мысль статьи. Нет вообще ничего невозможного. Но как человек, который был и в мобильном геймдеве, и в энтерпрайсе, и бекенд на .Net писал. Есть то, что объективно проще и удобнее. Энтерпрайс в целом в разы проще геймдева. Геймдев на самом деле проще VR. При решении многих задач.
Вопрос именно в сравнении. А дальше либо нравится, либо не нравится)
AllexIn
У меня полностью противоположное ощущение, что большинство механик в ВР реализуются проще.
DyadichenkoGA Автор
То есть мы можем конечно взять контекст, что средний VR проект в геймдеве даже за прототип не прокатит по своей комплексности и количеству функционала. Так как у VR и бюджеты не те, и сроки обычно.
Но если брать примеры одного масштаба — они проще без VR. И это обусловлено даже простым тезисом. Инпутом. Инпут в играх — это сигналы клавиш по сути, в мобилках тоже обычно всё ограничено кнопками.
Инпут в 6DoF VR — это 3 точки, которые могут вести себя произвольно + сигналы. И нужно их обрабатывать. То есть спектр возможных случаев в разы больше.
Плюс в обычных играх можно ограничивать игрока, как тебе хочется. В VR так нельзя, потому что будет укачивать или дизориентировать пользователя или ещё что-то произойдёт.
Ну, а отдельный новый процесс — тестируем шрифты на читаемость и графику на то, как она рябит на расстояниях — отдельный сорт удовольствия)
AllexIn
Если вы не против, я бы хотел продолжить диалог, но понимаю что у вас возможно нет ни времени ни желания на это. Если оно вам не надо — просто скажите и я отстану со своими вопросам.
Так вот:
Возьмем самый высокобюджетный проект на данный момент существующий в VR: HL:Alyx и его древнего предка HL2.
В чём вам видится сложность реализации Alyx в сравнении с двойкой?
Если есть возможность — конкретные примеры. Просто хочу понять, может я чего-то не видел в VR разработке и поэтому ахинею несу.
DyadichenkoGA Автор
С точки зрения большого процесса или маленького?
Большой процесс — это в основном невозможность покрыть систему автотестами нормально, поэтому усложняется процедура ревью и так далее. То есть, как можно грамотно строить стандартный процесс разработки. У нас есть софт (игра, не игра не так важно) Есть команда разработки. Допустим она больше 5-7 человек (иначе это всё не имеет смысла). Люди разного уровня. Что мы хотим от софта? Чтобы его просто было обновлять, чтобы он не ломался от каждого чиха, не тормозил и в целом легко доставлять его пользователям, так же как и обновления. Мы для этого берём кубер (если есть бек), тимсити и прочие прелести жизни. Зачем нам нужно покрытие автотестами? Чтобы когда разработка делает очередной пуш и отправляет всё в CI&CD систему, мы сразу отсекали те коммиты, которые не проходят тесты и говорили «это в мастер вливать нельзя». Что позволяет нам получать не забагованную херню, где постоянно что-то вылезает, а стабильные сборки. Дальше всё зависит от прокрытия и прочего. Это возможно не во всех играх делать хорошо, но в VR с этим в разы хуже.
А теперь пройдёмся по маленькому процессу. У нас 1-3 разработчика, так что CI&CD система не особо то и нужна, так как вряд ли проект будет супер комплексным. Как у нас выглядит итерация тестирования механики?
Дизайн
Мы создали новую интерфейсную панель, сверстали, посмотрели прям в движке в разных разрешениях и знаем, как она будет отображаться на разных устройствах. Если же мы не знаем дизайн правила по размеру шрифтов и элементов. Берём figma и открываем прототип, и прокликиваем на телефоне без всяких сборок. Чисто из figma.
Что же у нас будет в VR? По хорошему, для качества — сборка в билд, открыть панель и посмотреть. Как она смотрится в окружении, на каком расстоянии её включать в зависимости от того, с какого расстояния читаются скрипты, а на каком мы переходим к minify view. Так же не рябят ли контуры, кнопки и прочее на нашем целевом устройстве.
Механики
Все, даже физические механики в обычных играх это достаточно ограниченное число векторов скорости и скаляров. Потому что управляем мы всем с помощью дискретных сигналов. Поэтому это можно тестировать даже не проходя игру, но пройти уровень можно и движке. При этом не вставая со стула и т.п.
Казалось бы мелочь, бытовая вещь. Но замерь сколько времени тратится на то, чтобы тоже самое сделать в VR. А с компа это сделать нельзя с симуляцией, так как нереально сделать адекватную симуляцию из-за слишком большого числа решений.
И в VR очень много физических механик. Ещё надо учитывать что вообще у пользователей разный рост, разная длинна рук и анатомические параметры. По этой причине то, что тебе удобно в шлеме, другому человеку будет неудобно. Скажем ты баскетболист два метра, а играет девочка 1.5 метра ростом. Она тупо увидит всё иначе. И может не дотянуться, если ты поместил что-то на верх на расстояния вытянутой руки. При разработке hl2 — тебе даже думать про это не надо. А в аликсе думаю это выверено.
И можно продолжать очень долго и написать отдельную статью по нормальному UX в VR. Я видел одну неплохую на хабре, но там мало внимания посвящено тому, что анатомия у человека разная. Есть комфортные наклоны шеи, есть некомфортные и так далее.
DyadichenkoGA Автор
А да, ещё общая боль — это степень оптимизации. На текущем уровне компом сделать красиво под десктоп — херня вопрос. А вот если мы подходим к VR ресурсов у нас в разы меньше. По этой причине я не раз писал кастомные шейдеры заточенные конкретно под VR в которых у нас кастомный алгоритм для отражений, как отображать лайтмапы и прочее. Думая о том, что про мультипасс лучше забыть, и писать всё сингл пасс стиле.
Nagg
Ого, АР/ВР еще не умерли? Я думал это дело отгремело уже и все инвесторы уже обожглись и поняли что этим вещам еще лет 10 ждать технического прогресса. Хотя ВР хотя бы еще имеет смысл для интересных игр/ААА
DyadichenkoGA Автор
Да, вполне живы. Много компаний, которые занимаются разными AR/VR проектами. Из неигровых можно вспомнить vr-professionals.com vrconcept.net и много кого ещё. В РФ в целом много кто этим занимается, по моему последнему исследованию небольшому в районе 100-150 живых компаний в разных частях индустрии.
Nagg
Это я верю, многие захотели заскочить в этот каттинг эйдж поезд, сдереть денег и чувствовать себя на крае прогресса. Особенно в АР (куда ни плюнь, попадешь в АР-специалиста, причем специализм = знание двух с половиной апишек аркита/аркора/вуфории). Но по факту давайте не обманывать себя, ВР шлемы — это игрушка на поиграть пару раз — в лайт сабер и халф-лайф. Верю что есть точечне энтерпрайз-внедрения со своими шлемами, но они точечные. А АР так вообще превью-превью. Когда видите клевое демо на арките/аркор/вуфории — знайте, оно записалось с 10ого раза в идеальных условиях.
Barabas79
Вообще странно, что нет (или просто я не искал) разных полезных VR стратапов. Таких как например примерка одежды перед зеркалом, расстановка мебели в своей пустой виртуальной квартире (задаем размеры, обои «натягиваем» как в вашей комнате, только пустая). Или виртуальные экскурсии по проектам домов на продажу. По идее спрос на все это должен быть.
DyadichenkoGA Автор
Последнее я даже разрабатывал в рамках работы одной компании. И даже было на выставках по недвижимости всякой. Там есть очень много нюансов.
С мебелью в квартире AR логичнее, что собственно и сделала икея.
А примерка одежды — технологии пока не доросли, там очень много технических проблем, из-за чего даже примерка часов и колец — это технически сложно. Но вообще есть такие штуки. play.google.com/store/apps/details?id=tattoo.inkhunter&hl=en_US для тату. Для часов или типа того на память не вспомню.
Но вот примерить платье — это сложно. Помимо того, что оцифровка платья качественная с ригом стоит дорого, так ещё нужно получить скелет пользователя. Можно попробовать таким, но это не мобилка, а десктоп github.com/CMU-Perceptual-Computing-Lab/openpose
Nagg
Вам даже не передать сколько я уже повидал попыток (даже серьезных игроков) к этим двум юзкейсам. Все в итоге выбросили в урну.
DyadichenkoGA Автор
Ну есть много вещей посложнее. Разные системы трекинга. Но если речь про b2c — да не спорю, я до сих пор не вижу применения пользовательского особого, кроме игр. Ходят мечты об удалённом рабочем месте и т.п. В целом может можно придумать что-то прикольное для лёгкого фитнеса (иначе потом надоест лечить прыщи из-за маски, да и в целом перегрев лица это не так приятно) Я могу в тот же битсейбер играть минут 40-50. Дольше это уже нереально. Но вот, что ещё пользователю там делать — совершенно непонятно. А главное зачем. Образование, и вопрос фокуса внимания, но у широкого пользователя это не будет мотиватором к покупке. Пока в любом случае некомфортно.
Но если брать корпоративное обучение, b2b кейсы и так далее, есть много применимых историй, в которых эффективность оправдана. А неудобства и т.п. незначительны.
А если речь про AR — там вопрос не совсем в знании API. Основная фишка в знании AR — это знание UX. Да, безусловно, есть куча кейсов, где можно применять достаточно прикольно. Навигация, экскурсии, мне например очень нравится артефакт из Российских, чтобы узнавать интересные детали про картины и искусство. Но в целом многие считают мобильный AR костылём, а хорошие b2c AR очки пока не пришли на рынок.
Что в AR, что в VR если мы говорим про разрабов. Я бы считал технически самым важным понимание принципов рендера (так как ресурсов дано не так много), разных техник оптимизации и математики хотя бы на уровне линала, чтобы делать что-то интересное и полезное. Скажем навигация по своей сути сводится к технологии трекинга + умению преобразовывать одну систему координат в другую. И если уж линейный перенос позиции ни у кого слава богу вопросов не вызывает. То вот допустим при восстановлении позиции по маркеру правильно применить матрицу поворота — то с этим возникают трудности.
Nagg
Да, часто слышу такое, когда начинаю спрашивать у АР-специалистов про SLAM, time of flight и т.п. — они сразу начинают говорить про UX :-)
Ну да, всё тоже самое что и при обычной разработке игр. Никакой специфики, в любую игру можно дабавить за вечер (но зачем) благодаря максимально примитивной апишке черных ящиков (ар фраемворков).
В общем, спасибо что пытаетесь продать мне это, но я пришел к железобетонному убеждению что на данный момент это было оверхайпед. Теперь просто ждем технический прогресс. Единственный АР юзкейс, который работает — это маски в снапчате и инстаграмме.
DyadichenkoGA Автор
Да я не пытаюсь продать, я рассказываю скорее что есть из моего опыта. Помимо ToF или SLAM, который важен только для инсайд-аут трекинга — есть ещё системы типа вайкон и оптитрек, если нужна высокая точность. Для трекинга рук есть магнитный трекинг, который используется в медицине, так как там тяжко с прямой видимостью, когда руки в человеке. С низкой точностью и большими расстояниями — есть ультразвук и марвелмайнд. Так что SLAM и ToF, или же лидары, это лишь верхушка айсберга.
Просто позицию довольно хорошо научились получать, так что это не так интересно. Если же мы говорим про оцифровку мира, то просто зависит от того, кто чем занимается. Я работаю с трекингом и разрабатываю под него софт, а не разрабатываю yet another slam.
А юзкейсов есть довольно много, просто не в b2c.
Nagg
Если вы не разрабатываете собственный slam, а используете текущий arkit/arcore/vuforia/hololens то увы, любые ваши решения базируются на очень хрупких черепахах, которые рандомно ломаются от быстрых движений или всяких зеркальных поверхностям. Это всё, конечно, не мешает записать с 10ого раза клёвое демо для инвестора, но мы-то с вами понимаем что это не будет работать вживую. Работает ли АР-линейка так как она работала в демо? Конечно нет. Первый же пользователь попробует измерить пол в своей блестящей кухне и обматерит вас, айфон и лично кука.
DyadichenkoGA Автор
Согласен. Основной вопрос какая точность нужна. Дело в том, что вы берёте в данном случае — где она не работает. А есть кейсы, где она работает, так как условия хорошие. Но это безусловно не кейс, о котором все мечтают — типа навигации по торговому центру, так как там пол блестит и досвидания. И свой SLAM на датчиках телефона — это вообще никак не решит. Там проблема чисто в наборе датчиков среднего мобильника и мощности процессора.
Но скажем на производстве, где есть возможность раскидать свой трекинг и приклеить к телефону свой датчик (ну либо засунуть его в красивый чехол, не суть как его крепить) — это вполне реально. Особенно если нужна точность в пределах +- 5 см.
Аркит едет через каждые 50 метров, и у него много проблем. Но если есть точки рекалибровки, и нужно просто выводить плашки от отпределённой точки интереса, то там тоже всё прекрасно работает. Вопрос в конкретике задачи.
DyadichenkoGA Автор
Просто есть набор «влажных фантазий». А есть то, что реально можно сделать на текущем уровне качества. Не забивая на проблемы трекинга, а досканально их понимая и делая решение в контексте этих проблем.
И линейка нормально не работает и в идеальных условиях. У аркита можно рассчитывать на точность +-5 см где-то, что очень плохо для линейки. Которая ещё и накапливается по мере того, как пользователь отходит от «точки привязки».
DyadichenkoGA Автор
Мне то нет никакого смысла его продавать. Я в эпле не работаю, и только рад, когда мне заказывают что-то без AR/VR или трекинга. Так как бороться с шумами, объяснять что этот маркер — херня и не будет работать, и тестировать всё это дело — ну такое. Типа опыт позволяет, но в разы проще и интереснее пишутся другие вещи. Типа шейдеров или любой другой вещи, которая тестируема в движке и работает стабильно.
Условная игра в этом плане в разы приятнее разработки AR/VR, или какой-нить сервис по процессингу чего-то в облаке на питоне (даже в случае крупного проекта, где надо много всего учитывать и как бы знать, что такое архитектура в отличии от среднего фриланс заказа, или же как строится адекватный пайплайн, как прикручивается CI&CD и так далее). Так как там свои нюансы и приколы. И иногда закапываешься с какой-нить просадкой или фигней надолго. Но в целом это в разы приятнее, чем ползать по локации заказчика и каллибровать датчики.
Просто после 15 проектов связанных с AR/VR — плавал знаю. И это не стартапы, а просто заказная разработка под конкретную задачу. Просто главное честно говорить и обсуждать все нюансы трекинга. И понимать задача решаема или нет. На свой SLAM можно тоже сжечь тонну бабла, и прийти к выводу, что процессор и датчики в телефонах — хрень. Но если в задаче хватает точности и функционала аркита, то как бы зачем?
DyadichenkoGA Автор
А так, то что большой часть проектов убил usdz — это довольно неплохо. Так как да, проект уровня «мы показываем 3д модельку в AR» без причины и обоснования — это грустно.
Но скажем из забавных штук можно глянуть Porsсhe Car Visualizer, кейс от икеи и artefact собственно. Если говорить про маркерный AR или трекинг.
Так то есть ещё огромный пласт типа дипфейков, масок и прочего. И AR в данном контексте применяется достаточно часто. Хотя тут правильнее сказать технологии компьютерного зрения, но они часто идут рука об руку с AR.
AllexIn
VR в промышленности живее всех живых. Да и просто безальтернативен.
Активно используется в обучающих темах, активно живет в отработке экстремальных ситуаций.
Технологии VR сейчас более чем достаточны для того чтобы VR перестал быть экзотикой и стал обычный инструментом, так что насчет ожидания технического прогресса вы совершенно не правы. А уж безбазовые решения, да еще и беспроводные подняли уровень комфорта до небывалых высот. Хоть ходить с шлемом на улице плохая идея — сама возможность выйти в поле и играть в какую нибудь игру свободно перемещаясь — это очень круто.
Про игры вообще молчу, есть целые жанры в которых VR полностью вытеснил мониторы.
kraidiky
А ещё потому что все заказы делятся стендовые аттракционы, за которые платят очень мало, и очень редкие игровые проекты, на которых эмпирически всё очень плохо с менеджментом, потому что у них с рентабельностью всё как-то не очень и ввязываются в это либо энтузиасты либо неадекваты.
Хотя сейчас в стиме 2,5 миллионов устройств уже, так что для инди-разработчика это может быть, возможно, и привлекательно. Потому что конкуренции мало, и если ты талантлив ещё можно выпустить бонворкс. А вот на обычном игровом рынке это уже не проканает.