Pakk et PlayDrop-spill med catalogue.json og .play
Organiser en ferdigbygd spillmappe, ZIP eller .play med catalogue.json i roten, deklarer oppføringsmedier og servere, og last opp med prepare_catalogue_upload.
En pakke er de ferdigbygde filene til et spill pluss en catalogue.json som beskriver det. Det er veien til alle PlayDrop-funksjoner: flere filer, SDK-en, oppføringsbilder og -videoer, topplister, prestasjoner, ressurser og en hostet server. Last den opp fra KI-appen din som en mappe, en ZIP eller en .play-fil.
Organiser mappen
Legg catalogue.json i roten, ved siden av det ferdigbygde spillet. Stier i katalogen er relative til den.
catalogue.json
index.html
assets/sprites.png
assets/music.mp3
listing/icon.png
listing/hero-landscape.png
listing/hero-portrait.png
listing/screenshots/landscape-1.png
listing/videos/portrait-1.mp4
achievements/first-win.png
server/index.mjsEn .play-fil er denne mappen zippet med catalogue.json i roten av arkivet, ikke inne i en omsluttende mappe, og omdøpt til .play. Den inneholder bare ferdigbygde filer: ingen node_modules, ingen kildekart du ikke vil gjøre offentlige, og ingen .env-filer. La kildeprosjektet bli hos brukeren din; PlayDrop kan ikke gi det tilbake.
Skriv catalogue.json
{
"apps": [{
"name": "moon-jump",
"displayName": "Moon Jump",
"subtitle": "Lunar platform hopping against the clock",
"description": "Jump between lunar platforms, collect oxygen and reach the flag.",
"controls": "Tap or press Space to jump. Swipe or use arrows to steer.",
"file": "index.html",
"version": "1.0.0",
"visibility": "PRIVATE",
"authMode": "OPTIONAL",
"tags": ["game-genre/casual", "game-genre/platformer"],
"types": ["solo"],
"controller": { "support": "optional", "type": "simpler" },
"surfaceTargets": { "desktop": true, "mobileLandscape": true, "mobilePortrait": true },
"primarySurface": "MOBILE_PORTRAIT",
"sourceLocale": "en",
"listing": {
"icon": "listing/icon.png",
"heroLandscape": "listing/hero-landscape.png",
"heroPortrait": "listing/hero-portrait.png",
"screenshotsLandscape": ["listing/screenshots/landscape-1.png"],
"videosPortrait": ["listing/videos/portrait-1.mp4"]
},
"leaderboards": [{ "key": "best-time", "displayName": "Best time", "description": "Fastest run to the flag",
"scoreType": "TIME_MS", "sort": "ASC" }],
"achievements": [{ "key": "first-win", "displayName": "First flag", "description": "Reach the flag once",
"kind": "STANDARD", "icon": "achievements/first-win.png" }],
"server": { "entry": "server/index.mjs", "rooms": ["game"] }
}]
}fileer den nøyaktige stien til siden som starter spillet. Uten den er inngangen som standard<name>.html, ikkeindex.html.versioner en ny semantisk versjon for hver opplasting av det samme spillet.surfaceTargetslister flatene du har testet;primarySurfaceer den spillet er laget for.- Katalogen gjør krav på oppføringsmedier, prestasjonsikoner og serverinngangen: en fil under
listing/som ingen felt refererer til, er ikke oppføringsmedier, og filer som ingen app gjør krav på, avvises før noe publiseres. server.entrypeker på én ferdigbygd ES-modulbunt; se sanntidsservere for spill.
Alle felt og grensene deres står i catalogue.json-referansen. Det finnes ikke noe versjonsfelt for katalogen å sette.
Last opp en mappe
Send prepare_catalogue_upload med en ny requestId, expectedCurrentVersion (null for et nytt spill), hele katalogobjektet og én beskrivelse per fil. Små tekstfiler kan være innebygd text. Alle andre filer er signerte opplastinger: beregn størrelse, SHA-256 (64 heksadesimale tegn med små bokstaver) og base64-MD5 lokalt fra de nøyaktige bytene. Denne forespørselen for et spill med to filer er komplett; erstatt de to plassholderne for sjekksummer på ikonet med ikonets ekte verdier.
{
"requestId": "moon-jump-1.0.0",
"expectedCurrentVersion": { "moon-jump": null },
"catalogue": {
"apps": [{
"name": "moon-jump",
"displayName": "Moon Jump",
"file": "index.html",
"version": "1.0.0",
"visibility": "PRIVATE",
"authMode": "OPTIONAL",
"tags": ["game-genre/casual"],
"types": ["solo"],
"controller": { "support": "off" },
"surfaceTargets": { "desktop": true, "mobileLandscape": false, "mobilePortrait": true },
"listing": { "icon": "listing/icon.png" }
}]
},
"files": [
{ "path": "index.html",
"text": "<!doctype html><html><head><meta charset=\"utf-8\"><title>Moon Jump</title></head><body><canvas id=\"game\"></canvas><script>/* built game */</script></body></html>" },
{ "path": "listing/icon.png", "contentType": "image/png", "sizeBytes": 50211,
"sha256": "REPLACE_WITH_ICON_SHA256_HEX", "md5Base64": "REPLACE_WITH_ICON_MD5_BASE64" }
]
}Svaret inneholder en opplastings-URL og headere for listing/icon.png. Send ikonets nøyaktige byte dit med PUT og alle returnerte headere, og kall deretter complete_catalogue_upload med samme requestId. url i kvitteringen åpner den private versjonen.
Last opp en ZIP eller .play
- Agenter med et filsystem pakker ut arkivet lokalt og laster det opp som en mappe, som ovenfor.
- ChatGPT sender arkivet den har løst opp fra samtalen, som
archive, med den ektedownload_urlogfile_id, og utencatalogueellerfiles. Arkivet kan være opptil 20 MiB komprimert.
Arkiver må være vanlige ZIP-filer: ingen kryptering, flere volumer, ZIP64, symbolske lenker, dupliserte stier, absolutte stier eller ... Tomme filer og nestede catalogue.json-filer avvises.
Grenser
512 filer eller arkivoppføringer (inkludert catalogue.json og mapper), 50 MiB per fil, 200 MiB utpakket og 1 MiB katalog-JSON. En hostet serverbunt er høyst 2 MiB.
Oppdater en pakke
Les list_games, behold hver apps name, øk version og sett expectedCurrentVersion til den nåværende publiserte versjonen. Send hele øyeblikksbildet: alle filer og felt den nye versjonen skal ha. Uendrede filer fra en beholdt versjon kan sendes med reuse: { gameId, version, path } i stedet for bytene sine. Nøkler for topplister og prestasjoner kan ikke fjernes eller endre type; avvikle en med "status": "RETIRED".
Ressurser connectoren ikke kan laste opp ennå
PlayDrop kjører kjørbare 3D-modeller (MODEL_3D-ressurser med underkategorien procedural eller formatet CUSTOM) i sine egne verktøy, men connectoren avviser dem fordi API-et ikke kan validere koden deres. Bak dem til et støttet format, eller referer til en ressurs som allerede er publisert på PlayDrop. Ferdigbakte prosedyriske bilder og spriteark godtas. Se spillressurser.