Как редактировать bsp файл

Обновлено: 06.07.2024

Что это? What is it?
Это программа позволяющее декомпилить любую карту на игровом движке Source
This is a program that allows you to decompile any map on the Source game engine
Для чего? For what?
Для декомпилированния карт из формата .bsp в .vmf
For decompiling maps from the format .bsp in .vmf
Пусть установки: Install:
Не нуждается в установке
Does not need to be installed
Ссылка на скачивание: Download:

Release BSPSource 1.4.0 · ata4/bspsrc

Game related Added support for No More Room in Hell. Added support for Insurgency. Black Mesa: Added better static prop support for Black Mesa to maintain compatibility with maps made for older v.

Как использовать? How to use?
1. Скачиваем фаил и распаковываем на любой путь
Download the file and unpack it to any path
2. Запускаем фаил под названием bspsrc.jar и появится вот такое окошко:
Run the file called bspsrc.jar and a window like this will appear:


3. Добавляем любую карту формата .bsp
Adding any map format .bsp


4.Можете нажимать на кнопку Decompile, и указываете путь куда сохранять фаил в формате .vmf
4. You can click on the Decompile button, and specify the path where to save the file in the format .vmf
Вопрос: А как же взять текстурки и прочие приколюхи из карты? Оч просто, переходим на вкладку Other и ставил галочку на "Exctract embedded files"
Question: How do I get textures and other pranks from the map? Very simply, go to the Other tab and put a check mark on "Extract embedded files"


5. Выполнить действие в пункте 4
5. Perform the action in step 4
Если все правильно сделали то должно получиться так, как изображено на скриншоте:
If everything is done correctly, it should turn out as shown in the screenshot:


Установка контента: Installing content
Закидываем контент в корневую папку по пути GarrysMod\garrysmod и соглашаемся на замену
We throw the content into the root folder at the path GarrysMod\garrysmod and agree to replace it
Фаилы которые находятся после декомпила (Для примера)
Files that are located after decompiling (For example)

Контент карты успешно установлен и можете работать без ошибок.
The map content is installed successfully and you can work without errors.


BSP - Binary Space Partition(Двоичное разбиение пространства), формат карт игрового движка Source.

Например, вы начали заниматься мапингом под движок Source, и создавая свою карту вы застряли на каком то этапе, потому что не знаете как устроено то, или иное, и вам бы было полезно посмотреть, как это сделали разработчики оригинальных карт данной игры. Или вы захотели изменить оригинальную карту, что то добавить, что то убрать. Или вы вообще захотели адаптировать карту, под другую игру на движке Source, например для Garry's mod

Сам по себе файл BSP, есть бинарным, так же как и файл модели. Что бы загрузить его и начать с ним работать в Hammer editor, нужен его исходник - файл формата VMF, с которым он сможет работать.

Декомпилировать BSP файл сможет программа стороннего разработчика
BSP Source.

BSPSource - это декомпилятор карт созданных для движка Source. Он созданный на основе старого декомпилятора VMEX. Программа конвертирует файлы формата BSP в формат VMF для дальнейшего редактирования в редакторе карт Hammer. Он поддерживает более новые игры созданные на Source движке и как следствие умеет больше чем VMEX, например Dark Messiah of Might and Magic, Left 4 Dead 2 или Portal 2. В нем исправлены самые надоедливые баги, а также стали доступны новые функции, например извлекать вложенные ZIP файлы, поддержка анализа BSP файла, возможность обработки несколько файлов за один раз.

Важно! Программа написана на языке Java, и для запуска должен быть установлен
java runtime environment - среда для запуска java приложений


Например будем декомпилировать карту из Left 4 Dead - l4d_airport01_greenhouse.bsp


1) Идем в папку maps данной игры, и копируем карту, которую будем декомпилировать, где то на диск.(этого можно и не делать):

[b2)[/b] Запускаем BSPSource, жмем кнопку browse, и выбираем карту:



) Жмем кнопку open, после кнопку Decompile:


4) Указываем папку сохранения vmf файла:


5) Жмем кнопку save - и идет процесс декомпиляции:



Вот он, наш исходник загруженный в hamer:


Как видите алгоритм очень простой, ничего сложного. На этом все. Думаю статья станет кому то полезной.

Представим ситуацию, что мы откомпилировали уровень за два-три часа, и случайно забыли указать название картинки неба в её свойствах. Это значит, что в уровне будет использовано стандартное небо desert, вместо того, какое мы хотели.

Чтобы ещё раз не компилировать карту и не тратить 2-3 часа из-за такой ерунды, можно использовать программку Ripent, с помощью которой мы можем дописать в нужном месте название картинки неба.


Как это работает?
Информация свойствах энтитей в откомпилированных картах (*.BSP файлах) содержится в обычном текстовом виде. Вы самостоятельно можете убедится в этом, открыв какой-нибудь BSP файл (уровень) в текстовом редакторе, например, во встроенном редакторе файлового менеджера FAR или TotalCom. После нескольких тысяч строк из не ясных знаков, начнётся текстовое описание всех энтитей и их свойств, которые используются в уровне.

Описание энтитей любой карты начинается так:

Применяем Ripent
Ripent — программа, которая работает из командной строки и не имеет графического интерфейса.

Извлекаем текстовую информацию об энтити-объектах

  • Перенесите откомпилированный BSP-уровень в директорию, где находится программка Ripent
  • Выберите команду «Пуск -> Выполнить. » («Start -> Run. »)
  • Нажав кнопку «Обзор» («Browse»), укажите путь к программе Ripent
  • В конце пути после кавычек допишите следующие параметры: -export -texdata 1 имя_карты

Буквально через несколько секунд в папке с Ripent и уровнем появится новый файл, в нашем случае это de_dust.ent.

Не глядя на расширение (*.ENT), это простой текстовый файл, который можно изменять в любом текстовом редакторе, к примеру, в Блокноте. Главное, не забудьте после внесения изменений в свойства энтити-объектов сохранить файл с расширением *.ent, а не *.txt.

Вносим обратно измененную информацию в BSP-уровень

Рассмотрим, как осуществляется обратная процедура по внесению измененных данных в уровень.
Выполняем первые три пункта, как описано выше, но теперь вместо -export пишем -import (смотрите картинку ниже).

Свойства энтити-объектов внутри BSP-файла
Свойства энтити-объектов внутри *.BSP файла и в редакторе Hammer внешне отличаются. К примеру, вместо параметра Name используется "targetname", вместо флажков small radius, start on, toggle и пр. используются цифровой код и т.п. Чтобы можно было правильно изменять необходимую информацию, нужно знать соотношения между данными параметрами.

На картинке ниже мы приводим сводную таблицу, где представлены главные параметры энтитей в том виде, как они отображаются в Хаммере — и находятся внутри *.BSP файла уровня.

Отсюда мы видим, что, чтобы изменить название картинки неба, необходимо найти в ENT-файле параметр "skyname" и после этого слова точно также в кавычках вписать название неба.

Или, другой пример: допустим нам надо изменить прозрачность стекла (к примеру, func_breakable с именем 123), нужно в ENT-файле найти объект с "targetname" "123" и изменить параметр "renderamt" "". Таким образом, изменяются и другие параметры энтитей.


Недостатки Ripent
Достоинства Ripent бесспорны — нет необходимости тратить часы на компиляцию, если сделана небольшая ошибка в свойствах энтитей. Но есть и свой изъян.

Используя утилиту Ripent, вы должны иметь ввиду, что исходник уровня в формате RMF или MAP не обновляется! Обновляется лишь откомпиллированный *.BSP файл уровня. А, посему, или используйте утилиту Ripent для внесения небольших изменений в финальный вариант уровня, или же записывайте все проделанные исправления и потом в Хаммере правьте исходник.


Несколько интересных фактов
Интересно, что список свойств энтитей всякий раз передается клиенту при присоединении к серверу.

Благодаря утилите Ripent можно вносить изменения в свойства энтитей на любых BSP-уровнях. К примеру, возможно сделать мост на De_Aztec (из Counter-Strike 1.5) прозрачным. Для данной операции необходимо отыскать энтити-объект func_illusionary и выставить параметры: "rendermode" "2" и "renderamt" "0" (в Хаммере это выглядит как: Render Mode: "Texture" и FX Amount "0"). Мост «исчезнет».

Важно! Помните, что такие параметры, как цвет источника света и его яркость (точечные энтити-объекты light, light_spot, light_environment) менять без толку, так как освещённость рассчитывается при компиляции.

В этой статье мы рассмотрим быстрый и довольно удобный способ внесения изменений в готовую откомпилированную карту без запуска компиляции. Таким способом можно вносить изменения в любые карты, даже не имея их исходников.

Прежде всего, необходимо, чтобы у Вас была в наличии официальная версия утилит ZHLT 2.5.3. Сами компиляторы нам не понадобятся, но вместе с ними, в архиве, находится утилита Ripent (ripent.exe), которую мы будем использовать.

В каких случаях полезна утилита Ripent?

. и так далее, примеров можно привести огромное множество.

Представьте ситуацию, когда Вы компилируете карту в течении 2-3 часов, и совершенно случайно в ее свойствах забыли указать название картинки неба. Это означает, что на карте будет использовано стандартное небо (desert), вместо того, какое хотели использовать Вы.

Чтобы не компилировать карту заново, можно воспользоваться утилитой Ripent и дописать в нужном месте название неба.

Как это работает?

Информация об энтити-объектах в готовых картах (файлах BSP) содержится в простом текстовом виде. Вы и сами можете в этом убедится, открыв любую BSP карту в текстовом редакторе, например, во встроенном редакторе файлового менеджера FAR или TotalCom. После нескольких тысяч строк, состоящих из непонятных нам символов, начнется текстовое описание всех энтити-объектов, используемых на карте.

Наша задача, а, точнее, задача утилиты Ripent заключается в изъятии всей текстовой информации из BSP-файла и обратное внесение измененных данных.

Описание энтитей любой карты начинается так:

      "wad" "c:\games\hl\valve\halflife.wad;c:\games\hl\valve\liquids.wad;"

    Более подробно о значении этих и других параметров мы рассказываем в конце статьи.

    Применяем Ripent

    Ripent — утилита, работающая из командной строки, не имеющая своего графического интерфейса.

    Извлекаем текстовую информацию об энтити-объектах

    • Скопируйте готовую BSP-карту в папку, где находится утилита Ripent
    • Выберите команду «Пуск -> Выполнить. » («Start -> Run. »)
    • Нажав кнопку «Обзор» («Browse»), укажите путь к утилите Ripent
    • В конце пути после кавычек допишите след. параметры: -export -texdata 1 имя_карты

    Строка запуска программы для карты de_dust будет выглядеть так:

    Буквально через несколько мгновений в директории с утилитой и картой появится новый файл, в нашем случае это был бы de_dust.ent, а в общем случаем имя_карты.ent.

    Не смотря на расширение, это обычный текстовый файл, который можно отредактировать в любом текстовом редакторе, например, Блокноте. Единственное, не забудьте после внесения изменений сохранить файл с расширением *.ent, а не txt.

    Вносим измененную информацию обратно в BSP-карту

    Давайте сразу же посмотрим, как проделывается обратная операция по внесению измененных данных в карту.
    Выполняем первые 3 пункта, как описано выше, но теперь вместо -export пишем -import (см. рис. ниже).

    В этом случае вся информация из файла имя_карты.ent будет внесена в откомпилированную BSP-карту. Изменения Вы сможете увидеть уже при следующей загрузке карты. Файл *.ent можно удалить.

    Свойства энтити-объектов внутри BSP-файла

    Внешний вид свойств энтити-объектов внутри BSP-файла несколько отличается от того, что мы привыкли видеть в редакторе. Например, вместо параметра Name используется запись в виде "targetname", вместо флагов (small radius, start on, toggle и т.д.) используются цифровой код и т.д. Чтобы Вы могли найти и правильно изменить нужную информацию, необходимо знать соответствия между этими параметрами.

    Ниже мы приводим таблицу, где представлены основные свойства энтити-объектов в том виде, как они отображаются в редакторе и внутри BSP-карты.

    Таким образом, если нам требуется изменить название картинки неба, мы находим в файле *.ent строку со словом "skyname" и после этого слова точно также в кавычках вписываем название неба.

    Например: "skyname" "desert".

    Чтобы изменить степень прозрачности стекла (например, func_breakable с именем glass1), необходимо в файле *.ent найти объект с "targetname" "glass1" и изменить параметр "renderamt" "". Точно также изменяются и все остальные свойства энтити-объектов.

    После того, как все необходимые изменения будут внесены, сохраняем *.ent файл и запускаем утилиту Ripent с параметром -import.

    Недостатки Ripent

    Достоинства Ripent очевидны — не нужно повторять многочасовую компиляцию, если допущена незначительная ошибка в свойствах энтити-объектов. Но есть и свои недостатки.

    Используя Ripent, Вы должны помнить, что исходник карты в формате RMF или MAP не обновляется! Обновляется лишь готовая BSP-карта. Соответственно, если затем Вы будете повторно компилировать карту, то сделанные изменения в свойствах энтити-объектов просто пропадут, т.к. исходники карты не меняются! Поэтому или используйте Ripent для внесения незначительных изменений (исправления досадных ошибок и пр.) в окончательный вариант карты, или же записывайте все сделанные изменения и затем в редакторе правьте исходник карты.

    Несколько интересных фактов

    Думаем Вам интересно будет узнать, что список свойств энтити-объектов каждый раз передается клиенту при подключении к серверу.

    Благодаря Ripent мы можем изменить свойства энтити-объектов на любых BSP-картах. Можно, например, сделать мост на De_Aztec (из CS 1.5) прозрачным. Для этого нужно найти объект func_illusionary, отвечающий за изображение моста и выставить параметры: "rendermode" "2" и "renderamt" "0" (в редакторе это выглядело бы как: Render Mode: "Texture" и FX Amount "0"). Мост «исчезнет». Правда, найти нужный func_illusionary, который и является мостом, довольно трудно, т.к. на Ацтеке этих объектов (func_illusionary) несколько.

    Помните одно — при подключении к игровому серверу с нормальным Ацтеком, ваш мост НЕ будет прозрачным, т.к. на сервере обычная карта с неизмененными энтити-объектами. Также необходимо знать, что такие параметры, как цвет источника света (light; light_spot; light_environment) менять бесполезно, т.к. освещение просчитывается при компиляции. Ну, а такие параметры, как степень прозрачности объектов, режимы их отображения (texture; solid; additive и т.д.), скорость движения машины, время до автоматического закрытия двери, список объектов внутри multi_manager, просто имена объектов, поле target, название неба и некоторые другие параметры можно менять.

    Так что Ripent довольно забавная и полезная штука, если знать как ее использоваться. Ну, а Вы уже знаете :)

    Читайте также: