Counter-Strike: Source Guide

Пользовательский контент: Что такое папка "custom" и с чем её едят. for Counter-Strike: Source

Пользовательский контент: Что такое папка “custom” и с чем её едят.

Overview

Доброго времени суток, сегодня поговорим о пользовательском контенте: что он из себя представляет, как его устанавливать, что такое папка custom, VPK и распакованный контент.

Что такое VPK и распакованный контент

Что такое VPK

Для начала давайте разберемся, что такое VPK.
VPK (Valve Pack file) – формат игровых архивов, пришедщий на замену GCF, как более быстрый и экономный в отношении дискового пространства формат.

Немного истории

После выхода Steam встал вопрос: “А где мы будем хранить файлы игр?”. Ответом на него стали файлы GCF, которые представляли из себя некое подобие файловой системы с своими определенными разделами и папками. После пуска Steam Community встал еще один вопрос: “А что если на пекарне играет не один школьник, а еще его батя, причем на другом аккаунте?” аки: “А что если на ПК есть несколько Steam-аккаунтов?”. Ахиллесовой пятой формата GCF было отсутствие поддержки многопользовательского режима, то есть, на два аккаунта Steam скачивались две копии игры, и места на диске становилось в два раза меньше. Выглядело это так:

C:SteamSteamAppsMSPDGMHalf-Life 2 C:SteamSteamAppsEH5XHalf-Life 2

Чувствуете? Пахнет жаренными винчестерами!
В связи с этим, VALVe были вынуждены разработать новый формат, который поддерживает многопользовательский режим Steam, занимая в 2 раза меньше места. Так и был разработан формат VPK. Также триггером на разработку нового формата стали текстурные wallhack-читы.
Интересно, что VPK имеет схожее строение с GCF.
После обновления, если игра куплена на обоих аккаунтах, путь до неё будет выглядеть так:

C:SteamSteamAppscommonHalf-Life 2
Немного о строении

Формат VPK представляет из себя некое подобие виртуальной файловой системы.
Архивы, в которых хранятся игровые файлы, имеют окончание “_xxx” (xxx – номер по порядку, 001, 002 и т. д.).
“Управляющий” архив имеет окончание _dir, и вся VPK-система грузится через него.

cstrike_pak_001.vpk cstrike_pak_002.vpk cstrike_pak_003.vpk cstrike_pak_dir.vpk

VPK могут работать и по отдельности, как это делается создателями кастомного контента, в этом случае просто не надо добавлять никаких приставок.

yourmod1.vpk memes.vpk CTmiku.vpk

Поскольку в VPK все файлы содержатся в несжатом виде, а только для систематизации, для кастома можно пользовать и распакованный контент.

Что такое распакованный контент

Распакованный контент, это тот же VPK, только без пихания всех файлов в архивы.
Распакованный контент – все материалы, модели, звуки, ресурсы, кэш-файлы, скайбоксы, карты, которые не запакованы в VPK и скачиваются отдельно в одну из папок контента игры (hl2 или cstrike).
Собственно, о распакованном контенте сказать нечего, это просто все игровые файлы.

Что такое папка “custom”

Немного истории

В GoldSrc заменой папке “custom” была папка “mod_addon”, и в настройках можно было включить поддержку кастомного контента, однако не все администраторы были этим довольны и начали запрещать кастомный контент на своих серверах, самым лучшим способом был кик. Недавно я нашел лазейку, позволяющую обойти ограничениена кастомные текстуры: это папка “mod_hd”. Движок был устроен таким образом, что проверяя, если ли кастомный контент в _addon папке, он в упор не видит _hd папки, и отправляя данные на сервер, про _hd не “говорит” вообще. Такми образом, если перекинуть из _addon папки в _hd папку все ваши модели, вас не кикнут за кастомный контент. В Source ситуация кардинально поменялась, ведь теперь движок не поддерживает _hd папок вообще, а поэтому кастомный контент можно запихать только в папку custom, а если менять их в VPK, то словите VAC. Также на сервере появилась возможность намертво запретить кастомный контент, используя всего одну консольную команду sv_pure.

sv_pure 0 //Позволяет клиенту менять местоположение ЛЮБОГО игрового файла. Клиент может использовать модифицированные файлы для получения нечестного преимущества, делая такие вещи, как замена моделей игроков на более заметные, делать стены невидимыми, ставить маяки на C4, и т.п. VAC не защищает от таких эксплойтов, так как они не меняют сам процесс игры, и позволяет серверу решать, что могут делать клиенты. sv_pure 1 //Разрешает использовать только содержимое из белого списка (списка разрешенного контента). По умолчанию белый список разрешает ставить пользовательские модели и любые потенциальные эксплойты такие, как яркие скины. sv_pure 2 //Принуждает клиента игнорировать ВЕСЬ пользовательский контент и заставляет пользоваться информацией, полученной от Steam. Sv_pure 2 также запретит использование пользовательского контента и пользовательских спреев.

Для чего она нужна

Я думаю, читатель, ты уже всё понял, папка “custom” предназначена для внедрения в игру пользовательского контента, не влияющего на игровой процесс и работу движка. Причем сея папка может использоваться в не совсем благоприятных целях, таких как текстурный walhack (Прозрачные текстуры).

Установка пользовательского контента

Ознакомимся с строением папки

У нас здесь находятся два объекта:

  • my_custom_stuff
  • readme

Давайте прочитаем, что добрые тыжпрограммисты нам написали в readme:

This folder is automatically scanned when the game boots for VPK files or
subfolders. Each subfolder or VPK is added as a search path, so the files
inside those VPK’s or subfolders will overide the default game files.

See gameinfo.txt for more details.

For example, you might have the following file structure:

cstrike/custom/my_custom_stuff/ <<< This subfolder will be added as a search path
cstrike/custom/my_custom_stuff/models/custom_model.mdl
cstrike/custom/my_custom_stuff/materials/custom_material.vmt
cstrike/custom/my_custom_stuff/materials/vgui/custom_ui_thing.res
cstrike/custom/some_mod.vpk <<< This VPK will be added as a search path
cstrike/custom/another_mod.vpk <<< This VPK will be added as a search path

Mounting a VPK to the filesystem is more efficient that adding a subfolder,
because each time the engine neds to open a file, it will need to make a call to the
operating system call to search the folder. VPKs can be searched by the engine much
more efficiently. Each subfolder is a new search path that must be checked each
time the engine tries to open a file. So for optimal load times, always use VPK files
and don’t make any subfolders in this folder!

Note that the following directory structure is NOT correct:

cstrike/custom/models/my_model.mdl

That will add the directory “cstrike/custom/models” as a search path, in which case the
file my_model.mdl actually exists at the root of the game’s virtual filesystem.

Старый добрый потраченный машинный перевод от сидоджи:

Эта папка автоматически сканируется, когда игра загружает для файлы VPK или
вложенные папки. Каждая подпапка или VPK добавляется в качестве пути поиска, поэтому файлы, у которых пути в VPK совпадают, будут заменены на кастомные.

Подробнее см. В файле gameinfo.txt.

Например, у вас может быть следующая файловая структура:

Cstrike/custom/my_custom_stuff/ <<< Эта подпапка будет добавлена ​​в качестве пути подгрузки
CStrike/custom/my_custom_stuff/models/custom_model.mdl
CStrike/custom/my_custom_stuff/materials/custom_material.vmt
CStrike/custom/my_custom_stuff/materials/VGUI/custom_ui_thing.res
Cstrike/custom/some_mod.vpk <<< Этот VPK будет добавлен в файловую систему движка
Cstrike/custom/another_mod.vpk <<< Этот VPK будет добавлен в файловую систему движка

Установка VPK в файловую систему более эффективна, потому что каждый раз, когда движок обращается к распакованному пользовательскому контенту, он тратит на это больше времени, а на VPK тратит меньше времени
Каждая подпапка представляет собой отдельный путь для подгрузки файлов
И не делайте никаких подпапок в этой папке кроме игровых!

Обратите внимание, что следующая структура каталогов неверна:

CStrike/custom/models/my_model.mdl

Это добавит каталог «CStrike/custom/models/» в качестве пути подгрузки, и файл будет находиться в корне этого пути, а не в папке, поэтому движок его не увидит.

Что я могу из этого вывести:

Originally posted by мной:

В папке “custom” могут находиться как распакованные пользовательские файлы, так и VPK-массивы или отдельные архивы.
Чтобы запихать распакованный контент в игру, вам необходимо указать движку, где искать те или иные папки. Чтобы это сделать, необходимо в корне кастома создать папку и дать ей название на инглише, иначе движок не увидит ваши модельки (Папка my_custom_stuff сделана для примера, чтоб было понятней). В эту папку необходимо впихать все кастомные файлы, которые относятся именно к этой папке, например так:
╠╦Custom
║╚╦CSGOawp
║─╠╦materials
║─║╚╦models
║─║─╚╦Weapons
║─║──╠v_awp.vtf
║─║──╚v_awp.vmt
║─╚╦models
║──╚╦weapons
║───╚v_awp.mdl

Сложно, правда?

С VPK дела обстоят гораздо лучше, ибо там необходимо просто поместить VPK архив/масив в папку таким образом:
╠╦Custom
║╚═CSGOtextures.vpk

Или так:
╠╦Custom
║╠═CSGOtextures_001.vpk
║╠═CSGOtextures_002.vpk
║╠═CSGOtextures_003.vpk
║╠═CSGOtextures_004.vpk
║╠═CSGOtextures_005.vpk
║╠═CSGOtextures_006.vpk
║╠═CSGOtextures_dir.vpk

Если у тебя всё правильно получится, то должно всё это выглядеть примерно так:
Прочитав всё это, читатель, я надеюсь ты понял, как и куда нужно пихать эти ваши кастомные скины и модельки, а на этом всё :3

SteamSolo.com