> For the complete documentation index, see [llms.txt](https://docs.bestway.com.ua/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.bestway.com.ua/gem-rts-v1-ru/bazovaya-informaciya-o-resursakh-v-gem-rts/arkhitektura-resursov-igry/pakety.md).

# Пакеты

## Общие сведения

Все пакеты лежат в папке packages/ в основной папке игры.

<figure><img src="https://2052154247-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fx2fkAZ6oKGGdByFhKPpa%2Fuploads%2FNSbhrHA4uBxcUstM35bK%2Fpackages.png?alt=media&amp;token=67b21b49-8ef1-4461-a28d-888e14a4eaee" alt=""><figcaption><p>Папка с пакетами</p></figcaption></figure>

Каждый пакет находится в своей папке.\
Идентификатор пакета записан в файле **.info**.

<figure><img src="https://2052154247-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fx2fkAZ6oKGGdByFhKPpa%2Fuploads%2FVMEgbyMdD6gws6FYmOWq%2Fpackage_example.png?alt=media&amp;token=a748466a-7130-4610-9c83-22bacd5ca2dc" alt=""><figcaption><p>Пример содержимого пакета</p></figcaption></figure>

Ресурсы пакета разделены по принципу использованию на две основные секции.

<table><thead><tr><th width="202">Название секции</th><th>Описание</th></tr></thead><tbody><tr><td>global</td><td><p>Ресурсы секции 'global' применяются один раз при запуске приложения и при включении/выключении пакетов в настройках игры.</p><p>В этой секции находятся ресурсы:</p><ul><li>файлы интерфейса front-end</li><li>звуки,</li><li>музыка,</li><li>видео,</li><li>карты</li></ul></td></tr><tr><td>scene</td><td>Ресурсы секции 'scene' применяются перед началом загрузки сцены, при создании новой сессии или в процессе подключения к сессии.</td></tr></tbody></table>

## Локализация

В пакетах поддерживается локализация.\
Локализируемые ресурсы размещаются в папках .lang/, где lang - код языка (обычно двухсимвольный).

<figure><img src="https://2052154247-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fx2fkAZ6oKGGdByFhKPpa%2Fuploads%2FzwWLfRI9hgo8fwKgHGxB%2Flocalization.png?alt=media&amp;token=fa41fc14-8d19-46be-ad0f-130fd87f1a8b" alt=""><figcaption><p>Папки с локализационными файлами и их содержимое</p></figcaption></figure>

## Настройка свойств пакета

Свойства пакета задаются параметрами в файле .info, который находится в корне папки пакета.

<table><thead><tr><th width="248">Параметр</th><th>Описание</th></tr></thead><tbody><tr><td>id</td><td>Уникальный идентификатор пакета.<br>Если пакет является Steam DLC или Steam Workshop, то идентификатор назначается Steam.<br>При создании пакета через интерфейс раздела "Настройки" уникальный идентификатор назначается автоматически.<br>В других случаях рекомендуется использовать любой подходящий GUID-генератор (например, <a href="http://www.guidgen.com/">http://www.guidgen.com/</a>).</td></tr><tr><td>legacy_id</td><td>Параметр id заменяется на legacy_id в процессе присвоения пакету Steam DlcId или WorkshopId. Значение параметра берется из параметра id.<br>Таким образом, старые ссылки (например, save game) будут идентифицировать пакет</td></tr><tr><td>name</td><td>Название пакета.<br>Не обязательный параметр.<br>Если не задан, то в качестве названия берется папка, в которой лежит пакет. В случае Steam DLC игнорируется.</td></tr><tr><td>author</td><td>Автор пакета.<br>Не обязательный параметр. Отображается в свойствах пакета.</td></tr><tr><td>order</td><td><p>Порядок в списке пакетов.</p><p>Значение параметра может быть как положительным, так и отрицательным.<br>Влияет на порядок в списке, в котором пакеты отображаются в настройках. По умолчанию равен 0 и отображается самым верхним в списке пакетов.</p></td></tr><tr><td>default_disabled</td><td>Пакет по умолчанию будет отключен, пока игрок не активирует его в "Настройках игры".<br>Если параметр не задан, то как только пакет будет установлен, он считается включенным.</td></tr><tr><td>hidden</td><td>Пакет не отображается в настройках.<br>По умолчанию пакеты отображаются в настройках.</td></tr><tr><td>dependency &#x3C;id пакета></td><td>Зависимость от другого пакета.<br>Блок с параметром dependency может быть использован многократно для создания множественных зависимостей. Пакеты применяются в том порядке, в котором записаны блоки.</td></tr><tr><td>incompatible &#x3C;id пакета></td><td>Указывает на несовместимость с пакетом. Игра будет отключать пакет с указанным id при активации пакета.</td></tr><tr><td>min_core_version &#x3C;count> max_core_version &#x3C;count></td><td>Минимальная и максимальная версии игры, для которых поддерживается совместимость пакета.<br>Если параметры не указаны, то соответствующая проверка отсутствует.</td></tr><tr><td>delete_global</td><td>Список виртуально удаляемых ресурсов при активации секции 'global'.</td></tr><tr><td>delete_scene</td><td>Список виртуально удаляемых ресурсов при активации секции 'scene'.</td></tr><tr><td>always_activate_scene</td><td>Всегда активировать секцию 'scene' этого пакета если активна секция 'global'. По умолчанию секция 'scene' активируется, если загружается карта, которая находится в секции 'global' этого пакета.</td></tr><tr><td>always_activate_global</td><td>Означает, что данный пакет изменяет глобальные игровые настройки (т.е. этот пакет будучи включенным всегда отмечается в списке при создании хоста, в сохранении игры и т.п.).</td></tr><tr><td>sign</td><td><p>Цифровая подпись.</p><p>Только для пакетов, выпущенных компанией Best Way.</p><p>Пакеты, имеющие такую подпись не допускают какой-либо модификации.</p><p>Если подпись не подтверждается, то пакет считается испорченным и не загружается.</p></td></tr><tr><td>token_count</td><td><p>Количество токенов, которые дает данный пакет.</p><p>Токены могут быть присвоены только пакетам, выпускаемым компанией Best Way.</p></td></tr><tr><td>token_sign</td><td>Цифровая подпись для токенов.<br>Если подлинность не подтверждается, то токены игнорируются.</td></tr><tr><td>hash</td><td><p>Значение параметра hash позволяет предварительно определять, что содержимое пакета одинаковое у разных пользователей и на сервере при игре совместно.</p><p>Значение параметра hash автоматически обновляется при публикации в пакета в Workshop</p></td></tr><tr><td>obsolete</td><td>Позволяет скрыть ресурсы пакета (объекты и текстуры) в списках доступных ресурсов в редакторе.</td></tr><tr><td>client_only</td><td>Содержимое пакета доступно только на клиенте, не подгружается на сервер и не влияет на игровой процесс.</td></tr></tbody></table>

<details>

<summary>Пример содержимого файла .info</summary>

```
{id "cc507d63-2143-4598-99de-237a5ea5e621"}
{name "Пример Пакета"}
{order 1}
{dependency "02f8e8f9-91d9-45e0-8ee6-dc56adae4763"}; main package
{min_core_version 1.030}; требуется версия игры не меньше чем 1.030
{default_disabled}
{author "Created by Best Way, at Mon Apr 15 16:39:49 2024"}
```

</details>

### Примеры параметров свойств пакета

<table><thead><tr><th width="273">Пример блока</th><th width="248">Пояснения</th><th>Дополнительно</th></tr></thead><tbody><tr><td><code>{order -100}</code></td><td>опустить пакет ниже в списке пакетов на 100 пунктов</td><td></td></tr><tr><td><code>{order +4000}</code></td><td>поднять пакет выше в списке пакетов на 4000 пунктов</td><td></td></tr><tr><td><code>{default_disabled}</code></td><td>состояние по умолчанию "отключен"</td><td>то же самое, что и <code>{default_disabled 1}</code></td></tr><tr><td><code>{hidden 0}</code></td><td>пакет отображается в списке пакетов</td><td></td></tr><tr><td><code>{hidden}</code></td><td>пакет не отображается в списке пакетов</td><td>то же самое, что и<br><code>{hidden 1}</code></td></tr><tr><td><code>{dependency "b86c6020-9b25-4659-bcdf-53b12715a0a1"}</code></td><td>пакет зависит от пакета с id "b86c6020-9b25-4659-bcdf-53b12715a0a1"</td><td></td></tr><tr><td><code>{delete_global "/map/single/2-fra" "/video/menu.avi"}</code></td><td>при загрузке секции global игнорировать папку /map/single/2-fra<br>и файл /video/menu.avi</td><td></td></tr><tr><td><code>{delete_scene "/entity/service/flag"}</code></td><td>при загрузке секции scene игнорировать объект flag из папки /entity/service/</td><td></td></tr></tbody></table>
