المقالات العلمية

مقالات الشبكة العربية لمطوري الألعاب

أنا و OpenGL

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

تضمن الشبكة العربية لمطوري الألعاب أن هذه الترجمة هي ترجمة أمينة لا تمسّ محتوى وأفكار المقالة الأصلية بأي تغيير، مع التنويه إلى أنه قد توجد بعض العبارات التي أعيدت صياغتها لتناسب اللغة العربية السليمة.

يمكنك قراءة المقالة الأصلية باللغة الإنجليزية هنا...


مقدمة

Direct3D و OpenGL والحرب المستعرة بينهما لإثبات أيهما الأقوى والأفضل والأسهل استخداماً و... إلخ في خضم هذه المعركة يحدثنا السيد كريستوفر براين هاكر Christopher Bryan Hecker عن تجربته في هذا الموضع ويقول :


أنا و OpenGL

لقد كنت عاطفياً جداً في ما يتعلق بمكتبة رسوميات http://www.opengl.org OpenGL API، وقد أمضيتُ الكثير من وقتي وأنا أعمل لأجعل OpenGL يحقق نجاحا ً في ألعاب الكمبيوتر. ومازلت أستخدمه بانتظام وأعتقد أن واجهة البرمجة التطبيقية (API) له مصممة بشكل جيد، وحتماً البرمجة به ألطف من البرمجة بـ Direct3D، حتى بعد كل هذه السنوات من الإصدارات والتحديثات، ولكن الحماسة قد خرجت عن الموضوع بالنسبة لي. Direct3D ربح الحرب، وشركة SGI مبدئياً قد ماتت، و OpenGL Architecture Review Board (مجلس مراجعة البنية المعمارية لـ OpenGL) غالباً ما يعتمد على ردة الفعل بدلاً من أخذ المبادرة. كما أن لِـ Direct3D منهج مستقر وناضج يقود ميزاته في كل جيل.

OpenGL مازال لديه بعض الامتيازات، مثل الـ vendor extensions (توسعات المصــنــِّــع) التي تسمح لـ IHVs -Idependent Hardware Vendor- أو (مصنع الأجهزة المستقل) بتقديم مزايا مخصصة بشكل معياري، والواجهة البرمجية اللطيفة، وأيضاً فهو يعتبر (Cross-platform) ويعني هذا الاصطلاح أنه يمكنه العمل على عدة أنظمة تشغيل مختلفة. ولكن، هناك أجزاء من الـ OpenGL API هي حقيقةً غير جديرة بالثقة في الاستخدام، وعلى المرء أن يعترف، فقد فعلها الـ Xbox... فحالياً Direct3D يعتبر Cross-platform مفيد جداً...

فبالتالي إذا أردت أن تقوم بتطوير لعبة 3D على الكمبيوتر وكنت تريد أن تحصل على أداء مستقر بأحدث مزايا الـ 3D فعليك أن تستخدم... حسناً في الحقيقة لا يوجد هناك ما يقدم لك ذلك حالياً. نعم فبعد 10 سنوات من الجهد، ما زال وضع رسوم الـ 3D على الحاسب مثيراً للضحك. فتستطيع بدون بذل جهد أن تجد أخطاء فادحة في تعريف كرت الشاشة للـ 3D في غضون دقائق من الجلوس وكتابة كود بالـ API، وهذا شيء مثير للشفقة.

ولكن، النصيحة هنا، إذا أردت فرصة أفضل ليتمكن كودك البرمجي من العمل باستخدام "أحدث الميزات" (لنقول العديد من عمليات الإكساء والتخريج والإظهار)، وأنت لاتريد أن تخوض معركة مع الناشر، فمن الأفضل أن تستخدم Direct3D. وإذا كنت تريد فقط أن تستخدم مجموعة آمنة من المزايا الفرعية التي تتخلف عن أحدث الميزات بسنة أو نحو ذلك، وتريد أن تكسب خبرة وتجربة برمجية ممتعة، فعليك باستخدام OpenGL.

ولسخرية الأقدار، فإن تهافت سوق الرسوميات ثلاثية الأبعاد نحو NVidia و ATI و Intel قد ساعد بالفعل على أن يكون OpenGL قادراً على المنافسة، فقد كان المصنعين يميلون إلى تحديث تعاريفهم لكروت الشاشة الخاصة بـ OpenGL في كثير من الأحيان كما هو الحال كذلك لتعاريف Direct3D. بالرغم من ذلك، فإن فرصة OpenGL للـ"فــوز" قد وَلـّـت منذ زمن. فـ Direct3D هو ببساطة واجهة تطبيق برمجية جيدة حالياً.

شخصياً، أنا أكتب كل من نماذجي والأدوات والألعاب المستقلة (indie games) باستخدام OpenGL، لأنه أكثر مرونة وكذلك ممتع. ويجب أن لا نقلل من قوة التحفيز التي تسببها المتعة أثناء البرمجة. والألعاب التي أعمل عليها لمعظم الشركات الكبرى تتم بإستخدام Direct3D. في آخر المطاف، لأغلب الألعاب، أي API تختار ليس مهما بالضرورة. فعلى كل حال هناك العديد من المشاكل الأكثر أهمية من الرسوميات الثلاثية الأبعاد والتي تحتاج أن تتعامل معها.


ماذا لو؟

يتحدث الناس من حين إلى آخر عن حال رسوم الحاسب ثلاثية الأبعاد لو لم يكن هناك Direct3D. بعض الناس يدّعون أنه بدون Direct3D، لكان OpenGL مازال عند الإصدار 1.0، ولما كان هناك أي إبتكار أو تحديث. وهذا قولٌ ساذج، على ما أعتقد. الشيء الذي حفز على الابتكار هو وجود سلعة جيدة من الأجهزه ثلاثية الأبعاد في السوق، وبدء خطوط إنتاج الشركات التي تصمم أجهزة SGI بإنتاج شرائح 3D رخيصة، ولم يكن لأي من Direct3D أو OpenGL أي دخل في أي قرارت اتخذت. إنما كان هو الوقت فقط. مايكروسوفت كان بإمكانها وبكل بساطة تبني OpenGL لتقديم واجهة برمجة تطبيقية API لهذا الجيل الجديد من الأجهزة، وأعتقد أن هذه الصناعة كانت لتكون أفضل كثيراً لأنها ستكون قد بدأت من تصميم جيد وصلب وثابت، عوضاً عن خمس سنوات من التكرار للوصول إلى API كان يعمل فعلياً.

عندما كنت في شركة مايكروسوفت، كنت أعتقد حقيقةً أن OpenGL يفتقر إلى ذاك التصميم الجيد كـ 3D API، ولكني كنت مخطئ. حقيقة عدم وجود برنامج ســريع لـ OpenGL لتقديم عرض وإخراج تعود لحدث تاريخي أكثر منه لسبب تصميمي، حيث أنها لم تكن تصل إلى تطلعاتنا نحن أناس رسوميات الألعاب في المفاهيم التي ينبغي أن تعمل بها الرسوميات ثلاثية الأبعاد. وقد قامت SGI بإطلاق برنامج OpenGL منافس فقط لمحاربة "الخوف وعدم اليقين والشك" وما يسمى بـ FUD. وبالطبع لم يعد هناك أحد على كل حال مهتم بأداء برامج العرض والإخراج، وحتى هذا الوقت، لا يريد أحد أن يستخدم API لبرامجهم الخاصة بالعرض والإخراج، فقط لأن هناك الكثير من حقول المعرفة يمكنك الاستفادة منها إذا قمت بفعل ذلك بنفسك، فبالتالي كانت المسألة كلها عبارة عن مضيعة للوقت.

وقد كان مؤلماً بالنسبة لي في ذلك الوقت، فقد كان الأمر بمثابة الأقلية التي تحرك الأكثرية، حتى الأشخاص العباقرة وذوي الخبرة والنوايا الحسنة مثل جون كارماك John Carmack كانوا يعطون نصائح خاطئة تماماً لشركات تصنيع رقائق أجهزة الرسوم ثلاثية الأبعاد عن الكيفية التي يجب أن تعمل بها هذه الأجهزة (بالمناسبة، كارماك يعترف بذلك بكل صراحة). وفي ذلك الوقت قامت شركة 3DFX بالتغريد خارج السرب وقامت بتجاهل كل مطوري الألعاب و Microsoft و Tarolli وآخرين، وصنعت بنية جديدة تعتمد على خبرتهم وتجربتهم في مجال SGI، وبذلك ضربت بالآخرين عرض الحائط. وقد ساهم انخفاض أسعار الذواكر في النجاح الكبير الذي حققته كروت الشاشة من نوع Voodoo... ولكننا نتحدث عن النموذج البرمجي هنا.

كان هناك بالتأكيد الكثير من التغيّرات التي كانت يجب أن تحدث على OpenGL لجعله سلعة ملائمة للأجهزة الموجودة، فالتطورات التي حدثت عليه منذ النسخة 1.0 كانت من الممكن أن تحدث دون كل الاضطرابات والبلبلة التي حدثت وجر الجميع نحو نسخة API سيئة ومحدودة المزايا ومكررة. فقد كانت مضيعة كبيرة لموراد الصناعة - موارد مايكروسوفت وموارد صناع الأجهزة المستقلين IHV، بل والأكثر أهمية، ضياع موارد الكثير من مطوري الألعاب - وكل ذلك مكّن ميكروسوفت من التحكم بشكل مطلق على API. وأنا لا ألومها على ذلك، ولكنني في الحقيقة ألوم مطوري الألعاب على هذا، ومن ضمنهم أنا.

لذلك، نعم، Direct3D أعطى دفعة لـ OpenGL لكي يتحسن حيث كان الناس في ذلك الوقت يجاهدون بفعل أي شيء لتمكين أجهزة الـ 3D من العمل، وكان Direct3D بمثابة الحل المنقذ لهم المقدم من مايكروسوفت. وكان جديراً بـ SGI أن تجد الحلول التي تبقيها في مقدمة منحى هذا التطور، وأن تعرف حلول مشاكل توافق أجهزة الرسوم ثلاثية الأبعاد بنفسها بدلاً من الاستنزاف الرجعي لمهندسيها في البدء من جديد في كل مرة، وفشل ذريع في آخر الأمر. ولكن، كلا، فـ Direct3D أيضاً سبب خسارة فادحة في هذه الصناعة في ما يخص استنزاف الموارد، وذلك بإضاعة حلّ بديل كان يتمثل بالبدء بـ OpenGL وفهم الطريقة التي صُمِّم بها ومن ثمَّ البدء من هناك.


نفحات من الماضي

وإليك بعض من المقالات القديمة عن OpenGL ومواضيع ذات صلة:

رسالة مفتوحة إلى مايكروسوفت: افعلوا الشيء الصحيح لصناعة الألعاب ثلاثية الأبعاد

هذه كانت أول مقالة قمت بكتابتها فيما يتعلق بهذا الموضوع. وهي مقالة على درجة عالية من التقنية عن أن تصميم OpenGL أفضل من تصميم Direct3D، وكان هذا فور فهمي لذلك. لكن حالياً فقد تغير الوضع، فكل شيء تقريباً عن Direct3D قد تغير منذ نشري لتلك المقالة. في ذلك الوقت عندما كتبت تلك المقالة، كان بإمكان مايكروسوفت التخلي عن Direct3D وتبني OpenGL وتطويره، وأعتقد أن هذه الصناعة كانت لتكون أفضل لو تم ذلك. ما أثار إحباطي أكثر من تصرف مايكروسوفت هذا كان تصرف مطوري الألعاب، فقد اكتفوا بالجلوس والتذمر دون فعل أي شيء، وكنت مؤمناً أنه إذا اتحدنا سوياً لكان بالإمكان أن نغير الوضع بين ليلة وضحاها. انظر أدناه.

كبار مطوري الألعاب يطلبون من مايكروسوفت أن تدعم OpenGL بشكل فعال

هذا هو البيان الصحفي المشؤوم لـ OpenGL، ويتضمن الرسالة المفتوحة إلى مايكروسوفت، وقد وقع عليها حوالي 50 من كبار مطوري الألعاب.

سلطة المطور والكلمة العليا

هذا الرابط للخطاب الذي ألقيته في مؤتمر مطوري ألعاب الكمبيوتر (CGDC) الذي أقيم في سياتل. وكان عن كيفية منع هذا النوع من الأشياء من الحدوث مجدداً.

GLSetup

لقد أمضيت بضع سنوات وأنا أعمل على مشروع يسمى GLSetup، والذي حاولت فيه القضاء على مشاكل تعريف كرت الشاشة بالنسبة لـ OpenGL.

أضف تعليقاً

Loading