PlayDrop logoPlayDrop Studio
創作互玩賺取學習連接器素材社群支援
PlayDrop logoPlayDrop Studio
創作互玩賺取學習連接器素材社群支援
登入
自訂格式與玩家創作
文件

從這裡開始

總覽你的第一款遊戲PlayDrop 遊戲常見問題

用 Cloud 創作

Cloud 創作方案與生成次數

連接你的 AI App

所有連接器ClaudeChatGPTClaude CodeCodexCursorGeminiAntigravityGrok BuildGrok BotGrok ChatLovableReplit

發布與分享

從你的 AI App 發布簡易 HTML 遊戲打包與 .play發布與匯入遊戲檔案可見性與觸及上架圖片與影片類型與標籤在地化即玩遊戲

遊戲體驗

載入、暫停與音訊全螢幕與安全區域雲端存檔本機派對與控制器

一起玩

分享、好友與邀請排行榜成就線上派對與語音即時遊戲伺服器

賺取收益

營利點數與獎勵

素材

遊戲素材AI 素材生成自訂格式與玩家創作

參考資料

用戶端 SDK伺服器 SDKcatalogue.json錯誤與復原疑難排解
文件自訂格式與玩家創作
素材

PlayDrop 的自訂素材格式與玩家創作

用素材規格定義自己的素材格式,宣告遊戲讀取或寫入哪些格式,並用 sdk.assets.custom 讓玩家儲存及發布關卡、角色等創作。

素材規格讓遊戲以檔案合約的形式定義自己的素材種類,例如關卡、角色或牌組。玩家接著可以用該格式製作、儲存並發布創作,其他支援此格式的遊戲也能開啟這些創作。

定義素材規格

素材規格宣告在 catalogue.json 的 assetSpecs 清單中,與 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"
  }]
}

合約會列出每個素材的檔案,以及檢查這些檔案的方式:

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

檔案角色可以附帶 JSON Schema,PlayDrop 每次儲存時都會檢查。格式變更時,請發布新的規格版本;舊素材會保留原本的版本。

宣告遊戲支援的格式

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

可用的能力有 READ、WRITE、EDIT、PREVIEW 和 IMPORT。

儲存與載入玩家創作

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 會保留私人草稿;publish 會將它公開。兩者都需要完整的檔案組。
  • 素材參照的格式類似 asset:creator/name@r2。loadJson、loadText 和 downloadFile 讀取已發布的素材;loadOwned、loadOwnedJson 和 loadOwnedFile 讀取玩家自己的素材,包含草稿。
  • supports(versionRef, capability) 會在開啟其他版本的素材前先行檢查。
  • 錯誤使用 custom_asset_capability_unsupported 和 custom_asset_role_type_mismatch 等代碼。

玩家需要登入才能儲存。請像審查任何使用者內容一樣,審查玩家發布的內容:PlayDrop 的內容政策同樣適用。

連接器接受的內容

純資料的自訂素材與規格,上傳方式與其他檔案相同。可執行的模型,也就是 procedural 子類別或 CUSTOM 格式的 MODEL_3D 素材,會被連接器拒絕,因為 API 不會執行創作者的程式碼;請先將它們烘焙,或參照已發布的版本。請參閱遊戲素材。

相關指南

  • 遊戲素材隨 PlayDrop 遊戲提供圖片、音效、影片與 3D:內附檔案、在 catalogue.json 宣告的遊戲自有素材、公開素材與素材包,以及用 sdk.assets 在執行時查找。
  • catalogue.jsonPlayDrop 遊戲使用的 catalogue.json 欄位:身分、上架資訊、遊玩方式、顯示環境、登入、即玩、預先載入、媒體、翻譯、分數與伺服器。
  • 用戶端 SDKPlayDrop 瀏覽器 SDK 參考:初始化、主機端生命週期、玩家身分與存檔、裝置與控制器、社群、多人連線、商店、廣告、排行榜、成就、素材與 AI。
上一頁PlayDrop 遊戲的 AI 素材生成下一頁PlayDrop 用戶端 SDK 參考
檢視 Markdown
EnglishFrançaisDeutsch日本語한국어EspañolPortuguês (Brasil)Bahasa Indonesia繁體中文简体中文ItalianoPolskiNederlandsSvenskaNorsk bokmålSuomiTürkçeไทยTiếng Việtالعربية

本頁內容

定義素材規格宣告遊戲支援的格式儲存與載入玩家創作連接器接受的內容
檢視 Markdown