Перейти к содержимому

Публикация

install собирает папку профиля, но лаунчер о ней ничего не знает. Чтобы сборка стала доступна, её нужно опубликовать.

Окно терминала
laminara-server exec publish <имя>

Что делает publish

Команда обходит папку профиля и составляет манифест — список всех файлов с их размерами и хешами. Манифест приводится к каноническому виду (файлы отсортированы, сериализация детерминированная) и подписывается ключом Ed25519 из build.signingKeyPath.

Ключевая деталь: подпись накладывается ровно на те байты, которые получит лаунчер. Он проверяет её по ним же, ничего не пересериализуя. Поэтому проверка не зависит ни от версии Laminara, ни от того, как манифест хранился и передавался.

Что запрашивает лаунчер

При входе лаунчер получает от сервера список сборок и запрашивает манифест нужной:

  1. Проверка подписи

    Лаунчер сверяет подпись манифеста с кольцом ключей, запечённым в него при сборке. Не сошлось ни с одним — сборка отвергается целиком.

  2. Сверка файлов

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

  3. Докачивание

    Недостающие файлы качаются по /objects/<хеш>. Каждый скачанный файл проверяется по хешу.

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

Обновление сборки

Обновить сборку — это install (или правка файлов профиля вручную) и снова publish. Новый манифест заменяет старый; при следующем запуске лаунчер подтянет разницу.