السلام عليكم
في رأيي أن عدم قوة برمجة الألعاب في الوطن العربي هو الإندفاع وراء الشئ دون إتباع التفكير المنطقي حتى يكتمل بالفعل هذا الشي و يرى النور أو بمعنى أصح العرب لا يعرفون هدفهم جيدا و لا يجيدون التخطيط للمشروع. خذ عندك مثلا, الكل يقول أن برمجة الـ C++ صعبة. هل أنت أصلا عرفت ما هي البرمجة و ما هي فكرتها. إليك خلاصة دراستي و إتصالي مع عالم برمجة الألعاب, بل عالم البرمجة ككل.
برمجة الألعاب في الأصل هي تعتمد على إتقان عدة مراحل.
المرحلة الأولى (فهم و إتقان علم البرمجة): و تلك المرحلة تقوم على شقين هما:
الشق الأول (علم الخوازميات): بمعني أصح كيف تحول ما تراه في الطبيعة من ظواهر إلى أعداد حسابية مما يمكن التعامل معها و التحكم فيها. بعدها كل ما تراه من أي شئ في البرمجة إنما يتم عن طريق مكتبة.
الشق الثاني (فهم طبيعة ما ستتم برمجته): يجب أن تفهم جيدا أنك تبرمج آلة, و إنما برمجة الألة يقتضي باضرورة معرفة طبيعتها, فيجب أن تعرف أنه أي بيانات تظهر على الشاشة إنما يجب نقلها من المساحة التخزينية إلى الرامات و التي تكون على إتصال مع المعالج و الذي يقوم بمعالجة تلك الخوارزميات المتمثلة في المعطيات الرياضية و الدوال و الأوامر السابق إتمامها. ثم تخرج بعد ذلك تخرج هذه الشاشة إلى عدة مخارج تتمثل في:
مخرج الشاشة: و هي تعد المخرج الإفتراضي (بالنسبة لنا كمبرمجين ألعاب على الأقل) و ذلك في حالة كون البيانات مرئية.
مخرج الصوت: و هو في حالة كون البيانات صوتية, و هي تأتي في المرتبة الثانية بعد الشاشة و تعد ذا أهمية ثانوية.
مخرج المحاكيات الآلية: و هي في حالة كون البيانات حركية, و هو يندر وجودها في الألعاب العادية, و لكنها أصبحت سمة شديدة الإتصال بألعاب الأركيد.
هذا و يلاحظ على الشق الثاني أنك لا تملك أكثر من أن تقوم بإدراكه و فهمه, دون أن تكون مكلفا بمعرفة الأساس العلمي القائم عليه. و ذلك حتى إذا ما قيل لك في إحدى دورس البرمجة أن البيانات سوف تنتقل إلى الذاكرة, تكون مدركا لفكرة إنتقال البيانات إلى الذاكرة, و لكنك لست مطالبا بإثبات الأساس العلمي, و ينطبق هذا أيضا على المخرجات. الجدير بالذكر أن المخارج قد تزداد و تتطور يوما بعد يوم لدرجة أننا بدأنا نرى مخارج تتصل بحاسة الشم :)
المرحلة الثانية (برمجة بيئة البرمجة): و يقصد بذلك أن تقوم ببرمجة البيئة نفسها, فإذا كنت في بيئة الويندوز, فيجب أن تبرمج بيئة ويندوز, و إن كانت بيئة اللعبة هي بيئة لينكس, فيحب أن تبرمج بيئة لينكس...إلخ. و في تلك المرحلة ليس من المهم أن تعرف برمجة البيئة المستقبلة للتطبيقات بشكل كامل, و إنما خذ منا ما يكفيك لبرمجة التطبيقات.
المرحلة الثالثة (برمجة التطبيقات): و تلك المرحلة يصعب جدا الإنتقال إليها إلا بعد إتقان المرحلتين السابقتين و إلا ستفشل في إنتاج لعبة جيدة, و يقصد بها برمجة الرسوم و الصوت و الشبكات و الفيديو... إلخ, و التي إن أجتمعت تكون لنا عالم برمجة الألعاب, (و هي بوجه عام يصعب لدرجة تصل إلى المستحيل أن تجتمع لدى شخص واحد), و إن لم تجتمع أصبح لدى صاحبها التخصص في إحدى التطبيقات, هذا و إن إجتمع أصحاب تلك التخصصات فإنه يمكن أن تظهر لنا اللعبة, هذا ويعد التطبيق الأساسي لظهور اللعبة هو علم الرسوميات, أما الباقي فهو مجرد عمليات تحسين و إرتقاء بمستوى اللعبة, فاللعبة التي بها صوت أفضل بكثير من اللعبة التي بدون صوت, و اللعبة التي يمكن لعبها عن طريق الشبكات أفضل من اللعبة التي بدون شبكات. هذا, و لا يقف أي تطبيق عند حد معين و إنما هو في تطور مستمر.
و يلاحظ على جميع المراحل أمرين:
أولهما: أن المرحلة الأولى أنها تتم عن طريق لغة من لغات البرمجة, أما المرحلتين الثانية و الثالثة فتتم برمجتهما عن طريق مكتبات يتم ربطها بلغات البرمجة.
ثانيهما( فهم طبيعة ما ستتم برمجته): و قد تم إيضاحها مفصلة في المرحلة الأولى و ذلك لصغر حجمها. أما المرحلة الثانية فهي تقوم على الإحتكاك كثيرا ببيئة البرمجة. و المرحلة الثالثة تعتمد على الإحتكاك بالتطبيقات, فإذا كنت ستبرمج من أجل تطبيقات الجرافيك, فيجب أن تكون قد تعلمت إحدى برامج الجرافيك كي يسهل عليك بعد ذلك تتبع خطى مكتبة البرمجة الخاصة بالجرافيك, و كذلك الحال مع مكتبات الصوت و الفيديو و الصور و الشبكات...إلخ.
أتمنى أن تكون مقالتي أعجبتكم و أرشدت الكثيرين. كما أتمنى أن يقوم الأخ الشمري بدعمها بالوصلات المناسبة لكل مرحلة و تثبيتها.
و السلام ختام
