Как поделиться уровнем вручную
Что несёт в себе архив, в каких пяти видах он бывает и какими строчками tar, zip и gpg создать и открыть каждый
Уровень - это папка с файлами. Архив - та же папка, собранная для передачи. Всё, что использует уровень, едет вместе с ним: песня, картинки, обложка. На другой машине распакованный уровень сразу играется
Куда получатель кладёт уровень - Метаданные и как поделиться › Как поделиться сегодня
Что не попадает в архив
- ресурс, который уровень берёт по ссылке. Ссылка остаётся прежней
- файл, на который в уровне никто не ссылается
Отчёт экспорта игры перечисляет и то, и другое. Подробнее - Экспорт и защита › Экспорт уровня
Пять видов
Каждый открывается инструментами, которые на той стороне уже есть:
| Файл | Что внутри | Чем открыть |
|---|---|---|
level.json.gpg | только документ уровня, под паролем, лежит в папке уровня | gpg |
LEVEL_FOLDER.tar.gz | вся папка одним архивом | 7-Zip, Keka, Ark, Проводник |
LEVEL_FOLDER.tar.gz.gpg | тот же архив под паролем | gpg |
LEVEL_FOLDER.zip | та же папка в виде zip | Windows двойным кликом, ставить ничего не нужно |
LEVEL_FOLDER.zip.gpg | тот же zip под паролем | gpg |
По умолчанию игра ставит пароль на архив средствами самого zip, AES-256. Такой архив откроет любой архиватор, кроме Проводника: он спросит пароль.
Виды с .gpg игра пишет по запросу
Перед тем как запускать строчки
Замените в строчках два места:
LEVEL_FOLDER- имя папки уровня, то есть его id. Это длинная строка из цифр и букв, так называется папка внутриlevelsYOUR_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
ЗАБЫТЫЙ ПАРОЛЬ ВОССТАНОВИТЬ НЕЛЬЗЯ. Ключ не хранится нигде: ни в игре, ни в файле, ни у разработчиков. Нет ни сброса, ни восстановления, ни обходного пути. Уровень с потерянным паролем потерян вместе с ним. Запишите пароль до того, как закроете редактор
Дальше: Папка уровня и бэкапы, Не потерять работу