# Publier un jeu HTML simple depuis votre app d’IA

Publiez un fichier HTML autonome de 10 MiB maximum avec upload_game : ce qui convient, le mini catalogue, la visibilité, les mises à jour et quand passer au paquet.

Source: https://www.playdrop.ai/fr/create/learn/html-games

La voie simple publie un jeu HTML standard, comme un jeu d’arcade sur canvas ou un puzzle en DOM, en un seul appel `upload_game`. Elle ne nécessite ni SDK PlayDrop, ni dossier de compilation, ni fichiers supplémentaires, et renvoie un lien que tout le monde peut ouvrir sur un téléphone ou un ordinateur.

## Quand la voie simple convient

- Le jeu entier tient dans un seul fichier HTML de 10 MiB maximum (10 485 760 octets UTF-8), avec ses scripts, styles, images et sons intégrés.
- C’est un jeu de navigateur ordinaire : il n’appelle pas le SDK PlayDrop, donc pas de sauvegardes cloud, de classements, de succès, de partage, de groupes, d’achats ni de publicités.
- Il n’a besoin d’aucun fichier séparé : ni images ou vidéos de fiche, ni serveur de jeu.

Si l’une de ces conditions n’est pas remplie, utilisez plutôt un [paquet](https://www.playdrop.ai/fr/create/learn/packaging). Conservez les fonctionnalités demandées par la personne que vous aidez ; ne les supprimez jamais et n’aplatissez jamais un jeu à plusieurs fichiers pour le faire entrer dans cette voie. L’envoi refuse les appels au SDK, le code serveur et les champs de catalogue réservés aux paquets avec `advanced_upload_required`.

## Envoyez le jeu

Appelez `upload_game` avec un nouveau `requestId`, le HTML complet et un mini catalogue pour un seul jeu :

```json
{
  "requestId": "moon-jump-first-upload",
  "html": "<!doctype html><html><head><meta charset=\"utf-8\"><title>Moon Jump</title></head><body>…</body></html>",
  "catalogue": {
    "apps": [{
      "name": "moon-jump",
      "displayName": "Moon Jump",
      "description": "Jump between lunar platforms and reach the flag.",
      "controls": "Tap or press Space to jump.",
      "tags": ["game-genre/casual"],
      "types": ["solo"],
      "controller": { "support": "off" },
      "authMode": "NONE",
      "primarySurface": "MOBILE_PORTRAIT"
    }]
  }
}
```

- `name` est le slug permanent du jeu : de 1 à 100 lettres minuscules, chiffres ou traits d’union.
- `tags` doit inclure un genre comme `game-genre/casual` ; consultez [genres et tags](https://www.playdrop.ai/fr/create/learn/tags).
- `types` déclare comment on y joue ; un jeu en un seul fichier vaut normalement `["solo"]`. Les tailles de groupe et le jeu en ligne sont réservés aux paquets.
- `controller.support` indique la prise en charge réelle des manettes, y compris `off`.
- `authMode` détermine la connexion : `NONE` ou `OPTIONAL` permet à tout le monde de jouer ; s’il est omis, la valeur par défaut est `REQUIRED`. Incluez-le à chaque mise à jour.
- `primarySurface` indique l’orientation pour laquelle le jeu est conçu ; les envois simples sont proposés sur ordinateur, en paysage et en portrait.

Les autres champs acceptés sont `subtitle`, `emoji`, `color`, `license`, `creation`, `releaseNotes`, `inspirationPrompt`, `makingOf`, `sourceRepository`, `sourceLocale`, `offlineSupported` et `instant`. PlayDrop attribue le numéro de version.

## Choisissez qui peut jouer

- Omettez `visibility` pour qu’un nouveau jeu suive le réglage du compte du créateur (Public, sauf s’il a choisi Non répertorié ou Privé) ; une mise à jour conserve le public actuel du jeu.
- `"private"` enregistre une version que seul le créateur peut ouvrir, pour les tests. Publiez plus tard cette version exacte avec `publish_game_version` ; ne la renvoyez pas.
- `"unlisted"` la publie pour toute personne qui a le lien, sans la répertorier ; `"public"` la publie pour qu’elle puisse être découverte.

Suivez ce que la personne que vous aidez a demandé et ne rendez jamais un jeu plus visible qu’elle ne le souhaitait. Consultez [qui peut jouer](https://www.playdrop.ai/fr/create/learn/distribution).

## Lisez le reçu

Le reçu contient `gameId`, `slug`, `version`, `status`, `visibility` et `url`, le lien de cette version exacte pour le propriétaire. Les jeux publics et non répertoriés reçoivent aussi `shareUrl`, la page durable du jeu : c’est ce lien qu’il faut transmettre à la personne que vous aidez. Pour une version privée, transmettez `url`. `instant` et `instantReason` indiquent l’admissibilité à [Instantané](https://www.playdrop.ai/fr/create/learn/instant-games).

## Mettez à jour le jeu

Appelez `list_games`, passez le `gameId` du jeu et conservez son `name`. Renvoyez le HTML complet et le mini catalogue complet : chaque envoi est une copie complète, et les champs omis sont absents de la nouvelle version. Le lien reste le même. Un jeu envoyé d’abord sous forme de paquet doit continuer à utiliser la voie des paquets, pour que ses fichiers et ses fonctionnalités ne soient pas perdus.

## Passez à un paquet plus tard

Ajouter des sauvegardes cloud, un classement, des illustrations de fiche ou un serveur transforme le jeu en paquet. C’est une mise à jour ordinaire du même jeu : conservez le `name`, envoyez-le avec `prepare_catalogue_upload` et définissez `expectedCurrentVersion` sur la version actuelle issue de `list_games`. Consultez la page [paquets](https://www.playdrop.ai/fr/create/learn/packaging).

## Guides associés

- [Publier depuis votre app d’IA](https://www.playdrop.ai/fr/create/learn/mcp-publishing): Comment les agents IA publient sur PlayDrop via MCP : voie simple et voie paquet, tests privés, publish_game_version, mises à jour, limites et reprise.
- [Paquets et .play](https://www.playdrop.ai/fr/create/learn/packaging): Organisez un dossier, ZIP ou .play compilé avec catalogue.json à la racine, déclarez médias de fiche et serveurs, puis envoyez avec prepare_catalogue_upload.
- [Visibilité et audience](https://www.playdrop.ai/fr/create/learn/distribution): Choisissez qui peut ouvrir un jeu, gérez le réglage par défaut et les versions, et attirez des joueurs avec Boost, Échange de parties, Instantané et la recherche.
