Static Prop Combine

From Valve Developer Community
< Ru
Jump to: navigation, search
English (en)Русский (ru)Translate (Translate)

Static Prop Combine, или говоря неформально "автокомбайн", - функция в VBSP(en) Counter-Strike: Global Offensive Counter-Strike: Global Offensive. Она позволяет VBSP объединять вместе множество статичных пропов в один, либо автоматически, либо по указанным пользователем правилам. Это снижает общее количество статичных пропов на карте и количество запросов на отрисовку. Чтобы включить эту функцию, запускайте VBSP с параметром -staticpropcombine.

Tip.pngСовет:В Source Source производится один запрос на отрисовку на каждый материал на каждой модели. Объединяя модели, которые используют одинаковые материалы, Вы снижаете количество запросов на отрисовку, что сильно помогает оптимизации. Со слов Valve производительность на карте Nuke повысилась на 40% после использования Static Prop Combine.
Note.pngПримечание:В связи с непостоянностью этой функции в VBSP, возможно более хорошим решением может стать использование TeamSpen's Hammer Addons TeamSpen's Hammer Addons. Помимо того, модели статичных пропов можно объединять вручную.
Tip.pngСовет:Hammer++ Hammer++ позволяет объединять модели с использованием встроенного инструмента Propper++(en)

Действие

Static Prop Combine проводит следующие действия:

Нахождение пропов, которые будут объединены.
Это делается на основе правил, указанных spcombinerules.txt, или автоматически на основе использования моделей.
Note.pngПримечание:-staticpropcombine_considervis - полезная команда, которая делает так, чтобы при работе Static Prop Combine брал в расчёт видимость.
Сканирование исходного файла QC(en) с целью взять определённую информацию.
Это включает имена и положения основного и физического мешей, вертикальную ось модели, её скейл и является ли она вогнутой.
QC находится при помощи параметра модели qc_path, который всегда считается относительным папке игры - даже если это полный путь!
Note.pngПримечание:К этому шагу относится множество ограничений, смотрите Использование для деталей.
Использовать эту информацию вместе с неполным QC, чтобы сгенерировать свой QC
$contentrootrelative(en), $appendsource(en) и $addconvexsrc(en) - новые команды, добавленные специально для Static Prop Combine. Последние две команды позволяют "добавить" геометрию к модели с каким-либо сдвигом, поворотом и изменённым размером.
Вызвать StudioMDL(en), чтобы скомпилировать этот сгенерированный QC в комбинированную модель.
Комбинированные модели всегда будут иметь _autocombine_ в своём названии.
Запаковка комбинированных моделей через BSPZIP(en)
Tip.pngСовет:Использование -keepsources отключит автоматическое удаление сгенерированных QC и распакованных файлов модели.

Использование

Параметры VBSP

Смотрите VBSP(en).

Настройки в Hammer

Пропы, отличающиеся по указанным ниже параметрам, НЕ будут скомбинированы, если не будет указан подходящий параметр VBSP:

  • Render in Fast Reflections (-combineignore_fastreflection) (отражаться в быстрых отражениях)
  • Ignore Normals (-combineignore_normals) (игнорировать нормали)
  • Disable Shadows (-combineignore_noshadows) (отключить тени)
  • Disable Vertex lighting (-combineignore_novertexlighting) (отключить повертексное освещение)
  • Disable Flashlight (-combineignore_noflashlight) (отключить фонарик)
  • Disable Self-Shadowing (-combineignore_noselfshadowing) (отключить самозатенение)
  • Disable ShadowDepth (-combineignore_disableshadowdepth) (отключить глубину теней)

В добавление, Вы можете отключить Static Prop Combine для определенных пропов, используя параметр Disable Prop Combine.

Подготовка пропов

Чтобы использовать проп со Static Prop Combine, Вы должны иметь исходные файлы модели.

Note.pngПримечание:Чтобы использовать модели от Valve, Вы должны рекомпилировать их под другим названием - иначе версия модели, запакованная в VPK-архив игры заменит Вашу версию модели.

QC модели должен быть скомпилирован из папки контента игры. Для Counter-Strike: Global Offensive Counter-Strike: Global Offensive это SteamApps/common/content/csgo/.

Tip.pngСовет:На самом деле, место, в котором происходит поиск контента всегда будет ../../content/[название -game], относительно папки bin. Это может быть полезно для моддеров.


Есть немало ограничений, включающих:

Подготовка правил

Правила для Static Prop Combine объявлены в scripts/hammer/spcombinerules/spcombinerules.txt. Это стандартный KeyValues-форматированный текстовый файл. Каждый ввод следует этому формату:

	"example_combined" // Имя группы комбинирования, будет использовано для модели в игре
	{
		// Это неполный QC, который будет использован, чтобы генерировать комбинированные модели
		"qc_template_path"	"scripts/hammer/spcombinerules/qc_templates/example.qc"
		
		// Максимум моделей в одной комбинированной модели
		"cluster_limit" 8
		
		// Не комбинировать модели, которые находятся на большем, чем это, расстоянии
		"distance_limit" 12

		// Это модели, которые можно скомюинировать
		"peers"
		{
			"models/examples/example_A.mdl" ""
			"models/examples/example_B.mdl" ""
			"models/examples/example_C.mdl" ""
		}
	}

Если Вы не хотите утруждаться созданием правил, вы можете запустить -staticpropcombine_autocombine. Однако, это может вызвать проблемы, если у Вас нет исходных файлов для моделей, которые попробует скомбинировать VBSP.

Icon-Bug.pngБаг:Пути в списке "peers" должны быть написаны с передними слэшами (/)!  [todo tested in?]

Неполные QC

Неполные QC - это файлы QC(en) или QCI(en), которые содержат основу для QC, сгенерированных Static Prop Combine. В целом, они должны включать в себя только:

Tip.pngСовет:
  • Static Prop Combine не объединяет модели, использующие разные скины.
  • Так как объединенные модели нельзя указать в lights.rad(en), можно указать параметр $casttextureshadows(en), чтобы позволить этой модели отбрасывать текстурные тени.(en)

Пример неполного QC

$cdmaterials models\props\de_venice\venice_window_3

$staticprop
$surfaceprop "Plaster"

$texturegroup venice_window_3 {
	{ "venice_window_3" }
	{ "venice_window_3_lit" }
}

Смотрите также