Caputchin
تطوير لعبة المتجر

انشر إلى المتجر

بنهاية هذا الدرس تكون لعبتك مدرَجة في المتجر وقابلة للتضمين من أي مستخدم، بمعرّف لعبتها. النشر منخفض المراسم عمدًا: لا طابور تقديم، ولا مراجعة، ولا رفع. توسِم مستودع GitHub عامًّا فتفهرسه المنصّة.

يفترض هذا أنك بنيت لعبة (ابنِ لعبة المتجر) وكتبت بيانها.

1. وسِم مستودع GitHub

أضف موضوع GitHub‏ caputchin-game إلى مستودعك العامّ (قسم About في صفحة المستودع). يستعلم المفهرِس GitHub عن هذا الموضوع؛ ذلك الوسم هو اشتراكك كله.

معرّف لعبتك مشتقّ من إحداثي المستودع، owner/repo (أو owner/repo/<leaf-dir> لابن مجموعة). لا تختاره ولا تعلنه.

2. أكّد أساسيات البيان

ثلاثة أشياء تحكم الفهرسة؛ تأكّد أن caputchin.json الجذر لديك يحملها:

  1. "terms_accepted": true (البوليان الحرفي) مؤكّدًا شروط تقديم المتجر.
  2. license على القائمة الموافَق عليها.
  3. مؤشّر توزيع (entry، أو npm، أو كلاهما) كي تُحلّ الحزمة.

أضف marketplace.author.email إن أردت بريد إخفاق النشر (لا يُعرَض علنًا أبدًا، وهو الطريق الوحيد لاستقباله).

3. انشر أو حدّث

طريقتان للحطّ في الفهرس:

  • الـ cron اليوميّ يلتقط المستودعات الموسومة تلقائيًّا.
  • زرّ "انشر أو حدّث" على المتجر يشغّل مفهرِس كل مستودع متزامنًا ويعيد توجيهك إلى صفحة تفاصيلك، أو يعرض خطأ التحقّق بالضبط. استخدم هذا لأول إدراج أو فور تحرير بيان.

حين يعمل، يجلب المفهرِس بيانك، ويثبّت الحزمة على مرجع غير قابل للتغيير (نسخة npm المنشورة أو SHA الالتزام المحلول)، ويحسب تجزئة سلامة SHA-384، ويخزّن { url, integrity } مفهرَسًا بمعرّف لعبتك. الإصدارات الجديدة تنطلق عند تشغيل الفهرسة التالي، أو فورًا عبر الزرّ.

4. الفحص الذاتي لإعادة التشغيل

وقت الفهرسة تشغّل المنصّة أداة run في عازل مختوم مرة ببذرة حتمية:

  • تجتاز ← لعبتك قابلة لإعادة التشغيل: تُعاد جولة لاعب حقيقي على الخادم للوصول إلى القرار، فتستطيع حراسة مفتاح موقع.
  • تفشل (run-not-conforming) ← تُظهر اللعبة غير قابلة للإعادة. ما زالت مدرَجة وقابلة للتضمين، لكن كتجربة استخدام فقط حتى تنشر نسخة مطابقة. المواقع التي على نسخة أقدم قابلة لإعادة التشغيل تبقي تلك اللقطة بالضبط.

فحص ذاتي فاشل هو دائمًا تقريبًا عدم حتمية في run خاصتك؛ اجعل محاكاتك حتمية وأعد النشر. تشغيل selfCheck الخاص بـ عدّة المحرّك محليًّا أولًا يمسك هذا قبل أن تدفع.

5. أكّد الاكتشاف

بعد نشر ناجح، تضمّن صفحة التفاصيل لعبتك في معاينة حيّة بمقبض لكل تهيئة لغة ومظهر وإعداد مُعلَنة. العبها هناك لتأكيد أن التهيئات تُحلّ كما قصدت.

أُخطَر حين يفشل نشر

يعيد المفهرِس اليوميّ فحص كل لعبة منشورة. إن أصابت إعادة فهرسة مشكلةً، يمكن إخطارك بها بالبريد، لكن فقط إن اشتركت بضبط marketplace.author.email في بيانك. بلا بريد مضبوط، لا إشعارات. لا قناة أخرى؛ هذه الإشارة الوحيدة التي كنت ستفوّتها لولاها، لأن إعادة الفحص اليوميّ تجري دون مراقبتك.

يُرسَل نوعا بريد، مطابقان للحصيلتين:

البريدمتىما يعنيه
"فشل فحص التحقّق لـ <game>"نسخة معاد فهرستها تفشل الفحص الذاتي لإعادة التشغيل (run-not-conforming)تبقى اللعبة مدرَجة وقابلة للتضمين، لكن تلك النسخة تُظهر غير قابلة للإعادة ولا تستطيع الحراسة حتى تنشر مطابقةً.
"تعذّر علينا نشر <game>"إعادة فهرسة تصيب أي إخفاق آخر (خطأ بيان، أو رخصة، أو حزمة)تلك النسخة غير مدرَجة حتى تصلحها.

تفاصيل تهمّ:

  • إعادة الفهرسة اليوميّة وحدها تراسلك. إخفاق على زرّ "انشر أو حدّث" اليدويّ يُعرَض لك في النافذة حينها، فلا بريد يُرسَل له.
  • مُزال التكرار. الإخفاق نفسه على اللعبة نفسها يُراسَل مرة، ثم يُكبَت 30 يومًا. إخفاق مختلف (رمز خطأ أو سبب جديد) يراسل فورًا.
  • اشترك خارجًا في أي وقت بإزالة أو تغيير marketplace.author.email. تحمل الرسائل أيضًا مؤشّر إلغاء اشتراك بنقرة واحدة إلى شروط التقديم. لست حساب Caputchin هنا، فحقل البيان هو الضابط الوحيد.

6. أتمِت بـ CI

ولأن النشر هو "وسِم إضافةً إلى دفع إلى مرجع غير قابل للتغيير"، تستطيع ربطه في خطّ إصدارك كي تعيد كل إصدار الفهرسة تلقائيًّا. النمط الموثوق:

  1. انشر الحزمة إلى مرجع غير قابل للتغيير في CI، الـ npm publish (أو إصدار GitHub موسوم) الذي يحلّه npm / entry في بيانك. يعيد المفهرِس دائمًا الحلّ إلى أحدث نسخة منشورة في تشغيله التالي، فخطّ إصدار عاديّ يقدّم التثبيت أصلًا.
  2. احكم الإصدار بفحص حتمية محلّي. شغّل selfCheck عدّة المحرّك (أو اختبار إعادة تشغيلك الخاص) كخطوة CI كي يفشّل run غير حتميّ البناء بدل شحنه كغير قابل لإعادة التشغيل.
  3. اختياريًّا أطلِق إعادة فهرسة فورية بنداء "انشر أو حدّث" بدل انتظار الـ cron اليوميّ، إن أردت النسخة الجديدة حيّةً لحظة انتهاء CI.
# sketch: release job
- run: npm ci
- run: npm test                 # includes your replay selfCheck
- run: npm publish              # advances the immutable ref the indexer pins
# the daily indexer picks up the new version; or hit Publish or update for instant

أبقِ فحص الحتمية قبل النشر كي لا يبلغ run سيّئ المتجر أبدًا كإدراج غير قابل لإعادة التشغيل بصمت.

ما الذي لا تضطرّ إلى فعله أبدًا

  • لا توقيع كود، ولا تقديم مراجعة، ولا رفع CDN منصّة.
  • لا اتّفاق مشاركة إيرادات.
  • لا اختيار معرّف؛ إحداثي GitHub خاصتك هو المعرّف.
  • لا حقل نسخة؛ المفهرِس يثبّت المرجع.

إن فشل النشر

كل خطأ في مسار النشر شيء تصلحه في مستودعك وتعيد المحاولة. جِد رمزك في أصلِح إخفاق نشر؛ قائمة الرموز الكاملة هي مرجع أخطاء النشر.

انظر أيضًا

في هذه الصفحة