Русская Википедия:Raylib
Шаблон:Advert Шаблон:Плохой перевод Шаблон:Infobox software
Raylib (стилизованное написание строчными буквами raylib) это кроссплатформенная библиотека с открытым исходным кодом. Библиотека была разработана для использования при создании игр и мультимедийных приложений.[1][2]
Библиотека создавалась под впечатлением от графической библиотеки Borland BGI, а также фреймворка XNA, и была спроектирована, чтобы хорошо подходить для прототипирования, создания необходимого инструментария, приложений с графическим интерфейсом, приложений для встраиваемых систем и для обучения программированию. Исходный код написан на чистом С и распространяется под zlib/libpng OSI лицензией. Библиотека поддерживает сборку под многочисленные платформы, включая Windows, Linux, macOS, FreeBSD, Android, Raspberry Pi и HTML5.
raylib можно использовать в более чем 50 языках программирования при помощи библиотек привязки, однако не все они имеют стабильные версии.[3]
История создания
Шаблон:Unreferenced section Разработка 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.[4]
GitHub содержит список 120 проектов использующих тему raylib
.[3][5]
Архитектура библиотеки
Модули
raylib содержит несколько модулей доступных пользователю при помощи API.
- core — Управляет созданием окон и инициализацией контекста OpenGL; также обрабатывает пользовательский ввод (клавиатура, мышь, геймпад и тачпад)
- rlgl — Обрабатывает бэкэнд OpenGL, абстрагируя множество реализаций общим API. Этот модуль может использоваться обособленно.
- shapes — Управляет отрисовкой основных 2D примитивов (отрезок, прямоугольник, окружность…) и базовым обнаружением столкновений
- textures — Обрабатывает загрузку текстур и изображений (используя CPU и GPU) и управление ими, включая возможности манипуляций изображенями (обрезка, масштабирование, оттенок, и т. д.)
- text — Обрабатывает загрузку шрифтов в виде листов спрайтов и отрисовку текста. Также включает в себя некоторую функциональность по работе с текстом (соединение, разъединение, замена, и т. д.)
- models — Обрабатывает загрузку и отрисовку 3D моделей, включая поддержку анимированных моделей
- raudio — Обрабатывает управление аудио-устройствами, загрузкой и воспроизведением аудиоданных, включая возможность работать с потоковыми данными. Этот модуль может использоваться обособленно.
- raymath — Предоставляет набор математических функций для работы с векторами, матрицами и кватернионами
Привязки к другим языкам программирования
raylib имеет привязки для более, чем 50 различных языков программирования, созданные сообществом разработчиков, включая Rust, Go, C#, Lua, Python, и Nim. Список доступных привязок находится в файле BINDINGS.md[6] в raylib GitHub репозитории.
Расширения
Сообществом raylib были разработаны несколько расширений, дополняющих функционал, и обеспечивающих связи с дополнительными библиотеками:
- raygui — Immediate mode GUI модуль raylib[7]
- physac — физический модуль, предназначенный для работы с raylib[8]
- libpartikel — модуль для работы с системами частиц для raylib[9]
- spine-raylib — Интеграция скелетной анимации в raylib[10]
- cimgui-raylib — модуль интеграции Dear Imgui для raylib[11]
Награды
- В апреле 2019 года Сантамария был награждён Google Open Source Peer Bonus за вклад в open-source экосистему своей библиотекой raylib.[12]
- В августе 2020 года raylib получил Epic MegaGrant от Epic Games для поддержки развития проекта.[13]
- В апреле 2021 года Сантамария был награждён ещё одним Google Open Source Peer Bonus по той же причине.[14]
- В марте 2022 года raylib был номинирован в категории BEST GAME ENGINE на MOBILE GAMES AWARDS 2022.[15]
См. также
Примечания
Ссылки
Шаблон:Список игровых движков Шаблон:Изолированная статья
- Русская Википедия
- Страницы с неработающими файловыми ссылками
- API
- Библиотеки Си
- Графические библиотеки
- Аудиобиблиотеки
- Кроссплатформенное программное обеспечение
- Windows API
- OS X API
- Программное обеспечение для разработки компьютерных игр
- Страницы, где используется шаблон "Навигационная таблица/Телепорт"
- Страницы с телепортом
- Википедия
- Статья из Википедии
- Статья из Русской Википедии