Mods / Landforms Need Curves

Tags:
Worldgen
Author:
MadSeraph
Side:
Server
Created:
Mar 27th 2025 at 7:15 PM
Last modified:
Jun 12th at 11:52 PM
Downloads:
354
Recommended download (for Vintage Story 1.22.3):
LNCurves_1.2.0.zip  1-click install

Warning: 1.2.0 can alter terrain generation slightly vs 1.1.0!

 

Please read the release notes! If you just update then the change that does this will be disabled, but the change was made for a good reason. It resolves cases where floating dirt or overhangs with 1 block air gaps at the bottom of hills can happen with certain curve settings. I added a before and after screenshot to the images above so you can see what I mean. If you are experiencing this in your world, you can enabled the new smoothing setting by setting it to a value above 0. The default value for new installs is 2, and it is tuned for world heights of 256. If you still see these artifacts on taller worlds, try increasing it by 1 until they go away.

The changes will be subtle, but they are enough to alter things like structure spawning or feature placement of things such as Watersheds streams. It shouldn't produce major seams in existing worlds, but always test to be sure! And of course, it will not affect already generated chunks.

 


 

After having tried many landform mods I found myself dissastified in some way with all of them. I wanted some way to tweak them to better suite my tastes. This mod is the result of that desire.

Landforms in part define themselves by how tall features will be. Whether a mountain, a raised valley with sinkholes, stone pillars, etc. This mod allows you to create a curve that can suppress or exagerate those features based on their height. You can make those stone pillars short or flatten them out completely while still keeping tall mountains tall. Several screenshots show various curves applied to a vanilla scene.

To help with configuration, full integration with Auto Config Lib is provided. You can define default curves, or you can give specific landforms their own curves. A curve with control points at (0,0) and (1,1) is neutral and will not alter terrain. This is the default for the mod. You will not notice any changes with the default configuration. You must create your own curves! To alter a specific landform, you must provide its code name from the worldgen/landforms.json file and its own control points.

I very heavily suggest installing Auto Config Lib to help with configuration.

There is an "Apply" button when viewing the GUI in Auto Config Lib. This does work to make real time changes, but you need to prune chunks and regenerate them to actually see them. I've noticed that the game gets a bit buggy when you prune more than once in a session, so this might not be as helpful as hoped. If you're not seeing changes, restart the game.

There are a couple of utilities to help visualize some of this:

First is a utility to help visualize landform height settings provided by Tyron. To use it, paste the TerrainYKeyPositions and TerrainYKeyThreshold lines from any landform definition into the utility.

http://tyron.at/vs/landformcreator.html

Second is a simple utility to help create your control points and visualize the curves:

https://cubic-bezier.com/

This mod is a bit technical, but I hope once learned it will allow players to fine tune their worlds to perfection. Good luck!

Mod Version Mod IdentifierFor Game version Downloads Released Changelog Download 1-click mod install*
1.2.0 lncurves 76 Jun 12th at 11:52 PM LNCurves_1.2.0.zip 1-click install

This version introduces a new feature to address possible generation artifacts as a result of applying the curve. It presents as either floating patches of dirt with stone underneath, or as overhangs where flatlands start to rise into hills 1 block high with stone underneath. It applies a slight smoothing to affected parts of the post processed landform. I've added pictures to the main page to demonstrate the before and after.

This feature does slightly alter the terrain, usually only a block up or down in some places, but it's enough to alter decisions on structure generation or where features from mods like Watersheds will place streams. Due to that, this feature will be disabled on worlds that are already running the previous version. It will be enabled by default on new installs. The default smoothing radius is designed for world heights of 256. If you still see artifacts on taller worlds, try increasing the radius in the mod config.

1.1.0 lncurves 49 May 10th at 2:45 AM LNCurves_1.1.0.zip 1-click install

Updated for 1.22.2

1.0.0 lncurves 229 Mar 27th 2025 at 7:16 PM LNCurves_1.0.0.zip 1-click install

Initial Release


23 Comments (oldest first | newest first) (threaded | flat)

reg8, 4 days ago

does this work with custom sea level mods?

MadSeraph , 4 days ago
@reg8: does this work with custom sea level mods?

No. The sea level is hard coded for now. What is the most popular mod for altering the sea level right now? I could look into integration.

Sniffr0st, Jul 2nd at 8:22 PM

Would it be possible to disable the logging or move it to debug though? Kinda messing up the log file 😅

MadSeraph , Jul 3rd at 12:46 AM
@Sniffr0st: Would it be possible to disable the logging or move it to debug though? Kinda messing up the log file 😅

Possibly, you mean the log on startup where it shows the before and after landform numbers? It shouldn't be logging anything during regular play I hope!

Sniffr0st, Jun 30th at 7:24 PM

Sir, you have given me what I have craved for years. Far-stretching plains, gentle rolling hills, rare towering mountians. To some, this might seem boring, but to me, it is bliss. Thank you.

The world
The world
The terrain
The terrain
The map
The map
Sniffr0st, Jun 30th at 7:32 PM
@Sniffr0st: Sir, you have given me what I have craved for years. Far-stretching plains, gentle rolling hills, rare towering mountians. To some, this might seem boring, but to me, it is bliss. Thank you. The world The terrain The map

If anybody cares, for worldgen I'm combining Terra Prety, LNCurves, Rivers (they flatten large areas of terrain, visible on the map all the way to the east, where the biggest river spills into the sea - the mountain is carved out around it) and Watersheds (erosion smoothes out slopes towards the sea... I think). I also love it generated a continent with one singular snow-covered mountain in the center. 
The values I used for LNCurves are 
"DefaultLandCurveControlPoints": {
 "p1x": 0.0,
 "p1y": 0.12,
 "p2x": 0.5,
 "p2y": -0.15
}

JACO1989, Jun 27th at 7:53 AM

Hi. I kept trying to use autoconfig to adjust the slider and fix the issue of "floating" terrain, but the ground just kept rising until the landscape changed completely into something I didn't like. I even tweaked the curve parameters—setting the Y position to -0.000001—because the ground wasn't level with the water; instead, it was sitting one block above the water level (creating mini-cliffs). Also, I should mention that I'm setting the world height to 384.

MadSeraph , Jun 27th at 3:08 PM (modified Jun 27th at 3:21 PM)
@JACO1989: Hi. I kept trying to use autoconfig to adjust the slider and fix the issue of "floating" terrain, but the ground just kept rising until the landscape changed completely into something I didn't like. I even tweaked the curve parameters—setting the Y positi

The "Threshold Smoothing Radius" is the setting that deals with the terrain gaps shown in the last two screenshots, and it can only be set to whole numbers between 0 and 16. You really shouldn't need anything higher than 3, maybe 4, to remove most if not all of them.

The control point positions being negative in the Y axis is allowed, but I don't think it does what you think it does. These are control points for a cubic bezier easing curve. I highly recommend using the linked website to visualize and generate your control point coordinates. Imagine the grey diagonal line going from the bottom left to the top right of the graph as the baseline height of features, from 0 to 100%. Where the curve is in relation to that line in any vertical slice is how features of that height will be adjusted. If the curve sits below the line at that point, features of that height will be made shorter. If it sits above, they will be made taller.

The control points I tend to prefer are:

 "DefaultLandCurveControlPoints": {
   "p1x": 0.4,
   "p1y": 0.1,
   "p2x": 0.25,
   "p2y": 0.25
 },

I leave the below sea level curves alone. There's usually not much reason to mess with those. You can see it graphed at https://cubic-bezier.com/#.4,.1,.75,.75. It suppresses low lying areas a decent amount then eases off.

 

You can create some pretty wild curves with negative coordinates, some that could produce numbers the vanilla terrain generator might not be able to cope with. For example, this one pushes mid level altitudes back below sea level! - https://cubic-bezier.com/#.59,.12,.75,-0.6 - I've not tested much if at all with these kinds of crazy settings, YMMV.

 

If you're still struggling, please send me a seed, your settings, and any terrain generation altering mods you are using.

JACO1989, Jun 28th at 1:56 PM
@MadSeraph: The "Threshold Smoothing Radius" is the setting that deals with the terrain gaps shown in the last two screenshots, and it can only be set to whole numbers between 0 and 16. You really shouldn't need anything higher than 3, maybe 4, to remove most if not

Hello,

I managed to level the terrain, which I quite like.

Above sea level:
X: 1
Y: 0.2
X: 1
Y; 0.2

And I haven't seen any terrain that bothers me anymore ;-)

 

The strange horizontal gaps and various types of fungi (some small mounds had caps, but there was no opening all the way through just a slight indentation 2–3 blocks deep) have disappeared, and the terrain has leveled out to sea level, eliminating the mini-cliffs that were there before.

MadSeraph , Jun 28th at 3:27 PM
@JACO1989: Hello, I managed to level the terrain, which I quite like. Above sea level:X: 1Y: 0.2X: 1Y; 0.2 And I haven't seen any terrain that bothers me anymore ;-) The strange horizontal gaps and various types of fungi (some small mounds had caps, but there was no

I'm glad you found one that suites you! It's very similar to the one used on the first screenshot. Very aggressive, very flat, but you'll still see a very steep mountain or two. Should make road building and traversal mich nicer! :)

JACO1989, Jun 29th at 3:36 AM
@MadSeraph: I'm glad you found one that suites you! It's very similar to the one used on the first screenshot. Very aggressive, very flat, but you'll still see a very steep mountain or two. Should make road building and traversal mich nicer! :)

I've installed a lot of mods for world generation, which have more flat terrain and don't have the odd mountain every now and then. I'm also playing at a higher sea level so I can dig more underwater. We'll see what happens with the world generator, because after over 40 hours of playing, I found myself over 6,000 squares away, and the terrain was ugly again. But thank you for your help. Previously, if I remember correctly, my world was set above sea level to 0, 0, 1, 0, or 1, 0, 1, 0.

Leavraell, Jun 16th at 2:54 AM

would love to try this with some examples, or templates. even if you just post them here for us. thanks!

MadSeraph , Jun 27th at 3:19 PM (modified Jun 27th at 3:19 PM)
@Leavraell: would love to try this with some examples, or templates. even if you just post them here for us. thanks!

Here are a few control point parameters to try:

0.7, 0.05, 0.85, 0.1 - https://cubic-bezier.com/#.7,.05,.85,.1 - This will greatly flatten things, suppressing the height of all but the tallest features.

0.1, 0.85, 0.85, 0.1 - https://cubic-bezier.com/#.1,.85,.85,.1 - This one will raise features up until half way to max height, then it will shorten features past that.

0.95, 0.05, 0.05, 0.95 - https://cubic-bezier.com/#.95,.05,.05,.95 - This one will greatly suppress features below half world height, then greatly exaggerate features beyond half world height.

These are all for the land settings. Honestly, the sea settings are probably best left alone, unless you really want to do something like turn the entire ocean into a shallow pond with a small scattering of sudden deep trenches, which you could do.

Tuppence, Jun 11th at 10:18 PM

if you can make this apply to world gen automatically it will be a game changer

MadSeraph , Jun 11th at 10:53 PM
@Tuppence: if you can make this apply to world gen automatically it will be a game changer

What do you mean? It directly alters worldgen already by modifying landforms as they are processed by the engine.

eerino, Apr 17th 2025 at 4:19 PM

I was seed hunting and found one with curves! 

Let me know if anyone happens to want the seed and info. I have several mods and custom config.

 

https://imgur.com/a/ChQjkqb

MadSeraph , Apr 8th 2025 at 3:22 AM

WickedSchnitzel

That's fair. What it does and why you'd want it are niche and technical. Right now I've been a little consumed with Satisfactory, but once I come out of that haze I can add some buttons to the configlib interface to apply some simple presets. :)

WickedSchnitzel, Mar 27th 2025 at 9:17 PM

Couldn't you provide some templates? Would be great. Because i don't quite get it. And i may not be the only one (i hope).

badgerson, Mar 27th 2025 at 7:39 PM

Very cool concept, I'll have to play around with this!