Hey, hope you're all doing well! Over the last couple of months, I've been working on what I've been calling a 'District Overhaul' - but has also resulted in a lot of other minor changes. The new features are:
So lets break those down.
In my previous algorithm, buildings were grouped together into potential districts based on the lifestyle of the building (e.g. lower / upper class. At this point, the road network is generated. Next, a district would claim a lot and then place as many buildings as it can inside the lot. If it had remaining buildings, it would try claim an adjacent lot, and if there were no adjacent lots, a new district of that type would be started somewhere else. This would repeat for all districts until all buildings were placed.
This worked well enough in terms of rendering a name of a district and giving it an area on the map, but it had some downsides.
I've now broken down districts into what I'm calling an overall district (e.g. based on lifestyle, or a major industry), and sub-districts (e.g. a type of industry, like clothing / metalwork). An overall district will have multiple sub-districts, and the overall district is what you see rendered on the map.
This results in districts with buildings that are much better grouped on the map, replicating industry clumping together as it's more economical. It also allows districts to have a better defined definition + identity that can be summarized and displayed.
In terms of the algorithm, the gist is basically the same - buildings group together (now based on lifestyle and the building's preferred sub-district), and then a parent district tries to place its sub-districts in order. There is another key difference - before, when there was empty space, it would just be left empty. Now, I use the district information (sub-district + lifestyle) to randomly pick buildings to fill in the space.
Before:

After:

Using the new sub-district information, I now have a wider pool of name parts available to create district names. I also improved the landmark detection to improve names based on physical parts of the district. Also, I've tried to implement a district name changing over time, becoming a sort of shorthand for the original name. For example, a district originally called 'Hamlet Tower' (a residentially area next to a wall with a tower), could become 'Hamower'.
I've added a lot more decoration options in addition to trees - fountains / wells / fires / etc. I've also added more roof materials - like red tile / blue tile. Districts can now be individually configured to place different decorations down, and have specific materials.
By default, I've made squalid districts render like tents, poor districts to be super dense, and wealthy districts to have more trees and other decorations.
A squalid district:

A wealthy district:

I've added all this district decoration config, and more, in the create settlement form, so you can tweak exactly how your district should look after generation.


All of the decorations etc can of course be edited after the fact as well.
With this new information, I can now display a nice summary when you click on a district. I've also added a demographic display for each district.


There is now a setting to control how many walls are placed during generation, and when:

This is the big one - that a lot of people have asked for. Using the new sub-districts, and a similar algorithm to the one implemented to fill empty space, you can now re-roll large areas of the map. This will delete any existing buildings + decoration, and create an entirely new district filled with buildings + new people. These are the available settings:

As suggested by the form - to access these settings, create a new district and enable the re-roll district toggle. You can control the overall lifestyle, as well as the types of buildings to be generated. You also have access to all the decoration options, as well control over how dense the buildings should be.
This makes it easy to transform an area from this:

into this:

Also in the last month, I've added a dark mode. You can enable it by going to your list of settlements, 'Settings' => 'Themes' => 'Dark mode'.
Once again, thank you all for all your support. Without you, this wouldn't have been possible. As always, let me know what you think - any feedback is appreciated!
William Matthews
2023-07-26 00:41:19 +0000 UTCThomas Allerton
2023-07-23 17:23:50 +0000 UTCIronWithinIronWithout
2023-07-23 17:19:37 +0000 UTC