وحدة 7 / 11

إنشاء التعليمات البرمجية وتكامل المحرك: Unity (C#) وUnreal (Blueprint/C++)

المكاسب:

  • القدرة على إنتاج كود لعبة موثوق وقابل للتجميع من الذكاء الاصطناعي من خلال إعطاء المحرك والإصدار واللغة والسياق المعماري ودمجه من خلال قراءة الكود وفهمه
  • القدرة على إدارة الأداء الخاص برمز اللعبة (التخصيص لكل إطار)، ودورة حياة المحرك، ومخاطر الهلوسة من خلال التجميع والاختبار والتوصيف
  • القدرة على تطبيق مبدأ سلطة المضيف في الألعاب متعددة اللاعبين واستخدام المعلومات الأمنية بشكل مسؤول فقط للدفاع عن اللعبة الخاصة بالفرد والتحقق منها.

اللعبة عبارة عن برنامج. بغض النظر عن مدى جودة تصميمه، فإنه يتم تنفيذه باستخدام التعليمات البرمجية. محرك اللعبة هو البنية التحتية التي تجعل اللعبة تعمل: Unity (المحرك المستخدم على نطاق واسع والمكتوب بلغة C#) وUnreal Engine (المحرك الذي يستخدم C++ ولغة البرمجة النصية المرئية Blueprint) هما الأكثر شيوعًا. يعد الذكاء الاصطناعي أحد أكثر الوسائل المساعدة نضجًا في إنشاء التعليمات البرمجية: وحدة التحكم في المشغل، ونظام المخزون، وأجهزة الحالة، والحفظ/التحميل، ومنطق الواجهة، وتصحيح الأخطاء وإعادة البناء (إعادة بناء التعليمات البرمجية دون كسر سلوكها). لكن رمز اللعبة له عيوبه الخاصة: الأداء (معدل الإطارات)، ودورة حياة المحرك، وأمن اللاعبين المتعددين. ستتعلم في هذه الوحدة كيفية استخدام الذكاء الاصطناعي بأمان وكفاءة في كود اللعبة.

المبدأ الحاسم: سياق المحرك والإصدار

إذا كان الذكاء الاصطناعي لا يعرف المحرك والإصدار الذي يكتب له، فسوف ينتج واجهة برمجة تطبيقات مشوشة أو قديمة أو غير موجودة. لذا قم بتوفير سياق المحرك والإصدار واللغة والهندسة المعمارية في كل موجه تعليمات برمجية. "كتابة حركة اللاعب للوحدة" ضعيفة؛ "Unity 2022.3، C#، نظام الإدخال الجديد، حركة الفيزياء القائمة على Rigidbody" قوية. حدد ما إذا كنت تريد Blueprint أو C++ في Unreal والإصدار الذي تستخدمه.

تأمين تدفق التعليمات البرمجية خطوة بخطوة:

  1. إعطاء السياق (المحرك، الإصدار، اللغة، البنية الحالية، القيود).
  2. تريدها صغيرة ومحددة (مكون واحد، وليس النظام بأكمله).
  3. اقرأ الكود وافهمه (افهم ما يفعله سطرًا بسطر؛ لا تضع كودًا لا تفهمه).
  4. البناء والاختبار (التشغيل على المحرك؛ الملف الشخصي - قياس الأداء).
  5. إعادة البناء والتكامل (مطابقة معايير المشروع).
نصيحة: عندما تطلب من الذكاء الاصطناعي التعليمات البرمجية، قل "اشرح بالتعليقات". هدفك هو فهم الكود؛ سيؤدي وضع كود الذكاء الاصطناعي الذي لا تفهمه في المشروع إلى تراكم ديون لا يمكن تحملها. اطلب أيضًا التعليمات البرمجية في أجزاء صغيرة قابلة للاختبار: بدلاً من نظام مكون من 500 سطر، من السهل التحقق من المكون المكون من 30-50 سطرًا والذي يقوم بمهمة واحدة محددة وتكامله.

مصائد خاصة برمز اللعبة

الأداء. يعمل رمز اللعبة من 30 إلى 60+ مرة في الثانية. يمكن للذكاء الاصطناعي أن يضع عمليات باهظة الثمن (تخصيص الذاكرة، والبحث، ومعالجة السلسلة) في حلقة التحديث التي يتم تشغيلها في كل إطار؛ هذا يقلل من معدل الإطار. قم بتوصيف الرموز المهمة للأداء وإعطاء قيود الذكاء الاصطناعي مثل "التشغيل في كل إطار، بدون تخصيص".

دورة حياة المحرك. يربك الذكاء الاصطناعي أحيانًا عند استدعاء أساليب خاصة، مثل Awake/Start/Update in Unity، وGenePlay/Tick in Unreal. اكتشف أخطاء دورة الحياة عن طريق الاختبار.

أمان متعدد اللاعبين. هذه هي القضية الأكثر أهمية فيما يتعلق بتكنولوجيا المعلومات/الأمن. لا تثق أبدًا بالعميل في لعبة متعددة اللاعبين: يمكن التلاعب بالعميل الموجود على كمبيوتر اللاعب من أجل الغش. التحقق من الحالة الحرجة مثل النقاط والأضرار والمال على الخادم (مخول الخادم). التحكم في كود الشبكة الذي تم إنشاؤه بواسطة الذكاء الاصطناعي وفقًا لهذا المبدأ؛ إذا أنشأ الذكاء الاصطناعي ثغرة أمنية تتعلق بثقة العميل، فقم بإصلاحها. استخدم هذه المعلومات فقط للدفاع عن لعبتك والتحقق منها؛ يعد الوصول غير المصرح به إلى خادم شخص آخر أو الغش فيه أمرًا غير قانوني وغير أخلاقي.

تنبيه: قد تحتوي التعليمات البرمجية التي تم إنشاؤها بواسطة الذكاء الاصطناعي على ثغرات أمنية (فقدان التحقق من صحة الإدخال، وثقة العميل، وحفظ ملف التلاعب). لا تقبل الكود بشكل أعمى؛ قم بإجراء مراجعة أمنية، خاصة للشبكة والاقتصاد وحفظ التعليمات البرمجية.

الديون المعمارية والصيانة

يقوم الذكاء الاصطناعي بإنتاج وظائف فردية بسرعة؛ لكن تصميم اللعبة – كيف يتم تقسيم الأنظمة، وكيف تتحدث مع بعضها البعض، وأين يتم الاحتفاظ بالبيانات – هو قرار طويل المدى، وهو ملك للإنسان. إذا طلبت من الذكاء الاصطناعي "كتابة المخزون بالكامل، والقتال، وحفظ النظام معًا"، فستحصل على كرة غزل عاملة ولكن مقترنة بإحكام، ويصعب صيانتها، وغير قابلة للتوسيع. بدلاً من ذلك، يمكنك تصميم البنية واستخدام الذكاء الاصطناعي لملء المكونات الصغيرة بواجهات محددة. تُحدث البنية الجيدة فرقًا مع نمو اللعبة: تعود القرارات السيئة بعد عام كديون فنية تؤخر كل ميزة جديدة.

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

ثلاث حالات صغيرة

الحالة 1 - سياق الإصدار يمنع الخطأ. قال أحد المبرمجين أولاً، "اكتب مخزونًا للوحدة"؛ كان الكود يستخدم واجهة برمجة تطبيقات قديمة، ولم يتم تجميعه. ثم أعطت السياق "Unity 2022.3، C#، استنادًا إلى ScriptableObject"؛ تم تجميع الكود في المرة الأولى وتناسب المشروع. أنقذ السياق ساعة من التصحيح.

الحالة 2 - فخ الأداء. في إحدى الألعاب كان معدل الإطارات منخفضًا. عند التوصيف، لوحظ أن طريقة التحديث التي أنتجها الذكاء الاصطناعي خصصت قائمة جديدة في كل إطار وبحثت عن الأعداء. تم إصلاح الكود مع المرجع المخبأ والتحديث غير التربيعي، مما أدى إلى زيادة معدل الإطارات من 42 إلى 60.

الحالة 3 - تم اكتشاف ثغرة أمنية. في لعبة متعددة اللاعبين، يقوم الكود الذي تم إنشاؤه بواسطة الذكاء الاصطناعي بحساب الضرر الذي لحق بالعميل وإبلاغ الخادم به؛ كان هذا مفتوحًا للغش (يمكن للعميل إلحاق أضرار لا حصر لها). تم إنشاء الكود على الخادم (الخادم يحسب الضرر). منعت المراجعة فضيحة الغش بعد النشر.

أربعة قوالب قابلة للنسخ

1) طلب الكود مع السياق:

المحرك: الوحدة 2022.3. اللغة: سي#. الهندسة المعمارية: [على سبيل المثال. يعتمد على المكون]. القيد: التخصيص في التحديث؛ تكون قابلة للقراءة والتعليق عليها. المهمة: [مكون واحد محدد، على سبيل المثال. "وحدة تحكم حرف القفزة المزدوجة"]. تأكد من أن كل واجهة برمجة تطبيقات تستخدمها موجودة في هذا الإصدار؛ إذا لم تكن متأكدا، اسمحوا لي أن أعرف.

2) شرح/مراجعة الكود:

اشرح الكود التالي سطرًا تلو الآخر واكتب (1) ما يفعله، (2) مشاكل الأداء المحتملة (التخصيص لكل إطار، البحث المكلف)، (3) الأخطاء المحتملة، (4) اقتراحات للتحسين. الكود: [لصق]

3) التدقيق الأمني متعدد اللاعبين:

قم بفحص التعليمات البرمجية متعددة اللاعبين التالية للأمان. على وجه التحديد: الأماكن التي يكون فيها العميل موثوقًا به، والحالة الحرجة التي تحتاج إلى التحقق منها على الخادم (الضرر، والنقاط، والأموال)، وعدم التحقق من صحة الإدخال. أقترح إصلاحًا لجعل الخادم متسلطًا. وهذا فقط للدفاع عن لعبتي الخاصة. الكود: [لصق]

4) إعادة البناء التي تركز على ملف تعريف الأداء:

يعمل هذا الرمز على كل إطار ويقلل معدل الإطارات: [code].ابحث عن التخصيصات وعمليات البحث الباهظة الثمن والعمليات غير الضرورية لكل إطار على حدة؛ قم بالتحسين دون تعطيل السلوك من خلال التخزين المؤقت والتحديثات الأقل تكرارًا. اشرح التغييرات.

موجه ضعيف / موجه قوي

حث ضعيف:

اكتب نظام الحفظ في الوحدة.

لا يوجد إصدار أو تنسيق أو نطاق بيانات أو أمان؛ والنتيجة عامة ومحفوفة بالمخاطر.

مطالبة قوية:

المحرك: يونيتي 2022.3، C#. المهمة: نظام حفظ/تحميل يعتمد على JSON. ليتم حفظها: موقع اللاعب، والمخزون، والتقدم. القيد: الحصول على إدارة الأخطاء ضد تلف الملفات؛ أضف فحص السلامة (التجزئة) إلى ملف الحفظ لمنع الغش عن طريق تغييره بسهولة من قبل اللاعب. قم بالتعليق على الكود وتأكد من وجود كل واجهة برمجة تطبيقات في هذا الإصدار.

يعمل الإصدار والنطاق ومعالجة الأخطاء والتحقق من التكامل على تقوية المخرجات.

جدول سياق المحرك/اللغة

المحرك

لغة

ما عليك أن تعطيه لمنظمة العفو الدولية

اهتمام خاص

الوحدة

ج #

الإصدار، نظام الإدخال/الفيزياء

تحديث التخصيص، دورة الحياة

غير واقعي

مخطط

الإصدار، سياق العقدة

حدود المنطق البصري

غير واقعي

سي ++

الإصدار، هيكل الوحدة

الذاكرة، GC، وحدات الماكرو

متعددة اللاعبين

على حد سواء

نموذج الشبكة

مقدم الاستبداد

الأخطاء الشائعة

  • عدم تحديد المحرك/الإصدار. إنه يأتي من واجهة برمجة التطبيقات (API) القديمة أو المختلقة.
  • الثقة في الكود دون فهمه. تتراكم الديون التي لا يمكن تحملها.
  • عدم قياس الأداء. يؤدي تخصيص إطار تلو الآخر إلى تقليل معدل الإطارات بصمت.
  • الثقة بالعميل. هناك ثغرة أمنية في الغش في اللعب الجماعي.
  • يريد النظام بأكمله في وقت واحد. القطعة الصغيرة القابلة للاختبار أكثر أمانًا.

باختصار

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

مهمة التطبيق

اختر مكونًا صغيرًا (مثل القفزة المزدوجة أو المخزون البسيط). قم بإنشاء التعليمات البرمجية من خلال توفير المحرك والإصدار باستخدام قالب "طلب التعليمات البرمجية مع السياق". ثم قم بإزالة مخاطر الأداء والأخطاء من خلال مراجعة نفس الكود باستخدام قالب "وصف/مراجعة الكود". تجميع واختبار التعليمات البرمجية في المحرك.

قائمة مرجعية

  • [ ] أعطيت المحرك والإصدار واللغة وسياق الهندسة المعمارية.
  • [ ] قرأت الكود وفهمته؛ أردت ذلك مع التعليق.
  • [ ] قمت بتجميعه واختباره في المحرك وقياس الأداء.
  • [ ] لقد قمت بإجراء فحص أمني في رمز الشبكة/الاقتصاد/الحفظ.
  • [ ] لقد استخدمت المعلومات الأمنية فقط للدفاع عن لعبتي.