Теория компиляции карт

From Valve Developer Community
< Ru
Jump to: navigation, search
English (en)Français (fr)Русский (ru)中文 (zh)Translate (Translate)

Оригинал размещён с разрешения (Source).

Вступление

Большинство людей просто не знают или не понимают, зачем нужна компиляция карт Source и как она происходит. Некоторые даже не представляют, что их карты скомпилированы. В этой статье я постараюсь объяснить, как происходит создание игровой карты в редакторе. Хотя я буду подробно останавливаться на некоторых аспектах процесса компиляции, имейте в виду, что это не учебник по компилированию карт. Статья поможет вам понять, что происходит, и почему какие-то вещи (например, предотвращение утечек) важны.

Создание карты Source начинается с файла-редактора. Этот файл содержит данные о всех полигонах (ака браши(en)), энтитях(en) и текстурах(en), которые определяют внешний вид карты и движуху на ней. По существу, все редакторы служат одной цели – определению, как будет выглядеть уровень. Это ключевое понятие: так делают ВСЕ редакторы. Они не создают готовые карты. Всё, что они делают – подготавливают данные полигонов, освещения и энтить к последующей обработке.

После того, как вы создали уровень в своём редакторе и сохранили его на диске, он должен быть протестирован в Source. Ведь надо убедиться, что энтити работают как надо, что освещение правильное и нет кривой геометрии. В Хаммере люди просто нажимают "Run", и компьютер после некоторого "раздумья" запускает Half-Life 2, погружая их в мир своей карты. Это простейшее событие скрывает за собой сложный набор операций, происходящих вне поля зрения пользователя.

Теперь – главный вопрос: что происходит во время этого, иногда мучительно долгого, "раздумья"? Даже если карта небольшая, большинство людей замечает активную работу жёсткого диска. Что же делает ваш компьютер? Он компилирует карту! Ваш редактор вызывает пакетный сценарий (.bat) и выполняет следующие действия:

  1. Чтение файла .vmf
  2. Запуск программы BSP(en) для файла .vmf
  3. Запуск программы VIS(en) для нового файла .bsp
  4. Запуск программы RAD(en) для файла .bsp, чтобы добавить информацию об освещении
  5. Перемещение готового файла .bsp в папку Mods /maps
  6. Запуск игры с вашей картой

Вы можете подумать: "Блин, как много он делает. Для чего всё это?". Я тут как раз, чтобы объяснить.

Общий вид процесса компиляции

В нижеследующей таблице показан общий процесс, необходимый для создания файла игровой карты (.bsp).

Файл .vmf > VBSP > промежуточный .bsp > VVIS > VRAD > готовый .bsp

Source Mapping Pipeline.png

Инструменты компиляции

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

Инструмент Цель
VBSP(en) Преобразовывает данные файла .vmf в удобный формат .bsp, пригодный для загрузки в игровой движок. После его запуска, карта становится практически готовой к игре за исключением того, что в ней будут отсутствовать матрица видимости и освещение. Эти важнейшие функции создаются следующими двумя инструментами: VIS и RAD.
VVIS(en) Создаёт матрицу видимости на основе геометрии карты. Эта матрица определяет, какие полигоны игрок видит, а какие сможет или не сможет увидеть ни с какой точки уровня. Очень важно, чтобы этот инструмент запускался каждый раз при создании .bsp. Если он не запустится, карта будет видеться целиком и станет неиграбельной. Больше информации о VIS можно найти в оптимизации видимости(en).
VRAD(en) RAD, или Radiosity (диффузия света), отвечает за создание и применение всех световых эффектов на карте. Всё, от энтить-огней и закатного "неба" до слабоосвещённых текстур, обрабатывается этим инструментом. У .bsp, для которого не был запущен RAD, игра будет абсолютно тёмной или ярко освещённой, в зависимости от видеорежима и настроек консоли. Обычно этот инструмент отвечает за торможение компиляции, поскольку ему приходится обрабатывать огромный массив данных. Больше информации о RAD можно найти в RAD (technical)(en).

Менеджеры компиляции

  • Batch Compiler(en) - Поддерживает Quake, Valve, Zoners, и CSTTools
  • VBCT(en) – Для движка Source.

Каковы инструменты компиляции?

Hammer имеет собственные инструменты компиляции от Valve. Они обозначаются буквой 'v' в начале имени инструмента (например, vbsp.exe(en), vvis.exe(en), vrad.exe(en)). Кроме того, Адам Маккерн работает над новыми инструментами компиляции для Source (CSTBSP(en), CSTVIS(en), CSTRAD(en)--известных под общим названием CST), которые по целому ряду опций точнее стандартных инструментов. На данный момент CST не имеет заметных преимуществ над инструментами Valve, и уже устарел.

См. также

  • Структура файла BSP(en) – взгляд на инструменты компиляции с технической точки зрения (от автора VMEX и других инструментов Source).