Source SDK

Source SDK

48 ratings
Компиляция карты с помощью исполняемого *.bat файла
By Смайл
В этом уроке я расскажу вам о методе, который будет полезен каждому, кто работает с картами. Компиляция карты с помощью исполняемого *.bat файла очень удобная вещь, если у вас слабый ПК. Этот метод не нагружает оперативную память вашей ОС и более быстро, ежели Hammer Editor компилирует файл вашей карты в *.bsp формат.
   
Award
Favorite
Favorited
Unfavorite
Вводная информация
У вас есть готовый исходник карты, и вы хотите её скомпилировать минуя Hammer Editor.

Такое бывает, если Вам нужно просто срочно скомпилировать карту без запуска Hammer Editor. Кроме того, компиляция через исполняемый *.bat файл проходит немного быстрее, а окно, отображающее прогресс, никогда не зависнет.

В отличие от Hammer Editor — Кто компилировал большие не оптимизированные карты, тот знает, что одну из своих первых не оптимизированных карт я компилировал около 26 часов! Я даже запустил Windows в безопасном режиме, чтобы минимизировать трату ресурсов процессора.

Выбираем подходящую директорию, куда мы положим исходник карты и исполняемый *.bat файл. Например, ваш рабочий стол. Кладём в этом место исходник вашей карты (формат *.vmf) и создаём текстовый документ с любым именем. Открываем и пишем туда следующее:

Синтаксис исполняемого *.bat файла таков:

"Путь до vbsp.exe" -game "Путь до папки игры с файлом gameinfo.txt — Например, cstrike" название_вашей_карты.vmf
"Путь до vvis.exe" -game "Путь до папки игры с файлом gameinfo.txt — Например, tf" название_вашей_карты.vmf
"Путь до vrad.exe" -game "Путь до папки игры с файлом gameinfo.txt — Например, csgo" название_вашей_карты.vmf
@pause

Пример для пиратской версии программы Source SDK:

"C:\Ultimate SSDK v2\SourceSDK\bin\orangebox\bin\vbsp.exe" -game "C:\Ultimate SSDK v2\Source Engine 2009 MP\cstrike" cs_bunker.vmf
"C:\Ultimate SSDK v2\SourceSDK\bin\orangebox\bin\vvis.exe" -game "C:\Ultimate SSDK v2\Source Engine 2009 MP\cstrike" cs_bunker.vmf
"C:\Ultimate SSDK v2\SourceSDK\bin\orangebox\bin\vrad.exe" -game "C:\Ultimate SSDK v2\Source Engine 2009 MP\cstrike" cs_bunker.vmf
@pause

И ещё приведу пример для Steam версии игры, например TF2:

"C:\Steam\steamapps\common\Team Fortress 2\bin\vbsp.exe" -game "C:\Steam\steamapps\common\Team Fortress 2\tf" NecroSmasher.vmf
"C:\Steam\steamapps\common\Team Fortress 2\bin\vvis.exe" -game "C:\Steam\steamapps\common\Team Fortress 2\tf" NecroSmasher.vmf
"C:\Steam\steamapps\common\Team Fortress 2\bin\vrad.exe" -game "C:\Steam\steamapps\common\Team Fortress 2\tf" NecroSmasher.vmf
@pause

То есть, всё очень просто, вам нужно указать пути до файлов, которые закомпилируют вашу карту по очереди, а затем изменить расширение файла с *.txt на *.bat и запустить его. Также можно добавить дополнительные параметры для компиляторов. Например, если Вы собираетесь компилировать финальную версию своей карты, компилятору VVIS можно (да и нужно) добавить параметры -hdr и -final. Параметр -hdr означает, что карту надо компилировать ещё и в HDR-режиме, а -final целиком улучшает освещение и итоговый вид карты. Конечно, карта будет компилировать дольше, зато будет лучше выглядеть. В итоге, для финальной версии карты текст вашего файла будет такой:

"Путь до файла vbsp.exe" -game "Путь до папки игры с файлом gameinfo.txt — Например, hl2" название_вашей_карты.vmf

"Путь до файла vvis.exe" -game "Путь до папки игры с файлом gameinfo.txt — Например, synergy" название_вашей_карты.vmf

"Путь до файла vrad.exe" -hdr -final -game "Путь до папки игры с файлом gameinfo.txt — Например, garrysmod" название_вашей_карты.vmf
@pause

После всех ваших действий с исполняемым *.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 для всех игр, как видите по разным папкам.
Другие параметры
Общие
-v (или -verbose) — Включает подробный вывод (также показывает болше опций в командной строке). Используется без каких-либо других параметров.

-fast — Быстрая компиляция для теста карты.

-low — Выполнять с низшим приоритетом.

-novconfig — При компиляции запретить показывать окна с сообщениями об ошибках.

-threads # — Число, оказывающее влияние на быстродействие компилятора.

-vproject (или -game) — Перезаписывает переменную окружения VPROJECT

VBSP — Базовые параметры

-onlyents — VBPS будет компилировать только entity.

-onlyprops — Добавляет или обновляет только static и/или props.

-glview — Записывает информацию GLView в директории с VMF-файлом вашей карты.

-nodetail — Игнорирует все func_detail.

-nowater — Не компилирует воду.

Расширенные параметры
-verboseentities Если включён параметр -v, то эта команда запрещает подробный вывод для вложенных моделей.

-noweld — Не объединять вертексы вместе.

-nocsg — Не разбивавать пересекающиеся браши.

-noshare — Отбрасывавать уникальные рёбра, вместо замены их.

-notjunc — Не исправлять t-функцию.

-noopt — По умолчанию VBSP удаляет "наружнюю оболочку" из карты, т.е. все грани, которые вы не можете видеть, потому, что вы никогда не выйдите за пределы карты. -noopt отменяет этот режим.

-noprune — Не резать рядомстоящую мировую геометрию.

-nomerge — Не объединять разрезанные грани в узлы (ноды)..

-nomergewater — Не объединять разрезанные грани на воде

-nosubdiv Не разделять грани для лайтмапов.

-micro <#> — VBPS предупреждает, когда браши компилятся с размером, меньше заданного ( по умолчанию 1.0).

-fulldetail Делает всю детальную геометрию мировой геометрией.

-leaktest — Останавливает процесс компиляции, если карта содержит дырку. Если этот параметр не задан, то файл с дырками будет записан как <имя .vmf>.lin и он может быть впоследствии импортироваться в Хаммер.

-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.

VVIS — Функциональные параметры
-radius_override <int> — Устанавливает видимый радиус, прописанный в env_fog_controller.

-nosort — Не сортировать порталы (сортировака произовдится для оптимизации).

-tmpin — Читает порталы из карты \tmp\<имя карты>

-tmpout — Записывает порталы в \tmp\<имя карты>

Базовые параметры

-mpi — Использует VMPI для равномерного просчёта.

-mpi_pw <string> — Использовать пароль для выбора настроек работы VMPI.

VRAD — Эффекты
-ldr Компиляция только лайтмапов LDR.

-hdr — Компиляция только лайтмапов HDR.

-both — Компилирует лайтмапы сразу для Low Dynamic Range и High Dynamic Range (LDR и HDR) моделей освещения. Компилятор запуститься дважды.

-final — Увеличивает качество light_environment и других источников света.

-lights <filename>.rad — Загружает пользовательский файл со световой информацией в дополнение к lights.rad и файлу освещения самой карты. Должен иметь иметь имя следующего вида .rad.

-bounce <int> — Установка уровня световых отражений. Увеличение этого параметра улучшает тени и темные участки. Почти не влияет на скорость компиляции. По умолчанию равно 10.

-smooth <int> — Установить предел для сглаживания света (в градусах). По умолчанию VRAD использует отдельное для каждой поверхности освещение (Phong shading). С этим параметром применяется сглаживание освещения (Phong smoothing) на поверхностях, если угол между поверхностями меньше чем указанный. По умолчанию равен 45 градусам.

-luxeldensity <normal> — Уменьшает масшатб всех люкселей. По умолчания (и максимум) равен 1.

-softsun <float> — Считать солнце, как источник мощного света \. Делает магкие тени. Рекоммендуемое значение между 0 и 5. По умолчанию 5.

-StaticPropLighting — Создаёт освещение на каждый вертекс для prop_static. light_spot делает это по умолчанию. При большом количестве prop_static размер карты очень сильно увеличивается.

-StaticPropPolys (Новое с выпуском Orange Box) — Выполнение испытание теней для каждого полигона prop_statics. Очень сильно нагружает процессор.

-TextureShadows (Новое с выпуском Orange Box) — Генерирует лайтмапные тени из $translucent и используется с prop_static. Требует StaticPropPolys для возымения эффекта, а также низкого масшатибирования лайтмап для большинства текстур.

Настройка
-mpi — Использует VMPI для равномерного просчёта.

-mpi_pw <string> — Использовать пароль для выбора настроек работы VMPI.

-noextra — Запрещает суперсэмплинг.

-chop <int> — Установить размер блока освещения (патча) для нормальных текстур. Увеличение размера патчей ведет к ускорению вычислений VRAD, но ухудшению качества освещения.

-maxchop <int> — Устанавливает максимальный размер патчей. Смотреть предыдущий параметр.

-LargeDispSampleRadius — Этот параметр может использоваться, если освещене падает на землю. Компиляция занимает много времени, но зато будет выглядеть красиво.

-compressconstant <int> — Сжимает лайтмапы, варииация цвета которой меньше, чем n (<int>) юнитов.

Устранение ошибок
-dump — Записывать дамп в .txt

-dumpnormals — Записывать нормали в файл дампа

-debugextra — Помещать отладочную информацию в лайтмапы для визуализирования суперсэмлинга.

-dlightmap — Превращает направленное освещение в разнонаправленные лайтпамы.

-stoponexit — Ждать нажатия кнопки для выхода.

-nodetaillight — Не освещать детали(detail)

-centersamples — Переместить сэмлы в центр.

-loghash — Записать хэш таблицы в samplehash.txt

-onlydetail — Освещать только датали (detail props) и полистовое освещение.

-maxdispsamplesize # — Установить максмальный размер сэмплов для дисплейсментов (умолчание 512).

-StaticPropNormals — При освещении статики, просто показывать его вектор нормали.
85 Comments
Смайл  [author] 29 Jul, 2021 @ 11:09am 
Если ты про Alt + P, то это далеко не все ошибки. Карта может не быть собрана компилятором ещё в очень многих случаях. Проверь карту на дыры, может быть у тебя есть незакрытые пространства на карте?

Для этого нажми: Map → Load Pointfile

Далее редактор отобразит тебе красную линию, где возможно есть дыра в карте. На месте этой дыры создай браш, чтобы исправить проблему и, на всякий, проверь логи карты.
Adon1111222 29 Jul, 2021 @ 11:05am 
все ошибки убрал встроенным помощником, пишет что ошибок нет, попытался скомпилировать те же ошибки
Смайл  [author] 29 Jul, 2021 @ 10:57am 
А дальше у тебя идёт ошибка открытия BSP карты. Не знаю, что ты там не правильно сделал, но могу предложить исправить следующие проблемы:

— Проверь skybox (небо), возможно где-то по краям карты ты допустил небольшие щели. Закрой их.
— Проверь карту не ошибки, для этого нажми в редакторе: Alt + P — и исправь все ошибки, которые там отображаются.
— Такая ошибка ещё возможно из-за того, что ты что-то сделал неровно. Возможно у тебя какой-нибудь браш выезжает за карту.

Никому не будет хуже, если ты сделаешь всё строго по линиям редактора, ровно.
Adon1111222 29 Jul, 2021 @ 10:51am 
дверь вообще убрал и закрыл цельной стеной, дальше? https://disk.yandex.ru/d/JTwqpMtAGyb_ww
Смайл  [author] 29 Jul, 2021 @ 9:38am 
По данным скриншота, который ты предъявил: У тебя ошибка на карте, которую нужно исправить. Якобы у тебя дыра в карте вот по этим коордирдинатам: -97.00 -1594.00 1109.00

Объект ошибки: Дверь (prop_door_rotating)

В Hammer Editor нажми (сверху): View → Go to coordinates... и в появившемся окошке введи те координаты ошибки двери.

Затем удали дверь и создай её в том же месте, но уже по новой.
Adon1111222 29 Jul, 2021 @ 7:19am 
какие-то ошибки, нечего не понимаю (название карты скрыл если что) https://disk.yandex.ru/d/wr-pZGOPeKhdVQ
Смайл  [author] 28 Jul, 2021 @ 12:53pm 
Перепроверь параметры компиляции в bat файле
N_5278 28 Jul, 2021 @ 12:35pm 
Здраааасте
Это снова я
И снова с проблемой
Зачем он ищёт .bsp, если он должен компилить его?
https://yadi.sk/d/WNLljgG2gjFxEg
здесь что то ничиста...
Смайл  [author] 10 Jun, 2021 @ 9:36pm 
Я знаю :з
DaLLuZZ 10 Jun, 2021 @ 9:16pm 
Что касается -tmpout, он лет 10 уже не работает