Виртуальная файловая система с C / C ++ под Windows - PullRequest
6 голосов
/ 13 июня 2011

Я сейчас разрабатываю игру, которая имитирует операционную систему.Поэтому мне нужна игровая файловая система.В настоящее время я использую zziplib, чтобы иметь возможность загружать файлы из zip-архива, однако это «файловая система», доступная только для чтения, и мне нужен способ для записи новых файлов и их сериализации впоследствии (и десериализации их во время следующего выполнения)!Есть ли какие-нибудь полезные библиотеки в дикой природе, которые можно использовать, или я должен написать одну для себя, основываясь на каких-нибудь?

Ответы [ 3 ]

6 голосов
/ 13 июня 2011

Это, вероятно, одно из тех мест, где использование простой базы данных в качестве файловой системы имеет смысл.

Используйте что-то вроде sqlite для хранения данных (с путями в качестве ключей, BLOB-объектами в качестве данных или чем-то подобным).

Одним из преимуществ этого является то, что вам на самом деле не нужно беспокоиться о хранилище, и вы можете использовать существующие инструменты базы данных для просмотра / редактирования данных в автономном режиме, вместо того, чтобы писать свои собственные. (Кроме того, вы можете хранить там другую информацию об игре.)

5 голосов
/ 13 июня 2011

Вы можете проверить PicoStorage и Встроенная файловая система на C ++ .Я не использовал напрямую, но я смотрел на них обоих.У встроенной файловой системы есть зависимость, которая может быть ограничителем показа - она ​​требует, чтобы Qt был связан. Возможно, это можно было бы удалить, но она использует его главным образом для QString и QFile (и не будет иметь никаких оснований требовать UI).

2 голосов
/ 13 июня 2011

Мои шесть пенсов поверх ответов выше. SolFS и CodebaseFS обеспечивают возможности виртуальной файловой системы;оба имеют API для C / C ++ и, похоже, выполняют именно то, о чем вы спрашиваете.Все же ... масштаб твоей задачи мне не понятен.Нужно ли вашей игре управлять десятками, сотнями, зундсами ... файлами?Каковы размеры этих файлов?И т. Д., И т. Д. Я хотел бы поднять эти вопросы, прежде чем искать подходящее решение.

...