Description
Is your feature request related to a problem? Please describe.
Map generation has been a bit disappointing for a while. Map tiles are generally generated without connecting to their surrounding tiles, leading to hard, visibly square edges. Large features that could be generated across multiple map tiles, such as hilly areas, would have a hard time aligning properly without doing most of the work to make the hills align manually. Z-levels are also not generally a part of non-manual generation, leading to one big flat world where everything that extends above or below ground level has to be specially created to be that way.
Describe the solution you'd like
I'm planning to create some world generation code to improve this, probably as an alternative to the existing generation, at least to start with.
- "Fuzz" the boundaries of biomes, to create a less hard edge between e.g. forests and plains
- Generate map tiles in a way that lets them connect to nearby tiles. This is slightly different from fuzzing, but related; I could use it, for example, to have a hilly area, with structures such as z-levels, cliffs, and slopes, being coordinated across multiple map tiles.
- Allow easy generation of terrain that stretches up multiple z-levels. The primary use of this would be to make some trees that are two or three stories tall, depending on where they're generated.
- Railroad stations have gone TOO LONG without railroads to connect them. Railroads need to be generated for once.
There are also a few things I'd like to try to make easier for the future as well, if not immediately possible:
- Semi-realistic placement of forests, fields and swamps based on local water availability and weather. This could intersect with a desire for localized weather, if that exists.
- The ability to "offset" JSON-based maps such as buildings. It would be nice, for example, to shift a house a few tiles away from a road to make room for a cul-de-sac's sidewalk. This would require a bit of finesse to work in a tightly packed city, but could be very nice to have.
- JSON should be able to easily modify or create things like additional biomes, as well as large-scale, localized map features like hilly areas, that can integrate cleanly with the area's biome.
- 'Fuzzing' support for explicitly defined JSON maps, that want to integrate nicely with the surrounding map tiles.
Describe alternatives you've considered
Leave it as is. It's really not terrible, and I have fun with the game right now, I just think it could be better.
Additional Context
Fuzzing, in this case, is an attempt to reduce the shear edges between map tiles; see https://i.gyazo.com/5484eaf96edda6f12a18b49e6937f2de.png and https://i.gyazo.com/c0bdcc8e898d59081ec075c8baca05be.png
In both images, you are able to easily tell where the fields stop, and other map tiles begin. I'd like to reduce this.