# الإنجازات في ألعاب PlayDrop

صرّح بإنجازات قياسية وتدريجية مع أيقوناتها في catalogue.json، ثم افتحها وأبلغ عن التقدم باستخدام sdk.achievements.

Source: https://www.playdrop.ai/ar/create/learn/achievements

تحدد الإنجازات أهدافًا في لعبتك، مع أيقونة ووصف يراهما اللاعبون على PlayDrop. وتعمل مع الضيوف واللاعبين المسجّلي الدخول.

## صرّح بالإنجازات

```json
{
  "achievements": [
    { "key": "first-win", "displayName": "First flag", "description": "Reach the flag once",
      "kind": "STANDARD", "icon": "achievements/first-win.png" },
    { "key": "collector", "displayName": "Collector", "description": "Collect 100 stars",
      "kind": "INCREMENTAL", "maxProgress": 100, "icon": "achievements/collector.png" },
    { "key": "secret-room", "displayName": "Secret room", "description": "Find the hidden room",
      "kind": "STANDARD", "hidden": true, "icon": "achievements/secret-room.png" }
  ]
}
```

- يتبع `key` صيغة مفاتيح [لوحات المتصدرين](https://www.playdrop.ai/ar/create/learn/leaderboards) نفسها.
- قيمة `kind` هي `STANDARD` (يُفتح مرة واحدة) أو `INCREMENTAL` (يُفتح عندما يبلغ التقدم `maxProgress`، وهو عدد صحيح موجب).
- `icon` صورة PNG داخل الحزمة. استخدم صورة مربعة واضحة تبقى مقروءة بأحجام صغيرة.
- يُبقي `hidden: true` الاسم والوصف سرًا حتى يُفتح الإنجاز.

لا يمكن حذف المفاتيح المنشورة، ولا يمكن تغيير `kind` و`maxProgress` و`hidden`. أوقف إنجازًا باستخدام `"status": "RETIRED"`.

## افتح الإنجازات وأبلغ عن التقدم

```js
await sdk.achievements.unlock("first-win");
await sdk.achievements.setProgressAtLeast("collector", starsCollected);

const { achievements } = await sdk.achievements.list();
const { achievement } = await sdk.achievements.get("collector");
```

- تأخذ `setProgressAtLeast` الإجمالي حتى الآن، وليس مقدار الزيادة أبدًا. التقدم يرتفع فقط، ويُحدّ عند `maxProgress` ويُفتح الإنجاز عنده.
- يعيد الاستدعاءان `{ accepted, changed, unlocked, progress, unlockedAt, achievement }`؛ وتكون قيمة `changed` هي false عندما لا يحدث شيء جديد، فتعرض إشعارك المنبثق الخاص مرة واحدة فقط.
- تتضمن `list({ includeHiddenDefinitions: true, includeRetired: true })` التعريفات المخفية والموقوفة.

افتح الإنجازات أثناء اللعب الحقيقي فقط، ولا تفتحها أبدًا في المعاينات أو الالتقاطات. ودون أي جلسة لاعب، تنجح الاستدعاءات دون حفظ أي شيء.

## إنجازات جيدة

امزج إنجازات مبكرة تعلّم اللعبة بأهداف طويلة الأمد. سمِّ الفعل لا المكافأة: «اربح دون أن تتلقى أي ضرر» يقول ما يجب فعله. اثنا عشر إنجازًا مدروسًا أفضل من مئة إنجاز تافه.

## أدلة ذات صلة

- [لوحات المتصدرين](https://www.playdrop.ai/ar/create/learn/leaderboards): صرّح بلوحات المتصدرين في catalogue.json، وأرسل النقاط عبر sdk.leaderboards، واعرض المراتب الأولى وجيران اللاعب. أنواع النقاط والحدود وقواعد التحديث.
- [الحفظ السحابي](https://www.playdrop.ai/ar/create/learn/cloud-saves): احفظ تقدم اللاعب وحمّله باستخدام sdk.me.appData وupdateAppData، للضيوف والمسجّلين، مع قواعد الكتابة والمعاينات واللعب دون اتصال.
- [catalogue.json](https://www.playdrop.ai/ar/create/learn/catalogue-json): حقول catalogue.json في ألعاب PlayDrop: الهوية وصفحة اللعبة وطرق اللعب والواجهات وتسجيل الدخول وInstant والتحميل المسبق والوسائط والترجمات والنقاط والخوادم.
