Monday, September 10, 2012

Project Ginshu - Needs More Beige

A quick status update so you know what's going on. I have bad and good news. The bad news: there's no new build of Ginshu or Beige for you to check out this week. The good news: we have a few screenshots and concept art for you to look at, and next week, Ginshu Alpha 25 (we're counting weeks, skipping 22, 23 and 24) is going to be out, using the new engine.
This week marks the last week of the Blender Game Engine to Beige transition. This is the stuff I've done last week (I'm constantly going to interrupt this boring list with Sylvia's new concepts for you to look at. It's a marriage of aesthetics and functionality!):

- The logic bricks are all being serialized and the beige runtime is able to load Ginshu's modules, with a few fixes on both sides and a lot of stub modules on Beige's side.

- Blender got an entire new render mode, "Beige", which its own sets of panels and the ability to start the runtime viewer from the editor.

- The attributes I had previously patched into our customized Blender fork "Mender" have been translated into the addon, so we can now augment regular blender objects with additional properties from Python. This means we no longer need Mender to add new features, and can continue to use and upgrade with regular Blender releases. We're back at Blender 2.63.
This is what's left to do this week:

- Beige currently loads and renders all scenes instead of just the startup scene, but all we need is just the startup scene, and the Ginshu code picks up the rest of the tasks from here.

- Many of our scenes use subscenes as object repositories. Beige needs to be able to flatten these just as BGE does it.

- I'll be reimplementing needed BGE interfaces as i play through the game, starting from the menu.
- That means the blf (blender font) module will need to be implemented, which either needs freetype integration (insert displeased smiley here) or at a font generator, which is the better choice.
- The bgl module, which exposes the GL interface to Python, is based on OpenGL 2.1, but Beige uses OpenGL 3.x.  The bgui module makes use of glBegin/glEnd, which does no longer exist in GL 3.2, so we'll need a small wrapper for these old calls.

- The aud module (which wraps OpenAL) is prepared, but is likely to remain a stub for this week if time runs out (I predict it does); Alpha 25 is likely to have no sound, but alpha 26 will be sonified (I just made that word up) again.

- From here on the largest batch is about implementing sensors, actuators and BGE API's until Ginshu's game code runs again. I'll not be implementing the entire interface, just what is required.

- The final part is re-adding all the physics code, which is needed for collisions as well. I've worked on Python bindings for Bullet last week, so we can use the same physics engine that Blender uses.
That's about it. See you next week. :)