raylib - Le Bottin des Jeux Linux

raylib

🗃️ Specifications

📰 Title: raylib 🕹️ / 🛠️ Type: Tool
🗃️ Genre: Development 🚦 Status: 04. Released (status)
🏷️ Category: Development ➤ Framework & Tool ➤ Game Framework 🌍️ Browser version:
🔖 Tags: Development; Library; raylib; 2D & 3D engine; Prototyping; RAD; 3D VR 📦️ Package Name: libraylib, raylib
🐣️ Approx. start: 2013-08-01 📦️ Arch package: ✓
🐓️ Latest: 2023-12-05 📦️ RPM package: ✓
📍️ Version: Latest: 💥️5.0 / Dev: 984e83c 📦️ Deb package:
🏛️ License type: 🕊️ Libre 📦️ Flatpak package:
🏛️ License: zlib 📦️ AppImage package:
🏝️ Perspective: Third person 📦️ Snap package:
👁️ Visual: 2D & 3D ⚙️ Generic binary: ✓
⏱️ Pacing: Real Time 📄️ Source: ✓
👫️ Played: Single 📱️ PDA support: ✓
🎖️ This record: 5 stars 🕳️ Not used:
🎀️ Game design: 👫️ Contrib.: goupildb
🎰️ ID: 16133 🐛️ Created: 2021-11-10
🐜️ Updated: 2024-01-03

📖️ Summary

[en]: A libre, multi-platform library for game prototyping. It was strongly inspired by the Borland BGI graphics library and the XNA framework. It has no interface or debugging tools, as it is intended to be integrated directly into the code. It has no external dependencies, and supports more than 70 programming languages, OpenGL hardware acceleration, 3D, shaders, VR stereo rendering, sound (load/playback) and has powerful font and math modules. It does not provide typical API documentation or a lot of tutorials, the best way to learn to code is to read code. [fr]: Une bibliothèque libre et multi-plateforme destinée au prototypage de jeux. Elle a été fortement inspirée par la bibliothèque graphique Borland BGI et le framework XNA. Elle ne dispose ni d'interface ni d'outils de débogage, car elle est destinée à être intégrée directement dans le code. Elle ne comporte aucune dépendance externe, et supporte notamment plus de 70 langages de programmation, l'accélération matérielle OpenGL, le 3D, les shaders, le rendu stéréo VR, le son (chargement/lecture) et dispose de puissants modules de polices et de mathématique. Elle ne fournit pas de documentation typique de l'API ou d'un grand nombre de tutoriels, la meilleure façon d'apprendre à coder est de lire du code.

🚦 Entry status

💡 Lights on: ✓ 🦺️ Work in progress:
📰 What's new?: 🪙️ Major upgrade New version published (to be updated):
🎨️ Significant improvement: 🚧️ Some work remains to be done:
🕳️ Not used2: 👔️ Already shown:

🎥️ Videos


🦝️ From Users: (202202), (201702), (202109),


📰 Progress: 💥️GameFromScratch (5.0/202312),


🕯️ How To: (2.0/201901), (202101),


🎲️ Gameplay: (202305), (202006), [fr](201708),


🎮️ Showcase: (202307), (201512), (202102),

🕸️ Links

🏡️ Website & videos
[Homepage] [Dev site] [Features/About] [Screenshots] [Videos t(202xxx) gd(202xxx) gu(202202) gu(201702) gu(202109) r(202xxx) lp(202xxx) sc(202307) d(201512) d(202102) d(202107) d(202010) d(202001) d(202104) ht(2.0/201901) ht(202101) g(202305) g(202101) g(202006) g(202005) g[fr](201708) g[de](202xxx) g[ru](202xxx) g[pl](202xxx) g[cz](202xxx) g[sp](202xxx) g[pt](202xxx) g[it](202xxx) g[tr](202xxx)] [WIKI] [FAQ] [RSS] [Changelog 1 2 3]

💰 Commercial: [Support their work (Donate)] [Patreon] [Ko-fi] [Itch.io]

🍩️ Resources
Learning resources
• 💥️ raylib examples (raylib examples to download): [raylib (examples)]

🛠️ Technical informations
[PCGamingWiki] [MobyGames] [Showcase 1(site) 2(itch.io)]

🐘 Social
Devs (raylib Team [fr] [en]): [Site 1 2] [Chat] [mastodon] [PeerTube] [YouTube] [PressKit] [Interview 1(202xxx) 2(202xxx)]
Devs (Ray (raysan5) [fr] [en]): [Site 1 2] [Chat] [mastodon] [X] [PeerTube] [YouTube] [PressKit] [Interview 1(202xxx) 2(202xxx)]
The Project: [Blog] [Chat] [Forums] [mastodon] [PeerTube] [YouTube] [twitch] [PressKit] [reddit] [Discord]

🐝️ Related
[Wikipedia (Raylib) [fr] [en] [de]]

📦️ Misc. repositories
[Repology] [pkgs.org] [Arch Linux / AUR] [openSUSE] [Debian/Ubuntu] [Flatpak] [AppImage (author's repo)] [Snap] [PortableLinuxGames]

🕵️ Reviews
[HowLongToBeat] [metacritic] [OpenCritic] [iGDB] [GameFromScratch (5.0/20231204)]

🕊️ Source of this Entry: [Boiling Steam on mastodon (20211110)]

🐘 Social Networking Update (on mastodon)

🛠️ Title: raylib
🦊️ What's: A libre library for game prototyping
🏡️ https://www.raylib.com
🐣️ https://github.com/raysan5/raylib
🔖 #LinuxGameDev #Library #Programming #Prototyping
📦️ #Libre #Bin #Arch #RPM
📖 Our entry: http://www.lebottindesjeuxlinux.tuxfamily.org/en/online/lights-on/

🥁️ Update: 5.0
⚗️ Major upgrade 🪙️
📌️ Changes: https://github.com/raysan5/raylib/releases
🐘 From: https://mastodon.gamedev.place/@GameFromScratch/111523407051448407
📶️ https://github.com/raysan5/raylib/releases.atom
💥️📰 https://www.youtube.com/embed/hr5fYMgjNiE

🦝️ https://www.youtube.com/embed/kPWShsel6vo
🦝️ https://www.youtube.com/embed/J4eLE9YYQp0
💥️🎮️ https://www.youtube.com/embed/-RROryQQq-s
🎮️ https://www.youtube.com/embed/2QDrTrDEyX0
🎮️ https://www.youtube.com/embed/jYCSkodrg6w

🕶️ A schematic view of the structure of this library divided into functionalities

raylib is a libre, multi-platform library for game prototyping. It was strongly inspired by the Borland BGI graphics library and the XNA framework. It has no interface or debugging tools, as it is intended to be integrated directly into the code. It has no external dependencies, and supports more than 70 programming languages, OpenGL hardware acceleration, 3D, shaders, VR stereo rendering, sound (load/playback) and has powerful font and math modules. It does not provide typical API documentation or a lot of tutorials, the best way to learn to code is to read code.

📕 Description [en]

📕🐧"A libre library for game prototyping"🐧📕

raylib is a simple and easy-to-use library to enjoy videogames programming.

NOTE for ADVENTURERS: raylib is a programming library to enjoy videogames programming; no fancy interface, no visual helpers, no gui tools or editors... just coding in pure spartan-programmers way. Are you ready to enjoy coding?

raylib learning resources
raylib does not provide the typical API documentation or a big set of tutorials. The library is designed to be minimalistic and be learned just from a cheatsheet with all required functionality and a big collection of examples to see how to use that functionality. Best way to learn to code is reading code.

Apart from those materials, there are plenty of tutorials created by the amazing raylib community. It's highly recommended to join the friendly raylib Discord Community to stay up to date of latest raylib news and ask for help when required!


raylib awards
raylib has received several recognitions in the last years and many people have written about the library.

raylib is a simple and easy-to-use library to enjoy videogames programming.

raylib is highly inspired by Borland BGI graphics lib and by XNA framework. Do you want to see all functions available in raylib? Check raylib cheatsheet

raylib supported platforms
raylib supports multiple target platforms, it has been tested in the following platforms but, technically, any platform that supports C language and OpenGL graphics is valid for raylib or can be very easily ported to.

raylib language bindings
You can use raylib in multiple languages (more than 50!).

raylib extra libraries
raylib can be combined with several extra libraries for additional functionality, some of those libraries are already used internally while others are provided for user integration, most of these libraries are single-file header-only with no external dependencies.

raylib technologies tools
raylib is the base technology for raylib technologies tools! Several multiplatform portable standalone user-friendly tools have been developed using raylib and raygui. Check them out!

raylib contributions
I'm working hard on raylib but my resources are limited. If you enjoy raylib and want to help, consider a small donation or contributing to the project on GitHub. Thanks!

raylib features

☑ NO external dependencies, all required libraries are bundled into raylib
☑ Multiple platforms supported: Windows, Linux, MacOS, RPI, Android, HTML5... and more!
☑ Written in plain C code (C99) using PascalCase/camelCase notation
☑ Hardware accelerated with OpenGL (1.1, 2.1, 3.3, 4.3, ES 2.0, ES 3.0)
☑ Unique OpenGL abstraction layer (usable as standalone module): rlgl
☑ Multiple Fonts formats supported (TTF, OTF, Image fonts, AngelCode fonts)
☑ Multiple texture formats supported, including compressed formats (DXT, ETC, ASTC)
☑ Full 3D support, including 3D Shapes, Models, Billboards, Heightmaps and more!
☑ Flexible Materials system, supporting classic maps and PBR maps
☑ Animated 3D models supported (skeletal bones animation) (IQM, M3D, glTF)
☑ Shaders support, including model shaders and postprocessing shaders
☑ Powerful math module for Vector, Matrix and Quaternion operations: raymath
☑ Audio loading and playing with streaming support (WAV, QOA, OGG, MP3, FLAC, XM, MOD)
☑ VR stereo rendering support with configurable HMD device parameters
☑ Huge examples collection with +140 code examples!
☑ Bindings to +70 programming languages!
☑ Free and open source


raylib architecture

raylib is a highly modular library. Everything is contained within a small number of well defined, specific and self-contained modules, named accordingly to its primary functionality. Note that some of those modules can be used in standalone mode.


🌍️ Wikipedia:

Raylib (stylized as raylib) is a cross-platform open-source software development library. The library was made to create graphical applications and games.

The library was inspired by the Borland BGI graphics library and by the XNA framework, and it's designed to be suited for prototyping, tooling, graphical applications, embedded systems, and education. The source code is written in plain C (C99), which is distributed under a zlib/libpng OSI certified open-source license. It supports compilation to several target platforms, including Windows, Linux, macOS, FreeBSD, Android, Raspberry Pi and HTML5.

raylib has been ported to more than 50 programming languages in the form of bindings, but many of these ports are not stable.

History

raylib development started in August 2013 by Ramon Santamaria to support a game development course, focused on students with no previous coding experience and artistic profile; the library acted as a direct replacement of WinBGI. During the course, raylib was further developed based on the feedback of the students and by June 2014, the library was starting to be showcased in several game development events in Barcelona.

raylib 1.0 was released in November 2013 and it featured around 80 functions for window and inputs management, basic 2D and 3D shape drawing, texture loading and drawing, font loading, text drawing, audio system management and audio file loading and playback. The first raylib version had 8 subsequent minor releases (from raylib 1.1 to raylib 1.8), along the course of 5 years, which each introduced some new features. Some of the most notable improvements were Android, WebAssembly and Raspberry Pi support, multiple OpenGL backends, VR support and ten examples.

raylib 2.0 was released in July 2018 and removed all external dependencies from the build system. It also exposed a number of configuration options in the build system, to minimize size and increase support, supporting various continuous integration systems. Along the following two years, parts of the library were reviewed updated, and the ecosystem was built out. A single minor release, raylib 2.5, was released during this period.

raylib 3.0 was released in April 2020, refactoring many parts of the code to improve portability and bindings. It involved moving global variables to contexts, added support for custom memory allocators, a filesystem for loading assets and over 115 code examples. It received a minor update, raylib 3.5, in December 2020.

raylib 4.0 was released in November 2021, featuring a complete naming review for library consistency and coherency: function names, parameters, descriptions, comments and log output messages were reviewed. It added an internal Events Automation System and exposed game-loop control for the user. It also features some of its internal libraries to be used as standalone modules: rlgl and raymath. Zig and Odin programming languages offically support raylib. It has been the biggest update of the library to date.

Features

raylib offers the following features:

• Support for multiple platforms, including Windows, Linux, macOS, Raspberry Pi Android and HTML5
• Support for OpenGL 1.1, 2.1, 3.3, 4.3 and OpenGL ES 2.0 as backend
• Image, textures and fonts loading and drawing from several formats
• Audio loading and playing from several formats and streaming support
• Math operations for vectors, matrices, and quaternions
• 2D rendering with a camera, including automatic sprites batching
• 3D models rendering including custom shaders and postprocessing shaders
• Support for VR simulations with configurable HMD device parameters
• Support for animated as well as non-animated 3D and 2D models
• An example collection with +120 code examples

Reception and adoption

raylib was primarily intended for education on video games and graphics programming. However, since many developers found it simple and easy to use, it has been adopted in various hobbyist projects.

Multiple communities exist for raylib on services such as Reddit and Discord. On the raylib website, a handful of social networks are listed, including the personal sites of Santamaria, and communities dedicated to raylib.

GitHub lists over 120 projects on the raylib topic.

Software architecture

Modules

raylib consists of several modules that are exposed to the programmer through the API.

• core – Handles the window creation and OpenGL context initialization as well as inputs management (keyboard, mouse, gamepad and touch input)
• rlgl – Handles OpenGL backend, abstracting multiple versions to a common API. This module can be used standalone.
• shapes – Handles basic 2D shape rendering (line, rectangle, circle...) and basic collision detection
• textures – Handles image and texture loading (CPU and GPU) and management, including image manipulation functionality (crop, scale, tint, etc.)
• text – Handles fonts loading as spritesheet and text rendering. Also includes some text processing functionality (join, split, replace, etc.)
• models – Handles 3D model loading and rendering, including support for animated models
• raudio – Handles audio device management and audio file loading and playback, including streaming support. This module can be used standalone.
• raymath – Provides a set of math functions for vectors, matrices and quaternions

Bindings

raylib has bindings for more than 50 different programming languages, created by its community, including Rust, Go, C#, Lua, Python, and Nim. A list of bindings is available in the BINDINGS.md file in the raylib GitHub repository.

Many new programming languages like Beef, Odin and Ring provides binding for raylib. The Ring programming language includes raylib in the standard library.

Add-ons

The raylib community has contributed several add-ons to extend the features and connection of raylib with other libraries. Some of the modules are:

• raygui – Immediate mode GUI module for raylib
• physac – physics module intended to be used with raylib
• libpartikel – particle system module for raylib
• spine-raylib – Spine animations integration module for raylib
• cimgui-raylib – Dear Imgui integration module for raylib

Awards

raylib has won a number of awards, which it proudly displays on its website.

• In April 2019, Santamaria was awarded with the Google Open Source Peer Bonus award for contributing to the open-source ecosystem with raylib.
• In August 2020, raylib was awarded with an Epic MegaGrant by Epic Games to support its development.
• In April 2021, Santamaria was awarded with another Google Open Source Peer Bonus award for the same reasons.

Example

The following program in the C programming language uses raylib to create a white window with some centered text.

#include "raylib.h"
int main(void)
{
const int screenWidth = 800;
const int screenHeight = 450;
InitWindow(screenWidth, screenHeight, "raylib [core] example - basic window");
SetTargetFPS(60);

while (!WindowShouldClose())
{
BeginDrawing();
ClearBackground(RAYWHITE);
DrawText("Congrats! You created your first window!", 190, 200, 20, LIGHTGRAY);
EndDrawing();
}

CloseWindow();
return 0;
}

📕 Description [fr]

Une bibliothèque destinée au prototypage de jeux, par la raylib Team, initié par Ray (raysan5).
En C.

raylib est une bibliothèque libre et multi-plateforme destinée au prototypage de jeux. Elle a été fortement inspirée par la bibliothèque graphique Borland BGI et le framework XNA. Elle ne dispose ni d'interface ni d'outils de débogage, car elle est destinée à être intégrée directement dans le code. Elle ne comporte aucune dépendance externe, et supporte notamment plus de 70 langages de programmation, l'accélération matérielle OpenGL, le 3D, les shaders, le rendu stéréo VR, le son (chargement/lecture) et dispose de puissants modules de polices et de mathématique. Elle ne fournit pas de documentation typique de l'API ou d'un grand nombre de tutoriels, la meilleure façon d'apprendre à coder est de lire du code.


raylib est une bibliothèque simple et facile à utiliser pour profiter de la programmation de jeux vidéo.

NOTE pour les AVENTURIERS : raylib est une bibliothèque de programmation pour pratiquer la programmation de jeux vidéo ; pas d'interface fantaisiste, pas d'aides visuelles, pas d'outils gui ou d'éditeurs... juste du codage à la manière des programmeurs spartiates. Êtes-vous prêt à vous amuser à coder ?

Ressources d'apprentissage raylib
raylib ne fournit pas la documentation typique de l'API ou un grand nombre de tutoriels. La bibliothèque est conçue pour être minimaliste et pour être apprise à partir d'une feuille de route contenant toutes les fonctionnalités requises et une grande collection d'exemples permettant de voir comment utiliser ces fonctionnalités. La meilleure façon d'apprendre à coder est de lire du code.

En dehors de ce matériel, il existe de nombreux tutoriels créés par l'incroyable communauté raylib. Il est fortement recommandé de rejoindre la sympathique communauté Discord de raylib pour rester au courant des dernières nouvelles de raylib et demander de l'aide si nécessaire !


Récompenses pour raylib
raylib a reçu plusieurs distinctions ces dernières années et de nombreuses personnes ont écrit sur cette bibliothèque.

raylib est une bibliothèque simple et facile à utiliser pour profiter de la programmation de jeux vidéo.

raylib s'inspire fortement de la librairie graphique Borland BGI et du framework XNA. Voulez-vous voir toutes les fonctions disponibles dans raylib ? Consultez le cheatsheet de raylib

Plateformes supportées par raylib
raylib supporte plusieurs plateformes cibles, il a été testé sur les plateformes suivantes mais, techniquement, toute plateforme supportant le langage C et les graphiques OpenGL est valable pour raylib ou peut être très facilement portée dessus.

Lien entre les langages de raylib
Vous pouvez utiliser raylib dans de nombreuses langages (plus de 50 !).

Bibliothèques supplémentaires raylib
raylib peut être combiné avec plusieurs bibliothèques supplémentaires pour des fonctionnalités additionnelles, certaines de ces bibliothèques sont déjà utilisées en interne tandis que d'autres sont fournies pour être intégrées par les utilisateurs. La plupart de ces bibliothèques sont des en-têtes de fichier unique sans aucune dépendance externe.

Outils des technologies raylib
raylib est la technologie de base pour les outils raylib technologies ! Plusieurs outils multiplateformes, portables, autonomes et conviviaux ont été développés à l'aide de raylib et raygui. Consultez-les !

Contributions à raylib
Je travaille dur sur raylib mais mes ressources sont limitées. Si vous appréciez raylib et voulez aider, pensez à faire un petit don ou à contribuer au projet sur GitHub. Merci !

Caractéristiques de raylib

☑ AUCUNE dépendance externe, toutes les bibliothèques nécessaires sont intégrées dans raylib
☑ Plusieurs plateformes supportées : Windows, Linux, MacOS, RPI, Android, HTML5... et plus encore !
☑ Ecrit en code C (C99) en utilisant la notation PascalCase/camelCase
☑ Accélération matérielle avec OpenGL (1.1, 2.1, 3.3, 4.3, ES 2.0, ES 3.0)
☑ Couche d'abstraction OpenGL unique (utilisable en tant que module autonome) : rlgl
☑ Multiples formats de polices supportés (TTF, OTF, Polices d'images, Polices AngelCode)
☑ Multiples formats de texture supportés, y compris les formats compressés (DXT, ETC, ASTC)
☑ Prise en charge complète de la 3D, y compris les formes 3D, les modèles, les panneaux d'affichage, les cartes de hauteur et bien plus encore !
☑ Système de matériaux flexible, supportant les cartes classiques et les cartes PBR
☑ Prise en charge des modèles 3D animés (animation des os du squelette) (IQM, M3D, glTF)
☑ Prise en charge des shaders, y compris les shaders de modèle et les shaders de post-traitement
☑ Module mathématique puissant pour les opérations sur les vecteurs, les matrices et les quaternions : raymath
☑ Chargement et lecture d'audio avec prise en charge du streaming (WAV, QOA, OGG, MP3, FLAC, XM, MOD)
☑ Prise en charge du rendu stéréo VR avec paramètres configurables du dispositif HMD
☑ Énorme collection d'exemples avec +140 exemples de code !
☑ Bindings pour +70 langages de programmation !
☑ Libre et open source


Architecture de raylib

raylib est une bibliothèque hautement modulaire. Tout est contenu dans un petit nombre de modules bien définis, spécifiques et autonomes, nommés en fonction de leur fonctionnalité principale. Notez que certains de ces modules peuvent être utilisés en mode autonome.



🌍️ Wikipedia:

Raylib une bibliothèque logicielle multiplateforme (Android, FreeBSD, HTML5 (Emscripten2), Linux, MacOS, Oculus Rift CV1 (en), Raspberry Pi, Windows, ainsi que différents systèmes embarqués) sous licence libre licence zlib/libpng3, publiée par Ramon Santamaria a partir de 2013, et orientée vers le développement d'application interactives, telles que les jeux. Elle gère 2D, 3D, (et comporte des fonctions vectorielles, quaternions, etc), audio, réseau.

Elle est développé en langage C et son API qui se veut simple et légère (< 2 Mo) comporte des bindings dans plus de 50 langages, tels que C, Go, Lua, C++, C#, PHP, Rust, D, Python, Odin, Haskell4. Elle peut utiliser les bibliothèques OpenGL jusqu'à 3.3, GL ES 2.0 pour l'accélération matérielle.