# Publique um jogo em HTML simples pelo seu app de IA

Publique um único arquivo HTML autocontido de até 10 MiB com upload_game: o que cabe, minicatálogo, visibilidade, atualizações e quando mudar para um pacote.

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

O caminho simples publica um jogo em HTML padrão, como um arcade em canvas ou um quebra-cabeça em DOM, com uma única chamada a `upload_game`. Ele não precisa do SDK do PlayDrop, de uma pasta de build nem de arquivos extras, e retorna um link que qualquer pessoa pode abrir no celular ou no computador.

## Quando o caminho simples serve

- O jogo inteiro é um único arquivo HTML de no máximo 10 MiB (10.485.760 bytes em UTF-8), com seus scripts, estilos, imagens e sons incorporados.
- É um jogo de navegador comum: ele não chama o SDK do PlayDrop, então não tem salvamentos na nuvem, placares, conquistas, compartilhamento, grupos, compras nem anúncios.
- Ele não precisa de arquivos separados: nada de imagens ou vídeos da listagem e nada de servidor de jogo.

Se alguma dessas condições não valer, use um [pacote](https://www.playdrop.ai/pt-br/create/learn/packaging). Mantenha os recursos que a pessoa com quem você trabalha pediu; nunca os remova nem junte um jogo de vários arquivos em um só para caber neste caminho. O envio recusa chamadas ao SDK, código de servidor e campos de catálogo exclusivos de pacote com `advanced_upload_required`.

## Envie o jogo

Chame `upload_game` com um novo `requestId`, o HTML completo e um minicatálogo para um jogo:

```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` é o slug permanente do jogo: 1–100 letras minúsculas, dígitos ou hifens.
- `tags` precisa incluir um gênero, como `game-genre/casual`; veja [gêneros e tags](https://www.playdrop.ai/pt-br/create/learn/tags).
- `types` declara como se joga; um jogo de um só arquivo normalmente é `["solo"]`. Tamanhos de grupo e jogo online ficam para os pacotes.
- `controller.support` informa o suporte real a controles, incluindo `off`.
- `authMode` define o login: `NONE` ou `OPTIONAL` deixa qualquer pessoa jogar; se omitido, o padrão é `REQUIRED`. Inclua-o em toda atualização.
- `primarySurface` indica a orientação para a qual o jogo foi pensado; envios simples são listados para computador, horizontal e vertical.

Os outros campos aceitos são `subtitle`, `emoji`, `color`, `license`, `creation`, `releaseNotes`, `inspirationPrompt`, `makingOf`, `sourceRepository`, `sourceLocale`, `offlineSupported` e `instant`. O PlayDrop define o número da versão.

## Escolha quem pode jogar

- Omita `visibility` para seguir a configuração da conta do criador em um jogo novo (Público, a menos que ele tenha escolhido Não listado ou Privado); uma atualização mantém o público atual do jogo.
- `"private"` salva uma versão que só o criador pode abrir, para testes. Publique essa versão exata depois com `publish_game_version`; não a envie de novo.
- `"unlisted"` publica para qualquer pessoa com o link, sem listar o jogo; `"public"` publica para que ele seja descoberto.

Siga o que a pessoa com quem você trabalha pediu e nunca deixe um jogo mais visível do que ela pretendia. Veja [quem pode jogar](https://www.playdrop.ai/pt-br/create/learn/distribution).

## Leia o recibo

O recibo inclui `gameId`, `slug`, `version`, `status`, `visibility` e `url`, o link da versão exata para o dono. Jogos públicos e não listados também recebem `shareUrl`, a página permanente do jogo; é esse link que você entrega à pessoa com quem você trabalha. Para uma versão privada, entregue a `url`. `instant` e `instantReason` informam a elegibilidade para o [Instantâneo](https://www.playdrop.ai/pt-br/create/learn/instant-games).

## Atualize o jogo

Chame `list_games`, passe o `gameId` do jogo e mantenha o `name` dele. Envie de novo o HTML completo e o minicatálogo completo: cada envio substitui o jogo por inteiro, e os campos omitidos não existem na nova versão. O link continua o mesmo. Um jogo enviado pela primeira vez como pacote precisa continuar usando o caminho de pacote, para que seus arquivos e recursos não se percam.

## Mude para um pacote depois

Adicionar salvamentos na nuvem, um placar, arte da listagem ou um servidor transforma o jogo em um pacote. É uma atualização comum do mesmo jogo: mantenha o `name`, envie com `prepare_catalogue_upload` e defina `expectedCurrentVersion` como a versão atual retornada por `list_games`. Leia [empacotamento](https://www.playdrop.ai/pt-br/create/learn/packaging).

## Guias relacionados

- [Publicar pelo seu app de IA](https://www.playdrop.ai/pt-br/create/learn/mcp-publishing): Como agentes de IA publicam no PlayDrop por MCP: caminho simples e de pacote, testes privados, publish_game_version, atualizações, limites e recuperação.
- [Empacotamento e .play](https://www.playdrop.ai/pt-br/create/learn/packaging): Organize uma pasta, ZIP ou .play compilado com o catalogue.json na raiz, declare a mídia da listagem e os servidores e envie com prepare_catalogue_upload.
- [Visibilidade e alcance](https://www.playdrop.ai/pt-br/create/learn/distribution): Escolha quem pode abrir seu jogo, entenda o padrão da conta e a publicação de versões e como Boost, troca de partidas, Instantâneo e busca trazem jogadores.
