# Julkaise pelejä tekoälysovelluksestasi PlayDrop MCP:llä

Miten tekoälyagentit julkaisevat PlayDropiin MCP:llä: yksinkertainen tapa ja paketti, yksityinen testaus, publish_game_version, päivitykset, rajat ja virheet.

Source: https://www.playdrop.ai/fi/create/learn/mcp-publishing

PlayDropin MCP-palvelimen avulla tekoälysovellus voi julkaista pelin ihmisensä PlayDrop-tilille ja palauttaa linkin, joka toimii myös päivitysten jälkeen. Tämä opas kertoo vaiheiden järjestyksen. Jokainen vaihe linkittää oppaaseen, jossa on yksityiskohdat.

## Ennen kuin rakennat

1. Kutsu `get_documentation({topic:"index"})` ja lue pelin käyttämien ominaisuuksien oppaat ennen koodin kirjoittamista. Kun koko näytön asettelu, tallennukset ja ohjaimet suunnitellaan alusta asti, peliä ei tarvitse kirjoittaa myöhemmin uudelleen. Tarkat metodien allekirjoitukset löytyvät aiheista `sdk-types`, `server-sdk-types` ja `shared-types`.
2. Kutsu `list_games`. Jos peli on jo olemassa, päivität sitä ja säilytät sen `name`-arvon, jotta se säilyttää linkkinsä ja pelaajansa.
3. Valitse tapa. Yksi itsenäinen HTML-tiedosto ilman PlayDrop SDK:ta käyttää [yksinkertaista tapaa](https://www.playdrop.ai/fi/create/learn/html-games). Kaikki muu, mukaan lukien mikä tahansa SDK-ominaisuus, pelisivun media tai palvelin, käyttää [pakettia](https://www.playdrop.ai/fi/create/learn/packaging).

Säilytä tekijän lähdeprojekti itse. PlayDrop vastaanottaa vain käännetyn tuloksen: se ei ole lähdekoodin varmuuskopio eikä voi palauttaa lähdekoodia.

## Yksinkertainen tapa: upload_game

Lähetä `requestId`, koko HTML (enintään 10 MiB eli 10 485 760 UTF-8-tavua) ja minikatalogi. Anna `gameId`, kun päivität olemassa olevaa peliä. Versionumero kasvaa automaattisesti. Kentät on kuvattu sivulla [yksinkertaiset HTML-pelit](https://www.playdrop.ai/fi/create/learn/html-games).

## Pakettitapa: valmistele, lataa, viimeistele

Kutsu `prepare_catalogue_upload` arvoilla `requestId` ja `expectedCurrentVersion` sekä yhdellä syötemuodolla:

- **Kansio:** `catalogue` (catalogue.json-tiedoston sisältö) sekä `files`, yksi kuvaaja tiedostoa kohden suhteellisen polun kera. Kuvaaja sisältää upotetun `text`-sisällön, allekirjoitetun latauksen kuvauksen, liitesidonnan tai säilytetyn version tiedoston uudelleenkäytön (`reuse`).
- **Paikallinen ZIP tai .play:** pura se paikallisesti ja lähetä sitten juuren katalogi ja kansion kuvaajat. Älä koskaan laita base64-muotoisia arkiston tavuja työkalukutsuun.
- **ChatGPT-liite:** anna isännän selvittämä ZIP tai .play kenttänä `archive` oikeiden `download_url`- ja `file_id`-arvojen kanssa. Se voi olla pakattuna enintään 20 MiB, ja catalogue.json-tiedoston on oltava sen juuressa.

Allekirjoitetuissa latauksissa kukin kuvaaja antaa arvot `path`, `contentType`, `sizeBytes`, `sha256` (64 pientä heksamerkkiä) ja `md5Base64`, jotka lasketaan paikallisesti täsmälleen samoista tavuista. Lähetä nämä tavut PUT-pyynnöllä jokaiseen palautettuun URL-osoitteeseen kaikkien palautettujen otsakkeiden kanssa ja kutsu sitten `complete_catalogue_upload` samalla `requestId`-arvolla.

ChatGPT:ssä kansion tiedostot voivat tulla liitteistä, jotka sidotaan järjestysnumeron mukaan:

```
attachments: [htmlFile, iconFile]
files: [{path:"index.html", attachmentIndex:0}, {path:"listing/icon.png", attachmentIndex:1, role:"LISTING", app:"my-game"}]
```

Jokainen sovellus tarvitsee ilmoitetun `version`-arvon, näkyvyyden (pyynnössä tai sovelluksessa) ja kentässä `expectedCurrentVersion` merkinnän, jonka avaimena on sovelluksen nimi: `null` sen luomiseksi tai nykyinen julkaistu versio `list_games`-kutsusta sen päivittämiseksi. Vanhentunut arvo hylätään, joten toista latausta ei koskaan korvata vahingossa.

## Testaa yksityisesti ja julkaise sitten

Lataa arvolla `visibility: "private"`, kun peli käyttää SDK:ta tai palvelinta tai kun ihmisesi haluaa kokeilla sitä ensin. Avaa kuittauksen `url` pelataksesi juuri tätä versiota PlayDropissa oikean SDK-isännän kanssa. Isännöidyt palvelintoiminnot toimivat vain palveluun ladatuissa versioissa, joten testaa ne näin.

Kun versio toimii, julkaise juuri se kutsulla `publish_game_version` ja anna `gameId`, `version`, `expectedCurrentVersion` sekä `visibility` (`public` tai `unlisted`), jos ihmisesi valitsi sen. Kutsu käyttää uudelleen testatut tiedostot, pelisivun ja tarkistuksen. Älä lataa peliä uudelleen julkaistaksesi sen.

Kokeillaksesi paikallista versiota PlayDrop-kehyksessä ennen lataamista avaa `https://www.playdrop.ai/@<username>/<slug>/dev?url=<URL-encoded local address>` tavallisessa selaimessa koneella, jolla paikallinen palvelin on käynnissä.

## Valitse, kuka voi pelata

`visibility` hyväksyy arvot `public`, `unlisted` ja `private`. Jos uudelle pelille ei ole valittu näkyvyyttä, käytä tekijän tallennettua asetusta: `upload_game` soveltaa sitä, kun jätät näkyvyyden pois, ja `get_account` näyttää sen kenttänä `publishing.defaultVisibility`. Päivityksessä säilytä pelin `gameVisibility` `list_games`-kutsusta, ellei ihmisesi muuta sitä; `upload_game` tekee tämän, kun jätät näkyvyyden pois, ja paketissa se ilmoitetaan. Listaamaton tarkoittaa, että kuka tahansa linkin saanut voi pelata; se ei ole ystävälista. Älä koskaan tee pelistä näkyvämpää kuin ihmisesi tarkoitti. Lisätiedot: [kuka voi pelata](https://www.playdrop.ai/fi/create/learn/distribution).

## Anna oikea linkki

Julkisten ja listaamattomien pelien kuittaukset sisältävät `shareUrl`-linkin, joka on pelin pysyvä sivu: anna se ihmisellesi. Yksityinen versio palauttaa `url`-linkin, joka on omistajan linkki juuri tähän versioon. Paketin kuittaukset luettelevat jokaisen kohteen; valmistuneet kohteet pysyvät julkaistuina, vaikka myöhempi kohde epäonnistuisi.

## Päivitä peli

Lue `list_games` ja nykyinen versio, säilytä `name` ja lähetä täydellinen tilannevedos: jokainen tarkoitettu tiedosto ja kaikki tarkoitetut metatiedot, koska pois jätetyt kentät puuttuvat uudesta versiosta. Pois jätettyjä katalogin kohteita ei koskaan poisteta. Lue `get_game_version`-kutsulla muutettavan version tarkka katalogi, myös sen säädettävien arvojen tila.

## Rajat

- Yksinkertainen tapa: yksi enintään 10 MiB:n HTML-tiedosto.
- Paketti: 512 kansion tiedostokuvaajaa tai 512 arkiston merkintää (catalogue.json ja hakemistot mukaan lukien), 50 MiB tiedostoa kohden, yhteensä 200 MiB purettuna ja 1 MiB katalogin JSONia.
- Arkistot: vain turvallisia suhteellisia polkuja; päällekkäiset polut, symboliset linkit sekä salatut, moniosaiset ja ZIP64-arkistot hylätään.
- Valmistellut lataukset vanhenevat 30 minuutin kuluttua.

## Virheet ja uudelleenyritykset

Virheissä on kentät `error`, `message`, `retryable`, `nextAction`, `docsUrl` ja `documentationTopic`. Noudata `nextAction`-ohjetta. Kadonneen vastauksen jälkeen yritä samaa sisältöä uudelleen samalla `requestId`-arvolla; muuttunut sisältö tarvitsee uuden. Katso [virheet ja palautuminen](https://www.playdrop.ai/fi/create/learn/errors).

Ilmoita toistettavasta ongelmasta tai hämmentävästä vaiheesta `send_feedback`-työkalulla, ilman käyttöoikeustunnuksia tai allekirjoitettuja URL-osoitteita.

## Liittyvät oppaat

- [Yksinkertaiset HTML-pelit](https://www.playdrop.ai/fi/create/learn/html-games): 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.
- [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.
- [Virheet ja palautuminen](https://www.playdrop.ai/fi/create/learn/errors): PlayDropin MCP-työkalujen palauttama virhemuoto, milloin yrittää uudelleen samalla requestId-arvolla ja korjaus kuhunkin yleiseen virhekoodiin.
