Jump to content
Damocles

[A19] NITROGEN , a random world generator for 7DtD

Recommended Posts

btw, you've got a typo in one of your posts

 

ffa800 or 255,268,0 -> wasteland

 

should be

 

ffa800 or 255,168,0 -> wasteland

 

^^

 

true

Share this post


Link to post
Share on other sites

Hello,

 

I run DF experimental and sorcery and found Nitrogen very tempting.

After testing it out and reading a bit in this thread i found that the prefablist was not DF ready, i did fix that with some scripting and correcting, based on the file you had in the resources folder. While i wrote the script to collect the needed info from the prefab.xml files i realized that you do not include the "allowed biomes" info they come with and after testing a good dozen test runs generating random maps i saw that i never got any wasteland and burnt forest on the result, except of course the border i could choose. Now i believe you already know what i am going to suggest.

 

Why not include the allowed biome info, if the xml comes without, go with any and make the generation even better?

I generated a new prefablist with python reading out all prefab.tts files header for their dimensions and adding the rest info from their corresponding xml files, so only some manual corrections for your generator specific values were needed.

Also a bit of a shame that you had so many smaller prefabs commented out, but i understand why. Just hope they may find a way in the generator someday.

 

That said, i can say it would not be too hard to read the allowed biome info out and add it as well, question is, would that be of any interest?

 

I would really love to see less of those steep streets and more natural maps, and since i'm really set on playing DF i kinda need those other biomes.

I would just edit the biomes.jpg, but that would not affect the generated prefab placing if i am not completely wrong, right?

 

You have a great project with a lot of potential and i am a big fan of the idea of NITROGEN and your work, keep it up.

 

I attached the prefablist file i generated, without the allowed biomes info, in case someone is interested in trying it out.

This is generated with all prefabs (with Darkness Falls experimental installed) in the data/prefab folder.

new prefablist DF.txt

Edited by Xylvier
Updated file (see edit history)

Share this post


Link to post
Share on other sites
Hello,

 

I run DF experimental and sorcery and found Nitrogen very tempting.

After testing it out and reading a bit in this thread i found that the prefablist was not DF ready, i did fix that with some scripting and correcting, based on the file you had in the resources folder. While i wrote the script to collect the needed info from the prefab.xml files i realized that you do not include the "allowed biomes" info they come with and after testing a good dozen test runs generating random maps i saw that i never got any wasteland and burnt forest on the result, except of course the border i could choose. Now i believe you already know what i am going to suggest.

 

Why not include the allowed biome info, if the xml comes without, go with any and make the generation even better?

I generated a new prefablist with python reading out all prefab.tts files header for their dimensions and adding the rest info from their corresponding xml files, so only some manual corrections for your generator specific values were needed.

Also a bit of a shame that you had so many smaller prefabs commented out, but i understand why. Just hope they may find a way in the generator someday.

 

That said, i can say it would not be too hard to read the allowed biome info out and add it as well, question is, would that be of any interest?

 

I would really love to see less of those steep streets and more natural maps, and since i'm really set on playing DF i kinda need those other biomes.

I would just edit the biomes.jpg, but that would not affect the generated prefab placing if i am not completely wrong, right?

 

You have a great project with a lot of potential and i am a big fan of the idea of NITROGEN and your work, keep it up.

 

I attached the prefablist file i generated, without the allowed biomes info, in case someone is interested in trying it out.

This is generated with all prefabs in the DF prefab folder. Edited slightly to work with the generator.

 

That saved me some time... ;)

 

FYI, remove the demon portal from the prefab list. It's for biome decoration because that was more accurate than trying to place just the model on it's own... somehow.

Share this post


Link to post
Share on other sites

Sure thing (corrected btw.), i just didn't want to start taking things out, so i commented out most that were commented out in the one coming with the generator.

Big fan of DF, so respect and happy i could help ya.

 

And to be honest, i wanted to see that portal spawn XD

 

But of course it shouldn't be placed all over the place, not that we get another Oblivion .. haha

Wonder tho what you intend to do with it later ??

 

Was just flying through and running along a new world with all the prefabs in it, found none so far that were either to high or low and sadly didn't find the portal either, not cheating with the maplist coordinates, nope. Discovering is one of the best parts.

Edited by Xylvier (see edit history)

Share this post


Link to post
Share on other sites

Hey @Damoncless I loved your generator i was wating for this for too long, but i dont have the hability to make smth, Thank you for make and sharing it with us, I run dozens of word with custom Image and with the random ones and one thing that i dont liked was the prefabs in hills, it looks too much impossible to reach in a real world has smth in mind to not spawn prefabs in hills, not the cabins, and i want to make main road and city roads more large, can i make it? and how? if u have time to think about it, Thanks Again for the tool!!

Share this post


Link to post
Share on other sites
Sure thing (corrected btw.), i just didn't want to start taking things out, so i commented out most that were commented out in the one coming with the generator.

Big fan of DF, so respect and happy i could help ya.

 

And to be honest, i wanted to see that portal spawn XD

 

But of course it shouldn't be placed all over the place, not that we get another Oblivion .. haha

Wonder tho what you intend to do with it later ??

 

Was just flying through and running along a new world with all the prefabs in it, found none so far that were either to high or low and sadly didn't find the portal either, not cheating with the maplist coordinates, nope. Discovering is one of the best parts.

 

Oh... it does stuff already... ;)

Share this post


Link to post
Share on other sites
Hi, just came back from an Easter trip.

I have tried your prefab list, it generates fine: important is to set traders to none when generating, as the list does not contain a trader-marked POI, it locks in an infinite loop. You could merge it with prefabs from the vanilla list (not sure how Ravenhearst represents traders), or just mark any POI as trader, to have it find something to place.

 

I have not tried the Ravenhearst POIs, so Im not sure what else is missing when loading the map.

 

Tip: mark more POIs as farm, hillbillyjunk, hillbillytrailer, alone, mountain and oldwest.

To give it more variety when using the default settings. Else it would look quite repetative in those locations.

 

 

Greetings,

 

Thank you for your answer.

Yes, I had merged the list with the NitroGen prefabs list already when I tried it. Just tried out the new 0.24 NitroGen version, but still get the same exception. The issue is as before; the map generates fine, but I cannot load it into Ravenhearst. I'm wondering whether this has something to do with NitroGen not generating Burnt Forest and Wasteland biomes, if Ravenhearst or Ravenhearst prefabs would expect those areas to be existent. Could that be?

Edited by MelT
forgot the quote (see edit history)

Share this post


Link to post
Share on other sites

New version: 0.242 (same download link)

 

-added option to have wasteland (craters) and burned forest patches, unter the biomes selection

-roads can be set a bit (2 meters) wider

 

----

 

I dont want to make the roads too wide, as this can cause problems with the smoothing of the terrain, and dangling POIs.

 

I dont really like the wasteland biome (mostly for its visual environment effect and as its nonsensical), so its optionally spawned as a huge crater (imagine the landscape was bombed to eradicate the outbreak)

 

----

 

About the POI biome restrictions: most POIs work fine in all biomes, there are a few that dont work well (namely the snow POIs) But adding extra logic for those few would make it unnecessarily complex.

 

The prefab list excluded several POIs, I tried to keep as many in as possible but some are

-very specific handplaced decorations for Navezgane

-have snow (looks weired when spawned somewhere else)

-would require special logic to place correctly (the docks, the bridges and canyon POIs)

-are work in progress, some elements in them would break immersion

Edited by Damocles (see edit history)

Share this post


Link to post
Share on other sites

Big thumbs up and thanks !!

 

Finally the burnt forest and wasteland is in, very happy i can now fiddle again.

Great idea btw. to make the wasteland appear in form of craters, tho i must admit they were a bit too small for me and i cranked their size up by 1.5 times. Hope you don't mind -.-'

I tried a few settings and found myself with a little problem tho, those awesome mountains are always too crazy high.

 

It's not that i am helpless and can't adjust the height-map generation resources to a weaker peak value, but i wondered if you would mind adding an option for that workaround to not be needed XD

 

I totally understand the reasons regarding the POI/prefabs, it was after all only an idea and would most certainly cause a lot more work on your side.

 

I bet KhaineGB will also be very happy about the addition and i hope we soon see some new worlds from him with some hand placed things .. maybe some portals XD to go along with his DF.

 

All in all a great tool, thanks for your work and time.

Hope to see more features, no preassure :p

 

Just thought of a post i read in this thread a bit back, since you use RNG for the generation and since i could not find a seed option, i would like to humbly ask if you would be willing to add an optional field for that, as well as "maybe" a preset(list) function we could use to save our setups with (including the seed) then it would be possible to share and compare.

Edited by Xylvier
humble request added (see edit history)

Share this post


Link to post
Share on other sites
Big thumbs up and thanks !!

 

Finally the burnt forest and wasteland is in, very happy i can now fiddle again.

Great idea btw. to make the wasteland appear in form of craters, tho i must admit they were a bit too small for me and i cranked their size up by 1.5 times. Hope you don't mind -.-'

I tried a few settings and found myself with a little problem tho, those awesome mountains are always too crazy high.

 

It's not that i am helpless and can't adjust the height-map generation resources to a weaker peak value, but i wondered if you would mind adding an option for that workaround to not be needed XD

 

I totally understand the reasons regarding the POI/prefabs, it was after all only an idea and would most certainly cause a lot more work on your side.

 

I bet KhaineGB will also be very happy about the addition and i hope we soon see some new worlds from him with some hand placed things .. maybe some portals XD to go along with his DF.

 

All in all a great tool, thanks for your work and time.

Hope to see more features, no preassure :p

 

Just thought of a post i read in this thread a bit back, since you use RNG for the generation and since i could not find a seed option, i would like to humbly ask if you would be willing to add an optional field for that, as well as "maybe" a preset(list) function we could use to save our setups with (including the seed) then it would be possible to share and compare.

 

About the seed:

while it would be possible to insert a seed, it would only give the same results on other clients if ALL options are set to the same value.

That could be an idea when I dont plan any further changes, as any change would also completely change the results.

(All generation steps draw from the same random pool)

 

The vanilla RWG does not have manual configuration options in the UI, so sharing a seed works better here.

 

----

 

With the mountains I tried to have a scenic "Alpine" look. They are pretty hight, also as to use the full range of the possible hight.

I can think about a parameter to set the impact of the peaks.

But the best results would come from custom hightmap brushes here, if you want a specific look. (Should be enough to just smooth and reduce the white value on the mountain tops, and maybe remove the snow biome color values in the mask, if you want high green hills).

Share this post


Link to post
Share on other sites

Get the situation with the seed and results changing with new features, but it could give a possibility to maybe affect the randomness of the generation in a more drastic way, don't know tho how you jumble the seed every time we press the button.

 

No complains in regards to the mountains, realism based generation is making the worlds look so good.

 

 

 

And sorry, but i just found that there were some wrong values in the oldwest prefabs yoffsets, since i let my parser read out all those values from the files itself and did not expect them to be wrong i had to find out the hard way flying in the world.

 

I corrected the file i attached in my previous post, a bit above in the previous page.

Edited by Xylvier (see edit history)

Share this post


Link to post
Share on other sites

The results are completely random every time you start / restart the generation.

 

At the start of the program, the random Object is initialized with a seed calculated from the current nanosecond counter. A classic pseudo-random function.

 

So there will be no observable repeating patterns (that could be fixed be manually setting the seed), outside of the existing limitations of the generation. (Any time a very small change is done to the generation, the output is completely different)

 

The approach I took here is theoretically less random than the noise-map based approach in the vanilla RWG, but it also gives me more control over the outcome.

 

And one of my main goals is, that any generated default map is fun to play for a normal vanilla user (who would likely not try out several maps, but just wants one to play on). It should not just be a few good maps with a lucky draw on the distribution of features and POIs.

 

For anyone who likes to experiment, there should also be lots of custom options. All the way to allowing to import a selfauthored hightmap.

Edited by Damocles (see edit history)

Share this post


Link to post
Share on other sites
The results are completely random every time you start / restart the generation.

 

At the start of the program, the random Object is initialized with a seed calculated from the current nanosecond counter. A classic pseudo-random function.

 

So there will be no observable repeating patterns (that could be fixed be manually setting the seed), outside of the existing limitations of the generation. (Any time a very small change is done to the generation, the output is completely different)

 

The approach I took here is theoretically less random than the noise-map based approach in the vanilla RWG, but it also gives me more control over the outcome.

 

And one of my main goals is, that any generated default map is fun to play for a normal vanilla user (who would likely not try out several maps, but just wants one to play on). It should not just be a few good maps with a lucky draw on the distribution of features and POIs.

 

For anyone who likes to experiment, there should also be lots of custom options. All the way to allowing to import a selfauthored hightmap.

 

Totally agree with the randomness, just wondered how you implemented it ;)

 

That aside i always remember my grandfather, who tested my programs when i was younger, hehe, he clicked every button, even if it made no sense at that moment, but that way we always found the loopholes i would not have thought about back then.

Long story short, some buttons can be dangerous if left active while what they start is running, but sometimes what they run can take time and may be nice if it could be interrupted.

 

So here my suggestion:

 

- Allow stopping the generation mid way:

It's already very fast and i believe for most it's easy to just wait or close the program and start again, but looking for something that looks

balanced while randomly generating in regards of biome distribution is rather time consuming.

I always keep the output folder open and check the biomes and heightmap while the generation is running, sometimes i wish i could restart

when i see the biomes, tho mostly in regards of craters/wasteland and burned forest, but also if there is no snow or desert at all.

 

- I found that the citys don't have a main road, was wondering if you could implement something like that? (sounds complicated already tho)

 

Hope you don't think i want to nag, far from that, really love your tool and want to help (bad with java tho :p).

Edited by Xylvier (see edit history)

Share this post


Link to post
Share on other sites
Is there a way to locate the traders with Previewmap?

(I know you can see them in prefabs)

 

I checked that out myself and can only confirm the vanilla traders are purple, see picture.

 

previewMap.thumb.jpg.28218a1d354cfb5e9c0eaa07b54ebf36.jpg

 

don't forget that the preview is flipped vertically :p

Share this post


Link to post
Share on other sites

- Allow stopping the generation mid way:

It's already very fast and i believe for most it's easy to just wait or close the program and start again, but looking for something that looks

balanced while randomly generating in regards of biome distribution is rather time consuming.

I always keep the output folder open and check the biomes and heightmap while the generation is running, sometimes i wish i could restart

when i see the biomes, tho mostly in regards of craters/wasteland and burned forest, but also if there is no snow or desert at all.

 

Maybe I will add some options to trigger map generation and POI placement separately, as they are functionally different modules.

 

Something like:

-generate map and pois

-only generate map

-import map, generate pois (where you can edit the hight-map beforehand)

-import POI placement mask

 

- - - Updated - - -

 

The player spawn points are red, traders purple, city centers cyan, industrial buildings blue.

 

(..in Xylviers map, there also seem to be some custom added POIs, using the citycenter color)

Edited by Damocles (see edit history)

Share this post


Link to post
Share on other sites
Maybe I will add some options to trigger map generation and POI placement separately, as they are functionally different modules.

 

Something like:

-generate map and pois

-only generate map

-import map, generate pois (where you can edit the hight-map beforehand)

-import POI placement mask

 

- - - Updated - - -

 

The player spawn points are red, traders purple, city centers cyan, industrial buildings blue.

 

(..in Xylviers map, there also seem to be some custom added POIs, using the citycenter color)

 

If you are feeling ambitious, the option for a hub city like we had with A15 and prior would be awesome. Some of my best gaming memory with 7D are from looting (or trying to loot) the hub city, hiding in the apartment buildings, etc. I miss the hub city more than anything else.

 

I'm currently playing, and running a server, from A15.2. My users in general dislike A17, were OK with A16, but still like A15 best.

Share this post


Link to post
Share on other sites

Ok, after i posted the prefablist i created for Darkness Falls and posted it i got asked about that.

I send him(i believe) my script(python2.7) to allow making a genuine list based on the prefabs in the "7 days to die/data/prefabs" folder.

He told me i should post it in the forum as maybe some others could have interest in using it, so here we go:

 

Need to mention, that i packed a zip which when extracted will need to be in the "7 Days to die/data" folder as "prefablistgenerator_for_NITROGEN".

In that folder you find a "parser.py" which is the python script and a parser.exe, for those that do not have python3.7 installed.

The exe just in case you do not have python installed.

The Parser will generate the "prefabslist.txt" in its the folder.

This list will contain ALL prefabs in your data/prefabs folder, means you will need to go through it and comment out what is not needed/wanted or should be avoided. In that matter i can only advise to check with the "prefabslist.txt" that comes with the NITROGEN package from Damocles.

 

Also, be aware that my script only reads out what is in the prefabs tts and xml files. You will need to do some manual editing, as that can't all be done by a non sentient script XD

 

Hope it will be of use for some/one... ;)

 

new version:

https://drive.google.com/open?id=1Wfp5I6DqjVZGfSJP9Hq1eZvhFInbvTuC

 

old version:

https://drive.google.com/open?id=1Lg4kwi0R8VJl34lB74_sVM_Mah9LrXUz

Edited by Xylvier
Improved version (GUI version with some failsafes) (see edit history)

Share this post


Link to post
Share on other sites

Absolutely loving this! Tried out a few maps. My first one I cranked all the pois and city/town sizes to max and it was lag hell. My next two maps I kept my cities at the lowest but largest level as well as towns with maximized other pois and they have been running great! I had the viscious crack turned on.. when I was running to the trader I discovered how viscious those cracks are as I wasn't expecting it or my broken leg.

 

Only anomaly I came across was a small lake that had a chrysanthemum growing in its centre.

 

Great work!

 

Looking forward to seeing what comes of this!

Share this post


Link to post
Share on other sites

"Maybe I will add some options to trigger map generation and POI placement separately, as they are functionally different modules."

 

It would be great to have some options there. Also, can the splat map be handled separately as well? I'd like to remove certain roads that lead through rivers and such. OR that mask that was talked about, it could also include zones where no roads may go?

 

I'd love to create the basic map, then adjust stuff, keeping the POI placements and heightmap, but being able to adjust the roads, cut the ones going over rivers to be replaced by bridgePOI later (manually)

 

Dunno if that comes across right... Currently, I have a handcrafted map + heightmap, i've put that through the generator, and the city placement was pretty much perfect. I'd like to paint in a river now and remove the roads-parts it crosses, regenerate the terrain without touching the POI placements, taking care that my river (or any feature) doesn't touch terrain already occupied by a poi.

Share this post


Link to post
Share on other sites

Thanks for all the feedback.

I will note down the suggestions, lets see when I have time to add some more features.

Share this post


Link to post
Share on other sites
"Maybe I will add some options to trigger map generation and POI placement separately, as they are functionally different modules."

 

It would be great to have some options there. Also, can the splat map be handled separately as well? I'd like to remove certain roads that lead through rivers and such. OR that mask that was talked about, it could also include zones where no roads may go?

 

I'd love to create the basic map, then adjust stuff, keeping the POI placements and heightmap, but being able to adjust the roads, cut the ones going over rivers to be replaced by bridgePOI later (manually)

 

Dunno if that comes across right... Currently, I have a handcrafted map + heightmap, i've put that through the generator, and the city placement was pretty much perfect. I'd like to paint in a river now and remove the roads-parts it crosses, regenerate the terrain without touching the POI placements, taking care that my river (or any feature) doesn't touch terrain already occupied by a poi.

 

Added separate generation steps, to redo POI mapping to the same terrain. Also added a mask image import that blocks POIs and roads to use a masked off area.

This way the user has more manual control over the POI and road distribution.

 

Also an option to only have a single spawnpoint, so in MP everyone should start together at the same spot.

 

Will be included when the next version is uploaded.

Share this post


Link to post
Share on other sites

New version 0.25 online (same download link)

 

 

-option to only have single playerspawn (same starting location in MP)

 

-generation mode:

 

* automatic: normal generation

* use import_HM.png: loads import_HM.png from the resources folder, then generates map

* import + mask: loads import_HM.png and a mask.png from the resource folder (mask will block POIs from spawning, and discourages roads), only the alpha channel is considered, alpha below 20 is free, everything else blocked

* only generate HM: stops after generating the procedural map

* only map POIs: loads the genHM.png from the indicated folder, and continue generation

 

usecases:

-> you first use "only generate the HM", edit the hightmap, then use "only map POIs" to continue

-> you can repeat "only map POIs" to try out different POI distributions on the same hightmap

-> you can create a custom hightmap, place it in the resource folder, add a mask, then generate a custom world

 

In the provided example (quickly drawn), I used the mask to block the mountains and river areas / river deltas from spawning POIs.

The mask can have any size, as long as its square. Larger masks will of course have a better resolution.

 

The logic ist just testing for the center of the POI for a mask-pixel. So to really avoid an area, it should have a large enough margin in the mask.

The mask consideres any pixel with an ALPHA value smaller than 20 (eg fully transparent) as passable, anything else as blocked. The color does not matter, so you can paint all blocked areas pink if you like.

 

The easiest way to create a mask would be to paint an separate layer in photoshop ontop of the terrain, and then export that layer as mask.png

Edited by Damocles (see edit history)

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...