ما هي لغة البرمجة النصية داخل اللعبة التي يجب أن أدعمها؟

StackOverflow https://stackoverflow.com/questions/1431468

سؤال

سيتحكم البرنامج النصي داخل اللعبة في منطق NPC/AI.

إذا كنت سأقوم بتنفيذ ميزة البرمجة النصية داخل اللعبة، فما هي اللغة التي يجب أن تدعمها؟

ضع في اعتبارك أن تنفيذي سيتم تشغيله على منصات متعددة مثل .net وflash وjavascript وjava.

ما هي إيجابيات وسلبيات الاحتمالات المذكورة؟كم من الوقت سيستغرق تنفيذ المترجم؟

ما هي الميزات التي يبحث عنها المبرمجون داخل اللعبة؟ما هي الألعاب الأخرى التي تنفذ؟

أفكر في التصويت لصالح جافا سكريبت لأنه يمكن للجميع قراءتها وكتابتها.

ما رأيك؟

هل كانت مفيدة؟

المحلول

سأستخدم Lua، لأنه من السهل جدًا تضمينه.يبدو أن تضمين بايثون معقد ولم أتابع ذلك حقًا.

هذا وصلة قد يكون مفيدًا أيضًا إذا كنت تريد معرفة المزيد حول تضمين Lua ومزاياه/عيوبه.

نصائح أخرى

استخدم لوا. إنها لغة جميلة، ومعتمدة على نطاق واسع في صناعة الألعاب.

توجد روابط Lua لمعظم منصاتك:

يوجد ايضا مشروع llvm-lua, ، والذي قد يكون مفيدًا في نقل Lua إلى منصات أخرى.

أما بالنسبة لجافا سكريبت كمنصة مضيفة...يظهر هذا الموضوع بشكل متكرر في القائمة البريدية لوا, لكن لم يتم نشر حل جدي حتى الآن.اذا أنت حقًا إذا كنت بحاجة إلى استضافة Lua في JS، يرجى السؤال في قائمة Lua البريدية، ربما يمكن لبعض الأشخاص مشاركة تجربتهم حول هذا الموضوع.

أفضّل لغة Python لارتباطاتها بالعديد من اللغات.

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

أعلم على وجه اليقين أن Python وLua لديهما روابط لـ .NET وJava - يمكنك تضمين المترجمين الفوريين.لا أعرف ما إذا كان هناك أي ارتباطات لجافا سكريبت وفلاش.

المشكلة في بايثون هي أن هناك ثلاثة أنواع مختلفة تم إنشاؤها بواسطة أشخاص مختلفين.

  • أيرون بايثون ل.NET
  • جيثون لجافا
  • وCPython العادي

لم أعمل على Jython لذا لن أعلق عليه.ولكن هناك بعض المشكلات المتعلقة بقابلية النقل بين IronPython وCPython.على سبيل المثال:لا يدعم IronPython امتدادات لغة C الأصلية.إذا كانت هناك نصوص مكتوبة بلغة CPython تستخدمها، فسوف تجد صعوبة في نقلها إلى IronPython.وأيضًا، إذا كانت نصوص IronPython تستخدم أي مكتبات .NET، فستجد صعوبة في نقلها إلى CPython.

من ناحية أخرى، تأتي تطبيقات Lua من مكان واحد ولا أتوقع مثل هذه المشاكل.

يعتمد ذلك على مدى تعقيد التعليمات البرمجية الخاصة بك (مدى تعقيد سلوك الشخصيات غير القابلة للعب).Tcl وLua وJavaScript مخصصة للمهام البسيطة.تميل كتابة أجزاء كبيرة من التعليمات البرمجية بهذه اللغات إلى أن تصبح غير قابلة للصيانة بسرعة (خاصة للمستخدمين العاديين).

يستخدم Squirrel بناء جملة يشبه C والذي سيكون معظم الناس مرتاحين له ولكن ماذا عن دعم الأدوات؟إذا كان عليك كتابة كل شيء باستخدام برنامج "المفكرة"، فسيؤدي ذلك إلى تقييدك بشدة أيضًا.

بايثون هي لغة ناضجة وسهلة التعلم (فقط قارن "البرنامج التعليمي" لوا مع تلك التي تأتي مع بايثون).في حين أن إصدارات بايثون المختلفة قد تبدو مخيفة (انظر إجابة روهيت)، سيكون رمز Python الموجود في لعبتك هو نفسه بالنسبة لهم جميعًا.يأتي مزودًا بـ IDE (IDLE) وهناك IDEs أخرى تدعم Python والتي تمنحك إكمال التعليمات البرمجية وتصحيح الأخطاء وتشغيل حالات الاختبار وما إلى ذلك.

إذا كنت تريد استخدام بايثون فكر في استخدام لا تتراكم لأنه أفضل في الترابط من CPython الأصلي.يتم استخدامه في بعض ألعاب MMORPG (EVE Online، IIRC) لذا فهو يتمتع بسجل حافل في الألعاب.بالإضافة إلى ذلك، فهو جيد جدًا للاستمرارية (جزء من سبب تطويره في المقام الأول)، وهو نموذج جيد جدًا لمنطق نوع "المحاكاة" الذي يستخدمه المرء في الألعاب.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top