67 lines
3.6 KiB
Markdown
67 lines
3.6 KiB
Markdown
# Графические MPQ-патчи
|
||
|
||
В этой директории через DVC версионируется распакованное содержимое всех 15 патчей из
|
||
`graphicsPatches` в `patch-layout.json`. Git хранит небольшие файлы `*.dvc`, а сами ресурсы —
|
||
в S3 remote `customization`. Хэшированные пути в S3 являются внутренней адресацией DVC:
|
||
исходное дерево с обычными именами восстанавливается командой `dvc pull`.
|
||
|
||
## Первичная настройка
|
||
|
||
```powershell
|
||
py -m pip install -r requirements-dvc.txt
|
||
Copy-Item .env.example .env # если локального .env ещё нет
|
||
.\configure-dvc.ps1
|
||
py -m dvc pull
|
||
```
|
||
|
||
Можно скачать один патч, передав его указатель явно:
|
||
|
||
```powershell
|
||
py -m dvc pull assets/graphics/Data/ruRU/patch-ruRU-X.dvc
|
||
```
|
||
|
||
Секреты записываются только в `.dvc/config.local`; этот файл исключён из Git. Вместо ключей
|
||
из `.env` можно использовать AWS profile: `.\configure-dvc.ps1 -Profile moonwell`.
|
||
|
||
## Изменение ресурсов
|
||
|
||
DVC-кэш использует hardlink на NTFS. Перед ручным изменением дерева отвяжите его от кэша:
|
||
|
||
```powershell
|
||
py -m dvc unprotect assets/graphics/Data/ruRU/patch-ruRU-X
|
||
# изменить, добавить или удалить файлы
|
||
py -m dvc add assets/graphics/Data/ruRU/patch-ruRU-X
|
||
py -m dvc push
|
||
git add assets/graphics/Data/ruRU/patch-ruRU-X.dvc
|
||
```
|
||
|
||
Сначала выполняйте `dvc push`, затем коммитьте Git-указатель, чтобы коммит не ссылался на ещё
|
||
не загруженные объекты.
|
||
|
||
## Импорт MPQ
|
||
|
||
`mpqextract` принимает встроенный `(listfile)` и любое количество внешних listfile. Он извлекает
|
||
все известные пути, а блоки с неизвестными именами сохраняет в `__mpqmeta__/unresolved/`.
|
||
Манифест `__mpqmeta__/unresolved.json` связывает каждый blob с MPQ-хэшами и индексом блока,
|
||
поэтому содержимое архива не теряется даже при неполном listfile.
|
||
|
||
```powershell
|
||
cargo run --release --manifest-path tool/Cargo.toml --bin mpqextract -- `
|
||
'patch.mpq' 'assets/graphics/Data/ruRU/patch-ruRU-N' 'master-list.txt'
|
||
```
|
||
|
||
В `patch-ruRU-A`, `B`, `S`, `T`, `U` и `W` есть такие безымянные блоки. Для их безопасной
|
||
пересборки нужен авторитетный listfile с исходными путями; пока он не найден, исходные MPQ в
|
||
дистрибуционном S3 остаются каноническими архивами. `mpqpack` намеренно отказывается собирать
|
||
дерево с `__mpqmeta__`, поскольку подмена путей хэшами изменила бы семантику патча.
|
||
|
||
Полностью разрешённое дерево собирается так:
|
||
|
||
```powershell
|
||
cargo run --release --manifest-path tool/Cargo.toml --bin mpqpack -- `
|
||
'assets/graphics/Data/ruRU/patch-ruRU-X' 'build/graphics/patch-ruRU-X.MPQ'
|
||
```
|
||
|
||
Сводка исходных объектов, DVC-хэшей и количества разрешённых блоков находится в
|
||
`assets/graphics/sources.json`.
|