Sign in to follow this  
Kruggan

WU Map/Terrain Generator Development

Recommended Posts

From my experience learning how to mod Game Terrains as a hobbyist, Photoshop or GIMP is probably the best tools for designing worlds for games


 


Learning how to paint in Greyscale with Photoshop is probably the best approach for designing map in the Height-map, since you can make sure you terrain is manageable and actually make design from your head


 


Quite a few tutorials can be found on YouTube with Photoshop heightmap searches


 


Do recommend L3DT from sunsvortex above post since the tool can take in custom heightmaps including from Photoshop

Share this post


Link to post
Share on other sites

Just a small teaser from my terrain generator.

 

a7kHcXu.png

 

I don't plan on releasing it publicly - or at least not right away.

 

 

which terrain generator is that? oH nm you are keeping it private....*facepalm

 

Btw this looks like the same thing the devs use.

Edited by Uberknot

Share this post


Link to post
Share on other sites

World painter is a nice Generator for Minecraft that I also use for terrain making in other games


 


 


Here is some youtube links of it in action


>https://www.youtube.com/watch?v=7FiZPC1Rv4g


>https://www.youtube.com/watch?v=c5J3q5_SPIw


Share this post


Link to post
Share on other sites

well hopefully there ends up being a compatible uniform generator designed for Wurm....even one that Wurm Online endorses and recommends would be nice.  In order for this to work and not be a mess The Devs might have to consider giving people some clues.....because once people start getting map creation fever a ton of people are going to want to do it.  I would love to see the actual software used right now to create maps for wurm.


Share this post


Link to post
Share on other sites

Textures would be a client modification, not a map modification.

 

What I've taken away from the Q&A on the FAQ thread is CodeClub won't ban, block, or prevent any modification - but won't actively support it with APIs and such either. So as he said, if the game updates, your modifications would go away and need to be re-applied.

 

 

Meh if thats the case.....I'll wait till you guys figure out something better not going to bother having everything erased.

 

Hopefully you figure out a way to let people choose from a vast library of maps and allow those to be used.

Edited by Uberknot

Share this post


Link to post
Share on other sites

I use World Creator

 

 

I'm curious about World Creator.  Does it do terrain tiling or does it do single terrain heightmaps?

 

I'm using World Machine for the project that I'm working on in Unity.  I've got a small prototype area that I've taken from my overall world.  It's a small island area about 6km x 6km.  The overall project is 150km x 150km over 2,304 tiles in 8k resolution.  Using some pretty cool assets in Unity (like RTP3 and Terrain Composer), I can pretty much create a very detailed world.

 

The images below give you a bit of an idea.

 

3ABnXxs.png

q7ZyNNN.png

kegMm6M.png

 

What I don't have is the overall game framework to go around this.  This is where I'm hoping that Wurm can come in.  What I need is the ability to import tiled heightmaps, splatmaps and flowmaps.  The rest of it will be applying textures to the generated texture.  If someone is capable of creating a tool like that, them perhaps I get realise some of the work I've done so far.

 

That's just my 2 cents anyway.

Edited by Lichbane
  • Like 1

Share this post


Link to post
Share on other sites

which terrain generator is that? oH nm you are keeping it private....*facepalm

 

Btw this looks like the same thing the devs use.

Believe Wurmonline Height-map was created by a  old version of World Machine 

 

1275002187_wm-coastoverlay.jpg

Share this post


Link to post
Share on other sites

which terrain generator is that? oH nm you are keeping it private....*facepalm

 

Btw this looks like the same thing the devs use.

 

I guess this tool is selfmade. Coding a wurm terrain generator is complex but not impossible.

 

The Wurm terrain works in this way: http://forum.wurmonline.com/index.php?/topic/112386-client-settings-question/

 

 

And if you have deeper knowledge about how the client might be doing things you can code a terrain generator right now, before the release of WU.

Edited by Sklo:D

Share this post


Link to post
Share on other sites

I guess this tool is selfmade. Coding a wurm terrain generator is complex but not impossible.

 

The Wurm terrain works in this way: http://forum.wurmonline.com/index.php?/topic/112386-client-settings-question/

 

 

And if you have deeper knowledge about how the client might be doing things you can code a terrain generator right now, before the release of WU.

 

Warlander refers to geomipmapping, although it's more commonly known as LOD (level of detail). In wurm the nearby terrain (within ~128?) tiles is rendered at high detail, and terrain further than that is rendered at '1/16th' detail (each 16x16 section of the map is averaged into a big tile). Although this doesn't pertain much to generating the terrain, as the server will handle this. For an experienced programmer writing code to save in a format compatible with wurm is trivial, but to actually make the maps look natural and have interesting features is challenging, there are just too many aspects to real world terrain to account for (water erosion, tectonic movement, wind erosion, rock styles, soil types, climate etc) to make completely natural looking terrain.

 

Also yes, the tool is self made, but the rendering looks similar to official map dumps because I pulled the tile type colours from decompiled client code.

Edited by Jonneh

Share this post


Link to post
Share on other sites

Warlander refers to geomipmapping, although it's more commonly known as LOD (level of detail). In wurm the nearby terrain (within ~128?) tiles is rendered at high detail, and terrain further than that is rendered at '1/16th' detail (each 16x16 section of the map is averaged into a big tile). Although this doesn't pertain much to generating the terrain, as the server will handle this. For an experienced programmer writing code to save in a format compatible with wurm is trivial, but to actually make the maps look natural and have interesting features is challenging, there are just too many aspects to real world terrain to account for (water erosion, tectonic movement, wind erosion, rock styles, soil types, climate etc) to make completely natural looking terrain.

 

Also yes, the tool is self made, but the rendering looks similar to official map dumps because I pulled the tile type colours from decompiled client code.

 

Yes I know that, I was more refering to the picture in the thread, as it shows the mesh system of the wurm terrain.

 

 

So the question is would you enlighten us pls in which format the map has to be exported so the server can use it?

Edited by Sklo:D

Share this post


Link to post
Share on other sites

Yes I know that, I was more refering to the picture in the thread, as it shows the mesh system of the wurm terrain.

 

 

So the question is would you enlighten us pls in which format the map has to be exported so the server can use it?

 

Don't know for sure yet, but it will likely be in a similar format that the protocol uses for sending it.

 

So for the surface it's probably written with code similar to this;

try (DataOutputStream out = new DataOutputStream(Files.newOutputStream(Paths.get("surface.map"))) {

out.writeShort(map.getSize()); // this is probably incorrect, but there is probably some kind of header with map size and maybe other data

for (int x = 0; x < map.getSize(); x++) {

    for (int y = 0; y < map.getSize(); y++) {

         Tile tile = map.getSurface().getTile(x, y);

         out.writeByte(tile.getType());

         out.writeByte(tile.getMetadata());

out.writeShort(tile.getHeight());

    }

}

}

In this case the metadata refers to extra data used for things like tree age & position, field age & crop, etc. How this is encoded depends on the tiletype.

I didn't account for the rock layer, which could be in a separate file, or may be in the same file (eg. another short after the surface height for the rock layer height).

 

No idea how caves are saved as iirc they can theoretically have different ceiling and floor types. Maybe one of them is saved as the metadata? But then there's also the ceiling height as well as the floor height. Will have to wait and see.

Share this post


Link to post
Share on other sites

Don't know for sure yet, but it will likely be in a similar format that the protocol uses for sending it.

 

So for the surface it's probably written with code similar to this;

try (DataOutputStream out = new DataOutputStream(Files.newOutputStream(Paths.get("surface.map"))) {    out.writeShort(map.getSize()); // this is probably incorrect, but there is probably some kind of header with map size and maybe other data    for (int x = 0; x < map.getSize(); x++) {        for (int y = 0; y < map.getSize(); y++) {            Tile tile = map.getSurface().getTile(x, y);            out.writeByte(tile.getType());            out.writeByte(tile.getMetadata());            out.writeShort(tile.getHeight());        }    }}

In this case the metadata refers to extra data used for things like tree age & position, field age & crop, etc. How this is encoded depends on the tiletype.

I didn't account for the rock layer, which could be in a separate file, or may be in the same file (eg. another short after the surface height for the rock layer height).

 

No idea how caves are saved as iirc they can theoretically have different ceiling and floor types. Maybe one of them is saved as the metadata? But then there's also the ceiling height as well as the floor height. Will have to wait and see.

Edited by Sklo:D

Share this post


Link to post
Share on other sites

Work in progress (ignore the UI, it's not even functional at the moment.


 


wurmarchipelago.png


Share this post


Link to post
Share on other sites

Don't know for sure yet, but it will likely be in a similar format that the protocol uses for sending it.

 

So for the surface it's probably written with code similar to this;

try (DataOutputStream out = new DataOutputStream(Files.newOutputStream(Paths.get("surface.map"))) {

out.writeShort(map.getSize()); // this is probably incorrect, but there is probably some kind of header with map size and maybe other data

for (int x = 0; x < map.getSize(); x++) {

    for (int y = 0; y < map.getSize(); y++) {

         Tile tile = map.getSurface().getTile(x, y);

         out.writeByte(tile.getType());

         out.writeByte(tile.getMetadata());

out.writeShort(tile.getHeight());

    }

}

}

In this case the metadata refers to extra data used for things like tree age & position, field age & crop, etc. How this is encoded depends on the tiletype.

I didn't account for the rock layer, which could be in a separate file, or may be in the same file (eg. another short after the surface height for the rock layer height).

 

No idea how caves are saved as iirc they can theoretically have different ceiling and floor types. Maybe one of them is saved as the metadata? But then there's also the ceiling height as well as the floor height. Will have to wait and see.

 

We'll hopefully have documentation of the file format out soon, though your guess isn't too far off I don't think.

Share this post


Link to post
Share on other sites

I can confirm, this data is true. Javadoc for WurmAPI will have a lot of "under the hood" informations as well, but - as API is there to make creating maps easier - this kind of data will be useful only for curious ones. :)

Share this post


Link to post
Share on other sites

Quick question for the developer. How do you guys render your mapdumps ? Are you using any specific tool to create this perspective top-down view of the whole map ? 


Share this post


Link to post
Share on other sites

Quick question for the developer. How do you guys render your mapdumps ? Are you using any specific tool to create this perspective top-down view of the whole map ?

WurmAPI will include 3 different map dump generation methods, including Wurm default one.

Share this post


Link to post
Share on other sites
Reposted from Steam...did not realize all the WU discussion was here as I stopped posting then lurking here long before my deeds got reclaimed to forest.

 

I call my terrain project 'Kraz Muze Isles'

 

Here is a low rez heightmap (1grid = 32x32 tiles for 2k maps) of my terrain generation ideas for 16 randomly seeded isles. (this is not Wurm biome coloring, but a traditional topographical height colormap)

 

rCIU538.jpg

 

Keep in mind I have a real job so my modding efforts usually end up being nothing more than a fun hobby in between playing games and I never release anything - but it can be fun to discuss and maybe others get ideas who have more time. I intend though to increase skilling so it takes weeks and months rather than years or even decades specifically so I can take modding breaks after maxing out so I can travel to new isles with increasingly bigger ships!

 

This is a terrain generator prototype I wrote several years in Matlab for import into Unity 4 and never finished, though I worked on it more last summer when I was between jobs. Originally it was born out of frustration with how unrealistic Wurm terrain is. It is a multifractal terrain synthesis algorithm of my own invention using actual Earth roughness stats. 

 

I tweaked the algorithm to be Wurmlike with channels, lakes and outlying islands. In reality mountains have foothills and plains that lead to the beach, so my mountains are very unlike Wurm. Wurm mountains are just barrier cliff shapes painted on a map with an arbitrary brushing up the roughness near them and I never liked them, especially when they was cliffs right on the water with no beach to land on (drowned too many times). My thinking is attempting to be realistic isles will make more interior land livable yet still offer up more desirable coastlines. But maybe I am wrong and players like the challenge of carving up canals and mountains and falling down cliffs.

 

I currently have no idea what the mountain and ocean height limits are, have an idea how to do dirt layering since I already do simple erosion. I have no idea if Wurm server grows the ores, flora, and fauna per its own algorithms or if those are additional map layers I need to do. I also fear that realistically rougher terrain with multifractals will expose Wurm bugs that result from having a coarse 4m grid, having suffered too many ping pong suicide deaths at the bottom of digging pits in Wurm. Will terrain need to be smoothed to avoid stuck issues making realism pointless? 

Edited by yarnevk
  • Like 1

Share this post


Link to post
Share on other sites

I have a library for reading Terragen .ter files if anyone uses that generator. I haven't used it in anger yet, so while it works, its API may still be a bit clumsy. Deliberately contains no Wurm-specific code, so it can be imported or used for whatever:


https://github.com/taufiqkh/ter2hm


Share this post


Link to post
Share on other sites

Just to clarify about the API Warlander is making (as I wasn't clear on it myself earlier), whoever is making a map generator can work on them now all fine, when the API is done you can just feed the data through the API which will save the map files and any map dumps you want - no need to deconstruct the map files for their format or anything.


  • Like 2

Share this post


Link to post
Share on other sites

Work in progress (ignore the UI, it's not even functional at the moment.

 

wurmarchipelago.png

As if getting lost wasn't easy enough.

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
Sign in to follow this