---
type: reference
title: Schéma de tableau de bord d'un jeu personnalisé
summary: Comment un jeu personnalisé déclare ses champs personnalisables sur le tableau de bord, par axe, puisqu'il n'a pas de manifeste, et les types de champs que chaque axe accepte.
---

Un jeu du marketplace livre un manifeste `caputchin.json` qui déclare quels champs chaque préréglage de personnalisation peut régler. Un jeu personnalisé n'a pas de manifeste, donc **tu déclares ce schéma de champs sur le tableau de bord** à la place. Tu le définis une fois par jeu personnalisé, par axe, puis tu rédiges des préréglages contre lui ; à partir de là, il [se résout et s'applique](/docs/game-customization/overview) exactement comme un jeu du marketplace aux mêmes niveaux d'offre.

Cette page est la référence pour ce schéma. Pour rédiger le jeu lui-même, vois [bâtir un jeu auto-hébergé](/docs/custom-game-development/self-hosted-game) ; pour le flux d'enregistrement côté client, vois [jeux personnalisés](/docs/game-customization/custom-games).

## Un schéma par axe

Le schéma d'un jeu personnalisé est déclaré **par axe**, et les trois axes sont indépendants :

| Axe | Ce qu'il personnalise | Schéma |
|---|---|---|
| **Locale** | Les chaînes traduites du jeu. | Implicite : les champs de locale sont toujours du texte simple, donc il n'y a rien à déclarer ; tu rédiges les préréglages de chaînes directement. |
| **Skin** | Couleurs, ressources visuelles et molettes de présentation. | Tu déclares les champs de couleur, de ressource et scalaires (bascule / nombre / plage / choix) qu'un préréglage de skin peut régler. |
| **Configuration** | Options de gameplay (difficulté, décomptes, bascules). | Tu déclares les champs d'option qu'un préréglage de configuration peut régler. |

Tu ne définis un schéma que pour les axes que ton jeu utilise réellement. Un axe sans schéma n'a simplement aucun champ personnalisable de ce genre.

## Types de champs

Un schéma est un ensemble de champs nommés, chacun avec un type. Les types de champs sont le même ensemble que le reste de la personnalisation utilise ; la [référence du schéma de personnalisation](/docs/references/customization-schema) est la description faisant autorité de chaque type et des valeurs qu'il accepte. En bref :

| Type | Valeur |
|---|---|
| `string` | Texte libre. |
| `boolean` | `true` ou `false`. |
| `number` | N'importe quel nombre fini. |
| `range` | Un nombre dans un min et un max. |
| `list` | L'une d'un ensemble fixe d'options. |
| `link` | Une URL `http`/`https`. |
| `color` | Une couleur hex ou `rgb()`. |
| `image` | Une URL d'image ou un téléversement. |
| `audio` | Une URL audio ou un téléversement. |
| `video` | Une URL vidéo ou un téléversement. |

La locale n'utilise que `string` (et le résolveur ne valide pas du tout un schéma de locale). Le skin et la configuration valident les valeurs rédigées contre le schéma que tu déclares et laissent tomber les valeurs qui ne correspondent pas à leur type.

## Portée : où vit un schéma

Un schéma de jeu personnalisé est réglé à une portée, **équipe ou clé de site**, le même modèle de portée que les [surcharges](/docs/troops/overrides). Quand une équipe et l'une de ses clés de site déclarent toutes deux un schéma pour le même jeu et le même axe, le **schéma de la clé de site remplace celui de l'équipe** pour cet axe (un remplacement d'axe entier, pas une fusion champ par champ). Cela reflète comment le reste de la personnalisation se résout selon le plus spécifique l'emporte.

## Les ressources sont absolues

Parce que tu héberges le jeu jouable toi-même, il n'y a pas de bundle de plateforme contre lequel résoudre un chemin de ressource relatif. Toute valeur `image`, `audio` ou `video` dans un préréglage de skin doit être une **URL absolue**. (Un jeu du marketplace peut utiliser des chemins relatifs au bundle ; un jeu personnalisé ne peut pas.)

## Comment un préréglage atteint le jeu

Une fois le schéma et les préréglages existants, Caputchin résout un préréglage par axe pour chaque visiteur (le plus spécifique l'emporte sur la clé de site, l'équipe et tes défauts) et délivre les valeurs résolues à ton jeu via le [contexte de la fabrique de jeu](/docs/custom-game-development/self-hosted-game) : `ctx.locale`, `ctx.skin`, `ctx.config`. Ton jeu lit ses propres noms de champs sur ces objets. Le schéma est ce qui fait montrer à l'éditeur du tableau de bord les bons champs et ce qui valide les valeurs avant qu'elles n'atteignent jamais un visiteur.

## Voir aussi

- [Référence du schéma de personnalisation](/docs/references/customization-schema) : chaque type de champ et ses valeurs acceptées, en entier.
- [Jeux personnalisés](/docs/game-customization/custom-games) : enregistrer un jeu personnalisé et définir son schéma.
- [Bâtir un jeu auto-hébergé](/docs/custom-game-development/self-hosted-game) : lire les préréglages résolus depuis le contexte de la fabrique.
- [Surcharges d'équipe](/docs/troops/overrides) : le modèle de portée que le schéma suit.
