لغات البرمجة

لغة GOAL: لغة برمجة ألعاب الفيديو

لغة “Game Oriented Assembly Lisp” (أو GOAL) هي لغة برمجة مخصصة لألعاب الفيديو تم تطويرها بواسطة Andy Gavin وفريق Jak and Daxter في Naughty Dog. تمت كتابتها باستخدام Allegro Common Lisp واستخدمت في تطوير سلسلة ألعاب Jak and Daxter بأكملها. من الناحية النحوية، تشبه GOAL لغة Scheme، ولكن مع العديد من الميزات الخاصة مثل الفصول والوراثة والدوال الافتراضية. تشجع GOAL أسلوب برمجي إمبراطوري: حيث تتكون البرامج عادة من سلسلة من الأحداث التي يجب تنفيذها بدلاً من أسلوب البرمجة الوظيفية الذي يتضمن تقييم الدوال بشكل متكرر. لا يتم تشغيل GOAL في مفسر، بل يتم تجميعها مباشرة إلى رمز الآلة لجهاز PlayStation 2 للتنفيذ. تقدم مرافق محدودة لجمع القمامة، وتعتمد بشكل كبير على الدعم الزمني. كما توفر أدوات تخصيص الذاكرة الديناميكية مصممة لجعلها مناسبة تمامًا لتشغيلها في الذاكرة الثابتة على جهاز لعبة الفيديو. تتوفر لـ GOAL دعم واسع النطاق للرمز التجميعي المضمن باستخدام نموذج rlet الخاص، مما يسمح للمبرمجين بخلط رمز التجميع والبنى عالية المستوى بحرية داخل نفس الدالة. يتم تنفيذ مترجم GOAL بواسطة Allegro Common Lisp. ويدعم جلسة استماع تجميع طويلة المدى تعطي المترجم معرفة حول حالة البرنامج المجمع وبالتالي البرنامج الذي يعمل، بما في ذلك جدول الرموز. يتيح ذلك، بالإضافة إلى الربط الديناميكي، لتحرير الدالة، وإعادة تجميعها، وتحميلها، وإدراجها في لعبة تعمل بدون الحاجة إلى إعادة تشغيلها. هذه الميزة تشبه ميزة “تحرير ومتابعة” التي تقدمها بعض مترجمات C++، لكنها تسمح للمبرمج بتغيير كميات متنوعة من الكود (حتى ملفات الكائن بأكملها)، ولا تقاطع اللعبة التي تعمل بواسطة المصحح. تم استخدام هذه الميزة لتنفيذ التدفقات البرمجية وكذلك تدفق المستويات في ألعاب Jak and Daxter. كان استخدام GOAL الأول هو للعبة Jak and Daxter: The Precursor Legacy. وتم تطوير لغة السلف، Game Oriented Object Lisp (GOOL)، أيضًا بواسطة Andy Gavin للعبة Crash Bandicoot. منذ أن لم تعد Naughty Dog توظف المهندس الأولي لتطوير GOAL وصيانته وكانوا تحت ضغط من شركتهم الأم الجديدة (Sony) لمشاركة التكنولوجيا بين الاستوديوهات، انتقلت Naughty Dog بعيدًا عن Lisp. ومع ذلك، منذ ذلك الحين استأنفوا استخدامه للبرمجة النصية في بعض ألعاب PlayStation 3، بما في ذلك The Last of Us.