Esquema do painel para jogo personalizado
Um jogo de marketplace traz um manifesto caputchin.json que declara quais campos cada preset de personalização pode definir. Um jogo personalizado não tem manifesto, então você declara esse esquema de campos no painel em vez disso. Você o define uma vez por jogo personalizado, por eixo, e depois cria presets contra ele; a partir daí ele resolve e se aplica exatamente como um jogo de marketplace nos mesmos níveis de plano.
Esta página é a referência desse esquema. Para criar o jogo em si, veja construir um jogo auto-hospedado; para o fluxo de registro do lado do cliente, veja jogos personalizados.
Um esquema por eixo
O esquema de um jogo personalizado é declarado por eixo, e os três eixos são independentes:
| Eixo | O que personaliza | Esquema |
|---|---|---|
| Idioma | As strings traduzidas do jogo. | Implícito: os campos de idioma são sempre texto puro, então não há nada a declarar; você cria presets de string diretamente. |
| Skin | Cores, ativos visuais e controles de apresentação. | Você declara os campos de cor, ativo e escalar (toggle / number / range / choice) que um preset de skin pode definir. |
| Configuração | Opções de jogabilidade (dificuldade, contagens, toggles). | Você declara os campos de opção que um preset de configuração pode definir. |
Você define um esquema só para os eixos que seu jogo de fato usa. Um eixo sem esquema simplesmente não tem campos personalizáveis desse tipo.
Tipos de campo
Um esquema é um conjunto de campos nomeados, cada um com um tipo. Os tipos de campo são o mesmo conjunto que o resto da personalização usa; a referência de esquema de personalização é a descrição autoritativa de cada tipo e os valores que ele aceita. Em resumo:
| Tipo | Valor |
|---|---|
string | Texto livre. |
boolean | true ou false. |
number | Qualquer número finito. |
range | Um número dentro de um mínimo e um máximo. |
list | Uma de um conjunto fixo de opções. |
link | Uma URL http/https. |
color | Uma cor hex ou rgb(). |
image | Uma URL de imagem ou upload. |
audio | Uma URL de áudio ou upload. |
video | Uma URL de vídeo ou upload. |
O idioma usa só string (e o resolvedor não valida um esquema de idioma de jeito nenhum). O skin e a configuração validam os valores criados contra o esquema que você declara e descartam valores que não se encaixam no seu tipo.
Escopo: onde um esquema vive
O esquema de um jogo personalizado é definido em um escopo, equipe ou chave de site, o mesmo modelo de escopo das substituições. Quando tanto uma equipe quanto uma de suas chaves de site declaram um esquema para o mesmo jogo e eixo, o esquema da chave de site substitui o da equipe para esse eixo (uma substituição de eixo inteiro, não uma mesclagem campo a campo). Isto espelha como o resto da personalização resolve o mais específico vence.
Os ativos são absolutos
Como você hospeda o jogo jogável você mesmo, não há um bundle de plataforma contra o qual resolver um caminho de ativo relativo. Qualquer valor image, audio ou video em um preset de skin precisa ser uma URL absoluta. (Um jogo de marketplace pode usar caminhos relativos ao bundle; um jogo personalizado não pode.)
Como um preset chega ao jogo
Uma vez que o esquema e os presets existem, a Caputchin resolve um preset por eixo para cada visitante (o mais específico vence entre chave de site, equipe e seus padrões) e entrega os valores resolvidos ao seu jogo pelo contexto da fábrica de jogo: ctx.locale, ctx.skin, ctx.config. Seu jogo lê seus próprios nomes de campo desses objetos. O esquema é o que faz o editor do painel mostrar as entradas certas e o que valida os valores antes de eles chegarem a um visitante.
Veja também
- Referência de esquema de personalização: cada tipo de campo e seus valores aceitos, por completo.
- Jogos personalizados: registrar um jogo personalizado e definir seu esquema.
- Construir um jogo auto-hospedado: ler os presets resolvidos do contexto da fábrica.
- Substituições da equipe: o modelo de escopo que o esquema segue.