# Julkaise yksinkertainen HTML-peli tekoälysovelluksestasi

Julkaise yksi itsenäinen, enintään 10 MiB:n HTML-tiedosto upload_game-kutsulla: mikä sopii, minikatalogi, näkyvyys, päivitykset ja milloin siirtyä pakettiin.

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

Yksinkertainen tapa julkaisee yhden tavallisen HTML-pelin, kuten canvas-pohjaisen arcade-pelin tai DOM-pulmapelin, yhdellä `upload_game`-kutsulla. Se ei tarvitse PlayDrop SDK:ta, build-kansiota eikä lisätiedostoja, ja se palauttaa linkin, jonka kuka tahansa voi avata puhelimella tai tietokoneella.

## Milloin yksinkertainen tapa sopii

- Koko peli on yksi enintään 10 MiB:n (10 485 760 UTF-8-tavua) HTML-tiedosto, jonka skriptit, tyylit, kuvat ja äänet on upotettu.
- Se on tavallinen selainpeli: se ei kutsu PlayDrop SDK:ta, joten siinä ei ole pilvitallennuksia, tulostauluja, saavutuksia, jakamista, ryhmiä, ostoja eikä mainoksia.
- Se ei tarvitse erillisiä tiedostoja: ei pelisivun kuvia tai videoita eikä pelipalvelinta.

Jos jokin näistä ei pidä paikkaansa, käytä sen sijaan [pakettia](https://www.playdrop.ai/fi/create/learn/packaging). Säilytä ominaisuudet, joita ihmisesi pyysi; älä koskaan poista niitä tai litistä monitiedostoista peliä yhdeksi tiedostoksi, jotta se mahtuisi tähän tapaan. Lataus hylkää SDK-kutsut, palvelinkoodin ja vain paketeissa sallitut katalogikentät virheellä `advanced_upload_required`.

## Lähetä peli

Kutsu `upload_game` uudella `requestId`-arvolla, koko HTML:llä ja yhden pelin minikatalogilla:

```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` on pelin pysyvä slug-tunniste: 1–100 pientä kirjainta, numeroa tai yhdysmerkkiä.
- `tags`-kentän on sisällettävä lajityyppi, kuten `game-genre/casual`; katso [lajityypit ja tagit](https://www.playdrop.ai/fi/create/learn/tags).
- `types` ilmoittaa, miten peliä pelataan; yhden tiedoston peli on yleensä `["solo"]`. Ryhmäkoot ja verkkopelaaminen kuuluvat paketteihin.
- `controller.support` kertoo todellisen ohjaintuen, myös arvon `off`.
- `authMode` määrää kirjautumisen: `NONE` tai `OPTIONAL` antaa kenen tahansa pelata; pois jätettynä oletus on `REQUIRED`. Sisällytä se jokaiseen päivitykseen.
- `primarySurface` nimeää suunnan, jolle peli on suunniteltu; yksinkertaiset lataukset näytetään tietokoneelle sekä vaaka- ja pystysuunnalle.

Muut hyväksytyt kentät ovat `subtitle`, `emoji`, `color`, `license`, `creation`, `releaseNotes`, `inspirationPrompt`, `makingOf`, `sourceRepository`, `sourceLocale`, `offlineSupported` ja `instant`. PlayDrop antaa versionumeron.

## Valitse, kuka voi pelata

- Jätä `visibility` pois, jolloin uusi peli noudattaa tekijän tilin asetusta (Julkinen, ellei hän ole valinnut asetusta Listaamaton tai Yksityinen); päivitys säilyttää pelin nykyisen yleisön.
- `"private"` tallentaa testausta varten version, jonka vain tekijä voi avata. Julkaise juuri tämä versio myöhemmin kutsulla `publish_game_version`; älä lataa sitä uudelleen.
- `"unlisted"` julkaisee sen kaikille linkin saaneille näyttämättä sitä listauksissa; `"public"` julkaisee sen löydettäväksi.

Noudata sitä, mitä ihmisesi pyysi, äläkä koskaan tee pelistä näkyvämpää kuin oli tarkoitus. Katso [kuka voi pelata](https://www.playdrop.ai/fi/create/learn/distribution).

## Lue kuittaus

Kuittaus sisältää kentät `gameId`, `slug`, `version`, `status`, `visibility` ja `url`, joka on juuri tämän version linkki omistajalle. Julkiset ja listaamattomat pelit saavat myös `shareUrl`-linkin, joka on pelin pysyvä sivu; anna se ihmisellesi. Yksityisestä versiosta anna ihmisellesi `url`. `instant` ja `instantReason` kertovat [Instant](https://www.playdrop.ai/fi/create/learn/instant-games)-kelpoisuudesta.

## Päivitä peli

Kutsu `list_games`, anna pelin `gameId` ja säilytä sen `name`. Lähetä koko HTML ja koko minikatalogi uudelleen: jokainen lataus on täydellinen tilannevedos, ja pois jätetyt kentät puuttuvat uudesta versiosta. Linkki pysyy samana. Alun perin pakettina ladatun pelin on käytettävä jatkossakin pakettitapaa, jotta sen tiedostot ja ominaisuudet eivät katoa.

## Siirry myöhemmin pakettiin

Pilvitallennusten, tulostaulun, pelisivun kuvien tai palvelimen lisääminen tekee pelistä paketin. Se on saman pelin tavallinen päivitys: säilytä `name`, lataa se kutsulla `prepare_catalogue_upload` ja aseta `expectedCurrentVersion` nykyiseen versioon `list_games`-kutsusta. Lue [paketointi](https://www.playdrop.ai/fi/create/learn/packaging).

## Liittyvät oppaat

- [Julkaise tekoälysovelluksesta](https://www.playdrop.ai/fi/create/learn/mcp-publishing): Miten tekoälyagentit julkaisevat PlayDropiin MCP:llä: yksinkertainen tapa ja paketti, yksityinen testaus, publish_game_version, päivitykset, rajat ja virheet.
- [Paketointi ja .play](https://www.playdrop.ai/fi/create/learn/packaging): Järjestä pelikansio, ZIP tai .play niin, että catalogue.json on juuressa, ilmoita pelisivun media ja palvelimet ja lataa prepare_catalogue_upload-kutsulla.
- [Näkyvyys ja tavoittavuus](https://www.playdrop.ai/fi/create/learn/distribution): Valitse, kuka voi avata PlayDrop-pelin, miten tilin oletus ja versioiden julkaisu toimivat ja miten Boost, Pelivaihto, Instant ja haku tuovat uusia pelaajia.
