in development

rise of the toolkits

Codebases tend to accumulate cruft. Useful functions accumulate into application classes. Once the classes reach critical mass, they drop below the application layer into libraries. Libraries service multiple projects, consuming all that can be reused.

Now and again, they have to be weeded.

I’ve dropped the Soar toolkit out of active development and folded a copy into the Easy and Gas game projects for their support. I had major changes I wanted to make to the interface, and I couldn’t have maintained those older projects without a compatibility layer that I had no time to write. Instead, I’ve ported everything that was worth saving to a new toolkit project.

Rise improves on its predecessor in several respects. From the README:

* Object model separates constructors and prototypes.
* Buffer/bitmap objects are decoupled from GL wrapper objects.
* Helper functions wrapped in identifying namespaces (math, misc) rather then the main object.
* Non-essential functions from SOAR (heightmaps, noise functions) removed.

Though I love prototypal inheritance, I was never comfortable with how I used it in Soar, so I’ve implemented more of an object factory pattern in Rise. I’ve also removed a couple of embarassing singletons.

Mesh and texture objects now wrap GL objects only. Separate data buffer objects can be more easily allocated, deallocted, and passed across Web Worker boundaries.

I’d gotten into the habit of stuffing every useful function that defied categorization into the main Soar namespace object. Bad idea. I still have a “misc” object, but at least it’s documented as such.

There was so much code in Soar for generating heightmaps, and I’d long moved on to marching cubes and polygonization of arbitrary surfaces. Begone, heightmaps.

I want Rise to become a useful tool for my projects in procedural graphics and generative gaming. If it’s of any use to anyone else, feel free to take it for a spin. I’ll be posting a sample project that uses it very soon.