LINUX.ORG.RU

Управление скачиваемым контентом

 


0

1

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

★★★★★

Гм. Тоже хочу такое :)

Плюсую вопрос.

unfo ★★★★★ ()

в игровых движках под консоли есть такие возможности. про отдельные библиотеки без привязки к контексту не слышал.

waker ★★★★★ ()
Ответ на: комментарий от waker

Жаль... сейчас всё реализовано веб-страничкой, на которой есть ссылки на файлы zip. Пользователь жмёт на ссылку, файлы качаются распаковываются в директорию программы в хомяке поверх того, что там было. Хотелось бы разгребать получающийся срач, но велосипедить лень.

unC0Rr ★★★★★ ()
Ответ на: комментарий от unC0Rr

Велосипедить. За него тебе будут благодарны, хотя я не представляю как эту библиотеку сделать независимой от двигла.

В NWN например это было сделано как директория override, ресурсы которой в рантайме подменяли изкоробочные ресурсы и при удалении оверрайда начинал опять использоваться искоробочный ресурс.

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

Dark_SavanT ★★★★★ ()
Ответ на: комментарий от Dark_SavanT

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

В принципе, это всё легко лепится на основе подхода игр серии Quake к хранению ресурсов: всё находится в архивах, которые загружаются в алфавитном порядке. Тогда и удалить пакет (даже если он заменяет собой какие-то файлы), и переопределить отдельные файлы не составит труда. Но требуется слой абстракции над ФС (кажется, где-то видел готовые либы такого плана).

unC0Rr ★★★★★ ()
Ответ на: комментарий от unC0Rr

в исходниках третьекваки есть их реализация pak-файлов на основе zip. делает примерно то что написал Dark_SavanT. драть GPL'нутый код необязательно, такая же система на коленке пишется с нуля за пару вечеров, но оттуда можно понять идею.

waker ★★★★★ ()
Последнее исправление: waker (всего исправлений: 1)
Ответ на: комментарий от unC0Rr

А как разруливать если два дополнения переопределяют один и тот же фаил? в случае как с квакой, получаем непойми что.

Dark_SavanT ★★★★★ ()
Ответ на: комментарий от Dark_SavanT

Последнее по алфавиту имеет перевес, вот и всё. Приоритетом можно управлять, меняя имена пакетов.

unC0Rr ★★★★★ ()
Ответ на: комментарий от unC0Rr

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

Dark_SavanT ★★★★★ ()
Ответ на: комментарий от Dark_SavanT

Мм.. ну это в общем-то дело составителя репозитория. В принципе несложно придумать какой-нибудь метафайл в каждом архиве с указаниями, что делать при переопределении файлов этого пакета или этим пакетом, известные конфликты с другими пакетами и т.п. Система-то по сути не ахти сложная, наверняка сотни игр велосипедили её.

unC0Rr ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.