raylib

raylib هي مكتبة برمجية مفتوحة المصدر ومتعددة المنصات لتطوير البرمجيات . صُممت هذه المكتبة لإنشاء تطبيقات وألعاب رسومية. [ 3 ] [ 4 ]

صُممت هذه المكتبة لتناسب تطبيقات النماذج الأولية، والأدوات، والتطبيقات الرسومية، والأنظمة المدمجة، والتعليم. كُتب الكود المصدري بلغة البرمجة C (باستخدام C99 تحديدًا )، وهو مُوزع بموجب ترخيص مفتوح المصدر معتمد من مبادرة المصادر المفتوحة (OSI ) لمكتبة zlib/libpng . تدعم المكتبة الترجمة إلى العديد من المنصات المستهدفة، بما في ذلك Windows وLinux وmacOS وFreeBSD وAndroid وRaspberry Pi وHTML5.

تم نقل مكتبة raylib إلى أكثر من 70 لغة برمجة على شكل روابط، [ 5 ] ولكن العديد من هذه المنافذ غير مستقرة. [ 6 ]

تاريخ

بدأ تطوير مكتبة raylib في أغسطس 2013 عندما أنشأها رامون سانتاماريا لدعم دورة تطوير ألعاب موجهة للطلاب ذوي الخلفيات الفنية والذين ليس لديهم خبرة سابقة في البرمجة. وقد ساهمت ملاحظات الطلاب خلال الدورة في تشكيل مراحل التطوير المبكرة، وبحلول منتصف عام 2014، كانت المكتبة تُعرض في فعاليات تطوير الألعاب في برشلونة . [ 7 ]

صدرت مكتبة raylib 1.0 في نوفمبر 2013، موفرةً وظائف أساسية لإدارة النوافذ ، وعرض ثنائي وثلاثي الأبعاد ، وتحميل الصور والخطوط، وتشغيل الصوت. أضافت ثمانية إصدارات فرعية على مدار السنوات الخمس التالية دعمًا لأنظمة Android و WebAssembly و Raspberry Pi ، بالإضافة إلى العديد من واجهات OpenGL الخلفية، ودعم الواقع الافتراضي ، والمظلات ، ووحدة فيزيائية، ومكتبة أمثلة متنامية. [ 7 ]

صدرت مكتبة raylib 2.0 في يوليو 2018، بالتزامن مع ترك سانتاماريا منصبه كأستاذ جامعي للتفرغ لتطويرها. [ 7 ] أُزيلت جميع التبعيات الخارجية، واستُبدلت مكتبة OpenAL بمكتبة miniaudio، وأُضيف دعم التكامل المستمر . أضاف إصدار فرعي لاحق، raylib 2.5، عرض نصوص Unicode ، ورسومًا متحركة هيكلية مع دعم glTF ، ونظامًا مُعاد تصميمه للوحة الألعاب . [ 8 ]

صدرت مكتبة raylib 3.0 في أبريل 2020، حيث أعيد هيكلة قاعدة التعليمات البرمجية لتحسين قابلية النقل ودعم ربط اللغات. تم دمج الحالة العامة في هياكل سياقية، وتم مركزة جميع عمليات إدخال/إخراج الملفات للسماح بتكامل نظام ملفات افتراضي مخصص. وبحلول ذلك الوقت، كانت روابط لأكثر من 40 لغة برمجة متاحة. [ 9 ] تبع ذلك تحديث بسيط، raylib 3.5، في ديسمبر 2020، أضاف وضع Raspberry Pi 4 الأصلي وتحسين عرض البرامج الموجه للأجهزة المدمجة. [ 10 ]

صدرت مكتبة raylib 4.0 في نوفمبر 2021، مع التركيز على اتساق واجهة برمجة التطبيقات (API) من خلال إعادة تسمية شاملة وتحسينات في التوثيق. وقدّمت نظامًا تجريبيًا لتسجيل وإعادة تشغيل المدخلات، وإمكانية التحكم في توقيت حلقة اللعبة من قِبل المستخدم، ودعم OpenGL 4.3، مع ترقية مكتبتي rlgl وraymath إلى مكتبات مستقلة قابلة للاستخدام. [ 11 ] تبع ذلك إصداران فرعيان: raylib 4.2 في أغسطس 2022، والذي نقل المكتبات الثانوية مثل raygui وphysac إلى مستودعات منفصلة وقدّم تنسيق حزم موارد rres؛ [ 12 ] وraylib 4.5 في مارس 2023، والذي أضاف دعم ANGLE على سطح المكتب لتمكين Vulkan و Direct3D 11 و Metal ، ووسّع دعم الرسوم المتحركة ليشمل تنسيقات M3D وglTF، وأضاف تنسيق الصوت QOA. [ 13 ]

صدرت مكتبة raylib 5.0 في نوفمبر 2023 احتفالًا بالذكرى السنوية العاشرة لإطلاقها. وكان أبرز تغيير فيها هو تقسيم وحدة النظام الأساسي إلى واجهات خلفية منفصلة وقابلة للتبديل، مما سهّل دعم المنصات الجديدة بشكل كبير، مع إضافة SDL2 كواجهة خلفية بديلة لأجهزة سطح المكتب إلى جانب واجهة خلفية غير رسمية لجهاز Nintendo Switch . كما تم تقديم ميزة رسم الخطوط المنحنية، ومولد أرقام شبه عشوائي جديد ، ونظام أحداث أتمتة مُعاد تصميمه. [ 14 ] تبع ذلك إصدار فرعي، raylib 5.5، في نوفمبر 2024، أضاف RGFW و SDL3 كواجهات خلفية إضافية للمنصات، ودعمًا لتقنية GPU لتحريك النماذج ثلاثية الأبعاد. [ 15 ]

صدرت مكتبة raylib 6.0 في أبريل 2026. وقد تم تقديم واجهة خلفية لعرض البرامج ، مما يسمح بتشغيل raylib بالكامل على وحدة المعالجة المركزية دون الحاجة إلى وحدة معالجة رسومية. كما أُضيفت واجهات خلفية جديدة لمنصات Win32 و Emscripten دون الاعتماد على مكتبات خارجية، بالإضافة إلى وضع إطار ذاكرة بدون واجهة رسومية. أُعيد تصميم وضع ملء الشاشة وتوسيع النطاق عالي الدقة بالكامل، وأُعيد بناء نظام الرسوم المتحركة الهيكلية لدعم المزج بين الرسوم المتحركة. تجاوز عدد الأمثلة 215 مثالًا، وتم تقديم أداة مخصصة لإدارة الأمثلة لتسهيل المساهمات. [ 16 ]

سمات

توفر مكتبة raylib الميزات التالية: [ 17 ] [ 18 ]

  • يدعم العديد من المنصات، بما في ذلك ويندوز، لينكس، ماك أو إس، راسبيري باي، أندرويد، وHTML5
  • يدعم OpenGL 1.1 و2.1 و3.3 و4.3 و OpenGL ES 2.0 و3.0 كواجهة برمجة تطبيقات رسومية
  • تحميل الصور والقوام والخطوط ورسمها من عدة تنسيقات
  • تحميل وتشغيل الصوت من عدة صيغ ودعم البث
  • العمليات الحسابية للمتجهات والمصفوفات والأعداد الرباعية
  • عرض ثنائي الأبعاد باستخدام الكاميرا، بما في ذلك تجميع الصور النقطية تلقائيًا
  • عرض النماذج ثلاثية الأبعاد بما في ذلك التظليل المخصص وتظليل ما بعد المعالجة
  • دعم عمليات محاكاة الواقع الافتراضي مع معلمات جهاز العرض الرأسي القابلة للتكوين
  • يدعم النماذج ثلاثية الأبعاد وثنائية الأبعاد المتحركة وغير المتحركة

مثال

هذا مثال بسيط يقوم بإنشاء نافذة تحتوي على نص، كما هو موضح في صفحة GitHub الخاصة بـ Raylib.

#include "raylib.h"int main ( void ) { InitWindow ( 800 , 450 , "raylib [core] example - basic window" );بينما ( ! يجب إغلاق النافذة ()) { ابدأ الرسم (); امسح الخلفية ( أبيض شعاعي ); ارسم النص ( "تهانينا! لقد أنشأت نافذتك الأولى!" , 190 , 200 , 20 , رمادي فاتح ); أنهِ الرسم (); }إغلاق النافذة ();return 0 ; }

الاستقبال والتبني

اعتبارًا من أبريل 2026 ،يسرد موقع GitHub حوالي 2500 مشروعًا تتطابق مع raylibالموضوع. [ 19 ]

هندسة البرمجيات

الوحدات

بنية raylib اعتبارًا من الإصدار 5.0 [ 20 ]

تتكون مكتبة raylib من عدة وحدات يتم عرضها للمبرمج من خلال واجهة برمجة التطبيقات (API) .

  • النواة – تتولى إنشاء النوافذ وتهيئة سياق OpenGL بالإضافة إلى إدارة المدخلات (لوحة المفاتيح، والماوس، ولوحة الألعاب، ومدخلات اللمس)
  • rlgl – يتولى معالجة الواجهة الخلفية لـ OpenGL ، حيث يقوم بتجريد الإصدارات المتعددة إلى واجهة برمجة تطبيقات مشتركة. يمكن استخدام هذه الوحدة بشكل مستقل.
  • الأشكال – تتعامل مع عرض الأشكال ثنائية الأبعاد الأساسية (خط، مستطيل، دائرة...) والكشف الأساسي عن التصادم
  • textures – يتعامل مع تحميل الصور والنسيج (وحدة المعالجة المركزية ووحدة معالجة الرسومات) وإدارتها، بما في ذلك وظائف معالجة الصور (القص، والتحجيم، والتلوين، وما إلى ذلك).
  • النص – يتعامل مع تحميل الخطوط كصفحات صور متحركة وعرض النصوص. كما يتضمن بعض وظائف معالجة النصوص (الدمج، والتقسيم، والاستبدال، إلخ).
  • النماذج - تتولى تحميل النماذج ثلاثية الأبعاد وعرضها، بما في ذلك دعم النماذج المتحركة
  • وحدة raudio – تتولى إدارة أجهزة الصوت وتحميل ملفات الصوت وتشغيلها، بما في ذلك دعم البث المباشر. يمكن استخدام هذه الوحدة بشكل مستقل.
  • raymath – توفر مجموعة من الدوال الرياضية للمتجهات والمصفوفات والأعداد الرباعية

روابط

يحتوي raylib على روابط لأكثر من 70 لغة برمجة مختلفة، تم إنشاؤها بواسطة مجتمعات لغوية متنوعة. تشمل لغات البرمجة التي يتم تحديثها إلى أحدث إصدار: C# ، Crystal ، D (Dlang) ، Fortran ، Go ، Jai ، Java ، Lua ، Nim ، Python ، Rust ، V (Vlang) ، و Zig . كما يتوفر غلاف C++ لمستخدمي C++ الذين يفضلون استخدامًا أقل شبهاً بلغة C وأكثر ملاءمةً لأسلوب C++، ويمكن استيراده أيضًا كوحدة C++ . [ 21 ] تتوفر قائمة الروابط في ملف BINDINGS.md [ 5 ] في مستودع raylib على GitHub .

مثال باستخدام raylib-cpp

ما يلي هو نفسه المثال السابق، باستخدام روابط C++ من raylib-cpp.

استيراد مكتبة raylib ؛باستخدام raylib :: Texture ؛ باستخدام raylib :: Window ؛ باستخدام مساحة الاسم raylib :: Colors ؛int main ( int argc , char * argv []) { constexpr int SCREEN_WIDTH = 800 ; constexpr int SCREEN_HEIGHT = 450 ;نافذة window ( SCREEN_WIDTH , SCREEN_HEIGHT , "raylib [core] example - basic window" ); نسيج logo ( "raylib_logo.png" );window.SetTargetFPS ( 60 ) ;بينما ( ! window.ShouldClose ( ) ) { window.BeginDrawing (); window.ClearBackground ( RAYWHITE ) ; raylib :: DrawText ( " تهانينا! لقد أنشأت نافذتك الأولى! " , 190 , 200 , 20 , LIGHTGRAY ) ;logo.Draw ( SCREEN_WIDTH / 2 - logo.GetWidth ( ) / 2 , SCREEN_HEIGHT / 2 - logo.GetHeight ( ) / 2 ) ;window.EndDrawing ( ) ; }return 0 ; }

إضافات

ساهم مجتمع raylib بالعديد من الإضافات لتوسيع ميزات raylib وربطها بمكتبات أخرى. بعض هذه الوحدات هي:

الجوائز

  • في أبريل 2019، حصل سانتاماريا على جائزة Google Open Source Peer Bonus لمساهمته في النظام البيئي مفتوح المصدر باستخدام raylib. [ 27 ]
  • في أغسطس 2020، حصلت raylib على منحة Epic MegaGrant من شركة Epic Games لدعم تطويرها. [ 28 ]
  • في أبريل 2021، مُنح سانتاماريا جائزة أخرى من جوائز جوجل للمصادر المفتوحة للأقران للأسباب نفسها. [ 29 ]
  • في مارس 2022، تم ترشيح raylib لجائزة أفضل محرك ألعاب في جوائز ألعاب الهاتف المحمول لعام 2022. [ 30 ]

انظر أيضاً

مراجع

  1. "الترخيص" .
  2. "Raylib GitHub" . GitHub . 10 أكتوبر 2021.
  3. توماس (2019-08-01). "أفضل محركات ألعاب ثنائية الأبعاد: القائمة الكاملة (2020)" . توماس جيرفرود . تم الاطلاع عليه بتاريخ 2020-07-20 .
  4. "لعبة الثعبان مكتوبة بلغة PHP (باستخدام Raylib)" . thephp.website . ١٢ أبريل ٢٠٢٠. تاريخ الاسترجاع ٢٠ يوليو ٢٠٢٠ .
  5. ملف 1 2 BINDINGS.md
  6. "raysan5/raylib" . GitHub . تم الاسترجاع في 15 يوليو 2020 .
  7. 1 2 3 رامون سانتاماريا (raysan5) (2 ديسمبر 2019). "الإصدار: رايليب: 6 سنوات من المرح" . تم الاسترجاع في 26 يناير 2026 .{{cite web}}: صيانة CS1: الأسماء الرقمية: قائمة المؤلفين ( رابط )
  8. رامون سانتاماريا (raysan5) (31 مايو 2019). "ملاحظات إصدار raylib 2.5" . تم الاطلاع عليه بتاريخ 23 أبريل 2026 .{{cite web}}: صيانة CS1: الأسماء الرقمية: قائمة المؤلفين ( رابط )
  9. رامون سانتاماريا (raysan5) (1 أبريل 2020). "ملاحظات إصدار raylib 3.0" . تم الاطلاع عليه بتاريخ 23 أبريل 2026 .{{cite web}}: صيانة CS1: الأسماء الرقمية: قائمة المؤلفين ( رابط )
  10. رامون سانتاماريا (raysan5) (25 ديسمبر 2020). "ملاحظات إصدار raylib 3.5" . تم الاطلاع عليه بتاريخ 23 أبريل 2026 .{{cite web}}: صيانة CS1: الأسماء الرقمية: قائمة المؤلفين ( رابط )
  11. رامون سانتاماريا (raysan5) (4 نوفمبر 2021). "ملاحظات إصدار raylib 4.0" . تم الاطلاع عليه بتاريخ 23 أبريل 2026 .{{cite web}}: صيانة CS1: الأسماء الرقمية: قائمة المؤلفين ( رابط )
  12. رامون سانتاماريا (raysan5) (13 أغسطس 2022). "ملاحظات إصدار raylib 4.2" . تم الاطلاع عليه بتاريخ 23 أبريل 2026 .{{cite web}}: صيانة CS1: الأسماء الرقمية: قائمة المؤلفين ( رابط )
  13. رامون سانتاماريا (raysan5) (18 مارس 2023). "ملاحظات إصدار raylib 4.5" . تم الاطلاع عليه بتاريخ 23 أبريل 2026 .{{cite web}}: صيانة CS1: الأسماء الرقمية: قائمة المؤلفين ( رابط )
  14. رامون سانتاماريا (raysan5) (18 نوفمبر 2023). "ملاحظات إصدار raylib 5.0" . تم الاطلاع عليه بتاريخ 23 أبريل 2026 .{{cite web}}: صيانة CS1: الأسماء الرقمية: قائمة المؤلفين ( رابط )
  15. رامون سانتاماريا (raysan5) (18 نوفمبر 2024). "ملاحظات إصدار raylib 5.5" . تم الاطلاع عليه بتاريخ 23 أبريل 2026 .{{cite web}}: صيانة CS1: الأسماء الرقمية: قائمة المؤلفين ( رابط )
  16. رامون سانتاماريا (raysan5) (23 أبريل 2026). "ملاحظات إصدار raylib 6.0" . تم الاطلاع عليه بتاريخ 23 أبريل 2026 .{{cite web}}: صيانة CS1: الأسماء الرقمية: قائمة المؤلفين ( رابط )
  17. "raylib - مكتبة ألعاب C++ مثالية للمبتدئين" . www.gamefromscratch.com . 24 يوليو 2016. تم الاطلاع عليه بتاريخ 20 يوليو 2020 .
  18. "إصدار Raylib 2.5" . www.gamefromscratch.com . 3 يونيو 2019. تم الاطلاع عليه بتاريخ 20 يوليو 2020 .
  19. "raylib · مواضيع GitHub" . GitHub . تم الاطلاع عليه بتاريخ 15 يناير 2024 .
  20. "raylib" . تم الاسترجاع في 28-10-2021 .
  21. "RobLoach/raylib-cpp" . GitHub . تم الاسترجاع في 2025-06-05 .
  22. راي (2020-07-15)، raysan5/raygui ، تم الاطلاع عليه بتاريخ 2020-07-15
  23. ^ فيساك ، فيكتور (14 يوليو 2020)، فيكتورفيساك / فيساك ، استرجاعها 2020/07/15
  24. ^ بريمان ، ديفيد لينوس (10 يونيو 2020)، dbriemann / libpartikel ، استرجاعها 2020/07/15
  25. WEREMSOFT (27-06-2020)، WEREMSOFT/spine-raylib-runtimes ، تم الاطلاع عليه بتاريخ 15-07-2020
  26. WEREMSOFT (2020-07-12)، WEREMSOFT/c99-raylib-cimgui-template ، تم استرجاعه في 2020-07-15
  27. "الفائزون بمكافأة جوجل للمصادر المفتوحة هنا!" . مدونة جوجل للمصادر المفتوحة . تم الاطلاع بتاريخ 15 يوليو 2020 .
  28. "rayLib يحصل على منحة ضخمة ملحمية" . GameFromScratch.com . 2020-08-07 . تم الاطلاع عليه بتاريخ 2020-08-10 .
  29. "الإعلان عن المجموعة الأولى من الفائزين بمكافآت جوجل للمصادر المفتوحة لعام 2021!" . مدونة جوجل للمصادر المفتوحة . تم الاطلاع بتاريخ 27 أبريل 2021 .
  30. "جوائز ألعاب الجوال - القائمة النهائية لعام 2022" . جوائز ألعاب الجوال . تم الاطلاع بتاريخ 20 مارس 2022 .