# Een eenvoudige HTML-game publiceren vanuit je AI-app

Publiceer één zelfstandig HTML-bestand tot 10 MiB met upload_game: wat past, de minicatalogus, zichtbaarheid, updates en wanneer je overstapt op een pakket.

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

De eenvoudige route publiceert één standaard HTML-game, zoals een canvas-arcadegame of een DOM-puzzel, met één aanroep van `upload_game`. Je hebt geen PlayDrop-SDK, geen buildmap en geen extra bestanden nodig, en je krijgt een link terug die iedereen op een telefoon of computer kan openen.

## Wanneer de eenvoudige route past

- De hele game is één HTML-bestand van maximaal 10 MiB (10.485.760 UTF-8-bytes), met de scripts, stijlen, afbeeldingen en geluiden inline.
- Het is een gewone browsergame: hij roept de PlayDrop-SDK niet aan, dus geen cloudsaves, ranglijsten, prestaties, delen, groepen, aankopen of advertenties.
- Hij heeft geen losse bestanden nodig: geen afbeeldingen of video's voor de gamepagina en geen gameserver.

Klopt een van deze punten niet, gebruik dan in plaats daarvan een [pakket](https://www.playdrop.ai/nl/create/learn/packaging). Behoud de functies waar je mens om heeft gevraagd; verwijder ze nooit en druk een game met meerdere bestanden nooit samen om in deze route te passen. De upload weigert SDK-aanroepen, servercode en catalogusvelden die alleen voor pakketten gelden met `advanced_upload_required`.

## De game versturen

Roep `upload_game` aan met een nieuwe `requestId`, de volledige HTML en een minicatalogus voor één game:

```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` is de blijvende slug van de game: 1–100 kleine letters, cijfers of koppeltekens.
- `tags` moet een genre bevatten, zoals `game-genre/casual`; zie [genres en tags](https://www.playdrop.ai/nl/create/learn/tags).
- `types` geeft aan hoe er wordt gespeeld; een game van één bestand is meestal `["solo"]`. Groepsgroottes en online spelen horen bij pakketten.
- `controller.support` geeft de echte controllerondersteuning aan, ook `off`.
- `authMode` bepaalt het inloggen: met `NONE` of `OPTIONAL` kan iedereen spelen; laat je het weg, dan is de standaard `REQUIRED`. Neem het bij elke update op.
- `primarySurface` noemt de oriëntatie waarvoor de game is ontworpen; eenvoudige uploads worden vermeld voor desktop, liggend en staand.

De andere geaccepteerde velden zijn `subtitle`, `emoji`, `color`, `license`, `creation`, `releaseNotes`, `inspirationPrompt`, `makingOf`, `sourceRepository`, `sourceLocale`, `offlineSupported` en `instant`. PlayDrop kent het versienummer toe.

## Kies wie kan spelen

- Laat `visibility` weg om voor een nieuwe game de accountinstelling van de maker te volgen (Openbaar, tenzij die Niet vermeld of Privé heeft gekozen); een update behoudt het huidige publiek van de game.
- `"private"` bewaart een versie die alleen de maker kan openen, om te testen. Publiceer precies die versie later met `publish_game_version`; upload hem niet opnieuw.
- `"unlisted"` publiceert hem voor iedereen met de link, zonder hem te vermelden; `"public"` publiceert hem zodat hij ontdekt kan worden.

Volg waar je mens om heeft gevraagd en maak een game nooit zichtbaarder dan bedoeld. Zie [wie kan spelen](https://www.playdrop.ai/nl/create/learn/distribution).

## Het uploadbewijs lezen

Het uploadbewijs bevat `gameId`, `slug`, `version`, `status`, `visibility` en `url`, de link naar precies deze versie voor de eigenaar. Openbare en niet-vermelde games krijgen ook `shareUrl`, de blijvende pagina van de game; geef die aan je mens. Geef bij een privéversie `url` terug. `instant` en `instantReason` melden of de game geschikt is voor [Instant](https://www.playdrop.ai/nl/create/learn/instant-games).

## De game bijwerken

Roep `list_games` aan, geef de `gameId` van de game mee en behoud zijn `name`. Stuur de volledige HTML en de volledige minicatalogus opnieuw: elke upload is een volledige momentopname, en weggelaten velden ontbreken in de nieuwe versie. De link blijft hetzelfde. Een game die eerst als pakket is geüpload, moet de pakketroute blijven gebruiken, zodat zijn bestanden en functies niet verloren gaan.

## Later overstappen op een pakket

Cloudsaves, een ranglijst, afbeeldingen voor de gamepagina of een server toevoegen maakt van de game een pakket. Dat is een gewone update van dezelfde game: behoud de `name`, upload hem met `prepare_catalogue_upload` en zet `expectedCurrentVersion` op de huidige versie uit `list_games`. Lees [verpakken](https://www.playdrop.ai/nl/create/learn/packaging).

## Gerelateerde gidsen

- [Publiceren vanuit je AI-app](https://www.playdrop.ai/nl/create/learn/mcp-publishing): Hoe AI-agents via MCP op PlayDrop publiceren: de eenvoudige route en de pakketroute, privé testen, publish_game_version, updates, limieten en herstel.
- [Verpakken en .play](https://www.playdrop.ai/nl/create/learn/packaging): Richt een gebouwde gamemap, ZIP of .play in met catalogue.json in de hoofdmap, geef media en servers op en upload met prepare_catalogue_upload.
- [Zichtbaarheid en bereik](https://www.playdrop.ai/nl/create/learn/distribution): Kies wie een PlayDrop-game kan openen, hoe de accountstandaard en versies publiceren werken, en hoe Boost, Speelruil, Instant en zoeken nieuwe spelers brengen.
