untode.su

Voxelius devlog (0.0.1.2512)

On February 17th 2025 I decided to make a slight rewrite of the entire game to integrate almost all the cool features from an internal work-in-progress branch of QFengine (an experimental quake-like game engine that uses Voxelius as a base for its source code tree); One can say I finished today with the release of the second public test in 2025.

Parting ways with Git LFS

People that want to build the project must not be bothered to also install Git LFS addon and enable it for the cloned repository. In general, using LFS kind of became a huge annoying thing that spilled over. Again, the tree has been lost (archived, actually) again (last time I decided to part ways with any kind of GPL’ed code, the archived tree is still a thing as well).

No more crusty singleplayer

I decided against supporting single-player at all. Especially because Voxelius as a game has always been supposed to be a multiplayer-only. If you want an almost singleplayer experince, no one stops you from spinning up a local dedicated server. Sorry not sorry.

Feature generation

After like what? Three months? Yeah… The game now generates nice trees around the world that have absolutely nothing in common with a bigger voxel game made by good people but owned by Microsoft.

1742630607197260.png

1742630931920062.png

New title card

Because I decided to move away from keeping stuff in an organization and mostly work on the game myself, it makes sense to change the client splash to something more about myself.

Player movement

People complained about not being able to fly around the world, especially when you get stuck somewhere. So I decided to add (for debugging purposes) a flight mode alongside making some very needed improvements to the toggle system.

1742562954483141.png

You can toggle flight mode by holding F3 and pressing F

Toggles system overhaul

Speaking of toggles. Now the game defines GLFW_KEY_F3 as DEBUG_KEY and restricts any kind of configuration to bind to that key. Additionaly, the entire toggles system now introduces toggles::get and toggles::set functions instead of directly accessing boolean values.

Threading and Tasks

A new threaded task system has been put in place that allows not only meshing but general-purpose tasks to run in the background while the game renders the world and processes input. Your desired threaded task must extend the Task class defined in shared/threading.hh and implement a process method that would run in a separate thread and a finalize thread that would run in the main thread after process returns.

Also now one can specify the amount of pooled threads the application can use by specifying the threads with a desired number or max to use the constant value of std::thread::hardware_concurrency:

vclient -threads max -game.username untodesu

Oh and also, configuration keys from client.conf and server.conf can now be overriden by putting them in the command line arguments.

Experimental gamepad support

I was given a gamepad at work for work purposes, but also added a semi-competent support for gamepad input to Voxelius (I prevent burning out by switching to hobby projects from time to time). The settings screen got a special tab for input configuration and three sub-tabs for mouse, keyboard and gamepad.

You can switch between gamepad and keyboard-mouse input on the fly by holding F3 (the DEBUG_KEY) and pressing P. When the game detects a connected gamepad, it blocks all keyboard and mouse input and instead prioritizes gamepad when the gamepad input is enabled.

you should be able to bind buttons and axes with a similar way one binds keys in the configuration. To bind a button, press on the control, then while it’s displaying ..., press the gamepad button. Same thing works with axes, except you should pull it to its limit for the game to recognize the input.

1742724559730210.png

NOTE: gamepad support is by no means complete, you still can’t place or break voxels and switch between slots in the hotbar. I suppose one of the next public test releases should rectify this and fully define all the inputs a player can have for the gamepad.

Server browser overhaul

The game got a direct connection screen, making the server browser almost fully feature-complete compared to Minecraft.

1742724847585580.png

The server browser will also now display a warning text and a tooltip when the server bothered by it reports a different protocol version.

1742564821961960.png

Aggressive caching

Considering world generation might now be certainly slow, it makes sense for the server (where constant disk usage spikes don’t usually correlate with disk degradation) to aggressively cache every generated chunk. To enable this mode, pass agressive-caching command-line parameter:

vserver -agressive-caching -threads max

Get Voxelius