Overview
Доброго времени суток, сегодня поговорим о пользовательском контенте: что он из себя представляет, как его устанавливать, что такое папка custom, VPK и распакованный контент.
Что такое VPK и распакованный контент
Для начала давайте разберемся, что такое VPK.
VPK (Valve Pack file) – формат игровых архивов, пришедщий на замену GCF, как более быстрый и экономный в отношении дискового пространства формат.
После выхода Steam встал вопрос: “А где мы будем хранить файлы игр?”. Ответом на него стали файлы GCF, которые представляли из себя некое подобие файловой системы с своими определенными разделами и папками. После пуска Steam Community встал еще один вопрос: “А что если на пекарне играет не один школьник, а еще его батя, причем на другом аккаунте?” аки: “А что если на ПК есть несколько Steam-аккаунтов?”. Ахиллесовой пятой формата GCF было отсутствие поддержки многопользовательского режима, то есть, на два аккаунта Steam скачивались две копии игры, и места на диске становилось в два раза меньше. Выглядело это так:
Чувствуете? Пахнет жаренными винчестерами!
В связи с этим, VALVe были вынуждены разработать новый формат, который поддерживает многопользовательский режим Steam, занимая в 2 раза меньше места. Так и был разработан формат VPK. Также триггером на разработку нового формата стали текстурные wallhack-читы.
Интересно, что VPK имеет схожее строение с GCF.
После обновления, если игра куплена на обоих аккаунтах, путь до неё будет выглядеть так:
Формат VPK представляет из себя некое подобие виртуальной файловой системы.
Архивы, в которых хранятся игровые файлы, имеют окончание “_xxx” (xxx – номер по порядку, 001, 002 и т. д.).
“Управляющий” архив имеет окончание _dir, и вся VPK-система грузится через него.
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.
Я думаю, читатель, ты уже всё понял, папка “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 pathMounting 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