---
type: reference
title: Схема панели пользовательской игры
summary: Как пользовательская игра объявляет свои настраиваемые поля в панели, на каждую ось, поскольку у неё нет манифеста, и типы полей, которые принимает каждая ось.
---

Игра из маркетплейса поставляет манифест `caputchin.json`, который объявляет, какие поля может задать каждый пресет настройки. У пользовательской игры нет манифеста, так что **ты объявляешь эту схему полей в панели** вместо этого. Ты определяешь её один раз на каждую пользовательскую игру, на каждую ось, а затем авторствуешь пресеты против неё; отсюда она [разрешается и применяется](/docs/game-customization/overview) ровно как игра из маркетплейса на тех же уровнях тарифов.

Эта страница это справочник для этой схемы. Для авторствования самой игры смотри [построй самостоятельно размещённую игру](/docs/custom-game-development/self-hosted-game); для потока регистрации со стороны клиента смотри [пользовательские игры](/docs/game-customization/custom-games).

## Одна схема на ось

Схема пользовательской игры объявляется **на каждую ось**, и три оси независимы:

| Ось | Что она настраивает | Схема |
|---|---|---|
| **Язык** | Переведённые строки игры. | Неявная: поля языка всегда обычный текст, так что объявлять нечего; ты авторствуешь строковые пресеты напрямую. |
| **Скин** | Цвета, визуальные ассеты и ручки представления. | Ты объявляешь поля цвета, ассета и скаляра (переключатель / число / диапазон / выбор), которые может задать пресет скина. |
| **Конфигурация** | Игровые опции (сложность, счётчики, переключатели). | Ты объявляешь поля опций, которые может задать пресет конфигурации. |

Ты определяешь схему только для тех осей, которые твоя игра реально использует. Ось без схемы просто не имеет настраиваемых полей такого рода.

## Типы полей

Схема это набор именованных полей, у каждого свой тип. Типы полей это тот же набор, что использует остальная настройка; [справочник схемы настройки](/docs/references/customization-schema) это авторитетное описание каждого типа и значений, которые он принимает. Вкратце:

| Тип | Значение |
|---|---|
| `string` | Свободный текст. |
| `boolean` | `true` или `false`. |
| `number` | Любое конечное число. |
| `range` | Число в пределах min и max. |
| `list` | Один из фиксированного набора опций. |
| `link` | URL `http`/`https`. |
| `color` | Цвет hex или `rgb()`. |
| `image` | URL изображения или загрузка. |
| `audio` | URL аудио или загрузка. |
| `video` | URL видео или загрузка. |

Язык использует только `string` (и резолвер вообще не валидирует схему языка). Скин и конфигурация валидируют авторствованные значения против объявленной тобой схемы и отбрасывают значения, которые не подходят под их тип.

## Охват: где живёт схема

Схема пользовательской игры задаётся на охвате, **команда или ключ сайта**, та же модель охвата, что и у [переопределений](/docs/troops/overrides). Когда и команда, и один из её ключей сайта объявляют схему для одной игры и оси, **схема ключа сайта заменяет командную** для этой оси (замена целой оси, а не слияние поле за полем). Это зеркалит то, как остальная настройка разрешается по принципу самое-конкретное-побеждает.

## Ассеты абсолютны

Поскольку ты размещаешь играбельную игру сам, нет платформенного бандла, относительно которого можно разрешить относительный путь ассета. Любое значение `image`, `audio` или `video` в пресете скина должно быть **абсолютным URL**. (Игра из маркетплейса может использовать пути относительно бандла; пользовательская игра не может.)

## Как пресет доходит до игры

Как только схема и пресеты существуют, Caputchin разрешает один пресет на ось для каждого посетителя (самое-конкретное-побеждает по ключу сайта, команде и твоим умолчаниям) и доставляет разрешённые значения твоей игре через [контекст игровой фабрики](/docs/custom-game-development/self-hosted-game): `ctx.locale`, `ctx.skin`, `ctx.config`. Твоя игра читает свои собственные имена полей с этих объектов. Схема это то, что заставляет редактор панели показать правильные вводы, и то, что валидирует значения до того, как они вообще дойдут до посетителя.

## См. также

- [Справочник схемы настройки](/docs/references/customization-schema): каждый тип поля и его принимаемые значения, в полном виде.
- [Пользовательские игры](/docs/game-customization/custom-games): регистрация пользовательской игры и определение её схемы.
- [Построй самостоятельно размещённую игру](/docs/custom-game-development/self-hosted-game): чтение разрешённых пресетов из контекста фабрики.
- [Переопределения команды](/docs/troops/overrides): модель охвата, которой следует схема.
