Ru/Menu Background Map

Level DesignModding
Фоновые карты — это трёхмерные динамические задние планы, которые появляются за игровым меню при запуске игры. Это компилированные BSP-карты, как обычные. Обычно фоновые карты используют для однопользовательских модификаций (как ), но их можно использовать для любых других. Фоновая карта может меняться, как только игрок проходит главу, в зависимости от настроек мода
==Создание фоновой карты==
Фоновые карты могут быть созданы как диорамы. Примитивы на карте должны быть жёстко лимитированы для того, чтобы они были видны только в камере. Цель — использовать как можно меньше геометрии, чтобы карта была меньше по размеру и загружалась быстрее.
Чтобы создать фоновую карту:
* Создайте обычные примитивы на сцену, которую вы хотите добавить на фоновую карту. Они не должны содержать утечек и должны быть герметичны как обычный игровой уровень. Добавьте освещение и материалы, если нужно. Вы можете начать с уже существующего уровня — просто удалите или спрячьте ненужную геометрию и энтити. Все ненужные элементы желательно удалить.
* Добавьте (для многопользовательских игр) или (для однопользовательских игр) на карту. Их расположение на карте не важно, главное, чтобы они не висели в воздухе, иначе игрок упадёт и получит повреждения.
* Добавьте на карту энтити в ту позицию, откуда вы бы хотели видеть карту. Задайте ей подходящее имя (например:"viewcontrol_background1").
* В настройках отключите флаги Start at Player / Follow Player / Interruptable by Player и включите Freeze Player / Infinite Hold Time / Snap to goal angles / Make player non-solid.
* Добавьте энтити . Это точка, на которую будет смотреть камера после загрузки карты. Задайте ей имя, похожее на имя камеры (например: "target_background1" ).
* Выберите point_viewcontrol. Задайте параметру Entity to look at (Энтити, на которую надо смотреть) значение info_target, которую вы создали как целевую энтити.
* Как только фоновая карта загрузилась, point_viewcontrol должна быть активирована. Самый лёгкий способ — . Добавьте вывод OnMapSpawn, который вводит в point_viewcontrol параметр Enable (Включено).
* Вы можете задать другие выводы для logic_auto для событий, которые должны совершаться после загрузки карты, такие как мерцание ламп, передвижение , воспроизведение звуков и т.п. Будьте аккуратны с наполнением карты. Карты на заднем плане меню должны быть хорошо оптимизированы, должны быстро загружаться и не сильно отвлекать от игрового меню
* Сохраните и скомпилируйте карту также, как и с обычной игровой картой. Если вы хотите заменить готовую фоновую карту , прочитайте пункт "Замена фоновых карт Half-Life 2" внизу, чтобы убедиться в правильности названия карты.
==Тестирование фоновой карты==
Чтобы проверить фоновую карту, запустите игру без прямого запуска карт. После загрузки, включите консоль разработчиков и введите:
map_background <mapname>
<mapname> — имя вашей фоновой карты. Как только она загрузится, поверх неё появится игровое меню.
После тестирования на работоспособность фоновой карты, вы можете вернуться в редактор, изменить её и улучшить. Вы, возможно, захотите добавить больше деталей, изменить расположение камеры или её цели. Просто скомпилируйте карту заново и используйте map_background для просмотра изменений. После того, как вы настроите финальный облик карты, хорошо бы уровень по максимуму, например применив материал toolsnodraw на те грани, которые не видны камере. Опять же, цель — сделать фоновую карту настолько лёгкой, насколько возможно, чтобы она быстро загружалась и рендерилась.
См. maps\sdk_background.vmf для примера фоновой карты.
==Материал фоновой карты==
Также важно создать материалы заднего плана для вашей фоновой карты. Это изображение появляется как только вы запускаете игру, но фоновая карта ещё не загрузилась. В Half-Life 2 это размытый скриншот фоновой карты (чтобы создать его, используйте размытие по Гауссу на 30 пикс. для картинки 1280px). Когда карта загрузилась, экран плавно переходит из статичной картинки на фоновую карту.
Для карты необходимы два материала:
<мод>\materials\console\<map name>.vmt
<мод>\materials\console\<map name>_widescreen.vmt
Например, если ваша фоновая карта называется sdk_background.bsp, вам нужны эти два материала:
hl2\materials\console\sdk_background.vmt
hl2\materials\console\sdk_background_widescreen.vmt
Обычно фоновыми материалами являются размытые скриншоты фоновой карты разрешением 1024x1024.
Убедитесь в том, что размер ваших изображений 1024x1024. Главная хитрость в том, как заставить изображение корректно отображаться на мониторах с разными соотношениями сторон (4:3, 16:9, или 16:10), чтобы сжать изображение исходя из разрешения с конечным соотношением сторон.
* На мониторах 4:3 создайте изображение размером 1280x1024 и измените размер на 1024x1024.
* На широкоэкранных мониторах создайте изображение размером 1280x800 и также измените его размер на 1024x1024
Вы можете задать клавишу для создания скриншотов в меню Настройки → Клавиатура, когда вы запустили игру. По умолчанию это кнопка F5, и изображение сохраняется в формат .JPG в папку <мод>/screenshots. Вы также можете к кнопке консольную команду screenshot, которая сохраняет в формат .TGA.
Файл фонового материала .vmt может выглядеть так:
"UnlitGeneric"
{
	"$basetexture" "console/sdk_background"
	"$vertexcolor" 1
	"$vertexalpha" 1
	"$ignorez" 1
	"$no_fullbright" "1"
	"$nolod" "1"
}
Для дополнительной информации по созданию материалов, прочтите статью .
Пример фоновых материалов для карты sdk_background можно найти по этому адресу:
steamapps\common\sourcesdk_content\hl2\materialsrc\console (для исходных .TGA)
half-life 2\hl2\materials\console (для .VMT и .VTF файлов).
==Скрипты для привязки фонов к главам в ваших модификациях==
Как только вы создали фоновую карту, она должна быть вставлена в правильный файл скрипта для того, чтобы она автоматически отображалась во время нужной главы.
В файле <мод>\scripts\ChapterBackgrounds.txt фоновые карты соотносятся с определёнными главами игры. Это список всех игровых глав и их фоновых карт, которые должны загружаться, как только игрок дойдёт до следующей главы.
Вот пример файла ChapterBackgrounds.txt из Half-Life 2:
"chapters"
{
	1	"background01"
	2	"background01"
	3	"background02"
	4	"background02"
	5	"background03"
	6	"background03"
	7	"background04"
	8	"background04"
	9	"background05"
	9a	"background05"
	10	"background06"
	11	"background06"
	12	"background07"
	13	"background07"
}
<мод>\scripts\ChapterBackgrounds\titles.txt содержит номера глав. Цифровое значение создаётся для каждой главы игры. Эти ключевые значения могут быть помещены в "Chapter Title Message" (Отображаемое название главы) в Map Properties (Свойства карты) (также называемой "worldspawn") через меню Map в редакторе . Реальный текст, который вы видите зависит от выбранного языка из этих:
hl2\resource\hl2_english.txt
hl2\resource\hl2_french.txt
hl2\resource\hl2_german.txt
...
Эти файлы содержат реальные названия глав на разных языках. Текст, введённый здесь, будет отображаться в игре везде, где есть название главы.
==Проверка файла chapterbackgrounds.txt==
Как только вы внесли изменения в файл chapterbackgrounds.txt, вы можете проверить фоновые карты, используя консольную команду sv_unlockchapters. Эта команда отвечает за то, какие главы игры вы уже прошли, и содержит номер той главы, фоновую карту которой вы хотите посмотреть.
Чтобы выбрать фоновую карту главы, надо:
# Сохранить файл chapterbackgrounds.txt в папку <мод>\scripts
# Запустить игру
# Открыть консоль разработчика
# Ввести sv_unlockchapters n, где n — номер фоновой карты в файле chapterbackgrounds.txt, которую вы хотите посмотреть
# Перезапустить игру, и тогда отобразится выбранная карта.
==Замена фоновых карт Half-Life 2==
Если вы хотите заменить встроенные фоновые карты Half-Life 2 своими, просто создайте фоновую карту и материал и замените название карты для определённой главы своим. Имена фоновых карт Half-Life 2 есть в файле chapterbackgrounds.txt:
"chapters"
{
	1	"background01"
	2	"background01"
	3	"background02"
	4	"background02"
	5	"background03"
	6	"background03"
	7	"background04"
	8	"background04"
	9	"background05"
	9a	"background05"
	10	"background06"
	11	"background06"
	12	"background07"
	13	"background07"
}
Например, если вы хотите заменить первую фоновую карту, просто назовите вашу карту background01. Чтобы заменить фоновую карту главы 10, переименуйте вашу карту в background06
==Отмена загрузки фоновых карт==
Если вы хотите использовать для фона текстуру (без загрузки карты), просто из стандартного файла <мод>\cfg\valve.rc удалите либо закомментируйте строку startupmenu в конце, чтобы ваш файл выглядел примерно так:
 // загрузить базовый конфиг
 // exec default.cfg
 // запустить отдельный контроллер
 exec joystick.cfg
 // запустить пользовательский конфиг, если есть
 exec autoexec.cfg
 //
 // stuff command line statements
 //
 stuffcmds
 // запустить фоновую карту. Удалите, если используете статичные изображения вместо фоновых карт
 // startupmenu