It's Been a While...

I've kept trying to write some things for the blog, but always just lose the motivation. I don't really have a lot to show for several months that people would find particularly interesting.

There's a really rough flare effect (this video is actually rather outdated, and they're looking a little more correct now).

I've done some work experimenting with a HUD design for Tonic Detox, as you may have noticed.

Bloom looks a little different now compared to before.

The editor is still a long way off from being actually useful, but is also gradually making progress.

You can now reload shaders on the fly.

And that's about all I've got on the show-and-tell department.

Much of the work has been less visual, and more just figuring out how various systems should be designed.

For instance, previously a world in the engine was made up of rooms, and each room has a body. The body itself would be made up of polygons (converted into triangles by the engine), with each polygon having an assigned material and flags specifying behaviour.

What I'm working on to replace this is, I guess, essentially a more formal scene-graph. There is a root node and then attached from there are rooms, and under each room you have brushes, entities, lights, cameras and more. A brush can be attached to an entity, or a light can be attached to an entity, or entity to light, or camera to brush, etc.

The benefit of this is that all the transforms, portal traversal, and other similar functionality can be implemented in a more uniform manner, and it will serve towards some of the more complex hierarchical behaviour that I've wanted - imagine building a robot out of brushes and then attaching those to an entity, and the entity can look those brushes up and procedurally animate them - that's where I want to end up with this.

I admit however there is an element of feature-creep in the works and that is my desire to make what a brush is a little less defined; a brush in the engine is absolutely interpreted as a building block for the environment, but as to how it's produced, drawn, collided with, etc., I've been experimenting with making it possible to implement multiple types.

So for example, there is a polygonal brush which is an internal foundational type that the engine exposes - your whole environment could be one polygonal brush - and then you can place other polygonal brushes elsewhere for detail/clutter that could just instance an existing polygonal brush you made elsewhere.

And then there is a "terrain" brush, which in this case is a game-specific brush that's implemented through the exposed API, the idea here being that the game can implement a brush that uses a height-map but, because in this case it's a project I want to do sooner rather than later, I can just implement the bare minimum of what I need rather than making it a large engine feature.

Again, it's an element of feature-creep, but I'm rather invested in seeing if it can work.

Besides that, I've also been working on getting a pipeline in-place for bringing skeletal models into the engine. It used to support this to a limited extent (i.e., static models), but the entire way the engine interacts with content has changed a bit since then and the implementation got thrown out a window.

I think that's about all I've got in me to write about for now.