Quire

raylib

From Quire, the open reference··6 min read
Raylib
Raylib
ТипAPI
РазработчикиРамон Сантамария и др.
Написана наC, более конкретно C99
Операционные системыUnix-подобная операционная система, Mac operating system, Windows, Android, HTML5 и Oculus Rift CV1
Дата выпуска18 ноября 2013
Аппаратные платформыWindows, Linux, macOS, FreeBSD, Android, Raspberry Pi, HTML5
Последняя версия6.0 (23 апреля 2026)
Репозиторийgithub.com/raysan5/raylib
Лицензияzlib License[1][2]
Сайтraylib.com

Raylib (стилизованное написание строчными буквами raylib) — кроссплатформенная библиотека с открытым исходным кодом. Была разработана для использования при создании игр и мультимедийных приложений.[3][4]

Библиотека была спроектирована для решения задач прототипирования, создания необходимого инструментария, приложений с графическим интерфейсом, приложений для встраиваемых систем и для обучения программированию. Исходный код написан на С и распространяется под zlib/libpng OSI лицензией. Библиотека поддерживает сборку под многочисленные платформы, включая Windows, Linux, macOS, FreeBSD, Android, Raspberry Pi и HTML5.

В Raylib можно использовать в более чем 70 языках программирования при помощи библиотек привязки, однако не все они имеют стабильные версии.[5]

История создания#edit

Разработка Raylib началась в августе 2013 года Рамоном Сантамарией для поддержки курсов программирования, нацеленных на студентов без предварительного опыта в программировании; библиотека являлась прямой заменой устаревшей к тому времени графической библиотеки Borland BGI. В течение курсов Raylib получала дополнительные усовершенствования на основе обратной связи от студентов и к июню 2014 года начала появляться на различных мероприятиях, посвященных разработке игр в Барселоне.

Raylib 1.0 была выпущена в ноябре 2013 года и включала в себя порядка 80 функций для управления созданием окон, обработки пользовательского ввода, отрисовки базовых геометрических форм в 2D и 3D, загрузке и отрисовки текстур, загрузке шрифтов, отрисовке текста, управления звуковой подсистемой с возможностью загрузки и воспроизведения звуковых файлов. Первая версия Raylib претерпела восемь небольших изменений (от версии Raylib 1.1 до Raylib 1.8) в течение пяти лет, каждое из которых привнесло какие-то новые возможности. Среди наиболее заметных улучшений была поддержка платформ Android, WebAssembly и Raspberry Pi, различных реализаций OpenGL, поддержка виртуальной реальности, а также создание десяти примеров использования библиотеки.

Raylib 2.0 была выпущена в июле 2018 года и исключила все внешние зависимости из системы сборки. Эта версия также предоставила опции для конфигурирования системы сборки, предназначенных для уменьшения размера собранной библиотеки и увеличения поддержки различными системами непрерывной интеграции. В течение следующих двух лет части библиотеки подверглись пересмотру и обновлению, а также вокруг библиотеки сформировалась экосистема. Единственным небольшим релизом за этот период являлась версия 2.5.

Raylib 3.0 была выпущена в апреле 2020 года. Переработке кода подверглись многие части кода. Её целью стало улучшение переносимости на другие платформы и улучшение привязок к другим языкам программирования. Это было достигнуто путем переноса глобальных переменных ближе к контексту, добавленной поддержке пользовательских функций выделения памяти, файловой системы для загрузки ассетов, а также созданию более 115 примеров использования. Эта версия получала единственный небольшой релиз, Raylib 3.5, в декабре 2020 года.

Raylib 4.0 была выпущена в ноябре 2021 года, привнеся с собой полный пересмотр системы наименования для улучшения связности и последовательности: изменению подверглись имена функций, параметров, описания, комментарии и сообщения протоколирования. Была внедрена система управления событиями и доступ к основному игровому циклу был предоставлен пользователю. Также появилась возможность использования внутренних модулей библиотеки как отдельных обособленных модулей: rlgl и raymath. Добавилась поддержка языков программирования Zig и Odin. Эта версия стала крупнейшим на данный момент обновлением библиотеки.

Raylib 4.5 была выпущена в марте 2023, 7 месяцев спустя с прошлого релиза. Эта версия принесла с собой поддержку ANGLE для платформы настольных приложений, полностью новый модуль для работы с камерой, поддержка моделей в формате M3D и M3D/GLTF анимаций, совместимость с QOA аудиоформатом, полностью новый модуль для загрузки сжатых текстур (rl_gputex), изменения в модулях rlgl и rshapes, валидация данных (IsImageReady(), IsTextureReady() и IsSoundReady()) для множества структур Raylib а также много других изменений.

Raylib 5.0 была выпущена 18 ноября 2023. Переработан и разбит для работы на различных платформах модуль rcore. Добавлена поддержка новых бэкендов SDL, Nintendo Switch. Добавлена API для работы со сплайнами; новый генератор псевдослучайных чисел rprand; API для работы с событиями. Обновлен модуль raygui для разработки утилит с помощью графического интерфейса немедленного режима использованием Raylib.

Raylib 5.5 была выпущена 18 ноября 2024. Добавлен инструмент для создания новых проектов. Новые бэкенды модуля rcore - RGFW и SDL3. Поддержка новых платформ: Dreamcast, N64, PSP, PSVita, PS4. Добавлена поддержка GPU скиннинга (дя всех платформ и версий OpenGL). В модуле raymath добавлены перегрузки операторов для C++.

Возможности#edit

Raylib поддерживает следующие возможности:

  • не используются внешние зависимости, все требуемые библиотеки включены в состав raylib;
  • поддержка множества платформ, включая Windows, Linux, macOS, Raspberry Pi, Android, HTML5 и других;
  • написано на чистом C99;
  • поддержка OpenGL версий 1.1, 2.1, 3.3, 4.3 а также OpenGL ES 2.0 и 3.0 в качестве бэкенда;
  • уникальный модуль rlgl, обеспечивающий уровень абстракции от OpenGL (возможно использование модуля отдельно от raylib);
  • поддержка многочисленных форматов шрифтов (TTF, OTF, FNT, BDF, спрайтовые шрифты);
  • поддержка многочисленных форматов, включая сжатые, текстур (DXT, ETC, ASTC);
  • полная поддержка 3D, включая 3D примитивы, модели, билборды, карты высот и многое другое;
  • гибкая система материалов, поддерживая классические и PBR карты;
  • поддержка анимированных 3D моделей (скелетная анимация) (IQM, M3D, glTF);
  • поддержка шейдеров моделей и постобработки;
  • математические операции с векторами, матрицами и кватернионами;
  • загрузка и воспроизведение нескольких форматов аудио данных с поддержкой потокового аудио (WAV, QOA, OGG, MP3, FLAC, XM, MOD);
  • поддержка симуляции виртуальной реальности с возможностью настраивать параметры наголовного дисплея;
  • огромная коллекция содержащая более 140 примеров кода;
  • привязки к более чем 70 языкам программирования;
  • свободное програмное обеспечение с открытым исходным кодом.

Примеры использования#edit

Raylib изначально предназначалась для обучения работы с графикой и написания игр. Однако, так как многие разработчики убедились в простоте и легкости использования библиотеки, она была успешно адаптирована для применения в многочисленных хобби-проектах.

Существует множество сообществ, посвященных Raylib, на сервисах, таких как Reddit и Discord. На сайте Raylib есть ссылки на социальные сети, включая личные сайты Сантамарии, а также сообществ Raylib.[6]

GitHub содержит список 120 проектов использующих тему raylib.[5][7]

Архитектура библиотеки#edit

Модули#edit

Raylib содержит несколько модулей доступных пользователю при помощи API.

  • core — Управляет созданием окон и инициализацией контекста OpenGL; также обрабатывает пользовательский ввод (клавиатура, мышь, геймпад и тачпад);
  • rlgl — Обрабатывает бэкенд OpenGL, абстрагируя множество реализаций общим API. Этот модуль может использоваться обособленно;
  • shapes — Управляет отрисовкой основных 2D примитивов (отрезок, прямоугольник, окружность…) и базовым обнаружением столкновений;
  • textures — Обрабатывает загрузку текстур и изображений (используя CPU и GPU) и управление ими, включая возможности манипуляций изображениями (обрезка, масштабирование, оттенок, и т. д.);
  • text — Обрабатывает загрузку шрифтов в виде листов спрайтов и отрисовку текста. Также включает в себя некоторую функциональность по работе с текстом (соединение, разъединение, замена, и т. д.);
  • models — Обрабатывает загрузку и отрисовку 3D моделей, включая поддержку анимированных моделей;
  • raudio — Обрабатывает управление аудио-устройствами, загрузкой и воспроизведением аудиоданных, включая возможность работать с потоковыми данными. Этот модуль может использоваться обособленно;
  • raymath — Предоставляет набор математических функций для работы с векторами, матрицами и кватернионами.

Привязки к другим языкам программирования#edit

Raylib имеет привязки, созданные сообществом разработчиков, включая Rust, Go, C#, Lua, Python, и Nim., для более, чем 70 различных языков программирования. Список доступных привязок находится в файле BINDINGS.md[8] в raylib GitHub репозитории.

Расширения#edit

Сообществом Raylib были разработаны несколько расширений, дополняющих функционал, и обеспечивающих связи с дополнительными библиотеками:

  • raygui — Immediate mode GUI модуль raylib[9];
  • physac — физический модуль, предназначенный для работы с raylib[10];
  • libpartikel — модуль для работы с системами частиц для raylib[11];
  • spine-raylib — интеграция скелетной анимации в raylib[12];
  • cimgui-raylib — модуль интеграции Dear Imgui для raylib[13].

Награды#edit

  • В апреле 2019 года Сантамария был награждён Google Open Source Peer Bonus за вклад в open-source экосистему своей библиотекой Raylib.[14]
  • В августе 2020 года raylib получил Epic MegaGrant от Epic Games для поддержки развития проекта.[15]
  • В апреле 2021 года Сантамария был награждён ещё одним Google Open Source Peer Bonus по той же причине.[16]
  • В марте 2022 года Raylib был номинирован в категории BEST GAME ENGINE на MOBILE GAMES AWARDS 2022.[17]

См. также#edit

Примечания#edit

  1. ^ License. Дата обращения: 10 июня 2022. Архивировано 10 июня 2022 года.
  2. ^ raylib GitHub (10 октября 2021). Дата обращения: 10 июня 2022. Архивировано 27 апреля 2022 года.
  3. ^ Thomas. Best 2D Game Engines: The Complete List (2020) (амер. англ.). Thomas Gervraud (1 августа 2019). Дата обращения: 20 июля 2020. Архивировано 19 июля 2020 года.
  4. ^ A Snake Game Written in PHP (with Raylib) (англ.). thephp.website. Дата обращения: 20 июля 2020. Архивировано 19 июля 2020 года.
  5. ^ a b raysan5/raylib (англ.). GitHub. Дата обращения: 15 июля 2020. Архивировано 14 июля 2020 года.
  6. ^ raylib (англ.). Дата обращения: 28 октября 2021. Архивировано 6 ноября 2021 года.
  7. ^ Build software better, together (англ.). GitHub. Дата обращения: 15 июля 2020. Архивировано 23 февраля 2011 года.
  8. ^ BINDINGS.md file. Дата обращения: 10 июня 2022. Архивировано 11 июня 2022 года.
  9. ^ Ray (15 июля 2020), raysan5/raygui, Архивировано 14 июля 2020, Дата обращения: 15 июля 2020
  10. ^ Fisac, Víctor (14 июля 2020), victorfisac/Physac, Архивировано 17 сентября 2020, Дата обращения: 15 июля 2020
  11. ^ Briemann, David Linus (10 июня 2020), dbriemann/libpartikel, Архивировано 28 декабря 2020, Дата обращения: 15 июля 2020
  12. ^ WEREMSOFT (27 июня 2020), WEREMSOFT/spine-raylib-runtimes, Архивировано 5 сентября 2020, Дата обращения: 15 июля 2020
  13. ^ WEREMSOFT (12 июля 2020), WEREMSOFT/c99-raylib-cimgui-template, Архивировано 11 ноября 2020, Дата обращения: 15 июля 2020
  14. ^ Google Open Source Peer Bonus winners are here! Google Open Source Blog. Дата обращения: 15 июля 2020. Архивировано 29 июля 2020 года.
  15. ^ RayLib receives an Epic MegaGrant (амер. англ.). GameFromScratch.com (7 августа 2020). Дата обращения: 10 августа 2020. Архивировано 4 декабря 2020 года.
  16. ^ Announcing the First Group of Google Open Source Peer Bonus winners in 2021! Google Open Source Blog. Дата обращения: 27 апреля 2021. Архивировано 19 апреля 2021 года.
  17. ^ MOBILE GAMES AWARD - The Finalists for 2022. MOBILE GAME AWARDS. Дата обращения: 20 марта 2022. Архивировано 18 марта 2022 года.

Ссылки#edit

This article is mirrored from “Raylib” on Русский Wikipedia, revision 152904117, written by Wikipedia's contributors and licensed CC BY-SA 4.0. Editing it here creates a Quire copy with its own history.

Synced with Wikipedia revision 152904117 · just now