Oswald Hurlem  —  1 month ago [Edited 35 minutes later]
I'm planning to put up a few interesting tech posts soon (within a week), but before that, I want to give some context for them, in the process telling you where I've been for the past few months. With YAVE, I've always entertained the possibility that I'd integrate the features I've written into a larger game engine. A voxel engine is only distinguished from a more typical game engine in a few ways, such as world streaming, rendering, lighting, AI, and physics. Well, that's more than a few ways, but, game development also involves a lot of grunt work, which I'd like to sidestep if possible. Tasks like importing assets, having cross-platform compatibility, running animations, and mixing sounds are all fairly perpendicular to what makes a voxel engine special.

The allure of releasing YAVE as an addtion to a larger engine was reinforced during the experience of making a gameplay prototype in Unity. I felt that the plugins available for voxel game development did not accomplish nearly enough of the tasks I expected them to, or did not do them well enough. Most of them merely allowed users to generate voxel terrain and make a mesh of it. This is the most glamorous aspect of a voxel engine development, but also one of the easiest. Tasks like updating the terrain meshes without stalling the game, attaining a high draw distance, loading from and unloading to the disk, performing lighting... these remain difficult tasks. I was surprised! Using voxels is one of the best ways to prototype both 3D games and the environments within. Additionally, from a market perspective, That One Voxel Game You Might Have Heard Of now serves as an entry point for millions of people to get into both playing and developing games. One of the most baffling things I encountered was a development team which refused to fulfill a popular request to have their voxel system allow for textured voxels, instead requiring users to arduously use single-color voxels.

This all seemed bizarre. This all seemed like... an opportunity.

I initially was not sure I could integrate a lot of YAVE's processes into a larger game engine, but recently, Unity has come out with a number of updates that make this task a lot more feasible. Here is a screenshot of a bit more than 1 million cubes displayed in Unity. It uses APIs that were only just recently added to Unity.

I think something funny is going on with Unity's FPS timer. But I'm actually not sure. Regardless, I am happy to announce that YAVE will now continue its development as a Unity plugin, now under the name of Vo-

Wait a second, I just got a phone call.

Oh, what?

Do they really?

OK can you hold?

Yeah I heard.

Is it really true?

I mean, it seems sort of petty...

OK. Bye.

OK I'm back. Sorry. I just got a call from one million internet users who say that making a game with a uniform grid of textured cubes is not the same thing as making a game with voxels.

In the interest of not having this stressful conversation again, I am going to avoid the V-word as much as possible from here on out, and instead say that my product operates on "Swedish Cubes." That's what it will be called. Swedish Cubes for Unity. Everyone will still know what it is, nobody will correct me on my use of jargon, and nobody will say that I don't openly acknowledge my inspiration and primary competitor. I just had to throw a bunch of logos out, so here is one I made with MS Paint, using my non-dominant hand.

I am being funny, but this is not a joke. With Swedish Cubes for Unity I aim to provide a Swedish Cube game development tool that is better than all the others available. One that looks better and runs better than existing products, but still inspires creativity via constraint. I want Swedish Cubes to be a completely unsurprising product, one that just does what people expect it to do, and allows its users to earn money from the original games they make with it.

If you are worried that turning my product into a Unity plugin means that it will no longer be Handmade, worry not. I am already using native code for sections of code which are performance-critical. SCFU will execute its tasks on multiple CPUs and on GPUs, and I refuse to let the immersiveness of this genre of games be ruined by worst-case garbage collection scenarios.

More updates soon.
Log in to comment