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...
- 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.
- 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.
- 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.
- 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.
- 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.