untode.su

Intermediate Voxelius devlog

I ultimately decided against rewriting Voxelius from scratch and instead just adapting all the knowledge I gained when working on CAQ software at work and on QFortress/QFengine at home; because most of the things came from QFortress, this also serves as a short development log into it although I really doubt it will see the light of day as a game… Instead, I may as well just make Voxelius a shooter. Imagine TF2 but with voxel destruction around some parts!

QFengine forward-porting

A lot of things came from a private repository that sometimes changes its name around with a pool of variants including voxelius-rewrite, qfortress and qfengine. So when I decided to revisit Voxelius, I ported a lot of stuff from there:

Metavoxels: world::Voxel and world::Item

I decided to refactor how voxel and item registry works a bit. Now it operates with pointers to a Voxel class which can be modified if instantiated as a VoxelBuilder class. It basically contains the exact same information as VoxelInfo did except with a more safe approach of only allowing the external code to modify voxel atlas plane offsets…

The exact same thing happened with items, although the item system is still very yuck and will be revised later in the development.

Metavoxels: random ticking

Now world::Voxel has three callback functions for when a voxel is placed, removed or randomly ticked. Random ticking happens in the same manner as with Minecraft and allows a plethora of things to happen. Currently grass spreading and decaying under voxels is implemented.

New versioning schema

The major version is the protocol version now and the clientside UI now accounts for this. Plus most packets now transmit the full version triplet:


TODO

Refactor the core part of the game: io subdirectory should contain things like file handling, GLFW windowing, input drivers, etc; gui subdirectory should contain GUI stuff, maybe split ingame UI into hud or gui/hud; game subdirectory should contain actual gameplay-related code.