واجهة الرسومات العامة
كانت واجهة الرسومات العامة ( GGI ) مشروعًا يهدف إلى تطوير نظام رسومات حاسوبية موثوق ومستقر وسريع يعمل على جميع المنصات. [ 1 ] وكان الهدف هو تمكين أي برنامج يستخدم GGI من العمل على أي منصة حوسبة تدعمها، مع الحاجة في أقصى الأحوال إلى إعادة تجميع البرنامج . GGI برنامج مجاني ومفتوح المصدر ، ويخضع لمتطلبات ترخيص MIT .
من المسلّم به عموماً أن مشروع GGI، والمشاريع المرتبطة به مثل KGI، قد توقف. [ 2 ]
الأهداف
بدأ المشروع في الأصل لجعل عملية التبديل بين وحدات التحكم الافتراضية ومكتبة svgalib وأنظمة خادم عرض X الفرعية على نظام لينكس أكثر موثوقية. وكانت الأهداف كالتالي:
- إمكانية النقل من خلال واجهة برمجة تطبيقات مرنة وقابلة للتوسيع للتطبيقات. وهذا يمنع تضخم التطبيقات من خلال الحصول فقط على ما تستخدمه. [ 3 ]
- إمكانية النقل عبر المنصات وفي الأنظمة الخلفية
- الأمن بمعنى طلب أقل عدد ممكن من الامتيازات
يُنفَّذ إطار عمل GGI بواسطة مجموعة من مكتبات مساحة المستخدم المحمولة ، مع مجموعة متنوعة من الواجهات الخلفية أو الأهداف (مثل إطار عرض Linux ، وX11 ، وQuartz ، وDirectX )، وأهمها مكتبتان أساسيتان هما LibGII (لمعالجة المدخلات) وLibGGI (للإخراج الرسومي). تُضيف جميع الحزم الأخرى ميزات إلى هاتين المكتبتين الأساسيتين، وبالتالي تعتمد على إحداهما أو كلتيهما.
تتواصل بعض الأهداف مع أهداف أخرى، وتُسمى هذه الأهداف بالأهداف الوهمية. ويمكن دمج الأهداف الوهمية لتعمل كخط أنابيب.
مثال على ذلك: برنامج display-palemu، على سبيل المثال، يحاكي وضع لوحة الألوان في أوضاع الألوان الحقيقية. يتيح هذا للمستخدمين تشغيل التطبيقات في وضع لوحة الألوان حتى على الأجهزة التي لا يتوفر فيها هذا الوضع عادةً. أما برنامج display-tile فيقسم الشاشة الافتراضية الكبيرة إلى أجزاء أصغر. يمكنك توزيع هذه الأجزاء على شاشات متعددة أو حتى إعادة توجيهها عبر الشبكة.
تاريخ
أسس أندرياس بيك وستيفن سيجر مشروع GGI في عام 1994 بعد بعض التجارب الأولية التي أطلق عليها اسم "scrdrv". [ 4 ]
كان الدافع وراء تطوير برنامج scrdrv هو المشاكل الناجمة عن وجود بيئات رسومية متزامنة ولكنها غير متوافقة بشكل جيد (وخاصةً X و SVGAlib ) ضمن نظام التشغيل لينكس في ذلك الوقت، مما كان يؤدي في كثير من الأحيان إلى توقف النظام عن العمل ويتطلب إعادة تشغيله. تأثر التصميم الأولي لبرنامج scrdrv بشكل كبير بنظام الرسوميات الفرعي الخاص بموسع DJ DOS وبعض المفاهيم من مشروع SANE . تمثلت المشكلة الأساسية التي حلها برنامج scrdrv في توفيره برنامج تشغيل يعمل في وضع النواة، ويتمتع بمعرفة كافية بأجهزة الفيديو لضبط الأوضاع، مما يسمح بالعودة إلى حالة النظام السليمة حتى في حالة وجود خلل أو تعطل في تطبيق الرسوميات.
ظهرت النسخة الرسمية الأولى عام ١٩٩٥. وفي عام ١٩٩٦ تقريبًا، صدرت GGI 1.0 بموجب ترخيص LGPL. كانت GGI تتألف فقط من المكتبة الأساسية المسماة libggi . تضمنت هذه المكتبة معالجة المدخلات، ومجموعة من العناصر الرسومية ثنائية الأبعاد، وبعض برامج تشغيل مساحة المستخدم لبطاقات الرسومات، بالإضافة إلى رقعة نواة لينكس تحتوي على واجهة مساحة المستخدم لبرامج التشغيل. عُرفت هذه الرقعة باسم KGI، أي واجهة رسومات النواة.
في عام 1997، خضعت GGI لإعادة تصميم كاملة. وقد ساهمت العديد من الأفكار الجديدة وقرار من لينكس في جعل GGI على ما هي عليه في GGI 2.0 التي صدرت في أغسطس 2001 بموجب ترخيص MIT.
تم تقديم مجموعة من المحاضرات حول GGI و KGI و EvStack في معرض LinuxExpo 98.
في الإصدار 2.0 من GGI، تم فصل KGI ليصبح مشروعًا مستقلاً باسم مشروع KGI . تألف GGI 2.0 من مجموعة من المكتبات. خلال المرحلة التجريبية للإصدار 2.0 في أواخر عام 1998، تم تغيير ترخيص المكتبات من LGPL إلى ترخيص مشابه لترخيص MIT. كما تم تطوير نظام البناء بشكل كبير لدعم المزيد من أنظمة التشغيل، حيث عمل على FreeBSD، وتضمن شفرة برمجية لأنظمة OpenBSD وNetBSD وحتى Microsoft Windows ، بالإضافة إلى دعم لبعض منصات الأجهزة الأخرى.
نُقلت معالجة المدخلات إلى مكتبة تُسمى libgii. وُضع كود GGI العام في libgg، وهي مكتبة فرعية ضمن libgii. تحتوي مكتبة الرسومات الأساسية، libggi، على مجموعة بسيطة من العناصر الرسومية الأساسية الشائعة بما يكفي لكتابة أي نوع من تطبيقات الرسومات، بينما وُضعت واجهات برمجة التطبيقات (APIs) عالية المستوى في مكتبات أخرى مبنية على libggi. سُميت هذه المكتبات بامتدادات GGI. تدعم libggi مجموعة من الأهداف، معظمها خاص بنظام Linux: fbdev وX وaa وvcsa و terminfo ، بالإضافة إلى بعض الأهداف الوهمية مثل tile وmulti وpalemu وtrueemu. تميزت امتدادات GGI بواجهات برمجة تطبيقات عالية المستوى. توفر libggiwmh وظائف للأهداف التي تعمل بنظام النوافذ فقط، وكان هذا متاحًا في ذلك الوقت لنظام X فقط. وفرت libggimisc بعض الوظائف الأساسية مثل تقسيم الشاشة باستخدام VGA.
صدرت النسخة 2.0.2 من GGI في ديسمبر 2002. وكان أبرز تغيير ملحوظ للمستخدمين هو إعادة تصميم واجهة X الخلفية بالكامل. كما شهدنا تحسينًا كبيرًا في التوثيق. وأخيرًا، تغيرت دورات الإصدار. فمنذ هذا الإصدار، أصبح لدينا فرعان: فرع التطوير وفرع الاستقرار. فرع الاستقرار مخصص لإصلاح الأخطاء فقط، أما فرع التطوير فقد سُمّي، وفقًا لنظام BSD، بـ "-current".
يعمل GGI 2.1.x على العديد من أنظمة التشغيل: GNU Hurd ، وLinux ، و*BSD ، و System V ، و Mac OS X ، وMicrosoft Windows. وقد أُضيفت إليه دعم لمنصات أجهزة إضافية. حتى أن NetBSD أنشأت حزمة ثنائية لنظام NetBSD/Vax! كما أُضيفت مكتبة GGI جديدة مبنية على libgii تُسمى libgiigic، والتي تُمكّن من دمج إجراءات المستخدم مع الأحداث أثناء التشغيل.
صدرت النسخة 2.2 من GGI في ديسمبر 2005. أُعيد تصميم آلية الكشف التلقائي عن الهدف، ولم تعد مقتصرة على نظام لينكس. استبدلت GGI أنواع بياناتها العددية بأنواع ANSI C99 لزيادة قابلية النقل. أُضيف هدف لـ Quartz. لم يعد مستخدمو نظام Mac OS X يعتمدون على X11، ولكن لا يزال بإمكانهم استخدام واجهة X11 الخلفية. مع ذلك، كان التغيير الأبرز للمستخدمين هو دعم الأهداف المرتبطة الثابتة.
أحدث إصدار هو GGI 2.2.2، وهو إصدار لتصحيح الأخطاء ضمن سلسلة GGI 2.2.x المستقرة. وقد صدر في يناير 2007.
التبني
تم نقل نسخ المصدر لألعاب التصويب من منظور الشخص الأول ، مثل Doom و Heretic و Quake و Descent ، لاستخدام GGI، [ 5 ] [ 6 ] كما تم بناء محرر Doom لنظام Linux عليه أيضًا. [ 7 ] ودعمته أيضًا لعبة Heroes ذات الطابع الأركيد ، [ 8 ] وهي لعبة ثعبان ، ولعبة Thrust المستوحاة من لعبة Thrust لجهاز Commodore 64 ، [ 9 ] بالإضافة إلى ألعاب المنصات U.RBAN The Cyborg Project [ 10 ] و Dave Gnukem ، [ 11 ] المستوحاة من لعبة Duke Nukem الأصلية لنظام MS-DOS . وكان GGI متاحًا أيضًا كبرنامج تشغيل فيديو ضمن طبقة Simple DirectMedia Layer حتى الإصدار 2x. [ 12 ]
انظر أيضاً
مراجع
- ↑ شركة لوكي للبرمجيات؛ جون ر. هول (2001). برمجة ألعاب لينكس . دار نشر نو ستارش. ص 56. ISBN 978-1-886411-49-4.
- ↑ لارابيل، مايكل (3 يوليو 2011). "واجهة الرسومات الخاصة بنواة النظام (KGI) قد انتهت فعليًا - فورونيكس" . www.phoronix.com . تاريخ الاسترجاع: 8 يونيو 2019 .
- ↑ "قابلية النقل من خلال واجهة برمجة تطبيقات مرنة: دور واجهة الرسومات العامة (GGI) في تمكين تطبيقات الرسومات المحمولة والآمنة" . DEV . 2025-08-20 . تم الاسترجاع في 2025-08-20 .
- ↑ بيك، أندرياس (1996-11-01). "مشروع لينكس-جي جي آي" . مجلة لينكس . تم الاسترجاع في 2023-12-20 .
- ↑ "البرمجيات التي تستخدم GGI" . ibiblio . تم الاطلاع عليه بتاريخ 20-12-2023 .
- ↑ بيك، أندرياس (1998-09-01). "LibGGI: واجهة برمجة تطبيقات رسومية أخرى" . مجلة لينكس . تم الاطلاع عليه بتاريخ 2023-12-20 .
- ↑ أمستوتز، بيتر (9 أغسطس 2002). "LDE - محرر دوم لنظام لينكس" . إنتررياليتي . تم الاسترجاع في 23 يناير 2024 .
- ↑ دوريه-لوتز، ألكسندر (نوفمبر 2000). "الإعلان عن Heroes 0.7" . طبقة الوسائط المباشرة البسيطة .
- ↑ باين، دينيس (19-09-2021). "انفجار القصور الذاتي" . برنامج متطابق . تم الاسترجاع في 21-01-2024 .
- ↑ ويلسون، هاميش (12 مارس 2024). "بناء حاسوب ألعاب لينكس كلاسيكي - الجزء 40: مشروع سايبورغ" . GamingOnLinux . تاريخ الاسترجاع: 13 مارس 2024 .
- ↑ "إعلانات البرامج" . أخبار لينكس الأسبوعية . 6 يناير 2000. تاريخ الاسترجاع: 21 يناير 2024 .
- ↑ "الأسئلة الشائعة: استخدام SDL" . wiki.libsdl.org .
- قائمة الأسئلة الشائعة لمشروع GGI، مؤرشفة بتاريخ 9 يوليو 2006 على موقع Wayback Machine.
- أخبار لينكس الأسبوعية - 26 فبراير 1998، قسم: النواة
- مشروع GGI غير راضٍ عن نظام لينكس
- صفحات كريستوفر براون على الويب: نظام النوافذ X، 15. GGI - واجهة رسومية عامة
- بيتر أمستوتز: نظرة عامة على مشروع GGI 1998
- مشروع Linux-GGI مؤرشف بتاريخ 3 نوفمبر 2006 على موقع Wayback Machine. مقال من مجلة LinuxJournal بقلم ستيفن سيجر وأندرياس بيك، 1996.
روابط خارجية
- واجهات برمجة التطبيقات
- مكتبات لغة البرمجة C
- برامج متعددة المنصات
- مكتبات حاسوب مجانية
- برامج الرسومات
- واجهات برمجة تطبيقات لينكس
- برامج تطوير ألعاب الفيديو
- برنامج تطوير ألعاب الفيديو لنظام التشغيل لينكس
