PlayDrop logoPlayDrop Studio
TwórzWymiana rozgrywekZdobywajUcz sięKonektoryZasobySpołecznośćWsparcie
PlayDrop logoPlayDrop Studio
TwórzWymiana rozgrywekZdobywajUcz sięKonektoryZasobySpołecznośćWsparcie
Zaloguj się
Własne formaty i twórczość graczy
Dokumentacja

Zacznij tutaj

PrzeglądTwoja pierwsza graGry PlayDropFAQ

Twórz z Cloud

Tworzenie w CloudPlany i generowania

Połącz swoją aplikację AI

Wszystkie konektoryClaudeChatGPTClaude CodeCodexCursorGeminiAntigravityGrok BuildGrok BotGrok ChatLovableReplit

Publikuj i udostępniaj

Publikuj z aplikacji AIProste gry HTMLPakowanie i .playPublikowanie i importPliki gryWidoczność i zasięgGrafika i wideo strony gryGatunki i tagiLokalizacjaGry Instant

Wrażenia z gry

Ładowanie, pauza i dźwiękPełny ekran i bezpieczne obszaryZapisy w chmurzeGrupy lokalne i kontrolery

Wspólna gra

Udostępnianie, znajomi i zaproszeniaRankingiOsiągnięciaGrupy online i głosSerwery czasu rzeczywistego

Zarabiaj

ZarabianieKredyty i nagrody

Zasoby

Zasoby gryGenerowanie zasobów z AIWłasne formaty i twórczość graczy

Dokumentacja techniczna

SDK klientaSDK serweracatalogue.jsonBłędy i odzyskiwanieRozwiązywanie problemów
DokumentacjaWłasne formaty i twórczość graczy
Zasoby

Własne formaty zasobów i twórczość graczy w PlayDrop

Zdefiniuj format zasobu, zadeklaruj formaty czytane lub zapisywane przez grę i pozwól graczom zapisywać i publikować dzieła przez sdk.assets.custom.

Specyfikacje zasobów pozwalają grze zdefiniować własny rodzaj zasobu, taki jak poziom, postać czy talia, jako kontrakt plików. Gracze mogą wtedy tworzyć, zapisywać i publikować dzieła w tym formacie, a inne gry, które go obsługują, mogą je otwierać.

Zdefiniuj specyfikację zasobu

Specyfikację zasobu deklaruje się na liście assetSpecs w catalogue.json, obok apps:

json
{
  "assetSpecs": [{
    "name": "moon-level",
    "version": "1.0.0",
    "displayName": "Moon Jump level",
    "symbol": "specs/moon-level.svg",
    "contract": "specs/moon-level.contract.json"
  }]
}

Kontrakt wskazuje pliki każdego zasobu i sposób ich sprawdzania:

json
{
  "primaryRole": "level",
  "roles": [
    { "name": "level", "required": true, "contentTypes": ["application/json"], "mode": "TEXT",
      "jsonSchema": { "type": "object", "required": ["tiles"], "properties": { "tiles": { "type": "array" } } } },
    { "name": "thumbnail", "required": false, "contentTypes": ["image/png"], "mode": "BINARY" }
  ]
}

Role mogą zawierać schemat JSON, który PlayDrop sprawdza przy każdym zapisie. Gdy format się zmienia, opublikuj nową wersję specyfikacji; stare zasoby zachowują swoją wersję.

Zadeklaruj, co gra obsługuje

json
{
  "assetSpecSupport": [
    { "assetSpec": "asset-spec:your-name/moon-level", "versionRange": "^1.0.0", "capabilities": ["READ", "WRITE"] }
  ]
}

Możliwości to READ, WRITE, EDIT, PREVIEW i IMPORT.

Zapisuj i wczytuj twórczość graczy

js
const levels = sdk.assets.custom.forSpec("asset-spec:your-name/moon-level");

await levels.saveDraft({ assetName: "crater-run", displayName: "Crater run",
  files: { level: new Blob([JSON.stringify(level)], { type: "application/json" }) } });
await levels.publish({ assetName: "crater-run", displayName: "Crater run", files: { level: levelBlob, thumbnail: pngBlob } });

const mine = await levels.listMine();
const latest = mine[0]?.latestPublicVersion;
if (latest) startLevel(await levels.loadJson({ assetRef: latest.assetRef, role: "level" }));

const community = await levels.listPublic({ limit: 20 }); // { assets, pagination }
  • saveDraft zachowuje prywatny szkic; publish czyni go publicznym. Oba wymagają kompletnego zestawu plików.
  • Odwołania do zasobów wyglądają jak asset:creator/name@r2. loadJson, loadText i downloadFile odczytują opublikowane zasoby; loadOwned, loadOwnedJson i loadOwnedFile odczytują własne zasoby gracza, łącznie ze szkicami.
  • supports(versionRef, capability) sprawdza obsługę przed otwarciem zasobu z innej wersji.
  • Błędy używają kodów takich jak custom_asset_capability_unsupported i custom_asset_role_type_mismatch.

Gracze muszą być zalogowani, aby zapisywać. Sprawdzaj to, co publikują gracze, tak jak wszelkie treści użytkowników: obowiązuje je polityka treści PlayDrop.

Co przyjmuje konektor

Własne zasoby i specyfikacje zawierające tylko dane przesyła się jak inne pliki. Modele wykonywalne, czyli zasoby MODEL_3D z podkategorią procedural lub w formacie CUSTOM, konektor odrzuca, ponieważ API nie uruchamia kodu twórców; wypal je albo odwołaj się do opublikowanej wersji. Zobacz zasoby gry.

Powiązane poradniki

  • Zasoby gryDodaj do gry obrazy, dźwięk, wideo i 3D: pliki w pakiecie, zasoby należące do gry, publiczne zasoby i pakiety oraz wyszukiwanie przez sdk.assets.
  • catalogue.jsonPola catalogue.json gier PlayDrop: tożsamość, strona gry, tryby gry, powierzchnie, logowanie, Instant, wstępne ładowanie, media, tłumaczenia, wyniki i serwery.
  • SDK klientaSDK PlayDrop w przeglądarce: cykl życia hosta, gracz i zapisy, kontrolery, funkcje społecznościowe, gra wieloosobowa, sklep, reklamy, rankingi, zasoby i AI.
PoprzedniGenerowanie zasobów z AI dla gier PlayDropNastępnyDokumentacja SDK klienta PlayDrop
Pokaż Markdown
EnglishFrançaisDeutsch日本語한국어EspañolPortuguês (Brasil)Bahasa Indonesia繁體中文简体中文ItalianoPolskiNederlandsSvenskaNorsk bokmålSuomiTürkçeไทยTiếng Việtالعربية

Na tej stronie

Zdefiniuj specyfikację zasobuZadeklaruj, co gra obsługujeZapisuj i wczytuj twórczość graczyCo przyjmuje konektor
Pokaż Markdown