PlayDrop
PlayDrop kunne ikke lastes inn

En nødvendig del av siden kunne ikke lastes ned. Prøv å laste den inn på nytt.

STYLESHEET_ERROR
PlayDrop logoPlayDrop Studio
OpprettPlayTradeTjenLærConnectorerFellesskapStøtte
catalogue.json
Dokumentasjon

Start her

OversiktDitt første spill

Lag spill med Cloud

Opprettelse med CloudPubliser og importerAbonnementer og genereringerKreditter og belønninger

Koble til agenten din

Alle connectorerClaudeChatGPTClaude CodeCodexCursorGeminiAntigravityGrok BuildGrok BotGrok ChatLovableReplit

Teknisk referanse

Spillfilercatalogue.jsonKlient-SDKServer-SDKFeilsøkingFAQ
Dokumentasjoncatalogue.json
Teknisk referanse

catalogue.json: spillmetadata og lokalisering på PlayDrop

Referanse for spilltitler, beskrivelser, sjangertagger, oppføringsbilder og -videoer, oversettelser og det valgfrie server-feltet i PlayDrop Connector-formatet.

PlayDrop Connector sender catalogue.json-metadataene dine sammen med spillfilene. Du trenger ikke noe kommandolinjeverktøy. PlayDrop Cloud vedlikeholder disse metadataene for Studio-spill.

Komplett privat opplasting med prepare_catalogue_upload

json
{
  "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>"
    }
  ]
}

Dette er en komplett prepare_catalogue_upload-forespørsel for et nytt privat spill. Bytt ut eksempel-HTML-en med det ferdige spillet ditt, og bruk en unik requestId for hver tiltenkte opplasting. catalogue-objektet er innholdet i catalogue.json. files og expectedCurrentVersion hører til verktøyforespørselen, utenfor det objektet.

apps[].file må samsvare nøyaktig med en files[].path. Hvis file utelates, er standarden <name>.html, ikke index.html. surfaceTargets er et objekt med de boolske verdiene desktop, mobileLandscape og mobilePortrait. Slå på minst én flate du har testet. Deklarer versjon og synlighet eksplisitt. Eksempelet bruker en innebygd tekstfil. Vedlegg eller signerte byte-opplastinger kan bruke samme sti.

Etter forberedelsen sender du de forespurte filbytene og kaller complete_catalogue_upload med samme requestId. Åpne den private versjonen for å teste den. For en oppdatering leser du list_games, beholder samme name, oppgir en ny version og hele øyeblikksbildet, og setter expectedCurrentVersion[name] til den gjeldende offentlige versjonen serveren returnerer (eller null hvis det ikke finnes noen). Det er en konfliktsjekk, ikke versjonen som lastes opp. Prøv avbrutte opplastinger på nytt med den opprinnelige forespørsels-ID-en. Publiser den testede, beholdte versjonen med publish_game_version når du er klar.

Eksempel på eldre kompatibilitet for enkeltspill

Eksempelet nedenfor har den eldre formen for enkeltspill. Fullstendige katalogopplastinger støtter også flere spill, ressurser, pakker og spesifikasjoner. Be connectoren om gjeldende skjema. Hver oppdatering gir et fullstendig øyeblikksbilde med eksplisitt synlighet og versjon. Utelatte katalogelementer slettes ikke.

Hold slug-en med små bokstaver stabil ved oppdatering. Legg til en visningstittel, en nøyaktig beskrivelse, kontroller, kildespråket og kjente tagger etter behov. Eksempelet nedenfor bruker den eksisterende sjangertaggen for plattformspill.

json
{
  "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"]
  }]
}

Støttede felt og grenser

name: 1–100 små bokstaver, sifre eller bindestreker, som begynner med en bokstav eller et siffer. displayName: tittel som ikke er tom. subtitle: opptil 120 tegn. description: opptil 3000 tegn Markdown, uten H1-overskrifter, innebygde medier eller tabeller. inspirationPrompt: opptil 400 tegn ren tekst på én linje. Tekstgrensene teller JavaScript UTF-16-kodeenheter.

Valgfrie felt omfatter controls, releaseNotes, makingOf, emoji, color, sourceRepository, license, tags, sourceLocale, listingLocalizations, listingMedia og server. Tagger bruker eksisterende group-slug/tag-slug-referanser, med høyst 20 unike tagger. server lister Colyseus-rommene til en opplastet server.js, for eksempel "server": { "rooms": ["game"] }. Se server-SDK-en. Be connectoren om gjeldende godkjente lisensverdier og fullstendige feltregler før publisering. Valgfrie hint til native apper: prefetch lister opplastede filer som PlayDrops iOS-, macOS- og Android-apper kan laste ned før spilling, for eksempel "prefetch": { "required": ["game.js"], "optional": ["music.mp3"] } (inngangssiden er alltid med), og "offlineSupported": true lar disse appene tilby spillet uten nett når de nødvendige filene er lagret. Ugyldige verdier ignoreres og blokkerer aldri en opplasting. Nettsteder laster spill som vanlig.

Instant-spill: sett "instant": true når spillet kan spilles innen 2 sekunder fra høyst 10 MB oppstartsfiler (inngangssiden pluss prefetch.required, eller alle opplastede filer når ingen er oppført). Instant-spill får lynmerket og spilles i Instant-feeden i PlayDrops telefonapper. Legg dypere brett og ekstra innhold i prefetch.optional, fullfør shader-kompilering og annen oppvarming før du kaller ready(), la forhåndsvisningen vise spilling i stedet for en tittelskjerm, og tillat gjester (authMode OPTIONAL eller NONE) slik at alle ser spillet i feeden. PlayDrop sjekker størrelsen ved opplasting og fjerner merket fra versjoner som starter sakte på telefoner. Et spill som ikke når kravet, blir likevel publisert.

Oppføringsbilder og -videoer

Last opp oppføringsmedier som filer ved siden av index.html, navngitt etter sti: listing/icon.png, listing/hero-landscape.png (16:9) og listing/hero-portrait.png (9:16) med spilltittelen i grafikken, skjermbilder som listing/screenshots/landscape/0.png, og videoer listing/videos/landscape/0.mp4 (traileren) og listing/videos/portrait/0.mp4 (mobilteaseren). Videoer spilles lydløst på spillkort og på spillsiden, traileren på datamaskin og TV og teaseren på telefoner, så de er den raskeste måten å vise spillingen på og få en første spilløkt. Bilder er PNG og videoer MP4.

Oversett oppføringen riktig

Publiser alltid engelsk pluss ditt eget språk hvis det er et annet. Sett sourceLocale til originalspråket. listingLocalizations støtter engelsk, fransk, tysk, spansk, brasiliansk portugisisk, indonesisk, japansk, koreansk, tradisjonell kinesisk og forenklet kinesisk. Hver oversettelse trenger locale og displayName. Når du laster den opp sammen med kilden, fyller PlayDrop ut sourceHash. Last opp oversatt grafikk under listing/locales/<locale>/, for eksempel listing/locales/fr/hero-landscape.png med den franske tittelen. Den kobles automatisk til oversettelsen sin. Oppdater oversettelser etter endringer i kilden. Oversettelse av oppføringen oversetter ikke selve spillet.

Spillere, grupper og kontrollere

Deklarer hvordan spillet ditt spilles med types, party, controller og roomVoice på hver spilloppføring:

json
{
  "types": ["solo", "online", "party"],
  "party": { "local": [1, 2, 3, 4], "online": [1, 2, 3, 4] },
  "controller": { "support": "optional", "type": "simpler" },
  "roomVoice": true
}

types kombinerer solo (kan spilles alene), online (spilles med andre over nettverket) og party (en gruppe som spiller sammen). party.local lister de nøyaktige antallene personer som kan spille på én skjerm. party.online lister vennegruppestørrelsene, opptil 4, som kan gå inn på nett sammen, ikke romkapasiteten. Størrelsene er nøyaktige: [2, 4] utelukker 3. party krever typen party, party.online krever online, og en 1 i party.local krever solo. roomVoice: true slår på romstemme og krever online.

controller.support er off (standard når controller utelates), optional eller required. Når den ikke er off, navngir controller.type de minste kontrollene spillet trenger:

  • any: retninger, Confirm og Cancel. Alle kontrollere fungerer, også fjernkontroller.
  • simpler: én analog spak, fire hovedknapper og Menu. PlayDrop-telefonkontrollere og standard spillkontrollere kvalifiserer.
  • standard: styrekors, to klikkbare spaker, fire hovedknapper, to skulderknapper, to avtrekkere og Menu.
  • custom: reservert for spillspesifikke telefonkontroller. Ikke tilgjengelig ennå.

Med kontrollerstøtte på må hvert deklarerte lokale antall kunne spilles med kontrollere. Les kontrollerinndata via SDK-en. Eksisterende spill kan beholde players og controllerMode, som fortsatt fungerer, men nye spill bruker disse feltene, og én oppføring kan ikke blande begge. Hosten velger lokal eller nettbasert spilling, aldri begge. Disse deklarasjonene overlever opplastinger via Cloud, CLI og MCP, beholdte private versjoner og publisering. Tilgjengelighet avhenger også av plattformens utrulling og host-bygget.

For MCP-serveropplastinger leverer du en bygd ESM-.mjs/.js-pakke som en SERVER-beskrivelse og peker server.entry til den. Kildeprosjekter for Cloud/CLI beholder TypeScript-inngangen sin. PlayDrop leverer kjøretiden for Colyseus og server-SDK-en. Ta aldri med påloggingsopplysninger for stemmeleverandører i et spill.

ForrigeLegg til ditt eget spill: HTML, mappe, .zip eller .playNestePlayDrop klient-SDK for nettleserspill
Vis Markdown
EnglishFrançaisDeutsch日本語한국어EspañolPortuguês (Brasil)Bahasa Indonesia繁體中文简体中文ItalianoPolskiNederlandsSvenskaNorsk bokmålSuomiTürkçeไทยTiếng Việtالعربية

På denne siden

Komplett privat opplasting med prepare_catalogue_uploadEksempel på eldre kompatibilitet for enkeltspillStøttede felt og grenserOppføringsbilder og -videoerOversett oppføringen riktigSpillere, grupper og kontrollere
Vis Markdown