Как компилировать карту в bsp
Сохранение и компиляция
Карта должна быть компилирована в формат, который может прочесть игровой движок перед тем, как можно будет начать игру. Этот процесс включает в себя расчет видимости, так что на компьютере можно быстрее рассчитывать те части карты, которые нам необходимы в первую очередь, и рассчитать статический свет, исходящий от нашего светового энтити.
Сохранение
Компилирование
Вы сохранили карту в формат VMF, который представляет из себя текст. Чтобы загружать карту в игре, вам необходимо откомпилировать ее. Компиляция преобразовывает сырой VMF файл в бинарный BSP формат. В этом процессе обрабатывается геометрия карты, рассчитывается освещение и тени, за каждое действие отвечают программы компиляции: BSP, VIS и RAD.
Окно Compile Process будет показывать прогресс компиляции (вы можете остановить процесс, если он занимает слишком долгое время). Когда компилирование завершено, игра автоматически запуститься и загрузит вашу карту.
Поздравляем, вы сделали вашу первую карту!
Результат
Это скриншот сделанной карты, запущенной в Half-Life 2: Deathmatch. Здесь не на что смотреть, но теперь вы знаете необходимые основы, чтобы начать создавать вашу собственную карту.
Как компилировать карту в bsp
Надеюсь, вы уже скачали ZHTL-утилиты (Zoner Half-Life Tools). Теперь давайте разберемся что же это такое:
ZHLT-утилиты представляют собой 4 программы для компиляции карты, которые должны быть последовательно запущены из командной строки. Давайте рассмотрим их:
1. Компиляция посредством Worldcraft
В этом окне по умолчанию указаны 8 строк с различными командами и переменными. Все переменные начинаются с символа доллара ($). Значения переменных Worldcraft вы указывали при настройке редактора, на вкладках Build Programs и Game Configurations окна Options. Давайте рассмотрим все имеющиеся переменные:
Теперь давайте рассмотрим оставшиеся опции в окне компиляции Run Map (Advanced):
Теперь, после того как все настроено, смело жмите кнопку Go!
Описанный выше способ компиляции карты посредством Worldcraft является не самым лучшим выбором, так как радактор загружает в память вашу карту, текстуры, да и сам использует немало ресурсов. А компиляторам, как не трудно догадаться, так же требуется огромное количество памяти, поэтому компиляция будет проходить намного медленнее.
Сразу стоит сказать, что данный способ компиляции самый быстрый, поскольку не расходуются системные ресурсы на выполнение дополнительных программ.
hlcsg.exe mapname.map
hlbsp.exe mapname.map
hlvis.exe mapname.map
hlrad.exe mapname.map
rem Путь к каталогу с картами:
set MAPSPATH=E:\!Mapping\Maps
rem Путь к каталогу ZHLT:
set ZHLTPATH=E:\!Mapping\Zhlt
rem Путь к каталогу cstrike/maps:
set CSPATH=E:\Counter-strike\cstrike\maps
rem Имя карты:
set MAPNAME=mapname
rem После завершения компиляции выводим на экран сообщение ‘COMPILE END’:
echo COMPILE END
Все! Желаю всем быстрой и правильной компиляции!
ЗЫ. Не обращайте внимания на восклицательный знак в путях, приведенных для примера. Просто у меня такое название папки.
Теория компиляции карт
Оригинал размещён с разрешения (Source).
Contents
Вступление
Большинство людей просто не знают или не понимают, зачем нужна компиляция карт Source и как она происходит. Некоторые даже не представляют, что их карты скомпилированы. В этой статье я постараюсь объяснить, как происходит создание игровой карты в редакторе. Хотя я буду подробно останавливаться на некоторых аспектах процесса компиляции, имейте в виду, что это не учебник по компилированию карт. Статья поможет вам понять, что происходит, и почему какие-то вещи (например, предотвращение утечек) важны.
Создание карты Source начинается с файла-редактора. Этот файл содержит данные о всех полигонах (ака браши), энтитях и текстурах, которые определяют внешний вид карты и движуху на ней. По существу, все редакторы служат одной цели – определению, как будет выглядеть уровень. Это ключевое понятие: так делают ВСЕ редакторы. Они не создают готовые карты. Всё, что они делают – подготавливают данные полигонов, освещения и энтить к последующей обработке.
После того, как вы создали уровень в своём редакторе и сохранили его на диске, он должен быть протестирован в Source. Ведь надо убедиться, что энтити работают как надо, что освещение правильное и нет кривой геометрии. В Хаммере люди просто нажимают «Run», и компьютер после некоторого «раздумья» запускает Half-Life 2, погружая их в мир своей карты. Это простейшее событие скрывает за собой сложный набор операций, происходящих вне поля зрения пользователя.
Теперь – главный вопрос: что происходит во время этого, иногда мучительно долгого, «раздумья»? Даже если карта небольшая, большинство людей замечает активную работу жёсткого диска. Что же делает ваш компьютер? Он компилирует карту! Ваш редактор вызывает пакетный сценарий (.bat) и выполняет следующие действия:
Вы можете подумать: «Блин, как много он делает. Для чего всё это?». Я тут как раз, чтобы объяснить.
Общий вид процесса компиляции
В нижеследующей таблице показан общий процесс, необходимый для создания файла игровой карты (.bsp).
Инструменты компиляции
Нижеследующая таблица даст вам хорошее представление о том, что делает каждый инструмент. Описание упрощено, поскольку задачи, выполняемые инструментами, включают в себя сложную математику и алгоритмы, которые вам, как создателю карты, знать не нужно. Этого достаточно для понимания работы инструментов.
Как компилировать карту в bsp
У вас есть готовый исходник карты, и вы хотите её скомпилировать минуя Hammer Editor.
Такое бывает, если Вам нужно просто срочно скомпилировать карту без запуска Hammer Editor. Кроме того, компиляция через исполняемый *.bat файл проходит немного быстрее, а окно, отображающее прогресс, никогда не зависнет.
В отличие от Hammer Editor — Кто компилировал большие не оптимизированные карты, тот знает, что одну из своих первых не оптимизированных карт я компилировал около 26 часов! Я даже запустил Windows в безопасном режиме, чтобы минимизировать трату ресурсов процессора.
Выбираем подходящую директорию, куда мы положим исходник карты и исполняемый *.bat файл. Например, ваш рабочий стол. Кладём в этом место исходник вашей карты (формат *.vmf) и создаём текстовый документ с любым именем. Открываем и пишем туда следующее:
Синтаксис исполняемого *.bat файла таков:
Самое главное, запомните: Путь до папки игры, это директория игры, в которой хранится файл gameinfo.txt — этот файл отвечает за информацию об игре.
Несколько примеров с директориями игр, где хранится файл gameinfo.txt
Для Half-Life 2 это Steam → SteamApps → common → Half-Life 2 → hl2
Для Garry’s Mod это Steam → SteamApps → common → Garry’s Mod → garrysmod
Для Synergy это Steam → SteamApps → common → Synergy → synergy
Для CS:GO это Steam → SteamApps → common → Counter-Strike Global Offensive → csgo
Для Team Fortress 2 это Steam → SteamApps → common → Team Fortress 2 → tf
Для Portal это Steam → SteamApps → common → Portal → portal
Для Source FilmMaker это Steam → SteamApps → common → SourceFilmmaker → game → usermod
Именно в этих ↑ папках находятся файлы gameinfo.txt для всех игр, как видите по разным папкам.
-fast — Быстрая компиляция для теста карты.
-low — Выполнять с низшим приоритетом.
-novconfig — При компиляции запретить показывать окна с сообщениями об ошибках.
-threads # — Число, оказывающее влияние на быстродействие компилятора.
-onlyents — VBPS будет компилировать только entity.
-onlyprops — Добавляет или обновляет только static и/или props.
-glview — Записывает информацию GLView в директории с VMF-файлом вашей карты.
-nodetail — Игнорирует все func_detail.
-nowater — Не компилирует воду.
-noweld — Не объединять вертексы вместе.
-nocsg — Не разбивавать пересекающиеся браши.
-noshare — Отбрасывавать уникальные рёбра, вместо замены их.
-notjunc — Не исправлять t-функцию.
-noprune — Не резать рядомстоящую мировую геометрию.
-nomerge — Не объединять разрезанные грани в узлы (ноды)..
-nomergewater — Не объединять разрезанные грани на воде
-nosubdiv Не разделять грани для лайтмапов.
-micro — VBPS предупреждает, когда браши компилятся с размером, меньше заданного ( по умолчанию 1.0).
-fulldetail Делает всю детальную геометрию мировой геометрией.
-bumpall — Делает на всех поверхностях эффект бампа.
-snapaxial — Выравнивает координаты до целых чисел.
-block # # — Контролирует минимальную величину размера сетки, которую может использовать VBSP.
-blocks # # # # — Вводит минимальную и максимальную величину размера сетки, которую может использовать VBSP.
-dumpstaticprops — Записывает prop_static в *.txt
-dumpcollide — Записывает файл с информации о столкновениях (коллизии).
-luxelscale # — Масштабирует все лайтмапы на это значение (по умолчанию 1.0).
-lightifmissing — Лайтмапы будут созданы для всех граней, даже если они им не нужны.
-keepstalezip — Оставляет нетронутым файлы BSP в zip, но обновляет всё остальное.
-replacematerials — Замещает материалы, использую данные из materialsub.txt в папке content\maps
-FullMinidumps — Записывает большой дамп при фатальной компиляции
-linuxdata Включает запись информации для многопользовательских серверво в Linux (но эта информация записывается автоматически, если находятся такие энтити, как info_player_terrorist, info_player_deathmatch, info_player_teamspawn, info_player_axis, или info_player_coop).
-nolinuxdata Выключает запись информации для многопользовательских серверво в Linux.
-virtualdispphysics Использует виртуальную модель коллизии (она не будет просчитана заранее) для дисплэсментов.
-xbox Включить оптимизацию для Xbox.
-radius_override — Устанавливает видимый радиус, прописанный в env_fog_controller.
-nosort — Не сортировать порталы (сортировака произовдится для оптимизации).
-tmpin — Читает порталы из карты \tmp\
-tmpout — Записывает порталы в \tmp\
-mpi — Использует VMPI для равномерного просчёта.
-mpi_pw — Использовать пароль для выбора настроек работы VMPI.
-ldr Компиляция только лайтмапов LDR.
-hdr — Компиляция только лайтмапов HDR.
-both — Компилирует лайтмапы сразу для Low Dynamic Range и High Dynamic Range (LDR и HDR) моделей освещения. Компилятор запуститься дважды.
-final — Увеличивает качество light_environment и других источников света.
-bounce — Установка уровня световых отражений. Увеличение этого параметра улучшает тени и темные участки. Почти не влияет на скорость компиляции. По умолчанию равно 10.
-smooth — Установить предел для сглаживания света (в градусах). По умолчанию VRAD использует отдельное для каждой поверхности освещение (Phong shading). С этим параметром применяется сглаживание освещения (Phong smoothing) на поверхностях, если угол между поверхностями меньше чем указанный. По умолчанию равен 45 градусам.
-luxeldensity — Уменьшает масшатб всех люкселей. По умолчания (и максимум) равен 1.
-softsun — Считать солнце, как источник мощного света \. Делает магкие тени. Рекоммендуемое значение между 0 и 5. По умолчанию 5.
-StaticPropLighting — Создаёт освещение на каждый вертекс для prop_static. light_spot делает это по умолчанию. При большом количестве prop_static размер карты очень сильно увеличивается.
-StaticPropPolys (Новое с выпуском Orange Box) — Выполнение испытание теней для каждого полигона prop_statics. Очень сильно нагружает процессор.
-mpi — Использует VMPI для равномерного просчёта.
-mpi_pw — Использовать пароль для выбора настроек работы VMPI.
-noextra — Запрещает суперсэмплинг.
-chop — Установить размер блока освещения (патча) для нормальных текстур. Увеличение размера патчей ведет к ускорению вычислений VRAD, но ухудшению качества освещения.
-maxchop — Устанавливает максимальный размер патчей. Смотреть предыдущий параметр.
-LargeDispSampleRadius — Этот параметр может использоваться, если освещене падает на землю. Компиляция занимает много времени, но зато будет выглядеть красиво.
-compressconstant — Сжимает лайтмапы, варииация цвета которой меньше, чем n ( ) юнитов.
-dumpnormals — Записывать нормали в файл дампа
-debugextra — Помещать отладочную информацию в лайтмапы для визуализирования суперсэмлинга.
-dlightmap — Превращает направленное освещение в разнонаправленные лайтпамы.
-stoponexit — Ждать нажатия кнопки для выхода.
-nodetaillight — Не освещать детали(detail)
-centersamples — Переместить сэмлы в центр.
-loghash — Записать хэш таблицы в samplehash.txt
-onlydetail — Освещать только датали (detail props) и полистовое освещение.
-maxdispsamplesize # — Установить максмальный размер сэмплов для дисплейсментов (умолчание 512).
-StaticPropNormals — При освещении статики, просто показывать его вектор нормали.
Как компилировать карты в bsp формат
Надеюсь, вы уже скачали ZHTL-утилиты (Zoner Half-Life Tools). Теперь давайте разберемся что же это такое:
Совсем недавно научился готовить коктейль голубые гавайи. Теперь частенько угощаю ним своих друзей.
ZHLT-утилиты представляют собой 4 программы для компиляции карты, которые должны быть последовательно запущены из командной строки. Давайте рассмотрим их:
1. Компиляция посредством Worldcraft
В этом окне по умолчанию указаны 8 строк с различными командами и переменными. Все переменные начинаются с символа доллара ($). Значения переменных Worldcraft вы указывали при настройке редактора, на вкладках Build Programs и Game Configurations окна Options. Давайте рассмотрим все имеющиеся переменные:
С каждым днем сторонников игры Minecraft становится все больше, не удивительно, что множество людей хотят иметь оригинальный скин в игре. Скины для Minecraft по своему вкусу можно подобрать на сайте skinscraft.com.
А вот что получится после замены всех переменных их значениями (для примера я использовал свои значения переменных, так что у вас это будет выглядеть немного иначе):
Change Directory E:\Counter-Strike
Copy File E:\!Mapping\Maps\mapname.bsp E:\Counter-Strike\cstrike\maps\mapname.bsp
Copy File E:\!Mapping\Maps\mapname.pts E:\Counter-Strike\cstrike\maps\mapname.pts
Теперь давайте разберемся, что же делает каждая из этих строк:
1. Устанавливает в качестве текущего каталога E:\Counter-Strike.
2. Запускает hlcsg.exe и передает ему путь к файлу с картой.
3. Запускает hlbsp.exe и передает ему путь к файлу с картой.
4. Запускает hlvis.exe и передает ему путь к файлу с картой.
5. Запускает hlrad.exe и передает ему путь к файлу с картой.
Теперь давайте рассмотрим оставшиеся опции в окне компиляции Run Map (Advanced):
Теперь, после того как все настроено, смело жмите кнопку Go!
Описанный выше способ компиляции карты посредством Worldcraft является не самым лучшим выбором, так как радактор загружает в память вашу карту, текстуры, да и сам использует немало ресурсов. А компиляторам, как не трудно догадаться, так же требуется огромное количество памяти, поэтому компиляция будет проходить намного медленнее.
Сразу стоит сказать, что данный способ компиляции самый быстрый, поскольку не расходуются системные ресурсы на выполнение дополнительных программ.
copy E:\!Mapping\Maps\mapname.bsp E:\Counter-Strike\cstrike\maps\mapname.bsp
@echo off set mapname=mymap.map
rem hlrad.exe можно пропустить, ведь протестировать карту можно и без обработки на ней света.