Rubygame 3: Day 21

Checked in the first draft of Scene today.

I sometimes worry that I'm making the new Rubygame system too rigid and inflexible. That it will be harder to do weird, unusual stuff with it because of its well-defined structure. That I'm dictating how people use Rubygame: "Your game must have a Scene. The Scene must have Sprites. The Sprites must have a Body and Shapes and an image."

When I worry that way, I try to remind myself that having some structure is a good thing. The point of Rubygame is to take care of the boring stuff, the stuff that every game has to have but is a chore to write, so that game developers can focus their efforts on the interesting, fun stuff that makes their game different from any other one.

In this way, Rubygame is expanding from library into the realm of frameworks. Rubygame has always been about providing a set of tools, but now it's also providing a recommendation about the structure of your game. Even more than a recommendation, it's providing the foundation and a few I-beams for the building to rest on.

You can find this same train of thought in two of my musings from last summer:

  1. Looking at Rails (July 5)
  2. Defaults and Constraints (August 2)

It's only because I know that the advantages of the new structure outweight the imposed constraints, that I can bear to go through with it. Plus, as far as constraints go, the ones imposed by this system are actually pretty flimsy.


Denor submitted a comment on #

Just wanted to add a comment here to say that I think Rubygame 3 is giving the best of both worlds. The Scene and physics stuff is removing a lot of the otherwise near-identical code I’d have to rewrite when I made a new game, and that’s pretty beneficial.

On the other hand, nothing that I’ve seen so far about Rubygame3 is forcing me to use the new features. I can still get my own EventQueue, handle my own events, and manually draw and update my own images on the screen. So long as that’s still possible, I don’t think you’re forcing anything on anyone.


Have something interesting to add to the discussion? Email your thoughtful comments to