Fableforge Weekly Update #3

This is going to be a short progress update that includes some behind the scenes improvements, tweaks to the atmosphere system, and improvements to the terrain generation system.


Tree Spawning Improvement

Environment Rules

Additional Atmosphere Improvements



Tree Spawning Improvement

Lightly forested region. The trees now spawn in groups.



The way tree spawning used to work was at each position a random number would be generated, if this number was lower than the region's tree density value a tree would spawn. This approach made forests look monotonous because trees would spawn at the same rate across the entire region.


To fix this, trees now use simplex noise and use the region's tree density value as a threshold for this noise.



Environment Rules


Previously, environments would choose blocks to spawn based on humidity, temperature, and a little bit of randomness. Sometimes regions would spawn with weird block combinations (Sand on top of snow, grass beaches in a snow region). This was a rare issue, but needed to be addressed.


To fix this issue I made a rule system that environments now go by. The region's surface block determines the ruleset the environment goes by. For example, If the surface block is sand, it won't spawn snow beaches.



Additional Atmosphere Improvements


I started off the beginning of the week continuing the work that was done last week with atmospheres. There were a few tweaks that I made, some color changes (mainly sky colors), some code refactoring, and bug fixes. I also got atmospheres working server-side.



Conclusion


Aside from development, just a couple days ago I discovered a really cool productivity application called Notion. I used to have all my lists, documents, schedules, etc. on different programs/text documents and it was just a chaotic mess tbh. Now everything is in one place and I'm a happy developer. Highly recommend!


But anyways, next week will hopefully be the last week of terrain generation and graphical improvements before I move on to procedurally generated mobs.