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]
История создания
Разработка 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++.
Возможности
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 языкам программирования;
- свободное програмное обеспечение с открытым исходным кодом.
Примеры использования
Raylib изначально предназначалась для обучения работы с графикой и написания игр. Однако, так как многие разработчики убедились в простоте и легкости использования библиотеки, она была успешно адаптирована для применения в многочисленных хобби-проектах.
Существует множество сообществ, посвященных Raylib, на сервисах, таких как Reddit и Discord. На сайте Raylib есть ссылки на социальные сети, включая личные сайты Сантамарии, а также сообществ Raylib.[6]
GitHub содержит список 120 проектов использующих тему raylib.[5][7]
Архитектура библиотеки
Модули
Raylib содержит несколько модулей доступных пользователю при помощи API.
- core — Управляет созданием окон и инициализацией контекста OpenGL; также обрабатывает пользовательский ввод (клавиатура, мышь, геймпад и тачпад);
- rlgl — Обрабатывает бэкенд OpenGL, абстрагируя множество реализаций общим API. Этот модуль может использоваться обособленно;
- shapes — Управляет отрисовкой основных 2D примитивов (отрезок, прямоугольник, окружность…) и базовым обнаружением столкновений;
- textures — Обрабатывает загрузку текстур и изображений (используя CPU и GPU) и управление ими, включая возможности манипуляций изображениями (обрезка, масштабирование, оттенок, и т. д.);
- text — Обрабатывает загрузку шрифтов в виде листов спрайтов и отрисовку текста. Также включает в себя некоторую функциональность по работе с текстом (соединение, разъединение, замена, и т. д.);
- models — Обрабатывает загрузку и отрисовку 3D моделей, включая поддержку анимированных моделей;
- raudio — Обрабатывает управление аудио-устройствами, загрузкой и воспроизведением аудиоданных, включая возможность работать с потоковыми данными. Этот модуль может использоваться обособленно;
- raymath — Предоставляет набор математических функций для работы с векторами, матрицами и кватернионами.
Привязки к другим языкам программирования
Raylib имеет привязки[англ.], созданные сообществом разработчиков, включая Rust, Go, C#, Lua, Python, и Nim., для более, чем 70 различных языков программирования. Список доступных привязок находится в файле BINDINGS.md[8] в raylib GitHub репозитории.
Расширения
Сообществом Raylib были разработаны несколько расширений, дополняющих функционал, и обеспечивающих связи с дополнительными библиотеками:
- raygui — Immediate mode GUI модуль raylib[9];
- physac — физический модуль, предназначенный для работы с raylib[10];
- libpartikel — модуль для работы с системами частиц для raylib[11];
- spine-raylib — интеграция скелетной анимации в raylib[12];
- cimgui-raylib — модуль интеграции Dear Imgui для raylib[13].
Награды
- В апреле 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]
См. также
Примечания
- ↑ License. Дата обращения: 10 июня 2022. Архивировано 10 июня 2022 года.
- ↑ raylib GitHub (10 октября 2021). Дата обращения: 10 июня 2022. Архивировано 27 апреля 2022 года.
- ↑ Thomas. Best 2D Game Engines: The Complete List (2020) (амер. англ.). Thomas Gervraud (1 августа 2019). Дата обращения: 20 июля 2020. Архивировано 19 июля 2020 года.
- ↑ A Snake Game Written in PHP (with Raylib) (англ.). thephp.website. Дата обращения: 20 июля 2020. Архивировано 19 июля 2020 года.
- ↑ 1 2 raysan5/raylib (англ.). GitHub. Дата обращения: 15 июля 2020. Архивировано 14 июля 2020 года.
- ↑ raylib (англ.). Дата обращения: 28 октября 2021. Архивировано 6 ноября 2021 года.
- ↑ Build software better, together (англ.). GitHub. Дата обращения: 15 июля 2020. Архивировано 23 февраля 2011 года.
- ↑ BINDINGS.md file. Дата обращения: 10 июня 2022. Архивировано 11 июня 2022 года.
- ↑ Ray (15 июля 2020), raysan5/raygui, Архивировано 14 июля 2020, Дата обращения: 15 июля 2020
- ↑ Fisac, Víctor (14 июля 2020), victorfisac/Physac, Архивировано 17 сентября 2020, Дата обращения: 15 июля 2020
- ↑ Briemann, David Linus (10 июня 2020), dbriemann/libpartikel, Архивировано 28 декабря 2020, Дата обращения: 15 июля 2020
- ↑ WEREMSOFT (27 июня 2020), WEREMSOFT/spine-raylib-runtimes, Архивировано 5 сентября 2020, Дата обращения: 15 июля 2020
- ↑ WEREMSOFT (12 июля 2020), WEREMSOFT/c99-raylib-cimgui-template, Архивировано 11 ноября 2020, Дата обращения: 15 июля 2020
- ↑ Google Open Source Peer Bonus winners are here! Google Open Source Blog. Дата обращения: 15 июля 2020. Архивировано 29 июля 2020 года.
- ↑ RayLib receives an Epic MegaGrant (амер. англ.). GameFromScratch.com (7 августа 2020). Дата обращения: 10 августа 2020. Архивировано 4 декабря 2020 года.
- ↑ Announcing the First Group of Google Open Source Peer Bonus winners in 2021! Google Open Source Blog. Дата обращения: 27 апреля 2021. Архивировано 19 апреля 2021 года.
- ↑ MOBILE GAMES AWARD - The Finalists for 2022. MOBILE GAME AWARDS. Дата обращения: 20 марта 2022. Архивировано 18 марта 2022 года.
Ссылки
- raylib.com — официальный сайт Raylib
- Проект Raylib на сайте GitHub
- raylib games on Itch.io
Content Disclaimer
Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.
- The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
- There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
- It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
- Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
- Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.
