что такое gcf файл

Чем открывать файлы gcf

Game Cache File (.gcf) — формат хранения, используемый Valve Corporation в системе Steam для распространения компьютерных игр. Данный формат использует для размещения игровых файлов подобие виртуальной файловой системы.
Использование формата GCF решает несколько задач, но в то же время обладает рядом недостатков. В целом формат GCF удобен для автообновлений и восстановления данных, но только для сохранения оригинальной игры в том виде, в котором её создал разработчик — пользователь не может изменить непосредственно сами файлы игры и внедрить модификацию с изменением характеристик прямо внутрь игры. Также использование gcf-файлов требует распаковки файлов библиотек (dll) и приложений (exe), а также медиа-файлов, что уменьшает свободное место на жёстком диске. Формат GCF основан на использовании модификаций при сохранении оригинальной игры, что упрощает её восстановление, но не даёт возможность изменить базовые файлы игры.

Распаковка GCF-файлов не поддерживается компанией Valve, и возможна только с помощью программ сторонних разработчиков, таких как GCF-Scape. Поскольку в GCF-файлах применяется технология защиты от копирования, при использовании некорректно извлечённых файлов в игре могут возникать ошибки. Это также является препятствием для модмейкеров, которым зачастую приходится работать с извлечёнными файлами игры для их модификации и тестирования своего мода. На данный момент алгоритмы распаковки формата изучены достаточно хорошо, поэтому текущая версия GCF-Scape корректно распаковывает содержимое GCF. Однако создавать и изменять GCF-кэш может только Valve, так как алгоритмы его создания точно не известны.

Источник

Расширение файла GCF

Game Cache Format

Что такое файл GCF?

Программы, которые поддерживают GCF расширение файла

В следующем списке перечислены программы, совместимые с файлами GCF, которые разделены на категории 2 в зависимости от операционной системы, в которой они доступны. Файлы с суффиксом GCF могут быть скопированы на любое мобильное устройство или системную платформу, но может быть невозможно открыть их должным образом в целевой системе.

Программы, обслуживающие файл GCF

Как открыть файл GCF?

Отсутствие возможности открывать файлы с расширением GCF может иметь различное происхождение. С другой стороны, наиболее часто встречающиеся проблемы, связанные с файлами Game Cache Format, не являются сложными. В большинстве случаев они могут быть решены быстро и эффективно без помощи специалиста. Приведенный ниже список проведет вас через процесс решения возникшей проблемы.

Шаг 1. Скачайте и установите Steam

Основная и наиболее частая причина, препятствующая открытию пользователями файлов GCF, заключается в том, что в системе пользователя не установлена программа, которая может обрабатывать файлы GCF. Этот легкий. Выберите Steam или одну из рекомендованных программ (например, GCFExplorer) и загрузите ее из соответствующего источника и установите в своей системе. Полный список программ, сгруппированных по операционным системам, можно найти выше. Если вы хотите загрузить установщик Steam наиболее безопасным способом, мы рекомендуем вам посетить сайт Valve Corporation и загрузить его из официальных репозиториев.

Шаг 2. Обновите Steam до последней версии

Вы по-прежнему не можете получить доступ к файлам GCF, хотя Steam установлен в вашей системе? Убедитесь, что программное обеспечение обновлено. Разработчики программного обеспечения могут реализовать поддержку более современных форматов файлов в обновленных версиях своих продуктов. Если у вас установлена более старая версия Steam, она может не поддерживать формат GCF. Самая последняя версия Steam обратно совместима и может работать с форматами файлов, поддерживаемыми более старыми версиями программного обеспечения.

Шаг 3. Свяжите файлы Game Cache Format с Steam

После установки Steam (самой последней версии) убедитесь, что он установлен в качестве приложения по умолчанию для открытия GCF файлов. Метод довольно прост и мало меняется в разных операционных системах.

Выбор приложения первого выбора в Windows

Выбор приложения первого выбора в Mac OS

Шаг 4. Убедитесь, что GCF не неисправен

Если вы выполнили инструкции из предыдущих шагов, но проблема все еще не решена, вам следует проверить файл GCF, о котором идет речь. Проблемы с открытием файла могут возникнуть по разным причинам.

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

2. Убедитесь, что файл с расширением GCF завершен и не содержит ошибок

Вы получили GCF файл от другого человека? Попросите его / ее отправить еще раз. Возможно, файл был ошибочно скопирован, а данные потеряли целостность, что исключает доступ к файлу. При загрузке файла с расширением GCF из Интернета может произойти ошибка, приводящая к неполному файлу. Попробуйте загрузить файл еще раз.

Читайте также:  что делать если после больничного увольняют
3. Проверьте, есть ли у пользователя, вошедшего в систему, права администратора.

Некоторые файлы требуют повышенных прав доступа для их открытия. Выйдите из своей текущей учетной записи и войдите в учетную запись с достаточными правами доступа. Затем откройте файл Game Cache Format.

4. Убедитесь, что в системе достаточно ресурсов для запуска Steam

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

5. Убедитесь, что у вас установлены последние версии драйверов, системных обновлений и исправлений

Последние версии программ и драйверов могут помочь вам решить проблемы с файлами Game Cache Format и обеспечить безопасность вашего устройства и операционной системы. Устаревшие драйверы или программное обеспечение могли привести к невозможности использования периферийного устройства, необходимого для обработки файлов GCF.

Вы хотите помочь?

Если у Вас есть дополнительная информация о расширение файла GCF мы будем признательны, если Вы поделитесь ею с пользователями нашего сайта. Воспользуйтесь формуляром, находящимся здесь и отправьте нам свою информацию о файле GCF.

Источник

Steam Files. Часть 1 — GCF/NCF

Как и обещал в предыдущей статье, начинаю публиковать статьи о той части инфраструктуры Steam, которую смогло открыть Anti-Steam сообщество путём реверс-инжиниринга и продолжительных мозговых штурмов.

Файлы формата GCF до недавнего времени являлись стандартом для всех игр, выпускаемых компанией VALVE, а NCF — для всех остальных. Сами по себе эти файлы представляют образ файловой системы с несколькими уровнями защиты. Отличие NCF от GCF заключается в том, что первые содержат только заголовки, а файлы, принадлежащие им, расположены в отдельном каталоге ( /SteamApps/common/ ). Поэтому описывать буду GCF, а все особенности NCF приведу после.

В данной статье я подробно разберу структуру данных файлов и работу с ними на примере своей библиотеки (ссылка на неё — в конце статьи). Начало будет достаточно скучным — описание структур и назначения их полей. Самое «вкусное» будет после них…

Весь код, приведенный здесь, является плодом реверс-инжиниринга библиотек Steam. Большая часть информации о формате файлов была почерпнута из открытых источников, я же немного её дополнил и значительно оптимизировал работу с файлами кеша (даже по сравнению с самой популярной на то время библиотекой HLLIB).

Общая структура файлов

Файл логически разбит на 2 части — заголовки и непосредственно содержимое. Содержимое разбито на блоки, которые в свою очередь разбиты на сектора по 8кБ, принадлежность которых к определённым файлам и их последовательность описаны в заголовках. Все заголовки содержат поля, являющиеся четырёхбайтными целыми числами (исключение — часть, отвечающая за список имён файлов и каталогов).

FileHeader

Первым параметром передаётся указатель на структуру, а вторым — её размер, за исключением поля Checksum (то есть меньше на 4).

BlockAllocationTableHeader
BlockAllocationTable
FileAllocationTableHeader
FileAllocationTable

Таблица секторов, содержащая FileAllocationTableHeader.ClusterCount записей типа uint32_t. Каждая ячейка содержит индекс следующего кластера в цепочке или значение терминатора (смотрите объявление FileAllocationTableHeader, если является последним в цепочке.
Индексом списка является номер сектора.

ManifestHeader
Manifest
FileNames

Блок данных типа char, размером ManifestHeader.NameSize байт. Содержит нуль-терминированные строки, являющиеся именами элементов, описываемых в дереве манифестов. Обязательным является наличие первого, корневого элемента — пустой строки. Смещение имён элементов задаётся значением Manifest[].NameOffset

HashTableKeys

Содержит хеш-таблицу имён элементов. Содержит значения индексов для HashTableIndices, распределенных по индексам, являющимися производным от хеш-функции Дженкинса lookup2 для строк, приведённых к нижнему регистру. Подробнее будет рассмотрено при описании поиска элементов.

HashTableIndices

Содержит таблицу индексов элементов, на которые ссылаются значения из предыдущей таблицы. Количество элементов — ManifestHeader.NodeCount.

MinimumFootprints

Содержит список номеров элементов в Manifest, которые необходимо распаковать при запуске приложения.

UserConfigs

Содержит список номеров элементов в Manifest, являющихся файлами пользовательской конфигурации.

ManifestMapHeader
ManifestMap

Содержит таблицу ссылок на первый блок (структура BlockAllocationTable) для каждого элемента. Индексом элементов является номер элемента в дереве манифестов. Для каталогов и файлов, не сохранённых в кеше (имеющих нулевой размер или для NCF), содержит значение, равное BlockAllocationTableHeader.BlockCount.

ChecksumDataContainer
FileIdChecksumTableHeader
FileIdChecksums
Checksums

Список контрольных сумм. Содержит последовательные подсписки, на первый элемент которых ссылается значение FileIdChecksums[].FirstChecksumIndex.
Значения рассчитываются по следующему алгоритму:

ChecksumSignature

Сигнатура блока контрольных сумм. Содержит значение хеша для блока контрольных сумм, рассчитанное по алгоритму SHA-1 и зашифрованное алгоритмом RSASSA-PKCS1-v1_5.

Читайте также:  что делать чтобы ребенку хватало кислорода в утробе матери
LatestApplicationVersion

Данное поле содержит версию блока контрольных сумм. Обновляется до актуальной после каждого обновления содержимого.

DataHeader

Алгоритмы

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

Расчет размера файла

В большинстве случаев размер файла равен значению поля Manifest[].CountOrSize. Но для файлов размером более 4Гб такой путь не подходит. Программисты VALVE обошли это следующим путём: для файлов размером более 2Гб устанавливаем старший бит этого поля в «1» и заводим в списке ещё один (или несколько) элементов с такими же значениями остальных полей, получая своеобразную цепочку. Суммируя значение полей Manifest[].CountOrSize из данной цепочки мы и подсчитаем итоговый размер файла.

Здесь я сделал небольшой «финт ушами», допустив, что файлы размером более 4Гб всё-таки не будут входить в состав кеша…

Поиск элемента по имени

например, нам надо найти файл с именем «hl2/maps/background_01.bsp». Все имена у нас хранятся в древовидном виде, поэтому путь придётся разбивать на элементы, связанные разделителем (в данном случае — «/»). Затем мы ищем у потомков корневого элемента элемент с именем «hl2». У него — элемента с именем «maps», и только затем — элемент с именем «background_01.bsp». Данный путь самый очевидный, но очень медленный — происходит побайтовой сравнение строк, да ещё и обход по дереву. Сплошные затраты.
Для ускорения данной процедуры в заголовках есть хеш-таблицы.

Как видно из кода, из всего пути к файлу мы берем только его имя и рассчитываем хеш для него. Берём остаток от целочисленного деления результата на значение ManifestHeader.HashTableKeyCount — это будет номер записи в списке HashTableKeys, содержащей либо 0xffffffff (если нет такого элемента) или значение X+ManifestHeader.HashTableKeyCount. Исходя из этого вычисляем X, являющийся номером элемента в списке HashTableIndices, с которого может находиться искомый элемент. Значения из этого списка указывают на искомый элемент, имя которого сравнивается в запросом. Если не совпало — берём следующий элемент списка и повторяем до тех пор, пока старший бит номера элемента равен «0».
Понимаю, что получилось запутанно, но именно так оно и работает… Вините в подобной путанице программистов VALVE.
Данный метод значительно лучше прямого поиска по дереву — сравнивалась производительность при запуске игры с самописной библиотекой-эмулятором Steam.dll, о которой ещё будет разговор.

Получение полного пути к элементу

Данное действие несколько обратно предыдущему — по номеру элемента надо пройтись по дереву до корневого элемента и получить путь к файлу.

Код для Delphi значительно меньше из-за того, что для C++ я не использовал класс std::string — не знал про него тогда. С ним код вышел бы значительно короче.

Потоки

При написании библиотек для архиво-подобных форматов файлов (которые содержат в себе другие файлы) я использую принцип «поток-в-потоке», что позволяет открывать файлы в архиве, не распаковывая его. Например, в кеше half-life.gcf старых версий был файл pak0.pak, являющийся архивом. В итоге я открывал файл half-life.gcf, в нём — pak0.pak. в котором в свою очередь читал необходимые файлы. И всё это — без распаковки даже в память, весь функционал реализуется через написанные мною же обёртки над файловыми потоками (низкоуровневыми, на уровне WindowsAPI).

Таким образом значительно упрощается работа с содержимым — можно открывать файлы и читать данные из них без лишних телодвижений.

Извлечение файла с проверкой контрольной суммы

В данной процедуре активно используются потоки, описанные выше — я просто читаю файл фрагментами фиксированного размера (максимальный размер фрагмента для контрольных сумм — 32Кб), рассчитываю для них контрольные суммы и сверяю их со значениями из таблицы в заголовках.

В коде для Delphi присутствует дополнительный код для отображения прогресса работы — вызов callback-функций OnProgress, OnProgressObj.

Дешифрование содержимого файлов

Поскольку многие игры незадолго до выхода можно загрузить заранее, то их содержимое в таких случаях оказывается полностью или частично зашифровано. С выходом игры становится доступен ключ для дешифровки данного контента, осуществляемая следующим кодом:

Расчет контрольной суммы для ManifestHeader

Заключение

Остальные функции, не рассмотренные в данной статье ввиду громоздкости их описания (использование битовых карт занятых секторов при изменении карты секторов, перестроение данной карты и многое-многое другое) можно просмотреть в репозитории (там же лежат и остальные фрагменты программ, которые будут рассмотрены в последующих статьях). Данные исходные коды можно использовать в своих проектах (если кому-то нужны такие раритеты. ).
Примерная дата последнего обновления всех исходных кодов — вторая половина 2011-ого года.

Читайте также:  что делать с ветками можжевельника

PS: Написание данной библиотеки мне очень помогло при написании лабораторной работы по предмету Операционные системы в университете — требовалось симулировать работу файловой системы (создание, запись, чтение и удаление файлов). Моя работа была первой и, наверное, единственной за всё время, в которой использовался именно образ файловой системы с разбиением на блоки и сектора — а это была просто-напросто урезанная версия данной бибилотеки (без контрольных сумм). Даже дефрагментатор для кеша я дописал в составе данной работы…

Источник

Grid Cache File

Game Cache File (.gcf) (файл игрового кэша) — формат хранения, используемый Valve Corporation в системе Steam для распространения компьютерных игр и официального игрового контента. Данный формат использует для размещения игровых файлов подобие виртуальной файловой системы. Каждый файл содержит часть файлов игры, а также информацию об их размере, контрольной сумме и таблицу размещения. Игры, распространяемые через Steam, не всегда находятся в одном GCF файле. Например, Team Fortress 2 использует три GCF файла для своего содержимого, плюс ещё восемь файлов движка Source. Каждый GCF-файл может использоваться в нескольких играх, преимущественно это файлы движка игры (например source engine.gcf) или файлы базовой игры, используемой в играх-аддонах (например файлы source materials.gcf, source models.gcf и source sounds.gcf, являющиеся файлами Half-Life 2, используются практически во всех играх Valve). GCF файлы хранятся в директории Steam, поддиректории «SteamApps».

Изначально GCF было сокращением от Grid Cache File [1] (Grid (Решётка) — раннее кодовое имя Steam) Теперь принято считать, что GCF — аббревиатура от Game Cache Files. Все игры на основе таких файлов не могут работать без Steam даже при полной распаковке содержимого GCF — использование их без Steam возможно только с применением эмуляторов.

Использование формата GCF решает несколько задач, но в то же время обладает рядом недостатков. В целом формат GCF удобен для автообновлений и восстановления данных, но только для сохранения оригинальной игры в том виде, в котором её создал разработчик — пользователь не может изменить непосредственно сами файлы игры и внедрить модификацию с изменением характеристик прямо внутрь игры. Также использование gcf-файлов требует распаковки файлов библиотек (dll) и приложений (exe), а также медиафайлов, что уменьшает свободное место на жёстком диске. Формат GCF основан на использовании модификаций при сохранении оригинальной игры, что упрощает её восстановление, но не даёт возможность изменить базовые файлы игры.

Источник

Как открыть GCF файлы на вашем устройстве

GCF расширение файла

Как открыть файл GCF?

При открытии открытия. GCF файлов могут быть разные причины проблем. Каждая проблема требует своего подхода, но большинство из них можно решить, следуя приведенным ниже инструкциям.

Шаг 1. Установите программу, которая поддерживает GCF файлы

Чтобы открыть GCF файл, в системе должна быть установлена соответствующая программа, которая поддерживает этот формат файлов. Ниже представлен список программ, которые поддерживают файлы с расширением GCF.

Программы, открывающие файлы GCF

Скачайте установщик для данного приложения и запустите его. После завершения установки GCF файлы должны быть открыты с установленным приложением по умолчанию при следующей попытке открыть файл этого типа.

Помните!

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

Шаг 2. Свяжите данное программное обеспечение с файлами GCF

Может возникнуть ситуация, когда у пользователя есть соответствующее приложение, поддерживающее файлы GCF, установленные в его системе, но такое приложение не связано с файлами этого типа. Чтобы связать данное приложение с GCF файлами, пользователь должен открыть подменю файлов, щелкнув правой кнопкой мыши значок файла и выбрав опцию «Открыть с помощью». Система отобразит список предлагаемых программ, которые можно использовать для открытия файлов GCF. Выберите соответствующую опцию и установите флажок «Всегда использовать выбранное приложение для открытия файлов такого типа». Система сохранит эту информацию, используя выбранную программу, чтобы открыть GCF файлы.

Шаг 3. Проверьте, нет ли других ошибок, связанных с файлами GCF

Когда вышеупомянутые решения терпят неудачу, другие варианты должны быть продолжены. Возможно, файл GCF поврежден или поврежден. Наиболее распространенные причины повреждения файла:

Источник

Строительный портал