Skip to content

Revamping map generation to reduce hard transitions, allow widescale alignment of multi-overmap features, and include more natural Z-level generation #47563

Closed as not planned
@superninjakiwi

Description

@superninjakiwi

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    <Enhancement / Feature>New features, or enhancements on existing<Suggestion / Discussion>Talk it out before implementingFields / Furniture / Terrain / TrapsObjects that are part of the map or its features.Map / MapgenOvermap, Mapgen, Map extras, Map displayZ-levelsLevels below and above ground.staleClosed for lack of activity, but still valid.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions