I've decided on the relationship between Rebirth and Rubygame. Or rather, the relationship came naturally, and it seems agreeable, so it's the direction I'm going to go.
In Rebirth 0.1, the View class wraps around Rubygame's Screen class with a different API. As you can see in the source, View just sets the screen mode, then stores the Screen as a class variable. (Right now it doesn't do anything with it, but it will for setting title, etc.)
This arrangement came out of simple laziness — I did the least amount of work to fulfill the specifications of the View class. And it works really well having Rebirth sitting on top of Rubygame. Rebirth can be pure Ruby, and take advantage of Rubygame's features — opening a screen, loading images, getting events, etc. Features that Rebirth doesn't need (Rects, Surface blitting, etc.) it can just ignore.
What this means is that Rubygame will continue to develop on its own, and Rebirth will be a new based on top of it. This is good for both libraries, in fact:
- It keeps my interest and motivation up, because I get to work on something new and fresh.
- It gives me an excuse to use and improve Rubygame as well, adding new features I need for Rebirth.
- It won't interfere with games that are just using Rubygame (no major backwards compatibility breaking).
So, that is the happy news!