Raylib

Last updated
raylib
Developer(s) Ramon Santamaria and contributors
Initial releaseNovember 18, 2013;10 years ago (2013-11-18)
Stable release
5.0.0 / November 18, 2023;4 months ago (2023-11-18)
Repository github.com/raysan5/raylib
Written in C, specifically C99
Platform Windows, Linux, macOS, FreeBSD, Android, Raspberry Pi, HTML5
Type API
License zlib License [1] [2]
Website www.raylib.com

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

Contents

The library is 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. [5]

History

raylib development was started in August 2013 by Ramon Santamaria to support a game development course, focused on students with no previous coding experience and artistic profile. 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 eight subsequent minor releases (from raylib 1.1 to raylib 1.8), over the course of five 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. During this period, a single minor release, raylib 2.5, was launched.

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 officially support raylib.

raylib 4.2 was released in August 2022. [6]

raylib 4.5 was released in March 2023, 7 months after the last release. This update brought ANGLE support on Desktop platforms, a brand new camera module, support for M3D models and M3D/GLTF animations, compatibility with the QOA audio file format, a brand new module for compressed textures loading (rl_gputex), reviews in the rlgl and the rshapes modules, data structures validation (IsImageReady(), IsTextureReady() and IsSoundReady()) for many raylib structures and many other improvements. It has been the biggest update of the library to date.

raylib 5.0 was released in November 2023, improving support for future platform ports. [7]

Features

raylib offers the following features: [8] [9]

Reception and adoption

As of January 2024, GitHub lists around 900 projects matching the raylib topic. [10]

Software architecture

Modules

raylib architecture as of version 5.0 Raylib architecture v5.0.png
raylib architecture as of version 5.0

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

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 [12] in the raylib GitHub repository.

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:

Awards

See also

Related Research Articles

<span class="mw-page-title-main">Blitz BASIC</span>

Blitz BASIC is the programming language dialect of the first Blitz compilers, devised by New Zealand-based developer Mark Sibly. Being derived from BASIC, Blitz syntax was designed to be easy to pick up for beginners first learning to program. The languages are game-programming oriented but are often found general purpose enough to be used for most types of application. The Blitz language evolved as new products were released, with recent incarnations offering support for more advanced programming techniques such as object-orientation and multithreading. This led to the languages losing their BASIC moniker in later years.

<span class="mw-page-title-main">OpenGL</span> Cross-platform graphics API

OpenGL is a cross-language, cross-platform application programming interface (API) for rendering 2D and 3D vector graphics. The API is typically used to interact with a graphics processing unit (GPU), to achieve hardware-accelerated rendering.

<span class="mw-page-title-main">Simple DirectMedia Layer</span> Free software multimedia library

Simple DirectMedia Layer (SDL) is a cross-platform software development library designed to provide a hardware abstraction layer for computer multimedia hardware components. Software developers can use it to write high-performance computer games and other multimedia applications that can run on many operating systems such as Android, iOS, Linux, macOS, and Windows.

<span class="mw-page-title-main">Allegro (software library)</span> Software library for video game development

Allegro is a software library for video game development. The functionality of the library includes support for basic 2D graphics, image manipulation, text output, audio output, MIDI music, input and timers, as well as additional routines for fixed-point and floating-point matrix arithmetic, Unicode strings, file system access, file manipulation, data files, and 3D graphics. The library is written in the C programming language and designed to be used with C, C++, or Objective-C, with bindings available for Python, Lua, Scheme, D, Go, and other languages. Allegro comes with extensive documentation and many examples.

Irrlicht is an open-source game engine written in C++. It is cross-platform, officially running on Windows, macOS, Linux and Windows CE and due to its open nature ports to other systems are available, including FreeBSD, Xbox, PlayStation Portable, Symbian, iPhone, AmigaOS 4, Sailfish OS via a QT/Qml wrapper, and Google Native Client.

In computing, D3DX is a high level API library which is written to supplement Microsoft's Direct3D graphics API. The D3DX library was introduced in Direct3D 7, and subsequently was improved in Direct3D 9. It provides classes for common calculations on vectors, matrices and colors, calculating look-at and projection matrices, spline interpolations, and several more complicated tasks, such as compiling or assembling shaders used for 3D graphic programming, compressed skeletal animation storage and matrix stacks. There are several functions that provide complex operations over 3D meshes like tangent-space computation, mesh simplification, precomputed radiance transfer, optimizing for vertex cache friendliness and strip reordering, and generators for 3D text meshes. 2D features include classes for drawing screen-space lines, text and sprite based particle systems. Spatial functions include various intersection routines, conversion from/to barycentric coordinates and bounding box and sphere generators.

Cairo (graphics) Vector graphics-based software library

Cairo is an open-source graphics library that provides a vector graphics-based, device-independent API for software developers. It provides primitives for two-dimensional drawing across a number of different backends. Cairo uses hardware acceleration when available.

<span class="mw-page-title-main">Torque (game engine)</span> 3D computer game engine

Torque Game Engine, or TGE, is an open-source cross-platform 3D computer game engine, developed by GarageGames and actively maintained under the current versions Torque 3D as well as Torque 2D. It was originally developed by Dynamix for the 2001 first-person shooter Tribes 2. In September 2012, GarageGames released Torque 3D as open-source software under the MIT License.

<span class="mw-page-title-main">OpenSceneGraph</span>

OpenSceneGraph is an open-source 3D graphics application programming interface, used by application developers in fields such as visual simulation, computer games, virtual reality, scientific visualization and modeling.

<span class="mw-page-title-main">Poppler (software)</span> Free library for creating PDF documents

Poppler is a free software utility library for rendering Portable Document Format (PDF) documents. Its development is supported by freedesktop.org. It is commonly used on Linux systems, and is used by the PDF viewers of the open source GNOME and KDE desktop environments.

Clutter is a discontinued GObject-based graphics library for creating hardware-accelerated user interfaces. Clutter is an OpenGL-based 'interactive canvas' library and does not contain any graphical control elements. It relies upon OpenGL (1.4+) or OpenGL ES for rendering,. It also supports media playback using GStreamer and 2D graphics rendering using Cairo.

<span class="mw-page-title-main">Away3D</span>

Away3D is an open-source platform for developing interactive 3D graphics for video games and applications, in Adobe Flash or HTML5. The platform consists of a 3D world editor, a 3D graphics engine, a 3D physics engine and a compressed 3D model file format (AWD).

<span class="mw-page-title-main">Three.js</span> JavaScript library for 3D graphics

Three.js is a cross-browser JavaScript library and application programming interface (API) used to create and display animated 3D computer graphics in a web browser using WebGL. The source code is hosted in a repository on GitHub.

<span class="mw-page-title-main">Simple and Fast Multimedia Library</span> Graphics and Multimedia Library written in C++

Simple and Fast Multimedia Library (SFML) is a cross-platform software development library designed to provide a simple application programming interface (API) to various multimedia components in computers. It is written in C++ with bindings available for Ada, C, Crystal, D, Euphoria, Go, Java, Julia, .NET, Nim, OCaml, Python, Ruby, and Rust. Experimental mobile ports were made available for Android and iOS with the release of SFML 2.2.

GLFW is a lightweight utility library for use with OpenGL. It provides programmers with the ability to create and manage windows and OpenGL contexts, as well as handle joystick, keyboard and mouse input.

<span class="mw-page-title-main">ORX</span> Game Engine

Orx is an open-source, portable, lightweight, plug-in-based, data-driven and easy to use 2D-oriented game engine written in C.

glTF 3D scene and model file format

glTF is a standard file format for three-dimensional scenes and models. A glTF file uses one of two possible file extensions: .gltf (JSON/ASCII) or .glb (binary). Both .gltf and .glb files may reference external binary and texture resources. Alternatively, both formats may be self-contained by directly embedding binary data buffers. An open standard developed and maintained by the Khronos Group, it supports 3D model geometry, appearance, scene graph hierarchy, and animation. It is intended to be a streamlined, interoperable format for the delivery of 3D assets, while minimizing file size and runtime processing by apps. As such, its creators have described it as the "JPEG of 3D."

<span class="mw-page-title-main">Art of Illusion</span>

Art of Illusion is a free software, and open source software package for making 3D graphics.

<span class="mw-page-title-main">Phaser (game framework)</span> Cross-platform JavaScript video game framework

Phaser is a 2D game framework used for making HTML5 games for desktop and mobile. It is free software developed by Photon Storm.

LÖVE is a free, open-source, cross-platform framework released under the zlib license for developing video games. The framework is written in C++ and uses Lua as its scripting language and is still maintained by its original developers. The framework is cross-platform supporting the platforms Microsoft Windows, macOS, Linux, Android, and iOS.

References

  1. "License".
  2. "Raylib GitHub". GitHub . 10 October 2021.
  3. Thomas (2019-08-01). "Best 2D Game Engines: The Complete List (2020)". Thomas Gervraud. Retrieved 2020-07-20.
  4. "A Snake Game Written in PHP (with Raylib)". thephp.website. Retrieved 2020-07-20.
  5. "raysan5/raylib". GitHub. Retrieved 2020-07-15.
  6. "HISTORY.md File". www.github.com. 11 August 2022. Retrieved 15 October 2022.
  7. Wololo (1 December 2023). "Release: Raylib 5.0 for PS4 & PS Vita" . Retrieved 15 January 2024.
  8. "raylib–A C++ Game Library Perfect For Beginners". www.gamefromscratch.com. 24 July 2016. Retrieved 2020-07-20.
  9. "Raylib 2.5 Released". www.gamefromscratch.com. 3 June 2019. Retrieved 2020-07-20.
  10. "raylib · GitHub Topics" . Retrieved 15 January 2024.
  11. "raylib" . Retrieved 2021-10-28.
  12. BINDINGS.md file
  13. Ray (2020-07-15), raysan5/raygui , retrieved 2020-07-15
  14. Fisac, Víctor (2020-07-14), victorfisac/Physac , retrieved 2020-07-15
  15. Briemann, David Linus (2020-06-10), dbriemann/libpartikel , retrieved 2020-07-15
  16. WEREMSOFT (2020-06-27), WEREMSOFT/spine-raylib-runtimes , retrieved 2020-07-15
  17. WEREMSOFT (2020-07-12), WEREMSOFT/c99-raylib-cimgui-template , retrieved 2020-07-15
  18. "Google Open Source Peer Bonus winners are here!". Google Open Source Blog. Retrieved 2020-07-15.
  19. "rayLib receives an Epic MegaGrant". GameFromScratch.com. 2020-08-07. Retrieved 2020-08-10.
  20. "Announcing the First Group of Google Open Source Peer Bonus winners in 2021!". Google Open Source Blog. Retrieved 2021-04-27.
  21. "MOBILE GAMES AWARD - The Finalists for 2022". MOBILE GAME AWARDS. Retrieved 2022-03-20.