К содержимому
Как поделиться уровнем вручную
На этой странице

Как поделиться уровнем вручную

Что несёт в себе архив, в каких пяти видах он бывает и какими строчками tar, zip и gpg создать и открыть каждый

Уровень - это папка с файлами. Архив - та же папка, собранная для передачи. Всё, что использует уровень, едет вместе с ним: песня, картинки, обложка. На другой машине распакованный уровень сразу играется

Куда получатель кладёт уровень - Метаданные и как поделиться › Как поделиться сегодня

Что не попадает в архив

  • ресурс, который уровень берёт по ссылке. Ссылка остаётся прежней
  • файл, на который в уровне никто не ссылается

Отчёт экспорта игры перечисляет и то, и другое. Подробнее - Экспорт и защита › Экспорт уровня

Пять видов

Каждый открывается инструментами, которые на той стороне уже есть:

ФайлЧто внутриЧем открыть
level.json.gpgтолько документ уровня, под паролем, лежит в папке уровняgpg
LEVEL_FOLDER.tar.gzвся папка одним архивом7-Zip, Keka, Ark, Проводник
LEVEL_FOLDER.tar.gz.gpgтот же архив под паролемgpg
LEVEL_FOLDER.zipта же папка в виде zipWindows двойным кликом, ставить ничего не нужно
LEVEL_FOLDER.zip.gpgтот же zip под паролемgpg

По умолчанию игра ставит пароль на архив средствами самого zip, AES-256. Такой архив откроет любой архиватор, кроме Проводника: он спросит пароль. Виды с .gpg игра пишет по запросу

Перед тем как запускать строчки

Замените в строчках два места:

  • LEVEL_FOLDER - имя папки уровня, то есть его id. Это длинная строка из цифр и букв, так называется папка внутри levels
  • YOUR_PASSWORD - сам пароль

Пароль, вписанный в командную строку, остаётся в истории оболочки. Уберите из строчки --batch --pinentry-mode loopback --passphrase YOUR_PASSWORD, и gpg спросит пароль на экране

Документ уровня через gpg

Шифрование кладёт рядом level.json.gpg. Исходный файл остаётся на месте: удалите его сами, когда проверите результат. Расшифровка снова пишет документ под его именем. Зашифрованный файл никуда не девается:

gpg -c --cipher-algo AES256 --batch --pinentry-mode loopback --passphrase YOUR_PASSWORD level.json
gpg -d --batch --pinentry-mode loopback --passphrase YOUR_PASSWORD level.json.gpg > level.json

Архив tar.gz

Папка пакуется изнутри: в архиве лежат сами файлы уровня, без папки вокруг них. Для распаковки папка назначения должна уже существовать, tar её не создаёт. mkdir работает одинаково в cmd, в PowerShell и в терминале на Mac или Linux:

tar -czf LEVEL_FOLDER.tar.gz -C LEVEL_FOLDER .
mkdir LEVEL_FOLDER
tar -xzf LEVEL_FOLDER.tar.gz -C LEVEL_FOLDER

Упаковка и шифрование за один проход. Незащищённый архив при этом вообще не попадает на диск. Вторая строчка расшифровывает и распаковывает архив обратно в ту же папку:

tar -czf - -C LEVEL_FOLDER . | gpg -c --cipher-algo AES256 --batch --pinentry-mode loopback --passphrase YOUR_PASSWORD -o LEVEL_FOLDER.tar.gz.gpg
gpg -d --batch --pinentry-mode loopback --passphrase YOUR_PASSWORD LEVEL_FOLDER.tar.gz.gpg | tar -xz -C LEVEL_FOLDER

Архив zip

На Windows - в PowerShell, он есть на каждой машине. Звёздочка пакует содержимое папки, а не саму папку. Expand-Archive создаёт папку сам, mkdir заранее не нужен:

Compress-Archive -Path LEVEL_FOLDER\* -DestinationPath LEVEL_FOLDER.zip
Expand-Archive -Path LEVEL_FOLDER.zip -DestinationPath LEVEL_FOLDER

На Mac или Linux - zip и unzip:

cd LEVEL_FOLDER && zip -r ../LEVEL_FOLDER.zip .
unzip LEVEL_FOLDER.zip -d LEVEL_FOLDER

Zip с паролем, который спросит 7-Zip, делает сам 7-Zip. Он должен быть установлен:

7z a -tzip -mem=AES256 -pYOUR_PASSWORD LEVEL_FOLDER.zip .\LEVEL_FOLDER\*

Игра читает их обратно

Все виды работают в обе стороны. Что записала игра, открывают gpg, tar и zip. Что сделали gpg, tar и zip, читает игра. Ради этого и выбраны стандартные инструменты, а не свой формат

Подсказка

Игра смотрит, чем файл является, а не как он называется. Поэтому переименованный архив всё равно откроется. 7z игра распознаёт, но не принимает: она называет формат, а не объявляет файл битым. Перепакуйте такой архив в zip

Внимание

ЗАБЫТЫЙ ПАРОЛЬ ВОССТАНОВИТЬ НЕЛЬЗЯ. Ключ не хранится нигде: ни в игре, ни в файле, ни у разработчиков. Нет ни сброса, ни восстановления, ни обходного пути. Уровень с потерянным паролем потерян вместе с ним. Запишите пароль до того, как закроете редактор

Дальше: Папка уровня и бэкапы, Не потерять работу