Map Generator- Please Critique!

Im still having alot of trouble knowing what youre doing here because each piece is being sliced up and its hard to see the flow of execution which was my main reason for wanting to see, to help minimize the number of iterations because they will largely determine how long it takes to generate a map.

I guess I just look at things alittle differently in that I start with this vision of water everywhere, then I have visions of deep water cracking and pushing the shallow sands up through the water to form continents then on the islands and continents formed you get mountains and peaks, hills and rivers.

I guess what Im trying to say is that a 2D Array is a 2D vector already so you dont need to generated that information, its one of the best bits to make entirely procedural. I know from your table that any index ending in 4 or 5 will be tropical and I can put that into a relatively simple formula for any height so you dont really need to store that data you are much better off storing the formula and being able to delegate that formula out.

Basically an enumator like for, we’ll call it temperature but you might have a better name:


enum EClimate
{
	EC_Arctic, //1
	EC_Tundra, //2
	EC_Temperate, //3
	EC_SubTropical, //4
	EC_Tropical; //5
};

This would be stored in the tile itself and you can store its position in the array in the tile itself also, that tile can also know based on on the fixed 2D array what tiles are directly adjacent to it which can also be stored for quicker lookup and you can do this for every tile when creating the vector field.

From previously you dont need to search all tiles to know which are Tropical for instance you simply do height-5 or height-6 which is the midpoint of the height so having the enumerator could be purely for the visuals and the biome generation portion.

Im not sure if there are any examples considering I came up with it on my own just looking at what you had and using my experience to think about where I would do things differently or make improvements. Im not sure exactly how close you are sticking to the Civ 5 methodologies but Im sure they are well documented so if there are references you are using I could look over to provide more detailed feedback on how my thinking differs that would be appreciated.

Yup this is where the idea of generating land masses from the center outwards has its benefits, you can have an array of outmost tiles only and iterate coastlines extremely rapidly. You could also generate ocean depth in much the same manner but it does depend if youre just wanting to go the Civ route with acouple of depths where the most deep can simply be X units from the beaches roughly.

Probably the most complex part of the generation and splines will certainly be beneficial but there is still alot of data to consider when generating them. Civ cheats in regards to mountains and mountain ranges in some regards and typically does rives on more hills or flats with flood plains, so matching that wouldnt be overly difficult but if youre looking to do better and have water that actually has some semblance to real rivers and lakes it’ll be alot more difficult and the height of the surrounds will play an extremely important role.

Main reason I wanted to give some critiques is to perhaps save you some time, it can be easy to get hung up on extra details in the implementation rather than improving on the core implementation itself. As I said I still dont understand entirely how what you have works but I think youre using sub-arrays for each biome to create smaller fast iteration lists, this is a good way to use memory for this kind of thing especially if you only need to do the generation once off and save the end result clearing all the memory when youre done.