# انشر لعبة HTML بسيطة من تطبيق الذكاء الاصطناعي

انشر ملف HTML واحدًا مكتفيًا بذاته حتى 10 MiB باستخدام upload_game: ما يناسب، والكتالوج المصغّر، والظهور، والتحديثات، ومتى تنتقل إلى حزمة.

Source: https://www.playdrop.ai/ar/create/learn/html-games

ينشر المسار البسيط لعبة HTML قياسية واحدة، مثل لعبة أركيد مرسومة على عنصر canvas أو لغز مبني على DOM، باستدعاء `upload_game` واحد. لا يحتاج إلى PlayDrop SDK ولا إلى مجلد بناء ولا إلى ملفات إضافية، ويعيد رابطًا يمكن لأي شخص فتحه على هاتف أو كمبيوتر.

## متى يناسب المسار البسيط

- اللعبة كلها ملف HTML واحد بحجم 10 MiB كحد أقصى (10,485,760 بايت بترميز UTF-8)، مع نصوصها البرمجية وأنماطها وصورها وأصواتها مضمّنة داخله.
- هي لعبة متصفح عادية: لا تستدعي PlayDrop SDK، لذا لا حفظ سحابي ولا لوحات متصدرين ولا إنجازات ولا مشاركة ولا مجموعات ولا مشتريات ولا إعلانات.
- لا تحتاج إلى ملفات منفصلة: لا صور أو فيديوهات لصفحة اللعبة ولا خادم لعبة.

إذا لم يتحقق أي من هذه الشروط، فاستخدم [حزمة](https://www.playdrop.ai/ar/create/learn/packaging) بدلًا من ذلك. احتفظ بالميزات التي طلبها الشخص الذي تعمل معه؛ ولا تحذفها أبدًا ولا تدمج لعبة متعددة الملفات في ملف واحد لتناسب هذا المسار. يرفض الرفع استدعاءات SDK وكود الخادم وحقول الكتالوج الخاصة بالحزم بالخطأ `advanced_upload_required`.

## أرسل اللعبة

استدعِ `upload_game` بـ `requestId` جديد وملف HTML الكامل وكتالوج مصغّر للعبة واحدة:

```json
{
  "requestId": "moon-jump-first-upload",
  "html": "<!doctype html><html><head><meta charset=\"utf-8\"><title>Moon Jump</title></head><body>…</body></html>",
  "catalogue": {
    "apps": [{
      "name": "moon-jump",
      "displayName": "Moon Jump",
      "description": "Jump between lunar platforms and reach the flag.",
      "controls": "Tap or press Space to jump.",
      "tags": ["game-genre/casual"],
      "types": ["solo"],
      "controller": { "support": "off" },
      "authMode": "NONE",
      "primarySurface": "MOBILE_PORTRAIT"
    }]
  }
}
```

- `name` هو المعرّف الدائم للعبة: من 1 إلى 100 حرف صغير أو رقم أو شرطة.
- يجب أن تتضمن `tags` نوعًا مثل `game-genre/casual`؛ راجع [الأنواع والوسوم](https://www.playdrop.ai/ar/create/learn/tags).
- يصرّح `types` بطريقة اللعب؛ ولعبة الملف الواحد تكون عادةً `["solo"]`. أما أحجام المجموعات واللعب عبر الإنترنت فخاصة بالحزم.
- يذكر `controller.support` الدعم الحقيقي لوحدات التحكم، بما في ذلك `off`.
- يحدد `authMode` تسجيل الدخول: `NONE` أو `OPTIONAL` يتيح لأي شخص اللعب؛ وإن أُغفل فالقيمة الافتراضية `REQUIRED`. أدرجه في كل تحديث.
- يسمّي `primarySurface` الاتجاه الذي صُممت له اللعبة؛ وتُدرج عمليات الرفع البسيطة للكمبيوتر وللوضعين الأفقي والعمودي.

الحقول الأخرى المقبولة هي `subtitle` و`emoji` و`color` و`license` و`creation` و`releaseNotes` و`inspirationPrompt` و`makingOf` و`sourceRepository` و`sourceLocale` و`offlineSupported` و`instant`. ويعيّن PlayDrop رقم الإصدار.

## اختر من يمكنه اللعب

- أغفل `visibility` لاتباع إعداد حساب المبدع للعبة جديدة (عام ما لم يختر غير مدرج أو خاص)؛ ويحتفظ التحديث بجمهور اللعبة الحالي.
- تحفظ `"private"` إصدارًا لا يفتحه إلا المبدع، للاختبار. انشر ذلك الإصدار نفسه لاحقًا بـ `publish_game_version`؛ ولا ترفعه مجددًا.
- تنشر `"unlisted"` اللعبة لكل من لديه الرابط، دون إدراجها؛ وتنشرها `"public"` ليكتشفها الناس.

اتبع ما طلبه الشخص الذي تعمل معه، ولا تجعل لعبة أكثر ظهورًا مما أراد أبدًا. راجع [من يمكنه اللعب](https://www.playdrop.ai/ar/create/learn/distribution).

## اقرأ الإيصال

يتضمن الإيصال `gameId` و`slug` و`version` و`status` و`visibility` و`url`، وهو رابط الإصدار المحدد للمالك. وتحصل الألعاب العامة وغير المدرجة أيضًا على `shareUrl`، الصفحة الدائمة للعبة؛ أعطِ هذا الرابط للشخص الذي تعمل معه. أما للإصدار الخاص، فأعطه `url`. ويبلّغ `instant` و`instantReason` عن أهلية [Instant](https://www.playdrop.ai/ar/create/learn/instant-games).

## حدّث اللعبة

استدعِ `list_games`، ومرّر `gameId` الخاص باللعبة واحتفظ بـ `name`. أرسل ملف HTML الكامل والكتالوج المصغّر الكامل مجددًا: كل عملية رفع لقطة كاملة، والحقول المُغفلة تغيب عن الإصدار الجديد. يبقى الرابط كما هو. اللعبة التي رُفعت أول مرة بوصفها حزمة يجب أن تواصل استخدام مسار الحزمة، حتى لا تضيع ملفاتها وميزاتها.

## الانتقال إلى حزمة لاحقًا

إضافة الحفظ السحابي أو لوحة متصدرين أو صور صفحة اللعبة أو خادم تحوّل اللعبة إلى حزمة. وهذا تحديث عادي للعبة نفسها: احتفظ بـ `name`، وارفعها باستخدام `prepare_catalogue_upload` وعيّن `expectedCurrentVersion` إلى الإصدار الحالي من `list_games`. اقرأ [التحزيم](https://www.playdrop.ai/ar/create/learn/packaging).

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

- [النشر من تطبيق الذكاء الاصطناعي](https://www.playdrop.ai/ar/create/learn/mcp-publishing): كيف ينشر وكلاء الذكاء الاصطناعي على PlayDrop عبر MCP: المسار البسيط ومسار الحزمة، والاختبار الخاص، وpublish_game_version، والتحديثات والحدود والاستعادة.
- [التحزيم و.play](https://www.playdrop.ai/ar/create/learn/packaging): نظّم مجلد لعبة مبنية أو ملف ZIP أو .play مع catalogue.json في جذره، وصرّح بوسائط صفحة اللعبة والخوادم، وارفعه باستخدام prepare_catalogue_upload.
- [الظهور والانتشار](https://www.playdrop.ai/ar/create/learn/distribution): اختر من يمكنه فتح لعبة على PlayDrop، وكيف يعمل الإعداد الافتراضي للحساب ونشر الإصدارات، وكيف يجلب التعزيز وتبادل اللعب وInstant والبحث لاعبين جددًا.
