Saturday, November 22, 2014

The Fun Continues

Currently, I am knee-deep in a complete Mana engine rebuild. In a few days, when my girl and I head east for Thanksgiving dinner with her family, I expect it will be waist-deep.

This step really is long overdue.

Mana render objects are conceptually related to OpenGL. There is a ManaFrameBuffer, for example, that is little more than a wrapper for a set of GL functions. If I wanted to use a different graphics library, like DirectX, I'd eventually have to separate them.

So I'm doing that now.

It is satisfying to rebuild the graphics engine from the ground up; using everything I've learned over the last five years. I've had plenty of time to try out various approaches and I already have a functional library that does everything I need. Now I get to optimize and separate it from the base Mana application.

Some of the benefits:
  • Breaking Mana into smaller pieces means faster compilation times.
  • As a separate module, the rendering engine can be connected to other languages and used separately.
  • It will be easier to test on various platforms. I'd like to get Mana working on all of the major ones and this change brings it a step closer.
  • Someone with more graphics knowledge can take over for me and expand its capabilities, without us stepping on each others' toes.
  • Since Mana will no longer rely on the rendering engine directly, it could be hooked up to a different one, such as Unreal or Unity.