Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/wilsonsilva/raylib-ruby
Ruby bindings for raylib, a simple and easy-to-use library to enjoy videogames programming.
https://github.com/wilsonsilva/raylib-ruby
game game-development game-engine raylib raylib-c raylib-rb raylib-ruby ruby ruby-game ruby-games ruby-gem
Last synced: 2 months ago
JSON representation
Ruby bindings for raylib, a simple and easy-to-use library to enjoy videogames programming.
- Host: GitHub
- URL: https://github.com/wilsonsilva/raylib-ruby
- Owner: wilsonsilva
- License: zlib
- Created: 2023-09-24T15:21:14.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2023-11-03T06:00:42.000Z (about 1 year ago)
- Last Synced: 2024-04-25T15:20:59.470Z (9 months ago)
- Topics: game, game-development, game-engine, raylib, raylib-c, raylib-rb, raylib-ruby, ruby, ruby-game, ruby-games, ruby-gem
- Language: Ruby
- Homepage: https://raylib-ruby.com
- Size: 6.64 MB
- Stars: 10
- Watchers: 1
- Forks: 0
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE.txt
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
README
# Raylib for Ruby
![raylib-ruby logo](.github/assets/raylib-ruby.png)
Ruby bindings for [raylib](https://www.raylib.com/), a simple and easy-to-use library to enjoy videogames programming.
## Features
- Feature parity with [raylib 4.5](https://github.com/raysan5/raylib/tree/4.5.0)
- **NO external dependencies besides [raylib](https://github.com/raysan5/raylib/tree/4.5.0)**, all required libraries are [bundled into raylib](https://github.com/raysan5/raylib/tree/master/src/external)
- Multiple platforms supported: **Windows, Linux, MacOS, RPI... and more!**
- Hardware accelerated with OpenGL (**1.1, 2.1, 3.3, 4.3 or ES 2.0**)
- **Unique OpenGL abstraction layer** (usable as standalone module): [rlgl](https://github.com/raysan5/raylib/blob/master/src/rlgl.h)
- Multiple **Fonts** formats supported (TTF, 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)
- Shaders support, including model and **postprocessing** shaders.
- **Powerful math module** for Vector, Matrix and Quaternion operations: [raymath](https://github.com/wilsonsilva/raylib-ruby/blob/main/lib/raylib/raymath/)
- Audio loading and playing with streaming support (WAV, OGG, MP3, FLAC, XM, MOD)
- **VR stereo rendering** support with configurable HMD device parameters
- Huge examples collection with [+65 code examples](https://github.com/wilsonsilva/raylib-ruby/tree/main/examples)!
- **Free and open source**.
- Linter for best practices: [rubocop-raylib](https://github.com/wilsonsilva/rubocop-raylib)## Installation
1. Follow the instructions on the [native raylib wiki](https://github.com/raysan5/raylib#build-and-installation) to install the __native raylib library__ on your operating
system.2. Install the gem by executing: `bundle add raylib` or `gem install raylib --pre`
## Usage
Raylib can be used in two ways: __namespaced__ or __global__.
### Namespaced
The namespaced usage is recommended as it avoids global namespace pollution:
```ruby
require 'raylib'Raylib.init_window(800, 450, 'My window')
until Raylib.window_should_close
Raylib.begin_drawing
Raylib.clear_background(Raylib::WHITE)
Raylib.draw_text('Congrats! You created your first window!', 190, 200, 20, Raylib::BLACK)
Raylib.end_drawing
endRaylib.close_window
```### Global
If you prefer to use Raylib globally, you can require the `raylib/dsl`:
```ruby
require 'raylib/dsl'init_window(800, 450, 'My window')
until window_should_close
begin_drawing
clear_background(WHITE)
draw_text('Congrats! You created your first window!', 190, 200, 20, BLACK)
end_drawing
endclose_window
```In the code above, `require 'raylib/dsl` is a shorthand for `require 'raylib'` + `include Raylib`.
## Development
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can
also run `bin/console` for an interactive prompt that will allow you to experiment.To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the
version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the
version, push git commits and the created tag, and push the `.gem` file to [rubygems.org](https://rubygems.org).## Contributing
Bug reports and pull requests are welcome on GitHub at https://github.com/wilsonsilva/raylib-ruby. This project is intended
to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the
[code of conduct](https://github.com/wilsonsilva/raylib-ruby/blob/main/CODE_OF_CONDUCT.md).## License
The gem is available as open source under the terms of the [zlib/libpng License](https://opensource.org/licenses/zlib).
## Code of Conduct
Everyone interacting in the Raylib project's codebases, issue trackers, chat rooms and mailing lists is expected to
follow the [code of conduct](https://github.com/wilsonsilva/raylib-ruby/blob/main/CODE_OF_CONDUCT.md).