Rode seu próprio jogo
Um jogo personalizado é um jogo que você constrói e hospeda, usado no widget Caputchin em vez de um jogo do marketplace. Ninguém mais consegue instalá-lo, não há tópico no GitHub e não há passo de publicação, e você fica com o código. Esta seção é o guia detalhado de construir você mesmo esse caminho. (Se você quer publicar um jogo para qualquer um embutir, isso é desenvolvimento de jogo de marketplace, um caminho separado.)
Há duas formas de entregar um jogo personalizado, e elas são superfícies genuinamente diferentes com limites diferentes. Escolha pelo que você precisa:
Modo manual: seu próprio DOM, sem portão
O modo manual é a opção leve. Você define trigger="manual" no <caputchin-game>, põe seu próprio markup dentro dele, e chama os métodos pass() / fail() do elemento a partir do seu próprio código quando o visitante tem sucesso ou falha. Não há iframe e não há SDK de jogo; o widget só te dá seu shell de layout e o encanamento de verificação ao redor do seu markup.
A troca: uma rodada de modo manual não pode ser reexecutada no servidor, então um jogo de modo manual não pode satisfazer um portão de jogo. Ele roda só em uma chave sem portão (verificação de proof-of-work, com sua interação como UX), ou só-jogo sem verificação nenhuma. Use-o para uma interação com marca, não para um portão de segurança que você precisa reexecutado.
Jogo em iframe auto-hospedado: pode proteger
Um jogo auto-hospedado é um jogo de verdade, em sandbox: um bundle JavaScript construído contra o pacote @caputchin/game-sdk que roda no iframe do widget, fala com o anfitrião pela ponte do SDK, e reporta um trace que o servidor pode reexecutar. Você hospeda o bundle você mesmo e aponta o widget para ele com o atributo game-src.
Como a rodada produz um trace reproduzível, um jogo auto-hospedado pode proteger uma chave de site, mas só depois de você dar à Caputchin um artefato de replay: uma pequena build headless da lógica do seu jogo que o servidor roda para rederivar o veredito. Até que esse artefato seja enviado e passe na sua autoverificação, o jogo personalizado aparece como Não reproduzível e não pode proteger.
O que o painel acrescenta
Um jogo de marketplace traz um manifesto caputchin.json que declara seus campos de personalização. Um jogo personalizado não tem manifesto, então você declara esses campos no painel em vez disso: você registra o jogo personalizado por um id que você escolhe, define seu esquema de campos por eixo (idioma, skin, configuração), e cria presets contra ele. A partir daí ele resolve e se aplica exatamente como um jogo de marketplace, nos mesmos níveis de plano.
Então a superfície completa de um jogo personalizado é:
| Peça | Onde | Necessária para |
|---|---|---|
| O jogo em si | Seu código, seu host | Sempre |
| Entrega | Slot trigger="manual", ou iframe game-src | Sempre |
| Esquema de campos + presets | Painel (você define o esquema) | Personalizar idioma / skin / config |
| Artefato de replay | Upload no painel | Proteger a verificação (só auto-hospedado) |
Veja também
- Modo manual: encaixe seu próprio DOM e conduza pass/fail.
- Jogo auto-hospedado: construa um jogo em iframe reproduzível com o SDK.
- Replay e proteção: envie o artefato que deixa um jogo personalizado proteger.
- Referência de esquema do painel: o esquema de campos que você define para um jogo personalizado.
- Jogos personalizados: registrar e hospedar, do lado do cliente.