Рубрика развивается при поддержке
Gamedev
Lex Darlog
3216

SteamVR (и Source 2) глазами Unity-разработчика

Затея сделать собственный скин для Steam-VR может привести к далеко идущим выводам...

В закладки
Аудио

Это мой первый пост на DTF и по совместительству копипаста из своего ВК. Периодически натыкаясь на странные сплетни, превозносящие Source 2, я подумал, что эти впечатления могут показаться кому-то интересными.
О себе: CG-шник с 10+-летним опытом, рендерщик, FX-ер, писатель шейдеров руками, последние годы — TA, RnD и FX-artist в небольшой студии с мобильным 3D-проектом.

В общем, я купил VR-шлем. Конкретно — один из Microsoft Mixed Reality, но это не принципиально.

Освоился в #Steam #VR.

Захотел сменить home- #environment на что-нибудь космическо-Sci-Fi'ное.

Полез в их мастерскую — и не нашёл буквально ни одного мало-мальски приличного скина. Увидев фоны (скайбоксы), сделанные из панорамных скриншотов Нормандии — решил, раз авторов не забанили, выдернуть саму настоящую 3D-модель палубы звездолёта и залить в мастерскую. Будет круто бродить за Шепарда по его кораблю.

​Это есть в «мастерской» steam — но лишь как фон. 360°-текстура. А я хочу — настоящую 3D-сцену.

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

— подумал я.

Наивный…

Потыкавшись с полчаса, как именно билдить environment'ы для #SteamVR из #Unity — я понял, что… никак.

Нет, реально: ЕДИНСТВЕННЫЙ способ добавить кастомное окружение в SteamVR — это сделать его... на сраном Source'е.
При чём, в Asset Store есть плагин для Юнити, который позволяет бесшовно интегрировать полноценную игру в SteamVR. А вот сделать скин к нему самому — нет. Только #Source.
Я искренне не понимаю, что мешало организовать импорт сцен, собранных в Юньке, через билд её ассет-бандлов. Раз функционал интеграции с API SteamVR уже всё равно есть.

«Но чо ты его хаешь, нормальный же движок,» — возразят те, кто его в глаза не видел.

Мне — в прошлом уже доводилось тыкаться с этим… кхм… куском кода, и тогда я зарёкся делать на нём хоть что-то. Но тут, по идее, выдернутые инструменты уже из второй версии, которые, по слухам, капитально переделывали перед релизом The Lab, и которые, вроде как, доведены до ума, чтоб любой желающий мог добавить своё окружение... да и #Source2 сама #Valve рекламила как свой сверх-секретный убер-переработанный инхаузный #engine, который затыкает за пояс по удобству что Unity, что Unreal. А то, как он заточен под VR — по обещаниям, должно быть просто сказкой, благодаря их собственному© уникальному® супер-пупер VR-optimized™ рендеру (который они даже с помпой выкладывали в Asset Store).

Так вот:

НЕТ.

Тулсет для SteamVR — это просто хтонический мрак. Если кто-то удивится, почему подавляющее большинство кастом-Environment'ов для SteamVR (стремящееся к 100%) столь вырвиглазно чудовищно выглядит, будто все они вылезли из девяностых — это потому, что двиг действительно прямиком оттуда, а вовсе не из-за жёстких ограничений самого VR как технологии.

Так чем же плох Source? Ох… скорее, чем же он НЕ плох? Такое ощущение, что это просто эталон того, каким НЕ надо делать двиг, для палаты мер и весов.

Начнём с того, что по своей архитектуре — он наследник тех бородатых времён, когда игра и была, по сути, движком: просто запущенным в определённом режиме. А это означает две вещи. Во-первых, нет того магического момента, когда ты нажимаешь кнопку «билд», и из исходного контента (который лежит в проекте) собираются ассеты. Ты должен сразу вставлять весь контент в том формате, который будет обрабатываться игрой в рантайме.
Во-вторых, нет никакого, собственно, «режима движка» и «проекта». Некой единой среды разработки, в которой ты пользуешься нужными инструментами. Вместо этого — несколько отдельных программ-инструментов, которые работают с файлами игры. Ещё раз: ты имеешь дело не с понятными сущностями типа «ассет» или «материал», которые можно связать друг с другом средствами движка. Нет, ты имеешь дело с файлами, которые вручную надо подключать друг в друга с помощью вороха этих отдельных утилит. Одна программа позволяет создать файл материала. В другой ты его затягиваешь и назначаешь на модель, которую сохраняешь… правильно, в файл. Да-да, связь с материалом «жёстко» сохраняется прямо в меш. А в третьей утилите — ты из этих файлов-моделей собираешь уровень. И упаси тебя дьявол что-то куда-то переместить.
Разумеется, ни о каком менеджменте базы данных ассетов или банальном поиске зависимостей между ними — речи нет и в помине.

Ах да, сами сущности — чётко детерминированных типов. Ничего кастомного: только стандартные "текстура", "материал", "модель" и "карта", последовательно подключенные друг в друга именно в таком порядке. И импорт контента — через складывание файлов в специальных форматах в СПЕЦИАЛЬНО ПОИМЕНОВАННУЮ - ЧЁРТ ВОЗЬМИ - ПАПКУ и правку текстовых конфигов.

Скрипты пишутся на каком-то своём извратском недо-языке, никаких конструкторов логики. При чём, я даже не о визуальных редакторах кода, а хотя бы об artist-friendly контроллерах типа Юнитишного Аниматора.

Шейдеров в тулките — ОДИН. Один шейдер вообще на всё, я не шучу. При чём, если ты думаешь, что это какой-то универсальный убер-шейдер на все случаи жизни, с кучей дополнительных фич, которые включаются опционально... Нет. Просто нет. Стандартный максимально примитивный PBR с топорнейшей моделью освещения.

Dispacement? Ишь чо удумал! Parallax mapping? А зачем тебе! Sprite-sheet с frame-blending'ом, чтоб для партиклов не нужны были текстуры по 8К? Сойдёт и так! Тесселяция? Эм... чо?
Запаковать несколько монохромных текстур в RGB-каналы одного файла? Пффф!

​Тот самый шЫдевр полёта шейдерной мысли, который, по мнению Valve, должен удовлетворить вообще все возможные потребности.

Добавлять свои шейдеры — можно, но только через лютейшую попоболь.
Попоболь — даже для человека, который в повседневном режиме пишет (да-да, именно пишет, а не собирает из нод) шейдеры для Юнити, запускающиеся на всём: от умных холодильников на Android до кривого-косого WebGL в Опере на видюхах Intel. А в прошлом — писал также шейдеры и для RenderMan, и для mantra.

Во всех современных движках кастомные шейдеры — это давным-давно осознанная необходимость. Без них не то что хитрые эффекты — порой даже просто многие оптимизации не сделать.

В SteamVR же — вот тебе один шейдер, пято́к стандартных текстур-слотов, назови файлы текстур так-то и положи в папочку с моделью вот туда-то. Чо те не нравится? Жри!

Привык выгружать модели в двиг, просто закидывая FBX? Забудь! Вот тебе наш очешуительно богоподобный #Hammer, юзай его.

​Я понимаю, что вы очень гордитесь своим недо-3Dmax'ом с блекджеком… Но можно я сделаю меш там, где мне удобно, а в двиг просто закину FBX? Нет, нельзя? Ну ооок…

Да, формально — FBX затянуть тоже можно. Но — опять же — только через этот их недо-3D-редактор. Это не «выгрузка в движок» в привычном понимании, а именно импорт FBX'а в «файл модели» Хаммера. И это ручной процесс, которому посвящён целый отдельный туториал.

Чтоб понимать масштабы катастрофы: даже единица измерения в этой утилите — дюймы.
Всё. ВООБЩЕ ВСЁ, чёрт возьми, в проклятых, мать его, дюймах. При чём, они понимают градус абсурда, поэтому в официальных туторах предлагают планируемую сцену по-человечески измерить в метрах, а потом сесть с калькулятором и поделить сантиметры на 2.54. На полном серьёзе. Да, прям делить числа вручную. Вместо того, чтоб просто выбрать другую единицу измерения в настройках.

В общем, на девелоперском подразделении Valve — я для себя поставил окончательный крест. Если они в конце 2019-го держат ТАКОЕ за серьёзный движок — то никаких игр от них ждать не сто́ит. Вот прям вообще. Никаких, даже посредственных.

Может, я упускаю что-то фундаментальное. Что-то, что сделает «вжух!» — и это страшилище в один клик переключится в режим нормального движка. Но пока что — я искренне не понимаю, зачем вообще Valve продолжает форсить свой Source хоть для чего-то.
Это же — максимум, уровень колхозного движка категории «я сделяль» от Васяна на 2-ом курсе ПТУ.

Ах да, этот их хвалёный супер-пупер VR-optimized™ рендер, который они так пафосно релизили в Asset Store — не более чем самый банальный forward рендерер, вообще без каких-то адвансед фич.

Земля вам пухом, игры от Valve. А ведь когда-то — вы рождали целые жанры и задавали тренды…

Материал опубликован пользователем.
Нажмите кнопку «Написать», чтобы поделиться мнением или рассказать о своём проекте.

Написать
{ "author_name": "Lex Darlog", "author_type": "self", "tags": ["vr","valve","unity","steamvr","steam","source2","source","hammer","environment","engine"], "comments": 94, "likes": 66, "favorites": 48, "is_advertisement": false, "subsite_label": "gamedev", "id": 75051, "is_wide": false, "is_ugc": true, "date": "Sun, 13 Oct 2019 05:52:32 +0300", "is_special": false }
0
{ "id": 75051, "author_id": 156336, "diff_limit": 1000, "urls": {"diff":"\/comments\/75051\/get","add":"\/comments\/75051\/add","edit":"\/comments\/edit","remove":"\/admin\/comments\/remove","pin":"\/admin\/comments\/pin","get4edit":"\/comments\/get4edit","complain":"\/comments\/complain","load_more":"\/comments\/loading\/75051"}, "attach_limit": 2, "max_comment_text_length": 5000, "subsite_id": 64954, "last_count_and_date": null }
94 комментария
Популярные
По порядку
Написать комментарий...
17

Кратко: чувак написал полотно, доказывающий, что сырой движок является сырым движком

Ответить
11

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

Ответить
–2

Анриал запускал? после него в юньке как после юники в хаммере)

Ответить
2

Анрыл vs Юнька - чистой воды холивар. Базирующийся, по большому счёту, на вкусовщине.
Как там в анрыле обстоят дела с аналогом префабов? :D
С VR-ом? С мобильным билдом до 100 мб на старые девайсы с SM 2.0, и чтоб не убивал батарею?

Ответить
2

С VR всё ок - forward / deferred на выбор. С размером билда до 100 будет сложнее. По батарее вопрос очень и очень относительный.

Ответить
0

Отлично обстоят. Есть вложенность, которую в Unity пытаются изобрести уже лет 7.
VR рендер в 1,5-2 раза быстрее.
А вот старые девайсы это уже лучше к Godot Engine.

Ответить
3

Вложенность префабов в Unity уже давно есть. Поэтому давайте не будем устраивать холивар завязанный исключительно на знании инструментария)

Ответить
0

Как анрыловские префабы зовутся? Я б обновил сведения о состоянии движка.

Ответить
0

Actor BluePrint.

Ответить
0

То ли ты меня не понял, то ли я тебя. Судя по докам, это скорее визуальный MonoBehavior, нежели префаб.
https://docs.unrealengine.com/en-US/Resources/ContentExamples/MouseInterface/BlueprintActors/index.html

Ответить
1

С вр отлично - не знаю как можно работать без vr editor) как написали forward rendering позволяет получать красивую кратинку на vivepro в 90 фпс, вот только с сглаживанием беда.. То что я видел на юньке выглядело круче в плане лесенок)
Билды можно мелкие собирать - если не с дефолтными галками паковать) 

Ответить
0

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

Ответить
0

Что значит нельзя расширять? Эдитор? вполне дописывается

Ответить
0

на схх? или на коленке можно?

Ответить
0

Унети

хороший редактор

текстуры в jpeg

хардкор разраб

Воу, воу, хардкор так хардкор!

Ответить
0

грама наци это болезнь...

а что не так с jpeg то?

Ответить
0

Ха, а ты шутник!

Ответить
0

и? до того как выкатили компрессию текстур все жали джпегом.
а сейчас можно хайрез держать в джпег а доунскейлить в пожатый формат.

Ответить
0

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

По нормальному текстуры хранят в форматах без сжатия или со слабым сжатием: tga, tif, png. Сырые изображения хранятся в raw.

Сейчас тем более крайне бесполезно и вредно что-либо держать в jpeg, если оно пойдёт на текстуры, ибо PBR. Исходники хранятся в форматах без сжатия и по необходимости делается компрессия в конечный формат с деструктивным сжатием, к примеру dds. Причём если делать для игр, то в движок импортируется текстура в исходном разрешении и формате без сжатия, а потом средствами движка делается компрессия, не затрагивая исходник. Это позволяет в любой момент сделать рекомпрессию в любое подходящее разрешение, вплоть до исходного.

Ответить
1

Поправка: (нужно) в форматах со сжатием, но без потерь (lossless). То есть - да, PNG.
Если нужно 16/32-битные (на канал) тру-float данные и ты/студия в состоянии придумать свой энкодер, чтоб запихать текстуры в форматы, понятные видюхе - то EXR.
За жопеги, сданные в проект - художников бьют по рукам молотком.
Юнити (как, полагаю, и унрыл) - в любом случае пережимает текстуры под формат целевой платформы (который у каждой платформы - свой). Так что сдавать, а, тем более, править текстуры в жопеге - верный способ засрать качество просто на ровном месте.

Ответить
0

а из сети грузить не? ввиду ресурсоемкости жатых форматов это редко применяют, но юзер генератед контент нието не отменял.

Ответить
0

вы давно ааа занимаетесь? в какой студии работаете? давайте не будем понты тут гнуть, никто разницу между лослес и jpeg не заметит если текстура 4к. все ваши ляля применимы к ааа, которые выходят 2 3 раза в год, и врятли вы там

Ответить
0

ААА тут никоим боком, это обычные требования разработки контента. Использование jpeg вносит огромное количество артефактов, которые чрезвычайно усугубляются дальнейшей компрессией в dds. Те же тёмные оттенки начинают плыть "машинным маслом в луже", а нормали выдают адские артефакты по фактуре и при переключении mip-уровней. И весь этот кошмар перемножается по ухудшению качества, если это видеть в VR. Поэтому использовать форматы с деструктивным сжатием в качестве промежуточного формата, а то и исходника, это откровенно вредоносное дилетантство.

Работаю в игрострое в небольшой студии. Игры, аутсорс и всё в таком духе.

Ответить
0

ага у ue забыли и кучу закрытых движков)да и unity редактор уже не мало так устарел)

Ответить
17

Юнити-дети впервые столкнулись с суровым энтерпрайзным геймдевом. Ничего нового.

Ответить
9

Ну так официально Source 2 и не вышел ведь. И тулзов специально для него нет. То что есть сейчас это монстр франкенштейн из первого Source в который костылями добавляют штуки из второго чтобы он был как второй. Ну насколько я понимаю ситуацию.

по слухам они доработают и выпустят S2 к релизу Half Life VR. И там он должен быть более юзер френдли. Ну в теории. От Valve конечно можно ждать чего угодно 

Ответить
0

На Unity они делают VR-игры, на Unity. А не на Source 2.

Ответить
3

На Unity у них только The Lab и то не полностью, демка с роботами на сорсе 2, как и SteamVR Home. Moondust и Hands делали сторонние разработчики.

Ответить
–3

демка с роботами на сорсе 2

Ноуп. Открой папку, там стандартный Юнити.

Moondust и Hands делали сторонние разработчики.

Когда Габен говорил, что в разработке "три игры", его спрашивали, на чем. Он сказал, что две из них - на Unity. Но я думаю, что все три к настоящему моменту уже заброшены.

Ответить
4

Открыл, не вижу unity. И можно ссылку на интервью, когда 3 проекта упоминались всегда упоминался source 2

Ответить
–4

Открыл, не вижу unity

+, был неправ
И можно ссылку на интервью

Ты же не думаешь, что я храню в закладках ссылки на каждое интервью Габена? Так может, сам погуглишь?

Ответить
3

Ок, т. е. ссылки на это интервью нет, ок. А у меня есть ссылка от 17 сентября на то, что 
The programmer also confirmed that the game will use Valve’s Source 2 engine

https://uploadvr.com/valve-vr-game-doors/

Ответить
–2

Это новая игра, а не те три забытые.
Ок, т. е. ссылки на это интервью нет, ок

Это так мило, что для тебя важнее сохранить свою убежденность, чем разобраться и узнать правду.

Ответить
9

Ну а что вы хотели? Unity - это своего рода революция в дружественности разработки. Он изначально задуман как среда с низким порогом вхождения, в котором удобство было приоритетной задачей. Технологичность в нём приблизилась к уровню тяжелых движков только недавно. И дружественность тяжелых движков соответственно тоже совсем недавно приблизилась к Unity (Unreal 4 например). А до этого момента (до конца нулевых) все тяжелые хорошо оптимизированные движки были сделаны так как Source. То есть это именно движок, который по сути подключаемая библиотека с наборов самых основных тулз (брошенных с барского плеча).

Ответить
6

А разработчикам титанфолла и ареха норм. 

Ответить
5

Справедливости ради, Respawn все же ушли с Source и Star Wars Jedi: Fallen Order они пилят уже на Unreal 4

Ответить
0

Так ведь оно не на Сурсе же?..

Ответить
7

на сурсе, хоть и апгрейднутом

Ответить
0

Ничоси, вот это я называю "подтянули лицо так, что не узнать"...

Отдельно не узнавал, с виду не признал бы :)

Ответить
1

На нем самом

Ответить
5

А можно ещё статью про какой-нибудь idtech4? Так хочется прочитать о том, что id вообще офигели и там нужно код на плюсах писать.

Ответить
0

Код на плюсах, если что, и в UE пишется. Плюсы сами по себе - не показатель неудобства.
Троллинг засчитан.

Ответить
–2

А в третьей утилите — ты из этих файлов-моделей собираешь уровень. И упаси тебя дьявол что-то куда-то переместить.

А git вам на что?

В общем, на девелоперском подразделении Valve — я для себя поставил окончательный крест. Если они в конце 2019-го держат ТАКОЕ за серьёзный движок — то никаких игр от них ждать не сто́ит. Вот прям вообще. Никаких, даже посредственных.

Artifact и Dota:Underlords - это что, не игры?

Ответить
13

Я не уловил, каким образом использование гита должно решить проблему линковки ассетов по их путям, вместо id-шников из внутренней БД ассетов? 

Ответить
1

Если ты что-то сделал с файлами не то, то откатываешься на прошлый коммит в гите. Работать с большим количеством файлов, где можно все легко испортить, без контроля версий - очень странно.

Ответить
3

Ещё более странно — работать с системой менеджмента ассетов, которая без танцев с бубном не допускает даже банального переименования файлов. 
Я понимаю, что на это всегда можно ответить: "а тебе не нужно переименовывать, именуй сразу правильно". Но — камон — это же парадигма: "юзер должен подстраиваться под машину". От которой в современных движках — уже лет 10 как всеми силами пытаются уйти. 

Ответить
0

git плохо умеет в Unity сцены в плане dif'ов.

Ответить
4

Да этот их шейдер не может даже в банальный скроллинг! (когда текстура скользит с течением времени по модели)

Но, ведь...

Ответить
0

Действительно. Мой косяк. В потоке офигевания таки проморгал.
Что не отменяет, например, того факта, что хоть в сколько-то адекватные сроки - не получится просто взять и пустить одну текстуру скроллиться поверх другой.

Ответить
3

Я конечно далёк от разработки игр, но я правильно понимаю, что человек пришёл из среды Unity и жалуется что тут все не как в Unity?

(Хотя про дюймы это конечно немножко лол)

Ответить
1

Человек пришёл из Unity, нормально ориентируется в Maya/Nuke/Houdini, спокойно относится к написанию собственных инструментов, но офигевает от того, какими инструментами valve предлагает пользоваться для вроде как инновационной технологии. SteamVR - активно партнёрится с HTC Vive, который преподносится как хай-энд от мира VR.
Но при этом девелоперам предлагается пилить нативные для SteamVR штуки на кое-как перепиленном инструментарии конца девяностых-начала нулевых.
Это как если бы Google, продвигая расширения для chrome, изобрела для них собственный язык на основе Pascal и предлагала писать их... в блокноте, потому что нормальной IDE - просто не выпустила.

Если Valve хочет, чтоб люди на голом энтузиазме заполняли её библиотеку "мастерской" - то мне решительно неясно, зачем заставлять таких людей пользоваться только Source'ом. Заведомо зная, насколько он куцый.

Ответить
0

Согласен с тобой. Valve должна создать новый игровой движок, которая не будет уступать Unreal и Unity. Заодно они могут подзаработать кучу денег. Source уже устарел.

Ответить
4

Они не в состоянии. Там полторы калеки что-то делают, остальные фигней страдают.

Ответить
4

Почему сразу фигней? Патчи для Opposing force сами себя не напишут.

Ответить
0

Жаль. Кстати, у меня уже установлены Unity и Unreal.

Ответить
–1

откуда вы вашу мать только беретесь? Source устарел... А Frostbite устарел? А Unreal Engine 4 устарел? Все современные движки - это просто прокаченные старые

Ответить
2

1. UE - развивается, про UE тут нигде даже упоминания не было. А если б и было - то только в качестве положительного примера.

2. А ты лично - работал с Frostbite? А с Luminous? А c REDengine? Простым смертным пощупать инхаузное двигло не удастся. Но по той инфе, которая просачивается из каких-нибудь докладов на GDC, понятно, что с точки зрения инструментария/юзабилити - в них всё прям очень плохо.
CDPR в таком докладе как-то хвалилась тем, какой у них великолепный тулсет для поиска человеческих ошибок в проекте. В качестве примера - привела лампочку, которую какой-то дизайнер случайно поставил в тестовой комнатке глубоко под картой, и она при этом "освещала" всю карту, чем садила FPS. И модельку курицы, которую так же сложили в какое-то ведро, а она весила какие-то неадекватные сотни тыщ полигонов. Они там гордо показывали таблички, иллюстрирующие, как же замечательно этот тул позволяет искать подобное по базе данных объектов... Вот только это значит, что допустить такую ошибку там - легче лёгкого. А выловить без подобного поиска по БД - практически невозможно.
Когда их художники, расхваливая дополнение "кровь и вино", с помпой хвастались тем, как же тщательно они оптимизировали контент - они случайно проболтались и описали, что, по сути, они впервые заатласировали текстуры всякой растительности. Это значит, что раньше они этого не делали. Это значит, что в оригинальной игре - всё прям очень плохо с батчингом.
Уверен, это не единственный фактор - но именно из таких вот факторов и сложилась производительность 3-го Ведьмака.

Ответить
–1

А разве Source обновили до RTX графики?

Ответить
0

при чем тут вообще RTX?

Ответить
–2

Окей, я хочу спросить. Source обновляется в графическом плане?

Ответить
0

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

Ответить
0

На любом движке при достаточной доработке напильником можно добиться любого уровня графики.
Вопрос только в том, насколько это из коробки, насколько удобно и насколько легко расширяемо.
У source, по всем трём пунктам - минус.

Ответить
0

Несколько не потеме отпишусь, но все же

Я несколько далек от всего этого, а вот временами нравится просто взять и поломать-посоздовать всякого хлама на сцену в каком нибудь блендере\синьке\максе\террагене.

Собственно в чем вопрос, какими инструментами ты пользуешься для вытягивания сцен, моделек, текстур с игр? Только сейчас понял, что было бы интересно самому покрутить любимых героев, запомнившиеся места... А вот знаний чем пользуются для этого прошаренные нет, конечно на просторах гугла валяются 3д нинjа риперы, но есть ведь и другие удобные способы?

Ответить
4

Всё уже украдено до вас https://p3dm.ru

Ответить
0

Спасибо большое)

Ответить
2

Для Unreal Engine есть тул https://www.gildor.org/en/projects/umodel
Но в свеженьких играх pak-файлы могут шифроваться.

Ответить
0

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

Ответить
0

RenderDoc?

Ответить
0

Когда дебажил Mass Effect — делал это нвидишным дебаггером (из VS) , при чём, древней версии. ME — на DX9. Крутые современные дебаггеры, увы, только с dx11/vulkan работают. 

Ответить
0

А ты раз предложил - не в курсе, как можно отдебажить DX9-игру RenderDoc'ом? Он не может в DX9, но может в вулкан.

И есть такое вот: https://github.com/disks86/VK9
Но почему-то даже вместе с dll-ками от VK9 игра RenderDoc'ом обнаруживается как DX-овская (а не вулкановская) и, соответственно, не дебажится.

У рендердока - удобный питоновский апи, в отличие от nsight. Что очень полезно при выдёргивании контента из тыщ мелких drawCall'ов, как в ME.

Ответить
0

Скорее поинтересовался. К слову, для RenderDoc есть плагины для выдирания геометрии и текстур в более адекватные форматы? С ходу найти не удалось.

Для трансляции DX9 в Vulkan сейчас актуально вот это: https://github.com/Joshua-Ashton/d9vk Работает исключительно с Wine, на живой Windows не заработает.
Библиотеки игры не заменяются, трансляция происходит налету.

Ответить
0

Сам тоже на d9vk вышел. Поколупался с ним. Завёл на винде. Поколупаться пришлось знатно - но только из-за того, что проклятая нвидия опять чо-то незаметно поломала у себя в дровах (на сей раз - в вулканских).
Про плагины - хз, но у него ж есть апи для питона: зачем какие-то плагины? В самом дебаггере - есть все атрибуты меша (позиция/тангенс/нормаль/увихи), которые можно просто по ПКМ сохранить в CSV-файл. А через апи это можно сделать пакетно для всех нужных мешей. Уже CSV-файл - можно чем угодно распарсить и во что угодно выгрузить. Я, вот, намеревался питоном же строить меш в Гудине (там это очень просто) и уже там его чистить.

Одна загвоздка: после нескольких часов колупаний - я так и не смог найти то место, в которое шейдеру приходят матрицы трансформаций для каждого объекта. Там в констант-регистрах - какой-то прям лютый адок: прилетает 256 непонятных float-значений в виде массива - и ломай голову, как хочешь. Учитывая, что shader disassembly там очень такой себе - может реально проще оказаться восстанавливать эти матрицы самому, через позиции вертексов в исходном меше и в clip-space.

Ответить
0

Вот как раз вывод в CSV и смущает. Вернее, дальнейшие колупания с преобразованием в какой-нибудь obj. Хотелось бы не тратить на это время, если есть известные доступные решения. Видел плагин для Blender, но он старенький и жалуются на него.

Ответить
1

Столкнулся как-то я с их тулсетом из Steamworks SDK. Ну, игру там просто залить на их сервера, даже ничего особенного не нужно было.
Укоренившееся за всю долгую карьеру и жизнь мнение что JRE/JDK впереди планеты всей по анахронизмам испарилось минут за десять. Забавно, что оно вообще работает. Чтобы вы понимали: чтобы залить билд в стим, вам понадобится два джейсона и 240 мб. автоматически выкачивающегося сдк, независимо от того, что он уже установлен внутри самого, установленного на машине, Стима (да, сдк стима доступен как продукт внутри стима), и при этом внутри сдк лежит клиент самого Стима. Привет, Нолан! Ах да, оно ещё и перепаковывает контент, даже если он уже запакован. Функционал там такой, вроде бы, предусмотрен, чтобы оно не паковало файлы, но не работает.
Не менее забавно, что аж в прошлом году у них наконец появилась функция загрузки билда через админку. Только ограничение в ~200 мб.
И заметьте - это я только начал и только про одну единственную основную функцию "аплоад".

Ответить
0

А вообще всё довольно просто - находишь модельку палубы нормандии, компилируешь её, делаешь пустую карту в хаммере, закидываешь на него модельку, ставишь источники света, компилируешь карту.

Ответить
1

Понятно, что в базовом сценарии - затянуть можно. И я видел, например, модельку Тардис, над которой человек явно старался. ( https://steamcommunity.com/sharedfiles/filedetails/?id=966495722
Но ровно так же и видно, что несмотря на старания, побороть ограничения Сорса - ему не удалось.
Ну невозможно без кастомных шейдеров и современного инструментария для работы со светом сделать что-то приличное. Надо хотя бы каких-то красивых процедурных анимаций на фон, который будет придавать живости, но при этом не ждать fps. Хотя бы мигающие экраны, псевдо-волюметрики вокруг лампочек, переливающиеся звёзды... да и вообще партиклы звёзд на мостике. Их, если что, гораздо быстрее превращать из точек в спрайты именно шейдером. 

Ответить
0

Дык всё это в сорсе есть. И анимированные текстуры и спрайты. Как-будто халф-лайф 2 не играли

Ответить
0

Эм... ты, видимо, не понял, о чём я.

Спрайты (квады, ориентированные на камеру) - можно генерить на проце. А можно - шейдером, на видюхе. В крутом случае - прям генерить (в compute-шейдере). В более простом - использовать специально подготовленный меш, у которого каждый квад сжат в центр партикла, и "разжимается" просто в vertex-шейдере, ориентируясь на камеру.
Например, стандартные юнитёвые партиклы - считаются на проце. Поэтому ими неразумно делать системы, в которых счёт идёт на десятки тысяч частиц. Особенно - если сама система статична, и просто крутится в пространстве. Но можно написать простенький шейдерок, который со специальным мешем сделает то же самое условно-бесплатно для производительности. Т.е., прям конкретно случай с Галактикой на мостике Нормандии.

Я, возможно, сгущаю краски. Но добавление шейдеров через компиляцию их в DLL ( https://developer.valvesoftware.com/wiki/Shader_authoring/Quick_Start ) и обязательное наличие обёртки с лоулевельным кодом для графического апи (имеющего отношение к state change) как необходимой части шейдера, без которой ничего работать не будет ( https://developer.valvesoftware.com/wiki/Source_SDK_2013:_Your_First_Shader ), без наличия хоть какого-то визуального редактора - это, простите, адок.

Юнька тоже недружелюбна к эффектам в том смысле, что визуальный редактор шейдеров там появился вот только-только. Но это многие годы компенсировалось тем, что там шейдеры писать руками - в принципе довольно просто.
Если тебе для расширения инструментария необходимо сразу бухаться в максимально лоу-левельный код, при чём весь этот код - boilerplate и строго engine-specific, но таки требует обязательных мелких твиков в отдельных местах, да ещё и нуждается в ручной компиляции при любом обновлении - это значит лишь одно:
данная модель расширения - плохая.
Просто плохая, безо всяких "но".

Ответить
0

Я о шейдерах имею поверхностное представление, но, если хочешь сделать, например, галактику, это делается в редакторе частиц. Например в этом видео делают лес частицами https://www.youtube.com/watch?v=ShpZT8mZ1VU

У соурса, несомненно, устаревший и недружелюбный инструментарий, но даже так существует огромное сообщество моддеров, которое в garry's mod и sfm перетащили контент из половины игр.

Ответить
0

Medusa 219, я в курсе, что такое частицы. Я говорю о том, как их можно реализовать. И что разные способы подходят для разных сценариев.

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

Ответить
0

Дык - сделай. А то там всего пара нормальных сцен есть.

Ответить
0

Можно посмотреть, эта херь без вр очков запустится?

Ответить
0

The Lab на Юнити сделана. Как и неведомые игры, которые, были в разработке еще года два назад, а сейчас в неизвестном состоянии.

Ответить
1

Ну и где сцена-то? Что, сдался?

Ответить
0

Ах да, этот их хвалёный супер-пупер VR-optimized™ рендер, который они так пафосно релизили в Asset Store — не более чем самый банальный forward рендерер, вообще без каких-то адвансед фич.

Это не так. Там реализовано динамическое разрешение.

Ответить
0

Да да пара сцен, а давайте откроем поиск и выберем отсев по популярным и увидим что из 671 сцены, куча прекрасно сделаных 
https://steamcommunity.com/workshop/browse/?appid=250820&requiredtags%5B0%5D=Destination&actualsort=trend&browsesort=trend&p=1&days=-1

Ответить
0

Если убрать сцены от самой Valve, из качественных останутся Беспин да голопалуба из Стартрека.

Ответить
0

1. "Из 671 сцены" действительно хорошие - уже на второй странице чередуются со стрёмными, а на 3-ей - заканчиваются вовсе.
2. Крутой арт всегда может вытащить хилые возможности двигла. И очень странно показывать сцены, просто выдернутые из игр на source, которые делала сама Valve. Как бы, я тоже могу показать тут демки от анрыла или Unity - но какое это имеет отношение к удобству разработки/функциональности, собственно, движка?
Предпоследнее, что ты скинул - это вообще, по факту, тупо анлит. Прекрасно выполненный артово, но технически - тупо анлит. Как и все фотосканы. Это никак не характеризует "преимущества" source.

Ответить
0

Фикус вечен ? 

Ответить

Прямой эфир

[ { "id": 1, "label": "100%×150_Branding_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox_method": "createAdaptive", "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "ezfl" } } }, { "id": 2, "label": "1200х400", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "ezfn" } } }, { "id": 3, "label": "240х200 _ТГБ_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fizc" } } }, { "id": 4, "label": "Article Branding", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "p1": "cfovz", "p2": "glug" } } }, { "id": 5, "label": "300x500_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "ezfk" } } }, { "id": 6, "label": "1180х250_Interpool_баннер над комментариями_Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "clmf", "p2": "ffyh" } } }, { "id": 7, "label": "Article Footer 100%_desktop_mobile", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fjxb" } } }, { "id": 8, "label": "Fullscreen Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fjoh" } } }, { "id": 9, "label": "Fullscreen Mobile", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fjog" } } }, { "id": 10, "disable": true, "label": "Native Partner Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyb" } } }, { "id": 11, "disable": true, "label": "Native Partner Mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyc" } } }, { "id": 12, "label": "Кнопка в шапке", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fdhx" } } }, { "id": 13, "label": "DM InPage Video PartnerCode", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox_method": "createAdaptive", "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "clmf", "p2": "flvn" } } }, { "id": 14, "label": "Yandex context video banner", "provider": "yandex", "yandex": { "block_id": "VI-250597-0", "render_to": "inpage_VI-250597-0-1134314964", "adfox_url": "//ads.adfox.ru/228129/getCode?pp=h&ps=clmf&p2=fpjw&puid1=&puid2=&puid3=&puid4=&puid8=&puid9=&puid10=&puid21=&puid22=&puid31=&puid32=&puid33=&fmt=1&dl={REFERER}&pr=" } }, { "id": 15, "label": "Баннер в ленте на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byudo", "p2": "ftjf" } } }, { "id": 17, "label": "Stratum Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fzvb" } } }, { "id": 18, "label": "Stratum Mobile", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fzvc" } } }, { "id": 20, "label": "Кнопка в сайдбаре", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "p1": "chfbl", "p2": "gnwc" } } } ]