Raylib: различия между версиями

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
[непроверенная версия][непроверенная версия]
Содержимое удалено Содержимое добавлено
мНет описания правки
мНет описания правки
Строка 35: Строка 35:
}}
}}


'''Raylib''' (стилизованное написание строчными буквами '''raylib''') это [[Кроссплатформенность|кроссплатформенная]] [[Библиотека (программирование)|библиотека]] с [[Открытое программное обеспечение|открытым исходным кодом]]. Библиотека была разработана для использования при создании игр и мультимедийных приложений.<ref>{{Cite web|last=Thomas|date=2019-08-01|title=Best 2D Game Engines: The Complete List (2020)|url=https://thomasgervraud.com/best-2d-game-engine/|access-date=2020-07-20|website=Thomas Gervraud|language=en-US|archive-date=2020-07-19|archive-url=https://web.archive.org/web/20200719161541/https://thomasgervraud.com/best-2d-game-engine/|deadlink=no}}</ref><ref>{{Cite web|title=A Snake Game Written in PHP (with Raylib)|url=https://thephp.website/en/issue/games-with-php|access-date=2020-07-20|website=thephp.website|language=en|archive-date=2020-07-19|archive-url=https://web.archive.org/web/20200719110442/https://thephp.website/en/issue/games-with-php/|deadlink=no}}</ref>
'''Raylib''' (стилизованное написание строчными буквами '''raylib''') [[Кроссплатформенность|кроссплатформенная]] [[Библиотека (программирование)|библиотека]] с [[Открытое программное обеспечение|открытым исходным кодом]]. Была разработана для использования при создании игр и мультимедийных приложений.<ref>{{Cite web|last=Thomas|date=2019-08-01|title=Best 2D Game Engines: The Complete List (2020)|url=https://thomasgervraud.com/best-2d-game-engine/|access-date=2020-07-20|website=Thomas Gervraud|language=en-US|archive-date=2020-07-19|archive-url=https://web.archive.org/web/20200719161541/https://thomasgervraud.com/best-2d-game-engine/|deadlink=no}}</ref><ref>{{Cite web|title=A Snake Game Written in PHP (with Raylib)|url=https://thephp.website/en/issue/games-with-php|access-date=2020-07-20|website=thephp.website|language=en|archive-date=2020-07-19|archive-url=https://web.archive.org/web/20200719110442/https://thephp.website/en/issue/games-with-php/|deadlink=no}}</ref>


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


raylib можно использовать в более чем 50 [[Язык программирования|языках программирования]] при помощи библиотек привязки, однако не все они имеют стабильные версии.<ref name="raysan5">{{Cite web|title=raysan5/raylib|url=https://github.com/raysan5/raylib|access-date=2020-07-15|website=GitHub|language=en|archive-date=2020-07-14|archive-url=https://web.archive.org/web/20200714050449/https://github.com/raysan5/raylib|deadlink=no}}</ref>
В Raylib можно использовать в более чем 50 [[Язык программирования|языках программирования]] при помощи библиотек привязки, однако не все они имеют стабильные версии.<ref name="raysan5">{{Cite web|title=raysan5/raylib|url=https://github.com/raysan5/raylib|access-date=2020-07-15|website=GitHub|language=en|archive-date=2020-07-14|archive-url=https://web.archive.org/web/20200714050449/https://github.com/raysan5/raylib|deadlink=no}}</ref>


== История создания ==
== История создания ==
{{Unreferenced section|date=Июнь 2022}}
{{Unreferenced section|date=Июнь 2022}}
Разработка raylib началась в августе 2013 года [[Сантамария, Монго|Рамоном Сантамарией]] для поддержки курсов программирования, нацеленных на студентов без предварительного опыта в программировании; библиотека являлась прямой заменой устаревшей к тому времени [[Borland Graphics Interface|графической библиотеки Borland BGI]]. В течение курсов raylib получала дополнительные усовершенствования на основе обратной связи от студентов и к июню 2014 года начала появляться на различных мероприятиях, посвященных разработке игр в Барселоне.
Разработка Raylib началась в августе 2013 года [[Сантамария, Монго|Рамоном Сантамарией]] для поддержки курсов программирования, нацеленных на студентов без предварительного опыта в программировании; библиотека являлась прямой заменой устаревшей к тому времени [[Borland Graphics Interface|графической библиотеки Borland BGI]]. В течение курсов Raylib получала дополнительные усовершенствования на основе обратной связи от студентов и к июню 2014 года начала появляться на различных мероприятиях, посвященных разработке игр в Барселоне.


raylib 1.0 была выпущена в ноябре 2013 года и включала в себя порядка 80 функций для управления созданием окон, обработки пользовательского ввода, отрисовки базовых геометрических форм в 2D и 3D, загрузке и отрисовки текстур, загрузке шрифтов, отрисовке текста, управления звуковой подсистемой с возможностью загрузки и воспроизведения звуковых файлов. Первая версия raylib претерпела восемь небольших изменений (от версии raylib 1.1 до raylib 1.8) в течение пяти лет, каждое из которых привнесло какие-то новые возможности. Среди наиболее заметных улучшений была поддержка платформ [[Android]], [[WebAssembly]] и [[Raspberry Pi]], различных реализаций [[OpenGL]], поддержка [[Виртуальная реальность|виртуальной реальности]], а также создание десяти примеров использования библиотеки.
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 2.0 была выпущена в июле 2018 года и исключила все внешние зависимости из системы сборки. Эта версия также предоставила опции для конфигурирования [[Автоматизация сборки|системы сборки]], предназначенных для уменьшения размера собранной библиотеки и увеличения поддержки различными системами [[Непрерывная интеграция|непрерывной интеграции]]. В течение следующих двух лет части библиотеки подверглись пересмотру и обновлению, а также вокруг библиотеки сформировалась экосистема. Единственным небольшим релизом за этот период являлась версия 2.5.


raylib 3.0 была выпущена в апреле 2020 года. [[Рефакторинг|Переработке кода]] подверглись многие части кода. Её целью стало улучшение [[Кроссплатформенность|переносимости на другие платформы]] и улучшение {{iw|Привязка языка|привязок|en|Language binding}} к другим языкам программирования. Это было достигнуто путем переноса глобальных переменных ближе к контексту, добавленной поддержке пользовательских функций выделения памяти, файловой системы для загрузки {{iw|Цифровой ассет|ассетов|en|Digital asset}}, а также созданию более 115 примеров использования. Эта версия получала единственный небольшой релиз, raylib 3.5, в декабре 2020 года.
Raylib 3.0 была выпущена в апреле 2020 года. [[Рефакторинг|Переработке кода]] подверглись многие части кода. Её целью стало улучшение [[Кроссплатформенность|переносимости на другие платформы]] и улучшение {{iw|Привязка языка|привязок|en|Language binding}} к другим языкам программирования. Это было достигнуто путем переноса глобальных переменных ближе к контексту, добавленной поддержке пользовательских функций выделения памяти, файловой системы для загрузки {{iw|Цифровой ассет|ассетов|en|Digital asset}}, а также созданию более 115 примеров использования. Эта версия получала единственный небольшой релиз, Raylib 3.5, в декабре 2020 года.


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


== Возможности ==
== Возможности ==
raylib поддерживает следующие возможности:
Raylib поддерживает следующие возможности:
* поддержка множества платформ, включая Windows, Linux, macOS, [[Raspberry Pi]], Android and HTML5;
* поддержка множества платформ, включая Windows, Linux, macOS, [[Raspberry Pi]], Android and HTML5;
* поддержка [[OpenGL]] версий 1.1, 2.1, 3.3, 4.3 а также [[OpenGL ES]] 2.0 в качестве [[Фронтенд и бэкенд|бэкенда]];
* поддержка [[OpenGL]] версий 1.1, 2.1, 3.3, 4.3 а также [[OpenGL ES]] 2.0 в качестве [[Фронтенд и бэкенд|бэкенда]];
Строка 66: Строка 66:


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


Существует множество сообществ, посвященных raylib, на сервисах, таких как [[Reddit]] и [[Discord]]. На сайте raylib есть ссылки на социальные сети, включая личные сайты Сантамарии, а также сообществ raylib.<ref name="raylib1">{{Cite web|title=raylib|url=https://www.raylib.com/|access-date=2021-10-28|language=en|archive-date=2021-11-06|archive-url=https://web.archive.org/web/20211106042956/https://www.raylib.com/|deadlink=no}}</ref>
Существует множество сообществ, посвященных Raylib, на сервисах, таких как [[Reddit]] и [[Discord]]. На сайте Raylib есть ссылки на социальные сети, включая личные сайты Сантамарии, а также сообществ Raylib.<ref name="raylib1">{{Cite web|title=raylib|url=https://www.raylib.com/|access-date=2021-10-28|language=en|archive-date=2021-11-06|archive-url=https://web.archive.org/web/20211106042956/https://www.raylib.com/|deadlink=no}}</ref>


[[GitHub]] содержит список 120 проектов использующих тему <code>raylib</code>.<ref name="raysan5"/><ref>{{Cite web|title=Build software better, together|url=https://github.com/|access-date=2020-07-15|website=GitHub|language=en|archive-date=2011-02-23|archive-url=https://web.archive.org/web/20110223090328/https://github.com/|deadlink=no}}</ref>
[[GitHub]] содержит список 120 проектов использующих тему <code>raylib</code>.<ref name="raysan5"/><ref>{{Cite web|title=Build software better, together|url=https://github.com/|access-date=2020-07-15|website=GitHub|language=en|archive-date=2011-02-23|archive-url=https://web.archive.org/web/20110223090328/https://github.com/|deadlink=no}}</ref>
Строка 76: Строка 76:
=== Модули ===
=== Модули ===


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


* core — Управляет созданием окон и инициализацией контекста [[OpenGL]]; также обрабатывает пользовательский ввод (клавиатура, мышь, геймпад и тачпад);
* core — Управляет созданием окон и инициализацией контекста [[OpenGL]]; также обрабатывает пользовательский ввод (клавиатура, мышь, геймпад и тачпад);
Строка 88: Строка 88:


=== Привязки к другим языкам программирования ===
=== Привязки к другим языкам программирования ===
raylib имеет {{iw|Привязка языка|привязки|en|Language binding}}, созданные сообществом разработчиков, включая [[Rust (язык программирования)|Rust]], [[Go]], [[C Sharp|C#]], [[Lua]], [[Python]], и [[Nim]]., для более, чем 50 различных языков программирования. Список доступных привязок находится в файле BINDINGS.md<ref>{{Cite web |url=https://github.com/raysan5/raylib/blob/master/BINDINGS.md |title=BINDINGS.md file |access-date=2022-06-10 |archive-date=2022-06-11 |archive-url=https://web.archive.org/web/20220611023234/https://github.com/raysan5/raylib/blob/master/BINDINGS.md |deadlink=no }}</ref> в raylib GitHub репозитории.
Raylib имеет {{iw|Привязка языка|привязки|en|Language binding}}, созданные сообществом разработчиков, включая [[Rust (язык программирования)|Rust]], [[Go]], [[C Sharp|C#]], [[Lua]], [[Python]], и [[Nim]]., для более, чем 50 различных языков программирования. Список доступных привязок находится в файле BINDINGS.md<ref>{{Cite web |url=https://github.com/raysan5/raylib/blob/master/BINDINGS.md |title=BINDINGS.md file |access-date=2022-06-10 |archive-date=2022-06-11 |archive-url=https://web.archive.org/web/20220611023234/https://github.com/raysan5/raylib/blob/master/BINDINGS.md |deadlink=no }}</ref> в raylib GitHub репозитории.


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


* raygui — [[Графический интерфейс немедленного режима|Immediate mode GUI]] модуль raylib<ref>{{Citation|last=Ray|title=raysan5/raygui|date=2020-07-15|url=https://github.com/raysan5/raygui|access-date=2020-07-15|archive-date=2020-07-14|archive-url=https://web.archive.org/web/20200714031457/https://github.com/raysan5/raygui|url-status=live}}</ref>;
* raygui — [[Графический интерфейс немедленного режима|Immediate mode GUI]] модуль raylib<ref>{{Citation|last=Ray|title=raysan5/raygui|date=2020-07-15|url=https://github.com/raysan5/raygui|access-date=2020-07-15|archive-date=2020-07-14|archive-url=https://web.archive.org/web/20200714031457/https://github.com/raysan5/raygui|url-status=live}}</ref>;
Строка 100: Строка 100:


== Награды ==
== Награды ==
* В апреле 2019 года Сантамария был награждён Google Open Source Peer Bonus за вклад в open-source экосистему своей библиотекой raylib.<ref>{{Cite web|title=Google Open Source Peer Bonus winners are here!|url=https://opensource.googleblog.com/2019/04/google-open-source-peer-bonus-winners.html|access-date=2020-07-15|website=Google Open Source Blog|archive-date=2020-07-29|archive-url=https://web.archive.org/web/20200729140647/https://opensource.googleblog.com/2019/04/google-open-source-peer-bonus-winners.html|deadlink=no}}</ref>
* В апреле 2019 года Сантамария был награждён Google Open Source Peer Bonus за вклад в open-source экосистему своей библиотекой Raylib.<ref>{{Cite web|title=Google Open Source Peer Bonus winners are here!|url=https://opensource.googleblog.com/2019/04/google-open-source-peer-bonus-winners.html|access-date=2020-07-15|website=Google Open Source Blog|archive-date=2020-07-29|archive-url=https://web.archive.org/web/20200729140647/https://opensource.googleblog.com/2019/04/google-open-source-peer-bonus-winners.html|deadlink=no}}</ref>
* В августе 2020 года raylib получил Epic MegaGrant от [[Epic Games]] для поддержки развития проекта.<ref>{{Cite web|date=2020-08-07|title=RayLib receives an Epic MegaGrant|url=https://gamefromscratch.com/raylib-receives-an-epic-megagrant/|access-date=2020-08-10|website=GameFromScratch.com|language=en-US|archive-date=2020-12-04|archive-url=https://web.archive.org/web/20201204075819/https://gamefromscratch.com/raylib-receives-an-epic-megagrant/|deadlink=no}}</ref>
* В августе 2020 года raylib получил Epic MegaGrant от [[Epic Games]] для поддержки развития проекта.<ref>{{Cite web|date=2020-08-07|title=RayLib receives an Epic MegaGrant|url=https://gamefromscratch.com/raylib-receives-an-epic-megagrant/|access-date=2020-08-10|website=GameFromScratch.com|language=en-US|archive-date=2020-12-04|archive-url=https://web.archive.org/web/20201204075819/https://gamefromscratch.com/raylib-receives-an-epic-megagrant/|deadlink=no}}</ref>
* В апреле 2021 года Сантамария был награждён ещё одним Google Open Source Peer Bonus по той же причине.<ref>{{Cite web|title=Announcing the First Group of Google Open Source Peer Bonus winners in 2021!|url=https://opensource.googleblog.com/2021/04/announcing-first-group-of-google-open-source-peer-bonus-winners.html|access-date=2021-04-27|website=Google Open Source Blog|archive-date=2021-04-19|archive-url=https://web.archive.org/web/20210419124244/https://opensource.googleblog.com/2021/04/announcing-first-group-of-google-open-source-peer-bonus-winners.html|deadlink=no}}</ref>
* В апреле 2021 года Сантамария был награждён ещё одним Google Open Source Peer Bonus по той же причине.<ref>{{Cite web|title=Announcing the First Group of Google Open Source Peer Bonus winners in 2021!|url=https://opensource.googleblog.com/2021/04/announcing-first-group-of-google-open-source-peer-bonus-winners.html|access-date=2021-04-27|website=Google Open Source Blog|archive-date=2021-04-19|archive-url=https://web.archive.org/web/20210419124244/https://opensource.googleblog.com/2021/04/announcing-first-group-of-google-open-source-peer-bonus-winners.html|deadlink=no}}</ref>
* В марте 2022 года raylib был номинирован в категории BEST GAME ENGINE на MOBILE GAMES AWARDS 2022.<ref>{{Cite web|title=MOBILE GAMES AWARD - The Finalists for 2022|url=https://www.mobilegamesawards.com/the-finalists-for-2022|access-date=2022-03-20|website=MOBILE GAME AWARDS|archive-date=2022-03-18|archive-url=https://web.archive.org/web/20220318104557/https://www.mobilegamesawards.com/the-finalists-for-2022/|deadlink=no}}</ref>
* В марте 2022 года Raylib был номинирован в категории BEST GAME ENGINE на MOBILE GAMES AWARDS 2022.<ref>{{Cite web|title=MOBILE GAMES AWARD - The Finalists for 2022|url=https://www.mobilegamesawards.com/the-finalists-for-2022|access-date=2022-03-20|website=MOBILE GAME AWARDS|archive-date=2022-03-18|archive-url=https://web.archive.org/web/20220318104557/https://www.mobilegamesawards.com/the-finalists-for-2022/|deadlink=no}}</ref>


== См. также ==
== См. также ==

Версия от 15:38, 5 мая 2024

Raylib
Raylib official logo
Тип API
Разработчики Рамон Сантамария и др.
Написана на C, более конкретно C99
Операционные системы Unix-подобная операционная система, Mac OS[вд], Windows, Android, HTML5 и Oculus Rift CV1[вд]
Первый выпуск 18 ноября 2013; 10 лет назад (2013-11-18)
Аппаратные платформы Windows, Linux, macOS, FreeBSD, Android, Raspberry Pi, HTML5
Последняя версия 4.5.0 (18 марта 2023; 16 месяцев назад (2023-03-18))
Репозиторий github.com/raysan5/raylib
Лицензия zlib License[1][2]
Сайт raylib.com

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

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

В Raylib можно использовать в более чем 50 языках программирования при помощи библиотек привязки, однако не все они имеют стабильные версии.[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 поддерживает следующие возможности:

  • поддержка множества платформ, включая 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 и 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., для более, чем 50 различных языков программирования. Список доступных привязок находится в файле 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]

См. также

Примечания

  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. 1 2 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 (2020-07-15), raysan5/raygui, Архивировано 14 июля 2020, Дата обращения: 15 июля 2020
  10. Fisac, Víctor (2020-07-14), victorfisac/Physac, Архивировано 17 сентября 2020, Дата обращения: 15 июля 2020
  11. Briemann, David Linus (2020-06-10), dbriemann/libpartikel, Архивировано 28 декабря 2020, Дата обращения: 15 июля 2020
  12. WEREMSOFT (2020-06-27), WEREMSOFT/spine-raylib-runtimes, Архивировано 5 сентября 2020, Дата обращения: 15 июля 2020
  13. WEREMSOFT (2020-07-12), 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 года.

Ссылки