# Кампании

## Основные параметры

Данные для настройки кампаний лежат в файле **global\backend\meta\campaign.json** или в папке **campaign\*.json**

{% hint style="info" %}
В модах настройки параметров Кампаний для Metagame может находиться в папке **global\interface\campaings\\\*json**
{% endhint %}

<table><thead><tr><th width="202" valign="top">Параметр</th><th width="111" valign="top">Тип данных</th><th valign="top">Описание</th></tr></thead><tbody><tr><td valign="top"><code>_id</code></td><td valign="top">string</td><td valign="top">Идентификатор кампании</td></tr><tr><td valign="top"><code>tags</code></td><td valign="top">array of string</td><td valign="top">Ярлыки (теги) карты, используется опционально</td></tr><tr><td valign="top"><code>category</code></td><td valign="top">string</td><td valign="top"><p>Тип кампании - используется для распределения кампаний в интерфейсе на соответствующих вкладках:</p><ul><li><code>story</code> - сюжетная кампания с героями</li><li><code>historical</code> - кампания по историческим событиям</li><li><code>raid</code> - Рейд</li><li><code>conquest</code> - Завоевание. <br>Для типа кампании <strong>сonquest</strong> разработан отдельный интерфейс, использующий собственную логику обработки данных.</li></ul></td></tr><tr><td valign="top"><code>display_order</code> </td><td valign="top">integer</td><td valign="top">Порядок отображения кампании в интерфейсе Metagame.<br>Чем меньше значение параметра, тем кампания выше находится в списке кампаний</td></tr><tr><td valign="top"><code>online</code></td><td valign="top">string</td><td valign="top">Признак возможности полноценной работы кампании в online режиме. <br>Значение участвует в множественных проверках на backend.<br><strong>Примечание</strong>: для модификаций, которые работают в offline режиме, необходимо выставить значение в <code>false</code>, чтобы уведомить интерфейс Metagame об отсутствии кампании в online режиме.</td></tr><tr><td valign="top"><code>phase</code></td><td valign="top">string</td><td valign="top"><p>Начальная фаза в кампании. <br>Используется только для кампаний типа <strong>conquest</strong>.</p><ul><li><code>attack</code> - фаза атаки;</li><li><code>defence</code> - фаза защиты</li></ul></td></tr><tr><td valign="top"><code>currency</code></td><td valign="top">string</td><td valign="top"><p>валюта кампании (опционально):</p><ul><li><code>rem</code> - рейхмарки Германии;</li><li><code>usd</code> - доллары США;</li><li><code>rub</code> - рубли СССР.</li></ul></td></tr><tr><td valign="top"><code>mission_results</code></td><td valign="top">string</td><td valign="top"><p>Задает способ учета  завершенных миссий в кампании: </p><ul><li><p><code>only_first_win</code></p><ul><li>используется в кампаниях, в которых игрок получает опыт и внутриигровую валюту;</li><li>учет только первой победы в указанной миссии.</li></ul></li><li><p><code>degrade_on_each_win</code></p><ul><li>используется в Рейде и кампаниях с прокачкой игрока;</li><li>учет повторно запущенных миссий, каждый новый запуск миссии уменьшает получаемую за нее прохождение награду.</li></ul></li><li><p><code>complete_once</code></p><ul><li>используется в Завоевании;</li><li>означает, что матч можно сыграть только один раз; если игрок отказался играть, то считается, что он проиграл.</li></ul></li></ul></td></tr><tr><td valign="top"><code>money</code></td><td valign="top">integer</td><td valign="top">Стартовые значения свободного опыта <code>freeXp</code>и внутриигровой валюты <code>silver</code> в начале кампании, используется для кампаний с прокачкой игрока.</td></tr><tr><td valign="top"><code>node</code></td><td valign="top">object с ключом nodeId</td><td valign="top">Описание структуры узлов в кампании</td></tr></tbody></table>

## Описание структуры узлов в кампании

<table><thead><tr><th width="155" valign="top">Параметр</th><th width="149" valign="top">Тип данных</th><th valign="top">Описание</th></tr></thead><tbody><tr><td valign="top"><code>tree_x</code></td><td valign="top">number</td><td valign="top">Координата <strong>х</strong> узла в графе кампании, работает по аналогии с деревом технологий. Используется для отображения графа кампании в интерфейсе.</td></tr><tr><td valign="top"><code>tree_y</code></td><td valign="top">number</td><td valign="top">Координаты <strong>у</strong> узла в графе кампании.</td></tr><tr><td valign="top"><code>map</code></td><td valign="top">array of string</td><td valign="top">Список <strong>id</strong> карт для рандомного выбора.<br>Примечание: указанные карты должны быть в списке карт.</td></tr><tr><td valign="top"><code>map_groups</code></td><td valign="top">array of object</td><td valign="top"><p>Список <strong>id</strong> групп карт для рандомного выбора:</p><ul><li><code>attack</code> : array of string <br>список id карт для рандомного выбора для атаки;</li><li><code>defence</code> : array of string <br>список id карт для рандомного выбора для защиты</li></ul><p>Примечание: опционально, только для <strong>conquest</strong></p></td></tr><tr><td valign="top"><code>level</code></td><td valign="top">number</td><td valign="top">Технологический уровень вражеских батальонов.</td></tr><tr><td valign="top"><code>open</code></td><td valign="top">boolean</td><td valign="top">Открыт ли узел со старта кампании (опционально).</td></tr><tr><td valign="top"><code>open_up</code></td><td valign="top">array of string</td><td valign="top">Список <strong>id узлов</strong>, в которые можно перейти из этого узла (опционально).</td></tr><tr><td valign="top"><code>opened_by</code></td><td valign="top">array of string</td><td valign="top">Список <strong>id узлов</strong>, из которых можно перейти в этот узел (опционально). <br>Примечание: если есть связь из <code>open_up</code>, то в обязательном порядке должна быть прописана обратная связь через <code>opened_by</code>.</td></tr><tr><td valign="top"><code>hidden</code></td><td valign="top">boolean</td><td valign="top">Некоторые узлы могут быть изначально скрытыми в интерфейсе. <br>Узлы становятся видимыми, когда выставлен флаг <code>open</code> (опционально).</td></tr><tr><td valign="top"><code>bonus</code></td><td valign="top">boolean</td><td valign="top">Признак того, что узел является бонусным, а не сюжетной развилкой. <br>Если узел содержит сюжетную развилку, то при выполнении миссии в этом узле альтернативные узлы закрываются.<br>Примечание: по умолчанию узлы являются сюжетными развилками (опционально).</td></tr><tr><td valign="top"><code>type</code></td><td valign="top">string</td><td valign="top"><p>Тип узла (опционально, только для <strong>conquest</strong>):</p><ul><li><code>hq</code> - штаб;</li><li><code>land</code> - обычная территория.</li></ul></td></tr><tr><td valign="top"><code>owner</code></td><td valign="top">string</td><td valign="top"><p>Начальный владелец узла (опционально, только для <strong>conquest</strong>): </p><ul><li><code>player</code>- игрок, </li><li><code>enemy</code> - враг.</li></ul></td></tr><tr><td valign="top"><code>final</code></td><td valign="top">boolean</td><td valign="top">Признак, что это финальная миссия, по прохождении которой кампания считается пройденной (опционально). <br>Примечание: в настоящий момент не используется.</td></tr></tbody></table>

## Примеры настройки Кампании для Metagame

<details>

<summary>Пример настройки общих параметров кампании</summary>

```json
{
    "_id": "example",
    "category": "historical",
    "currency": "rub",
    "display_order": 7,
    "enabled": true,
    "in_progress": false,
    "mission_results": "degrade_on_each_win",
    "money": {
        "freeXp": 250,
        "silver": 1000
    },
    "online": true,
    "tags": ["rus"]
}
```

Пояснения:

* `_id` – уникальный идентификатор кампании, в данном случае "example".
* `category` – категория кампании, здесь "historical", что указывает на историческую кампанию.
* `currency` – валюта, используемая в кампании, здесь "rub" (рубли).
* `display_order` – порядок отображения кампании в интерфейсе, чем меньше число, тем выше в списке.
* `enabled` – кампания активна (`true`).
* `in_progress` – кампания в процессе выполнения (`false` – означает, что кампания ещё не начата).
* `mission_results` – тип расчета результатов миссий: `degrade_on_each_win` – означает, что награды уменьшаются при каждом перезапуске.
* `money` – стартовые бонусы:
  * `freeXp` – 250 единиц свободного опыта.
  * `silver` – 1000 серебра (игровая валюта).
* `online` – `true`  означает, что кампания поддерживает **online** режим (примечание: для модификаций, которые работают только в **offline** режиме, необходимо выставить значение в `false`)
* `tags` – теги, помогающие классифицировать кампанию:
  * `"rus"` – кампания за СССР.

</details>

<details>

<summary>Пример настройки узлов кампании</summary>

```json
"node": {
    "start": {
        "bonus": true,
        "level": 3,
        "map": ["start_mission"],
        "open": true,
        "open_up": ["line2", "line2_2"],
        "tree_x": 2.5,
        "tree_y": 1
    },
    "line2": {
        "bonus": true,
        "level": 3,
        "map": ["second_line_mission_1"],
        "open": false,
        "open_up": ["finish"],
        "opened_by": ["start"],
        "tree_x": 2.5,
        "tree_y": 2
    },
    "line2_2": {
        "bonus": true,
        "level": 5,
        "map": ["second_line_mission_2"],
        "open": false,
        "opened_by": ["start"],
        "tree_x": 3.5,
        "tree_y": 2
    },
    "finish": {
        "bonus": true,
        "level": 6,
        "map": ["finish_mission"],
        "open": false,
        "opened_by": ["line2"],
        "tree_x": 2.5,
        "tree_y": 3
    }
```

Раздел `"node"` определяет дерево миссий, их взаимосвязи и условия открытия.

Каждый узел (миссия) имеет следующие параметры:

* Название узла – идентификатор, например, `start`, `line2`, `line2_2`, `finish`.
* `bonus` – миссия является бонусной, а не сюжетной развилкой (`true`).
* `level` – технологический уровень вражеских батальонов

  &#x20;(3, 4, 5 и т.д.).
* `map` – название карты, на которой проходит миссия ("start\_mission", "line2\_mission\_1" и т.д.).
* `open` – открыта ли миссия сразу (`true` – доступна, `false` – заблокирована).
* `open_up` – список узлов, которые откроются после выполнения данной миссии.&#x20;
* `opened_by` – какие узлы открывают данную миссию.
* `tree_x`, `tree_y` – координаты узла на древе кампании.

**Дерево миссий**

&#x20;`start` *→*   `line2` *→* `finish`\
&#x20;  ↓\
`line2_2`<br>

</details>

{% hint style="warning" %}
Для типа кампании **сonquest** разработан отдельный интерфейс, использующий собственную логику обработки данных.
{% endhint %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://bestway-1.gitbook.io/documentation/gem-rts-v1-ru/nastroiki-igrovykh-parametrov/metagame/kampanii.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
