Rubygame 3: Day 24

Lots of thoughts thunk and decisions decided today. Of course, I might change my mind about some of these later on, but for now I'm thinking...

  1. I'm throwing away Transform; it was overly complicated for the present need, and was making things hard. Instead, Cameras will have a position, rotation, and zoom. It's relatively simple to find how a sprite will appear given those bits of information. And frankly, it's easier to use and Good Enough for 95%+ of the cases.
  2. Most of the changes I've made to Chipmunk probably aren't necessary. I'm going to try to distill it down to just the bug fixes and essential changes, then submit a patch to the official Chipmunk. Hopefully it will be accepted quickly if there are none of my more radical changes in it. Some of the things that will go: Matrix and the extra P attribute of Vects.
  3. I'm not going to try to use Chipmunk's BB class as a replacement for Rect. I'll let BB remain purely for use in Chipmunk. At some point in the future, Rect might be ported to C for speed, but it's not necessary to worry about that now; the C-Rects will have the same API as the Ruby-Rects, so it's a simple drop-in replacement. But, I might take a look at the Ruby-Rect API and see if there's any backwards-incompatible improvements I should make for 3.0.0.
  4. The old-style sprites and groups will still be in 3.0.0. I might rename the Sprites module to OldSprites to avoid some confusion and slightly discourage their use. Existing games that don't want to upgrade to the new-style sprites can make an alias or something to get around the module name change. Old-style sprites won't be made compatible with Chipmunk or the new Scene system, although it's certainly possible for app developers to make sprites that follow Chipmunk bodies — that could be done even now, with Rubygame 2.
  5. Rubygame 3 is not going to be ready at the end of February. Sad, yes, but it has always been a possibility. I'm still going to see how close I can get before the month is out, but the actual release will (probably) be mid-March. I might do a "pre-release" in early March to get some feedback, with the understanding that the API could change between the pre-release and the actual release.

So that's what I'm thinking.


Have something interesting to say about this post? Email your thoughtful comments to