godot-ruby provides a Ruby language binding for Godot game engine. It is designed to be a drop-in replacement of GDScript.
However this project is mainly experimental due to serveral limitations. Use in production is highly not recommended.
Modify the paths in
make. Currently only Linux (and Mac maybe) are supported because the workaround of limitation 3. uses
godot-ruby utilizes code generation to generate Godot apis and bind them to ruby side. By defining C types and Ruby classes, the apis can be automatically generated, as generated.c. Therefore the code for this project is simple.
util folder contains code for generation.
lib contains Ruby codes and
src contains C codes.
- godot-ruby is considerably slower than GDScript (about 15x in my benchmark, see https://github.com/touilleMan/godot-python/issues/101). This could be due to inefficient implementation of pluginscript api.
- Ruby's method semantic is incompatible with the seperate properties and methods in GDScript since there are only methods in Ruby.
For this we have to use
getwhich looks weird:
rect2.position #GDScript rect2.get(:position) #Ruby
- CRuby vm cannot support multi-threading. When godot engine calls the vm in different threads it crashs, which happens in resource preview loading (could be safely bypassed). To solve this we can use MRuby instead or use a single thread to run Ruby vm. However these two all need thread and mutex support and GDNative api currently does not provide one.