> For the complete documentation index, see [llms.txt](https://docs.allout.game/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.allout.game/all-out-docs/ru/dannye-i-sokhranenie/cross-game-products-data.md).

# Кросс-игровые продукты/данные

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

### Настройка родительской игры

<figure><img src="https://2709175413-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FzA8RGUKJ88fD0oXVALlz%2Fuploads%2Fgit-blob-c30da1039399fb5cc98ac2364f5bb4344a4038a9%2Fimage.png?alt=media" alt="Parent Game ID field in game settings"><figcaption></figcaption></figure>

Когда вы задаёте ID родительской игры, дочерняя игра использует хранилище данных родителя для перечисленных ниже общих систем.

#### Типы общих данных:

* Товары и покупки игроков
* Сохраняемые данные игрока
* Сохраняемые данные для всей игры
* Таблицы лидеров
* Сгенерированные ресурсы

Если вы хотите делиться только **некоторыми** данными (например, если у вас отдельные системы XP для каждой игры), вы можете добавлять к ключам сохранения префикс с текущим ID игры в коде.

Используйте `Game.get_game_id()` чтобы получить ID во время выполнения:

```go
// небольшой вспомогательный код, который вы можете написать, чтобы упростить это
get_scoped_key :: proc(local_key: string) -> string {
    return format_string("%:%", {Game.get_game_id(), local_key});
}

save_player_xp :: proc(player: Player, xp: s64) {
    Save.set_int(player, get_scoped_key("xp"), xp);
}

load_player_xp :: proc(player: Player) -> s64 {
    return Save.get_int(player, get_scoped_key("xp"), 0);
}
```

Используйте один и тот же префикс для каждого чтения, записи, миграции и редактирования через портал этого ключа.

### Перенос данных между играми

{% hint style="warning" %}
Если вы изначально не настроили родительскую игру и вам нужно сделать это задним числом, пожалуйста, свяжитесь с нами, чтобы сначала перенести данные каждой игры в родительскую игру. Это ручной и потенциально подверженный ошибкам процесс (если у вас уже есть ключи с одинаковыми именами в каждой игре), поэтому мы настоятельно рекомендуем заранее всё это обдумать!
{% endhint %}
