Great upgrade! Thanks and keep the awesome work!
DragonRuby Game Toolkit 3.0 Release Candidate
Version 3.0 is at the release candidate stage! Here is the changelog for the release:
3.0 Change Log
[Note] Don’t panic or be afraid to upgrade.
This is a major release of DragonRuby Game Toolkit. It supports Ruby 3.0 language features and contains apis that are anywhere from 30% to 200% faster.
Even though there are breaking changes, the exceptions that may occur should be fairly straightforward to fix. If you need help, come to the DragonRuby Discord Server and we’ll help you upgrade.
- A new 3D sample app has been added that shows how to perform
Matrixtransforms: The sample app is located at
- A Performance based sample app has been added that shows how to use
Struct: The sample app is located at
- Labels can support larger font sizes.
- Structs can be used with
gtk.benchmarkis a bit more accurate.
- Rendering performance improved for
[BREAKING] Arithmetic and comparison operations no longer attempt to coerce/infer types. You will receive exceptions because of this. General troubleshooting tips for these exceptions:
- Carefully read the
Exceptionsthat are thrown (come to our Discord if you need help).
- Make sure all references to
args.statehave been initialized to a default value.
Int/Floatoperations to make sure they are operating on variables that have been initialized with a default value.
Stringoperations to make sure they are operating on variables that have been initialized with a default value.
Enumerableoperations to make sure they are operating on variables that have been initialized to a default value. Special thanks to erquint@discord, leviondiscord@discord, and danhealy@discord for continuing to raise debugging concerns with respect to arithmetic/implicit coercion.
- Carefully read the
[SAFE] Ruby 3.0 language features are now available. The new syntax should be compatible with Ruby 2.0.
[SAFE] Except to see anywhere from 20% to 200% boost in performance overall.
[BREAKING] DragonRuby’s “Level 1” Runtime has been updated to mRuby 3.0. This is a major release of DragonRuby Game Toolkit. The breaking changes should be minimal, but unfortunately do exist. Please report issues in our Discord and we will get them resolved right away: http://discord.dragonruby.org (mention @amirrajan).
A special thank you to podo@discord, hiro_r_b@discord, kfischer_okarin@discord, and leviondiscord@discord for troubleshooting.
A full explanation of DragonRuby’s Multilevel Runtime Architecture can be found here. Please read through it so you have a better understanding of how DragonRuby is different than other Ruby runtimes. It’s VERY IMPORTANT to educate yourself on these differentiators. Especially if you find yourself being asked: “Why are you using Ruby to build games? Ruby is slow.”
[SAFE] [DIVERGENT] DragonRuby’s Runtime returns a
Floatfor integer division (retaining mRuby 2.x behavior). In mRuby 3.0,
0 (Int). In the DragonRuby Runtime,
0.5 (Float). Use
Numeric#idivfor integer division.
[SAFE] [DIVERGENT] DragonRuby’s Runtime retained
randgeneration algorithms from mRuby 2.0. Incorporating 3.0’s RNG algorithm would have resulted in unnecessary breaking changes that would have invalidated replays of existing games.
Hashin most cases will not discriminate between
Intkeys (where the number after the decimal point is
0). This was existing mRuby 2.0 behavior and was retained within this major release to avoid unnecessary breaking changes related to key lookup.
args.inputs.mouse.wheelreports the correct direction on non Mac machines.
dragonruby-httpdworks with Chrome.
- Crashes related to unsupported Korean keyboard events on MacOS have been resolved. Thank you podo@discord for troubleshooting.