Mukautetut resurssimuodot ja pelaajien luomukset PlayDropissa
Määrittele oma resurssimuotosi asset spec -määrityksellä, ilmoita pelin lukemat ja kirjoittamat muodot ja anna pelaajien tallentaa ja julkaista luomuksia.
Asset spec -määritysten avulla peli voi määritellä oman resurssityyppinsä, kuten tason, hahmon tai korttipakan, tiedostojen sopimuksena. Pelaajat voivat sitten tehdä, tallentaa ja julkaista luomuksia tässä muodossa, ja muut sitä tukevat pelit voivat avata ne.
Määrittele asset spec
Asset spec ilmoitetaan catalogue.json-tiedoston assetSpecs-luettelossa apps-kentän rinnalla:
{
"assetSpecs": [{
"name": "moon-level",
"version": "1.0.0",
"displayName": "Moon Jump level",
"symbol": "specs/moon-level.svg",
"contract": "specs/moon-level.contract.json"
}]
}Sopimus nimeää kunkin resurssin tiedostot ja sen, miten ne tarkistetaan:
{
"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" }
]
}Rooleilla voi olla JSON Schema, jonka PlayDrop tarkistaa jokaisella tallennuksella. Julkaise määrityksestä uusi versio, kun muoto muuttuu; vanhat resurssit säilyttävät versionsa.
Ilmoita, mitä peli tukee
{
"assetSpecSupport": [
{ "assetSpec": "asset-spec:your-name/moon-level", "versionRange": "^1.0.0", "capabilities": ["READ", "WRITE"] }
]
}Kyvykkyydet ovat READ, WRITE, EDIT, PREVIEW ja IMPORT.
Tallenna ja lataa pelaajien luomuksia
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 }saveDraftsäilyttää yksityisen luonnoksen;publishtekee siitä julkisen. Molemmat tarvitsevat täydellisen tiedostojoukon.- Resurssiviitteet näyttävät tältä:
asset:creator/name@r2.loadJson,loadTextjadownloadFilelukevat julkaistuja resursseja;loadOwned,loadOwnedJsonjaloadOwnedFilelukevat pelaajan omia resursseja luonnokset mukaan lukien. supports(versionRef, capability)tarkistaa tuen ennen kuin toisen version resurssi avataan.- Virheet käyttävät koodeja, kuten
custom_asset_capability_unsupportedjacustom_asset_role_type_mismatch.
Pelaajien on oltava kirjautuneita tallentaakseen. Tarkista, mitä pelaajat julkaisevat, kuten mitä tahansa käyttäjien sisältöä: PlayDropin sisältökäytäntö koskee sitä.
Mitä connector hyväksyy
Pelkkää dataa sisältävät mukautetut resurssit ja määritykset ladataan kuten muutkin tiedostot. Suoritettavat mallit eli MODEL_3D-resurssit, joiden alaluokka on procedural tai muoto CUSTOM, connector hylkää, koska rajapinta ei suorita tekijän koodia; leivo ne valmiiksi tai viittaa julkaistuun versioon. Katso pelin resurssit.