[Mod] Sedimentology [sedimentology]

sofar
Developer
Posts: 2146
Joined: Fri Jan 16, 2015 07:31
GitHub: sofar
IRC: sofar
In-game: sofar

[Mod] Sedimentology [sedimentology]

by sofar » Post

Sedimentology

-- a minetest mod that simulates erosion and sedimentation.

(Ported from my Sedimentology Bukkit Plugin)

Mod dependencies: none
License: LGPLv2.1 (same as the original plugin)
Download: https://github.com/minetest-mods/sedime ... master.zip

~~~~

This plugin attempts to create processes that are involved in the
transport and deposition of sediments:

- water picking up material
- transportation down slopes
- weather influence
- material falling down cliffs
- material decaying/degrading into smaller grained materials

The plugin doesn't properly recreate real geologic processes, instead
it mimics the behavior of erosion and deposition by rolling a dice
for most of the factors involved, and if the roll was successful,
proceed to the next step.

Material hardness and resistance are taken into account - some
materials are easier displaced than others. Some materials degrade
easier than others. Some materials (sand) have a different angle
of repose.

This plugin isn't meant to enhance game play per se, it will operate
slowly over time and vegetation will prevent most of it's effects
from taking a toll on the landscape in most cases, so it will
take a long time in default settings from actually doing anything
noticeable. Because dirt naturally gets a grass cover in Minecraft
it will be unlikely that this plugin does significant damage to your
world. Of course, planting stuff is still advisable if you want to
reduce the effects of the plugin further.

~~~~

Commands

/sed <subcommands> <values>

/sed stats

Display statistics from the plugin. The plugin keeps internal counters
for modifications made and attempts, and this command allows you to
display those statistics.

/sed blocks <integer>

Modify the number of blocks per cycle that the plugin will
attempt to consider for modification. Note that due to the various
factors involved, this number will almost never equal the number of
modifications made per cycle - but increasing it will accelerate the
erosion process.

/sed help

Displays a help message describing the commands available.

The "blocks" subcommand requires the "server" privilege.

~~~~

Bugs / Code For bugs, tips, donations please feel free to contact me:

Auke Kok - sofar@foo-projects.org

The project code is hosted on my github page:

https://github.com/minetest-mods/sedimentology

The bukkit page for this plugin is here:

http://dev.bukkit.org/bukkit-plugins/sedimentology/

More information can be found on the bukkit page. There is also a concepts
discussion article, and screenshots are posted here for viewing as well.

======================================
Check out my mods:
Last edited by sofar on Sat Nov 05, 2016 20:09, edited 6 times in total.

TriBlade9
Member
Posts: 89
Joined: Fri Sep 05, 2014 09:35

Re: [Mod] Sedimentology [sedimentology-mt]

by TriBlade9 » Post

Hey sofar! Welcome to the Minetest forums!

Rather coincidentally, I happen to have been a user of your Botany plugin back when I ran a 1.7.2 Cauldron server. I loved the idea but eventually dropped it because of some compatibility issues for mods.

Anyways, thanks for porting your sedimentology plugin! I just downloaded and played around with it a bit. The idea is quite interesting and original. I like the slow and almost unnoticeable erosion, would be quite fun to have on a server. Have you tested it performance-wise?

Additionally, how does it handle non-default nodes?

EDIT: After testing a bit, it would seem that having too high of a block rate (eg, 5000) causes the server to become unresponsive after a bit.

User avatar
rubenwardy
Moderator
Posts: 6972
Joined: Tue Jun 12, 2012 18:11
GitHub: rubenwardy
IRC: rubenwardy
In-game: rubenwardy
Location: Bristol, United Kingdom
Contact:

Re: [Mod] Sedimentology [sedimentology-mt]

by rubenwardy » Post

Woah! This looks exciting!

It looks like you use place node and set node a lot. Have you looked at the lua voxel manipulator for this? It is usually faster when reading or writing lots of blocks in an area.
Renewed Tab (my browser add-on) | Donate | Mods | Minetest Modding Book

Hello profile reader

sofar
Developer
Posts: 2146
Joined: Fri Jan 16, 2015 07:31
GitHub: sofar
IRC: sofar
In-game: sofar

Re: [Mod] Sedimentology [sedimentology-mt]

by sofar » Post

TriBlade9 wrote:Hey sofar! Welcome to the Minetest forums!
Anyways, thanks for porting your sedimentology plugin! I just downloaded and played around with it a bit. The idea is quite interesting and original. I like the slow and almost unnoticeable erosion, would be quite fun to have on a server. Have you tested it performance-wise?

Additionally, how does it handle non-default nodes?

EDIT: After testing a bit, it would seem that having too high of a block rate (eg, 5000) causes the server to become unresponsive after a bit.
The mod ships with a sane default that is close to the bukkit version - 20 blocks per second. Anything higher than 500 or so is a serious strain on the server, and results in a brutal amount of erosion done to your landscapes.

I do not recommend any value higher than 20 for servers that people play on. The fun of this plugin happens over long, long times. At 5000, you would destroy all your commonly used landscape in a few months, if not sooner :)

non-default nodes are entirely ignored at this point. I'd have to start using string regexes and properties more to recognize ground content blocks recognized.

sofar
Developer
Posts: 2146
Joined: Fri Jan 16, 2015 07:31
GitHub: sofar
IRC: sofar
In-game: sofar

Re: [Mod] Sedimentology [sedimentology-mt]

by sofar » Post

rubenwardy wrote:Woah! This looks exciting!

It looks like you use place node and set node a lot. Have you looked at the lua voxel manipulator for this? It is usually faster when reading or writing lots of blocks in an area.
Block moves only happen around once a second or so with default settings, and using the block place method results in a nice sound effect being played in the client.

I did check the VoxelManip stuff out, and it seems overkill for anything else but overscaled erosion tests on steroids :)

sofar
Developer
Posts: 2146
Joined: Fri Jan 16, 2015 07:31
GitHub: sofar
IRC: sofar
In-game: sofar

Re: [Mod] Sedimentology [sedimentology-mt]

by sofar » Post

TriBlade9 wrote:Rather coincidentally, I happen to have been a user of your Botany plugin back when I ran a 1.7.2 Cauldron server. I loved the idea but eventually dropped it because of some compatibility issues for mods.
FYI I intend to port over Botany as well at some point, but due to the lack of Biome information that Minetest exports in an API to mods, there's very little that I can do right now.

User avatar
rubenwardy
Moderator
Posts: 6972
Joined: Tue Jun 12, 2012 18:11
GitHub: rubenwardy
IRC: rubenwardy
In-game: rubenwardy
Location: Bristol, United Kingdom
Contact:

Re: [Mod] Sedimentology [sedimentology-mt]

by rubenwardy » Post

20 blocks a second probaly doesn't justify VoxelManip. It is best when you are changing more then 5*5*5.
Renewed Tab (my browser add-on) | Donate | Mods | Minetest Modding Book

Hello profile reader

sofar
Developer
Posts: 2146
Joined: Fri Jan 16, 2015 07:31
GitHub: sofar
IRC: sofar
In-game: sofar

Re: [Mod] Sedimentology [sedimentology-mt]

by sofar » Post

rubenwardy wrote:20 blocks a second probaly doesn't justify VoxelManip. It is best when you are changing more then 5*5*5.
So the way that the plugin works is that it selects 20 random blocks to attempt modification (either move or change) per second tops. In actual normal server terrain, maybe 1 or 2 blocks per second end up being modified. In reality, over time the number decays as more and more terrain already is eroded (due to the statistical probability model used to select and determine whether block changes should be modified).

None of the block modifications are related to any other block modification done by the mod either, and could potentially cover the entire map. I don't think that using VoxelManip to modify 5 random blocks in a 100x100x100 voxelmap makes sense.

So what you said is spot on - I'm just elaborating on the why, so that people understand the reasoning.

The "fun" part of this plugin that it goes slow, and over time, and is unnoticeable. Until a few months of playtime later it hits you when you realize, "dang, where did my hillside/beach/cave entrance go?"

User avatar
afflatus
Member
Posts: 362
Joined: Tue Apr 01, 2014 19:47
GitHub: 0-afflatus
IRC: afflatus
In-game: afflatus
Location: Avalonia
Contact:

Re: [Mod] Sedimentology [sedimentology-mt]

by afflatus » Post

I love the idea. However I would want to use it with some rather non-standard mapgen, so I'm going to have to modify it. Nevertheless I really like the idea of the landscape dynamically changing. I also want to be able to create ecological consequences, particularly relating to flora and fauna. Keep talking ...
Grailtest is stirring ...

sofar
Developer
Posts: 2146
Joined: Fri Jan 16, 2015 07:31
GitHub: sofar
IRC: sofar
In-game: sofar

Re: [Mod] Sedimentology [sedimentology-mt]

by sofar » Post

afflatus wrote:I love the idea. However I would want to use it with some rather non-standard mapgen, so I'm going to have to modify it. Nevertheless I really like the idea of the landscape dynamically changing. I also want to be able to create ecological consequences, particularly relating to flora and fauna. Keep talking ...
That's exactly the motivation for me to write this mod, and Botany as well. As a former Geology student I'm enjoying the *potential* of Minetest/MC but I hate how the game world is entirely *static*. There's so much lost potential for learning as well - how do we affect our environment? What constitutes sustainable practices?

FWIW Sedimentology-mt should work well with non-standard mapgens, as it does not do anything with the mapgen - it only looks at existing terrain.

If you have custom "ground" blocks then we can certainly add them - it's not too hard to add them and figure out good erosional characteristics and insert them in the code. If you don't have custom blocks, then the plugin should work 100% as it does with the normal mapgen.

I've not thought of adding a fauna aspect, that sounds very interesting and I think it should be possible to account for (e.g.) overgrazing.

Flora is well looked at in Sedimentology-mt - if not present, erosion works much, much faster. Planting trees or even flowers will radically slow down erosion, which encourages players to "take care" of landscapes and not leave them barren. I've seen this ruin many servers - all they have left after a long time is nothing but flat empty plains and extremely boring landscapes. Of course, Sedimentology's erosion aspect does help clean up some of that.

Other thoughts: erode building blocks as well (especially abandoned structures)... Biomes are needed to refine and balance things further. Porting Botany won't be possible unless we get better Biome data without calculating a ton of state.

User avatar
afflatus
Member
Posts: 362
Joined: Tue Apr 01, 2014 19:47
GitHub: 0-afflatus
IRC: afflatus
In-game: afflatus
Location: Avalonia
Contact:

Re: [Mod] Sedimentology [sedimentology-mt]

by afflatus » Post

sofar wrote:That's exactly the motivation for me to write this mod, and Botany as well. As a former Geology student I'm enjoying the *potential* of Minetest/MC but I hate how the game world is entirely *static*. There's so much lost potential for learning as well - how do we affect our environment? What constitutes sustainable practices?
Exactly.
I've not thought of adding a fauna aspect, that sounds very interesting and I think it should be possible to account for (e.g.) overgrazing.
Yes, although really that should be a separate modification of mobs.
Flora is well looked at in Sedimentology-mt - if not present, erosion works much, much faster. Planting trees or even flowers will radically slow down erosion, which encourages players to "take care" of landscapes and not leave them barren. I've seen this ruin many servers - all they have left after a long time is nothing but flat empty plains and extremely boring landscapes. Of course, Sedimentology's erosion aspect does help clean up some of that.
I can't wait to try this out.
Grailtest is stirring ...

sofar
Developer
Posts: 2146
Joined: Fri Jan 16, 2015 07:31
GitHub: sofar
IRC: sofar
In-game: sofar

Re: [Mod] Sedimentology [sedimentology-mt]

by sofar » Post

I'm going to add support for non-default nodes, and already added a few mod-specific nodes in the git version: moretrees, mg, moreores, mesecons, to name just a few. These mods add things like "grass with leaves" and should now also properly degrade and displace just like the default dirt/grass nodes.

TriBlade9
Member
Posts: 89
Joined: Fri Sep 05, 2014 09:35

Re: [Mod] Sedimentology [sedimentology-mt]

by TriBlade9 » Post

sofar wrote:I'm going to add support for non-default nodes, and already added a few mod-specific nodes in the git version: moretrees, mg, moreores, mesecons, to name just a few. These mods add things like "grass with leaves" and should now also properly degrade and displace just like the default dirt/grass nodes.
Excellent! Have you looked into groups yet? It might simplify a few things.

sofar
Developer
Posts: 2146
Joined: Fri Jan 16, 2015 07:31
GitHub: sofar
IRC: sofar
In-game: sofar

Re: [Mod] Sedimentology [sedimentology-mt]

by sofar » Post

TriBlade9 wrote:
sofar wrote:I'm going to add support for non-default nodes, and already added a few mod-specific nodes in the git version: moretrees, mg, moreores, mesecons, to name just a few. These mods add things like "grass with leaves" and should now also properly degrade and displace just like the default dirt/grass nodes.
Excellent! Have you looked into groups yet? It might simplify a few things.
I have but the most extensible way of handling this is to have a simple table format that can easily be read and understood. Groups would make that harder, and more complex.

To give you an example: for mg/woodsoils I made grass_with_leaves_2 decay to grass_with_leaves_1 (in turn) to dirt_with_leaves_2 to dirt_with_leaves_1 to default:dirt, all in succession. With groups I couldn't do much of that refined detail.

TriBlade9
Member
Posts: 89
Joined: Fri Sep 05, 2014 09:35

Re: [Mod] Sedimentology [sedimentology-mt]

by TriBlade9 » Post

sofar wrote:
TriBlade9 wrote:
sofar wrote:I'm going to add support for non-default nodes, and already added a few mod-specific nodes in the git version: moretrees, mg, moreores, mesecons, to name just a few. These mods add things like "grass with leaves" and should now also properly degrade and displace just like the default dirt/grass nodes.
Excellent! Have you looked into groups yet? It might simplify a few things.
I have but the most extensible way of handling this is to have a simple table format that can easily be read and understood. Groups would make that harder, and more complex.

To give you an example: for mg/woodsoils I made grass_with_leaves_2 decay to grass_with_leaves_1 (in turn) to dirt_with_leaves_2 to dirt_with_leaves_1 to default:dirt, all in succession. With groups I couldn't do much of that refined detail.
Ah, alright then.
That sounds pretty awesome by the way.

User avatar
afflatus
Member
Posts: 362
Joined: Tue Apr 01, 2014 19:47
GitHub: 0-afflatus
IRC: afflatus
In-game: afflatus
Location: Avalonia
Contact:

Re: [Mod] Sedimentology [sedimentology-mt]

by afflatus » Post

I just want to report that sedimentology is working rather nicely with my game. I found it easy to modify to suit my custom soil types. I'd push these changes but afaik no-one else is using the same soil types in quite the same way.

I'm in two minds about the cobble decay - it only seems to affect nodes on the flat, for reasons I can't quite figure. And breaks protection - although cobble buildings don't seem to be affected. It means I may have to create a highways dept to maintain the roads, which is interesting. I didn't like the effect at first, but I'm getting used to it. I like the fact that it plays nice with woodsoils and my custom shrubs.

I'd love it if it affected snow blocks and acted to consolidate snow masses - melting stray nodes and freezing gaps between snow blocks. I have deliberately left out icydirt and permafrost because I think they should be immutable while frozen. The mod also doesn't seem to create undue lag, which is a pleasant surprise.

Thank you.
Grailtest is stirring ...

sofar
Developer
Posts: 2146
Joined: Fri Jan 16, 2015 07:31
GitHub: sofar
IRC: sofar
In-game: sofar

Re: [Mod] Sedimentology [sedimentology-mt]

by sofar » Post

afflatus wrote:I just want to report that sedimentology is working rather nicely with my game. I found it easy to modify to suit my custom soil types. I'd push these changes but afaik no-one else is using the same soil types in quite the same way.
Check out what I've done in git: https://github.com/sofar/sedimentology- ... /nodes.lua - it should be a lot easier to add your custom nodes, and I'd be happy to merge odd ones in here, as it's really not that difficult to maintain like this.
afflatus wrote:I'm in two minds about the cobble decay - it only seems to affect nodes on the flat, for reasons I can't quite figure. And breaks protection - although cobble buildings don't seem to be affected.
Beware that cobblestone degrade/displacement factors are a lot lower than dirt and sand, so it's quite unlikely that you'll catch many blocks move.

In the bukkit plugin I account for weather, something I also want to port over to minetest, but there's no decent weather model in minetest yet (again, something I really want to fix).

If you spot a problem, please include a screenshot, or even seed/mapgen so I can reproduce.
afflatus wrote:It means I may have to create a highways dept to maintain the roads, which is interesting. I didn't like the effect at first, but I'm getting used to it. I like the fact that it plays nice with woodsoils and my custom shrubs.
I really like this effect myself. Lots of roads on my bukkit server are looking like old raggedy paths with dirt, sand, gravel etc. all intermingling. Once in a while I make my kids fix the roads.
afflatus wrote:I'd love it if it affected snow blocks and acted to consolidate snow masses - melting stray nodes and freezing gaps between snow blocks. I have deliberately left out icydirt and permafrost because I think they should be immutable while frozen. The mod also doesn't seem to create undue lag, which is a pleasant surprise.
the bukkit version created piling up snow and factored in snow depth into erosion - e.g. a thick snow pack causes rocks to degrade to gravel faster, but movement slows down.

The biggest things missing right now are:

- Biome information (impossible to solve unless mapgens save this metadata to the map)
- fixing up water edges (should be portable, just needs to be moved over)
- weather (really needs a core minetest addition, not a mod, IMHO)
- snow effects (doable)

sofar
Developer
Posts: 2146
Joined: Fri Jan 16, 2015 07:31
GitHub: sofar
IRC: sofar
In-game: sofar

Re: [Mod] Sedimentology [sedimentology-mt]

by sofar » Post

Just released v2, which includes several algorithmic fixes that will benefit overall gameplay:
- upward sand creep reduces
- proper world topmost block detection (don't erode inside houses, etc)
- Fix water edge trimmings.

User avatar
afflatus
Member
Posts: 362
Joined: Tue Apr 01, 2014 19:47
GitHub: 0-afflatus
IRC: afflatus
In-game: afflatus
Location: Avalonia
Contact:

Re: [Mod] Sedimentology [sedimentology-mt]

by afflatus » Post

Downloaded, will test as soon as I've fixed mapgen issues.
Grailtest is stirring ...

User avatar
afflatus
Member
Posts: 362
Joined: Tue Apr 01, 2014 19:47
GitHub: 0-afflatus
IRC: afflatus
In-game: afflatus
Location: Avalonia
Contact:

Re: [Mod] Sedimentology [sedimentology-mt]

by afflatus » Post

What I would love more than anything right now is a worldedit type command that could apply a speeded up erosion effect to things like box-cliffs.

I may just have to try hacking one up.
Grailtest is stirring ...

twoelk
Member
Posts: 1482
Joined: Fri Apr 19, 2013 16:19
GitHub: twoelk
IRC: twoelk
In-game: twoelk
Location: northern Germany

Re: [Mod] Sedimentology [sedimentology-mt]

by twoelk » Post

maybe dynamite combined with the Mud Slide mod?

sofar
Developer
Posts: 2146
Joined: Fri Jan 16, 2015 07:31
GitHub: sofar
IRC: sofar
In-game: sofar

Re: [Mod] Sedimentology [sedimentology-mt]

by sofar » Post

afflatus wrote:What I would love more than anything right now is a worldedit type command that could apply a speeded up erosion effect to things like box-cliffs.

I may just have to try hacking one up.
Just sit in an area and increase blocks to something like 500.

I have a /sed test subcommand in the bukkit version, where you can run it an arbitrary number of times on each block inside a region, will probably include it in a future version.

luewind
New member
Posts: 8
Joined: Thu Mar 12, 2015 20:19
In-game: luewind

Re: [Mod] Sedimentology [sedimentology-mt]

by luewind » Post

Decided to try and play around with this mod but I can't get it working on every computer. It works on a school computer but error on my personal comp. I'm getting:
Failed to load and run script from
15:27:43: ERROR[main]: /home/chris/.minetest/mods/sedimentology_mt/init.lua:
15:27:43: ERROR[main]: /home/chris/.minetest/mods/sedimentology_mt/init.lua:36: attempt to call field 'get_mapgen_params' (a nil value)

Any Ideas?
also had to change it to sedimentology_mt because the - was causing issues on both systems.

sofar
Developer
Posts: 2146
Joined: Fri Jan 16, 2015 07:31
GitHub: sofar
IRC: sofar
In-game: sofar

Re: [Mod] Sedimentology [sedimentology-mt]

by sofar » Post

luewind wrote:Decided to try and play around with this mod but I can't get it working on every computer. It works on a school computer but error on my personal comp. I'm getting:
Failed to load and run script from
15:27:43: ERROR[main]: /home/chris/.minetest/mods/sedimentology_mt/init.lua:
15:27:43: ERROR[main]: /home/chris/.minetest/mods/sedimentology_mt/init.lua:36: attempt to call field 'get_mapgen_params' (a nil value)

Any Ideas?
also had to change it to sedimentology_mt because the - was causing issues on both systems.
That line calls:

* `minetest.get_mapgen_params()` Returns mapgen parameters, a table containing
`mgname`, `seed`, `chunksize`, `water_level`, and `flags`.

I'm attempting to find the water level, since I need that to start looking for blocks to erode.

I'm wondering if you have an outdated minetest version that has the old style API calling functions, those have been obsoleted a while back.

You can just name the folder "sedimentology", that'll work best.

luewind
New member
Posts: 8
Joined: Thu Mar 12, 2015 20:19
In-game: luewind

Re: [Mod] Sedimentology [sedimentology-mt]

by luewind » Post

ya, I'm using 0.4.11 so I don't know if that is the issue.

That line is the one that is looking for the water level which I believe defaults to something like 0, so I don't know if its possible to use something like a try/catch block and have the catch default to zero?

Post Reply

Who is online

Users browsing this forum: Google [Bot] and 25 guests