← All posts
2 min read

I Started Building My Own Voxel Game

The start of Voxara (originally called ReCraft): a voxel sandbox built from the ground up on my own C++ engine — procedural terrain, mining, building, saving and now procedural trees.

Isometric voxel island with hills, mountains and procedurally generated trees of different heights.

Update: ReCraft has since been renamed Voxara.

I’ve always thought it would be cool to make my own game, but actually sitting down and trying to build one is a completely different story.

I’m working on a project called ReCraft. The idea is to build my own voxel sandbox game from the ground up, starting with a C++ engine and seeing how far I can take it.

I’m not trying to pretend I know everything about game development. A lot of this has been figuring things out as I go, testing things, breaking things, and trying to get them working again.

Getting the world working

The first big goal was getting an actual 3D world running.

Not a mockup or a concept. An actual world I could load into, walk around in, and interact with.

Eventually, I got procedural terrain generation working. The game could generate hills, mountains, and different layers of terrain, all rendered through the engine I was building.

Then came the ability to mine blocks, place them back down, and save the world so I wouldn’t lose everything when I closed the game.

That last part was a pretty big milestone. I could make changes to the world, quit the game, come back, and find everything where I’d left it.

Making the world feel less empty

Once the terrain was working, I started looking at what was missing.

The world had mountains and hills, but it was basically empty. So the next step was getting procedural trees working.

I wanted trees to generate naturally, with different shapes and heights, rather than having the same tree copied and pasted everywhere.

There was also a lot of work behind the scenes to make sure trees generated consistently when chunks loaded in different orders, and that cutting down a tree or building something wouldn’t get undone when the world reloaded.

After implementing the system, both builds compiled without warnings and all 58 automated tests passed.

The game was still running at around 144 FPS with VSync enabled, so the trees weren’t causing a noticeable performance hit during normal play.

What’s next?

Right now, I’m looking at expanding the world generation.

I want different environments instead of an endless stretch of similar terrain. Forests, plains, deserts, snowy regions, and eventually oceans with coastlines and underwater terrain.

There’s still a ridiculous amount to do, but it’s cool seeing something that started as an idea slowly turn into an actual game.

For now, I’m calling it ReCraft.

Let’s see how far I can take this thing.

  • #progress
  • #world generation
  • #engine