Map Generator 3.0 - Please Critique!

Or multiple moons :slight_smile: On to a procedural solar system!

Itā€™s awesome to see the world generator with improved meshes and textures. J.J. Franzen has done a great job. Iā€™m sure seeing thisis a very rewarding experience after working on the underlying system for so long. I know it was in my case when I first used imported assets. How do you think you would have reacted if you could show yourself from a year ago this screenshot?

Definitely! Who needs to fight over Alpha Centauri when the planets of the solar system are so much closer? :slight_smile:

J.J. has definitely done some great work! Making some things happen that I had written off for many months down the road.

Heh, I donā€™t even know. A year ago I only had the vaguest idea that I wanted tectonics and climate systems in the generator without having a clue as to how they would even happen, especially before I figured out Voronoi. Projection, well that wasnā€™t even in the realm of possibility back then.

Now you got me wishing I had a hundred time traveling clones of myself to come back here and help knock the rest of this game out. lol

Itā€™s 2015. We should have those by now! Though in my case Iā€™m actually getting some of the same benefits by putting my toolkit on the marketplace (I know you arenā€™t going to). That way I have lots of people developing my blueprints in all different directions, and if I wonder how they did something theyā€™re usually willing to share it with me :slight_smile: Still, Iā€™ve probably spent 10x as much time giving technical support so far as Iā€™ve saved time this wayā€¦ Itā€™s all good, though. Letā€™s me identify the less intuitive parts.

Yeah, even if I did want to sell the generator on the marketplace, the amount of tech support I would have to provide for this beast would more than I could bear. :stuck_out_tongue:

Using Ramaā€™s new Pixel Data from Texture nodes:

Source File:

I have only added in land/water data using the image. I could do the same thing for with topology, precipitation, etc. Nice to see that my weather system put deserts and jungles on the earth map where they belong though! :slight_smile:

That your weather system managed to recreate something fairly close to the real thing is actually extremely impressive. Shows you really did your research when you designed it. Are you planning to include this as a feature players may use? Importing their own maps, I mean.

Yeah, and Australia would probably also be arid if I had used a map that included Antarctica. It would have put Australia at the correct latitude for desert creation.

Also, with the mountains not lining up correctly with the landmasses, the rain shadow is out of whack, so applying another image for topology should go even further.

The only major missing piece to the weather system is situations like the Indian Ocean and the Middle East. My system will drench land west of the indian ocean, whereas that doesnā€™t happen in reality. May or may not address those edge cases in the future, as I am pretty happy with the current state. :slight_smile:

For sure! :slight_smile: They can upload better and/or altered earth maps, Azeroth, their face, or whatever map they want to play on. Should add quite a bit of replayability, and definitely aid in scenario creation.

Holy ****. How does one even create something on this scale? My god.

Hehe, the only way one can, brick by brick. :slight_smile:

Well, thatā€™s what I said about Minecraft. But now I am making a minecraft-like game in 2D (really the same difficulty, algorithms would just need some copy pasting for 3D).

Wow, these blueprints let my head explode.

Yeah, it can even be hard for me to go back into some of these systems without having touched them for a few months. I recently split the generator into a number of blueprints for each function, and now I am going through refactoring, combining variables into structs, etc. Hopefully making everything faster, more flexible, and more readable as I go.

@, mind elaborating on how you fixed the sphere warping (conversion from xyz to polar)? Definitely curious to hear what the problem was with your earlier screenshotted BP doing the conversion.

Looks awesome :slight_smile:

I would love to explain that, if it had happenedā€¦ :stuck_out_tongue:

Right now it is fairly accurate, but not perfect. I basically eyeballed the difference between the projected vector and the expected vector and found that I could add the playerā€™s location(which also matches the center of the sphere projection) to the hit vector and divide by 2 to get pretty close to the correct flat vector.


I have a couple ideas about what might be causing the remaining inaccuracy(need to flatten the player location before adding, need to ensure the Z is correctly zeroized, need to make sure the already high poly sphere is high poly enough for a smooth collision sphere surface, etc), but it was close enough for the time being. Needed a rest from that problem.

Great work!

Your system is amazing, . Iā€™m astounded that you have done all of this in blueprint. Iā€™ve just started using the Unreal Engine these past two weeks and am working on a hex based game. The information in your threads is invaluable. Thank you for all your hard work.

I have a few questions. Iā€™m sorry if they are silly or if I have missed things that should be obvious; Iā€™m still really new and a little overwhelmed at times with all the information Iā€™ve been cramming in my head.

I am curious about how you are handling changes to underlying terrain. You say that you have been deleting each other instance and then respawning them.

Is there a reason for deleting all of the other instances, or has this changed with the updates to the engine? From what I understand the ability to delete individual instances didnā€™t exist in older versions. Iā€™m trying to make a map with destructible terrain and Iā€™ll need to be able to change meshes on portions of my (hopefully large)map almost every turn if my ideas work.

Iā€™m still thinking of ways to handle my data. I was thinking of creating a struct to handle all of the data for an individual hex then using a two dimensional array of said structs for axial coordinates. Iā€™m not sure if that is going to be really inefficient compared to your method of using multiple arrays but I want my maps to have a variably sized hexagonal shape overall and donā€™t think I could implement your method of handling locations of hexes. Iā€™ll post up a thread on my progress when I have something to show. Again, thank you for sharing what youā€™ve done, it has really helped me get a clearer direction on where I need to go.

Thanks. :slight_smile:

Yeah when I first implemented the instancing the easiest method at the time was to just clear each instance reference and respawn everything. It was basically instantaneous, so it was good enough at the time.

I havenā€™t actually moved to a single instance update system, but it is on the near term to-do list. I recently compiled key tile information into a struct that holds the tile transform, the reference mesh, and the instance # among other useful tidbits. So, when it comes time to update, I will be able to make a single array call, get all the needed info, and update as necessary.

Using a single struct array is the way to go. When I started you couldnā€™t create structs in blueprint, and then when they implemented them, I wasnā€™t at a point where I wanted to go back and rewire everything.

Lately I have been going back struct-ifying things, but I am still hesitant to compile things into a struct early in the process when it isnā€™t needed. For instance, I donā€™t necessarily need the struct containing precipitation when I am generating tectonics. So for right now, a lot of things are being left alone in the generation, but then they are being compiled into a big tile info struct at the end.

I still have a lot of work to go through everything and create structs in places where it would save time. For instance, there are areas where 2+ arrays are called, which could otherwise be turned into a single struct array call. In the end, it may end up being best to just compile the struct from the get go.

Wow, really cool systems!

Thanks! :slight_smile:

My god. You are doing almost exactly what I need to do. Why are you not selling this? Iā€™d give you my credit card in a heartbeat.

Iā€™ll have to go through this with a fine tooth comb this weekend and see if I can learn from it.

Well I seriously consider this to be a better map generation system that found in any other civ game and that isnā€™t something I would want to give away for a reasonable price. Besides, the amount of tech support I would have to provide would overwhelm me.

You may want to go through my earlier threads depending on your current level of knowledge. Things get pretty complicated so V3 may not be the best starting point.

I havenā€™t shown much progress lately(past 4 months) due to work and a near death experience, but in addition to what is shown here I have split the map generator blueprint into sub-blueprints for each function, put the generation on tick so it doesnā€™t freeze the game when you hit play, added some good UI elements with the help of JJ Franzen, and some other random stuff. Working on redoing the river system with pathfinding which should hopefully roll right into unit pathfinding.

What kind of game are you working on?