VectorStorm engine v2

Screen Shot 2014-02-15 at 11.41.05 pmSo here’s some news. I’m going to be going full-time on VectorStorm and MMORPG Tycoon 2 in a few months. I expect that development will substantially speed up when that happens.

As I’m preparing for that, I’m doing some much-needed housekeeping on my core VectorStorm game engine — the sort of “quality of life” improvements which I probably won’t be willing to spend time on once I’m not earning income from a side job.  In essence, I’m heavily revamping the core VectorStorm game engine.  (As part of this, I’ll probably change the name;  the engine really isn’t about vector graphics any more!)

The most notable change is that I’m dropping support for OpenGL 1.3 — this new version of the VectorStorm engine (whatever it’s eventually called) will require a minimum of OpenGL 2.1.  This means that the fixed-function rendering pipeline is completely gone, and everything is now rendered via shaders.  I expect that this should be okay for everyone — OpenGL 2.1 has been around for more than a decade;  even small machines with integrated graphic chipsets should be perfectly fine with it.  The only real reason why people used OpenGL 1.3 with the VectorStorm engine in the past has been that that was the only way to avoid the (somewhat costly) bloom effect which made vector lines appear to glow — that effect will now be configurable separately from the OpenGL version being used.

This change is in progress.  The screenshot above is of MMORPG Tycoon 2 rendering under the new engine.  (It looks almost identical to previous shots, although there’s actually some fancy new tech under the hood making it work.)

Here are my notes for the changes to the engine:

  • Configurable render pipeline.  Instead of the hardcoded ones in the current VectorStorm library (“render every registered scene and then stop”), you’ll be able to specify what scenes get rendered to what render targets, and how those render targets get combined.  (not yet implemented)
  • Fixed-function-style matrix path has been removed.  We now pass custom matrices to shaders ourselves, so that shaders may check a point’s world position, instead of only knowing local and eye-space positions.  This change involved removing a number of display list commands  (“SetCameraTransform”, etc).
  • Materials now support up to four textures per triangle.  (Previously, supported a maximum of one).
  • “vsRenderScheme” architecture has been removed.  vsRenderSchemeShader has become vsRenderer_OpenGL2, and vsRenderer has become an abstract base class.