لوحة المتصدرين
المحتوى الأكثر حصولًا على سمعة جيدة
المحتوى الأعلى تقييمًا في 09/09/23 in مقالات البرمجة
-
هل أنت مهتم بتطوير الألعاب، وتود التعرف على مفهوم محرك الألعاب وأفضل أنواع محركات الألعاب Game Engines التي توفر لك بيئة عمل متكاملة يمكنك من خلالها برمجة الألعاب بسهولة واحترافية؟ نعرّفك في هذه المقالة على أبرز محركات الألعاب ونوضح أهم مميزاتها وعيوبها لتختار منها ما يناسبك وتنطلق في مجال صناعة الألعاب. مدخل إلى برمجة الألعاب قبل التعمق في شرح مفهوم محرك الألعاب لنتحدث بإيجاز عن خطوات تطوير وبرمجة الألعاب، حيث تضم عملية تطوير الألعاب عدة مراحل لا تقتصر فقط على المهارات البرمجية والرياضية، بل تحتاج لوجود مهارات فنية وإبداعية، والقدرة على ابتكار أفكار لعب مشوقة، وسرد اللعبة بطريقة واضحة تبين للاعب قوانين اللعبة وطريقة اللعب بها. قد تختلف مراحل تطوير الألعاب بحسب نوع اللعبة ومستواها ومنصة اللعب بها، إلا أنها تمر بمجموعة من المراحل الأساسية تشمل: التخطيط للعبة ووضع تصور عام لها وتحديد نوعها ومميزاتها وطريقة اللعب بها والمستويات التي تتضمنها والمنصة التي ستعمل عليها. تصميم اللعبة فبمجرد الانتهاء من مرحلة التخطيط للعبة تبدأ مرحلة التصميم وتحديد الشكل الذي ستظهر به هل هي ثنائية الأبعاد 2D أم ثلاثية الأبعاد 3D وشكل الشخصيات ونمط رسمها وهل ستصمم الشخصيات من الصفر أم ستستورد من مصدر جاهز. برمجة اللعبة في هذه المرحلة تتم كتابة المنطق البرمجي الذي يجعل اللعبة تعمل مع تحديد الأدوات أو التقنيات اللازمة لتحقيق ذلك، وهنا أمام المطور خياران إما البدء بكتابة كافة الأكواد البرمجية اللازمة لعمل اللعبة من الصفر بإحدى لغات برمجة الألعاب وهذا سيستغرق وقتًا وجهدًا كبيرين وهو يصلح لبرمجة الألعاب البسيطة أو استخدام محركات ألعاب متخصصة تساعد مبرمج الألعاب في أداء المهام التطويرية وتمكنه من تطوير ألعاب عالية الجودة بأقل جهد. اختبار اللعبة حيث بعد الانتهاء من برمجة اللعبة يجب اختبارها وتجربة اللعب بها والتأكد من أنها تعمل بالشكل المطلوب وإصلاح أي أخطاء تظهر فيها. نشر اللعبة على المنصات أو المتاجر الخاصة بها وإتاحتها للمستخدمين، على سبيل المثال إذا قمت بإنشاء لعبة تعمل على الجوال تحتاج لتحميلها على متجر تطبيقات جوجل بلاي ومتجر تطبيقات آبل. بالنسبة للألعاب البسيطة يمكن أن يكون مصمم اللعبة ومبرمج اللعبة هو الشخص نفسه، أم في الألعاب المتقدمة فيكون هناك فريق تطوير متخصص مكون من مجموعة أفراد الذين يعملون معًا لإنشاء وتطوير الألعاب كالمصممين الذين يبتكرون تصاميم اللعبة والمطورين الذين يكتبون الكود البرمجي لها ومهندسين لإنشاء أصوات اللعبة ومصممي مستويات اللعبة وأحيانًا كتَّاب سيناريو ومنتجين ومخرجين وغيرهم من الأشخاص المختصين بحسب مستوى اللعبة ودرجة تعقيدها. ما هو محرك الألعاب Game Engine؟ محرك الألعاب game engine أو ما يعرف بإطار عمل الألعاب game framework هو البيئة المسؤولة عن تشغيل الألعاب، إذ يوفر للمبرمجين إطار عمل برمجي يتضمن التعليمات البرمجية الأساسية والأدوات الجاهزة والمكتبات المضمنة التي توفر كافة الوظائف التي يحتاجها المطور لتطوير وتخصيص ونشر الألعاب بسرعة وسهولة. يعد محرك الألعاب أساس إنشاء وتشغيل الألعاب المختلفة، واختياره خطوة أولى لتطوير الألعاب باختلاف أنواعها، ويمكن تشبيه محرك الألعاب بمحرك السيارة فكما أن محرك السيارة هو ما يشغل هيكل السيارة ويجعلها تتحرك فهو ما يوفر البنية التحتية الرقمية اللازمة لتشغيل عناصر اللعبة وجعلها تعمل بالشكل المطلوب. لقد أحدثت محركات الألعاب تحولًا جذريًا في مجال تطوير الألعاب فقبل ظهورها كان مطور الألعاب يحتاج لتصميم كل تفاصيل لعبته الألعاب من الألف إلى الياء وكتابة كافة التعليمات البرمجية المطلوبة لتصميم الألعاب ونشرها على المنصات المختلفة، لكن باستخدام محركات الألعاب لن تكون مضطرًا لكتابة الكثير من التعليمات البرمجية المعقدة لتجعل لعبتك تعمل بالشكل المطلوب وستتمكن من خلال برنامج واحد إنشاء ألعاب متعددة المنصات تعمل على أجهزة الحاسوب الشخصية والأجهزة المحمولة ووحدات التحكم بالألعاب consoles ومنصات الواقع الافتراضي VR platforms، فكل ما تحتاجه لتصميم لعبة متكاملة اليوم هو تعلم استخدام أحد محركات الألعاب ومعرفة أساسية بإحدى لغات البرمجة التي يدعمها هذا المحرك. مكونات محرك الألعاب يتضمن محرك الألعاب عادة مجموعة من المكونات أو المحركات الفرعية التي تتفاعل مع بعضها البعض لتجعل عناصر أو كائنات اللعبة تقوم بكافة الوظائف الضرورية التي تحتاجها، وأهم هذه المحركات: محرك الفيزياء Physics Engine محرك التصيير أو الإخراج Rendering Engine محرك الرياضيات Math Engine محرك الصوت Sound Engine محرك الشبكة Networking Engine محرك الذكاء الاصطناعي AI Engine لنتناول بإيجاز دور كل محرك من هذه المحركات والوظائف التي يقدمها. 1. محرك الفيزياء Physics Engine المسؤول عن جعل عناصر اللعبة تظهر بطريقة واقعية عندما تسقط أو تصدم ببعضها البعض أو عند إطلاق قذيفة أو انسكاب سوائل وغيرها من التصرفات. 2. محرك التصيير أو الإخراج Rendering Engine يعرف كذلك باسم المحرك الرسومي graphic engine وهو مسؤول بشكل أساسي عن إخراج رسومات اللعبة بشكل ثنائي الأبعاد 2D أو ثلاثي الأبعاد 3D. 3. محرك الرياضيات Math Engine المسؤول عن توفير الوظائف الرياضية مثل حساب المسافة أو حساب السرعة وغيرها من العمليات الرياضية التي تفيدك في سياق التحكم في شخصيات اللعبة. 4. محرك الصوت Sound Engine المسؤول عن تحميل وتشغيل ملفات الصوت والتأثيرات الصوتية داخل اللعبة وتحسينها والتحكم بها. 5. محرك الشبكة Networking Engine الذي يتيح لك استخدام الشبكات لتطوير ألعاب متعددة اللاعبين multiplayer games ما يجعل اللعبة أكثر حماسًا وتفاعلية. 6. محرك الذكاء الاصطناعي AI Engine وهو المسؤول عن تقديم توصيات أو اتخاذ قرارات في اللعبة بناءً على سلوك اللاعب. قد لا تستخدم كافة هذه المحركات في تصميم لعبتك إذ يعتمد الأمر على طبيعة اللعبة التي تطورها والمميزات التي توفرها. دعنا نتعرف في الفقرات التالية ما هي أهم محركات الألعاب ونكتشف أبرز مميزاتها لتختار منها ما يناسبك. أشهر محركات الألعاب هناك العديد من محركات الألعاب التي توفر إمكانيات ومميزات مختلفة وتستهدف منصات متعددة وتتناسب مع أنواع ومستويات ألعاب مختلفة، ويعتمد اختيار محرك الألعاب المناسب على متطلبات اللعبة التي تود تطويرها مثل نوع اللعبة، والمنصة التي تستهدفها، ونوع الجهاز الذي ستعمل عليه، وغيرها من العوامل. وإليك قائمة بأبرز محركات الألعاب: محرك الألعاب Unity Engine محرك الألعاب Unreal Engine محرك الألعاب Godot Engine محرك الألعاب GameMaker Engine محرك الألعاب Open 3D محرك الألعاب jMonkey Engine محرك الألعاب FrostBite لنتعرف بمزيد من التفصيل على كل محرك من بين هذه المحركات ونكتشف أبرز مميزاته وعيوبه. 1. محرك الألعاب Unity Engine محرك يونتي Unity Engine هو واحد من أشهر محركات الألعاب طورته شركة Unity Technologies لتصميم ألعاب فيديو متكاملة الوظائف ومتعددة المنصات، يتميز محرك ألعاب Unity بالمرونة وسهولة الاستخدام ويناسب مطوري الألعاب المبتدئين والخبراء على حد سواء، كما أنه يعمل على كافة أنواع الأجهزة سواء أجهزة الحاسوب أو الجوال أو وحدات تحكم الألعاب الأخرى ويتوافق مع مختلف أنظمة التشغيل، وهو خيار مثالي لبرمجة ألعاب الهواتف المحمولة وألعاب الويب وسطح المكتب خفيفة الحجم. كما يوفر محرك Unity العديد من الميزات والوظائف المضمنة التي تساعد المطورين في تصميم ألعاب احترافية، مثل منصة تطوير ثنائية وثلاثية الأبعاد لبرمجة الألعاب، وميزات اكتشاف الاصطدام والفيزياء المضمنة، وعرض رسومات الألعاب بشكل ممتاز حتى على الأجهزة ذات الجودة المنخفضة، كما يوفر متجر ألعاب خاص به Unity Asset Store ليتيح للمطورين إنشاء وبيع الألعاب ومحلقاتها ومواردها المختلفة مثل التأثيرات الصوتية والبصرية والبيئات ثنائية وثلاثية الأبعاد وغيرها من العناصر التي تحتاجها لتصميم وبرمجة ألعاب احترافية بسرعة وبأقل جهد. يتميز محرك ألعاب يونيتي Unity عن غيره من محركات الألعاب بأنه يستخدم عدة صناعات أخرى غير صناعة الألعاب مثل التصوير السينمائي والهندسة المعمارية وتصميم السيارات وغيرها من الصناعات، وهو متوفر بإصدار شخصي مجاني Unity Personal مخصص للأفراد والهواة والمؤسسات الصغيرة للمشاريع التي تدرّ أرباحًا تقل عن 200000 دولار سنويًا، وإصدار آخر احترافي Unity Pro تبلغ تكلفته الشهرية 185 دولار وتكلفته السنوية 2040 دولار -أثناء كتابة المقال- لكل مقعد أو مستخدم، مع فترة تجريبية مجانية مدتها 30 يومًا. وقد أعلنت شركة Unity Technologies مؤخرًا فرض رسوم جديدة على المطورين بداية من الأول من يناير 2024 لزيادة ربحيتها وبأنها ستتقاضى رسومًا من المطورين في كل مرة يتم فيها تنزيل ألعابهم أي أن الرسوم ستفرض على المطور إما عندما تتجاوز إيرادات لعبته مبلغ 200000 دولار سنويًا أو عندما يبلغ عدد مرات تثبيت لعبته 200000 تثبيت لكنها تراجعت سريعًا عن قرار فرض رسوم مقابل عدد مرات التثبيت بعد أن تعرضت لانتقادات واحتجاجات واسعة من قبل المطورين وصناع الألعاب الذين يستخدمون محرك الألعاب يونتي Unity، ووضحت أن القرار سيبطق على الإصدارات المستقبلية من المحرك فقط في حال اختار المطور تحديثه. من أشهر الألعاب المطورة باستخدام محرك ألعاب Unity نذكر: Pokémon Go Cuphead Angry Birds 2+ Temple Run Monument Valley Lara Croft Go Pillars of Eternity 2. محرك الألعاب Unreal Engine محرك ألعاب أن ريل Unreal Engine هو محرك تطوير ألعاب مفتوح المصدر طورته شركة Epic Games عام 1988وهو يستخدم لإنشاء مختلف أنواع الألعاب الإلكترونية متعددة المنصات، ويتميز بكونه سهل الاستخدام وموثق بشكل جيد وواضح حيث يوفر للمطورين مجموعة شاملة من الموارد والشروحات التعليمية التي تساعدهم على تعلم استخدام المحرك بسرعة، إلى جانب ذلك يوفر مكتبة ألعاب متنوعة يمكن للمطور أن يحمِّل ما يشاء منها من مصادر ويسرّع تطوير ألعابه. لا يستخدم محرك Unreal عادة في تصميم وبرمجة الألعاب البسيطة فهو يعتمد على لغة البرمجة C++ لإضافة المنطق للألعاب وهي لغة صعبة نسبيًا للمبتدئين، لذا يناسب هذا المحرك مطوري الألعاب المحترفين الذين يستفيدون من أدائه العالي في برمجة الألعاب الثقيلة الحجم ذات الرسومات المتقدمة القريبة للواقع، والألعاب متعددة اللاعبين، وألعاب الواقع الافتراضي VR وألعاب الذكاء الاصطناعي التي تتطلب الكثير من الموارد وتعمل عليها فرق تطوير كبيرة والتي تعرف باسم ألعاب AAA Games كما يستخدم كذلك في مجالات أخرى مثل صناعة السيارات حيث يساعد في إنشاء تصاميم ثلاثية الأبعاد مفصلة وتفاعلية للسيارات ومحاكاتها قبل البدء بتصنيعها مما يساعد في اختيار التصميم الأنسب. يمكن تنزيل محرك Unreal Engine واستخدامه بشكل مجاني والبدء باستخدامه لتطوير ألعابك الخاصة دون دفع أي تكاليف، لكنك ستدفع رسوم ملكية بنسبة تساوي 5% عندما تحقق لعبتك أرباح تزيد على مليون دولار. من أشهر الألعاب المطورة باستخدام محرك ألعاب Unreal نذكر: Fortnite PUBG Gears of War Mortal Kombat Borderlands Tetris Effect Yoshi's Crafted World 3. محرك الألعاب Godot Engine محرك الألعاب جودو Godot Engine هو برنامج مفتوح المصدر لتصميم الألعاب طوره المبرمجان الأرجنتينيان جوان لينيتسكي Juan Linietsky وأرييل مانزور Ariel Manzur عام 2014 بهدف تطوير محرك فعال ومرن يناسب المطورين المبتدئين والمحترفين على حد سواء ويسمح لهم بإنشاء وتخصيص ألعابهم بسهولة كبيرة، حيث يعتمد محرك ألعاب جودو على لغة البرمجة GDScript وهي لغة بسيطة وسهلة المقروئية تشبه في تركيبتها لغة بايثون python، كما يسمح للمطورين بكتابة منطق ألعابهم بلغات برمجة أخرى مختلفة مثل C++ أو C# أو روبي Ruby. يتضمن محرك ألعاب جودو العديد من الميزات أبرزها توفير بيئة تطوير ألعاب ثنائية وثلاثية الأبعاد، وأدوات لإنشاء وإخراج الرسومات وعرضها، ومحرر شيفرات مدمج، ومشغل للملفات الصوتية، ومحرك فيزياء، وغيرها من الميزات ضمن واجهة رسومية بسيطة وسهلة الاستخدام تعتمد السحب والإفلات، كما يدعم محرك ألعاب جودو منصات متعددة فهو يسمح بتصميم ألعاب متوافقة مع أنظمة ويندوز ولينكس وماك وأندرويد Android وآي أو إس iOS كما يسمح بتصدير الألعاب بصيغة HTML5 لتناسب الويب. يعتمد محرك الألعاب جودو على مفهوم العقد Nodes والمشاهد scenes، فاللعبة في جودو ليست سوى مجموعة من مشهد أو مجموعة من المشاهد وكل مشهد عبارة عن شجرة من العقد، تشكل العقد الوحدات أو اللبنات الأساسية لبناء اللعبة والعقدة هي كائن يمثل وظيفة ما فقد تعرض العقدة الرسومات، أو تشغل الرسوم المتحركة، أو تشغل صوت أو تمثل نموذجًا ثلاثي الأبعاد لكائن ما لذا تضاف العقد للعبة حسب الوظيفة التي تحتاجها، كما تحتوي العقدة على مجموعة من الخصائص لتخصيص سلوكها ويمكنك تجميع العقد ودمجها لإنشاء عقد أكبر وأكثر تعقيدًا. دورة تطوير الألعاب ابدأ رحلتك في برمجة وتطوير الألعاب ثنائية وثلاثية الأبعاد وصمم ألعاب تفاعلية ممتعة ومليئة بالتحديات. اشترك الآن يعد محرك ألعاب جودو المحرك المفضل للمطورين ذوي الميزانية المحدود الراغبين في دخول عالم تطوير الألعاب لكونه يوفر حلًا مجانيًا قويًا لإنشاء ألعاب احترافية، ولكونه محرك مفتوح المصدر فهو يملك مجتمع دعم نشيط يضم آلاف المطورين الذين يوفرون الكثير من الشروحات والدروس التعليمية والنصائح ومنتديات الدعم التي تساعدك في حال واجهتك أي مشكلة في تطوير ألعابك. من أبرز الألعاب المطورة باستخدام محرك ألعاب Godot: Kingdoms of the Dump Cruelty Squad Dome Keeper Cassette Beasts Luck Be a Landlord Commander Keen in Keen Dreams 4. محرك الألعاب GameMaker محرك جيم ميكر GameMaker هو محرك ألعاب طوره بالأساس مبرمج الألعاب الهولندي مارك أوفرمارس Mark Overmars وصدر لأول مرة في 15 نوفمبر عام 1999 تحت اسم Animo وكان في بدايته عبارة عن أداة رسومية بإمكانيات محدودة، وبعدها منذ عام 2007 تولت شركة تطوير البرمجيات YoYo Games وأدخلت عليه تحسينات كثيرة تحويل إلى محرك ألعاب مخصص لإنشاء الألعاب ثنائية الأبعاد يستهدف المبتدئين وغير التقنيين حيث يسمح لهم ببرمجة الألعاب بطريقة سهلة وسريعة دون الحاجة لكتابة أي كود برمجي من خلال واجهة رسومية سهلة الاستخدام، لكن بالطبع فإن امتلاك خلفية برمجية سيمكنك من استخدام المحرك بكفاءة أعلى وتطوير الألعاب بشكل أفضل. يملك محرك GameMaker لغة برمجة مضمنة خاصة به تسمى لغة GML تعتمد على لغات جافا سكريبت و C++ و C# التي يتم دمجها بطرق محددة وبالتالي إذا كان لديك أساس برمجي جيد في هذه اللغات سيكون من السهل عليك تعلم هذه اللغة. يتضمن GameMaker العديد من الميزات والوظائف المدمجة مثل محرر صور لإنشاء السبرايت sprites (وهي الرسومات أو النقوش المتحركة التي تظهر ضمن اللعبة) كما يتيح لك استيراد الصور المنشأة في محرر خارجي وتحويلها إلى كائنات ضمن اللعبة وإضافة إجراءات أو وظائف برمجية لها وهو يدعم عشرات أنظمة تشغيل ويندوز ولينكس وماك وأندرويد و iOS إلى جانب منصات الألعاب مثل بلاي ستيشن PlayStation وإكس بوكس Xbox وسويتش Switch وغيرها. يمكنك تحميل محرك الألعاب GameMaker مجانًا لكنك مجبر على الترقية لأحد الخطط المدفوعة إذا كنت ترغب في الاستفادة منه بشكل فعلي وتصدير ألعابك إلى منصات معينة، حيث تبدأ الخطط المدفوعة من 5 دولارات شهريًا يناسب محرك الألعاب GameMaker إنشاء وتطوير أنواع مختلفة من الألعاب مثل الألعاب الحركية من نمط أعلى لأسفل top-down action games وألعاب الألغاز، وألعاب فن البكسل Pixel Art. ومن أشهر الألعاب المطورة باستخدام المحرك GameMaker: Post Void Undertale Hyper Light Drifter Spelunky 5. محرك الألعاب Open 3D محرك أوبن ثري دي Open 3D أو اختصارًا O3DE هو محرك تطوير ألعاب ثلاثي الأبعاد مفتوح المصدر متكامل الميزات طورته مؤسسة Open 3D Foundation حيث يتيح للمطورين إنشاء ألعاب عالية الدقة AAA وعوالم ثلاثية الأبعاد عالية الدقة ذات جودة سينمائية وهو إصدار محدث من محرك ألعاب أمازون Amazon Lumberyard المشتق من محركها السابق CryEngine ويوزع بموجب ترخيص Apache 2.0 ويدعم محرك O3DE حاليًا نظامي التشغيل ويندوز ولينكس فقط. أطلق الإصدار الأولي من محرك الألعاب Open 3D في يوليو/تموز عام 2021 وصدر أول إصدار مستقر منه في 12 مايو/أيار عام 2022 ورغم حداثته إلا أنه تمكن من منافسة محركات الألعاب التقليدية مثل Unity وUnreal Engine فقد احتفظ بأفضل مميزات المحرك Amazon Lumberyard وأضاف له العديد من المميزات مثل واجهة مستخدم قابلة للتوسيع وحزم برمجية جاهزة والعديد من المميزات والمكونات التي يمكن أن تختار ما تحتاج منها وتضيفه للعبتك دون الحاجة لتضمين المكونات غير الضرورية. يدعم Open 3D Engine لغات البرمجة C++ وبايثون Python ولوا Lua وهو مجاني بالكامل ولا يتطلب دفع أي رسوم أو التزامات تجارية كما يتضمن العديد من الميزات مثل عارض متعدد المنصات يسمى Atom يمكن توسيعه ليناسب متطلبات لعبتك ودعم المحاكاة الفيزيائية لإضافة الواقعية إلى عناصر اللعبة، كما يوفر أسلوبين لإضافة المنطق لألعابك إما من خلال واجهة مرئية تسمى Script Canvas أو من خلال لغة برمجة سريعة وخفيفة الوزن تسمى Lua ورغم أن شعبيته لاتزال أقل من غيره من محركات الألعاب نظرًا لحداثته إلا أنه ينبئ بمستقبل واعد. لازال محرك O3DE حديث العهد وعدد الألعاب المطور باستخدامه محدود ومن أشهر الألعاب المطورة باستخدام O3DE نذكر: Deadhaus Sonata Planet Survival Game Planet Storm 6. محرك الألعاب jMonkeyEngine jMonkeyEngine أو ما يعرف اختصارًا بـ jME هو محرك مفتوح المصدر يعتمد على لغة البرمجة جافا Java يستخدم لتطوير الألعاب ثلاثية الأبعاد طور الإصدار الأول منه Mark Powell عام 2003 وبعدها ساهم عدد كبير من الأشخاص بشكل كبير في تطوير هذا المحرك، والإصدار الحالي منه هو 3.6. يتميز محرك jMonkeyEngine بسهولة استخدامه وملائمته للمبتدئين توثيقه الجيد، والميزة المهمة هي أنه محرك متعدد المنصات يمكن استخدامه لتصميم ألعاب تعمل على مختلف المنصات وأنظمة التشغيل مثل ويندوز Windows ولينكس Linux وماك macOS وراسيبيري باي Raspberry Pi وأندرويد Android و آي أو إس iOS لكنه يتطلب وجود معرفة برمجية لتسهيل تطوير الألعاب. يستخدم هذا المحرك مكتبة Lightweight Java Game Library أو اختصارًا LWJGL بشكل افتراضي لإخراج الرسومات وعرضها ويتطلب تثبيته على جهازك وجود بطاقة فيديو متوافقة مع OpenGL 2 وتثبيت عُدة تطوير جافا بإصدار JDK 6 أو أعلى. يتميز محرك ألعاب jMonkeyEngine بسهولة استخدامه وتعلمه لذا فهو يستخدم من قبل العديد من المؤسسات التعليمية واستوديوهات الألعاب التجارية، ومن أشهر الألعاب المطورة باستخدامه: Skullstone Mythruna Boardtastic 2 Lightspeed Frontier 3079 3089 7. محرك الألعاب Frostbite فروست بايت Frostbite هو محرك ألعاب مكتوب بلغة C++ و C# طورته شركة DICE الشهيرة ثم استحوذت عليه شركة Electronic Arts لاستخدامه في تطوير ألعابها أي أنه محرك داخلي غير مرخص للعامة ومخصص حصريًا لتطوير ألعاب Electronic Arts لكننا ذكرناه لشهرة الألعاب المطورة باستخدامه وخصيصًا الألعاب المعتمدة على مبدأ إطلاق النار من منظور الشخص الأول First-person shooter أو اختصارًا FPS ومن أبرزها لعبة كرة القدم فيفا كما يمكن تشغيل الألعاب المطورة باستخدامه على نظام التشغيل ويندوز وأجهزة بلاي ستيشن 3 وبلاي ستيشن 4 وأجهزة Xbox 360 و Xbox one. يوفر محرك Frostbite العديد من الميزات من بينها محرك فيزياء ومحرك رسومات قادر على عرض رسوم متحركة عالية الجودة وتوفير صوت HDR يغير مستوى المؤثرات الصوتية داخل اللعبة ويركز على الأصوات الأكثر أهمية، مثل أصوات إطلاق النار وسير المركبات الأمر الذي يجعل الألعاب نابضة بالحياة وقريبة للواقعية. ومن أشهر الألعاب المطورة باستخدام محرك Frostbite نذكر: سلسلة ألعاب FIFA سلسلة ألعاب Star wars سلسلة ألعاب Battlefield Need For Speed Army of Two الخلاصة تعرفنا في مقال اليوم على أهم محركات الألعاب أو البرامج المستخدمة في تصميم وتطوير الألعاب وتعرفنا على أبرز مميزاتها ولغات البرمجة التي تستخدمها والمنصات والبيئات التي تدعمها، لتختار من بينها البرنامج المناسب لميزانيتك ومتطلبات لعبتك ومستوى خبرتك البرمجية وابدأ رحلة إنشاء الألعاب فهي مجال ممتع ومجزي بذات الوقت. اقرأ أيضًا تعرف على أشهر لغات برمجة الألعاب برمجة لعبة متاهة باستخدام محرك يونيتي Unity نبذة عن صناعة الألعاب ومحرك Unity3D مدخل إلى صناعة ألعاب المتصفح1 نقطة
-
تتنوع لغات البرمجة وتتعدد استخداماتها لتناسب التخصصات البرمجية المختلفة، فبعض لغات البرمجة تفيد لتكون لغات برمجة ألعاب أكثر من غيرها، وبعضها الآخر يناسب تطوير التطبيقات، ومنها ما يلائم الذكاء الاصطناعي، وبعضها ينفع لتحليل البيانات أو الويب، فلكل تخصص برمجي لغات وتقنيات خاصة به، وفي مقال اليوم سنركز على لغات برمجة الألعاب. فإذا كنت ترغب في تعلم برمجة الألعاب، وتتساءل ما هي أفضل لغات برمجة الألعاب يمكنك تعلمها وما هي أبرز مميزاتها، وما الوظائف والمكتبات والأدوات المساعدة التي توفرها لمطوري الألعاب وما الخطوات الصحيحة لبرمجة الألعاب؟ فهذا المقال لك. ما هي برمجة الألعاب؟ برمجة الألعاب هي عملية تحويل الألعاب من فكرة مجردة إلى برنامج أو تطبيق يمكنك اللعب به على أحد المنصات وذلك باستخدام أدوات وتقنيات مساعدة كبرامج التصميم ومحركات الألعاب، أو باستخدام لغات البرمجة في حال رغبت بتطوير لعبتك من الصفر وهذا صعب جدًا وخاصة في الألعاب المتقدمة. تمر برمجة الألعاب عادة بمجموعة من المراحل تشمل: كتابة فكرة اللعبة وشخصياتها وطريقة اللعب وقواعد الربح والخسارة. التخطيط للعبة وكتابة سيناريو اللعبة وطريقة اللعب بها والموارد اللازمة لتنفيذها ونمط رسوماتها والجمهور المستهدف منها والمنصة المستهدفة التي ستعمل عليها. البدء ببرمجة اللعبة وتنفيذ فكرتها باستخدام الأدوات والتقنيات المناسبة كمحركات الألعاب وبرامج تصميم الرسومات ولغات البرمجة. اختبار اللعبة والتأكد من أنها تعمل بشكل صحيح وإصلاح أي أخطاء أو عيوب إن وجدت. نشر اللعبة على المنصة المستهدفة سواء الحاسوب أو الجوال أو الويب أو بلاي ستيشن PlayStation أوإكس بوكس Xbox أو غيرها. صيانة اللعبة ودعمها وتحديثها وتحسينها بصورة مستمرة وإصلاح أي مشكلات تظهر لاحقًا. يمكن أن يقوم شخص واحد بكل هذه المهام في حال برمجة الألعاب البسيطة، لكن في حال برمجة الألعاب الاحترافية المتكاملة التي تمتلك بيئة ضخمة وعدة شخصيات وأحداث وقواعد فهذه تعمل عليها فرق عمل تضم مبرمجين ومصممي رسوميات ومهندسي صوت وكتاب وغيرهم. ما أفضل لغات برمجة الألعاب؟ هناك العديد من لغات برمجة الألعاب، ومن أبرز هذه اللغات: C++ C# Java Python HTML JavaScript Lua Swift لنتناول بمزيد من التفصيل كل لغة من هذه اللغات وأهميتها في برمجة الألعاب ونكتشف أبرز الألعاب المطورة باستخدامها. 1. لغة برمجة C++ تعد لغة C++ من أشهر لغات برمجة الألعاب فهي لغة قوية وسريعة تدعم عرض الرسومات المعقدة ومعالجة كمية كبيرة من البيانات، كما توفر العديد من أدوات تصحيح الأخطاء التي تكتشف المشكلات البرمجية وتساعد على تحسين أداء التطبيقات المطورة باستخدامها. وهي لغة منخفضة المستوى فهذا يجعلها أقرب إلى طبقة العتاد ويساعد المطورين على برمجة ألعاب سريعة وعالية الأداء تستفيد من موارد الجهاز بالشكل الأمثل كما أنها لغة برمجة كائنية التوجه OOP فهي تمكن المطورين من تنظيم التعليمات البرمجية ضمن مكونات قابلة لإعادة الاستخدام وسهلة الصيانة. ومن المميزات البارزة للغة C++ أنها اللغة التي يستخدمها محرك الألعاب الشهير Unreal Engine كما تدعمها معظم محركات الألعاب الأخرى مثل Godot و CryEngine و Source، كما أنها لغة قابلة للتشغيل عبر منصات متعددة وتملك مجتمع دعم كبير عبر الإنترنت وتوفر الكثير من المكتبات والأطر المساعدة في مجال تطوير الألعاب، لكنها لغة صعبة التعلم لذا لا يفضلها المطورون المبتدئون في برمجة الألعاب. ومن أشهر الألعاب التي طورت باستخدام لغة C++ نذكر لعبة Counter Strike و World of Warcraft و King Quest. 2. لغة برمجة C# تتميز لغة C# بكونها واحدة من أشهر لغات برمجة الألعاب فهي لغة برمجة قوية وكائنية التوجه oop طورتها مايكروسوفت كجزء من إطار عمل دوت نت NET. وهي توفر الكثير من المزايا المتقدمة وتتيح للمبرمج الألعاب التحكم في موارد الجهاز كما توفر مجموعة كبيرة من المكتبات والأدوات اللازمة لتطوير التطبيقات المختلفة، وتتوافق لغة C# مع محرك الألعاب الشهير Unity Engine وهو محرك ألعاب شائع يفضله العديد من مطوري الألعاب ويمكن استخدامها مع محركات ألعاب أخرى مثل محرك Unreal Engine ومحرك Godot. تعد لغة C# من اللغات الملائمة جدًا لبرمجة وتطوير الألعاب فهي تتشابه في ميزاتها مع لغة C++ في السرعة والفعالية لكنها أبسط وأسهل منها في التعلم والاستخدام، ورغم كونها لا توفر نفس مستوى التحكم الدقيق بالعتاد الذي توفره لغة C++ لكنها لغة شائعة في برمجة الألعاب وتسمح للمطورين بالتركيز على إنشاء ألعاب عالية الجودة دون الغوص في تفاصيل فنية معقدة. ومن أشهر الألعاب المطورة باستخدام C# نذكر لعبة Stardew Valley و HearthStone و Cuphead و Dead Island. 3. لغة Java تعد لغة جافا Java من أشهر لغات البرمجة متعددة الأغراض وهي تستخدم في العديد من المجالات ومن ضمنها استخداماها في برمجة الألعاب، ومن أبرز مميزات لغة جافا هو كونها لغة سهلة التعلم وتدعم ميزات تساعد على زيادة سرعة وكفاءة البرامج مثل تعدد الخيوط threads والمعالجة على التوازي، كما توفر مكتبات وأطر تطوير ألعاب قوية مثل libGDX للألعاب ثنائية الأبعاد و jMonkeyEngine للألعاب ثلاثية الأبعاد، ويمكن تشغيل الألعاب المطورة باستخدامها على العديد من المنصات بفضل ميزة آلة جافا الافتراضية JVM. قد لا تكون لغة جافا شائعة في مجال صناعة الألعاب مثل C++ أو C# لكن العديد من الألعاب الكبيرة متعددة المنصات مثل ماين كرافت Minecraft الشهيرة لا تزال تستخدمها، ومن أشهر الألعاب المطورة باستخدامها Star Wars Galaxies و Runescape و Powder Game و Roboforge. 4. لغة Python لغة البرمجة بايثون Python هي لغة برمجة متعددة الأغراض وسهلة التعلم تناسب العديد من التطبيقات وتوفر العديد من المكتبات، وهي تستخدم أيضًا في مجال برمجة وتطوير الألعاب حيث توفر العديد من مكتبات الرسومات الأساسية والشبكات والصوت التي تساعد مطوري الألعاب وتسهل عملهم مثل مكتبة PyGame و Pyglet و Kivy و PANDA3D، كما أن لغة GDScript المستخدمة في محرك ألعاب جودو Godot تتشابه كثيرًا مع لغة بايثون وبالتالي فإن تعلم بايثون سيسهل البدء في إنشاء ألعاب باستخدام محرك الألعاب جودو Godot. دورة تطوير الألعاب ابدأ رحلة صناعة الألعاب ثنائية وثلاثية الأبعاد وابتكر ألعاب ممتعة تفاعلية ومليئة بالتحديات. اشترك الآن فإذا كنت تبحث عن لغة برمجة ألعاب بسيطة سهلة التعلم وذات شهرة كبيرة وتملك مجتمعًا كبيرًا ونشطًا عبر الإنترنت فإن لغة بايثون Python خيار مناسب للحصول على نتائج سريعة، لكن لغة بايثون لا تتحكم في العتاد أو إدارة الذاكرة بنفس كفاءة لغة C++ وهي أبطأ من لغات البرمجة الأخرى لذا فهي لا تناسب الألعاب عالية الأداء. ومن الألعاب المشهورة التي طورت باستخدام لغة بايثون نذكر World of Tanks و Battlefield 2 و Civilization IV و Vega Strike. 5. لغة HTML تستخدم لغة HTML بشكل أساسي في إنشاء صفحات الويب ويجب استخدامها إلى جانب لغة CSS ولغة جافا سكريبت -وهي الثلاثي الذهبي للويب- كإحدى لغات برمجة الألعاب وبشكل خاص ألعاب المتصفحات المتوافقة مع مختلف المنصات، حيث تعمل الألعاب المبنية باستخدام HTML على كل الحواسيب الشخصية والجوالات والأجهزة اللوحية وأجهزة التلفزيون الذكية أي أينما وُجد متصفح ويب. ولا تزال ألعاب المتصفح مطلوبة بشدة بالرغم التقدم الهائل في تقنيات وأدوات تصميم الألعاب ومن أشهر الألعاب المطورة باستخدام HTML نذكر A Grain of Truth و Dune 2 و RowserQuest و Cookie Clicker. 6. لغة برمجة JavaScript تعد لغة جافا سكريبت JavaScript من لغات البرمجة عالية المستوى والمستخدمة بشكل أساسي في تطوير الويب وإضافة تأثيرات تفاعلية على صفحات الويب، كما يمكن أن تستخدم جافا سكريبت في تطوير ألعاب المتصفح حيث توفر جافا سكريبت العديد من المكتبات وأطر العمل التي تساعد المبرمجين على تطوير ألعاب الويب التي تعمل على أي متصفح مثل WebGL وهي عبارة عن واجهة برمجة تطبيقات جافا سكريبت لعرض رسومات ثنائية وثلاثية الأبعاد على المتصفح، ومحرك ألعاب الويب Phaser ومكتبات Three.JS و Babylon.js و Impact.js. كما تعتمد لغة جافا سكريبت على مفهوم الأحداث events وهذا يجعلها مناسبة لكتابة التعليمات البرمجية غير المتزامنة ويساعد مطوري الألعاب على إنشاء ألعاب عالية الأداء وسريعة الاستجابة وقادرة على التعامل مع العديد من الطلبات وتوفر تجربة مستخدم سلسلة. ومن أشهر الألعاب المطورة باستخدام لغة البرمجة جافا سكريبت نذكر Bejeweled و HexGl و CrossCode و Polycraft و Swoop. 7. لغة برمجة Lua لربما تسمع باسم لغة البرمجة لوا Lua لأول مرة وهو يعني القمر باللغة البرتغالية، لكنك في الغالب سمعت بأسماء الألعاب الشهيرة المطورة بالاستعانة بها مثل Roblox و Angry Birds و World of Warcraft، تتميز لغة Lua بكونها مفتوحة المصدر ومبنية على لغة البرمجة سي C وهي لغة سريعة وفعالة وخفيفة الحجم ومتعددة المنصات وتدعم البرمجة الإجرائية والبرمجة الوظيفية والبرمجة كائنية التوجه كما تدعمها عدة محركات ألعاب مثل Open 3D و Solar 2d لذا تعد لغة مثالية لبرمجة الألعاب وتعديلها وتخصيصها بسرعة وسهولة. إضافة لذلك تتميز هذه اللغة بسهولة تعلمها حيث يمكن للأطفال تعلمها لبرمجة الألعاب الخاصة بهم، كما تستخدم في مجالات أخرى تتطلب السرعة والكفاءة مثل تطبيقات الويب وتحليل البيانات وبرمجة أنظمة الشبكات مثل CISCO و Nmap وغيرها. 8. لغة Swift تعد لغة البرمجة سويفت Swift من آبل لغة مثالية لتطوير الألعاب والتطبيقات التي تعمل على أنظمة ماك macOS وiOS وiPadOS وwatchOS وtvOS.وهي تتميز بكونها لغة برمجة حديثة سهلة التعلم والاستخدام وعالية الأداء وتوفر العديد من المكتبات الرسومية ثنائية وثلاثية الأبعاد مثل SpriteKit وSceneKit و GameplayKit التي تمكن المطورين من إضافة رسومات عالية الجودة وهذا يجعلها لغة مثالية لبرمجة الألعاب الكبيرة والمعقدة. من محدوديات لغة سويفت Swift أنها تقتصر على منصات آبل Apple ولا تمكنك من تطوير ألعاب تعمل على منصات أخرى لكنها تفوقت برغم حداثتها على لغة Objective-C المستخدمة أيضًا في تطوير تطبيقات لأنظمة تشغيل آبل وفاقتها في السرعة والأداء. ومن أشهر الألعاب المطورة باستخدام Swift نذكر Crossy Road و Flappy Bird و 2048. كيف تختار أفضل لغة برمجة لتطوير الألعاب؟ كما شرحنا سابقًا هناك العديد من لغات البرمجة المختلفة التي يمكنك استخدامها لتطوير الألعاب ومن أجل اختيار اللغة التي تناسب احتياجاتك عليك في البداية أن تحدد متطلباتك وهدفك من تعلم تطوير الألعاب بدقة ثم تختار بناء على ذلك لغة البرمجة الأنسب لتحقيق هذا الهدف. حيث يعتمد اختيار لغة برمجة الألعاب على طبيعة اللعبة التي تريد تطويرها، فإذا كان هدفك تطوير لعبة بسيطة ثنائية أو ثلاثية الأبعاد، فيمكنك في هذه الحالة استخدام لغة البرمجة بايثون Python أو لغة جافا سكريبت JavaScript أو لوا Lua. وإذا كان هدفك تطوير لعبة احترافية عالية الأداء تتضمن عمليات محاكاة معقدة وتتطلب قدرًا كبيرًا من الذاكرة فستحتاج حينها إلى الاعتماد على أحد محركات الألعاب التي تسهل لك العمل كما ذكرنا سابقًا وحينها ستكون مقيدًا باستخدام إحدى لغات البرمجة التي يدعمها هذا المحرك، فلكل محرك ألعاب مجموعة لغات برمجة محددة يمكنه التعامل معها، على سبيل المثال يمكن أن تستخدم لغة C++ أو لغة برمجة مرئية تسمى Blueprints مع محرك الألعاب Unreal Engine أو تستخدم لغة البرمجة C# أو لغة برمجة مرئية تسمى Bolt مع محرك ألعاب يونتي Unity. كما أن تحديد المنصة التي تستهدفها لعبتك قد يساعدك في تحديد لغة البرمجة الأفضل، فإذا كنت ترغب في إنشاء ألعاب تعمل على الحواسيب المكتبية سيكون من المناسب لك استخدام لغة C++ أو بايثون أو جافا، وفي حال كان هدفك تطوير لعبة تعمل على أنظمة أندرويد Android ففي هذه الحالة تعد لغة جافا خيارًا مناسبًا، أما إن كنت تنوي تطوير ألعاب لأنظمة iOS فعليك حينها اختيار لغة Swift، وفي حال كان هدفك هو برمجة ألعاب الويب فاستخدم لغة جافا سكريبت JavaScript أو بايثون Python. الخلاصة تعرفنا في مقال اليوم على أفضل لغات برمجة الألعاب الإلكترونية، ومميزات كل لغة من بينها، وأبرز الألعاب المطورة باستخدامها، ووضحنا في ختام المقال أن اختيار لغة برمجة لعبة يعتمد على عدة عوامل من بينها المنصة التي تستهدفها اللعبة ومدى تعقيدها ومستوى صعوبتها ونوعها، لذا قبل أن تحدد اللغة التي سوف تستخدمها في تطوير لعبتك حدد كافة متطلبات اللعبة بشكل دقيق ثم اختر اللغة الأنسب لتلبية هذه المتطلبات. اقرأ أيضًا مطور الألعاب: من هو وما هي مهامه كيف تحصل على أفكار ألعاب فيديو ناجحة برمجة لعبة متاهة باستخدام محرك يونيتي Unity برمجة لعبة تفاعلية باستخدام سكراتش نبذة عن صناعة الألعاب ومحرك Unity3D1 نقطة
-
التجريد – Abstraction نعلم أنَّ الصنف المُشتَق يأخذ خاصياته من الصنف الأب لكن الصنف المُشتَق مستقل تمامًا عن الصنف الأب؛ وقد يكون في بعض الأحيان من الجيد أن نرسم خطوطًا عريضة لآلية سلوك الصنف الابن، وهذه هي مهمة الأصناف والدوال المجردة. إذ أنَّ الصنف المجرد يحتوي على دوال غير مكتملة (أي مجردة) التي يجب أن يملأها الابن لكي يكون صنفًا وعدا ذلك سيكون صنفًا مجردًا أيضًا. بكلامٍ آخر، الصنف المُجرَّد (Abstract Class) هو صنف يحتوي على أسماء دوال دون كتابة الشيفرات المسؤولة عن عملها وتسمى تلك الدوال بالدوال المجردة، وقد يحتوي أيضًا على دوال كاملة اعتيادية تؤدي وظيفتها تمامًا. انظر إلى المثال الآتي لمزيدٍ من الإيضاح: <?php // تعريف صنف مجرد abstract class AbsClass { function __construct() { echo "this is an abstract class <br>"; } // دالة مجردة abstract public function abs_function(); function full_function() { echo "this is not an abstract function <br>"; } } class SubClass extends AbsClass { function __construct() { echo "this is child class <br>"; parent::full_function(); } // تعريف الدالة المجردة public function abs_function() { echo "this is completed abstract function <br>"; } } $obj = new SubClass(); $obj->abs_function(); ?> نستعمل الأصناف المجردة عندما يلزمنا إنشاء طريقة محددة للتعامل مع عدِّة أصناف مُشتقَّة، التي قد تتشارك ببعض الوظائف. ملاحظة: لا يمكن إنشاء كائن من صنف مجرد، حيث لا يمكن إلا اشتقاق تلك الأصناف. يستعمل الصنف المجرد لتقييد عمل الصنف الابن. الواجهات interfaces من بين الحالات التي نستعمل فيها الواجهات (interfaces) هي عندما نريد تطبيق التعددية الشكلية أي أن تكون طريقة تعاملنا متشابهة مع عدِّة أصناف. الواجهة هي مجموعة من الدوال المجردة أي أنك تعرف اسم الدالة مع المعاملات التي تقبلها لكن دون تحديد طريقة عمل الدالة، ويمكن للصنف أن يستعمل أكثر من واجهة، لكن يجب أن يعيد تعريف كل الدوال الموجودة في تلك الواجهة، انظر إلى المثال الآتي لأخذ فكرة عن الواجهات: <?php // تعريف واجهة interface MyInterface { // abstract functions // all must be public public function display(); public function another($argument); } // واجهة أخرى interface AnotherInterface { public function complete_it(); public function one_more(); } class Parent { function parent_fun() { echo "parent function"; } } // صنف يشتق صنفًا آخر ويستعمل واجهة class Demo extends Parent implements MyInterface, AnotherInterface { public function display() { echo "display complete"; } public function another($argument) { #code } public function complete_it() { #code } public function one_more() { #code } } ?> نستعمل الواجهات عندما نريد إنشاء طريقة موحدة للتعامل مع عدِّة أصناف، فمثلًا، نُنشِئ واجهة اسمها Database فيها دوال مجردة مثل select و insert وغيرها، ثم نستعمل تلك الواجهة في صنف MySQL وفي صنف SQLite، ونعيد تعريف الدوال الموجودة في الواجهة بما يلائم طريقة عمل كل نوع من أنواع قواعد البيانات. وبهذه الطريقة نستطيع أن نستعمل قواعد بيانات MySQL أو SQLite بنفس الآلية تمامًا. ملاحظة: يجب أن تكون جميع الدوال داخل الواجهة عامةً، يمكن أن يرث صنفٌ ما صنفًا آخر ويستعمل واجهة بنفس الوقت، لكن يجب أن يكون تعريف الاشتقاق قبل الواجهات. السمات Traits قدم الإصدار 5.4.0 من PHP ميزة السّمات Traits، وهي طريقة تسمح بإعادة استعمال الشيفرات في اللغات التي لا تسمح بالوراثة المتعددة، وهي تقلل من المحدوديات الناتجة عن عدم السماح بالوراثة المتعددة عن طريق إتاحة استعمال مجموعة من الدوال في عدة أصناف. أي لو كانت عندك مجموعة من الدوال العامة، وترغب في مشاركتها بين أكثر من صنف، فضعها في Trait ثم استعملها (use) في تلك الأصناف. يُعرف Trait عبر ذكر الكلمة المحجوزة trait متبوعةً باسمه، ثم تُعرَّف الدوال داخله. وتُستعمل الكلمة use عند تعريف صنف يستعمل Trait معين كما في المثال الآتي: <?php trait HelloWorld { public function sayHello() { echo 'Hello World!'; } } class World { use HelloWorld; } $obj = new World(); $obj->sayHello(); // ستُطبع عبارة Hello World! ?> يمكن إعادة تعريف الدوال داخل الأصناف التي تستعمل Trait معيّن، كما في المثال الآتي: <?php trait HelloWorld { public function sayHello() { echo 'Hello World!'; } } class World { use HelloWorld; } class NewWorld { use HelloWorld; public function sayHello() { echo 'Hello Universe!'; } } $obj1 = new World(); $obj1->sayHello(); // ستُطبع عبارة Hello World! $obj2 = new NewWorld(); $obj2->sayHello(); // ستُطبع عبارة Hello Universe! ?> يمكن استعمال أكثر من Trait في نفس الصنف عبر ذكر أسمائهم في عبارة use مفصولًا بينهم بفاصلة، لاحظ أنه إذا عُرِّفَت دالتين بنفس الاسم في أكثر من Trait، ثم استعملناها في صنف، فسيحدث تضارب وتظهر رسالة خطأ fetal error، ويمكنك حل مشكلة التضارب في الأسماء عبر استعمال المعامل insteadof أو عبر as كما في المثال الآتي: <?php trait A { public function smallTalk() { echo 'a'; } public function bigTalk() { echo 'A'; } } trait B { public function smallTalk() { echo 'b'; } public function bigTalk() { echo 'B'; } } class Talker { // لدينا في A و B دالتين اسمهما bigTalk و smallTalk // ما يلي سيجعل الصنف يستعمل الدالة smallTalk من B عوضًا عن مثيلتها في A // و bigTalk من A عوضًا عن B use A, B { B::smallTalk insteadof A; A::bigTalk insteadof B; } } class Aliased_Talker { use A, B { B::smallTalk insteadof A; A::bigTalk insteadof B; // لاحظ كيف استعملنا as لتغير اسم الدالة في الصنف B::bigTalk as talk; } } ?> مصادر مقالة Abstraction and Interface in PHP لصاحبها Harish Kumar فصل Objects في كتاب Practical PHP Programming فصل البرمجة غرضية التوجه في كتاب تعلم البرمجة بلغة PHP صفحات Object Interfaces و Traits في دليل PHP وغيرها.1 نقطة