Dragons Abound doesn't intentionally create bays; instead it identifies them on the coastline by searching for bay shapes.
The green line here on the coast shows a bay being detected. At this point, Dragons Abound knows the start and end points of the bay, the coastline in-between, the center point of the bay, and the sinuosity. I can also calculate the area of the bay from the outline. This is most of the information I need to smartly apply many adjectives.
To start with, I'll look at directional adjectives. From the location of the center point, I can decide where the bay is on the map. If the bay is toward the top of the map I can call it “North Bay" or toward the bottom “South Bay," and likewise for east or west. Of course, that isn't exactly right for naming. The map is presumably just a part of the world. The top of the map isn't necessarily the “North." And actually, places like “North Bay" don't alwaysget called that because they're in the North, but rather because they're north of some landmark. For example, a bay on the northern end of a lake is likely to get named “North Bay." All the same, it will make more sense to the reader if “North Bay" is in the top part of the map. This also means that if I happen to get a “North Bay" and “South Bay" on the same map, “North Bay" will actually be north of “South Bay!"
I could divide the map in halves and call anything on the top “North," etc., but this would lead to bays just barely above the center of the map getting labeled “North," which is probably bad. So I'll divide the map in thirds, and anything in the middle third won't be eligible for a directional label. I can also name the areas that are both “North" and “East" to “Northeast" and so on. Here's a map with three bays labeled that way:
These all happen to be in the corners so they get the compound names. Here's an example where the bay falls in the middle third of the map:
If I want to use these directions as adjectives, I can tack “-ern" onto the end of them and then use them as a possible adjective directly on the bay name, e.g., “Northern Bay" instead of “North Bay."
However, directional adjectives don't really work in other phrases, such “Northwestern Bayberry Cove." The problem is that a directional adjective would only be added to a name like “Bayberry Cove" to distinguish it from a similar location with the same name. So unless there's another “Bayberry Cove" around, the directional adjective is not really needed. And that's not likely to happen with my place name generator.
Unless I do it intentionally, of course.
The idea would be to find two bays on the map, give them the same name, and then add directional adjectives to distinguish them. The directional adjectives in this case are a little different. Unless we're amazingly lucky, the centers of the two lakes are going to be on a diagonal -- they'll be separated in both north/south and east/west. So is we use the kind of directional adjectives I used above, they'd always end up “Northeast/Southwest" or a variant. In this case, what we really care about is which direction has the most separation between the bays. And then we use “North/South" or “East/West" as appropriate to name the bays.
I might want to only do this with bays that are within some distance of each other, and maybe only with bays that are on the same shared sea. But for the moment, if I decide to do this on a map I'll just pick the two closest bays.
Now let me move on to another case: size adjectives. I can calculate the area of the bay and use that to decide that the bay is big and should be described as “Great" or that the bay is small and should be described as “Little". Of course, big and little are relative terms; I'll have to try some examples and figure a cut-off size that works well. I'm helped here that these are supposed to be names that people gave these bays; people are imprecise about things like size, so I don't have to worry too much about getting the cut-off exactly right.
You'll notice I've gotten the synonym “Narrow" on this map. I could actually calculate the longest and shortest axes of the bay and decide if it was more oblong or round, but I don't think that's really worth it; people will use their imagination to fill that in.
Just as I could use the directional adjectives to distinguish two bays with the same name, I can use size adjectives the same way. This works much the same way; I pick two bays near each other and call the larger one “Big Dolphin Bay" and the smaller one “Small Dolphin Bay".
Or in this case, Lesser/Greater Tapicer Cove.
Since I'm working with the bay sizes, I also want to distinguish the bay synonyms based on size. I've generated a couple of test maps where a small bay gets labeled “Gulf" or a large bay gets labeled “Pocket," which is jarring. So I'd like to divide the synonyms up by the sizes they imply and then use them appropriately. Here's how I broke down the synonyms:
The numbers in brackets indicate the relative probability of picking each option. It's long been known that vocabularies follow a power law distribution (Zipf's law). I don't know if synonym choice follows a similar pattern, but it seems reasonable, and power law distributions seem “natural" to people, so I used a rough power law distribution on the synonyms as well.
Another bit of information I have about bays is temperature. I can use this to decide whether a bay is hot (“Jungle Bay") or cold (“Arctic Bay"). This works the same way as the other choices.
On this map (which is entirely in Arctic regions), I get “Winter Bay" and “Frosty Basin."
That covers the descriptive adjectives, but there's a similar case I want to implement as well -- naming the bay after a nearby map feature. In the arctic map just above, both of the bays have cities on their shores. In these cases, naming the bay after the city makes sense, e.g., “Winter Bay" could be named “Kigil Bay." This could make sense for other features as well, for example, having a point and a bay with the same name. But for the moment I'm only going to name after cities.However, directional adjectives don't really work in other phrases, such “Northwestern Bayberry Cove." The problem is that a directional adjective would only be added to a name like “Bayberry Cove" to distinguish it from a similar location with the same name. So unless there's another “Bayberry Cove" around, the directional adjective is not really needed. And that's not likely to happen with my place name generator.
Unless I do it intentionally, of course.
The idea would be to find two bays on the map, give them the same name, and then add directional adjectives to distinguish them. The directional adjectives in this case are a little different. Unless we're amazingly lucky, the centers of the two lakes are going to be on a diagonal -- they'll be separated in both north/south and east/west. So is we use the kind of directional adjectives I used above, they'd always end up “Northeast/Southwest" or a variant. In this case, what we really care about is which direction has the most separation between the bays. And then we use “North/South" or “East/West" as appropriate to name the bays.
I might want to only do this with bays that are within some distance of each other, and maybe only with bays that are on the same shared sea. But for the moment, if I decide to do this on a map I'll just pick the two closest bays.
Now let me move on to another case: size adjectives. I can calculate the area of the bay and use that to decide that the bay is big and should be described as “Great" or that the bay is small and should be described as “Little". Of course, big and little are relative terms; I'll have to try some examples and figure a cut-off size that works well. I'm helped here that these are supposed to be names that people gave these bays; people are imprecise about things like size, so I don't have to worry too much about getting the cut-off exactly right.
You'll notice I've gotten the synonym “Narrow" on this map. I could actually calculate the longest and shortest axes of the bay and decide if it was more oblong or round, but I don't think that's really worth it; people will use their imagination to fill that in.
Just as I could use the directional adjectives to distinguish two bays with the same name, I can use size adjectives the same way. This works much the same way; I pick two bays near each other and call the larger one “Big Dolphin Bay" and the smaller one “Small Dolphin Bay".
Or in this case, Lesser/Greater Tapicer Cove.
Since I'm working with the bay sizes, I also want to distinguish the bay synonyms based on size. I've generated a couple of test maps where a small bay gets labeled “Gulf" or a large bay gets labeled “Pocket," which is jarring. So I'd like to divide the synonyms up by the sizes they imply and then use them appropriately. Here's how I broke down the synonyms:
Small | Medium | Large |
---|---|---|
Cove [125] | Bay [166] | Gulf [17] |
Inlet [42] | Anchorage [83] | Basin [8] |
Hole [21] | Sound [28] | Reach [3] |
Eddy [13] | Bight [14] | Refuge [1] |
Pocket [8] | Bottom [8] | Arm [1] |
Bend [6] | Slough [6] | |
Neck [4] | Gulch [4] | |
Hollow [3] | Lagoon [3] | |
Prong [3] | Wick [2] | |
Branch [2] | Firth [2] | |
Pool [2] | Voe [2] | |
Horn [2] | Gut [1] | |
Narrows [1] | Cut [1] | |
Gap [1] | ||
Gully [1] | ||
Indent [1] |
The numbers in brackets indicate the relative probability of picking each option. It's long been known that vocabularies follow a power law distribution (Zipf's law). I don't know if synonym choice follows a similar pattern, but it seems reasonable, and power law distributions seem “natural" to people, so I used a rough power law distribution on the synonyms as well.
Another bit of information I have about bays is temperature. I can use this to decide whether a bay is hot (“Jungle Bay") or cold (“Arctic Bay"). This works the same way as the other choices.
On this map (which is entirely in Arctic regions), I get “Winter Bay" and “Frosty Basin."
One tricky aspect of this is that there are often multiple cities on a bay:
In this case, it seems like the bay ought to (usually) be named after the biggest city. Of course you can imagine situations where the bay would be named after one of the smaller cities, so I'll include that as a (lower-likelihood) possibility as well.
Finally, I also want the option to name a bay after one of the rivers that flows into the bay. So in this case:
the bay might get named “Ruzu Cove" after the Ruzu River that flows into the bay. To do this, I need to make sure that I've named the rivers before trying to name the bay, and then look through the rivers that end in the bay to find the largest named river flowing into the bay.
Now the bay is named after the river. In this case I've forced all the bays to be named after rivers, but note that the upper bay seems to have a random name. That's actually the name of one of the rivers flowing into that bay, but the labeling algorithm has decided the river is too small to display that name, so it has been left off the map.
And that about wraps up my current plans for bay place names. I'll keep adding vocabulary as I have ideas and tweak the probabilities of the different naming options, but that can wait for the future. A test run with all the possibilities turned on:
Hey, very cool! I love the texture of the water there too.
ReplyDeleteThose 3 wordlists for small/medium/large bays reminds me of the fuzzy logic stuff I did recently for my degree. Basically it's a system where you input a crisp value (i.e. a sensor reading - in this case the size of the bay), and then that gets compared against one or more fuzzy sets that have linguistic variables - in this case small, medium, and large. The resulting membership values are then used in a number of arbitrary calumniations, with the end result then either converted back into a crisp value, or used for something else
My explanation here is rather over-simplified (I'd recommend looking it up if you're interested) - and fuzzy logic is probably overkill here anyway, but it's fascinating nonetheless.
Thanks for another cool blog post! I've learnt about a bunch of cool techniques from subscribing to your blog :D