Как сделать стекло в sdk
Играем в Source SDK, освещение и отражение
В Source есть несколько объектов, отвечающих за освещение, а также множество разнообразных настроек в зависимости от игры, для которой вы делаете карту. В этом уроке мы начнём с базового освещения для Half-Life 2 и других игр на Source 2007, прежде чем обращаться к более сложным приёмам.
Благодаря предыдущим урокам вы создали чудесную карту, но без освещения ваши игроки будут чувствовать себя покинутыми во тьме.
Базовое освещение
Самый простой способ добавить на карту освещение – это объекты light и light_spot. Они создают «статическое освещение», просчитываемое в компиляторе и хранящееся в особом файле текстур, известном как карта освещения.
Объект light
Данный объект представляет из себя точечный источник освещения, светящий во все стороны. Создайте один такой и загляните в его свойства (меню Object Properties). Перед тем как мы продолжим, хочу обратить ваше внимание на один важный момент. Не присваивайте объектам light имя, если только не собираетесь включать и выключать их. Каждому именованному объекту light соответствует отдельный файл карты освещения, что может серьёзно отразиться на размере и производительности карты.
Выделив поле Brightness, вы увидите четыре значения. Первые три отвечают за красный, зелёный и синий цвета, а четвёртое за интенсивность света. По умолчанию оно установлено на 200, но я заметил, что меньшие значения делают свет мягче и атмосфернее. Следующие несколько опций настраивают эффект HDR.
В поле Appearance можно добавить эффект мерцающей лампочки или дневного света, но не злоупотребляйте этой опцией! Оставшиеся настройки отвечают за дальность освещения. Меня устраивают значения по умолчанию, но вы можете добавить или убавить половину дистанции, чтобы освещать большее (или меньшее) расстояние.
Объект light_spot
Этот объект имитирует направленный свет. Его можно поворачивать, чтобы выбрать направление света. Выделение объекта light_spot покажет конус освещения на 3D-виде.
Свойства у объекта практически те же самые. Следует помнить, что значение яркости (Brightness) должно быть на порядок выше – для начала я рекомендую 600-800 для внутреннего освещения. Углы освещения (ширину пучка света) тоже можно поменять. Поглядывайте на 3D-вид, чтобы увидеть разницу в значениях внутреннего (Inner) и внешнего (Outer) углов. Для видимости на больших расстояниях дальность света также необходимо повышать.
Советы по базовому освещению
Наружное освещение
Стоит отдельно поговорить о том, как сделать освещение «на улице». В Source наружные пространства – это те же комнаты со скайбоксом. Давайте создадим большое пространство и протестируем в нём наружное освещение. Добавьте несколько объектов, чтобы проверить отбрасывание теней. В списке текстур найдите tools/toolsskybox и примените её к «потолку». В игре эта текстура заменяется на скайбокс.
Чтобы поменять небо, зайдите в меню Map>Map Properties и найдите поле SkyBox Texture Name. Со списком доступных текстур неба можно ознакомиться на этой странице Valve Developer Wiki. Убедитесь, что используете текстуру _hdr.
Чтобы свет исходил от скайбокса, вам нужно создать объект light_environment. Его расположение роли не играет. Свойства его тоже не сильно отличаются от других объектов освещения. Однако, есть две особенных настройки яркости: Brightness отвечает за направленный свет, идущий от «солнца», а Ambient за свет «в тени» (за пределами углов освещения солнца). Настройки Pitch Yaw Roll отвечают за направление света. Все они достаточно сложны в понимании, но страница на Developer Wiki включает примеры настроек для каждого неба, и вы можете придерживаться их в точности, либо немного изменять под свои нужды.
Компиляция с освещением
К этому времени вы уже должны освоиться с основными настройками компиляции. В окне Run Map выберите Expert для дополнительных настроек, связанных с освещением. На этом виде доступны несколько заранее подготовленных конфигураций с балансом производительности и картинки. Эффект настроек VIS будет рассмотрен в уроке по дистанции обзора.
Как вы могли догадаться по названию, на этом урок по освещению не заканчивается. Во второй части мы рассмотрим масштабирование карты освещения, динамические тени, проецируемые текстуры и много других интересных штук с захватывающими названиями!
Ознакомившись с первой частью урока, вы уже должны иметь представление о базовых возможностях Source в плане освещения. Давайте же рассмотрим и более продвинутые приёмы, которые может предложить движок, включая дополнительные возможности Portal 2, CS:GO и Dota 2.
Настройки карты тонов
Взглянув на наружное освещение своей карты вы заметите, что свет слишком яркий и «сияющий». В эту ловушку попадают многие карты, но, к счастью, есть способ её избежать, используя гениальный объект под названием env_tonemap_controller.
Создайте такой объект. Контроллер карты тонов активируется через входящий сигнал, так что создаём logic_auto, чтобы отсылать сигнал сразу после загрузки карты.
По сути, этот объект изменяет «экспозицию» в глазах игрока. В его свойствах множество опций, но нам понадобится только входящий сигнал SetBloomScale, отвечающий за HDR-эффект «блум». Взгляните на картинку, чтобы оценить разницу в значениях.
Масштаб карты освещения
Мощное сочетание света и тени выведет любую карту на новый уровень, но статичное освещение Source может огорчить вас эффектом «квадратов». Он проявляется из-за низкого разрешения карты освещения – текстуры, на которой сохраняется освещение. К счастью, есть способ увеличить количество таких текстур на поверхностях блоков.
Для примера создадим комнату с освещением light_spot и несколькими блоками для проверки теней. Выберите Toggle texture application и на 3D-виде выделите несколько поверхностей возле источника освещения. Теперь вы можете изменить параметр Lightmap Scale. Меньшие значения эквиваленты повышенному разрешению. Чтобы разница была более наглядной, измените камеру 3D-вида на 3D Lightmap grid.
На изображении показано сравнение двух параметров в игре. Слева установлено значение 16 (по умолчанию), справа 2. Во втором случае тени более чёткие и лучше заметны.
Не увлекайтесь этой опцией, потому что она серьёзно влияет на размер файлов и производительность карты.
Динамическое освещение и тени
До сих пор мы работали только со статичным освещением. Его главное ограничение в том, что свет просчитывается заранее и не реагирует на перемещение объектов или источников света в игре. Динамическое освещение и динамические тени, напротив, просчитываются в игре и меняются в зависимости от окружения.
Благодаря модульной структуре Source поздние игры сильно продвинулись в динамическом освещении, предлагая больше разнообразных настроек при создании карт.
Тени от моделей и shadow_control
В модах к Half-Life 2, CS:S, Portal 1 и Source Base модели и NPC отбрасывали тени с помощью одного базового метода «render to texture», работающего, как показано на картинке.
Все тени отбрасываются в одном направлении, задаваемом объектом shadow_control. Чтобы тени падали под правильным углом, настройки Pitch Yaw Roll в свойствах shadow_control должны совпадать с углами освещения объекта light_environment.
В закрытых помещениях это создаст проблемы, так как тени будут выглядеть нереалистично. В этом случае будет полезно включить параметр Disable Shadows в свойствах каждой модели.
В играх Left 4 Dead, Portal 2, и Alien Swarm тени могут зависеть от ближайшего источника освещения, что задаётся в свойствах shadow_control и соответствующих объектах освещения. Не рекомендуется создавать много таких объектов в одной зоне, иначе при движении объектов и игрока тени будут менять направление случайным образом или вовсе не менять его.
Проецируемые текстуры
Начиная с Portal 2, Valve стала широко использовать проецируемые текстуры для создания интересных сцен. Как следует из названия, эти источники освещения представляют из себя изображения, проецируемые на поверхности блоков и объектов. Есть серьёзное ограничение, заключающееся в том, что Valve не позволяет включать больше одной такой текстуры за раз (моддинг позволяет избавиться от этого ограничения).
Для следующего примера я использовал инструменты Portal 2 Authoring Tools. Создаём объект env_projectedtexture, его можно вращать и передвигать, как и любой источник освещения. Загляните в свойства, тут нам кое-что понадобится. Убедитесь, что параметр Enable Shadows выставлен на Yes и увеличьте значение FarZ, чтобы свет покрывал большее расстояние. Для изменения внешнего вида можете задать другое имя текстуры в поле Texture name, но имейте в виду, что большинство материалов не предназначены для этой цели! Также добавьте на карту обычный объект light.
Поместите на карту несколько prop_weighted_cube; запустив игру, вы должны наблюдать, как их тени отбрасываются динамически вместе с их перемещением. Вы даже можете использовать параметр Parent, чтобы привязать проецируемую текстуру к физической модели и переносить её. В своём примере я также разместил рядом с проецируемой текстурой объект point_spotlight, имитирующий луч прожектора.
Технология проецируемых текстур работала и в ранних играх на Source, включая Half-Life 2, где она применялась для динамического света от фонарика игрока. Однако, их не рекомендуется использовать из-за конфликта с фонариком при одновременном задействовании.
Глобальное динамическое освещение
В Dota 2 и CS:GO есть свои новые объекты для динамического освещения.
В CS:GO используется env_cascade_lighting. Он просто помещается на карту и работает в паре с light_environment, излучая динамический свет из скайбокса. Объект использует так называемую каскадную карту теней, выдавая куда более впечатляющую и реалистичную картинку по сравнению с возможностями ранних игр.
В Dota 2 работает похожий метод: env_global_light. Этот объект работает по аналогии с проецируемыми текстурами и размещается рядом с фиксированной камерой, создавая тени от всех объектов окружения. В новом редакторе «Source 2» доступен предварительный просмотр такого освещения в реальном времени.
Надеюсь, вы узнали кое-что новое об объектах освещения в Source. Каждый из них в подробностях рассмотрен в Valve Developer Wiki. К тому же, карты других моддеров помогут вам лучше разобраться в работе этих инструментов и использовать их эффективнее.
Кубические текстуры и эффект HDR
Ваша карта кажется простоватой? Ей не хватает чего-то особенного? В таком случае засиять по-новому ей поможет High Dynamic Range.
Если объяснять эффект HDR по-простому, то с ним в тёмной комнате ваши виртуальные глаза будут приспосабливаться к освещению после яркого дневного света. Это значит, что тёмные области внутри помещений будут изначально темнее, но постепенно их яркость будет повышаться до комфортной. Динамический баланс яркости добавляет контраста вашей карте, делает её более яркой и живой в целом.
Что такое кубические текстуры и как они с этим связаны?
Кубические текстуры – это технология, применяющаяся движком Source для отражений, также они играют важную роль в работе эффектов HDR, так как должны генерироваться для Low Dynamic Range (не-HDR) и High Dynamic Range. Мы вернёмся к ним чуть позже.
Как устроен HDR
Технический анализ реализации эффекта HDR на карте можно найти на Valve Developer Wiki.
Добавить эффект на вашу карту очень просто ввиду того, что большая часть необходимой работы проходит на этапе рендеринга и после него.
Источники освещения
Первым делом проверяем освещение – в свойствах отвечающих за него объектов есть значения Brightness, Brightness HDR и BrightnessScale HDR.
Brightness – это обычный цвет освещения.
BrightnessScale HDR – на это значение умножается интенсивность HDR-освещения, если оно работает на карте.
Цвет HDR обычно не меняют, но вы можете заметить, что в HDR-режиме всё становится намного ярче, так что можно чуть убавить множитель яркости.
Скайбокс
Здесь всё просто: убедитесь, что ваша текстура скайбокса поддерживает HDR. Большинство скайбоксов от Valve либо поддерживают HDR, либо имеют HDR-версию. Список скайбоксов и дополнительную информацию по ним можно найти на Valve Developer Wiki.
Компиляция HDR
Здесь ваша карта превращается в HDR-карту: просто включите эффект в настройках. Для этого поставьте флажок «HDR» в настройках рендеринга или выберите HDR-профиль в экспертных настройках.
После этого предстоит ещё кое-что сделать, но давайте пока вернёмся к кубическим текстурам.
Кубические текстуры
Точный просчёт отражений может быть непростой задачей, с кучей вычислений, связанных с трассировкой лучей, но к счастью есть уловка с низким уровнем детализации, которого зачастую прекрасно хватает для игр. Большую часть времени вы не замечаете отражений – человеческий мозг воспринимает сверкающее стекло как норму – но их полное отсутствие сразу будет бросаться в глаза.
В Source отражающие/блестящие/глянцевые поверхности выглядят очень неплохо благодаря набору изображений, выступающих основой для отражений. Такие изображения генерируются из того места, где расположен объект env_cubemap. Это значит, что если у вас один такой объект в комнате, то на всех отражениях в ней будет одно и то же. Это приведёт к странным графическим артефактам, поэтому кубическая текстура содержит шесть изображений, представляющих развёртку куба, для формирования полной панорамы комнаты.
Объекты способны вращать кубическую текстуру, выдавая достоверные отражения. Следовательно, вам понадобится отдельная текстура для каждого отдельного пространства, иначе в прицеле снайперской винтовки будет отражаться интерьер помещения, хотя вы находитесь снаружи.
Поэтому, когда вы не используете кубические текстуры, во всех отражениях виден скайбокс, потому что он работает как кубическая текстура по умолчанию (в некоторых играх используется фиолетовый клетчатый узор).
Технический анализ реализации кубических текстур на карте можно найти на Valve Developer Wiki.
Генерирование кубических текстур
Когда ваша карта готова и кубические текстуры размещены по своим местам, вы компилируете её и запускаете в соответствующей игре. Создание кубических текстур происходит в самой игре (тот простой шаг, который после рендеринга). Консольная команда «buildcubemaps» запускает быстрый процесс снятия скриншотов с позиций объектов env_cubemap и сохранения их в BSP-файл карты. После этого ваша карта может существенно располнеть, в зависимости от числа кубических текстур.
В теории этого достаточно для выпуска своей карты с крутыми текстурами и HDR, но на практике не всё так гладко. Hammer начинает генерировать кубические текстуры уже во время рендеринга, но в последних сборках редактора это работает совсем плохо и в результате в файл карты пакуются бесполезные пустые текстуры. Прежде чем генерировать HDR- и LDR-текстуры в игре нам нужно сначала удалить повреждённые данные с помощью программы под названием Pakrat.
Скачав Pakrat, открываем файл своей карты и находим кубические текстуры. Они именуются по шаблонам c123_123_123.vtf и c123_123_123.hdr.vtf. Удаляем их и сохраняем карту. Теперь мы можем генерировать новые текстуры, открыв карту в игре.
Команды консоли
Пошаговая инструкция по удалению старых и созданию новых кубических текстур для HDR и LDR:
Карта готова, если хотите посмотреть на результат, введите «mat_specular 1» и «mat_hdr_level 2». Загрузите другую карту для очистки кэша, затем можете загружать свою.
Для проверки кубических текстур можно использовать команду «impulse 81», если они отображаются неочевидно.
Если ошибки в VRAD исправлены, то некоторые шаги будут излишни, но в любом случае будет полезно узнать весь процесс.
Советы по генерированию кубических текстур
Как правило, HDR играет второстепенную роль – к нему обращаются, добавляя завершающие штрихи к уже готовой карте. Пускай это и так, но HDR способен существенно преобразить схему освещения на вашей карте, так что будьте готовы переделывать её по нескольку раз. Source прекрасно сохранился для своих лет, но местами уже выглядит совсем неброско. Приукрасив карту эффектом HDR, вы поможете игрокам не вспоминать, что перед ними игра 2006 года.
Играем в Source SDK, руководство по маппингу для начинающих
Да, именно играем, а не модим или разрабатываем, смотрим на скриншот ниже. В нашей первой статье мы расскажем, как сделать первые шаги в создании собственных карт с помощью Source SDK.
Создавать игровые уровни сложно, но интересно, и вы не только сами сможете порадоваться (хотя иногда можно и огорчиться) результатам своих трудов, но и возможно их оценят тысячи других игроков по всему свету.
Этот урок будет сфокусирован на создании однопользовательских карт для Half-Life 2, но полученные навыки пригодятся вам и в работе над любыми другими играми, от Garry’s Mod до Portal 2. В руководстве будут затронуты некоторые моменты работы с Source SDK, изменившиеся после ввода системы SteamPipe.
Приступаем
Для первого эксперимента с дизайном уровней давайте сразу отправимся в редактор. Инструменты Source SDK больше не запускаются через Steam. Вместо этого нужно зайти в папку Steam\SteamApps\common и найти игру, для которой вы хотите сделать карту. В нашем случае это папка half-life 2, далее заходим в папку bin. Среди прочего вы найдёте здесь программы, являющиеся частью SDK. Если запускать через стим, то SDK может не очень правильно все переварить и постоянно выдавать ошибки. Там все дело в правильных путях к подгружаемым файлам, опустим этот момент, все прекрасно работает при запуске hammer в папке игры.
Запускаем hammer.exe (на будущее добавьте ярлык на рабочий стол). Вы уже могли слышать про Hammer – это редактор движка Source, в котором и создаются все карты. Здесь вы проведёте большую часть времени, работая над картой или модом. С первого взгляда такого не скажешь, но Hammer – очень мощная утилита.
Создаём новую карту выбором пункта меню File>New. Экран разделится на четыре части. В левой верхней части расположен 3D-вид, где можно перемещаться по карте, словно в режиме noclip. Остальные части – это 2D-виды, где правая верхняя показывает карту сверху, а нижние с боковых сторон.
Инструменты
Для начала немного занудства, а немного ниже начнем уже разбирать примеры. В правой части окна редактора вы можете заметить набор значков. Это инструменты, с которых вы и будете начинать работу.
Selection Tool
Этот инструмент используется преимущественно для выделения блоков, которые нужно переместить или изменить их форму. Блок можно выделить, нажав на его грань или на перекрестье в центре, также можно обвести его рамкой. Выделенный блок помечается красным цветом. Чтобы снять выделение, просто кликните на свободном пространстве.
Magnify
Это не особо важный инструмент. Он используется для масштабирования 2D-видов. Для этого удобнее пользоваться колёсиком мыши. Если по какой-то причине на вашей мыши нет колёсика, то он вам пригодится.
Camera
Тоже далеко не самый важный инструмент. Он помещает на один из 2D-видов синий круг, олицетворяющий камеру. При перемещении камеры на 3D-виде, синие круги на плоских видах тоже будут двигаться, чтобы вы понимали, где находитесь.
Entity Creation Tool
Этот инструмент помещает на карту объект (entity). Мы подробно рассмотрим его работу в дальнейших уроках, сейчас просто знайте, что с его помощью создаются, к примеру, стулья и столы.
Block Creation Tool
Этот инструмент вам придётся использовать очень часто. Пожалуй, в Hammer он самый важный. Он создаёт блоки – то, что у вас будет стенами, полом, потолком и т.д. Перетащите инструмент на 2D-вид, там он отобразится белым пунктирным контуром. Выбрав нужную позицию для блока, жмите Enter для его создания.
Texture Application Mode
Этот инструмент нужен для наложения нескольких текстур на один блок. Выбор инструмента откроет вот такое меню:
В следующих уроках я подробнее разберу этот инструмент, так что не пугайтесь обилию кнопок, там всё не так уж сложно.
Apply Current Texture to Selection
Не совсем понимаю, для чего здесь этот инструмент. Вообще никогда им не пользовался. Он накладывает текущую текстуру на всё, что у вас выделено.
Decal Appliance Tool/Overlay Appliance Tool
Оба инструмента накладывают на ваши блоки 2D-изображения – кровь, грязь, граффити и т.д. Разница в том, что используя второй, вы сможете изменять их размер, но для обработки потребуется больше памяти.
Clipping Tool
Этот инструмент используется для отсечения части блока. На картинке ниже показан блок и голубая линия с белыми квадратами на концах.
Линия – это инструмент отсечения. Для её создания просто перенесите инструмент на желаемый 2D-вид. Белая часть блока – та, что сохранится. Когда вас устраивает результат, нажимайте Enter.
Vertex Manipulation Tool
Этот инструмент нужен для создания сложных форм путём манипулирования вершинами блоков. Выделите блок, затем выберите этот инструмент. Должно выглядеть примерно вот так:
Жёлтые квадраты трогать не советую, для начала будет достаточно белых. Поэкспериментируйте с перемещением квадратов. В дальнейших уроках я подробнее расскажу об этом инструменте. Для завершения нажмите на инструмент выделения. Попробуйте реалистично исказить форму. Затем превратите блок во что-нибудь сумасшедшее, что вызовет ошибку.
Блок, не приводящий к ошибке:
Блок, приводящий к ошибке:
Базовые конструкции
Выбираем инструмент Block Tool в левой панели. Для создания блока жмём и растягиваем конструкцию на виде сверху. Заметьте, что его границы привязываются к сетке, это позволяет избежать нежелательных зазоров между разными блоками. Создаём блок 512×512 единиц. Вы увидите, как он появится на двух нижних видах.
Сделать сетку помельче можно, нажав на значок Smaller Grid в верхней панели. Уменьшите высоту блока с помощью боковых видов (16 единиц будет достаточно) и нажмите Enter. Чтобы посмотреть на своё творение в 3D-виде, наведите на него курсор и нажмите Z – так вы сможете передвигаться клавишами WASD, а мышью поворачивать камеру. Вы должны увидеть блок со стандартной текстурой (при этом нужно переключиться в вид с текстурами, нажав на 3D Textured в меню View), как показано в правой части экрана.
Попробуйте проделать то же самое для создания стен своей комнаты. Обычная стена имеет высоту 128 единиц и толщину 8-16 единиц. (Размер большинства текстур 128×128, и таким образом мы убедимся в их правильном наложении. Кроме того, для движка предпочтительнее размеры блоков в виде степени с основанием 2, но это не жёсткое правило). После этого создайте потолок, перетащив пол вверх с зажатой клавишей Shift на одном из боковых видов.
На этом этапе я должен указать на первое правило Hammer: сохраняйтесь чаще! Программа славится вылетами в самый неподходящий момент, и даже лучшие из нас тратили впустую по нескольку часов работы. Ctrl+S – это бесценная комбинация клавиш. Для больших карт даже рекомендуется сохранять несколько резервных копий на случай потери или повреждения данных.
Текстуры
Оглядите получившуюся комнату 3D-камерой. Вы заметите, что все блоки выглядят одинаково, как кирпичная стена. Это далековато от идеала, так что взглянем на меню текстур в правой части.
В правой части редактора вы должны видеть вот такое меню:
Нажмите Browse для открытия списка всех текстур из игры. Вы сможете выбрать практически любую, но при создании раннего прототипа люди обычно останавливаются на «мерных» текстурах, предоставленных Valve и позволяющих оценить масштаб карты и убедиться в должном положении текстур. Наберите «measure» в поле Filter и двойным кликом выберите dev_measurewall1101c (это текстура с очертанием персонажа игрока).
Теперь вы видите эту оранжевую текстуру в правой части экрана. Чтобы наложить её на свои стены, поочерёдно выделите их, удерживая Сtrl, затем нажмите Apply Current Texture в левой панели.
Если хотите наложить текстуру только на одну поверхность блока, нажмите Toggle Texture Application, открыв небольшое окно. Теперь выберите пол комнаты в 3D-виде и, нажав Browse, выбирайте другую текстуру. В 3D-виде показывается, как изменилась только одна из сторон блока. Это окно также пригодится для выравнивания и поворота текстур.
Каждая из текстур соответствует определённому материалу из игры, так что металлическая текстура будет издавать звенящий звук при ходьбе или выстрелах по ней.
Переберите несколько вариантов текстур, познакомьтесь с настройками окна и давайте двигаться дальше.
Объекты
Статичные стены – это хорошо, но если вы хотите хоть какой-то интерактивности, вам понадобятся объекты. Объекты бывают двух типов: блоковые (создаются из уже знакомых вам блоков) и точечные (point entities). Давайте остановимся на вторых.
Нажмите на значок под названием Entity Tool. В правой части экрана найдите два выпадающих списка. Второй из них включает в себя множество объектов, которые вы можете поместить на карту. В этом списке вы, помимо всего прочего, найдёте врагов (npc_zombie), предметы (weapon_rpg) и спецэффекты (env_spark). Не поддавайтесь искушению пробовать каждый из них и найдите info_player_start. Этот объект определяет точку появления игрока на карте. Перейдите на 3D-вид и расположите где-нибудь зелёного Фримена (этот объект тоже помогает оценить масштабы карты). Как и блоки, объекты можно двигать по карте на 2D-видах (а вот размеры изменять нельзя). Чтобы поворачивать уже выделенный объект, нажмите на него ещё раз.
Если хотите разнообразить и расширить карту, добавьте ещё несколько комнат и коридоров.
Начнём с простого: разместим на карте объект prop_static. Он появится в виде маленького куба и мы должны назначить ему модель. Откройте свойства объекта двойным кликом на 3D-виде или выбрав Properties на 2D-виде. В этом меню меняются различные опции всех объектов, включая входные и выходные данные, контролирующие их функции и необходимые для скриптовых событий.
Пока что выберите World Model и нажмите Browse: здесь вы увидите все модели, существующие в игре. Как и в случае с текстурами, список можно фильтровать по названию. Например, фильтр «foliage» покажет деревья и различные растения для обустройства уровня за пределами помещения. Попробуйте подобрать другие ключевые слова для поиска нужных вам моделей. Вкладка Info покажет поддерживаемый тип модели (static, physics или dynamic). Когда найдёте, что вам нужно, расположите объект на карте с помощью 2D-видов.
Таким же образом добавьте несколько моделей prop_physics – к примеру, бочек, которые можно расшвыривать гравипушкой (в Hammer она называется weapon_physcannon). Следите, чтобы добавленные модели нигде не пересекались с блоками.
Компиляция
Прежде, чем компилировать уровень, его нужно проверить на наличие «утечек», то есть мест, где можно попасть в пустоту за пределами карты через какой-либо из объектов. Есть несколько способов обнаружить утечки, но на маленьких картах они должны быть сразу заметны. Утечки не помешают запуску карты (как это происходит при создании карт для, например Quake3), но могут привести к нежелательным последствиям.