Raylib
![]() | Эта статья написанав рекламном стиле. Это не соответствуетправилам Википедии. Вы можете помочь проекту,исправив текст согласностилистическим рекомендациям Википедии.(июнь 2022) |
![]() | Необходимо проверить качество перевода,исправить содержательные и стилистические ошибки. Вы можете помочьулучшить эту статью (см. такжерекомендации по переводу). Оригинал на английском языке —Raylib.(23 июля 2022) |
Raylib | |
---|---|
![]() | |
Тип | API |
Разработчики | Рамон Сантамария и др. |
Написана на | C, более конкретноC99 |
Операционные системы | Unix-подобная операционная система, Mac OS[вд], Windows, Android, HTML5 и Oculus Rift CV1[вд] |
Первый выпуск | 18 ноября 2013; 11 лет назад (2013-11-18) |
Аппаратные платформы | Windows,Linux,macOS,FreeBSD,Android,Raspberry Pi,HTML5 |
Последняя версия | 5.5 (18 ноября 2024; 5 месяцев назад (2024-11-18)) |
Репозиторий | github.com/raysan5/raylib |
Лицензия | zlib License[1][2] |
Сайт | raylib.com |
Raylib (стилизованное написание строчными буквамиraylib) —кроссплатформеннаябиблиотека соткрытым исходным кодом. Была разработана для использования при созданииигр и мультимедийных приложений.[3][4]
Библиотека была спроектирована для решения задачпрототипирования, создания необходимого инструментария, приложений сграфическим интерфейсом, приложений для встраиваемых систем и для обучения программированию.Исходный код написан наС и распространяется подzlib/libpngOSI лицензией. Библиотека поддерживаетсборку под многочисленные платформы, включаяWindows,Linux,macOS,FreeBSD,Android,Raspberry Pi иHTML5.
В Raylib можно использовать в более чем 70языках программирования при помощи библиотек привязки, однако не все они имеют стабильные версии.[5]
История создания
[править |править код]![]() | В разделене хватаетссылок на источники (см.рекомендации по поиску). Информация должна бытьпроверяема, иначе она может быть удалена. Вы можетеотредактировать статью, добавив ссылки наавторитетные источники в видесносок.(июнь 2022) |
Разработка 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 года.
- ↑12raysan5/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
![]() | На эту статьюне ссылаются другие статьи Википедии. Пожалуйста, установите ссылки в соответствии спринятыми рекомендациями.(11 июня 2022) |
- Википедия:Cite web (не указан язык)
- Википедия:Рекламные статьи с июня 2022 года
- Википедия:Рекламные статьи
- Википедия:Статьи с шаблонами недостатков по алфавиту
- Википедия:Плохой перевод с английского с июля 2022 года
- Википедия:Плохой перевод с английского
- Википедия:Плохой перевод с июля 2022 года
- Википедия:Плохой перевод
- Википедия:Статьи с вики-разметкой в изображении карточки
- Википедия:Страницы с ежедневно очищаемым кэшем
- Страницы с неизвестными параметрами шаблона Программа
- ПРО:ИТ:Статьи по алфавиту
- ПРО:ИТ:Последняя правка: в текущем месяце
- Википедия:Статьи с разделами без ссылок на источники с июня 2022 года
- Википедия:Статьи без источников (тип: библиотека функций)
- Проект:Компьютерные игры:Последняя правка: в текущем месяце
- Википедия:Изолированные статьи с июня 2022 года
- Википедия:Изолированные статьи (не распределённые по типам)
- Википедия:Изолированные статьи по алфавиту