Rebirth News

Two bits of news about Rubygame and Rebirth today.

First, I laid out some goals / guiding principles for Rebirth. I don't know if they're of interest to anyone else, but here they are:

  1. Ease of use. It should be natural to express game behavior, without needing to jump through hoops. Use of defaults and constraints to suggest a course of action and reduce the "burden of choice" on developers.
  2. Flexibility. Rebirth should be able to handle games of many types and genres; physics or non-physics, action or slow-paced.
  3. Object-oriented. It should focus on game objects and how they behave and interact, not on the mechanics of image blitting and event management.
  4. Examples. Plenty of running example games to help users get started and see how the library can / should be used.
  5. Documentation. Every module, every class, every method documented, plus tutorials with examples about various important concepts and features.
  6. Behavior-driven development. Spec first, then implement. Full spec coverage, master branch is always green.
  7. Small, incremental releases. Every feature should be a release, very release should add or refine a feature. Avoid build-ups.

These goals (especially 3, 4, 6, and 7) reflect what I consider to be Rubygame's shortcomings.

Second, it's becoming more clear that Rebirth could be just a layer on top of Rubygame and ruby-opengl. In fact, that's just what I did last summer, in the original Rubygame 3.0 branch. Really, the work I'm doing now is just another refinement of the ideas that I was thinking last summer. (There's probably some good code I can lift from that branch.) So, it might be that Rebirth will be an add-on to Rubygame, rather than a replacement.

There's also the possibility of incremental revisions to Rubygame to bring it closer to my goals with Rebirth. The problem there is that it's a slow process, and that carries the risk of losing interest. It would also lack the freedom to make radical changes that you get with something new.


Denor submitted a comment on #

The only problem I can forsee with making Rebirth an add-on is that you’re still, at some level, dealing with the inadequacies of the lower-level libraries (i.e. sdl_gfx and sdl_mixer). Though, while you’re breaking backwards compatibility, you could just really break it and switch to OpenGL and OpenAL as Rubygame backends. That may end up being (even) more work than it sounds.

(I say this as someone who still hopes to use what was Rubygame 3 at the time, if for no other reason than to save myself the trouble of backporting to 2.3 :)

kiba submitted a comment on #

Well..I am ready to move on to the new API, especially if it make development of games faster and easier.

The fact that I might not have to worry about blitting is especially appealing.

John Croisant submitted a comment on #

I’m thinking maybe the thing to do is proceed with Rebirth, then consider backporting (or letting someone else backport) the new features to Rubygame if I/they feel like it.

sparkymat submitted a comment on #

well.. i fully support that Rebirth shud be done on its own instead of incrementally enhancing Rubygame.. i waited for a few months for Rubygame 3.0 , might as well wait some more for Rebirth :)

Beoran submitted a comment on #

My feeling is, that, although a higher level API would be very nice, it wuld take Rubygame farther away from what I need it to be, at least for my plans of programming.

My vision of what Rubygames should be is that is should basically be basicaly what Pygame is to Python. Pygame also maintains mostly a middle-level approach, including stuff like blitting, layered over SDL.

Several frameworks have been built on top of Pygame, each framework catering to different types of games. I think that different game genres are all so different, that every game genre needs a different high level framework. So, for my admittedly selfish needs, I think it would be better if Rebirth was an add on to Rubygame.

However, please don’t let my opinion hold you back. :) I also think that what Denor says makes a lot of sense. Drop SDL and go for OpenAL/OpenGL all the way. Then Rebirth won’t be Rubygame anymore, but you get the freedom of a completely blank slate. :)

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