Схема панели пользовательской игры
Игра из маркетплейса поставляет манифест caputchin.json, который объявляет, какие поля может задать каждый пресет настройки. У пользовательской игры нет манифеста, так что ты объявляешь эту схему полей в панели вместо этого. Ты определяешь её один раз на каждую пользовательскую игру, на каждую ось, а затем авторствуешь пресеты против неё; отсюда она разрешается и применяется ровно как игра из маркетплейса на тех же уровнях тарифов.
Эта страница это справочник для этой схемы. Для авторствования самой игры смотри построй самостоятельно размещённую игру; для потока регистрации со стороны клиента смотри пользовательские игры.
Одна схема на ось
Схема пользовательской игры объявляется на каждую ось, и три оси независимы:
| Ось | Что она настраивает | Схема |
|---|---|---|
| Язык | Переведённые строки игры. | Неявная: поля языка всегда обычный текст, так что объявлять нечего; ты авторствуешь строковые пресеты напрямую. |
| Скин | Цвета, визуальные ассеты и ручки представления. | Ты объявляешь поля цвета, ассета и скаляра (переключатель / число / диапазон / выбор), которые может задать пресет скина. |
| Конфигурация | Игровые опции (сложность, счётчики, переключатели). | Ты объявляешь поля опций, которые может задать пресет конфигурации. |
Ты определяешь схему только для тех осей, которые твоя игра реально использует. Ось без схемы просто не имеет настраиваемых полей такого рода.
Типы полей
Схема это набор именованных полей, у каждого свой тип. Типы полей это тот же набор, что использует остальная настройка; справочник схемы настройки это авторитетное описание каждого типа и значений, которые он принимает. Вкратце:
| Тип | Значение |
|---|---|
string | Свободный текст. |
boolean | true или false. |
number | Любое конечное число. |
range | Число в пределах min и max. |
list | Один из фиксированного набора опций. |
link | URL http/https. |
color | Цвет hex или rgb(). |
image | URL изображения или загрузка. |
audio | URL аудио или загрузка. |
video | URL видео или загрузка. |
Язык использует только string (и резолвер вообще не валидирует схему языка). Скин и конфигурация валидируют авторствованные значения против объявленной тобой схемы и отбрасывают значения, которые не подходят под их тип.
Охват: где живёт схема
Схема пользовательской игры задаётся на охвате, команда или ключ сайта, та же модель охвата, что и у переопределений. Когда и команда, и один из её ключей сайта объявляют схему для одной игры и оси, схема ключа сайта заменяет командную для этой оси (замена целой оси, а не слияние поле за полем). Это зеркалит то, как остальная настройка разрешается по принципу самое-конкретное-побеждает.
Ассеты абсолютны
Поскольку ты размещаешь играбельную игру сам, нет платформенного бандла, относительно которого можно разрешить относительный путь ассета. Любое значение image, audio или video в пресете скина должно быть абсолютным URL. (Игра из маркетплейса может использовать пути относительно бандла; пользовательская игра не может.)
Как пресет доходит до игры
Как только схема и пресеты существуют, Caputchin разрешает один пресет на ось для каждого посетителя (самое-конкретное-побеждает по ключу сайта, команде и твоим умолчаниям) и доставляет разрешённые значения твоей игре через контекст игровой фабрики: ctx.locale, ctx.skin, ctx.config. Твоя игра читает свои собственные имена полей с этих объектов. Схема это то, что заставляет редактор панели показать правильные вводы, и то, что валидирует значения до того, как они вообще дойдут до посетителя.
См. также
- Справочник схемы настройки: каждый тип поля и его принимаемые значения, в полном виде.
- Пользовательские игры: регистрация пользовательской игры и определение её схемы.
- Построй самостоятельно размещённую игру: чтение разрешённых пресетов из контекста фабрики.
- Переопределения команды: модель охвата, которой следует схема.