Interested Article - Raylib

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

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

raylib можно использовать в более чем 50 языках программирования при помощи библиотек привязки, однако не все они имеют стабильные версии.

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

Разработка 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 года и исключила все внешние зависимости из системы сборки. Эта версия также предоставила опции для конфигурирования системы сборки , предназначенных для уменьшения размера собранной библиотеки и увеличения поддержки различными системами непрерывной интеграции . В течение следующих двух лет части библиотеки подверглись пересмотру и обновлению, а также вокруг библиотеки сформировалась экосистема. Единственным небольшим релизом за этот период явилась версия raylib 2.5.

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

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

Возможности

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

  • поддержка множества платформ, включая Windows, Linux, macOS, Raspberry Pi , Android and HTML5;
  • поддержка OpenGL версий 1.1, 2.1, 3.3, 4.3 а также OpenGL ES 2.0 в качестве бэкэнда ;
  • загрузка и отрисовка изображений, текстур и шрифтов из файлов нескольких форматов;
  • загрузка и воспроизведение нескольких форматов аудио данных с поддержкой потокового аудио;
  • математические операции с векторами , матрицами и кватернионами ;
  • 2D визуализация с поддержкой камеры, включая авттоматичесую подгрузку спрайтов ;
  • визуализация 3D моделей включая возможность выбора пользовательских шейдеров и шейдеров ;
  • поддержка симуляции виртуальной реальности с возможностью настраивать параметры наголовного дисплея ;
  • поддержка анимированных и неанимированных 3D и 2D моделей.

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

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

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

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

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

Модули

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

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

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

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

Расширения

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

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

Награды

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

См. также

Примечания

  1. . Дата обращения: 10 июня 2022. 10 июня 2022 года.
  2. (10 октября 2021). Дата обращения: 10 июня 2022. 27 апреля 2022 года.
  3. Thomas (амер. англ.) . Thomas Gervraud (1 августа 2019). Дата обращения: 20 июля 2020. 19 июля 2020 года.
  4. (англ.) . thephp.website . Дата обращения: 20 июля 2020. 19 июля 2020 года.
  5. (англ.) . GitHub . Дата обращения: 15 июля 2020. 14 июля 2020 года.
  6. (англ.) . Дата обращения: 28 октября 2021. 6 ноября 2021 года.
  7. (англ.) . GitHub . Дата обращения: 15 июля 2020. 23 февраля 2011 года.
  8. . Дата обращения: 10 июня 2022. 11 июня 2022 года.
  9. Ray (2020-07-15), , из оригинала 14 июля 2020 , Дата обращения: 15 июля 2020
  10. Fisac, Víctor (2020-07-14), , из оригинала 17 сентября 2020 , Дата обращения: 15 июля 2020
  11. Briemann, David Linus (2020-06-10), , из оригинала 28 декабря 2020 , Дата обращения: 15 июля 2020
  12. WEREMSOFT (2020-06-27), , из оригинала 5 сентября 2020 , Дата обращения: 15 июля 2020
  13. WEREMSOFT (2020-07-12), , из оригинала 11 ноября 2020 , Дата обращения: 15 июля 2020
  14. Google Open Source Blog . Дата обращения: 15 июля 2020. 29 июля 2020 года.
  15. (амер. англ.) . GameFromScratch.com (7 августа 2020). Дата обращения: 10 августа 2020. 4 декабря 2020 года.
  16. Google Open Source Blog . Дата обращения: 27 апреля 2021. 19 апреля 2021 года.
  17. . MOBILE GAME AWARDS . Дата обращения: 20 марта 2022. 18 марта 2022 года.

Ссылки

  • — официальный сайт Raylib
  • на сайте GitHub
Источник —

Same as Raylib