The world is getting it's shape

The world gets it's shape

We apologize to all our fanatics that this blog post took us so long.

The reason for that is that we've been mostly working on internal engine stuff and putting things together. Necessary work, but not particularly glorious or interesting. Nonetheless we've been hard at work.


Summer holidays came and went and a lot of our team members took their families on vacation for a couple of weeks.

World map generation

I've been working on our world generator, Weltschmerz. Weltschmerz is a complex world generator which generates a natural biome distribution for the world by using helper maps for temperature, air pressure, wind, precipitation, simulate real world conditions.

Our work is based on the excellent Master's Thesis "Realistic biome generation for procedural maps using essential cilmate principles" by Thomas Wurstle (

I hit some problems with wind simulation and the work took longer than I expected, but it is working now.

Here are pictures of some generation phases being debuged:

In order to achieve the greatest possible accuracy, I began testing generation on height maps of Earth (courtesy of NASA).

For comparison here's an image of the actual Earth:

And here is the resulting map from Weltschmerz:

Here is our UI that we use for testing the setting:

The map is interactive and updates in real time. Unfortunately issues with noise generation caused us performance problems, so we had to turn it off for now.

Non-block terrain objects

Another thing we've added are non-block terrain objects, which are essentially blocks that have a custom mesh and can be of various sizes, for example tree trunks, leafy branches, fences, flowers, etc.

My principle is to generate a box around the object and then fill it with voxels. After that I put the blocks in the chunks.

Here is my first attempt with grass:

If you are observant enough you will see in the image above that the textures have flipped upside down because of a bug. It tooks us a while to notice it.

Above you can see the latest voxel world test with a lonely birch tree.

Themiddleman has been working on octree code to get our octree/chunk hybrid up and running properly. For the moment octrees are disabled and we're using only chunks.

We have transitioned from greedy meshing to voxel splatting. A splatter creates blocks from a single vertex by creating the geometry with a shader.

Octree test:

New team member and skybox

We have a new... old team member! Welcome back, Glor! He's helping us with with code when he has time from his studies. He is currently working on a skybox so that the world would be a little bit prettier:

The clouds and terrain in the above screenshot are faked at the moment. This is a very preliminary version with only a cubemap that can be rotated. It is still missing day and night cycle, real clouds, sun, moon, stars, etc.

What is next?

  • Finishing the octrees
  • Finishing the splatter
  • Essential interaction with the world
  • Constant terrain generation
  • Graphical improvements
  • Saving the generated world
  • Optimizations
  • Physics
  • Networking
  • Testing

Join the team?

We are always looking for more talented members. Do you think you could help?

Check out our Indiedb page:

Or write to us directly, contact information can be found on our web page:

Star and Serpent team greets you and looks forward to seeing you next time!



This article was updated on 17/08/19 @ 22:00