Friday, October 28, 2016

More Islands

In a previous post I talked about an approach for creating a large central island on a map by creating a circular island and then perturbing the outline of the island using noise to create more interesting shapes:

This works well for large central islands, but it's not a very good approach for creating smaller islands.  In this post I'll discuss some other approaches for creating islands that are better suited to creating incidental islands.

A straightforward and simple approach for creating smaller islands is to pick an initial sea location for the island, make that land, and then add randomly land on the coast of the island until the island is the desired size:

Because you're adding bits of land to the island randomly, there's a chance that you'll get an oddly-shaped island.  The more locations you add to your island, the more likely it will be a blob shape.  If you create an island of 5 locations this way, getting all five in a long row is not that unlikely.  If you create an island of 500 locations it would be very unlikely to get them all in a row.  But you still get some random-looking variations:
If the shapes this produces seem too random, an easy way to get a blobbier shape is to weight the random selection by how many neighboring locations are already island locations.  This will tend to create a more convex island shape.
I don't like this method for producing large islands because they almost always end up as featureless blobs, but it works well to create small islands as accents around a larger island or off a coast:
Another type of island we might like on our map is a cluster of small islands.  This is easy enough to do once we have blob islands working; it's just generating a spray of small blobs around a point:
You could also generate islands along a line to get something that looks like an island chain, but I haven't implemented that yet.

Assuming we're scattering our islands randomly and close enough together, some of them will overlap and form larger islands and create a natural size distribution as well.  Combining blob islands, cluster islands and larger landforms starts to give us some interesting and realistic-looking terrain:
And here's an example with a mountainous central island and some outlying islands:
So far I've talked about how to generate islands, but placing them is also important.  Outlying islands generally look better if they're relatively close to the main land masses.  This connects them visually and looks more natural to our eyes:
And here:
Compare to this example, where the islands in the lower half of the map look unnaturally far away:
You can address this by weighting the placement of these incidental islands so that they're more likely to be near land, or using some more intelligent algorithm.  But that may not be necessary.  Maps tend to be mostly land anyway (since there's not a lot of interest in empty sea), and if there isn't a lot of room in the seas for islands, they'll be forced to be placed near land.  (Indeed, I had to generate quite a number of maps to get the "bad" example above.)