وسام البهنسي

مدونة مبرمج معماري

ثوم وبصل وأمور أخرى لم تعد مهمة

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

فقط انظر يا سيدي الكريم إلى توزيع أرباح صناعة الألعاب في العالم هذا اليوم.. 50% يحتله سوق الموبايلات، و 40% مشتركة بين ليج أوف ليجيندس والكود. تبقى 10% لكافة الألعاب المتبقية.. كبيرها وصغيرها. إذن نحن نتحدث عما لا يزيد عن 1% ربما موزعة على كل الألعاب المستقلة، حيث الغلبة للكثرة.. الكثرة التي تغرق اللاعب بمئات الألعاب يومياً مما يفقده أي تقدير لتلك الألعاب. والمطور الناجح اليوم هو من يتمكن من جعل لعبته تنتشر "فيروسياً" بين أوساط الناس.. وليكن ذلك بأية وسيلة كانت بغض النظر عن المتعة أو أية قيمة فكرية. وقد كانت الحواجز المالية الملازمة لطباعة الألعاب وتعليبها وتوزيعها في المحلات تقف بالمرصاد لمحاولات التطوير الهزلية، لكن الزمن يتغير والمتاجر الإلكترونية جاءت لتقضي تدريجياً على مبيع الألعاب الملموسة. ويزيد الطين بلة استغلال هذه الظاهرة من قبل مطوري محركات الألعاب وتوجيه محركاتهم لتخفض الحواجز التقنية أكثر وأكثر أمام المستخدم البسيط. وطبعاً على الطريقة الأمريكية يجب أن يأتي أحدهم ويرمي مصطلحاً متعجرفاً ليسوق به هذا التوجه ويجعل منه رسالة سامية، وليكن هذا المصطلح هو شعبوية تطوير الألعاب (democratization)، وهو مصطلح لم أفلح البتة بإتقان لفظه.

والنتيجة؟ أصبحت برمجة الألعاب الأصلية (native programming) فناً منسياً لا يعرف أسراره سوى ثلة صغيرة من الأشخاص الذين يتخذون أماكنهم في شركات إنتاج الألعاب الكبيرة أو شركات تطوير المحركات المعدودة. أما مبرمج الألعاب بمعايير اليوم فإنه يطرح لعبته على 900 منصة دون أن يعرف أية تفاصيل عنها، ثم يستغرب إن لم تعمل لعبته بسرعة على بعض هذه المنصات. يطرح لعبته على ال PS4 أو ال XBoxOne وهو لا يعرف إن كان من الأفضل وضع تلك الكتلة من الذاكرة على ناقل البصل (onion) أم ناقل الثوم (garlic) للحصول على أفضل أداء(*). إذا كنا نسمي هؤلاء مبرمجين، فلا أعرف صراحة ماذا نسمي أمثال توم فورسايث وبروس داوسون ممن يستطيعون برمجة لعبة من تعليمة أسمبلي وحتى آخر سطر كود في المشروع. ربما سيذكرهم التاريخ بعد بضعة سنوات كأناس جاؤوا من أطلانطس!

وكي لا يبقى كلامي نظرياً، أخبرك عن لقائي منذ بضعة أشهر مع وولف جانج إنجل محرر سلسلة شيدر إكس و GPUPro العتيدتين عبر ما يزيد عن 15 سنة متتالية، وقد صارحني بأنه لم يعد يجد جدوى من إصدار هذه الكتب لأن من يقرؤونها أصبحوا يعدّون على الأصابع هذه الأيام... هذا الوضع هو الذي أفرز مغامرة كيجي إينافوني الفاشلة التي جلبت الصداع للكثير من صناع الألعاب المستقلين، وهي مثال يستحق التدبر. ولعل كيجي الآن يصارع سيرجي تيتوف أفّاق تطوير الألعاب الشهير على من ينتج أسوأ لعبة في التاريخ.

تسألني لم كل هذا الكلام السلبي والمتشائم؟ قلت لك أني كبرت!

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

لست معجباً أبداً...

 

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

التعليقات (2) -

  • mohammad

    23/11/2017 06:27:14 م | الرد

    احترامنا سيد وسام، عندي ملاحظة صغيرة عن التدوينة لو سمحت...
    وانت عم تنتقد محركات الألعاب بانها السبب بمشاكل التسويق ما عليه اي جدال وانها سمحت لكل من هب ودب يشتغل تطوير العاب صحيح تماما.. بس كلامك مفهوم منو انو محركات الألعاب صارت ادوات للناس الي بتدعي انها مبرمجين مو منطقي ابدا.. طبعا في ناس جديدة عالمجال عم تستخدم محركات الألعاب بس كل مطور العاب بغض النظر عن خبرته بيستخدم محرك العاب كمان...
    هاد الحكي مثلا:  "إذا كنا نسمي هؤلاء مبرمجين، فلا أعرف صراحة ماذا نسمي أمثال توم فورسايث وبروس داوسون ممن يستطيعون برمجة لعبة من تعليمة أسمبلي وحتى آخر سطر كود في المشروع. ربما سيذكرهم التاريخ بعد بضعة سنوات كأناس جاؤوا من أطلانطس!"
    فيه تغييب لمفهومين ال abstraction و don't reinvent the wheel.. طبعا يلي بيستخدم محرك الألعاب "بشكل صحيح" بكون مبرمج (عم نحكي هون عن المحركات القابلة للبرمجة او عالأقل لل scripting مو مثل game maker طبعا)... بس بكون مبرمج ألعاب متلو متل مبرمج التطبيقات يلي بيستخم جافا او .net ليعمل تطبيقات crossplatform.. التنين عم يستفيدو من أدوات موجودة صممها مبرمجين النظم system programmers... فهل صحيح انو نقول انو المبرمج الي ما بيكتب برنامجو بال assembly هو مو مبرمج! حضرتك ما استخدمت محرك ألعاب لتطوير hyper void!؟
    حتى DirectX الهدف من وجودها هو ان يستخدمها المبرمج لحتى ما يفوت بقصص الهاردوير وتصاميم المعالجات.. البرمجة عم تتطور ومع هادا التطور عم تكتر الاختصاصات..
    أرجو منك الرد لأن رأيك بالموضوع جدا مهم بالنسبة الي...

    • وسام البهنسي

      22/04/2019 09:25:30 م | الرد

      شكراً محمد على التعليق. وها أنا أرد بعد سنتين من رسالتك مما يبين لك كم أنا أخرق بأبسط أساسيات التدوين. على كل، أنا أتفهم وجهة نظرك طبعاً. لكنك ركزت على المثال الذي طرحته أنا على سبيل المبالغة وتركت المهارة الفعلية التي أسميتها أنا "البرمجة الأصلية"، وهي ليست البرمجة بلغة التجميع، لكن أن تكون لك قدرة كبيرة على تسيير الآلة كما تريد أنت لا كما يريد غيرك. وهي تعني ضمنياً أنك فعلاً تعرف ماذا تكتب وما هي كلفته وكيف يتم تنفيذه على العتاد المستهدف، بدلاً من افتراض أن "كل شيء على ما يرام".
      برمجيات الألعاب تتميز عن الكثير من البرمجيات الأخرى بحساسيتها للأداء ومحدودية العتاد المستهدف. المحركات التجارية كتبها أشخاص يتوقعون أن تستخدمها بشكل معين. لو خرجت عن التوقعات فستقع في ورطة ولن ينجدك أي مقدار من ال scripting لأن الحدود مرسومة مسبقاً. المخرج الوحيد عندها هو تعديل المحرك باستخدام البرمجة الأصلية، وهذا ما يتميز به أنريل عن يونيتي، حيث يضع الأخير طبقة سميكة صعبة الاختراق بين المبرمج والنظم المختلفة التي يشغلها المحرك.
      ذكرت أنني استخدمت محركاً للعبة هايبر فويد، وهذا مؤكد. لكنه محرك يبسط العمليات ولا يمنعك من الدخول في التفاصيل وقتما تشاء. هايبر فويد كتبت بالسي بلس بلس ولم تستخدم أي نظام استبعاد للمجسمات (scene culling) لأن كافة مجسماتها دائماً تظهر على الشاشة. بالمقابل، في يونيتي تدفع ما لا يقل عن 3 ميللي ثانية لحسابات الاستبعاد في بداية كل لقطة مهما فعلت، حتى وإن كنت تعلم مسبقاً إن كانت كل مجسماتك ظاهرة أو مخفية.. والآن قارن هذه الثلاثة ميللي ثانية مع الوقت المسموح لهايبر فويد عندما تعمل على الواقع الافتراضي بتردد 120 لقطة بالثانية طبيعية. هذا يعني أن لديك فقط 8 ميللي ثانية لكل لقطة. هل تقبل أن تبدد منها 3 ميللي ثانية على حسابات بدون طائل؟
      هل يستطيع شخص لا يعلم البرمجة بطريقة صحيحة أن يكتشف هذه المشكلة قبل أن يبحث لها عن حل؟ برأيي بدون هذه المهارات فإن المحرك هو ما سيقولب المستخدم بدلاً من العكس. أي بعبارة أخرى المحرك يبرمج مستخدمه بدلاً من أن المستخدم هو من يبرمج المحرك.

أضف تعليقاً

Loading