Как использовать gpakr от SUP?

Всем привет! Возможно, вы даже не знаете о существовании gpakr в вашей SUP-сборке.

gpakr - это утилита для декомпиляции контента, сжатого в несколько слоев.

Давайте рассмотрим структуру gpakr архива.

Структура файла

Файл gpakr состоит из GMA-архива, который был упакован в LZMA, а затем снова упакован в Bzip2.

Но как же такое сделать?

Важно!

Если у вас SUP сборка, проверьте, есть ли у вас файл gpakr. Обычно он находится в следующих папках: dash/pdash/plib_v2. Далее, найдите папку preload. Если файла там нет, то вам необходимо установить его вручную из архива.

Как должны выглядеть папки dash/pdash/plib_v2

image
image
image

Если у вас SUP сборка тогда переместите содержимое папки addonSUP в вашу папку addons. И затем переименуйте на вашу dash/pdash/plib_v2

Если у вас не SUP сборка тогда просто переместите содержимое папки addon в папку addons на вашем сервере.

Пока есть только один способ. (уже два)

РУЧНОЙ СПОСОБ

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

Для начала нам нужно убедиться что наша папка с контентом построена правильно.
.
└── ваша папка с контентом/
├── materials/
│ ├── lftr.vtf
│ └── test.png
├── sounds/
│ └── lol.mp3
└── …

Если она выглядит так, значит идем дальше.

С архива вытаскиваем на рабочий стол app/fastgmad.exe.
image
(данный экземпляр был модифицирован для работы без addon.json)

Затем перетаскиваем нашу папку с контентом в fastgmad.exe
Запись 2024-02-23 033420

На выходе мы получаем файл с названием нашей папки, но с расширением .gma.
Отлично первый этап пройден.

!!!Перемещаем этот gma файл в папку Garry’s Mod/garrysmod/data!!!
image
(Посмотреть папку можно так)

Если у вас уже установлен luadev, то можно пропустить копирование файла в папку lua игры и сразу выполнить код через ваш редактор.

Если же у вас нет luadev, то снова идем в папку с игрой, Garry’s Mod/garrysmod/lua. Сюда переносим файл из архива, который вы скачали ранее. Там есть файл compress.lua. Именно его мы и копируем в папку lua.

Далее редактируем данный lua. Меняем название .gma файла и название выходного файла.

Затем в самой игре заходим на карту gm_construct (это самая не загруженная карта) и в консоль прописываем lua_openscript compress.lua.

Если вы все сделали правильно, то игра зависнет если большой файл, но обязательно отвиснет и издаст звук после окончания. В консоли должно появиться сообщение !DONE!.

Если все хорошо, переименуйте файл вашфайл.dat в вашфайл.bsp. И уже можно переходить к следующему этапу.

Важно!

вашфайл.bsp это и есть ваш LZMA файл

Если вы сделали все правильно и у вас на руках есть файл вашфайл.bsp, то можно уже переместить его в папку аддона gpakr_out/data/sup/gpakr/rp.

После перемещения мы должны добавить наш датапак в gpakr чтобы он увидел его.
Переходим к аддону который мы установили ранее
addons\gpakr_out\lua\gpakr
И видим там файл example-data.lua. Редактируем его под ваш файл

Но это еще не конец. Нужно сжать его в bzip2 для клиентов. Если у вас нет 7-Zip, скачайте его. Правой кнопкой мыши нажмите на вашфайл.bsp, выберите 7-Zip и добавьте его в архив.

Обратите внимание на название файла. Должно быть так вашфайл.bsp.bz2
Нажимаем ОК и далее заливаем на наш FastDL хост по пути
https://вашхост.ru/data/sup/gpakr/rp/вашфайл.bsp.bz2

PROFIT!

После запуска сервера у вас должно выйти что то типо такого


Видно что gpakr увидел наш новый датапак m9k, успешно кэшировал и установил его.

Полу-автоматический способ (profef)

Данный способ был любезно предоставлен пользователем @profef

:warning: Не используйте timecalc.bat он нужен только для засекания времени.

Есть 4 bat файла

  1. fast - имеет минимальное сжатие но самое быстрое
  2. normal - золотой баланс между сжатием и временем
  3. normal_fast - быстрее чем обычный normal, но вес файла чуть больше
  4. best - ЛУЧШЕЕ сжатие но и самое долгое

Для продолжения нужно скачать архив от @profef
pak.zip (473,6 КБ)

Всё просто: перетащите папку с файлами или .gma-файл на выбранный вами пресет и дождитесь окончания процесса.

TIP: Можно увеличить скорость lzma добавив аргумент -mt{КОЛИЧЕСТВО ПОТОКОВ} в выбранный ваш пресет.

Как должно выглядеть

Узнать количество потоков можно в диспетчере задач - вкладка производительность

Диспетчер задач


В данном случае 16 потоков. Значит -mt16

Бенчмарк

CPU: AMD Ryzen 7 4800H RAM: 16GB

В качестве примера возьмем папку контента из воркшопа с весом 1,86 ГБ (1913 МБ) и выберем пресет normal с -mt16 и без

C -mt16

Без -mt16

2 лайка

Теперь тут пусто.

1 лайк