neitsa/PrepareLanding

Check if possible to actually set the tile properties according to user choices

Opened this issue · 2 comments

Simply put, check if it's possible to let user define their own tile(s).

This was requested a number of times. I already thought about it, but the "filter" thing has my preference due to the intrinsic randomness of the world map.

One possible problem is the temperature of a tile which seems to be directly linked with its location (latitude) on the world map... Gonna need to investigate this.

edit Current status:

  • Biome
  • Temperature
  • Elevation
  • Hilliness (terrain)
  • Rainfall
  • Stone types
  • Rivers
  • Roads

"God mode" feature (ability to set tile content from user choices) is now half implemented:

  • Biome
  • Temperature
  • Elevation
  • Hilliness (terrain)
  • Rainfall
  • Stone types
  • Rivers
  • Roads
  • Stone types: there is no list of stones for a given tile, it is generated on the fly according to the seed which means there's no way to replace them without patching the method (RimWorld.Planet.World.NaturalRockTypesIn). I try to avoid patching as much as I can, but it seems inevitable if we want to change the stone types in a given tile.

  • Rivers & Roads: the generation process algorithm for both roads and rivers is quite complicated. Moreover, a tile with a river / road must have a neighboring tile with a river / road (it's not possible to generate a road or river on tile alone). My guess is to do something approaching the vanilla generation process (start from a close river or the sea; start from an existing road) but it's gonna be quite a good amount of work...

  • Another problem for rivers is that water flows from higher altitude to lower altitude (seems obvious but this is checked in the game code, which is quite cool). On the other hand, setting a river on a tile that has no pre-existing river would lead to a good number of checks on my side just to see if it's possible to actually have a river in that tile...

Note: the GUI is already implemented for stones / rivers / roads, the backing algorithms are not...

Added ability to set new stone types in a tile by patching RimWorld.Planet.World.NaturalRockTypesIn in commit 582720f.