Map Magic World Generator - a node based procedural and infinite game map tool

MapMagic World Generator is a node-based open scene editor, designed to create procedural and infinite land.

It uses node a interface to determine a creation logic: each generator (like noise, voronoi, blend, curve, erosion, scatter, forest, etc) is represented by the node on the graph. Once nodes’ inputs and outputs are connected the magic happens: a game map will be created without any human involvement. No need in a painstaking work for sculpting and drawing the vast terrains, placing a thousands of objects, painting a fields of grass: just give your orders to the plugin if form of the node graph and it will do a map automagically!

It’s not just a pure terrain editor: about the half of all the nodes devoted to object placement and adjustment.

What it might be used for:

  • Creating of extensive open world territories. Let MapMagic do the main job, and then just detail the key places;
  • Creating horizon terrains, where player cannot walk but must see;
  • And since MapMagic can create new terrains when player walks through the land and weld them to the existing ones, it can create literally infinite worlds.
  • Terrain prototyping, as all the terrains created with the plugin could be modified manually the way Unity standard terrains could;

Some other useful info:

  • It works with standard Unity terrains, uses standard splatmaps (alphamaps), and standard trees and grass/details feature. So if you are wondering if some shader or asset will be compatible with MapMagic then the answer is “yes” if it works with default Unity terrain.
  • Except the infinite terrain feature, terrains created with MapMagic do not require the plugin anymore. You can easily remove the plugin (to reduce the build size, compile time of for any other reason) and have your terrains unchanged.
  • It is seed-based. It gives the ability to create random unexplored worlds each time the player starts the game, and all of these world will be built using the same node-driven algorithm.
  • Map Magic comes with all the assets seen in demo. They could be used for level prototyping as well as to be included in your final game build.

Since v1.5 it supports multiple biomes - different graphs could be mixed together in one scene (video).

Get Map Magic at the Asset Store
Download Free Evaluation Version

Documentation
Issues/Ideas
Web site
Facebook page
Video Tutorials
Community graphs

I’d like to announce the beginning of the public MapMagic 2 Public Beta test. It is the analogue of MM1 evaluation version, so anyone (including the ones who have not got MM1) can download it and fiddle with it
Check this instructions page for Beta download link and more details. Please pay attention to the bug reporting description - at least it’s the purpose of the beta test.
All who bought MM1 starting on December 1 or later will get a free upgrade to MM2. All who bought it before (regardless of time) will get a 50% discount on MM2.
The price of MM2 could be slightly higher than MM1. However the final MM2 release date still depends on the amount of bugs found and their severity, so I’d like to recommend you buying MM2 on release rather then buying MM1 now and keeping it on the shelve.

13 Likes

Cool! Can you tell us more about the erosion? Is it channel based, thermal, etc. or just simple erosion like the erosion brush.

Looks very nice!

2 Likes

Congrats on the release! I enjoyed the beta testing so I picked up my copy. :slight_smile:

Teila, thanks! Erosion algorithm uses both hydraulic and thermal actions: internally it creates a map of torrents - water flow directions - using heightmap slope orientations and elevation changes. Torrents perform a hydraulic action on the surface (depending on the richness and speed of the torrent), washing away the ground. The amount of washed away ground forms a sediment map, used to transport ground according to torrent directions. Thermal action is applied afterwards by passing some amount of ground downhill, the randomness of this amount could be controlled by ruffle parameter. It is all repeated the desired number of iterations. I will not judge whether it is simple or not :slight_smile:

Edit: I’ve just remembered that you’ve already got Erosion Brush. Yes, it is the same algorithm, a bit enhanced, but there’s no reason to expect a revelation when switching from EB to MM. Erosion should be calculated in a few seconds to work with dynamic terrains, while WM has some time for it. I’m thinking about wind erosion to create dunes and mesas, and maybe hydraulic erosion will be upgraded by the way. If you have any ideas on how to improve EB erosion I will gladly hear them and maybe try to implement.

NightAvail, thanks, glad you’ve enjoyed the beta!

1 Like

That looks nice, a bit like Filter Forge. But could you use just for texture and heightmap generation too and in code for procedural stuff or is it only for terrains?

just saw the tutorial video on youtube. nice asset.

1
can it modify exist standard terrain? forexample, add noise… replace a tree…
2
can user change where they want to higher/lower ?
3
love the trees and grass, good to hear they are included in this plugin.

andyz, It depends on the procedural stuff :slight_smile: There is a callback on applying heightmap, splatmap, objects, etc. so you can intercept any data before apply and process it with your scripts. For example, if you are using a mesh instead of standard terrain, you can apply height information in a form of float[,] to your mesh with a custom function, that will be called before setting terrain heights. You can even convert it to texture to use it on some object (but in this case there could be a more straightforward solution).

witchscroll, MM does not work with already made terrains (however, I’ve got a “MapMagic as an editor tool” in my roadmap). But you can use Raw Input as a base heightmap for your land. This heightmap could modified, detailed and changed in any way you want. It does not have to be detailed - you can mark high and low areas, and then add details with Map Magic algorithms.
Btw there is no exact binding “one raw - one terrain”. You can use raw map for several terrains, and each will load it’s own part from the map. You can even use one map to give an initial form to the whole dynamic continent.

Well done.
This is a very impressive looking package.

Not a requested feature, just curious - Are any of the parameters you explained in response to Teila’s post - animatable? Example showing some erosion occurring during real-time game-play triggered by an event happening in game.

4 Likes

yes, looks amazingly great, :slight_smile:
I have a question cause i want to try landscapes with VR when i have my Vive.
As far as i know, the terrain shaders are very performance intense,
so i have in mind to use lowperformance and maybe VR optimized shaders on terrainforms.

So my question is, is it possible to export the finished terrain as a mesh?

1 Like

hello,

is possible de make a world like Florida and how to place village__s/cities__ or other statics thing__s__ in the world ?

+++

theANMATOR2b, thanks, it’s nice to hear that. I’ve never thought about changing any of the generator’s parameters in a playmode. But I like the idea and think that it could be useful. There is no such a feature in this version, and I cannot promise that it will be implemented, but I will think about at leisure.

Hormic, thanks! MM generates a standard Unity terrain (or several terrains). And since it is a standard terrain it could be exported to mesh with the scripts like this one.

tequyla, there are two types of terrains: “pinned” terrains are generated and displayed in editor. Once terrains were generated, you can modify them the way you want - add villages, cities, things. The second type are dynamic terrains - they are not editable and generated in a playmode. So you can create some pinned terrains for villages - they could even be not connected together - and let MM fill the spaces between them automatically in playmode.
MM works with no problems on a distances about 400 km from the origin. It could be compared with the Florida size. However on such a great distances you can encounter some graphical engine artifacts with shadows, z-fighting and maybe something more critical.

2 Likes

hello Denis,

Thanks.

In the pocket !!!

+++

Hey Denis, amazing plugin!

If i want a non-infinite terrain that is not squared (let’s say 5000 x 10000), what would be the best way to achieve that?

Many thanks

tequyla, enjoy )

iddqd, thanks! If you want a non-square terrain you can just pin terrains in any shape you like:
2549955--177273--PinTerrains.gif

But using a terrain grid of 5*10 terrains (if a terrain size is 1 km) can have a tremendous impact on game size and performance. I’d like to recommend using the approach described above: some of your key points are made with a pinned terrains, while the the rest is generated in realtime.

Perfect! Just what i was looking for.

is possible to create area delimited by spinned tile ?

for example: i have a map with desert and forest. areas and in between forest zone (mountain zone) and desert zone (flat terrain) there is river.

is possible to close world with border like sand aera like an island ?

+++

just buy it.

1
after import the package. 2 red errors show,
one is ‘asset/mapmagic/demo/scripts/guistarter.cs’ , the other is ‘guicontroller.cs’
after delete these 2 scripts, the plugin work. but the gui demo scene brokend.
they need to be fixed. hope the fixed version coming soon.
2
can not get preview to work. all 3 options allways grey.
3
when i place tree in terrain, it looks like trees didnot stand on terrain, but stand on a same level below terrain.
allready have a look at your tutorial videos, need more, such as something about tree, grass…
4
all trees in demo floder have unique shader named natrure/mapmagictrees , may i change it to unity’s default shader?
and what’s the “wind” in shader work for?

witchscroll, thanks for your report! However, I need to clarify some details to make a fix:

  1. What were these errors about? At least what lines of the code they highlight? When did they occur - right after package importing, or when opening demo scene?
    Was it something about “the GUI scene could not be loaded because it was not added to the build settings”? And if it does, have you tried adding it?

  2. Were you clicking on an empty field or on the generator itself? Or was it a click on a blue output icon?
    2550426--177315--Preview2.gif

  3. Were you using your custom tree or it was demo scene tree? Were you using Floor Generator? I know some things are not obvious in Map Magic for a beginner, so the tutorials is what I’m working on now. I plan to go on making a series of the tutorial videos like those devoted to heightmap and textures so that all of the generator types will be mentioned in at least one of the videos.

    2550426--177317--Floor.gif

  4. You can change any of the tree parameters, including materials, textures, shaders - it will not break Map Magic. Personally I don’t like the default Unity tree shader “Nature/Soft Occlusion” because it does not receive shadows, and the standard shader has no vertex animation (btw this is what wind parameter for).

tequyla, you can use Raw Input not only as a heightmap, but as a texture that defines your zones. For example low (black) values will be the sand, and high (white) will be the forest. To make an island or an oasis you’ve got to use raw file which has a white circle on a black background. All of your terrain will become endless desert (because black values are default in Raw Input) except an area of the forest.

1

right after package importing.

no.
2
yeah, i found it. thanks.
3
see what i have done.


i added the floor but the tree still …
4
thanks.
5 [new question]
if i use ‘input raw’, after brose and chose my own raw file[export by unity from an existing standard terrian] and link to your panel, unity became unresponsive. i have to end it by windows task manager.

And - what were these errors? Could you please take a console screenshot?

You have to connect Curve output to the Floor’s Substrate input - like in an image I’ve send above.

What is the resolution of your raw file? If it is not classified, could you please send it to mail@denispahunov.ru? Thanks!