Пакеты контента

Warning

В разработке, ещё не окончательно

Лаунчер имеет возможность напрямую запускать «пакеты контента» без подключения к серверу. Пакеты контента представляют собой самодостаточные zip-файлы, содержащие контент, который будет загружен игровым клиентом. Пакеты контента также могут основываться на обычной скачанной версии контента, в этом случае эти ассеты будут сначала скачаны и смонтированы.

Изначальный вариант использования пакетов контента — повторы в Space Station 14. Пакет содержит данные повтора вместе с необходимыми метаданными, чтобы лаунчер скачал подходящую версию игры для его загрузки. Это облегчает распространение повторов в виде простых zip-файлов, которые администраторы или игроки могут легко перетащить в лаунчер.

Пакеты контента представляют собой систему общего назначения, поэтому они могут быть полезны и для распространения других вещей.

Формат

Пакеты контента представляют собой обычные zip-файлы. Вы знаете, какие.

Содержимое zip-файла монтируется напрямую в корень VFS игры. /foo.txt будет доступен игре как /foo.txt.

Если указана базовая сборка (см. ниже), контент базовой сборки также будет скачан и загружен вместе с пакетом контента. Такой контент базовой сборки имеет приоритет над пакетом контента, поэтому заменить файлы в базовой сборке невозможно.

Специальный файл /rt_content_bundle.json интерпретируется игрой для извлечения базовых метаданных, необходимых для работы, таких как версия движка для загрузки.

rt_content_bundle.json

Вот JSON-данные, которые могут быть в rt_content_bundle.json:

// Комментарии JSON не принимаются лаунчером, они здесь лишь для помощи в документировании.
{
  // Обязательно: версия движка для использования.
  "engine_version": "0.124.0.0",
  // Опционально: удалённая сборка для скачивания в качестве основы.
  // Если не указана, удалённая сборка не скачивается.
  "base_build": {
    // Эти свойства по сути эквивалентны тому, что возвращается через HTTP API сервера /info.
    "fork_id": "wizards",
    "version": "2f6d909e443ecb501b916b69a2996acb351cc216",
    "download_url": "https://cdn.centcomm.spacestation14.com/builds/wizards/builds/2f6d909e443ecb501b916b69a2996acb351cc216/SS14.Client.zip",
    "hash": "a306c7b16b6bca9d7bd56a017c6fb50ba6205bd9f58b40752fe9ed9bd21ed195",
    "manifest_download_url": "https://cdn.centcomm.spacestation14.com/cdn/version/2f6d909e443ecb501b916b69a2996acb351cc216/download",
    "manifest_url": "https://cdn.centcomm.spacestation14.com/cdn/version/2f6d909e443ecb501b916b69a2996acb351cc216/manifest",
    "manifest_hash": "1657E0BD25D640946453E11F1B7E95D5FAF5B4E1087330D0692BAB2EFD1E6F00"
  }
}

Безопасность сайдлоадинга

Пакеты контента теоретически делают до чёрта простым сайдлоадинг читов в игру вместе с остальным официальным контентом сервера. Теоретически вы могли бы сделать пакет контента, который просто содержит дополнительный чит-код в /Assemblies/, а в остальном просто загружает последнюю версию любого сервера, к которому вы подключаетесь.

Чтобы смягчить это, манифесты контента позволяют ограничить список сборок, которые будут загружены из /Assemblies/, с помощью свойства clientAssemblies. Поскольку пакеты контента всегда загружаются после контента игры, они не могут заменить никакие файлы, а серверы могут ограничить загружаемые сборки только теми, которые они предоставляют.

Аутентификация

Пакеты контента запускаются с отключённой аутентификацией. Лаунчер не выдаст клиенту токен аутентификации, поэтому подключиться к аутентифицированным серверам с пакетом контента невозможно (что бы вы там ни задумали..?)

(Да, я знаю, что только что написал целый раздел про сайдлоадинг выше. Я передумал и не хочу его удалять. Рррр)

Subpages