---
type: reference
title: Esquema do painel para jogo personalizado
summary: Como um jogo personalizado declara seus campos personalizáveis no painel, por eixo, já que não tem manifesto, e os tipos de campo que cada eixo aceita.
---

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](/docs/game-customization/overview) 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](/docs/custom-game-development/self-hosted-game); para o fluxo de registro do lado do cliente, veja [jogos personalizados](/docs/game-customization/custom-games).

## 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](/docs/references/customization-schema) é 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](/docs/troops/overrides). 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](/docs/custom-game-development/self-hosted-game): `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](/docs/references/customization-schema): cada tipo de campo e seus valores aceitos, por completo.
- [Jogos personalizados](/docs/game-customization/custom-games): registrar um jogo personalizado e definir seu esquema.
- [Construir um jogo auto-hospedado](/docs/custom-game-development/self-hosted-game): ler os presets resolvidos do contexto da fábrica.
- [Substituições da equipe](/docs/troops/overrides): o modelo de escopo que o esquema segue.
