Карты-кубы
Чтобы движок Source правильно показывал многочисленные отражающие материалы, они должны быть объединены с внешними данными. Эти данные хранятся в виде карты-куба (cubemap), то есть кубической текстуры, которая представляет собой трёхмерное изображение определённой области. Для этого движок Source использует точечные сущности env_cubemap в качестве образцов, с помощью которых создаёт текстуры и сохраняет их в файл с расширением ".bsp". При обработке зеркальных и других окружающих материалов он использует кубы для получения более точного окружения. Другими словами, куб создаёт текстуры, которые будут моделировать отражающую поверхность.
 Примечание:Для создания карты-куба (cubemap) в
Примечание:Для создания карты-куба (cubemap) в  Counter-Strike: Global Offensive в параметрах запуска игры необходимо добавлять -insecure.
Counter-Strike: Global Offensive в параметрах запуска игры необходимо добавлять -insecure.  Примечание:
Примечание: Portal 2 и
Portal 2 и  Team Fortress 2 имеют проблемы с построением кубов. Они описаны в конце статьи.
Team Fortress 2 имеют проблемы с построением кубов. Они описаны в конце статьи. Размещение
Чтобы обозначить область, которую охватит куб, просто вставьте на карту сущность env_cubemap. Когда карта скомпилируется программой VBSP, поверхности геометрии мира автоматически свяжут себя с ближайшей env_cubemap, и будут использовать рождённый ей куб. Поверхности связывают себя с ближайшей env_cubemap (однако, в свойствах куба можно задать любую привязываемую поверхность); движущиеся сущности будут автоматически выбирать нужный куб. Важно, чтобы положение env_cubemap было эстетичным и производительным.
Карты-кубы используются для разных ситуаций, и должны располагаться соответствующе. Одни нужны для отображения статической геометрии мира. Другие - для отображения сущностей игроков, включая ботов (NPC). Третьи нужны для отображения всевозможных неигровых энтить. Каждой из этих целей соответствует оптимальное расположение env_cubemap, дабы обеспечить максимальную отдачу. Вот несколько простых эвристических правил, которым необходимо следовать:
- Если куб предназначен для NPC или игрока, env_cubemap следует размещать на уровне головы (как правило, 64 юнита). Таким образом, она наиболее точно передаст мир с точки зрения стоящего.
- Если куб предназначен для статичной геометрии мира, то справедливым, как правило, будет расстояние в 16 юнитов от всех поверхностей.
- В каждой зоне с визуальным контрастом должна быть своя карта-куб. Коридор с ярко-жёлтым светом требует своей env_cubemap, особенно, если она расположена рядом с комнатой, где горит тускло-голубой свет. Если в одном их этих мест не будет env_cubemap, то отражения и блики на сущностях и геометрии будут моделироваться неправильно.
Построение кубов
Когда карта будет скомпилирована и освещена VBSP и VRAD (соответственно), можно создавать кубы. После загрузки карты, введите в консоли команду buildcubemaps.  Начнётся процесс построения, который займёт некоторое время, в течение которого вы сможете увидеть каждую из шести граней кубов. После завершения, карту или игру нужно перезагрузить, чтобы кубы правильно применились ко всем поверхностям.
 Примечание:До запуска команды
Примечание:До запуска команды buildcubemaps, установите значение mat_specular в 0, иначе это приведёт к неправильным отражениям! Примечание:Созданные кубы сохраняются в bsp файл, который помещается в папку игры, а не в то место, где вы скомпилировали карту.
Примечание:Созданные кубы сохраняются в bsp файл, который помещается в папку игры, а не в то место, где вы скомпилировали карту. Примечание:Если после создания кубов вы переименуете bsp файл, то их придётся строить заново.
Примечание:Если после создания кубов вы переименуете bsp файл, то их придётся строить заново.HDR
Если карта скомпилирована с включённой опцией HDR в программе VRAD, кубы необходимо построить как в режиме HDR, так и LDR (не-HDR). Создание кубов только в одном из этих режимов будет означать, что кубы не представлены в другом режиме. Информацию о том, как строить кубы под HDR см. в Основах освещения HDR.
Кубы должны быть построены для карт LDR и HDR. Предположим, вы уже находитесь в режиме HDR и загрузили свежескомпилированную карту (в программе VRAD должен быть включён параметр '-both'). Перейдите в консоль и выполните следующие команды:
buildcubemaps mat_hdr_level 0 (для перехода в LDR) restart (для перезагрузки карты) buildcubemaps mat_hdr_level 2 (для перехода обратно в HDR) restart (для перезагрузки карты)
 Примечание:Это не относится к CS:GO, т.к. HDR не может быть отключён.
Примечание:Это не относится к CS:GO, т.к. HDR не может быть отключён.Игры Team Fortress 2 / Source 2012+
 Team Fortress 2  по-умолчанию не применяет кубы к отражающим поверхностям. (Аналогичные проблемы также имеются и в некоторых установках
Team Fortress 2  по-умолчанию не применяет кубы к отражающим поверхностям. (Аналогичные проблемы также имеются и в некоторых установках  Portal 2, когда кубы просто не появляются). Все текстуры светятся чёрно-розовыми шашечками. Если вы построите кубы, и один из них увидит большую сверкающую поверхность, то зафиксирует её в 6 изображениях. Это значит, что некоторые объекты будут бликовать так, будто рядом с ними находится розовая и чёрная сверкающая текстура. Для решения проблемы, кубы нужно строить с отключенной зеркальностью. Чтобы построить кубы для карты TF2, загрузите её через "Create Server".  Затем, откройте консоль и выполните следующие команды:
Portal 2, когда кубы просто не появляются). Все текстуры светятся чёрно-розовыми шашечками. Если вы построите кубы, и один из них увидит большую сверкающую поверхность, то зафиксирует её в 6 изображениях. Это значит, что некоторые объекты будут бликовать так, будто рядом с ними находится розовая и чёрная сверкающая текстура. Для решения проблемы, кубы нужно строить с отключенной зеркальностью. Чтобы построить кубы для карты TF2, загрузите её через "Create Server".  Затем, откройте консоль и выполните следующие команды:
Создание кубов только для LDR или HDR:
mat_specular 0 buildcubemaps mat_specular 1 disconnect sv_cheats 1 mat_reloadallmaterials sv_cheats 0
При создании кубов для HDR требуется, чтобы вы повторили эти шаги после загрузки карты с включённым HDR.
 Примечание:Если при постройке кубов игра вылетает, то скорее всего вы установили слишком низкое разрешение экрана. Убедитесь, что высота и ширина экрана игры более 512 пикселей. Это означает, что минимальное стандартное разрешение должно составлять 800X600. Разрешение можно поменять на вкладке Видео в меню игры Параметры.
Примечание:Если при постройке кубов игра вылетает, то скорее всего вы установили слишком низкое разрешение экрана. Убедитесь, что высота и ширина экрана игры более 512 пикселей. Это означает, что минимальное стандартное разрешение должно составлять 800X600. Разрешение можно поменять на вкладке Видео в меню игры Параметры. Примечание:Если после построения кубов вы переименуете файл .bsp, они перестанут работать и куб неба сбросится в стандартные настройки. Каждый раз после переименования карты кубы нужно создавать заново. Однако, в этом случае старые кубы не удаляются, что приводит к разрастанию размера файла. Если вы желаете избежать проблем с загрузкой вашей карты, не переименовывайте её после компиляции.
Примечание:Если после построения кубов вы переименуете файл .bsp, они перестанут работать и куб неба сбросится в стандартные настройки. Каждый раз после переименования карты кубы нужно создавать заново. Однако, в этом случае старые кубы не удаляются, что приводит к разрастанию размера файла. Если вы желаете избежать проблем с загрузкой вашей карты, не переименовывайте её после компиляции. Примечание:В некоторых играх на многопользовательских картах перед запуском команды
Примечание:В некоторых играх на многопользовательских картах перед запуском команды buildcubemaps  потребуется включить читы (sv_cheats 1).Кубы после обновления SteamPipe
В связи с обновлением SteamPipe, возникла проблема построения кубов без видимых результатов. Согласно ветке форума, проблему можно решить следующим образом:
- Поместите энтити env_cubemap в доступных местах вашей карты, и скомпилируйте её. Важно: Название карты должно быть не длиннее 30 символов, (включая расширение .bsp), иначе .bsp не запишется! Также, не меняйте название карты после создания кубов, иначе они не будут работать!
- Возьмите ваш любимый редактор файлов .bsp (Например, VIDE или Pakrat. Работа с этими инструментами не входит в данную статью.), и загрузите ваш .bsp.
- Удалите все файлы "Texture" или "Texture (HDR) ". (Не файлы "Material", только .vtf!)
- Сохраните отредактированный .bsp.
- Скопируйте эту карту назад в каталог карт вашей игры.
- Откройте консоль и введите: "map -название карты-". (В моём случае, "ttt_mars_colony_cubemap".)
- В игре, снова откройте консоль и введите это: "mat_specular 0" и "buildcubemaps".
- Подождите, пока построятся кубы, и снова включите зеркальность с помощью "mat_specular 1", а затем перезагрузите ваши материалы командой "mat_reloadallmaterials".
 Примечание:Если вы хотите упаковать в карту пользовательский контент, сделайте это после создания кубов.
Примечание:Если вы хотите упаковать в карту пользовательский контент, сделайте это после создания кубов.
Source Filmmaker
Сегодня создание кубов в Source Filmmaker не работает, и отрисовывает только одну поверхность с одним кубом. Чтобы правильно создавать кубы в Source Filmmaker, скопируйте файл карты вместе с принадлежностями (текстурами, моделями, и т.д.) в  Alien Swarm. Движок не требует перекомпиляции карты, достаточно её перенести. Загрузите вашу карту в Alien Swarm и введите в консоль команду "buildcubemaps". После отрисовки поверхностей, ваша карта будет содержать кубы, которые можно скопировать обратно в Source Filmmaker. Это работает только с новыми версиями карт, при загрузке карт из
Alien Swarm. Движок не требует перекомпиляции карты, достаточно её перенести. Загрузите вашу карту в Alien Swarm и введите в консоль команду "buildcubemaps". После отрисовки поверхностей, ваша карта будет содержать кубы, которые можно скопировать обратно в Source Filmmaker. Это работает только с новыми версиями карт, при загрузке карт из  TF2 или Garry's Mod игра будет вылетать.
TF2 или Garry's Mod игра будет вылетать.
Откройте 'не скопированную' версию в Хаммер и постройте её с помощью дополнительного режима поиска 'чужих' (относительных) путей содержимого sfm. todo: абсолютные пути.
Пример для 'общего' расположения:
	"SearchPaths"
	{
		"Game"	"|gameinfo_path|."
		"Game"	"swarm"
		"Game"	".\..\SourceFilmmaker\game\tf_movies"
		"Game"	".\..\SourceFilmmaker\game\tf"
		"Game"	".\..\SourceFilmmaker\game\usermod"
		"Game"	".\..\SourceFilmmaker\game\hl2"
		"Game"	"swarm_base"
		"Game"	"platform"
	}
Portal 2
Если вы хотите создавать кубы для карт, расположенных в "Portal 2/portal2/maps" (Hammer копирует карты туда по-умолчанию), Portal 2 вылетит, потому что ищет карты в разделе "portal2_dlc2/maps". Так что, если вы хотите избежать сбоя, скопируйте вашу карту в "Portal 2/portal2_dlc2/maps" (или каталог карт вашего мода), перезагрузите её и создайте кубы снова. Это должно работать.
Тестирование
Лучше всего карты-кубы тестировать с помощью консольной команды impulse 81. Введите её в консоль. Затем, впишите give weapon_cubemap. 
 Примечание: Можно привязать эти команды на разные клавиши, чтобы не вводить их каждый раз.
Примечание: Можно привязать эти команды на разные клавиши, чтобы не вводить их каждый раз.Это заменит текущую модель оружия с "cubemap weapon" на несколько сфер, каждая со своей отражающей поверхностью. Путешествуя по карте, вы увидите, где и как применяются кубы в пространстве, а также, на сколько верно куб описывает зону освещения и цвета.
 Примечание:Вы можете скопировать cubemap weapon  из Steam\SteamApps\common\Half-Life 2\hl2\models\shadertest\envballs.mdl и добавить в свой мод, если он этого не имеет.
Примечание:Вы можете скопировать cubemap weapon  из Steam\SteamApps\common\Half-Life 2\hl2\models\shadertest\envballs.mdl и добавить в свой мод, если он этого не имеет. Примечание:Если перекомпилировать карту без перезапуска игры, кубы от предыдущей версии останутся в кэше, создавая иллюзию, что их не надо создавать заново. Этих кубов нет в карте, что покажет запуск карты на другом компьютере или её перезагрузка. Каждая новая компиляция стирает упакованные материалы, включая кубы.
Примечание:Если перекомпилировать карту без перезапуска игры, кубы от предыдущей версии останутся в кэше, создавая иллюзию, что их не надо создавать заново. Этих кубов нет в карте, что покажет запуск карты на другом компьютере или её перезагрузка. Каждая новая компиляция стирает упакованные материалы, включая кубы.Производительность
Сущность env_cubemap позволяет задавать разрешение связываемой с ней текстуры. С одной стороны, чем больше разрешение, тем точнее и “резче”  результат, но с другой – сильнее расход памяти. В основном, кубы должны иметь разрешение по умолчанию (32x32 пикселя для каждой поверхности). Обычно это дает удовлетворительный результат. Некоторые исключения возможны для областей с высокой отражающей способностью или, например, для детализации определенных частей действия.
Поскольку поверхности через кубы должны соответствовать своему окружению, использование чрезмерного числа кубов на небольшой площади может привести к заметным визуальным разрывам во время перемещения по карте. Для участков с высокой отражающей способностью правильнее будет разместить один куб по цетру, и не более. Это позволит избежать швов или растрескиваний во время движения картинки.
Чтобы определить вес кубов в той или иной зоне, загляните в категорию World Rendering с помощью консольной команды +showbudget. Если категория регистрирует необычайно высокую загрузку, значит в зоне слишком много кубов. Простой сценарий решения проблемы – скрыть все кубы в программе Hammer, перекомпилировать и запустить карту. Если производительность стала заметно лучше, значит надо уменьшить плотность или разрешение кубов. 
Наконец, проверить загрузку можно, отключая кубы командой mat_specular 0, но это требует подтверждения.
Баги
 Баг:В Team Fortress 2 по-умолчанию нет кубов, поэтому все отражающие поверхности будут показывать отсутствующий материал текстур, напоминающих чёрно-розовые шашечки. Во избежание проблемы, создавайте кубы вручную.  [нужно проверить в ?]
Баг:В Team Fortress 2 по-умолчанию нет кубов, поэтому все отражающие поверхности будут показывать отсутствующий материал текстур, напоминающих чёрно-розовые шашечки. Во избежание проблемы, создавайте кубы вручную.  [нужно проверить в ?] Баг:Создание кубов в Portal 2 вызовет ошибку игры, если карта будет загружаться из папки по-умолчанию common/portal 2/portal2/maps. Этот сбой возникнет при перезапуске карты после создания кубов. Во избежание ошибки, в строке 'Place compiled maps'  закладки Build Programs впишите 'common/portal 2/portal2_dlc2/maps', затем перекомпилируйте карту, после чего создайте кубы.  [нужно проверить в ?]
Баг:Создание кубов в Portal 2 вызовет ошибку игры, если карта будет загружаться из папки по-умолчанию common/portal 2/portal2/maps. Этот сбой возникнет при перезапуске карты после создания кубов. Во избежание ошибки, в строке 'Place compiled maps'  закладки Build Programs впишите 'common/portal 2/portal2_dlc2/maps', затем перекомпилируйте карту, после чего создайте кубы.  [нужно проверить в ?]




























