https://github.com/jeroenjanssens/raylibr
R package that wraps Raylib, a simple and easy-to-use library to enjoy videogames programming
https://github.com/jeroenjanssens/raylibr
raylib rstats
Last synced: 7 months ago
JSON representation
R package that wraps Raylib, a simple and easy-to-use library to enjoy videogames programming
- Host: GitHub
- URL: https://github.com/jeroenjanssens/raylibr
- Owner: jeroenjanssens
- License: other
- Created: 2022-06-24T09:59:58.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2024-05-31T08:15:20.000Z (over 1 year ago)
- Last Synced: 2025-03-18T02:12:13.665Z (7 months ago)
- Topics: raylib, rstats
- Language: R
- Homepage: https://jeroenjanssens.github.io/raylibr/
- Size: 81.2 MB
- Stars: 44
- Watchers: 3
- Forks: 6
- Open Issues: 5
-
Metadata Files:
- Readme: README.Rmd
- License: LICENSE
Awesome Lists containing this project
README
---
output: github_document
---```{r, include = FALSE}
knitr::opts_chunk$set(
collapse = TRUE,
comment = "#>",
fig.path = "man/figures/README-",
out.width = "100%"
)
```# raylibr
This R package wraps [Raylib](https://www.raylib.com/), a simple and easy-to-use library to enjoy videogames programming.
## Installation
You can install the development version of `raylibr` from [GitHub](https://github.com/) with:
```{r, eval = FALSE}
remotes::install_github("jeroenjanssens/raylibr")
````raylibr` is tested regularly on macOS, Linux, and Windows.
## Features
Raylib, the C library that the `raylibr` package wraps, enables you to work with:
* Real-time 2D and 3D graphics
* Keyboard and mouse interactivity
* Music and sound effects
* Physics simulations and collision detection
* Animated models and shaders
* Multitouch, gesture recognition, and even VR headsetsThe `raylibr` package allows you to do all of this from R, and adds the following usability improvements for R users:
* Function and class names are in snake_case (instead of PascalCase used by Raylib)
* Use R vectors and matrices (they're automatically converted to Raylib's `Vector2`, `Vector3`, etc.)
* Vectorized drawing functions (enjoy buttery-smooth animations by letting C++ do the looping)
* Use R color names (e.g., use `"hotpink"` instead of `0xff69b4ff` or `list(r = 255, g = 105, b = 180)`)
* Use only 8 keys to get started (because `raylibr` is an anagram of `library`)## Examples
Here's a "Hello, World!" script to give you an idea of how to use `raylibr`. You can run this script using `demo("helloworld", package = "raylibr")`.
```{r, eval = FALSE}
library(raylibr)init_window(600, 400, "R & Raylib: Hello, World!")
while (!window_should_close()) {
alpha <- abs(sin(get_time()))
begin_drawing()
clear_background("black")
draw_circle(300, 200, seq(150, 10, by = -10), c("red", "white"))
draw_text(c("hello,", "world!"), 225, c(120, 220), 64, fade("black", alpha))
draw_fps(10, 10)
end_drawing()
}close_window()
```This script produces the following animation:
While basic, it illustrates how to create a window, how to draw shapes (in a vectorized manner), and how to work with colors.
Just imagine what you can do if you add a little keyboard interactivity and some sound effects!Below are a few more examples to whet your appetite.
Run `demo(package = "raylibr")` to see all available demos in R or visit [Raylib's examples page](https://www.raylib.com/examples.html) to see even more examples in C.### Build your own raycaster
Run `demo("raycaster", package = "raylibr")` to reminisce the 90s and learn how raycasters work. Source: [`demo/raycaster.R`](https://github.com/jeroenjanssens/raylibr/blob/HEAD/demo/raycaster.R)
### Play a game of snake
Run `demo("snake", package = "raylibr")` to play this game. Use the arrow keys to control the snake. Source: [`demo/snake.R`](https://github.com/jeroenjanssens/raylibr/blob/HEAD/demo/snake.R)
### Load 3D models and apply post-processing shaders
Run `demo("model", package = "raylibr")` to play this demo. Select a different shader with the left and right arrow keys. Source: [`demo/model.R`](https://github.com/jeroenjanssens/raylibr/blob/HEAD/demo/model.R)
### Bounce thousands of transparent balls
Run `demo("balls", package = "raylibr")` to play this demo. Source: [`demo/balls.R`](https://github.com/jeroenjanssens/raylibr/blob/HEAD/demo/balls.R)
### Animate cubes while playing music
Run `demo("cubes", package = "raylibr")` to play this demo. Source: [`demo/cubes.R`](https://github.com/jeroenjanssens/raylibr/blob/HEAD/demo/cubes.R)
### Beatbox like Jeroen
Run `demo("beatbox", package = "raylibr")` to drop some beats. Press the `[a-zA-Z]` keys to play the 52 samples recorded by yours truly. Silence the cacophony by pressing Space. Source: [`demo/beatbox.R`](https://github.com/jeroenjanssens/raylibr/blob/HEAD/demo/beatbox.R)
## Acknowledgements
* [Ramon Santamaria](https://twitter.com/raysan5) for creating [Raylib](https://www.raylib.com/), the C library that makes this all possible.
* [Dirk Eddelbuettel](https://twitter.com/eddelbuettel) and others for creating the [Rcpp package](https://www.rcpp.org/), which enables the interface with Raylib.
* [Mike FC](https://twitter.com/coolbutuseless) for showing me how to [expose C structs as R objects](https://github.com/coolbutuseless/cstructr).
* [Jared Lander](https://twitter.com/jaredlander) and team for allowing me to [present about R & Raylib](https://www.youtube.com/watch?v=Mudz-ykLKbo) at the NYR Conference 2022.
* [David Robinson](https://twitter.com/drob) for encouraging me to put `raylibr` on GitHub.
* [`raylibr`'s contributors](https://github.com/jeroenjanssens/raylibr/graphs/contributors) for improving `raylibr` by submitting issues and pull requests.## License
The `raylibr` package is licensed under the MIT License.