Search Unity

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

Discussion in 'Assets and Asset Store' started by Wright, Mar 10, 2016.

  1. malkere

    malkere

    Joined:
    Dec 6, 2013
    Posts:
    1,212
    I always wondered:
    1. Does each and every node addition to the graph add calculations to every single point made. In other words does adding an object at x500z500 still require a check for every point that gets calculated to see if we are at x500z500 or not? I assume it does.

    2. Are those additional calculations so meaningless against today's computing power that even a complex graph with hundreds of nodes (excluding of course things like erosion) will not incur a perceivable performance difference compared to a simple graph with only a few nodes? I assume they would not.
     
  2. Wright

    Wright

    Joined:
    Feb 26, 2013
    Posts:
    2,277
    No!
    First of all, MM works per-chunk. So whatever is done in chunk 0,0,1000,1000 will not affect the neighbor chunks in any way. Adding an object at 500,500 will change only this chunk, but not the others.
    Secondly, if you are talking about the object - it has nothing to do with points. The objects are stored - well, let's say it's a list (it's a spatial hash actually, but let's assume it's a list) - adding the object does not affect any other object within the list.
    And at last, even when you apply some object stamps with flatten or blob - the stamp is applied only to the area within the radius value from objects, it does not even affect a full chunk.
     
    malkere likes this.
  3. smoluck

    smoluck

    Joined:
    Mar 8, 2016
    Posts:
    25
    Hi, @Wright

    I'm trying to use a MapMagic terrain into an an app for Android smartphone usage. I'm facing issue with this terrain because i can't rotate it in my scene. I'm wondering if that's coming from some sort of limitation with Map Magic on smartphone device.

    Do it can be possible to convert a Map
    Magic terrain to a regular Unity Terrain ? i want to test this with legacy terrain from Unity.
     
  4. Wright

    Wright

    Joined:
    Feb 26, 2013
    Posts:
    2,277
    Actually, MapMagic use the standard Unity terrain internally. And that is the reason why it could not be rotated - since the standard terrain could not be rotated too.
     
  5. Exbleative

    Exbleative

    Joined:
    Jan 26, 2014
    Posts:
    216
    @Wright, would love some quick advice - I've now got a Ryzen CPU and setting MaxApplyTime to 1 works great, zero hitching during chunk generation. However, a friends Intel CPU was slow to generate terrain fast enough at that same setting. I'd like to basically use MaxApply of 1 for CPUs with loads of threads, and MaxApply of 5-10(?) for chips with less threads.

    I tried changing your code to:
    //updating threads
    ThreadWorker.multithreading = multithreading;
    ThreadWorker.maxThreads = maxThreads;
    ThreadWorker.autoMaxThreads = autoMaxThreads;
    //higher maxApplyTime for less threads, so terrain is generated faster
    if (maxThreads > 6)
    {
    ThreadWorker.maxApplyTime = 1;
    Debug.Log("6+ threads detected");
    }
    else
    {
    Debug.Log("<6 threads detected");
    ThreadWorker.maxApplyTime = 5;
    }
    //ThreadWorker.maxApplyTime = maxApplyTime;
    ThreadWorker.Refresh();

    ...but the log files seem to be telling me I'm only using 2 threads, not 15-16 which I believe a Ryzen 1700 has.

    Any thoughts how I'd adjust the maxApplyTime by chip/thread count?
     
  6. cwalkerimbellus

    cwalkerimbellus

    Joined:
    Oct 3, 2017
    Posts:
    1
    Hi @Wright, my employer is considering MapMagic as a potential solution for our runtime terrain generation needs. However, we have a particular need that does not appear to be supported out of the box. We need to generate the same terrain at multiple scales; for example, we have a scene where the player views a mountain range from far above (at low detail, no trees, grass, or detail meshes). The player then selects an area, we fade to a loading screen and regenerate that terrain at high detail, and when the camera fades in the player is at ground-level on a terrain that is suitably detailed for close-up viewing (but retains the same landscape features as the large-scale terrain). Unless I'm mistaken, there is no native way to do this in MapMagic.

    To implement this effect we intend to use two different MapMagic node graphs to accommodate the divergent renderings techniques for radically different viewing scales, but they would still be based on the same configuration of heightmap and texture noise generators. I know that in principle this should be a simple matter of sampling the same noise functions with translated/scaled sample coordinates (and higher-octave perlin noise). While of course translation is supported by the offset property, I do not see an obvious way to sample different scales. It seems to me that scaling voronoi noise would be somewhat harder than perlin noise, so I am not sure how simple it truly is in practice.

    Does this sound like a feature we could plausibly implement using MapMagic, either as it is now or with minimal source modification?
     
  7. Wright

    Wright

    Joined:
    Feb 26, 2013
    Posts:
    2,277
    Exbleative, creating new chunk happens in 3 stages:
    - Prepare: runs once for some generators in a main thread. For example, loading texture to MM map (Matrix) happens in the prepare stage.
    - Generate: performs all of the node calculations it separate threads (one thread per chunk). Takes most of the time, but creates no lag. Generate time depends on the number of chunks and CPU thread count.
    - Apply: applying the generated results to terrain: assigning height with SetHeights (DelayLODs), splats with SetAlphamaps. This operation should be executed in main thread only, so it could produce some lag. The way apply works does not depend on the CPU threads count - it's executed in one thread only.

    To make the apply effect as smooth as possible Apply function is executed in form of coroutine - it's performing apply tasks (like set heights or alphamaps) until the timer reaches the Max Apply Time value, then yield returns to render the frame and perform game logic. Max Apply Time is the number in milliseconds that MM spends per frame at minimum (don't scold me for my logic, I will rename it to "Apply Time"). For example, if set heights takes 15 ms and set alphamaps takes 10 ms, then
    - if max apply time is set to 20 - both heights and splats will be applied, so the total time taken by MM will be 25 ms.
    - if max apply time is 10 - only the height will be applied, and splats will be queued to the next frame. Apply time will be 15 ms.

    Setting apply time to 1 or 0 will split apply in one task per frame only. It will run smooth, but will require more frames, so the overall apply time will increase.

    It's not related with the number of threads. You must be confusing it with "Max Threads Count".

    That's the thing MapMagic 2 can make. This upcoming version is absolutely resolution independent, you can switch the resolution and always get the same result, but more or less detailed. It's not released yet and do not have all of the planned features ready, but this one already works. You can join the beta on GitLab by emailing me your order number (and GitLab account name if any).
     
  8. ramos123

    ramos123

    Joined:
    May 29, 2013
    Posts:
    7
    I have a problem when using C.T.S. along with Mapmaigc, and is that when I give play to the scene all the textures disappear and only the background texture remains, any solution?
    This only happens to me with my first pin of the terrain.
    When modifying the texture do not show in real time with the CTS, I must constantly generate the terrain to see the changes.
    Thank you in advance, I love MapMagic.
     

    Attached Files:

    • 1.PNG
      1.PNG
      File size:
      910.4 KB
      Views:
      990
    • 2.PNG
      2.PNG
      File size:
      724.1 KB
      Views:
      947
  9. Wright

    Wright

    Joined:
    Feb 26, 2013
    Posts:
    2,277
    There is an error in the console - might it be related somehow?
    Just checked CSO seem to be working fine in playmode, displaying all of the assigned textures on pinned terrains.
    What about non-pinned ones? Do they display properly?
     
  10. ramos123

    ramos123

    Joined:
    May 29, 2013
    Posts:
    7
    This is why, the rest of the terrain does the textures, but the land with the main pin continued without loading the textures, I ended up creating another project and reimporting the packages and it worked perfect, I have no idea what it was.

    One more thing is that although the CTS instantaneous generation button is activated in the output of the Custom Shader this does not update it, I must activate and deactivate the checkbox to see the changes in the scene, and this persists every time I create a terrain.
     
  11. Poxican

    Poxican

    Joined:
    Oct 17, 2012
    Posts:
    37
    Hi @Wright,

    I tried updating from 1.8.2 to 1.9, but I get two errors:

    Assets/MapMagic/Generators/MegaSplatOutput.cs(47,15): error CS0101: The namespace `MapMagic' already contains a definition for `MegaSplatOutput'
    Assets/MapMagic/Generators/RTPOutputGenerator.cs(11,15): error CS0101: The namespace `MapMagic' already contains a definition for `RTPOutput'


    [Edit]

    I reverted to 1.8.2 to continue for the time being, and I'm trying to use the Single Generator from the previous page to place objects at given coordinates. I get an error though with certain values:

    And you can see that it creates multiple copies of the object, presumably because it's not updating/cleaning them up due to the error.

    Perhaps I am misunderstanding the functionality of this node. My goal is to place a number of objects throughout my world, some of which will be used to generate villages.


    Cheers,
    Nate
     
    Last edited: Mar 3, 2018
  12. Monarky

    Monarky

    Joined:
    Oct 2, 2010
    Posts:
    35
    I have a question. If your making game where you cant go in the ocean. How do you get rid of all objects and land under the shoreline. Right now I have trees and everything spawning under the shore. I followed your hour long tutorial but I dont think you ever showed that.
     
  13. Wright

    Wright

    Joined:
    Feb 26, 2013
    Posts:
    2,277
    Do you mean "Instant Update" toggle? Are you changing the CTS material directly?

    Try going to Edit > Project Settings > Player and remove everything in Global Define Symbols (leave the string empty).

    I assume you are using the node code from wiki - it's possibly related with the even object position, placed directly between chunks. Try placing it in 1999,1990 instead. Let me know if it help, I'll add change to the wiki page.

    I'm using grass textures as a mask to spawn trees and grass billboards. And since there's no grass texture under water (it's covered with Shore node "Sand" map) trees are not spawned here.
    However you can use the other approach like using height mask instead of sand:
    ObjectsByHeight1.jpg
     
  14. Poxican

    Poxican

    Joined:
    Oct 17, 2012
    Posts:
    37
    Do you mean the 'Scripting Define Symbols' field? I only have Playmaker references in there, which I require. That said, I tried clearing it anyway and it didn't fix the errors.

    Yep, that was it! Cool, thanks :)
     
  15. Wright

    Wright

    Joined:
    Feb 26, 2013
    Posts:
    2,277
    Doesn't clean install help either?
     
  16. Poxican

    Poxican

    Joined:
    Oct 17, 2012
    Posts:
    37
    Ohhhh, yeah that worked. I'll remember that for next time :)


    Now, I am trying out the biomes feature finally, but I get spammed with this error as soon as I add a second biome node to the graph:

    I get one of those for each terrain I have pinned. I searched for information about this but couldn't find any. I also checked the biome wiki page but it appears to be blank?

    [Update]
    If I unpin all chunks and run the game, the terrains are generated flat, and I'm spammed with that same warning. For context, here is the setup I'm testing it with:


    Each of these biomes works fine on its own. And the errors are thrown the moment I add the second biome node.
     
    Last edited: Mar 3, 2018
  17. Wright

    Wright

    Joined:
    Feb 26, 2013
    Posts:
    2,277
    Looks like you've created a broken biome with no generators list somehow. Don't know how it could happen, only if it was not taken from some really old MM version. Anyways, I'd like to see the scene with biome graphs, could you please email me it?
     
  18. Poxican

    Poxican

    Joined:
    Oct 17, 2012
    Posts:
    37
    Sure thing, what shall I package up and send? Just the scene and the biome files?
     
  19. jnbbender

    jnbbender

    Joined:
    May 25, 2017
    Posts:
    487
    Hey - not really sure if Dennis frequents this forum or not but...nice Asset, it's definitely improved the size and frame rate for my mobile game. My only issue is I need to pull in Gaia also. Dennis - it would've been nice to include a few more assets - grass, trees and especially .raw terrains maps. Your tutorial was very in depth but a touch misleading since you did start with an imported "stamp". From what I've seen so far, it has been difficult to get those same results and even the results I get from Gaia and TerrainComposer because of this.

    My 2 cents.
     
  20. Wright

    Wright

    Joined:
    Feb 26, 2013
    Posts:
    2,277
    How do you see a work pipeline of MapMagic and Gaia? It's not that I don't want to implement it - I've got a good experience in cooperation with Adam on working with CTS Output node and guess Gaia is at least not less clear and integration-friendly. But I just don't know the way it could be used with MM. If you have any ideas feel free to share and I'll add Gaia to integration list.
     
  21. jnbbender

    jnbbender

    Joined:
    May 25, 2017
    Posts:
    487
    I'm not necessarily saying that they should be integrated, I'm just suggesting that MM would be easier/friendlier to work with if it came with a few more assets...like Gaia. Right now I'm using Terrain Importer to utilize some of Gaia's jpg's as a starting point for your raw input nodes.
     
  22. malkere

    malkere

    Joined:
    Dec 6, 2013
    Posts:
    1,212
    Gaia's entire concept is based on stamps. MapMagic on the other hand is based on rule-based procedural generation using the node graph. Stamps CAN be used in all forms, but that's really the lowest level of functionality to MapMagic in my opinion. I know a lot of users use them to get specific, but I use MapMagic because it is NOT specific, but noise heavy and curve heavy letting each terrain I create be completely unique. Once you understand how to manipulate a few noise and blend nodes you can create any kind of biome fully procedural. But that's my preference ;p
     
    camta005 likes this.
  23. Dorian-Dowse

    Dorian-Dowse

    Joined:
    Jun 2, 2016
    Posts:
    95
    I'm having a problem. When I set the terrain resolution to 4096 I get a "Texture rectangle is out of range" error. It works fine if I set it to 2048. I tried a few different options but no matter what I do, 4096 throws this error.

    Texture rectangle is out of bounds
    UnityEngine.TerrainData:SetAlphamaps(Int32, Int32, Single[,,])
    MapMagic.<Apply>c__Iterator2:MoveNext() (at Assets/MapMagic/Generators/OutputGenerators.cs:584)
    MapMagic.<Apply>c__Iterator1:MoveNext() (at Assets/MapMagic/Main/GeneratorsAsset.cs:553)
    MapMagic.<ApplyRoutine>c__Iterator0:MoveNext() (at Assets/MapMagic/Main/Chunk.cs:234)
    MapMagic.ThreadWorker:CoroutineFn() (at Assets/MapMagic/Main/ThreadWorker.cs:604)
    MapMagic.ThreadWorker:UpdateApply() (at Assets/MapMagic/Main/ThreadWorker.cs:176)
    MapMagic.ThreadWorker:Refresh() (at Assets/MapMagic/Main/ThreadWorker.cs:143)
    MapMagic.MapMagic:Update() (at Assets/MapMagic/Main/MapMagic.cs:261)
    UnityEditor.EditorApplication:Internal_CallUpdateFunctions()
     
  24. shedworksdigital

    shedworksdigital

    Joined:
    Nov 7, 2016
    Posts:
    40
    I'm getting this error whenever MapMagic starts generating new terrains at runtime:

    Destroying assets is not permitted to avoid data loss.
    If you really want to remove an asset use DestroyImmediate (theObject, true);
    UnityEngine.Object:DestroyImmediate(Object)
    MapMagic.Chunk:OnMove(Coord, Coord) (at Assets/MapMagic/Main/Chunk.cs:131)
    MapMagic.ChunkGrid`1:Deploy(CoordRect[], CoordRect[], Object, Boolean) (at Assets/MapMagic/Main/ChunkGrid.cs:356)
    MapMagic.MapMagic:Update() (at Assets/MapMagic/Main/MapMagic.cs:234)


    It seems you're attempting to destroy terrain.materialTemplate, which points to a material asset in the assets folder. What is this for?
     
  25. blitzvb

    blitzvb

    Joined:
    Mar 20, 2015
    Posts:
    284
    Hey,

    I am wondering if this asset could help me do what I need to do:

    I am doing a Civ 6 like map. So I have hexagons/cell within chunk. Each cell have a heightmap and biome type. Cells and terrain need to be generated at runtime. It probably imply that I need to write custom generator or use biome per cell?

    I have seen your import_raw module but I think I would need to agregate that for all cells within a chunk. A cell define if it’s a mountain or plain and so on. Same things for splatmap.

    The things that I don’t see is how to tell mapmagic that it’s a not a random map but it have to be based on those cell/hexagon.

    Do you think mapmagic could do this kind of behavior ?

    Thanks in advance.
     
    Last edited: Mar 6, 2018
  26. jnbbender

    jnbbender

    Joined:
    May 25, 2017
    Posts:
    487
    I have not been using this asset very long but are there any tutorials or anything about how to generate a decent map WITHOUT a heightmap. (I'm not really sure why everyone uses heightmaps so frequently since they can't be replicated in infinite terrains.) I am using this asset to generate maps for mobile - which it does very well but the maps I've producing have not been very exciting.
     
  27. Wright

    Wright

    Joined:
    Feb 26, 2013
    Posts:
    2,277
    Dorian-Dowse, what is your Unity version? Height resolution of 4K was not supported in Unity 5. Anyways I'd like to recommend you using 4 chunks of lower resolution - on a multithreaded devices they will be generating 4 times faster, but I'll look into it if you get this error in Unity 2017.

    shedworksdigital, let me make it clear: are you using a custom material with a Custom Shader Output (not the standard Texture Output)?

    Both. You've got to use one biome per cell type: i.e. mountains, plains, desert, etc. And make a custom generator that generates a hexagon masks. Think of them like of images with black and white hexes. Each biome has it's own mask, and for each biome only those "hexes" are painted on the mask where it is used.
    That doesn't sound trivial, so maybe it's worth trying starting with square shapes instead, it would be easier to understand how it all works. At least hexes are just squares with each 3rd line offset of 0.5.

    I've used a heightmap in the tutorial only once, it was that long video where I was showing the way all of the generators (including RAW Input) work. But this heightmap sets only the global detail, you can replace it with noise with low detail level and get about the same picture from the player's point of view.
     
    protopop likes this.
  28. Dorian-Dowse

    Dorian-Dowse

    Joined:
    Jun 2, 2016
    Posts:
    95
    Unity version is 2017.3.0f3
    Map Magic 1.9.0

    I know I could go with 4 terrains, but my current workflow is to use MM for heightmap and textures, then export the terrain for adding CTS and Vegetation Studio. I know they are supposed to work in MM, but I couldn't get it to, and don't have time to spend fiddling. For the moment I'm using a single 2k terrain with 2048 resolution, and that works.
     
  29. blitzvb

    blitzvb

    Joined:
    Mar 20, 2015
    Posts:
    284
    got it. Do you provide API to create those mask? Or do you know another asset that could help draw those maps (not only setpixels)

    Furthermore, I am playing with the evaluation package and in order to understand the code, i am trying without success to convert a Matrix for a SetHeights. do there is an Api to do that?
     
    Last edited: Mar 7, 2018
  30. Wright

    Wright

    Joined:
    Feb 26, 2013
    Posts:
    2,277
    Just tried using the 4K resolution for the control texture in Unity 2017.3.0 with the standard (non-MapMagic) terrain. And it always resets to 2K. It seems to be the highest size for the control textures. I thought they had increased it, but nope - Unity 2017.3.0 still does not support 4K control textures for terrains.

    There's a an API to create your custom generator, but you'll have to write the hex algorithms here yourself.

    Do you mean the final terrain heights? Actually, that's what Height Output for. Beside it there's no method that will turn Matrix to terrain, it's not the way MM supposed to work. I just wonder why do you need it?
     
  31. shedworksdigital

    shedworksdigital

    Joined:
    Nov 7, 2016
    Posts:
    40
    Yes, I have a custom material with my own terrain shader. I'm not exactly sure what you mean by not the standard Texture Output. It has the _Control and _Splat properties that the terrain renderer expects.
     
  32. blitzvb

    blitzvb

    Joined:
    Mar 20, 2015
    Posts:
    284
    I am trying to see how it work before committing. Before using something that big I would like to understand the basics.

    Based on your code, I did some matrix manipulation in code and I would like to transform this matrix (coming from the FromTexture) to an array of float for the SetHeights methods.
     
  33. Wright

    Wright

    Joined:
    Feb 26, 2013
    Posts:
    2,277
    I've submitted the new MM version today, it brings the Vegetation Studio support with the VS Output node. Here is the way it works:

    Matrix is just a wrapper for the one dimensional arrays. You can get the base float array by using the matrix.array value. The problem is that SetHeights require two-dimensional array, so you will have to copy it value-by-value (unless you are going to stay within safe C#): for each [x,z] of your array you will have to get [z*matrix.size.x + x] of matrix.array.

    shedworksdigital, the Custom Shader Output was designed to be used with the custom terrain materials. It works faster because of bypassing setting splat data and it should handle that sort of issues. Switching it to "Custom" mode will make it work with any shader at all.
     
  34. Poxican

    Poxican

    Joined:
    Oct 17, 2012
    Posts:
    37
    Hi Denis,

    I created new biomes and I'm not seeing the same errors as I posted about the other day, so that's good!

    I have a new question though. My map is finite, and I'd like to be able to scatter a specific number of biomes across it. I know I could do this with a Raw Input node scaled to span the entire map, and then assign biomes according to that. But Is there a way to do it procedurally?

    I tried it using a Raw Input into the Stamp node, using the Scatter node in to the Stamp Positions input to randomise the position, but obviously this only works within a single chunk, and the stamps can't span multiple chunks. Is there a way to do what I'm trying to do? Similarly, would it be possible to scatter a finite number of objects across the entire map in the same way?
     
  35. Wright

    Wright

    Joined:
    Feb 26, 2013
    Posts:
    2,277
    You can use voronoi, noise or simple form generator - it depends on what exactly you are going to make. All these generators can work on multiple chunks seamlessly. If you are using stamps then I'd like to recommend you using a several Simple Form generators blended together with additive mode (Blend node).

    You can modify the Single generator to make it work with array of objects instead of the single one. Feel free to share the modified generator on that page if you'd like to.
     
  36. blitzvb

    blitzvb

    Joined:
    Mar 20, 2015
    Posts:
    284
    Awesome! actually the Pour function is what I was looking for. much easier.

    In a customGenerator, I am trying to put some "heightmap" (Coming from a texture) next to each other. It work well but I feel that the globalMatrix is not necessary, in that following code :
    Code (csharp):
    1.  
    2. var mtxGlobal = new Matrix(new CoordRect(0,0,512,512));
    3.  
    4. var mtx = new Matrix(heightmap);
    5. mtx = mtx.Resize(new CoordRect(0,0,50,50));
    6.  
    7. var mtxb = new Matrix(heightmapb);
    8. mtxb = mtxb.Resize(new CoordRect(50,0,50,50));
    9.  
    10. mtxGlobal.Fill(mtx);
    11. mtxGlobal.Fill(mtxb);
    12.  
    - Do you have a better way to combine two matrix at a different position? Also it seems that I am loosing resolution on those area.

    - Furthermore I am wondering on how to blend edges of those two matrix if necessary, not a welding only for the edges of the chunk.

    thanks in advance.

    Awesome asset!
     
    Last edited: Mar 8, 2018
  37. Gandamir

    Gandamir

    Joined:
    Nov 22, 2017
    Posts:
    36
    Wright,

    I would love to see a bunch of short videos that explain how the different nodes are intended to be used. This video on how you created VS output showcases what the other nodes do very well, so use it as a guide if you go down that path. :)
     
    sfoust and blitzvb like this.
  38. blitzvb

    blitzvb

    Joined:
    Mar 20, 2015
    Posts:
    284
    Totally agree. The learning curve is quite high. Some videos will help a lot. But overall, this asset is a pure beauty.
     
    protopop and Gandamir like this.
  39. Wright

    Wright

    Joined:
    Feb 26, 2013
    Posts:
    2,277
    Yep, I was thinking about a series of per-node tutorials instead of the long one for MM2.

    What is the other way two matrices could be combined? Imagine you are working with textures: first you create a texture that will hold the other two, and then copy them here. The code you're using is fine.

    Blend them together? But they are not intersecting. Probably you may want to make them bigger and apply them to global matrix using some masking at the edges (but you will have to use your own method instead of Fill).
     
    sfoust and blitzvb like this.
  40. Wright

    Wright

    Joined:
    Feb 26, 2013
    Posts:
    2,277
    PS and MM 1.9.1 is out, it brings the Vegetation Output node. I'd like to recommend you updating VS too since Lennart has changed the code on his side.
     
  41. blitzvb

    blitzvb

    Joined:
    Mar 20, 2015
    Posts:
    284
    Hey,

    Thanks for your replies. I appreciate it.

    What’s your plan for the 2.0?

    Here my 2 cents:

    - What would be awesome is generation done on the GPU if possible.(like world creator)
    - Also more API that work on the Matrix level In Order to make the custom generator coding easier.
    - a generator that you can give world coordinate area in order to constrict all other following nodes to that area. Maybe it already exist? It's may be Mask but I am not sure, how it works.

    Thanks in advance.
     
    Last edited: Mar 9, 2018
  42. Wright

    Wright

    Joined:
    Feb 26, 2013
    Posts:
    2,277
    Here is what is planned for v2:
    - Interface enhancements;
    - Height, splats, objects inputs: MapMagic as an editor tool - you can sculpt the terrain manually and then let MM texture it or place objects. Or place objects and automatically create grass around them. Just to mention it's not the way Vegetation Studio works - grass and objects will be processed by MM per chunk and "baked" the usual way MM does;
    - Margins to create borderless terrains;
    - All nodes will be resolution-independent: you can switch the resolution and get the same result, but more (or less) detailed.
    - Low detail terrains at horizon - terrain placeholders that will be generated way faster to be displayed at far distance;
    - Native C++ generators in editor (erosion, noise, forest - Mac and Win editors only);
    - If everything goes well - a couple of test spline generators

    I'd like to mention that not everything that run on GPU is automatically fast. The most complex generators like erosion or forest could not be calculated in hundreds of threads, while the simple nodes like Curve are fast enough to be compared with compute shaders overhead. The reason I prefer multithreading to GPU calculations is that it fits dynamically generated infinite terrain better. GPU generating usually looks great in the editor, but in playmode, when GPU load is usually 100% it can squeeze graphics calculations and produce a some lag. While in most cases the processor cores are not so loaded (maybe except the main unity thread), which allows to use them almost unnoticeable.

    MapMagic calculates all of the generators asynchronously in a several separate threads, and just applies final the result in a main thread. Calculating terrain is mostly fast (dozens milliseconds per generator per thread) except some generators like erosion, which can take up to several seconds. All the generating runs in a background and creates no lag in game. The only lag you may notice is on applying generated results to terrain in main thread, but it will happen when using compute shaders anyways.
     
    malkere likes this.
  43. blitzvb

    blitzvb

    Joined:
    Mar 20, 2015
    Posts:
    284
    What’s that mean?

    Yeah I agree with that. Hopefully, terrafirma will fix that problem.
     
  44. Wright

    Wright

    Joined:
    Feb 26, 2013
    Posts:
    2,277
    In current MM version some of the generators (like blur or erosion) require masking on the each of terrain tiles edge - otherwise they will not be welded nicely with the neighbor terrains. That's what "Safe Borders" feature for. New MM will minimize the masking effect.

    I'm currently adjusting the node view for the new MM, and I'd like to hear some feedback on what you would like to see the node and it's inputs/outputs view:
    NodesView.png
    These variants differ in circles positions (and text alignment).
     
    boysenberry likes this.
  45. LennartJohansen

    LennartJohansen

    Joined:
    Dec 1, 2014
    Posts:
    2,394
    I like nr 6.

    Lennart
     
    Lurking-Ninja and malkere like this.
  46. Wright

    Wright

    Joined:
    Feb 26, 2013
    Posts:
    2,277
    Unreal-style. The only node editor I've seen that has the inlets/outlets inside the node window.
     
  47. LennartJohansen

    LennartJohansen

    Joined:
    Dec 1, 2014
    Posts:
    2,394
    Yes, but they are easy to spot. The connectors in 1,2 and 5 looks nice also.
     
  48. Gandamir

    Gandamir

    Joined:
    Nov 22, 2017
    Posts:
    36
    I prefer the left hand from 1. It is a clean look, and keeps the text aligned. For the right hand side, I prefer 2 over 1. The fact there is an output shouldn't steal space from the entire side.

    So can I vote for option 1.5? ;)
     
  49. blacksun666

    blacksun666

    Joined:
    Dec 17, 2015
    Posts:
    214
    I've always hated those 'spot the difference' puzzles ;)
    but prefer 5
     
  50. malkere

    malkere

    Joined:
    Dec 6, 2013
    Posts:
    1,212
    I like 6 as well. Feels more organized.