Vpk что за формат
Steam Files. Часть 2 — BLOB, CDR, VDF, PAK, VPK
BLOB (Binary Large OBject)
В предыдущих версиях клиента Steam использовался в единственном экземпляре — ClienRegistry.blob.
Имеет четкую структуру в виде дерева и читается рекурсивно до исчерпания дочерних элементов. Отдельных заголовков не имеет — сразу идет корневой узел, имеющий минимум 1 потомка. Формат несколько нелинейный, о чем укажу далее.
Заголовок узла
Каждый узел имеет 2 заголовка — заголовок самого узла и заголовок данных узла.
Формат заголовка узла:
Заголовок сжатых данных
Если узел был сжат, то после заголовка узла следует заголовок сжатых данных:
UncompressedSize — размер «сырых» данных, под которые необходимо будет выделить память;
unknown1, unknown2 — назначение неизвестно, всегда равно 0x00000001, на парсинг не влияют.
Как и писалось выше, для данных, полученных после вызова uncompress из ZLib’а, следует повторно считать заголовок узла.
Разбор данных
После чтения заголовка узла и, по необходимости, распаковки его содержимого, наступает самая «веселая» часть — чтение содержимого узла. Алгоритм был максимально оптимизирован, из-за чего разобраться в нем по прошествии такого промежутка времени оказалось не так-то и просто.
Разбор данных зависит от поля TBLOBNodeHeader.Magic — если оно равно 0x5001, то сразу читаем узлы-потомки.
В противном случае читаем заголовок TBLOBDataHeader
CDR (Content Description Record)
Записи приложений
Описание пакетов приложений
В файлах данного формата хранятся настройки клиента, а в нынешних версиях — еще и информация о приложениях. Может быть как двоичным, так и текстовым файлом.
Как и BLOB имеет древовидную структуру.
Рассмотрим бинарный файл. Есть несколько типов файлов, отличающихся структурой и заголовками, но формат узлов у них одинаковый.
Рассмотрим основные бинарные файлы, использующие бинарный вариант формата VDF.
appcache/appinfo.vdf
Сперва идет заголовок со следующим содержимым:
Поля version1 и version2 ранее рассматривались как часть сигнатуры, но со временем и они изменились — раньше они были равны 0x24 и 0x06, теперь равны 0x26 и 0x07 соответственно.
Поле type является сигнатурой и содержит 0x4456 (‘DV’).
Поле version3 всегда содержит 0x00000001.
После заголовка идет список с информацией о приложении, каждый элемент которого имеет свой заголовок:
После заголовка следует список параметров-узлов, содержащих 1 байт метки конца списка (0х00, если конец) и элемент VDF-дерева.
appcache/packageinfo.vdf
Устаревший формат архивов, используемый в первых версиях Half-Life 1. Никакого сжатия, это просто контейнер для файлов.
Заголовок файла:
Sign — сигнатура, содержит ‘PACK’.
DirectoryOffset — смещение начала списка элементов.
DirectoryLength — размер списка элементов.
По указанному смещению находится массив заголовков элементов, содержащихся в архиве:
Думаю, тут ничего описывать не надо, всё и так понятно.
Signature — всегда содержит 0x55aa1234.
PaksCount — количество архивов с содержимым файлов;
DirSize — размер данных с мета-информацией о файлах.
После заголовка следует иерархический список с элементами. Причем структура списка упорядочена по расширениям файлов и пути к ним.
То есть сперва идет NULL-terminated строка с расширением файла, потом NULL-terminated строка с путем, где такие файлы есть, после чего следует NULL-terminated строка имя файла (без расширения) с информацией о файле. Концом каждого уровня списка является пустая строка.
bsp
hl2/maps
map1
map2
map3
wav
sound/amb
amb1
amb2
sound/voice
voice1
voice2
Формат информации о файле:
CRC — контрольная сумма файла;
PreloadBytes — размер данных в начале файла, содержащихся в корневом файле после данной структуры;
ArchiveIndex — номер архива с данными файлами;
EntryOffset — смещение данных внутри архива;
EntryLength — размер данных.
Расширение файла VPK
Valve Pak
Что такое файл VPK?
Программы, которые поддерживают VPK расширение файла
Ниже вы найдете указатель программ, которые можно использовать для открытия файлов VPK, разделенных на категории 2 в соответствии с поддерживаемой системной платформой. Файлы с расширением VPK, как и любые другие форматы файлов, можно найти в любой операционной системе. Указанные файлы могут быть переданы на другие устройства, будь то мобильные или стационарные, но не все системы могут быть способны правильно обрабатывать такие файлы.
Программы, обслуживающие файл VPK
Как открыть файл VPK?
Проблемы с доступом к VPK могут быть вызваны разными причинами. С другой стороны, наиболее часто встречающиеся проблемы, связанные с файлами Valve Pak, не являются сложными. В большинстве случаев они могут быть решены быстро и эффективно без помощи специалиста. Мы подготовили список, который поможет вам решить ваши проблемы с файлами VPK.
Шаг 1. Получить GCFScape
Шаг 2. Обновите GCFScape до последней версии
Если проблемы с открытием файлов VPK по-прежнему возникают даже после установки GCFScape, возможно, у вас устаревшая версия программного обеспечения. Проверьте веб-сайт разработчика, доступна ли более новая версия GCFScape. Разработчики программного обеспечения могут реализовать поддержку более современных форматов файлов в обновленных версиях своих продуктов. Причиной того, что GCFScape не может обрабатывать файлы с VPK, может быть то, что программное обеспечение устарело. Все форматы файлов, которые прекрасно обрабатывались предыдущими версиями данной программы, также должны быть открыты с помощью GCFScape.
Шаг 3. Назначьте GCFScape для VPK файлов
После установки GCFScape (самой последней версии) убедитесь, что он установлен в качестве приложения по умолчанию для открытия VPK файлов. Процесс связывания форматов файлов с приложением по умолчанию может отличаться в деталях в зависимости от платформы, но основная процедура очень похожа.
Выбор приложения первого выбора в Windows
Выбор приложения первого выбора в Mac OS
Шаг 4. Проверьте VPK на наличие ошибок
Если вы выполнили инструкции из предыдущих шагов, но проблема все еще не решена, вам следует проверить файл VPK, о котором идет речь. Проблемы с открытием файла могут возникнуть по разным причинам.
1. Проверьте VPK файл на наличие вирусов или вредоносных программ.
Если случится так, что VPK инфицирован вирусом, это может быть причиной, которая мешает вам получить к нему доступ. Немедленно просканируйте файл с помощью антивирусного инструмента или просмотрите всю систему, чтобы убедиться, что вся система безопасна. Если сканер обнаружил, что файл VPK небезопасен, действуйте в соответствии с инструкциями антивирусной программы для нейтрализации угрозы.
2. Убедитесь, что структура файла VPK не повреждена
Если вы получили проблемный файл VPK от третьего лица, попросите его предоставить вам еще одну копию. В процессе копирования файла могут возникнуть ошибки, делающие файл неполным или поврежденным. Это может быть источником проблем с файлом. При загрузке файла с расширением VPK из Интернета может произойти ошибка, приводящая к неполному файлу. Попробуйте загрузить файл еще раз.
3. Проверьте, есть ли у вашей учетной записи административные права
Существует вероятность того, что данный файл может быть доступен только пользователям с достаточными системными привилегиями. Переключитесь на учетную запись с необходимыми привилегиями и попробуйте снова открыть файл Valve Pak.
4. Проверьте, может ли ваша система обрабатывать GCFScape
Операционные системы могут иметь достаточно свободных ресурсов для запуска приложения, поддерживающего файлы VPK. Закройте все работающие программы и попробуйте открыть файл VPK.
5. Убедитесь, что у вас установлены последние версии драйверов, системных обновлений и исправлений
Современная система и драйверы не только делают ваш компьютер более безопасным, но также могут решить проблемы с файлом Valve Pak. Возможно, файлы VPK работают правильно с обновленным программным обеспечением, которое устраняет некоторые системные ошибки.
Вы хотите помочь?
Если у Вас есть дополнительная информация о расширение файла VPK мы будем признательны, если Вы поделитесь ею с пользователями нашего сайта. Воспользуйтесь формуляром, находящимся здесь и отправьте нам свою информацию о файле VPK.
VPK File Format
This article should be converted to third person to conform to wiki standards.
The VPK file format is a package format used by post-GCF Source engine games to store content.
Contents
Conception
Features
Preload Data
In order to efficiently access small or critical files, the beginning of each file can optionally be stored in the VPK directory. In practice, this seems to be limited to the first 1000 bytes of Source engine materials (VMT files) which are typically only a few hundred bytes in size.
Multiple Archives
Previous Source engine games that had been distributed by the more advanced GCF file format had the luxury of internally fragmenting new and updated files. This meant that new and updated files could be efficiently downloaded and saved with minimal bandwidth and disk IO. Because the new VPK files are independent of distribution (Left 4 Dead is distributed by NCF files and Steam knows nothing of the VPK file format), their content is split up over multiple archives that seem to be limited to about 32 MB in size. Because of this, when a file in a specific file is updated, only the VPK archive that contains the file needs to be updated. Additionally, new files can be downloaded to their own individual archives. This is why most of the newer archives are small in size; their contents are limited the the files added in a single update.
Versions
File Format
A VPK package is actually spread out over multiple files sharing the same extension. The directory is stored in a specific file called _dir.vpk and the content is spread over several additional archive files called _*.vpk (where * is the zero based archive index). Consequentially, there are two file formats:
Directory
Header
VPK 1
Originally, the VPK file had no header or identifier. This changed when the June 25, 2009 Left 4 Dead update was released adding support for third party campaigns. VPK directory files created after this date have the following header:
VPK 2
The format of the directory tree is a little unorthodox. It consists of a tree three levels deep that seems to be structured for file size. The first level of the tree consists of file extensions (e.g. vmt, vtf and mdl), the second level consists of directory paths (e.g. materials/brick, materials/decals/asphalt and models/infected), and the third level consists of file names, file information and preload data. Each tree node begins with a null terminated ASCII string and empty strings are used to signify the end of a parent node. Pseudo-code to read the directory might look something like:
A nonexistent extension (in example/file), path (in example.txt), or filename is represented by a single space.
Immediately following the null terminator for the filename is the following structure:
If a file contains preload data, the preload data immediately follows the above structure. The entire size of a file is PreloadBytes + EntryLength.
Footer
VPK2 adds a footer section that contains extra CRC data for pure mode «so the dedicated servers do not need to compute them at startup but can be checked with the command sv_pure_checkvpk «.
VPK 2 Sections
File data
This can be read like a separate VPK archive embedded in the directory file (see EntryOffset comment in VPKDirectoryEntry).
Archive MD5 checksums
This section is an array of these:
Since sizeof(VPK_MD5SectionEntry) is 28, the section size must be a multiple of 28.
Valve’s VPK tool refers to these as cache line hashes. They can be checked against the file content with the checkhash command.
Other MD5 checksums
Public Key & Signature
This section can be viewed with Valve’s VPK tool’s dumpsig command.
Games with this section (296 bytes):
Games lacking this section:
All VPKs tested were from the English Language
Archive
VPK Archives store raw file data. They have no identifying header and know nothing of their contents. Though not necessary, the raw file data is typically tightly packed.
To do: Rewrite and merge Notes section to the format section
Notes
Valve apparently added skipping to the specifications. I found out when trying to write my own VPK parser in C#. This should be merged with the format area later, and reworded.
Valve uses nulls to signify if skipping is used. On a normal entry, it uses 2 nulls, and is followed by the format above. However, there are cases where there are only one, or no nulls at the start, and this means that some level of skipping is used.
If there are 2 nulls, no skipping is used, and the extension, path, and name are read as usual. If there is 1 null, the extension is skipped (It’s the same extension as the last read entry), and then the path and name are read as usual. If there are no nulls, the extension and path are the same as the last entry (Skipped), and only the name is read.
This system has only been observed in VPK1.
Распаковка игровых ресурсов. Часть 2
Практически полтора года назад я писал первую часть блога «Распаковка игровых ресурсов». Я хотел сразу написать вторую часть, но сначала не было времени, а потом я тупо забыл про это)
Ну вот, теперь, память ко мне вернулась, и представляю вашему вниманию вторую часть.
И первым распаковщиком в новой части блога станет Extractor.
Последняя на сегодня версия 2.5.
Небольшая утилита для распаковки игровых архивов (поддерживает более 60 типов). Программа имеет мультиязычный интерфейс, в том числе есть и русский. Есть возможность интеграции в контекстное меню проводника.
Из минусов программы следует отметить малое количество поддерживаемых форматов, программа также давно не обновлялась, официальный сайт давно почил.
Позволяет «выдирать» ресурсы из игровых архивов и псевдоархивов более 130 различных форматов.
Так же как и другие подобные программы, программа не лишена минусов. Здесь можно привести те же минусы, что и у предыдущей, мало форматов, последний раз обновлялась в 2004 году. Однако, со всеми имеющимися форматами, утилита справляется на ура.
Эта утилита предназначена для распаковки ресурсов игр всего лишь на двух игровых движках. Source Engine и idTech Engine. Программа может интегрироваться в контекстное меню проводника. Из минусов этой проги: она не поддерживает новые версии этих движков, в частности, нет возможности извлечь файлы из VPK архивов, а самая новая игра на движке idTech Engine, которую поддерживает данная программа, это Quake 3.
Еще одна програ, для конкретного движка, Unreal Engine. Поддерживает все игры на этом движке (их уже больше 300), кроме некоторых игр, которые созданные на сильно модифицированных движка, но и они постепенно добавляются. Еще недавно программа была только консольной, сейчас заимела графический интерфейс, а продвинутым пользователям оставлена возможность пользоваться консолью. Есть возможность предпросмотра текстур и 3д-моделей. Программа постоянно обновляется. Есть версии для Windows и Linux.
Game Archive Unpacker Plugin
Это не программа, а плагин для известного файлового менеджера Total Commander. Также может быть использована и другими менеджерами, которые поддерживают установку архивных плагинов для ТС. Плагин поддерживает несколько сотен игр, есть возможность конвертации игровых графических форматов в удобочитаемые для редакторов (png, dds, tga, bmp и другие) и обратно. Может запаковывать файлы обратно в игровые ресурсы, а это особенно важно для полноценного моддинга.
Но есть и минусы, на которые следует обратить внимание. Во-первых, это долгая необновляемотсь программы, а во-вторых, плагин иногда не способен прочитать имена распаковываемых файлов, давая им номер, что может затруднить их обратную запаковку.
[Guide] Разбираем клиент (для потенциальных Редакторов)
20 Feb 2012 в 17:04
20 Feb 2012 в 17:04 #1
Если Вы любите заниматься модификациями, но пока не разобрались как устроена Dota2 изнутри, то вот Вам небольшой гайд о том, как сделать клиент более гибким.
В клиенте Dota 2 файлы находятся в папках и игровых архивах.
В работе клиента приоритетными являются файлы из архивов vpk, но если же они не доступны по определенным причинам, клиент ищет альтернативу в каталоге игры. Соответственно, если распаковать архивы в каталог, а затем их удалить (переместить, переименовать), то клиент будет использовать файлы из вне.
Зачем нам это надо? Так намного легче ставить модификации и копаться в файлах. Канечно если Вы рядовой геймер и Вам это не интересно, то дальше можете не читать 😉
1. Нам понадобиться утилитка для распаковки архивов GCFScape.
2. Открываем папку root и содержимое заливаем в наш клиент, а точнее в Steam\steamapps\common\dota 2 beta\dota
3. Архивы (все. не только pak01_dir.vpk) удаляем или перемещаем куда-нибудь. Главное, чтобы они не инициализировались клиентом.
4. Запускаем клиент Dota2 и проверяем работоспособность.
20 Feb 2012 в 17:09 #2
Интересно не только модерам, но и для общего развития. Будет просто отлично если продолжишь работу.
20 Feb 2012 в 21:37 #3
Однозначно стоит. Буду очень благодарен))))
21 Feb 2012 в 08:04 #4
21 Feb 2012 в 09:21 #5
Спасибо за тему, хорошая идея о создании гайда для тех, кто не просто тупо шпилит 🙂
а ещё и понимает тонкости и может своё искусство при желании внести.
01 Mar 2012 в 19:13 #6
Хорошая тема, дополнила мои знания о разборных механизмах доты)
16 Mar 2012 в 17:53 #7
Модифицировал и не играю, даже смотреть, что получилось не стал. *YES*
Спасибо за тему, заменю кое какие модели для себя.
17 Jun 2012 в 06:40 #8
10 Jul 2012 в 16:55 #9
28 Jul 2012 в 15:32 #10
Народ, может кто подробнее расписать как работать с созданием вещей DOTA? Видеогайд какой нибудь сделать. Я жуткий нуб в этом деле. Хотелось бы узнать какие программы требуются.
10 Nov 2012 в 23:28 #11
17 Aug 2013 в 16:12 #12
можно ли как то заменять файлы в архиве не распаковывая его?
11 Sep 2013 в 20:59 #13
Какая новая тема *STARCHE*
11 Sep 2013 в 21:02 #14
Если Вы любите заниматься модификациями, но пока не разобрались как устроена Dota2 изнутри, то вот Вам небольшой гайд о том, как сделать клиент более гибким.
В клиенте Dota 2 файлы находятся в папках и игровых архивах.
В работе клиента приоритетными являются файлы из архивов vpk, но если же они не доступны по определенным причинам, клиент ищет альтернативу в каталоге игры. Соответственно, если распаковать архивы в каталог, а затем их удалить (переместить, переименовать), то клиент будет использовать файлы из вне.
Зачем нам это надо? Так намного легче ставить модификации и копаться в файлах. Канечно если Вы рядовой геймер и Вам это не интересно, то дальше можете не читать 😉
1. Нам понадобиться утилитка для распаковки архивов GCFScape.
2. Открываем папку root и содержимое заливаем в наш клиент, а точнее в Steam\steamapps\common\dota 2 beta\dota
3. Архивы (все. не только pak01_dir.vpk) удаляем или перемещаем куда-нибудь. Главное, чтобы они не инициализировались клиентом.
4. Запускаем клиент Dota2 и проверяем работоспособность.
ВАУ
как много нового я узнал!
офигенно паринь еще гайдов
(сарказм)
Нельзя/ невыполнимо для новичков
Добавлю то, что есть еще гайды по редактированию «этого»
И то что, это просто лежит в папке, и не используется:
Нужно прописать команду в параметрах запуска в стиме, у меня в гайдах есть