catalogue.json: PlayDrop-pelin metatiedot ja lokalisointi
Viite pelin nimille, kuvauksille, lajitunnisteille, pelisivun kuville ja videoille, käännöksille ja valinnaiselle server-kentälle PlayDrop Connectorissa.
PlayDrop Connector lähettää catalogue.json-metatietosi pelitiedostojen mukana; komentorivityökalua ei tarvita. PlayDrop Cloud ylläpitää näitä metatietoja Studio-peleille.
Täydellinen yksityinen lataus komennolla prepare_catalogue_upload
{
"requestId": "my-game-v1-unique-request",
"catalogue": {
"apps": [
{
"name": "my-game",
"displayName": "My Game",
"file": "index.html",
"version": "1.0.0",
"visibility": "PRIVATE",
"authMode": "OPTIONAL",
"surfaceTargets": {
"desktop": true,
"mobileLandscape": false,
"mobilePortrait": false
}
}
]
},
"expectedCurrentVersion": {
"my-game": null
},
"files": [
{
"path": "index.html",
"text": "<!doctype html><html><head><title>My Game</title></head><body><button onclick=\"this.textContent=Number(this.textContent)+1\">0</button></body></html>"
}
]
}Tämä on täydellinen prepare_catalogue_upload-pyyntö uudelle yksityiselle pelille. Korvaa esimerkin HTML rakentamallasi pelillä ja käytä yksilöllistä requestId-arvoa jokaiselle aiotulle lataukselle. catalogue-objekti on tiedoston catalogue.json sisältö; files ja expectedCurrentVersion kuuluvat työkalupyyntöön, tuon objektin ulkopuolelle.
apps[].file-arvon on vastattava täsmälleen jotakin files[].path-arvoa. Jos file jätetään pois, merkintä käyttää oletuksena arvoa <name>.html, ei index.html. surfaceTargets on objekti, jossa on totuusarvot desktop, mobileLandscape ja mobilePortrait; ota käyttöön vähintään yksi testaamasi pinta. Ilmoita versio ja näkyvyys selvästi. Esimerkki käyttää upotettua tekstitiedostoa; liitteet tai allekirjoitetut tavulataukset voivat käyttää samaa polkua.
Valmistelun jälkeen lähetä pyydetyt tiedostotavut ja kutsu complete_catalogue_upload samalla requestId-arvolla. Avaa yksityinen versio testataksesi sitä. Päivitystä varten lue list_games, säilytä sama name, anna uusi version ja täysi tilannekuva ja aseta expectedCurrentVersion[name] palvelimen palauttamaan nykyiseen julkiseen versioon (tai arvoon null, jos sellaista ei ole). Se on ristiriitatarkistus, ei ladattavan version arvo. Yritä keskeytyneet lataukset uudelleen alkuperäisellä pyynnön tunnuksella. Julkaise testattu säilytetty versio komennolla publish_game_version, kun olet valmis.
Vanha yhden pelin yhteensopivuusesimerkki
Alla oleva esimerkki on vanha yhden pelin muoto. Täydet katalogilataukset tukevat myös useita pelejä, resursseja, paketteja ja spec-määrityksiä; pyydä connectorilta nykyinen skeema. Jokainen päivitys antaa täyden tilannekuvan selvällä näkyvyydellä ja versiolla. Pois jätettyjä katalogin kohteita ei poisteta.
Pidä pienaakkosinen slug vakaana päivittäessäsi. Lisää tarvittaessa näyttönimi, tarkka kuvaus, ohjaimet, lähdekieli ja tunnetut tunnisteet. Alla oleva esimerkki käyttää olemassa olevaa tasohyppelylajin tunnistetta.
{
"apps": [{
"name": "moon-jump",
"displayName": "Moon Jump",
"description": "Jump between lunar platforms and reach the finish.",
"controls": "Arrow keys to move. Space to jump.",
"sourceLocale": "en",
"tags": ["game-genre/platformer"]
}]
}Tuetut kentät ja rajat
name: 1–100 pientä kirjainta, numeroa tai yhdysmerkkiä, alkaen kirjaimella tai numerolla. displayName: ei-tyhjä nimi. subtitle: enintään 120 merkkiä. description: enintään 3 000 merkkiä Markdownia, ilman H1-otsikoita, upotettua mediaa tai taulukoita. inspirationPrompt: enintään 400 merkkiä yksirivistä pelkkää tekstiä. Tekstirajat laskevat JavaScriptin UTF-16-koodiyksiköt.
Valinnaisia kenttiä ovat controls, releaseNotes, makingOf, emoji, color, sourceRepository, license, tags, sourceLocale, listingLocalizations, listingMedia ja server. Tunnisteet käyttävät olemassa olevia group-slug/tag-slug-viitteitä, enintään 20 yksilöllistä tunnistetta. server luettelee ladatun server.js-tiedoston Colyseus-huoneet, esimerkiksi "server": { "rooms": ["game"] }; katso server SDK. Pyydä connectorilta nykyiset hyväksytyt lisenssiarvot ja täydet kenttäsäännöt ennen julkaisua. Valinnaiset natiivisovellusvihjeet: prefetch luettelee ladatut tiedostot, jotka PlayDropin iOS-, macOS- ja Android-sovellukset voivat ladata ennen pelaamista, esimerkiksi "prefetch": { "required": ["game.js"], "optional": ["music.mp3"] } (aloitussivu sisältyy aina), ja "offlineSupported": true antaa näiden sovellusten tarjota pelin offline-tilassa, kun sen vaaditut tiedostot on tallennettu. Virheelliset arvot ohitetaan eivätkä koskaan estä latausta; verkkosivustot lataavat pelit tavalliseen tapaan.
Instant-pelit: aseta "instant": true, kun peli on pelattavissa 2 sekunnissa enintään 10 MB:n käynnistystiedostoista (aloitussivu sekä prefetch.required tai kaikki ladatut tiedostot, jos mitään ei ole lueteltu). Instant-pelit saavat salamamerkin ja pelataan PlayDropin puhelinsovellusten Instant-syötteessä. Laita syvemmät kentät ja lisäsisältö kohtaan prefetch.optional, viimeistele shaderien käännös ja muu lämmittely ennen ready()-kutsua, tee esikatselusta pelitilanne otsikkoruudun sijaan ja salli vieraat (authMode OPTIONAL tai NONE), jotta kaikki näkevät pelin syötteessä. PlayDrop tarkistaa koon latauksessa ja poistaa merkin versioilta, jotka käynnistyvät puhelimissa hitaasti; peli, joka ei yllä rajaan, julkaistaan silti.
Pelisivun kuvat ja videot
Lataa pelisivun media tiedostoina index.html-tiedoston viereen polun mukaan nimettynä: listing/icon.png, listing/hero-landscape.png (16:9) ja listing/hero-portrait.png (9:16), joissa pelin nimi on kuvituksessa, kuvakaappaukset kuten listing/screenshots/landscape/0.png sekä videot listing/videos/landscape/0.mp4 (traileri) ja listing/videos/portrait/0.mp4 (mobiilitiisteri). Videot toistetaan äänettöminä pelikorteissa ja pelisivulla, traileri tietokoneilla ja televisiossa ja tiisteri puhelimilla, joten ne ovat nopein tapa näyttää pelattavuus ja saada ensimmäinen pelikerta. Kuvat ovat PNG ja videot MP4.
Käännä pelisivu tarkasti
Julkaise aina englanti sekä oma kielesi, jos se on eri. Aseta sourceLocale alkuperäiseksi kieleksi. listingLocalizations tukee englantia, ranskaa, saksaa, espanjaa, brasilianportugalia, indonesiaa, japania, koreaa, perinteistä kiinaa ja yksinkertaistettua kiinaa. Jokainen käännös tarvitsee locale ja displayName; kun lataat sen lähteensä kanssa, PlayDrop täyttää sourceHash-arvon. Lataa käännetty kuvitus polkuun listing/locales/<locale>/, esimerkiksi listing/locales/fr/hero-landscape.png ranskankielisellä nimellä; se yhdistetään käännökseensä automaattisesti. Päivitä käännökset lähteen muutosten jälkeen. Pelisivun kääntäminen ei käännä itse peliä.
Pelaajat, ryhmät ja ohjaimet
Ilmoita, miten peliäsi pelataan, kentillä types, party, controller ja roomVoice jokaisessa pelimerkinnässä:
{
"types": ["solo", "online", "party"],
"party": { "local": [1, 2, 3, 4], "online": [1, 2, 3, 4] },
"controller": { "support": "optional", "type": "simpler" },
"roomVoice": true
}types yhdistää solo (pelattavissa yksin), online (pelataan muiden kanssa verkossa) ja party (ryhmä pelaa yhdessä). party.local luettelee tarkat ihmismäärät, jotka voivat pelata yhdellä ruudulla; party.online luettelee ystäväryhmien koot, enintään 4, jotka voivat siirtyä verkkoon yhdessä, ei huoneen kapasiteettia. Koot ovat tarkkoja: [2, 4] sulkee pois 3:n. party vaatii party-tyypin, party.online vaatii online-tyypin, ja 1 kohdassa party.local vaatii solo-tyypin. roomVoice: true ottaa huoneen puheen käyttöön ja vaatii online-tyypin.
controller.support on off (oletus, kun controller jätetään pois), optional tai required. Kun se ei ole off, controller.type nimeää pelin tarvitsemat vähimmäisohjaimet:
any: suunnat, Confirm ja Cancel; jokainen ohjain toimii, myös kaukosäätimet.simpler: yksi analogitikku, neljä etupainiketta ja Menu; PlayDropin puhelinohjaimet ja tavalliset peliohjaimet kelpaavat.standard: D-pad, kaksi painettavaa tikkua, neljä etupainiketta, kaksi olkapainiketta, kaksi liipaisinta ja Menu.custom: varattu pelikohtaisille puhelinohjaimille; ei vielä saatavilla.
Kun ohjaintuki on päällä, jokainen ilmoitettu paikallinen määrä on voitava pelata ohjaimilla; lue ohjainsyöte SDK:n kautta. Olemassa olevat pelit voivat säilyttää players ja controllerMode, jotka toimivat yhä, mutta uudet pelit käyttävät näitä kenttiä, eikä yksi merkintä voi sekoittaa molempia. Isäntä valitsee paikallisen tai verkkopelin, ei koskaan molempia. Nämä ilmoitukset säilyvät Cloud-, CLI- ja MCP-latauksissa, säilytetyissä yksityisissä versioissa ja julkaisussa. Saatavuus riippuu myös alustan käyttöönotosta ja isäntäversiosta.
MCP-palvelinlatauksissa anna rakennettu ESM-paketti .mjs/.js SERVER-kuvaajana ja osoita server.entry siihen. Cloud-/CLI-lähdeprojektit säilyttävät TypeScript-aloituspisteensä. PlayDrop tarjoaa Colyseus- ja server SDK -ajoympäristön; älä koskaan sisällytä puheenpalveluntarjoajan tunnuksia peliin.