٥ مارس ٢٠٢٦ · ميخائيل فاسيلييف

مدوّنة تطوير Nexus: نموذج المحرّك الأوّلي

Watch on YouTube

قبل شهر ونصف نشرتُ على الموقع خطط الاستوديو - عن محرّك Nexus: ما هو وأي مشاريع سنبنيها عليه، وصولًا إلى الاستراتيجيات وأجزاء جديدة من سلسلتنا المصرية. وكانت هناك خارطة طريق أيضًا. المحرّك معقّد، ولأقلّل المخاطرة أردتُ أن أبنيه تدريجيًا. لكن اللاعبين قالوها صريحة في التعليقات: بناء شيء كهذا مستحيل. لذلك قرّرتُ أن أبدأ بنموذج أوّلي - لأبيّن أن محرّكًا كهذا يمكن بناؤه رغم كل شيء. وهذا ما سأعرضه.

قائمة النموذج الأوّلي: يعرض المحرّك الاختيار بين أربع محاكاة - Stone Age وSlay the Spire ومولّد الأنظمة النجمية وOregon Trail

هكذا يبدو المحرّك الآن. في ظاهره تطبيق كونسول بدائي إلى حدّ ما. لكنه يبيّن الأهم جيدًا - أن آليات مختلفة تعمل على محرّك واحد عام.

حاليًا تعمل عليه أربع محاكاة. الأولى Stone Age، أوّل لعبة للاستوديو، من عام 2013. والثلاث الأخرى مبنية على مشاريع الآخرين. لا أنوي نسخها ولا إصدارها، فهي هنا فقط لتبيّن أن آليات لعب مختلفة تمامًا يمكن أن تعمل على محرّك واحد.

Stone Age

أُعيد بناء Stone Age على المحرّك بالكامل. الخصائص نفسها والسنوات والأدوار والسكان والأراضي. تُرسل العمّال إلى الغابة فيجمعون الطعام، فيزداد السكان، وتظهر التقنيات - تبحثها فتفتح المباني وشجرة التطوّر، من القرد الجنوبي إلى الإنسان الماهر وما بعده. الأحداث والنهاية - كل ما في الأصل موجود.

كونسول النموذج الأوّلي: Stone Age - خصائص القبيلة والأراضي وقائمة التقنيات والتطوّر

Slay the Spire

ثم Slay the Spire، لعبة بطاقات روغ-لايك ممتازة، لا بدّ أن بعضكم جرّبها. على المحرّك ليس فيها سوى القتال: لدى اللاعب بطاقات وطاقة وصحة، وللعدو نيّته. Strike (ضربة) يضرب، وDefend (دفاع) يضع حاجزًا. تنفق الطاقة وتنهي الدور، وهكذا بالتناوب حتى يفوز أحدهم.

الكونسول نفسه يشغّل Slay the Spire - الصحة والطاقة ونيّة العدو والبطاقات في اليد

GURPS

المحاكاة الثالثة هي GURPS، نظام طاولة معقّد إلى حدّ ما. أخذتُ منه وحدة واحدة فقط، مولّد الأنظمة النجمية. والطريف أن هذه الوحدة نفسها ليست لعبة أصلًا، بل مولّد معقّد. بنى نظامًا بنجم واحد وكومة من الخصائص: عشرة مدارات، عليها عوالم مختلفة. أوّلها، صغير صخري، يشبه عطارد - بكتلته الخاصة وضغط غلافه الجوي وما إلى ذلك. وفي هذه المحاكاة أكثر من ستة آلاف حقيقة في المجموع. إنه اختبار إجهاد جيّد: يظهر كم من البيانات يحتمل المحرّك.

نظام نجمي مولَّد في وحدة GURPS - النجم ومداراته وخصائص العالم الأوّل

Oregon Trail

الرابعة Oregon Trail، كلاسيكية من عام 1971 وإحدى أقدم ألعاب الحاسوب. إنها رحلة مستوطنين عبر أمريكا بالعربات: قبل الطريق تشتري المؤن - ثيرانًا وطعامًا وذخيرة وملابس - ثم تصطاد وتوزّع المؤونة وتتعامل مع الأحداث. ها قد هُوجمنا للتوّ. وهكذا حتى نهاية الدرب.

Oregon Trail في الكونسول نفسه: المؤن - طعام وذخيرة وملابس ومال - واختيار ما تفعله عند مصادفة الفرسان

الألعاب الأربع تعمل على محرّك واحد، ولم يلزم كتابة أي شيفرة لأيّ منها.

التعديل أثناء التشغيل

لكن المحرّك لا يشغّل هذه الألعاب فحسب - يمكن تغييرها أثناء التشغيل مباشرة، دون المساس بالشيفرة. لنأخذ Slay the Spire.

الدور الافتتاحي لـ Slay the Spire على المحرّك: الصحة والطاقة والعدو وخمس بطاقات في اليد - ضرر Strike (ضربة) لا يزال 6

سأغيّر ضرر بطاقة Strike (ضربة) وأجعله 100:

/set Strike.CalcDamage Value 100

تغيّرت الخاصية فورًا في كلتا هاتين البطاقتين، لأن صنفهما واحد.

بطاقتا Strike (ضربة) في اليد، وكلتاهما الآن بضرر 100 - تغيّرت الخاصية دفعة واحدة في كل بطاقة من هذا الصنف

ويمكن إضافة بطاقة جديدة تمامًا، Fireball (كرة نارية):

/add Fireball Is DirectDamage
/set Fireball.CostEnergy Value 2
/add Fireball Has CalcDamage
/set Fireball.CalcDamage Value 20
/add Fireball Has ApplyDamage
/add Fireball.ExecutionEffects Has CostEnergy
/add Fireball.ExecutionEffects Has CalcDamage
/add Fireball.ExecutionEffects Has ApplyDamage

لم تكن موجودة، وها هي الآن في اللعبة - تستقرّ في اليد، وتُلعب، وتُنزل 20 ضررًا، وتذهب إلى كومة المهملات، كأي بطاقة عادية:

بعد التعديلات: بطاقتا Strike (ضربة) الآن بضرر 100، وظهرت في اليد بطاقة جديدة Fireball (كرة نارية) بضرر 20

ويمكن تغيير القواعد نفسها أيضًا، بأمر واحد. سأحذف القاعدة التي تُرسل البطاقات الملعوبة إلى كومة المهملات.

/remove PlayCard Has MovePlayedCard

الآن تبقى في اليد. لعبتُ Defend (دفاع): ارتفع الحاجز، وأُنفقت الطاقة، لكن البطاقة بقيت.

بعد تغيير القاعدة: لُعبت Defend (دفاع) - الطاقة 0/3، الحاجز 5 - لكن كل البطاقات الملعوبة بقيت في اليد، معلّمة بـ [X]

في لعبة عادية مكتوبة بلغة برمجة، كان عليك أن تغوص في الشيفرة وتعيد بناء المشروع لأجل هذا. هنا لا حاجة إلى ذلك.

وبالطريقة نفسها يُضاف إلى اللعبة ما لم يكن فيها أصلًا. الذهب مثلًا - سأنشئه وأصف كيف يُنفق:

/set Player.Gold Value 100
/add CostGold Output Owner.Gold
/add CostGold Math.Subtract.Apply true

تظهر خاصية لم تكن قبل لحظة - الذهب، ومئة كاملة منه دفعة واحدة.

ظهر الذهب في سطر الحالة - مئة دفعة واحدة - وهي خاصية لم تكن في اللعبة قبل لحظة

وبهذا الذهب يمكن صنع فعل جديد أيضًا - Bribe (رشوة). إنه ينفق الذهب لا الطاقة:

/add Bribe Is DirectDamage
/set Bribe.CostEnergy Value 0
/set Bribe.CostGold Value 30
/add Bribe Has CalcDamage
/set Bribe.CalcDamage Value 15
/add Bribe Has ApplyDamage
/add Bribe Has CostGold
/add Bribe.ExecutionEffects Has CostGold
/add Bribe.ExecutionEffects Has CalcDamage
/add Bribe.ExecutionEffects Has ApplyDamage
/create Bribe Player.Hand

Bribe (رشوة) يكلّف ثلاثين ذهبًا ويُنزل خمسة عشر ضررًا - ويعمل فورًا.

ظهر في اليد فعل جديد، Bribe (رشوة): صفر طاقة وثلاثون ذهبًا وخمسة عشر ضررًا

قد يبدو أن هذه أكواد غش، وأن كتابة أوامر كهذه أمر متعب. لكنها ليست غشًا. إنها تعديل للحقائق المنطقية والبيانات التي تقوم عليها اللعبة كلها - أجسامها وخصائصها وآلياتها. هي في جوهرها اللغة التي كُتبت بها اللعبة.

تعلّم هذه اللغة ليس إلزاميًا. يمكنك أن تطلب من الذكاء الاصطناعي أن يحوّل عبارة عادية إلى أوامر يفهمها Nexus. مثلًا:

give 999 gold

معنى هذا ببساطة «أضِف 999 ذهبًا».

طلب إلى الذكاء الاصطناعي بكلمات عادية - «give 999 gold». سيختار المحرّك الأمر المناسب بنفسه وينفّذه

يفكّر الذكاء الاصطناعي، فيجد الأمر المناسب وينفّذه، وها نحن نملك 999 ذهبًا.

يمكنك صياغته بشكل آخر، «الذهب 100» - يعمل أيضًا. «اجعلني إلهًا» - يمنحك الذكاء الاصطناعي حصانة تامة. إنهاء الدور، الضرب، الشفاء - كل ذلك يمكن فعله بالكلمات، والمحرّك يفهم. ولا شيء من هذا مكتوب مسبقًا، كله يعمل حقًا.

الخطط

أريد تبسيط الأوامر. حاليًا، لصنع Fireball (كرة نارية) نفسها يلزم نحو ثمانية أوامر، وأفكّر في تقليصها إلى ثلاثة أو أربعة. وفي المقطع القادم سأحاول أن أعرض شيئًا أوضح للعين - عرض ثنائي الأبعاد.

تفاصيل أكثر عن المحرّك والخطط في قسم Nexus.

تنبيه: Stone Age لعبة الاستوديو. أما Slay the Spire وGURPS وOregon Trail فمملوكة لأصحاب حقوقها، ومعروضة هنا فقط كعرض للمحرّك - وهذه النسخ لا تُوزَّع في أي مكان.