Post news Report RSS Weltschmerz

Hello, I'm Pawlost! I'm a new programmer in the Star and Serpent dev team, and I'll tell you a little bit about my work. I've been working on Weltschmerz, our world generator, which generates terrain types and elevation. The word Weltschmerz is German and literally means "world pain" (the sort of feeling someone experiences who doesn't believe that the physical reality can satisfy the demands of the mind).

Posted by on

Hello, I'm Pawlost!

I'm a new programmer in the Star and Serpent dev team, and I'll tell you a little bit about my work.

I've been working on Weltschmerz, our world generator, which generates terrain types and elevation. The word Weltschmerz is German and literally means "world pain" (the sort of feeling someone experiences who doesn't believe that the physical reality can satisfy the demands of the mind).

First milestone was creating a heightmap using the excellent modular Joise noise library written in Java. Joise supports all kinds of noise algorithms ranging from 2D, 3D, and 4D to 6D noise and is derived from Joshua Tippetts' C++ Accidental Noise Library.

The first map looked similar to this image:

wg1

After that was done I used Fortune's algorithm to generate Polygons.

I changed the border vectors of the polygons so I could create Java Swing polygons with color. At first the only distinction between terrain types was land and water:

wg2

Then I added a shoreline, oceans, and random mountain blobs:

wg3

Then I created a tectonic plate simulation for generating proper mountains at the colliding edges of the tectonic plates:

wg4

And made the map seamless by sampling two 2D circles orthogonally in 4D for the XY and ZW planes. We sample in a circle to ensure the data is periodic.

wg5

We needed support for HOCON for easy configurability and generation options, so I implemented that quickly.

The config allows us to experiment easily with more detailed and varied maps.


Unfortunately, because the polygons were too random we decided to change the map generation, and I had to refactor some ~30% of my code. We are now using rectangles instead of polygons:

wg8

The above image shows the current state of my ongoing work.

I am also debbuging Terra. There are a lot of difficult bugs to squash, but it is also very rewarding when you get things fixed and see the results.

So far the best terrain I've actually generated by using Terra is a huge "Minecraft" block for debugging :D Now that the worst Terra bugs have been fixed in our generation branch I still have to implement a converter for the world generator 3D data to 1D Terra array data to actually experience the terrain in the engine.

See you later. Cheers!

- Pawlost

PS. We are looking for more volunteer coders to help us -> Indiedb.com (Still looking, even though the post is old).

Post a comment
Sign in or join with:

Only registered members can share their thoughts. So come on! Join the community today (totally free - or sign in with your social account on the right) and join in the conversation.

Related Games
Rituals of the old
Rituals of the old Role Playing
Related Engines
jMonkeyEngine
jMonkeyEngine BSD
Related Groups
Star and Serpent
Star and Serpent Developer & Publisher