Waffles, Names, and Rubygame 2.4

Waffles! No, not the crunchy, delicious breakfast food. I'm just poking fun at my own tendency to decide on something, then switch positions a little bit later (this is sometimes called 'waffling').

I said last time, that the resource naming functionality wouldn't be in Rubygame 2.3, but instead by in a later version, because it wasn't finished yet and I didn't want to delay 2.3 for an unnecessary feature. But, as I was working on the roadmap for 2.4, which will be about events, I had a change of plans.

I'll get back to 2.3 later, but here's a tentative roadmap for 2.4, which is 100% guaranteed to change as time goes on:

  • New hook-based event system. EventHandler, EventHook, etc. Also, magic_hooks and probably some other convenience stuff.
  • New Events module, containing new event classes, which will have new names, mostly to make the names shorter and nicer: e.g. KeyDownEvent —> Events::KeyPress, MouseMotionEvent —> Events::MouseMove. Obviously, you can do "include Rubygame::Events" and get access to them on the toplevel namespace.
  • The old event classes and integer constants will still be around, but deprecated.
  • The new keyboard event classes will use symbols instead of integer constants.
  • Unicode strings for the new key press class.

This is continuing my recent theme of pulling out individual features from the 3.0 branch and adding them in a backwards-compatible way, while simultaneously deprecating the old features that they replace.

Okay, back to the topic of 2.3. As you can see, the resource naming functionality doesn't really belong in 2.4. (That's right, the entire basis of my switching position, is that something doesn't fit in with the other things.) But, it does fit in with 2.3 nicely, and 2.3 needs a minor feature to complement the two new classes. So right now, I'm in favor of adding the resource naming into 2.3, after all.

There are some non-obvious complexities involved in implementing it (e.g. if I put the functionality in a ruby-coded mixin, the mixin will need to be loaded before the C-coded classes that use it), but it's not a terribly difficult task. Rubygame 2.3 probably won't be released this weekend, but I'm hoping to have this last feature complete.


Piotr Usewicz submitted a comment on #

Mate, move to GitHub :) Seriously.

Shawn Anderson submitted a comment on #

An interesting read may be Publisher. I really like the interface for setting up callbacks. Take a look here: http://rubyforge.org/projects/atomicobjectrb/

@car.when :crashing do

Have something interesting to add to the discussion? Email your thoughtful comments to comments@rubygame.org.