PaperZD
ابنِ حركة الشخصيات ثنائية الأبعاد في PaperZD بمجرد الطلب: flipbooks من ورقة سبرايتات، ومصادر الحركة، وAnimation Blueprints، وآلات الحالة، وشخصيات قابلة للعب، وفحص أثناء اللعب.
PaperZD من Critical Failure Studio هو نظام الحركة الذي تستخدمه معظم ألعاب Paper2D: رسوم حركة وآلات حالة لشخصيات مبنية من flipbooks. وهو مجاني على Fab وعلى GitHub.
مع ملحق PaperZD، يبني Ultimate Engine CoPilot هذه الإعدادات لك، من ورقة سبرايتات إلى شخصية تمشي وتهاجم أثناء اللعب.
جرى اختباره مع PaperZD 2.2.4 على Unreal Engine 5.7.
ما تحتاجه
- PaperZD، مثبّتة ومفعّلة في مشروعك. وهي تستخدم إضافة Paper2D الخاصة بـUnreal، التي يفعّلها PaperZD معه.
- ورقة سبرايتات لشخصيتك، أو flipbooks موجودة.
إضافة إلى Ultimate Engine CoPilot مع تفعيل ملحق PaperZD.
من دون PaperZD لا يفعل الملحق أي شيء ضار. كل أداة من أدوات PaperZD ترد برسالة واحدة تقول إن كانت الإضافة مثبّتة ومفعّلة ومحمّلة، وما الخطوة التالية.
الإعداد
- ثبّت PaperZD من Fab أو GitHub وفعّله في مشروعك. أعد تشغيل المحرّر إذا طلب Unreal ذلك.
- في CoPilot، افتح الإعدادات > الملحقات وفعّل PaperZD. وهو متوقف افتراضياً.
- اطلب من الذكاء الاصطناعي فحص حالة PaperZD. سيخبرك إن وجد PaperZD، وإن لم يجده فما الذي ينقص.
ما يمكنك طلبه
- “هذه ورقة سبرايتات الفارس، 6 أعمدة في 13 صفاً. اصنع flipbooks للخمول والمشي والهجوم في أربعة اتجاهات وجهّز PaperZD لها.”
- “أضف آلة حالة فيها Idle وWalk وAttack. يعمل Walk عندما تتحرك الشخصية، ويعود إلى Idle عندما تتوقف، ويعمل Attack مرة واحدة ثم يعود إلى Idle.”
- “اجعل الحركات تتجه نحو الجهة التي تتحرك فيها الشخصية.”
- “اصنع شخصية قابلة للعب بـWASD للحركة وSpace للهجوم، مع كاميرا خلفها وGame Mode يُظهرها.”
- “أضف صوت خطوات إلى حركة المشي.”
- “بدّل الشخصية إلى اللوحة اللونية الحمراء أثناء تشغيل اللعبة.”
وخلف هذه الطلبات يستطيع الذكاء الاصطناعي:
- تقطيع ورقة سبرايتات إلى حركات. استدعاء واحد يحوّل الورقة إلى سبرايتات وflipbooks وتسلسلات حركة ومصدر حركة وAnimation Blueprint. الحركات متعددة الاتجاهات تصبح تسلسلاً واحداً متعدد الاتجاهات.
- بناء رسم الحركة. عقد تشغيل التسلسل، وآلة الحالة، والاتجاه، وفتحة override، والاختيار بحسب bool أو رقم أو enum، والمشغّل العشوائي، والحركة المخزّنة مؤقتاً، وربطها ببعضها.
- بناء آلات الحالة. حالات وconduits وقفزات، مع انتقالات تنطلق عند متغيّر، أو عند انتهاء الحركة الحالية، أو دائماً أو أبداً، مع أولوية وتسلسل انتقالي اختياري.
- إضافة notifies. أحداث مخصصة وأصوات وتأثيرات Niagara أو جسيمات على خط زمني، وتصبح notifies المخصصة دوال يمكنك ملؤها.
- إضافة skins. flipbooks بديلة لكل حركة، للأزياء أو تبديل اللوحات اللونية، تُطبَّق أثناء تشغيل اللعبة.
- صنع شخصيات. شخصية PaperZD جديدة تتحكم بها Animation Blueprint، أو ربط ممثل (actor) موجود. ويمكنه أيضاً إضافة مسار PaperZD إلى Level Sequence.
- فحصها أثناء اللعب. قراءة أي تسلسل يعمل الآن، وإلى أي حد وصل، وقيم متغيّرات الحركة، وتشغيل حركة أو إيقافها أو القفز إليها لاختبار انتقال يدوياً.
الأخطاء التي يتجنبها
في PaperZD بعض الفخاخ التي تُترجَم بنجاح ومع ذلك لا تفعل شيئاً. والذكاء الاصطناعي يعرفها:
- قاعدة الانتقال الجديد هي “أبداً” حتى تُضبط، لذا لن تغادر الشخصية Idle أبداً.
- المتغيّر الذي تقرؤه القاعدة يجب أن يُكتب في مكان ما، غالباً في tick الخاص بـAnimation Blueprint. الترجمة النظيفة لا تثبت أن القاعدة ستتغير يوماً، لذا يتحقق الذكاء الاصطناعي أثناء اللعب.
- التسلسل لا يعمل إلا في Animation Blueprint تابعة لمصدر الحركة الخاص به، لذا يُبقي أصول كل شخصية معاً.
- الحالات والانتقالات تُترجَم دفعة واحدة في نهاية مجموعة من التعديلات، وليس بعد كل تعديل.
- شبكة ورقة السبرايتات تُقرأ من اليسار إلى اليمين بدءاً من الأعلى، لذا يعدّ الذكاء الاصطناعي الخلايا بالطريقة نفسها التي يعدّها بها PaperZD.
نصائح وحيل
جاءت من بناء قرية صغيرة قابلة للعب باستخدام PaperZD وCoPilot: بطل وقروي وأعداء هياكل عظمية وذئاب تجوب المكان. جرى اختبارها مع PaperZD 2.2.4 على Unreal Engine 5.7.
الثلاثة الأهم:
- أخبر الذكاء الاصطناعي بتوزيع الصفوف الحقيقي في ورقتك. رقّم الصفوف بدءاً من 0، وقل أي الصفوف حركات وأي صف شيء آخر، وافتح الإطار الأول من كل flipbook للتحقق.
- لا تُدِر الممثل (actor) أبداً. الـflipbook بطاقة مسطحة، لذا يجب أن يأتي الاتجاه من الحركة التي تعمل، لا من تدوير الممثل.
- لا تثق بترجمة نظيفة. اطلب اختباراً أثناء اللعب يبلّغ عن الحركة الحالية ومتغيّراتها.
صِف الورقة بدقة
لا يستطيع الذكاء الاصطناعي أن يرى أي صف في ورقتك يحمل أي حركة. عليك أن تخبره.
- الورقة المصدَّرة من PixelLab فيها 6 أعمدة و13 صفاً من خلايا بحجم 92 بكسل، مع أربعة اتجاهات في كل حركة بالترتيب جنوب، غرب، شرق، شمال. الصف 0 صف أوضاع دوران، وليس حركة.
- يأتي التصدير مع ملف تخطيط يسرد أي صف يحمل أي حركة. استخدمه. الترتيب يختلف من شخصية إلى أخرى: في القرية كان المشي أولاً عند البطل والساحر، والهجوم أولاً عند الهيكل العظمي، والخمول أولاً عند الذئب.
- عُدّ من 0 وسمِّ صف الدوران. في إحدى الجلسات قال الـprompt “الصفوف من 1 إلى 4 هي المشي”. عدّ الذكاء الاصطناعي من 1، فانزاحت كل حركة صفاً واحداً ونظر البطل في الاتجاه الخطأ.
اكتب الصفوف هكذا:
كل ورقة 6 أعمدة في 13 صفاً من خلايا بحجم 92 بكسل. رقّم الصفوف بدءاً من 0. الصف 0 هو صف الدوران، تجاهله. الصفوف من 1 إلى 4 هي المشي (جنوب، غرب، شرق، شمال، 6 إطارات)، والصفوف من 5 إلى 8 الهجوم، والصفوف من 9 إلى 12 الخمول (4 إطارات).
الإعدادات المهمة
- Pixel art مفعّل. تستخدم الخامات ترشيح nearest وبلا mips، لتبقى البكسلات حادة.
- المحور في أسفل المنتصف. تبقى القدمان في المكان نفسه في كل إطار.
- الإطارات في الثانية. اطلب السرعات التي تريدها. استخدم الذكاء الاصطناعي 15 لكل شيء، فكرّر خمولاً من 4 إطارات في نحو ربع ثانية. الخمول 6 والمشي 12 والهجوم 14 بدت صحيحة.
- ترتيب الاتجاهات. التسلسل متعدد الاتجاهات يسير مع عقارب الساعة من الأعلى: شمال، شرق، جنوب، غرب.
- قيم الممثل الموضوع في المستوى هي التي تفوز. مدة التهدئة أو السرعة المضبوطة على ممثل في المستوى تتغلب على القيمة الافتراضية في Blueprint، لذا افحص النسخ الموضوعة عندما يبدو أن تغييراً لا يفعل شيئاً.
أبقِ السبرايت مواجهاً للكاميرا
هذا هو الإعداد الذي منع السبرايت من الدوران أو الميلان أو الظهور من حافته:
- أوقف دوران الممثل. Controller yaw متوقف، وorient rotation to movement متوقف، وcontroller desired rotation متوقف. إذا تُركت مفعّلة فإن البطاقة تدور مع الممثل وقد تظهر من حافتها.
- أظهِره بـyaw يساوي 0. قيمة yaw عند الظهور تساوي 180 تجعل البطاقة تميل بعيداً عن كاميرا ثابتة في العالم.
- ثبّت الـspring arm بالعالم. Pawn control rotation متوقف، ووراثة pitch وyaw وroll متوقفة، واختبار التصادم متوقف. نجحت قيمة pitch تساوي -40 وyaw تساوي -90.
- أمِل البطاقة مرة واحدة. مع كاميرا تنظر إلى الأسفل بزاوية 40 درجة، أعطِ السبرايت roll يساوي -40، وارفعه لتلامس القدمان الأرض.
- تحرّك وفق محاور العالم، لا على طول متجه الأمام أو اليمين للممثل.
- أظهِر الاتجاه بـSet Directionality. غذِّه بمتغيّر Vector2D اسمه Facing. اكتب Facing في كل tick انطلاقاً من السرعة، واحتفظ بآخر قيمة عندما تتوقف الشخصية.
مع هذه الكاميرا تُربط المفاتيح هكذا:
- D يتحرك على طول +X، وFacing (1, 0).
- W يتحرك على طول -Y، وFacing (0, 1).
- A يتحرك على طول -X، وFacing (-1, 0).
- S يتحرك على طول +Y، وFacing (0, -1).
إذا خرج اليسار واليمين أو الأعلى والأسفل معكوسين، اعكس إشارة ذلك الجزء من Facing. لا تُدِر الممثل للتعويض.
اختبره أثناء اللعب
- الانتقال لا يفعل شيئاً حتى تصبح قاعدته قابلة للتغير. القاعدة الجديدة هي “أبداً”، والقاعدة التي تقرأ متغيّراً تحتاج إلى شيء يكتب ذلك المتغيّر، غالباً tick الخاص بـAnimation Blueprint. اطلب اختباراً أثناء اللعب يبلّغ عن الحركة الحالية.
- أعطِ Facing قيمة ابتدائية. هو لا يُكتب إلا أثناء تحرك الشخصية، لذا فإن هجوماً قبل الخطوة الأولى يقرأ صفراً. قيمة افتراضية هي الجنوب تحل المشكلة.
- اجعل البطل يواجه الهدف. إذا كان على الهجوم أن يصيب شيئاً على الجانب، فاطلب من الذكاء الاصطناعي ضبط Facing نحو أقرب عدو قبل الضربة.
جلسة حقيقية
بُني مقطع التعاون في أربعة prompts في دردشة CoPilot، مع وكيل Claude Code. شغّل الذكاء الاصطناعي اختبارات اللعب الخاصة به وأصلح ما وجده. الأزمنة من جهاز واحد.
- استيراد شخصيتين، مع آلات حالة للخمول والمشي والهجوم: نحو 2.5 دقيقة.
- بطل قابل للعب (WASD للحركة وSpace للهجوم)، وكاميرا spring arm، وGame Mode، وقروي يمشي بين ثلاث نقاط: نحو 7 دقائق.
- عدو هيكل عظمي يطارد ويهاجم، ونقاط صحة وعدّاد صحة على الشاشة: نحو 7 دقائق.
- ذئاب تجوب المكان، وأعشاب يمكن جمعها، وعدّاد أعشاب: نحو 7 دقائق.
المظهر عمل منفصل
يبني الذكاء الاصطناعي الحركة واللعب. أما مظهر المقطع فقد أُعدّ في المستوى، لا بواسطة الذكاء الاصطناعي:
- ضوء شمس وفوانيس دافئ.
- Bloom وفينييت وعمق ميدان ضحل لإحساس tilt-shift.
- خامة باعثة للضوء غير مضاءة على الشخصيات.
ابدأ بالخامة غير المضاءة وتعريض ثابت. ضبط التعريض بالعين على جولات كثيرة كلّف وقتاً أكثر مما أعاد.
الحدود
- لا يعرف الذكاء الاصطناعي أي حركة يحملها كل صف في ورقتك. عليك أن تخبره.
- يمشي الأعداء مباشرة نحو البطل، دون إيجاد مسار حول الأغراض.
- عند زاوية 45 درجة بالضبط يتعادل محوران وتختار الحركة الشرق.
- تتوقف الصحة عند 0. لا يحدث شيء آخر حتى تطلب موتاً.
- لم يستطع قراءة حالة حركة في منتصف ضغطة مفتاح مستمرة، وقال ذلك بدلاً من التخمين.
الأذونات
القراءة مجانية: فحص أصل أو رسم أو حركة قيد التشغيل لا يسأل أبداً. أما التغييرات فتتبع إعداد Ask Before Edit أو Auto Edit، مثل كل الأدوات الأخرى.
كيف يعمل
- لا رابط بين الإضافتين. يصل الملحق إلى PaperZD بالانعكاس (reflection) فقط، لذا يُبنى Ultimate Engine CoPilot ويعمل بالطريقة نفسها مع PaperZD أو من دونه، ويستمر الملحق في العمل عبر إصدارات PaperZD ذات التصميم نفسه. وإذا أعاد تحديثٌ تسمية شيء، تذكر الأداة الحقل المفقود بدلاً من التخمين.
- في كل مكان معاً. تعمل الأدوات في دردشة CoPilot، وفي عملاء MCP الخارجيين مثل Claude Code وCursor، وفي وكلاء البرمجة. راجع تكامل MCP.
- 39 أداة. أدوات للتأليف والفحص ووقت اللعب، للمصادر والتسلسلات وnotifies وskins وAnimation Blueprints والرسوم وآلات الحالة والشخصيات وSequencer.
راجع الملحقات لمعرفة كيف تعمل الملحقات، واختبار اللعب لمعرفة كيف يفحص الذكاء الاصطناعي لعبة قيد التشغيل.