One idea I really like is to label a stretch of empty coast with an evocative name like "The Lost Shores" to create a sense of mystery -- why is this shoreline empty? What keeps people away from here? So now that I have coastline labels working, let me try to create that sort of an area.
The obvious approach is to search for an empty stretch of coastline and anchor a label there. Right now the only features of interest on the map are cities, so this basically comes down to finding the spot on the coast that is the furthest from any city. Here's an example:
On this map, the emptiest spot on the coast is midway between the cities of "Lorchler" and "Zhirsolchot". However, this isn't entirely satisfactory because that stretch isn't particularly long -- about the same as the distances between the other coast cities. In fact, most settled maps aren't going to have a lot of space between coastal cities because the coast is prime territory for settling, and cities end up being about as close together as possible. (Except on maps where the coast is a desert, for example.)
So if I want stretches of empty coast, I'm going to have to intentionally create it. This shouldn't be too hard -- it's really just a matter of eliminating a city or two along the coast. For example, if I took out "Zhirsolchot" on the above map, there'd be a nice long stretch of empty coastline. So I'll try picking an arbitrary spot on the coastline and making it off-limits for city building:
The addition of a Lost Coast tends to make the map more crowded because it essentially reduces the amount of usable area for cities and territories. To compensate for that, I reduce the number of cities to be generated when a Lost Coast is created.
Here's another example picking a different random location:
The obvious approach is to search for an empty stretch of coastline and anchor a label there. Right now the only features of interest on the map are cities, so this basically comes down to finding the spot on the coast that is the furthest from any city. Here's an example:
On this map, the emptiest spot on the coast is midway between the cities of "Lorchler" and "Zhirsolchot". However, this isn't entirely satisfactory because that stretch isn't particularly long -- about the same as the distances between the other coast cities. In fact, most settled maps aren't going to have a lot of space between coastal cities because the coast is prime territory for settling, and cities end up being about as close together as possible. (Except on maps where the coast is a desert, for example.)
So if I want stretches of empty coast, I'm going to have to intentionally create it. This shouldn't be too hard -- it's really just a matter of eliminating a city or two along the coast. For example, if I took out "Zhirsolchot" on the above map, there'd be a nice long stretch of empty coastline. So I'll try picking an arbitrary spot on the coastline and making it off-limits for city building:
The addition of a Lost Coast tends to make the map more crowded because it essentially reduces the amount of usable area for cities and territories. To compensate for that, I reduce the number of cities to be generated when a Lost Coast is created.
Here's another example picking a different random location:
When the label is near a map edge it creates a nice effect, tying the mystery of the Lost Coast to the mystery about what lies off the edge of the map. But this placement is problematic because it's in a little bay -- which not only causes the label to cross the coastline, but it's also going to be a problem when I'm naming bays. So I'll add a heuristic that tries to place Lost Coast labels along flatter parts of the coast:
This seems to work pretty well. Here's another example:
This map has a kind of interesting placement for the label, inside a very deep "bay" -- deeper than my simple heuristic can avoid. This map also happens to show some snow/ice covered lands to the north, which happens infrequently.
In the next posting, I'll move on to using coast labeling for some other purposes.
just wow. this is great work. I kinda stumbled upon this and others in the procedural and map making on reddit, but this is awesome. Any chance you will release the code?
ReplyDelete