Currently I am trying to make a procedural terrain generator. When I first started creating my terrain generator I decided to use a radial mask to generate my islands/continents like so:
But as time went along, I decided that these islands were way too small and I needed the islands to be much larger almost like continents than islands. So what I did was simply make the radial mask bigger. Which did overall result in bigger islands but my islands were now very much 'centered-based' with each island generating roughly the same except for the very outer extremities:
Here is the code I used to generate the procedural island. I included a comment on what value I changed to make the island larger. I used Libnoise for the perlin noise.
void createRadiIsland(int centerX, int centerY)
{
Perlin perlin = new Perlin();
perlin.OctaveCount = 8;
perlin.Frequency = 0.1;
int seed = 50;
float BiasX = 7f;
float BiasY = 7f;
for (int x = 0; x < grid.columns; x++)
{
for (int y = 0; y < grid.rows; y++)
{
float distanceX = (centerX - x) * (centerX - x);
float distanceY = (centerY - y) * (centerY - y);
float distanceToCenter = Mathf.Sqrt(distanceX * BiasX + distanceY * BiasY);
distanceToCenter = distanceToCenter / 500; //<-- larger the value the bigger the island
grid.FindTile(x, y).elevation = Mathf.RoundToInt(((float)perlin.GetValue(x - 0.98 + seed, y - 0.98 + seed, .1) - distanceToCenter * 10));
}
}
}
How should I modify my code so that it generates islands/continents that have the general uniqueness of the first island but at a much greater scale? Would I even be able to use a mask anymore? Would I have to use a completely new approach to generating my terrain?
side note:
I thought about solving my problem by using multiple radial gradients instead of just one but I am afraid that it will end up making my islands too blobby looking and not very realistic. Is that true?