Raylib
توسعه‌دهنده(ها)Ramon Santamaria and contributors
انتشار اولیه۱۸ نوامبر ۲۰۱۳؛ ۱۰ سال پیش (۲۰۱۳-18}})
انتشار پایدار
4.2.0 / ۱۱ اوت ۲۰۲۲؛ ۲ سال پیش (۲۰۲۲-11}})
مخزنgithub.com/raysan5/raylib
نوشته‌شده باC، به‌طور خاص C99
پلت‌فرمWindows, Linux, macOS, FreeBSD, Android, Raspberry Pi, HTML5
نوعAPI
مجوزzlib License[۱][۲]
وبگاه


ری‌لیب (به انگلیسی: Raylib) یک کتابخانۀ توسعۀ نرم‌افزار متن‌باز چندسکویی است. این کتابخانه برای ایجاد برنامه‌ها و بازی‌های گرافیکی ساخته‌شده‌است.[۳] [۴]

این کتابخانه به‌شدت از کتابخانۀ گرافیکی Borland BGI و چارچوب XNA الهام گرفته و به گونه‌ای طراحی شده‌است که برای نمونه‌سازی، ابزار، برنامه‌های گرافیکی، سامانه‌های تعبیه‌شده و آموزش مناسب باشد. کد منبع به زبان C ساده (C99) نوشته‌شده‌است، که تحت مجوز منبع‌باز تأییدشدۀ OSI zlib/libpng توزیع شده‌است. این برنامه از کامپایل برای چندین پلتفرم هدف، از جمله ویندوز، لینوکس، مک‌اواس، FreeBSD، اندروید، Raspberry Pi و HTML5 پشتیبانی می‌کند.

ری‌لیب به بیش از 50 زبان برنامه‌نویسی به‌صورت بستگی زبانی پورت شده‌است، اما بسیاری از این پورت‌ها پایدار نیستند.[۵]

تاریخچه

ویرایش

توسعۀ ری‌لیب در آگوست 2013 میلادی توسط رامون سانتاماریا برای پشتیبانی از یک دورۀ توسعۀ بازی، متمرکز بر دانش‌آموزانی که تجربۀ کدنویسی و مشخصات هنری قبلی نداشتند، آغاز شد. این کتابخانه به عنوان جایگزین مستقیم WinBGI عمل کرد. در طول دوره، ری‌لیب بیشتر بر اساس بازخورد دانش‌آموزان توسعه یافت و تا ژوئن 2014، کتابخانه شروع به نمایش در چندین رویداد توسعۀ بازی در بارسلونا کرد.

ری‌لیب 1.0 در نوامبر 2013 منتشر شد و دارای حدود 80 عملکرد برای مدیریت پنجره‌ها و ورودی‌ها، طراحی اولیۀ شکل دوبعدی و سه‌بعدی، بارگذاری و ترسیم بافت، بارگذاری فونت، طراحی متن، مدیریت سیستم صوتی و بارگیری و پخش فایل‌های صوتی بود. اولین نسخۀ ری‌لیب، هشت نسخۀ کوچک بعدی (از raylib 1.1 تا raylib 1.8) در طول پنج سال داشت که هر کدام ویژگی‌های جدیدی را معرفی کردند. برخی از برجسته‌ترین پیشرفت‌ها عبارتند از پشتیبانی از اندروید، وب‌اسبملی و رزبری پای، پشتیبانی از اوپن‌جی‌ال متعدد، پشتیبانی از واقعیت مجازی و ده نمونه.

ری‌لیب 2.0 در جولای 2018 منتشر شد و تمام وابستگی‌های خارجی را از سیستم ساخت حذف کرد. همچنین تعدادی از گزینه‌های پیکربندی را در سیستم ساخت، برای به حداقل رساندن اندازه و افزایش پشتیبانی، پشتیبانی از سیستم‌های ادغام مداوم مختلف، در معرض دید قرار داد. در طول دو سال بعد، بخش‌هایی از کتابخانه به‌روزرسانی شد و اکوسیستم ساخته شد. یک نسخه کوچک، یعنی ری‌لیب 2.5، در این دوره منتشر شد.

ری‌لیب 3.0 در آوریل 2020 منتشر شد و بسیاری از بخش‌های کد را برای بهبود قابلیت حمل و اتصال مجدداً بازسازی کرد. این شامل انتقال متغیرهای سراسری به زمینه‌ها، افزودن پشتیبانی از تخصیص دهنده‌های حافظۀ سفارشی، یک سیستم فایل برای بارگیری دارایی‌ها و بیش از 115 نمونه کد بود. به روز رسانی جزئی، یعنی ری‌لیب 3.5، در دسامبر 2020 منتشر شد.

ری‌لیب 4.0 در نوامبر 2021 منتشر شد که شامل یک بررسی نام‌گذاری کامل برای سازگاری و انسجام کتابخانه بود: نام توابع، پارامترها، توضیحات، نظرات و پیام‌های خروجی گزارش بررسی شدند. یک سیستم اتوماسیون رویدادهای داخلی و کنترل حلقۀ بازی را برای کاربر اضافه کرد. همچنین برخی از کتابخانه‌های داخلی خود را برای استفاده به عنوان ماژول‌های مستقل دارد: rlgl و raymath. زبان‌های برنامه نویسی Zig و Odin رسماً از ری‌لیب پشتیبانی می‌کنند. این بزرگ‌ترین به روز رسانی کتابخانه تا به امروز بوده‌است.

ری‌لیب 4.2 در آگوست 2022 منتشر شد.

ویژگی‌ها

ویرایش

ری‌لیب ویژگی‌های زیر را ارائه می‌دهد: [۶] [۷]

  • پشتیبانی از چندین پلتفرم از جمله ویندوز، لینوکس، مک‌اواس، اندروید و HTML5
  • پشتیبانی از اوپن‌جی‌ال 1.1، 2.1، 3.3 و 4.3 و OpenGL ES 2.0 به عنوان بک‌اند
  • تصویر، بافت و فونت بارگیری و طراحی از چندین فرمت
  • بارگیری و پخش صدا از چندین فرمت و پشتیبانی از جریان
  • عملیات ریاضی برای بردارها، ماتریس‌ها و کواترنیون‌ها
  • رندر دوبعدی با دوربین، شامل دسته‌بندی خودکار اسپرایت
  • رندر مدل‌های سه‌بعدی شامل سایه‌زن‌های سفارشی و شیدرهای پس پردازش
  • پشتیبانی از شبیه‌سازی‌های واقعیت مجازی با پارامترهای نمایشگر سربند قابل تنظیم
  • پشتیبانی از مدل‌های متحرک و غیر متحرک سه‌بعدی و دوبعدی

بکارگیری

ویرایش

ری‌لیب اساساً برای آموزش بازی‌های ویدیویی و برنامه‌نویسی گرافیکی در نظر گرفته‌شده‌بود. با این حال، از آنجایی که بسیاری از توسعه‌دهندگان آن را ساده و آسان برای استفاده یافتند، در پروژه‌های مختلف سرگرمی پذیرفته‌شده‌است.

انجمن‌های متعددی برای ری‌لیب در سرویس‌هایی مانند ردیت و دیسکورد وجود دارد. در وب‌سایت ری‌لیب، تعداد انگشت شماری از شبکه‌های اجتماعی از جمله سایت‌های شخصی سانتاماریا و جوامع اختصاص داده‌شده به ری‌لیب فهرست شده‌اند. [۸]

گیت‌هاب بیش از 120 پروژه را در موضوع raylib لیست می‌کند. [۹] [۵]

معماری نرم‌افزار

ویرایش

ماژول‌ها

ویرایش
 
معماری ری‌لیب در نسخۀ 4.0.0 [۸]

ری‌لیب از چندین ماژول تشکیل شده‌است که از طریق واسط برنامه‌نویسی کاربردی در معرض برنامه‌نویس قرار می‌گیرند.

  • هسته (core) - ایجاد پنجره و مقداردهی اولیۀ متن اوپن‌جی‌ال و همچنین مدیریت ورودی‌ها (صفحه کلید، ماوس، گیم‌پد و ورودی لمسی) را مدیریت می‌کند.
  • rlgl – مدیریت اوپن‌جی‌ال Backend، انتزاع چندین نسخه به یک API مشترک. این ماژول به‌صورت مستقل قابل استفاده است.
  • اَشکال (shapes) - رندر اولیۀ شکل دوبعدی (خط، مستطیل، دایره و ...) و تشخیص برخورد اولیه را انجام می‌دهد.
  • بافت‌ها (textures) - بارگذاری تصویر و بافت (CPU و GPU) و مدیریت، از جمله عملکرد دستکاری تصویر (برش، مقیاس، رنگ و غیره) را مدیریت می‌کند.
  • متن - بارگذاری فونت‌ها را به عنوان صفحۀ spriteshe و رندر متن کنترل می‌کند. همچنین شامل برخی از عملکردهای پردازش متن (پیوستن، تقسیم، جایگزینی، و غیره) است.
  • مدل‌ها - بارگذاری و رندر مدل سه‌بعدی را کنترل می‌کند، از جمله پشتیبانی از مدل‌های متحرک.
  • رادیو – مدیریت دستگاه صوتی و بارگیری و پخش فایل‌های صوتی، از جمله پشتیبانی از پخش جریانی را مدیریت می‌کند. این ماژول به‌صورت مستقل قابل استفاده است.
  • raymath - مجموعه‌ای از توابع ریاضی را برای بردارها، ماتریس‌ها و چهارتایی‌ها ارائه می‌دهد.

بستگی‌های زبانی

ویرایش

ری‌لیب دارای بستگی‌هایی زبانی برای بیش از 50 زبان برنامه‌نویسی مختلف است که توسط جامعۀ خود ایجاد شده‌است. از جمله راست، گو، سی شارپ، لوآ، پایتون و نیم. فهرستی از اتصالات در فایل BINDINGS.md [۱۰] در مخزن raylib GitHub موجود است.

افزونه‌ها

ویرایش

جامعۀ ری‌لیب چندین افزونه برای گسترش ویژگی‌ها و ارتباط ری‌لیب با کتابخانه‌های دیگر ارائه کرده‌است. برخی از ماژول‌ها عبارتند از:

  • raygui - ماژول رابط کاربری گرافیکی حالت فوری برای ری‌لیب [۱۱]
  • physac - ماژول فیزیک در نظر گرفته‌شده برای استفاده با ری‌لیب [۱۲]
  • libpartikel - ماژول سیستم ذرات برای ری‌لیب [۱۳]
  • spine-raylib – ماژول ادغام انیمیشن‌های ستون فقرات برای ری‌لیب [۱۴]
  • cimgui-raylib – ماژول ادغام Imgui عزیز برای ری‌لیب [۱۵]

جوایز

ویرایش
  • در آوریل 2019، سانتاماریا به دلیل کمک به اکوسیستم منبع باز با ری‌لیب، جایزۀ Google Source Open Source Bonus را دریافت کرد. [۱۶]
  • در آگوست 2020، ری‌لیب جایزۀ Epic MegaGrant توسط Epic Games را برای حمایت از توسعۀ آن دریافت کرد. [۱۷]
  • در آوریل 2021، سانتاماریا به همین دلایل جایزۀ دیگری از Google Source Open Source دریافت کرد. [۱۸]
  • در مارس 2022، ری‌لیب نامزد بهترین موتور بازی در بخش بهترین موتور بازی در MOBILE GAMES AWARDS 2022 شد [۱۹]

جستارهای وابسته

ویرایش

منابع

ویرایش
  1. "License".
  2. "raylib GitHub". 10 October 2021.
  3. Thomas (2019-08-01). "Best 2D Game Engines: The Complete List (2020)". Thomas Gervraud (به انگلیسی). Retrieved 2020-07-20.
  4. "A Snake Game Written in PHP (with Raylib)". thephp.website (به انگلیسی). Retrieved 2020-07-20.
  5. ۵٫۰ ۵٫۱ "raysan5/raylib". GitHub (به انگلیسی). Retrieved 2020-07-15.
  6. "raylib–A C++ Game Library Perfect For Beginners". www.gamefromscratch.com. 24 July 2016. Retrieved 2020-07-20.
  7. "Raylib 2.5 Released". www.gamefromscratch.com. 3 June 2019. Retrieved 2020-07-20.
  8. ۸٫۰ ۸٫۱ "raylib" (به انگلیسی). Retrieved 2021-10-28.
  9. "Build software better, together". GitHub (به انگلیسی). Retrieved 2020-07-15.
  10. BINDINGS.md file
  11. Ray (2020-07-15), raysan5/raygui, retrieved 2020-07-15
  12. Fisac, Víctor (2020-07-14), victorfisac/Physac, retrieved 2020-07-15
  13. Briemann, David Linus (2020-06-10), dbriemann/libpartikel, retrieved 2020-07-15
  14. WEREMSOFT (2020-06-27), WEREMSOFT/spine-raylib-runtimes, retrieved 2020-07-15
  15. WEREMSOFT (2020-07-12), WEREMSOFT/c99-raylib-cimgui-template, retrieved 2020-07-15
  16. "Google Open Source Peer Bonus winners are here!". Google Open Source Blog. Retrieved 2020-07-15.
  17. "RayLib receives an Epic MegaGrant". GameFromScratch.com (به انگلیسی). 2020-08-07. Retrieved 2020-08-10.
  18. "Announcing the First Group of Google Open Source Peer Bonus winners in 2021!". Google Open Source Blog. Retrieved 2021-04-27.
  19. "MOBILE GAMES AWARD - The Finalists for 2022". MOBILE GAME AWARDS. Retrieved 2022-03-20.

پیوند به بیرون

ویرایش

[[رده:توسعه بازی‌های ویدئویی]] [[رده:رابط‌های برنامه‌نویسی اواس اکس]] [[رده:ویندوز ای‌پی‌آی‌ها]] [[رده:نرم‌افزارهای چندسکویی]] [[رده:کتابخانه‌های رایانه‌ای مرتبط با صدا]] [[رده:کتابخانه‌های مرتبط با گرافیک]] [[رده:کتابخانه‌های سی]] [[رده:واسط‌های برنامه‌نویسی کاربردی]]