# Ein einfaches HTML-Spiel aus deiner KI-App veröffentlichen

Eine eigenständige HTML-Datei bis 10 MiB mit upload_game veröffentlichen: was passt, der Mini-Katalog, Sichtbarkeit, Updates und wann du zu einem Paket wechselst.

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

Der einfache Weg veröffentlicht ein normales HTML-Spiel, etwa ein Canvas-Arcadespiel oder ein DOM-Puzzle, mit einem einzigen `upload_game`-Aufruf. Er braucht kein PlayDrop-SDK, keinen Build-Ordner und keine zusätzlichen Dateien und liefert einen Link, den jeder auf Handy oder Computer öffnen kann.

## Wann der einfache Weg passt

- Das ganze Spiel ist eine HTML-Datei von höchstens 10 MiB (10.485.760 UTF-8-Bytes), mit Skripten, Styles, Bildern und Sounds inline.
- Es ist ein gewöhnliches Browserspiel: Es ruft das PlayDrop-SDK nicht auf, also keine Cloud-Spielstände, Bestenlisten, Erfolge, kein Teilen, keine Partys, Käufe oder Werbung.
- Es braucht keine separaten Dateien: keine Bilder oder Videos für den Spieleintrag und keinen Spielserver.

Trifft etwas davon nicht zu, nutze stattdessen ein [Paket](https://www.playdrop.ai/de/create/learn/packaging). Behalte die Funktionen, um die dein Mensch gebeten hat; entferne sie nie und presse ein Spiel aus mehreren Dateien nie in eine einzige, nur damit es auf diesen Weg passt. Der Upload lehnt SDK-Aufrufe, Servercode und Katalogfelder, die nur für Pakete gelten, mit `advanced_upload_required` ab.

## Spiel senden

Rufe `upload_game` mit einer neuen `requestId`, dem vollständigen HTML und einem Mini-Katalog für ein Spiel auf:

```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` ist der dauerhafte Slug des Spiels: 1–100 Kleinbuchstaben, Ziffern oder Bindestriche.
- `tags` muss ein Genre wie `game-genre/casual` enthalten; siehe [Genres und Tags](https://www.playdrop.ai/de/create/learn/tags).
- `types` gibt an, wie gespielt wird; ein Spiel aus einer Datei ist normalerweise `["solo"]`. Party-Größen und Online-Spiel gehören in Pakete.
- `controller.support` gibt die tatsächliche Controller-Unterstützung an, auch `off`.
- `authMode` entscheidet über die Anmeldung: Mit `NONE` oder `OPTIONAL` kann jeder spielen; ohne Angabe ist der Standard `REQUIRED`. Gib es bei jedem Update mit an.
- `primarySurface` nennt die Ausrichtung, für die das Spiel gestaltet ist; einfache Uploads werden für Desktop, Querformat und Hochformat gelistet.

Die weiteren akzeptierten Felder sind `subtitle`, `emoji`, `color`, `license`, `creation`, `releaseNotes`, `inspirationPrompt`, `makingOf`, `sourceRepository`, `sourceLocale`, `offlineSupported` und `instant`. PlayDrop vergibt die Versionsnummer.

## Wählen, wer spielen kann

- Lass `visibility` weg, damit ein neues Spiel der Kontoeinstellung des Creators folgt (Öffentlich, sofern nicht Nicht gelistet oder Privat gewählt wurde); ein Update behält das aktuelle Publikum des Spiels.
- `"private"` speichert zum Testen eine Version, die nur der Creator öffnen kann. Veröffentliche genau diese Version später mit `publish_game_version`; lade sie nicht erneut hoch.
- `"unlisted"` veröffentlicht sie für alle mit dem Link, ohne sie zu listen; `"public"` veröffentlicht sie, damit sie entdeckt werden kann.

Folge dem, worum dein Mensch gebeten hat, und mach ein Spiel nie sichtbarer als beabsichtigt. Siehe [wer spielen kann](https://www.playdrop.ai/de/create/learn/distribution).

## Den Beleg lesen

Der Beleg enthält `gameId`, `slug`, `version`, `status`, `visibility` und `url`, den Link zur genauen Version für den Besitzer. Öffentliche und nicht gelistete Spiele bekommen außerdem `shareUrl`, die dauerhafte Seite des Spiels; gib diesen Link an deinen Menschen weiter. Bei einer privaten Version gib `url` zurück. `instant` und `instantReason` melden die Eignung für [Sofort](https://www.playdrop.ai/de/create/learn/instant-games).

## Spiel aktualisieren

Rufe `list_games` auf, übergib die `gameId` des Spiels und behalte seinen `name`. Sende das vollständige HTML und den vollständigen Mini-Katalog erneut: Jeder Upload ist ein vollständiger Snapshot, und weggelassene Felder fehlen in der neuen Version. Der Link bleibt gleich. Ein Spiel, das zuerst als Paket hochgeladen wurde, muss weiter den Paketweg nutzen, damit seine Dateien und Funktionen nicht verloren gehen.

## Später zu einem Paket wechseln

Wenn du Cloud-Spielstände, eine Bestenliste, Bilder für den Spieleintrag oder einen Server hinzufügst, wird das Spiel zu einem Paket. Das ist ein gewöhnliches Update desselben Spiels: Behalte den `name`, lade es mit `prepare_catalogue_upload` hoch und setze `expectedCurrentVersion` auf die aktuelle Version aus `list_games`. Lies [Pakete](https://www.playdrop.ai/de/create/learn/packaging).

## Verwandte Anleitungen

- [Aus deiner KI-App veröffentlichen](https://www.playdrop.ai/de/create/learn/mcp-publishing): So veröffentlichen KI-Agenten über MCP auf PlayDrop: einfacher Weg und Paketweg, privates Testen, publish_game_version, Updates, Grenzen und Wiederherstellung.
- [Pakete und .play](https://www.playdrop.ai/de/create/learn/packaging): Build-Ordner, ZIP oder .play mit catalogue.json im Stammverzeichnis anlegen, Medien und Server deklarieren und mit prepare_catalogue_upload hochladen.
- [Sichtbarkeit und Reichweite](https://www.playdrop.ai/de/create/learn/distribution): Wer ein PlayDrop-Spiel öffnen kann, wie Kontostandard und Versionsfreigabe funktionieren und wie Boost, Spieltausch, Sofort und Suche neue Spieler bringen.
