Caputchin
Разработка пользовательской игры

Схема панели пользовательской игры

Игра из маркетплейса поставляет манифест caputchin.json, который объявляет, какие поля может задать каждый пресет настройки. У пользовательской игры нет манифеста, так что ты объявляешь эту схему полей в панели вместо этого. Ты определяешь её один раз на каждую пользовательскую игру, на каждую ось, а затем авторствуешь пресеты против неё; отсюда она разрешается и применяется ровно как игра из маркетплейса на тех же уровнях тарифов.

Эта страница это справочник для этой схемы. Для авторствования самой игры смотри построй самостоятельно размещённую игру; для потока регистрации со стороны клиента смотри пользовательские игры.

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

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

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

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

Типы полей

Схема это набор именованных полей, у каждого свой тип. Типы полей это тот же набор, что использует остальная настройка; справочник схемы настройки это авторитетное описание каждого типа и значений, которые он принимает. Вкратце:

ТипЗначение
stringСвободный текст.
booleantrue или false.
numberЛюбое конечное число.
rangeЧисло в пределах min и max.
listОдин из фиксированного набора опций.
linkURL http/https.
colorЦвет hex или rgb().
imageURL изображения или загрузка.
audioURL аудио или загрузка.
videoURL видео или загрузка.

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

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

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

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

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

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

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

См. также

На этой странице