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

Запусти свою собственную игру

Пользовательская игра это игра, которую ты строишь и размещаешь, используемая в виджете Caputchin вместо игры из маркетплейса. Никто другой не может её установить, нет темы GitHub и нет шага публикации, и код остаётся у тебя. Этот раздел это подробное руководство «сделай-сам» по этому пути. (Если ты хочешь выпустить игру, чтобы её мог встроить кто угодно, это разработка игры для маркетплейса, отдельный путь.)

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

Ручной режим: твой собственный DOM, без ворот

Ручной режим это лёгкий вариант. Ты задаёшь trigger="manual" на <caputchin-game>, помещаешь свою собственную разметку внутрь и вызываешь методы pass() / fail() элемента из своего собственного кода, когда посетитель успевает или нет. Нет iframe и нет игрового SDK; виджет просто даёт тебе свою оболочку раскладки и проверочную обвязку вокруг твоей разметки.

Компромисс: раунд ручного режима нельзя реплеить на сервере, так что игра ручного режима не может удовлетворить игровые ворота. Она работает только на ключе без ворот (проверка proof-of-work, с твоим взаимодействием как UX) или только-игра вообще без проверки. Используй его для брендированного взаимодействия, а не для ворот безопасности, которые тебе нужно реплеить.

Самостоятельно размещённая игра в iframe: может ставить ворота

Самостоятельно размещённая игра это настоящая игра в песочнице: JavaScript-бандл, построенный против пакета @caputchin/game-sdk, который работает в iframe виджета, говорит с хостом через мост SDK и отчитывается трассой, которую сервер может перезапустить. Ты размещаешь бандл сам и наводишь виджет на него атрибутом game-src.

Поскольку раунд производит воспроизводимую трассу, самостоятельно размещённая игра может ставить ворота на ключе сайта, но только когда ты дашь Caputchin артефакт реплея: маленькую headless-сборку логики твоей игры, которую сервер запускает, чтобы перевывести вердикт. Пока этот артефакт не загружен и не прошёл свою самопроверку, пользовательская игра показывается как Не воспроизводима и не может ставить ворота.

Что добавляет панель

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

Так что полная поверхность пользовательской игры такова:

ЧастьГдеНужна для
Сама играТвой код, твой хостВсегда
ДоставкаСлот trigger="manual" или iframe game-srcВсегда
Схема полей + пресетыПанель (ты определяешь схему)Настройки языка / скина / конфигурации
Артефакт реплеяЗагрузка в панельПостановки ворот проверки (только самостоятельно размещённая)

См. также

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