This article relates to the game "Half-Life: Alyx". Click here for more information.
This article relates to the workshop tools for "Half-Life: Alyx". Click here for more information.
This article's documentation is for Source 2. Click here for more information.

Введение

From Valve Developer Community
Jump to: navigation, search

Эта статья предназначена для объяснения некоторых основных концепций, лежащих в основе движка Half-Life: Alyx и инструментов разработки, с которых можно начать. Пользователи, прибывающие из инструментов создания контента SteamVR Home, получат преимущество, поскольку утилиты работают на той же платформе, что и другие игры, такие как Dota 2 . Краткий обзор различий: освещение значительно улучшено, есть ModelDoc, который представляет собой полностью переработанную версию редактора моделей, стандартные шейдеры другие, и есть намного больше объектов и контента, с которыми можно поиграть. Хотя не все это напрямую применимо, инструменты SteamVR Home Workshop Tools документация на этой Wiki может по-прежнему содержать полезную информацию для людей, создающих дополнения Half-Life: Alyx.

Запуск Half-Life: Alyx Workshop Tools

См. Создание Аддонов.

Дополнения, контент и Папка Игры

Аддон - это набор файлов, которые размещаются поверх основной игры, которая по концепции аналогична модам Source 1, но позволяет заменять аддоны во время выполнения. Ваши файлы будут разделены на два типа - исходный контент (необработанные файлы) и скомпилированный контент (обработанные или скомпилированные файлы).


Расположение исходного контента::

  • \Steam\steamapps\common\Half-Life Alyx\content\hlvr_addons\your_addon_name


Расположение скомпилированного контента:

  • \Steam\steamapps\common\Half-Life Alyx\game\hlvr_addons\your_addon_name


Папка содержимого не будет распространяться, в то время как данные в папке с игрой будут упакованы в архивы, называемые VPK, когда вы загружаете свой аддон в Мастерскую.

Компиляция контента

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

Все файлы в папках с контентом представляют собой удобные для пользователя форматы, которые либо были помещены туда, либо созданы с помощью инструментов Half-Life: Alyx, в то время как файлы в папках с игрой (Game Folder), как правило, создаются из содержащихся в контенте файлов и используются движком напрямую.

Как правило, все будет автоматически перекомпилировано при изменении содержимого на диске, что позволяет пользователям сохранять файл в Photoshop и, например, обновлять все в редакторе материалов и Hammer. Также есть возможность принудительно перекомпилировать, если изменение не было принято.

Основные файлы - Текстуры, Материалы, Модели и Карты

  • Текстуры – изображение некоторых кирпичей на стене, например, или карта нормалей (описание точного направления поверхности, для имитации дополнительных деталей), или одна из многих других возможностей. Текстуры обычно создаются в программном обеспечении, таком как Adobe Photoshop, GIMP или аналогичном, и автоматически перекомпилируются при обновлении содержимого. Однако для рендеринга в игре требуется, чтобы на них ссылался Материал.
  • Материалы – описание того, как все текстуры работают вместе. Для кирпичной стены материал может указывать на цветовую карту, карту нормалей, карту шероховатости и так далее, чтобы определить, как должна выглядеть кирпичная стена в игре. У вас может быть альтернативная версия кирпичной стены, которая имеет другую цветовую карту, но те же карты нормалей и шероховатости. Материал распутывает все это и позволяет легко настраивать все входы шейдера.
  • Модели – создаются в программе 3D-моделирования, например Maya, Modo или Blender. Это трехмерные фигуры, состоящие из треугольников. Примеры могут включать мебель, деревья, детали зданий, персонажей или существ. Многое из того, что вы увидите в Half-Life: Alyx, основано на этих 3D-моделях. Поверхности, из которых сделаны эти модели, привязаны к определенным материалам, которые, в свою очередь, указывают на соответствующие текстуры для использования. Хотя файлы базовой модели обычно создаются с использованием внешнего программного обеспечения, их использование в движке настраивается в ModelDoc.
    • Автоматически перекомпилируется при изменении исходного содержимого - аспекты итоговой скомпилированной модели могут определяться материалами, которые она использует. Например, модель с простым, неосвещенным материалом может быть автоматически скомпилирована без нормалей вершин для экономии места, но вам нужно будет принудительно перекомпилировать модель, если вы впоследствии измените материал, чтобы использовать правильное освещение. Точно так же вы меняете свой материал, чтобы начать использовать вторичные UV для чего-то, вам может потребоваться перекомпилировать модель для правильного рендеринга.
  • Карты – Думайте об этом как о контейнере для всего в мире, который вы создаете. Карты содержат данные для освещения, где размещаются реквизиты, звуки, которые нужно проигрывать, когда и где, и даже базовые сценарии, связывающие поведение объектов вместе. Все, что вы видите в Half-Life: Alyx, в конечном итоге помещается на карту - это съемочная площадка или театральная сцена, на которой все происходит.
    • The Half-Life: Alyx Workshop Tools включает Hammer в качестве редактора карты.
    • Карты не перекомпилируются автоматически и всегда требуют компиляции для просмотра изменений в игре. Сюда входят такие процессы, как, например, расчет освещения и видимости.

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

Исключения из правила

Есть некоторые типы файлов, такие как различные файлы сценариев, которые используются движком напрямую. Эти текстовые файлы помещаются в папку с игрой и не компилируются. К ним относятся такие вещи, как определения Soundscape, локализация и т. Д.

Сущности, Геометрия, Логика Сущностей и Многое другое

Пустая карта в Hammer - это чистый холст для опыта виртуальной реальности в Half-Life: Alyx. Здесь размещается практически все, и пока вы не добавите объекты на карту, мир будет полностью пуст.

  • Сущности – каждая из них, по сути, представляет собой настраиваемые биты кода, написанные для выполнения определенного набора инструкций, которые позволяют пользователям в сочетании с другими сущностями создавать различные впечатления в игре. Они почти всегда будут иметь видимое (и / или слышимое) представление в мире и будут реагировать на вещи определенным образом. Физическая опора - это пример объекта, где пользователь может указать, какая модель должна быть визуализирована как физическая опора, как она должна реагировать на бросающий ее игрок и т. Д. Некоторые из этих данных содержатся в Hammer и могут редактироваться, а другие данные, относящиеся к модели, содержатся в файлах модели. Другим примером могут быть NPC (Хэдкрабы, Солдаты Альянса), источники света или невидимый триггерный том, который приказывает другой сущности что-то сделать, когда конкретная сущность входит в нее.
  • Геометрия геометрия карты, построенная в Hammer в основном используется как фиксированная архитектура, на которой все происходит. Вы также можете привязать определенные участки геометрии карты к определенным объектам - это указывает объекту (например, раздвижной двери или вращающейся платформе) использовать эту геометрию карты в качестве видимого представления. В случае этого невидимого триггерного объема блок геометрии карты будет определять пространство, которое он охватывает.
  • Логика сущностей – это основной клей, склеивающий поведение сущностей на карте. Созданный на основе определений ввода и вывода на объектах, объект может столкнуться с определенной ситуацией (например, когда игрок кладет руку в указанный том), что приводит к срабатыванию OnTrigger Output. Это связано с входом другого объекта, который приказывает ему сделать что-то еще, например, включить свет. Существует подробная статья о Входах и Выходах, чтобы прочитать дополнительную информацию. Обратите внимание, что это руководство по Source 1, поэтому ссылки и подробности часто уходят в темы, не относящиеся к Half-Life: Alyx, но основные концепции остаются теми же.

Осветительные приборы/Свет

Движок использует моделирование того, как свет появляется в реальной жизни, для визуализации объектов, позволяя поверхностям реалистично реагировать на источники света. Объекты могут отбрасывать тени на себя и другие объекты. Освещение - важный аспект карты, а правильное освещение миров - это уже искусство. Вы можете прочитать обзор Системы освещения , чтобы лучше понять ее возможности и ограничения.

Командная Консоль

Упоминаемый просто как «консоль», это интерфейс командной строки, который передает журналы и сообщения обратно пользователю, а также принимает множество текстовых команд для управления функциями глубоко внутри движка. Он принимает форму отдельной программы, и при запущенных инструментах вы можете вызвать ее, нажав клавишу тильды (~) чуть ниже клавиши ESC в левом верхнем углу клавиатуры или из меню Инструменты в правом верхнем углу большинство окон инструментов.

Перформанс/Эффективность

VR чрезвычайно требовательна к системным требованиям, и поэтому при создании контента внутри Half-Life: Alyx необходимо идти на различные компромиссы. Одной из самых больших вычислительных затрат является рендеринг сцены, и в данном случае двух бинокулярных изображений в высоком разрешении со скоростью 90 кадров в секунду. Каждый раз, когда частота кадров падает, гораздо сильнее, чем в играх на плоском мониторе, пропущенные кадры в VR могут быть довольно очевидными и неприятными. Это может вызвать мерцание в лучшем случае или болезненное дрожание в худшем случае. Система рендеринга и шейдеры в Half-Life: Alyx специально разработаны, чтобы быть максимально эффективными, но все еще очень возможно перегрузить ее.

Система адаптивной верности, используемая в Half-Life: Alyx, будет динамически включать и отключать размер рендеринга и функции, чтобы получить максимально возможное качество от вашего оборудования, но для предотвращения чрезмерной размытости она не будет опускаться ниже определенного уровня. При работе в режиме инструментов это будет отключено. Он будет доступен только в игровом режиме. Правильное тестирование производительности вашего аддона должно проводиться в игровом режиме (в отличие от запуска игры с инструментами, загруженными в фоновом режиме).

Вот несколько потенциально дорогостоящих областей:

  • Слишком много геометрии. Мир может быть слишком детализированным, и построение слишком детализированной геометрии в Hammer или размещение слишком большого количества статических объектов может привести к снижению частоты кадров. Используйте приведенные в качестве примера карты в качестве образца.
  • Дорогое освещение. – Наличие слишком большого количества проиндексированных (запеченных, предварительно вычисленных) источников света может увеличить стоимость визуализации. Хотя система освещения в Half-Life: Alyx удивительно эффективна, недопонимание и завышенные ожидания могут вызвать серьезные проблемы. Общее практическое правило - не должно светить слишком много индексированных огней на одной поверхности. Жесткое ограничение - четыре, хотя игра будет работать более эффективно, если на поверхность попадает только один или два индексированных источника света. Динамическое освещение следует использовать консервативно, и обычно они предназначены для узкоспециализированных случаев использования, таких как фонарик. Template:Совет
    • Если вы можете, найдите пользователя с графическим процессором начального уровня (например, Nvidia GeForce GTX 1060 или AMD Radeon RX 580 с 6 ГБ видеопамяти), чтобы протестировать его в качестве хорошей основы для оценки вашей карты.

Чтобы получить актуальную информацию о текущей стоимости рендеринга, откройте окно синхронизации кадров в SteamVR: Настройки: Производительность: Время отображения кадров. На очень упрощенном уровне график графического процессора внизу должен оставаться ниже 11 мс для дисплея с частотой 90 Гц, без появления ненулевой красной линии внизу - при работе в игровом режиме адаптивная точность должна пытаться максимизировать использование графического процессора, но оно должно редко, если вообще когда-либо, превышать 11 мс. Template:Совет

Если график вашего процессора часто превышает 11 мс, то, возможно, есть другие затраты на производительность. Вот некоторые потенциальные затраты на ЦП:

  • Слишком много объектов – Скорее всего, это какой-то аспект конкретных объектов на карте, а не общее количество всех объектов. Если у вас гораздо больше, чем обычно, определенной вещи, возможно, стоит изучить ее подробнее. Например, простую коробчатую карту с сотней Объединённых солдат может быть сложно отрендерить, но еще сложнее заставить всех этих ИИ вычислять пути, цели, места укрытия и столкновения с миром.
  • Сложный рендеринг – Как ни странно, у вас может быть высокая стоимость рендеринга, даже если графический процессор не загружен на максимум благодаря вызовам отрисовки. Если у вас много отдельных моделей и / или материалов, ЦП должен указать графическому процессору рендерить каждую из них, что влечет за собой расходы, которые возрастают с увеличением количества имеющихся у вас вещей.
  • Сложная физика – наличие слишком большого количества физически смоделированных объектов в сцене одновременно может потребовать значительных вычислительных затрат - и, в частности, столкновение одного сложного корпуса столкновения с другим может быть очень дорогостоящим, вызывая серьезные потери кадров. Хотя на примерах карт могут быть сотни физических объектов, не все они активны одновременно. Имейте это в виду при создании своих аддонов.

Примеры Карт

Некоторые примеры карт представлены в \Steam\steamapps\common\Half-Life Alyx\content\hlvr\maps.

  • workshop_examples содержит несколько аннотированных примеров различных функций Half-Life: Alyx.
  • release содержит полные исходные коды всех карт, представленных в финальной версии игры.

От вас не ожидается перекомпиляции карт выпуска(Исходников). Полные расчеты освещения и звука на домашнем ПК, скорее всего, потребуют слишком много времени, но вы сможете добавлять контент на уровне объекта, используя новую функцию Map Extensions.

Документация

Наконец, добро пожаловать на вики сообщества разработчиков Valve! Работа над этой документацией продолжается, и она частично создается такими же людьми, как вы - каждая страница имеет раздел обсуждения, и каждую страницу можно редактировать и расширять по своему усмотрению. Если у вас есть вопросы, опубликуйте их - и если у вас есть ответы, опубликуйте их тоже!