Too many tree colliders will cause problems when you have a lot of terrains in your scene. Specifically, objects (like my player) fall through the terrain. I think the physics engine gets overloaded and the terrain collider stops working. In the past I’ve used custom code to dynamically enable/disable only the tree colliders near the player/camera and now I’m using Vegetation Studio to do the same. I noticed that MM was re-enabling them. I think MM definitely should have a way to disable terrain tree colliders.
Crossway, could you try moving your character to 4000 or more units and returning it back manually, without using world shift?
wwg, have you reported this issue to Unity? Theoretically there’s no need in turning colliders on and off because this optimization is supposed to work internally using object’s AABB. But if you get collider issues with this then something definitely isn’t working properly
Yes when I returning it back manually everything is good again but weird world shift can’t get same result!
No, but I’ve seen this issue for the last three years. Note: I’m on version 5.6.4f.
Yes, that’s odd. I’ll look into it, but can’t promise it soon - if I’ll make a patch it will be included with MM2.
Maybe they have fixed it. I’ve never fall through the terrain in MM’s demo/test scenes both in 5.6 and 2017.3, but probably I don’t have enough trees for that.
Hi All, Is there any generic biome data available to help create specific styles. I’ve seen badlands, forest, jungle etc in tutorial vids are they available anywhere?
I’m looking for rainforest, mountain, and grassland if anyone has links. I know I can create them myself and I will but I was just looking for some guidance/inspiration as I get to grips with the tool. :-).
You can get the graphs for the badlands and snow plains here:
https://gitlab.com/denispahunov/mapmagic/wikis/community_graphs
Not fixed in 5.6x and yes, you need a lot of a trees in your scene, and tree colliders enabled. Performance gets bad and the terrain collider stops working. With the colliders disabled you can have a massive amount of trees without problems and good performance even on my low-end machine. You just need code to enable the colliders around the player.
@Wright (or anyone else): I’m building levels with pinned terrains (e.g. 5x5) and I want to use the seed value to change the map when the level loads. I want to manually place my player and other objects like vehicles and a home base in a non changing section, flat section of the map. It’s OK if that location is the same each time, but the height of the terrain can’t change in the area around the player.
I’m having some success with blending/subtracting a mountain RAW file to create a flat-bottomed valley and then placing my character in the bottom (but then my character is always in the bottom of a valley/hole).
Is there a better way to blend-in a fixed location to a changing map?
Maybe some way to create a kind of fixed starting location, where the map would build around that location in a natural looking way.
Thanks!
The simplest way to do this is to make your custom generator that will just check if pixel coordinate is within some range from the starting point and set matrix (map) value to the specified height (note that height range is 0-1). Once it’s done you can add lerp blending to blend-in starting location to terrain.
However if you’ve got significant terrain changes in your map I don’t recommend you doing so. You starting location could be inside of the high mountain - and so the player will start inside of the well, or at the column if it’s in the lowlands.
I’d like to recommend you creating a prefab from all the starting things (including the player character) and placing it using MM’s object output, the way you instantiate trees or other objects. And you can make that land flat in the starting location using the Flatten node.
Hi,
I’m learning map magic right now, it’s pretty fun. ;D
I found an issue i don’t understand, maybe you could help.
I have a 2x2 Terrain setup and i try to get a heightmap with the “preview in window” feature, but the window only shows me the map of the first terrain not for all 4. So when i save the file, it’s also only the first terrain.
Any Ideas?
Thanks a lot, great tool!!
EDIT:
My Input “HeightMap” is a Raw Input with Scale 2.
I am trying it out right now. As far as I understand it so far, the MapMagic integration is, that you can attach the TerrainWrapper component to the MapMagic gameobject, and if “copy components” is chacked, it will be copied to each of the terrain tiles ;).
With the TerrainWraper component on each terrain, you now can capture the terrain data at any point into an .asset file.
This asset then contains the heightmap, splatmap, detailmap, trees, persistent VS storage and objects. When you now crate a second layer in the TerrainWrapper for some manual height or splat painting, and capture it after, it will createn a stencil representing the difference between the first layer.
I am not sure about the finished workflow yet for my usecase, but currently I am working with locked tiles in my prototype.

Hi, I’ve met an issue using MapMagic with Vegetation Studio:

Newly generated terrain tiles in run-time reused an existed transform. As the Terrain 2,1 used Terrain 0,0; and I found it occurs very often.
Then with vegetation studio, I use mapmagic’s vegetation studio output to assign vegetation info into VS’ persistent database. Seems the database is not cleared properly and terrain 0,0’s vegetation is now rendered on terrain 2,1. causing objects floating in air, not attached to ground.
Any work around to prevent this to happen? It’s very essential to my game.
MapMagic shows only one chunk for the preview, and it is the closest chunk to the camera at the moment you select Preview - In Window. Just move to another chunk (or unpin all other chunks) and re-open preview.
Hmm… This could be related with the chunks pool. Try setting allowMove:false on chunks deploy (MapMagic.cs, line 234):
if (chunksChange) chunks.Deploy(deployRects, removeRects, parent:this, allowMove:false);
If it will do the trick in further versions I will expose this parameter in settings.
I was searching and could not find the answer as well my PM got unanswered.
So here it goes,
how can I specify game objects (like the grass or rocks ) to spawn only on specific textures?
For example I would like to have different rocks at the beach and other rocks up in the mountain.
Second question, how do I smooth out the terrain, especially hills are to spike and I get vertex spikes on the beach that
look like pyramids with the sandy texture ![]()
Last question, when is MapMagic 2.0 coming out?
Hi @Wright
We are trying to use MapMaghic under Universal Windows Platform project (instead of PC,Mac,Linux Stanalone) and Mapmagic can’t be used. Did you will compile it to get compatibility withthat platform ?
i can't build project, just i'm build set
- platform : universal windows platform
- player setting : XR Settings -> checked Virtual Reality Supported.
just testing DemoScene, unity editor is nomally work, but can't build UWP.
<here is 35 errors in the error log>
Assets\MapMagic\Main\ChunkGrid.cs(47,18): error CS1061: 'Type' does not contain a definition for 'BaseType' and no extension method 'BaseType' accepting a first argument of type 'Type' could be found (are you missing a using directive or an assembly reference?)
Assets\MapMagic\Main\CustomSerialization.cs(66,21): error CS1061: 'Type' does not contain a definition for 'IsPrimitive' and no extension method 'IsPrimitive' accepting a first argument of type 'Type' could be found (are you missing a using directive or an assembly reference?)
Assets\MapMagic\Main\CustomSerialization.cs(78,21): error CS1061: 'Type' does not contain a definition for 'IsSubclassOf' and no extension method 'IsSubclassOf' accepting a first argument of type 'Type' could be found (are you missing a using directive or an assembly reference?)
Assets\MapMagic\Main\Generator.cs(281,56): error CS0117: 'Attribute' does not contain a definition for 'GetCustomAttribute'
Assets\MapMagic\Main\GeneratorsAsset.cs(480,16): error CS1061: 'Type' does not contain a definition for 'IsSubclassOf' and no extension method 'IsSubclassOf' accepting a first argument of type 'Type' could be found (are you missing a using directive or an assembly reference?)
Assets\MapMagic\Main\Serializer.cs(209,15): error CS1061: 'FieldInfo' does not contain a definition for 'IsNotSerialized' and no extension method 'IsNotSerialized' accepting a first argument of type 'FieldInfo' could be found (are you missing a using directive or an assembly reference?)
Assets\MapMagic\Main\Serializer.cs(264,15): error CS1061: 'FieldInfo' does not contain a definition for 'IsNotSerialized' and no extension method 'IsNotSerialized' accepting a first argument of type 'FieldInfo' could be found (are you missing a using directive or an assembly reference?)
Assets\MapMagic\Main\CustomSerialization.cs(124,18): error CS1061: 'Type' does not contain a definition for 'IsPrimitive' and no extension method 'IsPrimitive' accepting a first argument of type 'Type' could be found (are you missing a using directive or an assembly reference?)
Assets\MapMagic\Main\CustomSerialization.cs(160,45): error CS1061: 'Type' does not contain a definition for 'IsPrimitive' and no extension method 'IsPrimitive' accepting a first argument of type 'Type' could be found (are you missing a using directive or an assembly reference?)
Assets\MapMagic\Main\CustomSerialization.cs(190,23): error CS1061: 'Type' does not contain a definition for 'IsSubclassOf' and no extension method 'IsSubclassOf' accepting a first argument of type 'Type' could be found (are you missing a using directive or an assembly reference?)
Assets\MapMagic\Main\CustomSerialization.cs(202,23): error CS1061: 'Type' does not contain a definition for 'IsClass' and no extension method 'IsClass' accepting a first argument of type 'Type' could be found (are you missing a using directive or an assembly reference?)
Assets\MapMagic\Main\CustomSerialization.cs(202,44): error CS1061: 'Type' does not contain a definition for 'IsValueType' and no extension method 'IsValueType' accepting a first argument of type 'Type' could be found (are you missing a using directive or an assembly reference?)
Assets\MapMagic\Main\CustomSerialization.cs(254,23): error CS1061: 'Type' does not contain a definition for 'IsEnum' and no extension method 'IsEnum' accepting a first argument of type 'Type' could be found (are you missing a using directive or an assembly reference?)
Assets\MapMagic\Main\CustomSerialization.cs(273,11): error CS1061: 'StringWriter' does not contain a definition for 'Close' and no extension method 'Close' accepting a first argument of type 'StringWriter' could be found (are you missing a using directive or an assembly reference?)
Assets\MapMagic\Main\Serializer.cs(56,19): error CS1061: 'Type' does not contain a definition for 'IsSubclassOf' and no extension method 'IsSubclassOf' accepting a first argument of type 'Type' could be found (are you missing a using directive or an assembly reference?)
Assets\MapMagic\Main\Serializer.cs(108,18): error CS1061: 'Type' does not contain a definition for 'IsSubclassOf' and no extension method 'IsSubclassOf' accepting a first argument of type 'Type' could be found (are you missing a using directive or an assembly reference?)
Assets\MapMagic\Main\CustomSerialization.cs(388,24): error CS1061: 'Type' does not contain a definition for 'IsPrimitive' and no extension method 'IsPrimitive' accepting a first argument of type 'Type' could be found (are you missing a using directive or an assembly reference?)
Assets\MapMagic\Main\CustomSerialization.cs(392,24): error CS1061: 'Type' does not contain a definition for 'IsSubclassOf' and no extension method 'IsSubclassOf' accepting a first argument of type 'Type' could be found (are you missing a using directive or an assembly reference?)
Assets\MapMagic\Main\CustomSerialization.cs(451,24): error CS1061: 'Type' does not contain a definition for 'IsEnum' and no extension method 'IsEnum' accepting a first argument of type 'Type' could be found (are you missing a using directive or an assembly reference?)
Assets\MapMagic\Main\Matrix.cs(434,12): error CS1061: 'FileStream' does not contain a definition for 'Close' and no extension method 'Close' accepting a first argument of type 'FileStream' could be found (are you missing a using directive or an assembly reference?)
Assets\MapMagic\Main\Serializer.cs(139,25): error CS1061: 'Type' does not contain a definition for 'IsSubclassOf' and no extension method 'IsSubclassOf' accepting a first argument of type 'Type' could be found (are you missing a using directive or an assembly reference?)
Assets\MapMagic\Main\CustomSerialization.cs(530,11): error CS1061: 'StringWriter' does not contain a definition for 'Close' and no extension method 'Close' accepting a first argument of type 'StringWriter' could be found (are you missing a using directive or an assembly reference?)
Assets\MapMagic\Main\ThreadWorker.cs(299,38): error CS1729: 'Thread' does not contain a constructor that takes 1 arguments
Assets\MapMagic\Main\ThreadWorker.cs(301,32): error CS1061: 'Thread' does not contain a definition for 'IsBackground' and no extension method 'IsBackground' accepting a first argument of type 'Thread' could be found (are you missing a using directive or an assembly reference?)
Assets\MapMagic\Main\ThreadWorker.cs(304,32): error CS1061: 'Thread' does not contain a definition for 'Start' and no extension method 'Start' accepting a first argument of type 'Thread' could be found (are you missing a using directive or an assembly reference?)
Assets\MapMagic\Main\Extensions.cs(554,31): error CS1503: Argument 1: cannot convert from 'string' to 'System.Reflection.AssemblyName'
Assets\MapMagic\Main\Extensions.cs(561,117): error CS0117: 'BindingFlags' does not contain a definition for 'GetProperty'
Assets\MapMagic\Main\Extensions.cs(562,117): error CS0117: 'BindingFlags' does not contain a definition for 'SetProperty'
Assets\MapMagic\Main\Extensions.cs(585,15): error CS1061: 'FieldInfo' does not contain a definition for 'IsNotSerialized' and no extension method 'IsNotSerialized' accepting a first argument of type 'FieldInfo' could be found (are you missing a using directive or an assembly reference?)
Assets\MapMagic\Main\Extensions.cs(620,15): error CS1061: 'FieldInfo' does not contain a definition for 'IsNotSerialized' and no extension method 'IsNotSerialized' accepting a first argument of type 'FieldInfo' could be found (are you missing a using directive or an assembly reference?)
Assets\MapMagic\Main\Extensions.cs(668,33): error CS0117: 'Assembly' does not contain a definition for 'GetAssembly'
Assets\MapMagic\Main\Extensions.cs(673,14): error CS1061: 'Type' does not contain a definition for 'IsSubclassOf' and no extension method 'IsSubclassOf' accepting a first argument of type 'Type' could be found (are you missing a using directive or an assembly reference?)
Assets\MapMagic\Main\Extensions.cs(673,44): error CS1061: 'Type' does not contain a definition for 'IsInterface' and no extension method 'IsInterface' accepting a first argument of type 'Type' could be found (are you missing a using directive or an assembly reference?)
Assets\MapMagic\Main\Extensions.cs(673,65): error CS1061: 'Type' does not contain a definition for 'IsAbstract' and no extension method 'IsAbstract' accepting a first argument of type 'Type' could be found (are you missing a using directive or an assembly reference?)
Assets\MapMagic\Main\ThreadWorker.cs(536,28): error CS0117: 'Thread' does not contain a definition for 'Sleep'
Good morning all,
I’m just getting to grips with map magic and I’m hoping to have different texture sets on each of my 3/4 biomes using RTP is this possible or are we still limited to the 4/8 you assign in RTP?
This will be in a setup where each biome has one pinned terrain and then the rest are procedural.
Thanks in advance for any tips for this setup.
Andy
You can mask the stones scatter generator with the textures like this:

Or use a Clean Up node if you are using more complex scatter algorithms:

Try increasing the Scale value in Height Output node.
It’s already in beta (should I say alpha) on GitLab, but it’s far from being finished. Can’t say the exact release time yet. I’m working on it daily and I’m doing my best, but still there are much things to do.
I could just build a UWP project with MM scene without any issues using MapMagic 1.9.1 and Unity 2018.1 running on Windows 10 using these settings:

Unfortunately it’s not possible to have a different RTP setup for each of the terrain tiles, so the total number of textures is limited with a single RTP setup textures number.
I did get this working with OnApplyCompleted, but it was a little harder than I thought…it looks (maybe) like OnApplyCompleted is called repeatedly for the same terrain - each time a chunk finished generating, I would get an event for every existing chunk that it had finished Apply. Could this be correct? I had to keep track of which chunks had already had their ocean allocated - a bit of extra work. Mentioning in case it’s a bug…
Hey there. I was wondering whether you could describe a strategy for creating low-poly terrain with Map Magic. Liberal use of the cellular type voronoi node seems like it’s on the right track, but I might be missing something obvious.
Thanks for your time!
