Comments 37
Так как минимальная видеокарта для разработки это 1060 в данном случае.
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 заказчика, потому что ему надо хэндтрэкинг, а в рифте его нету.
Если с заказчиком нормальные отношения — оборудование без проблем присылается. Так что тоже не всё так страшно.
По поводу инвентаря. Да это всё равно придётся делать, если идти по адекватному солиду. Так как данные должны быть отделены от визуализации и состояния по хорошему. Если нужна гибкость. Так что тут я не соглашусь. Даже в аликс если брать, разные состояния разных объектов. То же радио в самом начале с вытаскивающейся антенной — это гемор. И там много таких вещей. Грамотное ограничение телепортации — это не навмеш настроить, там нужно ещё руками размечать. Можно придумать простой кейс. Но сопоставимый по количеству функционала просто в 3д будет проще в разы. Так как там проще вводить ограничения, которые необходимы.
Оборудование заказчика обладает одной проблемой. Нужно постоянно учиться, тестировать новое и так далее, чтобы выдавать качество. Если оборудование лежит чётко на проект, то после проекта экспериментировать уже не с чем. Поэтому я просто с первых контрактов купил всё оборудование и до сих пор докупаю всякое.
Впрочем это тоже не важно — у заказчика то железо нормальное, билд делать можно у него.
Во всяком случае когда я работал с 650 — у заказчика была 1080Ti и можно было туда перенести, если бы возникла необходимость.
По поводу разделения данных — не понимаю о чем вы. В случае не ВР инвентаря у нас не существует предмета пока он в инвентаре. Поэтому надо это его состояние отдельно отрабатывать. В случае ВР мы предмет не уничтожаем. и вся работа с ним выглядит гораздо более логичной.
По поводу телепортации — не знаю как в Unity, в UE телепортация это «мгновенная» ходьба. То есть на уровне програмимрования без разницы курсором передвинуть персонаж или телепортнуть — эффект будет одинаковый, если есть препятствие — он в него упрется не дойдя до финиша.
Но даже без этого: чем не устраивает телепортация по навмешу? Где есть навмеш — можно телепортится, где нету — нет.
То же радио в самом начале с вытаскивающейся антенной — это гемор.
Совершенно нет. Jointы делают эту задачу уже решенной по умолчанию.
На тему инвентаря, видимо у вас нет сохранения инвентаря. Так как если оно есть, то предмет должен храниться в виде идентификатора и параметров. Поэтому данные отделяются от кода. Вы же не можете сохранить весь мир целиком и его состояние. Поэтому инвентарь и делается абстракцией, которую легко сериализовать.
У меня сетап 1080 TI, i7-8700к, 32 гига оперативы корсаровской и 2тб ssd, вайв, окулус го. Работать то в этом плане очень удобно, но собирал я его довольно долго. И главное, всё познаётся в сравнении. VR проектов я за это время разного масштаба сделал в районе 10. И прикол именно в том, что сейчас у меня много проектов с бекендом, неиронками, OpenCV на бекенде и их разрабатывать именно удобнее.
Нет в целом ничего невозможного, вопрос в том какая работа именно комфортная. А дальше уже что больше нравится. Когда можно целиком всё покрыть тестами, даже в CI&CD систему их впилить — это в разы удобнее. Нежели когда нужно каждый раз прогонять руками, так как задача слишком комплексная для тестирования.
На тему инвентаря, видимо у вас нет сохранения инвентаря. Так как если оно есть, то предмет должен храниться в виде идентификатора и параметров. Поэтому данные отделяются от кода. Вы же не можете сохранить весь мир целиком и его состояние. Поэтому инвентарь и делается абстракцией, которую легко сериализовать.
Предметы в инвентаре не отличаются от любых других для которых нужна сериализация. Причем не только для сохранения и загрузки, но и для репликации при сетевой игре.
Однако сериализация не противоречит тому что я писал.
У нас есть объект и механизм сериализации для него.
При этом если это ВР инвентарь то на этом всё и заканчивается.
А в случае не ВР — у нас нарастают костыли в виде UI для взаимодействия со всем этим, причем еще замечу. что актор предмета и предмет в инвентаре в придется по разному сериализовать.
В случае 3д — это коробка с доступными сигналами. А в случае VR — это комплексный физический объект. И он объективно сложнее.
Попробуйте взять предмет в одну руку поставить над антеной и тащить другой рукой — без проблем.
Антена плохой пример комплексности. Она там максимально примитивно сделана.
Вопрос именно в сравнении. А дальше либо нравится, либо не нравится)
Но если брать примеры одного масштаба — они проще без VR. И это обусловлено даже простым тезисом. Инпутом. Инпут в играх — это сигналы клавиш по сути, в мобилках тоже обычно всё ограничено кнопками.
Инпут в 6DoF VR — это 3 точки, которые могут вести себя произвольно + сигналы. И нужно их обрабатывать. То есть спектр возможных случаев в разы больше.
Плюс в обычных играх можно ограничивать игрока, как тебе хочется. В VR так нельзя, потому что будет укачивать или дизориентировать пользователя или ещё что-то произойдёт.
Ну, а отдельный новый процесс — тестируем шрифты на читаемость и графику на то, как она рябит на расстояниях — отдельный сорт удовольствия)
Так вот:
Возьмем самый высокобюджетный проект на данный момент существующий в VR: HL:Alyx и его древнего предка HL2.
В чём вам видится сложность реализации Alyx в сравнении с двойкой?
Если есть возможность — конкретные примеры. Просто хочу понять, может я чего-то не видел в VR разработке и поэтому ахинею несу.
Большой процесс — это в основном невозможность покрыть систему автотестами нормально, поэтому усложняется процедура ревью и так далее. То есть, как можно грамотно строить стандартный процесс разработки. У нас есть софт (игра, не игра не так важно) Есть команда разработки. Допустим она больше 5-7 человек (иначе это всё не имеет смысла). Люди разного уровня. Что мы хотим от софта? Чтобы его просто было обновлять, чтобы он не ломался от каждого чиха, не тормозил и в целом легко доставлять его пользователям, так же как и обновления. Мы для этого берём кубер (если есть бек), тимсити и прочие прелести жизни. Зачем нам нужно покрытие автотестами? Чтобы когда разработка делает очередной пуш и отправляет всё в CI&CD систему, мы сразу отсекали те коммиты, которые не проходят тесты и говорили «это в мастер вливать нельзя». Что позволяет нам получать не забагованную херню, где постоянно что-то вылезает, а стабильные сборки. Дальше всё зависит от прокрытия и прочего. Это возможно не во всех играх делать хорошо, но в VR с этим в разы хуже.
А теперь пройдёмся по маленькому процессу. У нас 1-3 разработчика, так что CI&CD система не особо то и нужна, так как вряд ли проект будет супер комплексным. Как у нас выглядит итерация тестирования механики?
Дизайн
Мы создали новую интерфейсную панель, сверстали, посмотрели прям в движке в разных разрешениях и знаем, как она будет отображаться на разных устройствах. Если же мы не знаем дизайн правила по размеру шрифтов и элементов. Берём figma и открываем прототип, и прокликиваем на телефоне без всяких сборок. Чисто из figma.
Что же у нас будет в VR? По хорошему, для качества — сборка в билд, открыть панель и посмотреть. Как она смотрится в окружении, на каком расстоянии её включать в зависимости от того, с какого расстояния читаются скрипты, а на каком мы переходим к minify view. Так же не рябят ли контуры, кнопки и прочее на нашем целевом устройстве.
Механики
Все, даже физические механики в обычных играх это достаточно ограниченное число векторов скорости и скаляров. Потому что управляем мы всем с помощью дискретных сигналов. Поэтому это можно тестировать даже не проходя игру, но пройти уровень можно и движке. При этом не вставая со стула и т.п.
Казалось бы мелочь, бытовая вещь. Но замерь сколько времени тратится на то, чтобы тоже самое сделать в VR. А с компа это сделать нельзя с симуляцией, так как нереально сделать адекватную симуляцию из-за слишком большого числа решений.
И в VR очень много физических механик. Ещё надо учитывать что вообще у пользователей разный рост, разная длинна рук и анатомические параметры. По этой причине то, что тебе удобно в шлеме, другому человеку будет неудобно. Скажем ты баскетболист два метра, а играет девочка 1.5 метра ростом. Она тупо увидит всё иначе. И может не дотянуться, если ты поместил что-то на верх на расстояния вытянутой руки. При разработке hl2 — тебе даже думать про это не надо. А в аликсе думаю это выверено.
И можно продолжать очень долго и написать отдельную статью по нормальному UX в VR. Я видел одну неплохую на хабре, но там мало внимания посвящено тому, что анатомия у человека разная. Есть комфортные наклоны шеи, есть некомфортные и так далее.
Ого, АР/ВР еще не умерли? Я думал это дело отгремело уже и все инвесторы уже обожглись и поняли что этим вещам еще лет 10 ждать технического прогресса. Хотя ВР хотя бы еще имеет смысл для интересных игр/ААА
В РФ в целом много кто этим занимается
Это я верю, многие захотели заскочить в этот каттинг эйдж поезд, сдереть денег и чувствовать себя на крае прогресса. Особенно в АР (куда ни плюнь, попадешь в АР-специалиста, причем специализм = знание двух с половиной апишек аркита/аркора/вуфории). Но по факту давайте не обманывать себя, ВР шлемы — это игрушка на поиграть пару раз — в лайт сабер и халф-лайф. Верю что есть точечне энтерпрайз-внедрения со своими шлемами, но они точечные. А АР так вообще превью-превью. Когда видите клевое демо на арките/аркор/вуфории — знайте, оно записалось с 10ого раза в идеальных условиях.
С мебелью в квартире AR логичнее, что собственно и сделала икея.
А примерка одежды — технологии пока не доросли, там очень много технических проблем, из-за чего даже примерка часов и колец — это технически сложно. Но вообще есть такие штуки. play.google.com/store/apps/details?id=tattoo.inkhunter&hl=en_US для тату. Для часов или типа того на память не вспомню.
Но вот примерить платье — это сложно. Помимо того, что оцифровка платья качественная с ригом стоит дорого, так ещё нужно получить скелет пользователя. Можно попробовать таким, но это не мобилка, а десктоп github.com/CMU-Perceptual-Computing-Lab/openpose
примерка одежды перед зеркалом
расстановка мебели в своей пустой виртуальной квартире
Вам даже не передать сколько я уже повидал попыток (даже серьезных игроков) к этим двум юзкейсам. Все в итоге выбросили в урну.
Но если брать корпоративное обучение, b2b кейсы и так далее, есть много применимых историй, в которых эффективность оправдана. А неудобства и т.п. незначительны.
А если речь про AR — там вопрос не совсем в знании API. Основная фишка в знании AR — это знание UX. Да, безусловно, есть куча кейсов, где можно применять достаточно прикольно. Навигация, экскурсии, мне например очень нравится артефакт из Российских, чтобы узнавать интересные детали про картины и искусство. Но в целом многие считают мобильный AR костылём, а хорошие b2c AR очки пока не пришли на рынок.
Что в AR, что в VR если мы говорим про разрабов. Я бы считал технически самым важным понимание принципов рендера (так как ресурсов дано не так много), разных техник оптимизации и математики хотя бы на уровне линала, чтобы делать что-то интересное и полезное. Скажем навигация по своей сути сводится к технологии трекинга + умению преобразовывать одну систему координат в другую. И если уж линейный перенос позиции ни у кого слава богу вопросов не вызывает. То вот допустим при восстановлении позиции по маркеру правильно применить матрицу поворота — то с этим возникают трудности.
Основная фишка в знании AR — это знание UX
Да, часто слышу такое, когда начинаю спрашивать у АР-специалистов про SLAM, time of flight и т.п. — они сразу начинают говорить про UX :-)
Я бы считал технически самым важным понимание принципов рендера (так как ресурсов дано не так много), разных техник оптимизации и математики хотя бы на уровне линала
Ну да, всё тоже самое что и при обычной разработке игр. Никакой специфики, в любую игру можно дабавить за вечер (но зачем) благодаря максимально примитивной апишке черных ящиков (ар фраемворков).
В общем, спасибо что пытаетесь продать мне это, но я пришел к железобетонному убеждению что на данный момент это было оверхайпед. Теперь просто ждем технический прогресс. Единственный АР юзкейс, который работает — это маски в снапчате и инстаграмме.
Просто позицию довольно хорошо научились получать, так что это не так интересно. Если же мы говорим про оцифровку мира, то просто зависит от того, кто чем занимается. Я работаю с трекингом и разрабатываю под него софт, а не разрабатываю yet another slam.
А юзкейсов есть довольно много, просто не в b2c.
Если вы не разрабатываете собственный slam, а используете текущий arkit/arcore/vuforia/hololens то увы, любые ваши решения базируются на очень хрупких черепахах, которые рандомно ломаются от быстрых движений или всяких зеркальных поверхностям. Это всё, конечно, не мешает записать с 10ого раза клёвое демо для инвестора, но мы-то с вами понимаем что это не будет работать вживую. Работает ли АР-линейка так как она работала в демо? Конечно нет. Первый же пользователь попробует измерить пол в своей блестящей кухне и обматерит вас, айфон и лично кука.
Но скажем на производстве, где есть возможность раскидать свой трекинг и приклеить к телефону свой датчик (ну либо засунуть его в красивый чехол, не суть как его крепить) — это вполне реально. Особенно если нужна точность в пределах +- 5 см.
Аркит едет через каждые 50 метров, и у него много проблем. Но если есть точки рекалибровки, и нужно просто выводить плашки от отпределённой точки интереса, то там тоже всё прекрасно работает. Вопрос в конкретике задачи.
И линейка нормально не работает и в идеальных условиях. У аркита можно рассчитывать на точность +-5 см где-то, что очень плохо для линейки. Которая ещё и накапливается по мере того, как пользователь отходит от «точки привязки».
Условная игра в этом плане в разы приятнее разработки AR/VR, или какой-нить сервис по процессингу чего-то в облаке на питоне (даже в случае крупного проекта, где надо много всего учитывать и как бы знать, что такое архитектура в отличии от среднего фриланс заказа, или же как строится адекватный пайплайн, как прикручивается CI&CD и так далее). Так как там свои нюансы и приколы. И иногда закапываешься с какой-нить просадкой или фигней надолго. Но в целом это в разы приятнее, чем ползать по локации заказчика и каллибровать датчики.
Просто после 15 проектов связанных с AR/VR — плавал знаю. И это не стартапы, а просто заказная разработка под конкретную задачу. Просто главное честно говорить и обсуждать все нюансы трекинга. И понимать задача решаема или нет. На свой SLAM можно тоже сжечь тонну бабла, и прийти к выводу, что процессор и датчики в телефонах — хрень. Но если в задаче хватает точности и функционала аркита, то как бы зачем?
Но скажем из забавных штук можно глянуть Porsсhe Car Visualizer, кейс от икеи и artefact собственно. Если говорить про маркерный AR или трекинг.
Так то есть ещё огромный пласт типа дипфейков, масок и прочего. И AR в данном контексте применяется достаточно часто. Хотя тут правильнее сказать технологии компьютерного зрения, но они часто идут рука об руку с AR.
Активно используется в обучающих темах, активно живет в отработке экстремальных ситуаций.
Технологии VR сейчас более чем достаточны для того чтобы VR перестал быть экзотикой и стал обычный инструментом, так что насчет ожидания технического прогресса вы совершенно не правы. А уж безбазовые решения, да еще и беспроводные подняли уровень комфорта до небывалых высот. Хоть ходить с шлемом на улице плохая идея — сама возможность выйти в поле и играть в какую нибудь игру свободно перемещаясь — это очень круто.
Про игры вообще молчу, есть целые жанры в которых VR полностью вытеснил мониторы.
Хотя сейчас в стиме 2,5 миллионов устройств уже, так что для инди-разработчика это может быть, возможно, и привлекательно. Потому что конкуренции мало, и если ты талантлив ещё можно выпустить бонворкс. А вот на обычном игровом рынке это уже не проканает.
Есть флагманские курсы? Потому что то, что находил пока либо не для новичков, либо сильно устаревшее :(
И этого вам вполне хватит для первых экспериментов. И даже для вторых и третьих. Конечно за качество графики вы с таким оборудованием не поборитесь, но для инди-игрушки основанной на оригинальном геймплее вам этого хватит.
А дальше вопрос только в том надо ли оно вам на самом деле.
А именно по части обучению созданию VR игр и приложений — что лучше изучать? Сейчас смотрю курс по Unreal Engine. Именно в этой сфере опыт нулевой
Ну и как бы ещё раз подчеркну, как и автор статьи, всё это сугубо для энтузиастов этого дела пока что.
Почему VR разработка вам не подходит