# Publicera ett enkelt HTML-spel från din AI-app

Publicera en fristående HTML-fil på upp till 10 MiB med upload_game: vad som ryms, minikatalogen, synlighet, uppdateringar och när du ska byta till ett paket.

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

Den enkla vägen publicerar ett vanligt HTML-spel, som ett arkadspel i canvas eller ett pussel i DOM, med ett enda `upload_game`-anrop. Den kräver inget PlayDrop-SDK, ingen byggmapp och inga extra filer, och den returnerar en länk som vem som helst kan öppna på en telefon eller dator.

## När den enkla vägen passar

- Hela spelet är en HTML-fil på högst 10 MiB (10 485 760 UTF-8-byte), med skript, stilar, bilder och ljud inbäddade.
- Det är ett vanligt webbläsarspel: det anropar inte PlayDrop-SDK:t, så inga molnsparningar, topplistor, prestationer, delning, grupper, köp eller annonser.
- Det behöver inga separata filer: inga bilder eller videor för spelsidan och ingen spelserver.

Om något av detta inte stämmer, använd ett [paket](https://www.playdrop.ai/sv/create/learn/packaging) i stället. Behåll funktionerna som din användare bad om; ta aldrig bort dem och platta aldrig till ett spel med flera filer för att det ska passa den här vägen. Uppladdningen avvisar SDK-anrop, serverkod och katalogfält som bara finns för paket med `advanced_upload_required`.

## Skicka spelet

Anropa `upload_game` med ett nytt `requestId`, hela HTML-koden och en minikatalog för ett spel:

```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` är spelets permanenta slug: 1–100 gemena bokstäver, siffror eller bindestreck.
- `tags` måste innehålla en genre som `game-genre/casual`; se [genrer och taggar](https://www.playdrop.ai/sv/create/learn/tags).
- `types` anger hur spelet spelas; ett spel i en fil är normalt `["solo"]`. Gruppstorlekar och onlinespel hör till paket.
- `controller.support` anger det verkliga stödet för handkontroller, inklusive `off`.
- `authMode` avgör inloggningen: `NONE` eller `OPTIONAL` låter vem som helst spela; utelämnat blir det `REQUIRED` som standard. Ta med det i varje uppdatering.
- `primarySurface` anger orienteringen som spelet är gjort för; enkla uppladdningar visas för dator, liggande och stående format.

De andra fälten som accepteras är `subtitle`, `emoji`, `color`, `license`, `creation`, `releaseNotes`, `inspirationPrompt`, `makingOf`, `sourceRepository`, `sourceLocale`, `offlineSupported` och `instant`. PlayDrop tilldelar versionsnumret.

## Välj vem som kan spela

- Utelämna `visibility` för att följa skaparens kontoinställning för ett nytt spel (Offentlig, om inte skaparen valt Olistad eller Privat); en uppdatering behåller spelets nuvarande publik.
- `"private"` sparar en version som bara skaparen kan öppna, för testning. Publicera exakt den versionen senare med `publish_game_version`; ladda inte upp den igen.
- `"unlisted"` publicerar den för alla som har länken, utan att visa den på PlayDrop; `"public"` publicerar den så att den kan upptäckas.

Följ det som din användare bad om och gör aldrig ett spel mer synligt än användaren avsåg. Se [vem som kan spela](https://www.playdrop.ai/sv/create/learn/distribution).

## Läs kvittot

Kvittot innehåller `gameId`, `slug`, `version`, `status`, `visibility` och `url`, länken till den exakta versionen för ägaren. Offentliga och olistade spel får också `shareUrl`, spelets bestående sida; ge den länken till din användare. För en privat version ger du tillbaka `url`. `instant` och `instantReason` visar om spelet är behörigt för [Instant](https://www.playdrop.ai/sv/create/learn/instant-games).

## Uppdatera spelet

Anropa `list_games`, skicka spelets `gameId` och behåll dess `name`. Skicka hela HTML-koden och hela minikatalogen igen: varje uppladdning är en fullständig ögonblicksbild, och utelämnade fält saknas i den nya versionen. Länken förblir densamma. Ett spel som först laddades upp som paket måste fortsätta använda paketvägen, så att dess filer och funktioner inte försvinner.

## Byt till ett paket senare

Att lägga till molnsparningar, en topplista, bilder för spelsidan eller en server gör spelet till ett paket. Det är en vanlig uppdatering av samma spel: behåll `name`, ladda upp det med `prepare_catalogue_upload` och sätt `expectedCurrentVersion` till den aktuella versionen från `list_games`. Läs om [paketering](https://www.playdrop.ai/sv/create/learn/packaging).

## Relaterade guider

- [Publicera från din AI-app](https://www.playdrop.ai/sv/create/learn/mcp-publishing): Så publicerar AI-agenter på PlayDrop via MCP: den enkla vägen och paketvägen, privat testning, publish_game_version, uppdateringar, gränser och felhantering.
- [Paketering och .play](https://www.playdrop.ai/sv/create/learn/packaging): Lägg upp en byggd spelmapp, ZIP eller .play med catalogue.json i roten, deklarera media för spelsidan och servrar och ladda upp med prepare_catalogue_upload.
- [Synlighet och räckvidd](https://www.playdrop.ai/sv/create/learn/distribution): Välj vem som kan öppna ett PlayDrop-spel, hur kontots standard och versionspublicering fungerar och hur Boost, Spelutbyte, Instant och sök ger nya spelare.
