untode.su

Voxelius rewrite and maybe a video

I began cleaning up the source tree which apparently just ends with a rewrite, although in my terms a “rewrite” isn’t a particular “make from scratch” and more of a “find a better place to put this or that with occasional code styling changes and using better APIs”, so it’s rather a big refactoring rather than a rewrite

Again?! Why???

Simple: my job. During the development of a wee-little full-scaled CAQ suite, I’ve found out that using something other than GLM for mathematics is suddenly a good idea. Enter Eigen, which is particularly cool because it provides a bunch of features I need by default (for instance, hyperplanes and AABBs of TEMPLATED STORAGE TYPE). Another good reason is that the entire source tree has become a big mess considering all the systems are intermingled with each other. So this rewrite-slash-refactoring is aimed at separating them more and utilizing some techniques employed in the master branch currently.

What’s going to change

Source tree hierarchy

I decided to make the entire engine/core of the game structured similar to how a certain game engine is (obviously I am talking about Godot) with a strict separation into namespaces:

Architecture

Rendering

Won’t change much, but I would like to keep most shaders compiled-in, but allow for some launch-time customization for post-processing effects if they would even become a thing.

What’s after that?

You probably want to ask me why even do a rewrite at this point since you already had a bunch of public tests? The answer is quite trivial as well. I want to start expanding the community because I can’t invest as much time into development as I did back in 2022; now I have a job and an apartment I have to take care of, so it’s kind of a hassle to also full-time on a hobby game alone.

Where’s the code?

For now it’s private. When the time comes, will make a one huge fat commit that just syncs up the current repository (untodesu/voxelius) with the new source code, but as of now the game is in a working state, can be compiled and played (on the public test server) even though versions are different (protocol versions aren’t)