صيغ الأصول المخصصة وإبداعات اللاعبين على PlayDrop
عرّف صيغة أصول خاصة بك بمواصفة أصول، وصرّح بالصيغ التي تقرؤها اللعبة أو تكتبها، ودع اللاعبين يحفظون إبداعاتهم وينشرونها عبر sdk.assets.custom.
تتيح مواصفات الأصول للعبة تعريف نوع خاص بها من الأصول، مثل مرحلة أو شخصية أو رزمة بطاقات، بوصفه عقدًا من الملفات. يمكن للاعبين بعد ذلك صنع إبداعات بتلك الصيغة وحفظها ونشرها، ويمكن للألعاب الأخرى التي تدعمها فتحها.
عرّف مواصفة أصول
تُصرَّح مواصفة الأصول في قائمة assetSpecs في catalogue.json، بجوار apps:
{
"assetSpecs": [{
"name": "moon-level",
"version": "1.0.0",
"displayName": "Moon Jump level",
"symbol": "specs/moon-level.svg",
"contract": "specs/moon-level.contract.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 عند كل حفظ. انشر إصدارًا جديدًا من المواصفة عندما تتغير الصيغة؛ وتحتفظ الأصول القديمة بإصدارها.
صرّح بما تدعمه اللعبة
{
"assetSpecSupport": [
{ "assetSpec": "asset-spec:your-name/moon-level", "versionRange": "^1.0.0", "capabilities": ["READ", "WRITE"] }
]
}القدرات هي READ وWRITE وEDIT وPREVIEW وIMPORT.
احفظ إبداعات اللاعبين وحمّلها
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.
ما يقبله الموصّل
تُرفع الأصول المخصصة والمواصفات التي تحتوي على بيانات فقط مثل الملفات الأخرى. أما النماذج القابلة للتنفيذ، أي أصول MODEL_3D ذات الفئة الفرعية procedural أو الصيغة CUSTOM، فيرفضها الموصّل لأن الواجهة البرمجية لا تشغّل كود المبدعين؛ حوّلها مسبقًا إلى صيغة ثابتة أو أشر إلى إصدار منشور. راجع أصول اللعبة.