CityNameManager+ Release

Apologies for my absence, been a busy week-and-a-bit. I'll get to everything before Leo's big reply and then come to the that and the stuff after it in a bit!

The one in Seville turned out to be another shooting location for Game of Thrones by the way, another common theme for my travels for some reason.

Bizarrely me too, certainly saw a lot of GoT locations when I was out in Northern Ireland. I see Italica's amphitheatre is the dragon pit of all places, pretty iconic!

Oh I didn't know that was possible. Can it be done to the two Qart Hadashts too? It's always bothered me that they're differentiated with a hyphen, it's gimmicky.

Afraid this isn't really possible (as with Edo). The reason being that you can't have two cities with the same name simultaneously. The York/Toronto code is a good example; England's city list actually has them found Toronto, it never actually uses the York>Toronto change. That's only actually used in the 1700AD scenario, where the English York is of course not founded and will likely never be - it would take a foreign power invading, razing cities, and then England resettling the area, which is incredibly unlikely. On the other hand, Edo and Qart-Hadasht are both founded in the vast majority of 3000BC games. But then again I'm still not sure how the Edo/Edo thing is got around in the Nigeria mod, unless there's a way to preset cities of the same name even when two of the same name can't be founded.

Hi! I took the time to look at your work and I wanted to say, as a city names enthusiast, that I am very impressed. Some of the things in here were ideas that I've thought would be neat for a long time, like having independent names for cities like Helsinki or Prague, though you've pushed it far beyond anything I would have envisioned.

I really enjoyed the screenshot albums and will read any others you post. Based on them, I have a few suggestions:
  • While it's kind of a cool easter egg to rename Rome as Civitas Vaticana when independent, I don't think it's really justified. There was never a city called 'Vatican', despite the phrase "Vatican City" being used to refer to the independent state — which in any case isn't much more than a small neighborhood of the city of Rome. Also, if I understand this right, the name wasn't used before 1929 (except to refer to the hill), so it would be bizarre to see it pop up in the Ancient or Medieval eras. An independent Rome in the Middle Ages or Renaissance would clearly represent the Papal States, and the Papal States' capital was unambiguously called Rome.
  • I think there should be no accent on the 'a' of Tenochtitlan. In Spanish it often has one, but in Nahuatl the stress is on the 'i', and (for instance) Nahuatl Wikipedia spells it without an accent. The same holds for Teotihuacan and Tlaxcallan, by the way. Not sure about other cities with the suffix -an. It's not always easy to find original Nahuatl names, and Spanish has influenced the language quite a bit.
  • I think it makes sense that Kaminaljuyu becomes Guatemala, but both cities should be further west, in the Guatemala highlands. They could share their tile with Q'umarkaj, which flourished later than Kaminalkuyu. Not sure what should go on the current Kaminaljuyu tile, though, so it's probably fine like this. In general, there are lots of potential renames over time in the area, since the history of the Maya is the history of city-states rising and falling, so it might be worth diving deep if you haven't already.
  • About Coimbra, Nigeria: you have Calabar on that tile for the English, and this page states that the name 'Calabar' was given to the city of Akwa Akpa by a Portuguese explorer. Sounds like an obvious solution to me!
  • I'm wondering if Canada should get its own language. I remember being responsible for giving them the "American" language (instead of English) so they could use French names in French-speaking areas. But maybe it would be better to make that distinct from what the Americans use, so the latter could keep e.g. using English names in Quebec. (Although, you could imagine an alternate history where the 13 colonies ally with the French-speaking Canadiens and give rise to a bilingual union of states...) Maybe there are situations where American and Canadian names would be desirable? I don't know. Probably not super important.

You're definitely right about the Vatican City thing. I'm trying to think of a way I could figure it so it could only appear in the modern era, but without just removing the option for an independent Rome to exist in that era altogether I think it's unlikely.

As someone who doesn't really know anything about Nahuatl orthography beyond what I've accumulated through doing this whole thing, I'll defer to the majority on the diacritics!

Re: Kaminaljuyu, yeah the issue here was not finding a suitable Mayan city that could go on that tile, but also in general leaning towards having the most commonly founded Maya cities defer to more historically important Spanish cities - eg while Tucume does not correspond directly to Guayaquil, I think that it's more worth seeing that city appear in the majority of 3000BC/600AD games than, say, Chiclayo. At the end of the day this is something I'm not too concerned about given the whole of DoC and thus this mod will soon be moving to a different map, but it would be great to chat further about Mayan cities as in general I know a lot less about Mesoamerica than, say, Asian and African history... speaking of which...

Thanks for that note, I'll look into that and probably patch it in!

I have a future plans file on my PC that includes an American/Canadian split... but not before a modern Persian split and an Indian/Tamil split, which are much bigger priorities at the moment.
 
Bizarrely me too, certainly saw a lot of GoT locations when I was out in Northern Ireland. I see Italica's amphitheatre is the dragon pit of all places, pretty iconic!
Oh it is? Didn't even know that. I just learned that the Alcazar was used as the Dornish water gardens location. And yeah I had Northern Ireland and Malta now. I wonder where I'll run into it next.
 
Afraid this isn't really possible (as with Edo). The reason being that you can't have two cities with the same name simultaneously. The York/Toronto code is a good example; England's city list actually has them found Toronto, it never actually uses the York>Toronto change. That's only actually used in the 1700AD scenario, where the English York is of course not founded and will likely never be - it would take a foreign power invading, razing cities, and then England resettling the area, which is incredibly unlikely. On the other hand, Edo and Qart-Hadasht are both founded in the vast majority of 3000BC games. But then again I'm still not sure how the Edo/Edo thing is got around in the Nigeria mod, unless there's a way to preset cities of the same name even when two of the same name can't be founded.

When reading this post, I thought you were wrong, because from my tests with Nigeria it seems it is possible to have multiple cities with the same name. I looked into the code and it turns out it is partially true. The city.rename() function, used by the CNM module to (re)name cities, only prevents 2 cities of the same civ to have the same name. Cities with different owners can have the same name. That is why it did work in my Nigeria modmod.

In DoC we have our own custom city naming mechanics, basically overriding the names of the citylist. The CNM module controls the name for all cities in the game, apart from manual renaming. I don't think there is any need for the double name restriction anymore. From a coding perspective this restriction can easily be removed. We could also still keep this restriction and apply it only for manual renaming or when there is no name in the CNM and a name from the citylist is chosen.
 
I am working my brain on a response that I am mostly not typing up because it's bound to be large. There is a lot to talk about here and I find it hard to fit all in my head let alone in text. So I guess it's better to start the discussion somewhere and I'll layer on more stuff as we go along.

I think it's most important before I give actual feedback that we have some terminology to talk about this. So let me propose the following (examples from the old CNM):

1. A translation is when a city name is not really changed but only rendered in a different language. For example Venezia/Venice/Venedig etc. are translations of the same city name. This is usually the default case that happens when a city changes owner.
2. A hypername is when distinctly different names are used to refer to the same city. Examples for this are Edo/Tokyo, York/Toronto, Byzantion/Konstantinoupolis, Stalingrad/Volgograd. Each hypername for a city can have distinct translations. Names can change by era, after civic changes, or after city conquest.
3. A relocation is when the name of an existing city is changed to a completely different city that is located on the same tile, even though both cities do not have continuity. This currently happens very rarely, but examples for this are the often discussed Babylon/Baghdad and Carthage/Tunis pairs. Like hypernames, each location has distinct translations. Theoretically, different locations can also have different hypernames but I cannot think of a case where this could actually happen.

Anything wrong here? Another type that isn't covered?

That all sounds good. There are a few instances of hypernames being used in relocations in my mod, especially in some of the more, let's say, experimental city spots - like Taiwan, which was something of a nightmare to research but whose results I'm pretty happy with.

Some early observations based on these distinctions:

1. Current DoC policy has been that relocations are bad and should not happen. A tile can house many different cities but once the city is founded it cannot change anymore. I am not against changing that, but it's worth thinking about what it means for the game.
2. A translation, or generally any name change that happens on city conquest is transparent to the player. You get a new city and learn its name. Hypernames and relocations on the other hand have the potential to be confusing. From one turn to another, one of your cities may suddenly have a different name and you only notice when it pops up in the build queue or in an event notification. This is currently not that much of a problem because relocations do not exist and hypernames are rare enough that it is not too confusing or distracting. If hypernames become more frequent and relocations become possible to occur, we might need to think about ways of addressing this. A good idea here is to limit the possible causes for hypernames to clearly apparent causes to the player to go in hand with other big announcements (era changes, civic changes), I don't know if others exist here currently. It might also be a good idea to add interface announcements when a hypername happens.

My case for relocations being a bit more de rigeur remains pretty much the same: throughout history, examples of cities being 'razed' and thus swept out of existence permanently isn't nearly as common as a city simply paling away compared to other nearby cities. Indeed a lot of cities that were actually razed to the ground - Carthage by the Romans, Samarkand and other cities by the Mongols - bounced back very quickly. On the other hand, cities like Babylon stopped being inhabited when river paths no longer irrigated the city and desertification in Mesopotamia increased. Of course there are different approaches to how far you can go - for example, I have York become Leeds when England reaches the Industrial Revolution, which is an accurate reflection of York's dwindling importance compared to the cities that were closer to the mines in that era. But of course York is very much still inhabited - I live here!

Currently, the only times a city will be renamed are: when it flips to (or is conquered by) a new civ, when a new era is reached, when a civ becomes Communist (almost all Russia, a few Soviet sphere of control cities (like Ulaanbaatar), one or two Chinese cities and a slightly different transliteration of Korea's core cities) and finally, and least used currently, when a city adopts a new religion - currently only used for the notorious Buddhapest and also the city of Gaya/Bodh Gaya, which can't currently be founded in the game as long as Patna exists, which I'd guess is every single game the human isn't playing as India. I think an interface announcement would be great, of course.

3. Relocations should definitely have an announcement, and maybe also have other effects. For example, I could imagine adding a city ruins building that will represent the abandoned previous city on the previous tile. It could enable some interesting events like being used as a quarry, in archeology, as a tourist attraction etc. Just something I started thinking about once this came up.

This is implying a full relocation to a different tile, I take it? I'd support this in some cases, as with pesky old Babylon. I was thinking Persia could relocate it to Tisfun/Ctesiphon under some circumstances, which feeds perfectly into Baghdad. Of course this becomes thornier with the Carthage example, where Tunis occupies the same tile.

4. Likewise, relocations should be allowed but rare, and have specific causes. Some screenshots shown here suggest that cities relocate all over the place as time passes (thinking of India here). I think that goes a little far, and would make things too confusing. I'd rather like a system where the city founded on the tile (if it can contain multiple) can have a name chosen from multiple alternatives but then not change easily. A good candidate for that is conquest, or change of hands due to other factors like flips and collapses. This is just talking from my impressions here, I can cite specific examples later which is probably the better way to talk about this.

That's fair, although currently the vast majority of relocations do come from conquests and collapses - there are a handful from era, as with the British Industrial Revolution example before, but they're far less frequent. It maybe just happens more than you'd expect - India does change hands a lot, after all! India in particular is a really difficult one because with very few exceptions (really Delhi, Patna and Karachi if you consider it to be a continuation of Debal) there aren't really any cities from classical or even medieval India that are still significant in the modern era. Seeing Mumbai and Kolkata founded that early in particular makes very little sense, especially when cities like Sopara and Tamralipta were among the most important ports in the world in their era. I do like the idea of cities being able to pick from a select list of cities for certain tiles - there were times when it was agonising to leave certain cities out.

One thing I will say is that while it looks very chaotic in an AI game, where I've set the whole world to be visible and am watching every single little detail, this won't be the case for the human player. For a start you have a far more limited view of the world - as far as I can tell, most people who play tend to see their own empire and its immediate surroundings and not waste hammers on exploring too much unless its to colonise. So naturally you'll see less of the AI's name change machinations - if you're playing as Portugal, you might see Kandy or Anuradhapura or Polonnaruwa or Galle when you reach Sri Lanka, but you're not going to see it cycle through all of them before you take it (and establish Colombo, naturally). Secondly, if you're the human player... well, you'll hopefully not be haemorrhaging cities to independents and other civs on a regular basis, so again it shouldn't be too confusing! Unless you lose a city, you'll only ever get the era-related renames, which are mostly hypernames. Again, could still be confusing the first time if you're not expecting, say, Oslo to change its name to Christiania for a few centuries before reverting, but for the most part I think it's manageable.

5. Another thing I noticed is that if a city has multiple hypernames, one hypername may have a translation in a given language but the other hypername may not. In this case it's good if the game would automatically select the translation for the other hypername instead. This could cut down on the accounting for all different names in the programming.
6. In general I want to make hypernames and relocations explicit concepts in the code. I suppose currently they are implemented implicitly through a series of rename conditions. I think that becomes hard to handle at a certain point.

Very much in favour of point 6 and tentatively in favour of point 5, though I'm aware it may create a few oddities - as an example, we might see a Tibetan rendering of Constantinople in a run where the Romans and Byzantines never touched Byzantion.

When reading this post, I thought you were wrong, because from my tests with Nigeria it seems it is possible to have multiple cities with the same name. I looked into the code and it turns out it is partially true. The city.rename() function, used by the CNM module to (re)name cities, only prevents 2 cities of the same civ to have the same name. Cities with different owners can have the same name. That is why it did work in my Nigeria modmod.

In DoC we have our own custom city naming mechanics, basically overriding the names of the citylist. The CNM module controls the name for all cities in the game, apart from manual renaming. I don't think there is any need for the double name restriction anymore. From a coding perspective this restriction can easily be removed. We could also still keep this restriction and apply it only for manual renaming or when there is no name in the CNM and a name from the citylist is chosen.

That's interesting, I'll have to do a little experimenting! Explains why Carthage wouldn't found two Qart-Hadashts. Only real problem with Edo is that both variants might take different rename from the same language - English, for example, as you'd want them to rename the African one Benin City (and keep the Japanese one as Edo). It very well could still be possible though, I'll have a dive into that when I get the chance. Fortunately I think it only really applies to Edo and a few Spanish cities, though there again you'd expect Spain to found both Santiago de Compostela and Santiago de Chile.
 
Last edited:
My case for relocations being a bit more de rigeur remains pretty much the same: throughout history, examples of cities being 'razed' and thus swept out of existence permanently isn't nearly as common as a city simply paling away compared to other nearby cities. Indeed a lot of cities that were actually razed to the ground - Carthage by the Romans, Samarkand and other cities by the Mongols - bounced back very quickly.
I agree, from the examples I can think of what is more likely to cause a razed city to be displaced if either an occupier or the previous inhabitants deliberately decide to rebuild at a different location, which then eclipses the previous center for political or defensive reasons, part of which is why I think "relocation" encapsulates this well as a concept, although it covers more than "city A has been conquered and city B has been established as replacement".

On the other hand, cities like Babylon stopped being inhabited when river paths no longer irrigated the city and desertification in Mesopotamia increased. Of course there are different approaches to how far you can go - for example, I have York become Leeds when England reaches the Industrial Revolution, which is an accurate reflection of York's dwindling importance compared to the cities that were closer to the mines in that era. But of course York is very much still inhabited - I live here!
Yes, if we want no Leeds in the middle ages but also some games where Leeds can appear at all, then we need a relocation like this. And I think I agree with this goal. The question is how we communicate that to the user, and if we give human players an option. At this point I just mostly want to bring it to everyone's attention that there is a significant difference between relocations and mere hypernames when it comes to player experience.

Currently, the only times a city will be renamed are: when it flips to (or is conquered by) a new civ, when a new era is reached, when a civ becomes Communist (almost all Russia, a few Soviet sphere of control cities (like Ulaanbaatar), one or two Chinese cities and a slightly different transliteration of Korea's core cities) and finally, and least used currently, when a city adopts a new religion - currently only used for the notorious Buddhapest and also the city of Gaya/Bodh Gaya, which can't currently be founded in the game as long as Patna exists, which I'd guess is every single game the human isn't playing as India. I think an interface announcement would be great, of course.
Speaking of, are there more candidates for religion based city renaming? How about changing from transcribed Nahuatl names to proper Spanish names from example, instead of Nahuatl -> Spanish directly when Spain conquers an Aztec city?

This is implying a full relocation to a different tile, I take it? I'd support this in some cases, as with pesky old Babylon. I was thinking Persia could relocate it to Tisfun/Ctesiphon under some circumstances, which feeds perfectly into Baghdad. Of course this becomes thornier with the Carthage example, where Tunis occupies the same tile.
No, when I say relocation I always mean keeping the ingame city on the same tile, but using the name of another city that occupies the same tile but is a distinctly separate city (although it may be incorporated into the other at a later date, as with Carthage/Tunis). I don't think it's possible to move the city to a completely different tile, there are too many exceptions and edge cases to account for.


That's fair, although currently the vast majority of relocations do come from conquests and collapses - there are a handful from era, as with the British Industrial Revolution example before, but they're far less frequent. It maybe just happens more than you'd expect - India does change hands a lot, after all! India in particular is a really difficult one because with very few exceptions (really Delhi, Patna and Karachi if you consider it to be a continuation of Debal) there aren't really any cities from classical or even medieval India that are still significant in the modern era. Seeing Mumbai and Kolkata founded that early in particular makes very little sense, especially when cities like Sopara and Tamralipta were among the most important ports in the world in their era. I do like the idea of cities being able to pick from a select list of cities for certain tiles - there were times when it was agonising to leave certain cities out.

One thing I will say is that while it looks very chaotic in an AI game, where I've set the whole world to be visible and am watching every single little detail, this won't be the case for the human player. For a start you have a far more limited view of the world - as far as I can tell, most people who play tend to see their own empire and its immediate surroundings and not waste hammers on exploring too much unless its to colonise. So naturally you'll see less of the AI's name change machinations - if you're playing as Portugal, you might see Kandy or Anuradhapura or Polonnaruwa or Galle when you reach Sri Lanka, but you're not going to see it cycle through all of them before you take it (and establish Colombo, naturally). Secondly, if you're the human player... well, you'll hopefully not be haemorrhaging cities to independents and other civs on a regular basis, so again it shouldn't be too confusing! Unless you lose a city, you'll only ever get the era-related renames, which are mostly hypernames. Again, could still be confusing the first time if you're not expecting, say, Oslo to change its name to Christiania for a few centuries before reverting, but for the most part I think it's manageable.
Yeah, that's sort of my line of argument too. Relocations are not functionally different from hypernames because in each case the player is confronted with a new name for a city on the same tile without a proper announcement of the new name (unlike renaming on conquest), but "allowing" relocations as well simply increases the number of times where this is encountered by the player, both for own and foreign cities. It's not as much of a concern to me if it only happens once per cities, but some of the examples (like in India, as you mention) the screenshot descriptions seem to suggest some cities relocate multiple times during the game. I acknowledge that it's less of a problem when it is happening for the AI, which is why I mentioned different treatment for human and AI cities (or at least a player choice), but I also don't think it's not a problem at all if it is happening excessively for even the AI.

I share your goal that we want to see classical and medieval and modern cities in places like India, and the no relocations policy would not accomplish that goal given the region's history (and we're either stuck with classical cities forever or anachronistic modern cities like now). If it's true that change of owner is the principal trigger then that's fine for me. After all, even in the game we have India, the Mughals, English (or other European) colonies, and back to India as the intended chain of owners, with Tamils and the occasional collapse (and therefore change to independents) as possible triggers already, which should provide ample opportunity to cycle names throughout the game. But on the other hand if there's let's say a human controlled India that never collapses or loses cities it would be kind of cool if the classical cities remain in place because the historical events that led to their decline were averted.

I sense from some of your screenshots that the desire is to showcase all the names the prominent city on a tile had throughout history, and it's cool to exhibit as many possible names as possible, but I would prefer a system that is less rigid and more responsive to what is happening in the game, but leaves the possibilties open for multiple names to be selected so they are eventually all seen over multiple games. You already mentioned that some names can only be seen under very specific circumstances and I think it's kind of cool that there are some rarely seen names that you can be excited about encountering. Definitely makes the exploration part of the game more interesting than just finding the same old pre-ordained cities every game.

Very much in favour of point 6 and tentatively in favour of point 5, though I'm aware it may create a few oddities - as an example, we might see a Tibetan rendering of Constantinople in a run where the Romans and Byzantines never touched Byzantion.
Yeah, if I do this it will be implemented so the game is aware of the renaming "order", e.g. Byzantion -> Konstantinoupolis, and it will only check back into the past but never into the "future" for renamings that have never happened. So if you don't have a name for Konstantinoupolis you can fall back on Byzantion but not vice versa. Also, this could allow us to tack some translations that are kind of irrespective of the current hypername (i.e. the "Tsargrad" chain - although that may be even better as its own hypername?) to Byzantion and then it doesn't need to be repeated for the Constantinople and Istanbul alternatives.

That's interesting, I'll have to do a little experimenting! Explains why Carthage wouldn't found two Qart-Hadashts. Only real problem with Edo is that both variants might take different rename from the same language - English, for example, as you'd want them to rename the African one Benin City (and keep the Japanese one as Edo). It very well could still be possible though, I'll have a dive into that when I get the chance. Fortunately I think it only really applies to Edo and a few Spanish cities, though there again you'd expect Spain to found both Santiago de Compostela and Santiago de Chile.
It also explains why Rhye chose to be wordy with all the Alexandrias. Another one I thought about was York, i.e. York (England) and York (Ontario), modern Toronto. It's not as unlikely to happen as I thought (which you could argue for Edo).

It's true that changing the DLL so that it accepts identical city names is possible, but the question is also if that is a good idea. Suddenly, notification and interface information isn't as meaningful anymore because you don't know which city the game is referring to anymore. For some, we have real world disambiguative names like in Spanish, and I could even imagine writing code that only adds the long form if the name is otherwise ambiguous. But for other names the best I can think of is programmatically adding the region name to the city if the name is a duplicate, e.g. York (Ontario) and York (Britain). I don't think we ever have the same name twice in the same region. I am using the larger set of regions from the big map here, by the way.

I also discovered another problem with the current code. If two different cities have an identical name (even if not in the same language), but different identifiers (as they should), the game cannot really deal with it. For example, the Phoenician name for Malaga in Spain is Malaka, but that is also some translation of Bandar Melaka (didn't check which language). So it's impossible for the code to determine which city it actually is when encountering "Malaka", leading to mistranslation in one of these cases. And the code isn't easy to change because we only get the name string, not the full city object, so it's not even possible to go via tile or region instead. That's another argument why my planned transition to unique identifiers for cities on one single city name map is a good idea.
 
Just a quick thought on multiple cities sharing a name, we can do a couple of things
- Add "new" (in the right language) for situations when it's the same civ founding both cities, I think that would work for Qart Hadasht?
- Add "of (country)", such as "Santiago de Cuba", "Santiago de Guatemala", "Santiago de Chile" (not to mention "Santiago de Compostela" and "Santiago de los Caballeros" in the Dominican Republic, but those would still have to be written out). With some other names, such as La Paz (there's La Paz in Bolivia and La Paz in Baja (Mexico)), this would be adding to the names, but I think that reading "La Paz de Bolivia" and "La Paz de México" isn't so horrible. Perhaps the "of (country)" addition should only pop up when a 2nd city with the same name is founded?

Finally, this website has a list of many cities with homonymous names. Those spaniards were really out of creativity, as you can see there... there are 29 cities around the world named "San Jose"!
 
- Add "new" (in the right language) for situations when it's the same civ founding both cities, I think that would work for Qart Hadasht?

So one would be name Qart Hadasht and the other one Qart Qart Hadasht? :lol:
 
Yeah Spanish Catholics really went all out for their saints, I think only Alexander is ahead of them.

To summarise my idea:
- if only one of the duplicate cities is in your empire, it keeps the simple name: Edo, York, Santiago
- if duplicate city names are in your empire, both change to a longer unique name
- we can keep a special list of longer name for some cities, e.g. Santiago de Compostela. We can also put kind of made up distinctions in there, e.g. La Paz de Bolivia like above.
- fallback longer name is <city name> (<region name>), e.g. Edo (Japan) and Edo (West Africa)
- another rule could be that core cities get to keep their simple name, so it's Edo and Edo (West Africa) for Japan.
 
So one would be name Qart Hadasht and the other one Qart Qart Hadasht? :lol:

Whaaaat?!? I didn't know that! Well, but it isn't so weird then, because in Latin the Iberian one is called Cartago Nova.

- fallback longer name is <city name> (<region name>), e.g. Edo (Japan) and Edo (West Africa)

Maybe "Edo, Japan" and "Edo, Benin"? The parenthesis look weird. Also, I think it would be better (more politically correct) if country names (Benin) would be used instead of region names (West Africa), even for independent-owned cities.
 
It's the fallback option. No way we can compile lists of country names for every tile in the world.
 
It's the fallback option. No way we can compile lists of country names for every tile in the world.
That's just your Anti-Monaco bias talking.
 
Yeah Monaco sucks
 
Okay so here's another thing I have been thinking about and that I want to talk about. I plan to introduce a concept (maybe along with the 1.17 rewrites) of periods. Every civilisation can be in different periods that is a distinct property which you can retrieve with something like pEgypt.getPeriod(). Some civs may be in the same "period" for their entire existence but others may have different periods. What a period represents can vary for civ to civ but for instance for China, the different dynasties can be different periods, or for Holy Roman it can be used to represent the transition between the Holy Roman Empire and Austria etc. I chose "period" as a name for this concept because it is broad enough to encapsulate whatever specific use a civ can get from the concept.

This isn't only relevant for city names, but also dynamic civ names, leader selection, and other things like capital relocation or changed core and stability areas. Right now, in all these parts of the code the same checks are repeated multiple times, and there is potential for accidental discrepancies that would lead to some inconsistent combinations (I am pretty sure this already happens). With this instead, the period would be determined in one part of the code and the all the others could use it to figure out civ names, city names etc. It will also supercede the "reborn" property that is currently used to (badly) implement changed core areas and the like. Here the problem is that there are only two options for a civ (before and after core area change) instead of multiple changes, if necessary. Not to mention that the rebirth mechanic is supposed to be phased out soon as well.
 
Speaking of, are there more candidates for religion based city renaming? How about changing from transcribed Nahuatl names to proper Spanish names from example, instead of Nahuatl -> Spanish directly when Spain conquers an Aztec city?

Yes! There's plenty really, I just decided to avoid including them in the first release because it would take a while to suss out. I mean I didn't mention this before, but of course Egypt has it already implemented when they are reborn with Islam - if they're not reborn with Islam they stick to their old names, which is why I've been trying to keep them Coptic, though I think I might have to split off Coptic into a whole new language atm.

Some other examples that come to mind are Indonesian cities becoming Islamic representing the shift from old Indonesian kingdoms to Majapahit, potentially using Christianity to un-Norse the Viking city names (though you're arguably playing a little fast and loose with the timeline there) or Islam replacing Zoroastrianism being the catalyst for Arabic replacing ancient Persian (well, Farsi rather than Arabic when I get round to implementing it). I'm sure there are a few one off examples that I'm not thinking of right now too.

No, when I say relocation I always mean keeping the ingame city on the same tile, but using the name of another city that occupies the same tile but is a distinctly separate city (although it may be incorporated into the other at a later date, as with Carthage/Tunis). I don't think it's possible to move the city to a completely different tile, there are too many exceptions and edge cases to account for.

Ah, I reread what you wrote before and realised I'd misread it. I thought you meant add the city ruins improvement on to the original tile, when you actually said add it as a new building in the city. Gotcha.

I share your goal that we want to see classical and medieval and modern cities in places like India, and the no relocations policy would not accomplish that goal given the region's history (and we're either stuck with classical cities forever or anachronistic modern cities like now). If it's true that change of owner is the principal trigger then that's fine for me. After all, even in the game we have India, the Mughals, English (or other European) colonies, and back to India as the intended chain of owners, with Tamils and the occasional collapse (and therefore change to independents) as possible triggers already, which should provide ample opportunity to cycle names throughout the game. But on the other hand if there's let's say a human controlled India that never collapses or loses cities it would be kind of cool if the classical cities remain in place because the historical events that led to their decline were averted.

This is largely the case already - eg if you found Shurparaka and never lose it it will never become Mumbai. Really it's easier to see what's not obeying those rules, as it'll only be where I added a city that relocates by era. In the cases where this happens, it's usually because the city that eclipsed was it explicitly founded under native Indian rule, not Mughal or colonial, so it felt strange to have it change name only when conquered.

Let me have a look through now to see if I can see all the Indian cities that would relocate even if you never conceded them, and cut a few down in the process... Not including Sri Lanka, which is admittedly a bit haywire at the moment, but to be honest I've been using that, Taiwan and Armenia as experiments for a more hands-on approach, so they'll almost definitely be stripped back at some point.

Spoiler :
In the Medi era, Chandrapura to Govapuri (which are very very nearby each other, both in the small state of Goa), and Indraprastha to Dilli (disputed if they're the same tile, obviously already present in DoC).

In the Renaissance there are a fair few more: Ahichchhatra to Bareli (that one could probably go, tbf - it already defaults to it when lost to independents, so I think I'll excise that one from the eras list), Chittorgarh to Udaipur (reflects a very definitive shifting of the regional capital by Udai Singh II, who gave his name to the city, which led to it replacing Chittorgarh as the local centre), Mainaguri to Koch Bihar (not much to that one except one city dwindling and another becoming prominent), Pravapura to Nagpur (as with Ahichchhatra, I think worth getting rid off this one as almost all foreign powers will replace it with Nagpur - even if that's not necessarily accurate as to when one city became less important than the other), Sirpur to Rayapur/Raipur (reflecting how Sirpur was likely destroyed in an earthquake and thereafter replaced by Raipur as the main city of the region), Talakadi to Bengaluru (could restrict this to being conquered again, but it's annoying when it was definitively founded by the Vijayanagara Empire), Tamralipta to Karnasuvarna (could be lost if we like the idea of holding on to Tamralipta for all of history, as ahistorical as it is of course, though it is currently the only way Karnasuvarna can appear on the map), Vengipuram to Bezavada/Vijayawada (this one can probably go though).

In Industrial we get Debal to Kolachi (I'm fairly confident that one should stay, and depending on where you think Debal was it's essentially a rename anyway), Ratnapura/Ratanpur to Bilaspur (the power centre shifted under Maratha rule, so not really sure how you'd reflect that without an era-defined change), Srirangapatna to Mahisuru (it feels odd to not have India be able to have Mysore of their own accord to me, but given when independent it can change to Mysore anyway I think I'll cut this for now), and Vizhinjam to Thiruvananthapuram (don't really want to change this one, to be honest).

In the modern era we just get Govapuri to Panaji and Katak to Bhubaneswara (both simply reflecting new state capitals... though actually if you never lose any cities you'll forever keep Tosali, not Katak, so discount that one). All in all, it might seem like a lot, but once I've cut the ones I mentioned there aren't really that many at all given how big India is - you'd probably only have one of these at most affecting you in a given game. Note that there are a few that look like they *should* be relocations but are actually just radically new names for existing cities... Deogarh to Uch, Saketa to Ayodhya, Kashtpur to Multan to give just three examples.


I sense from some of your screenshots that the desire is to showcase all the names the prominent city on a tile had throughout history, and it's cool to exhibit as many possible names as possible, but I would prefer a system that is less rigid and more responsive to what is happening in the game, but leaves the possibilties open for multiple names to be selected so they are eventually all seen over multiple games. You already mentioned that some names can only be seen under very specific circumstances and I think it's kind of cool that there are some rarely seen names that you can be excited about encountering. Definitely makes the exploration part of the game more interesting than just finding the same old pre-ordained cities every game.

Yeah I agree with this. I really tried to let the element of chance and dynamicism infect the renames as much as I can with the toolset I had, but I'm simply not a good enough coder to come up with all new mechanics of my own. Some of the things that work best in the current version are the two distinct independent languages allowing certain tiles to drift into different directions, as well as the propensity for certain flips to completely alter a tile's history (most often seen with colonial powers - in general if you fight off colonial powers you'll never be besmirched with their cities... at least in the Old World, as the New World America spawns still have the awkwardness of being set to the languages of OTL).

It also explains why Rhye chose to be wordy with all the Alexandrias. Another one I thought about was York, i.e. York (England) and York (Ontario), modern Toronto. It's not as unlikely to happen as I thought (which you could argue for Edo).

Interesting you say that, as I've not seen England found York once in my recent run of tests... Plymouth, Newcastle and Edinburgh all round, occasionally veering into Bristol instead of Plymouth. And I think the general player strat is to go for Southampton (well, Portsmouth in my version) and Newcastle. Not quite as rigid as China, mind.

Finally, this website has a list of many cities with homonymous names. Those spaniards were really out of creativity, as you can see there... there are 29 cities around the world named "San Jose"!

Oh this is really useful, thanks for sharing this! I've been considering redoing the non-map "reserve" city lists to better reflect common colonial names rather than them just consisting of cities in their core that don't happen to be in their city map, but I haven't really found a good resource for it yet.

Yeah Monaco sucks

*whistles and quietly sweeps the Monaco identifier under the rug*

Okay so here's another thing I have been thinking about and that I want to talk about. I plan to introduce a concept (maybe along with the 1.17 rewrites) of periods. Every civilisation can be in different periods that is a distinct property which you can retrieve with something like pEgypt.getPeriod(). Some civs may be in the same "period" for their entire existence but others may have different periods. What a period represents can vary for civ to civ but for instance for China, the different dynasties can be different periods, or for Holy Roman it can be used to represent the transition between the Holy Roman Empire and Austria etc. I chose "period" as a name for this concept because it is broad enough to encapsulate whatever specific use a civ can get from the concept.

This isn't only relevant for city names, but also dynamic civ names, leader selection, and other things like capital relocation or changed core and stability areas. Right now, in all these parts of the code the same checks are repeated multiple times, and there is potential for accidental discrepancies that would lead to some inconsistent combinations (I am pretty sure this already happens). With this instead, the period would be determined in one part of the code and the all the others could use it to figure out civ names, city names etc. It will also supercede the "reborn" property that is currently used to (badly) implement changed core areas and the like. Here the problem is that there are only two options for a civ (before and after core area change) instead of multiple changes, if necessary. Not to mention that the rebirth mechanic is supposed to be phased out soon as well.

I love this! In general this will really give a new lease of life to certain civ's city lists that loses the rigidness of arbitrary eras.

Anyway I've added a new version in the post reflecting all the changes I've mentioned here in the past couple of days and indeed this post. Note though that Egypt's a bit borked. I'm still working on that one.
 
Last edited:
Yes! There's plenty really, I just decided to avoid including them in the first release because it would take a while to suss out. I mean I didn't mention this before, but of course Egypt has it already implemented when they are reborn with Islam - if they're not reborn with Islam they stick to their old names, which is why I've been trying to keep them Coptic, though I think I might have to split off Coptic into a whole new language atm.

Some other examples that come to mind are Indonesian cities becoming Islamic representing the shift from old Indonesian kingdoms to Majapahit, potentially using Christianity to un-Norse the Viking city names (though you're arguably playing a little fast and loose with the timeline there) or Islam replacing Zoroastrianism being the catalyst for Arabic replacing ancient Persian (well, Farsi rather than Arabic when I get round to implementing it). I'm sure there are a few one off examples that I'm not thinking of right now too.
Oh great, all of them are cool.

This is largely the case already - eg if you found Shurparaka and never lose it it will never become Mumbai. Really it's easier to see what's not obeying those rules, as it'll only be where I added a city that relocates by era. In the cases where this happens, it's usually because the city that eclipsed was it explicitly founded under native Indian rule, not Mughal or colonial, so it felt strange to have it change name only when conquered.

Let me have a look through now to see if I can see all the Indian cities that would relocate even if you never conceded them, and cut a few down in the process... Not including Sri Lanka, which is admittedly a bit haywire at the moment, but to be honest I've been using that, Taiwan and Armenia as experiments for a more hands-on approach, so they'll almost definitely be stripped back at some point.

Spoiler :
In the Medi era, Chandrapura to Govapuri (which are very very nearby each other, both in the small state of Goa), and Indraprastha to Dilli (disputed if they're the same tile, obviously already present in DoC).

In the Renaissance there are a fair few more: Ahichchhatra to Bareli (that one could probably go, tbf - it already defaults to it when lost to independents, so I think I'll excise that one from the eras list), Chittorgarh to Udaipur (reflects a very definitive shifting of the regional capital by Udai Singh II, who gave his name to the city, which led to it replacing Chittorgarh as the local centre), Mainaguri to Koch Bihar (not much to that one except one city dwindling and another becoming prominent), Pravapura to Nagpur (as with Ahichchhatra, I think worth getting rid off this one as almost all foreign powers will replace it with Nagpur - even if that's not necessarily accurate as to when one city became less important than the other), Sirpur to Rayapur/Raipur (reflecting how Sirpur was likely destroyed in an earthquake and thereafter replaced by Raipur as the main city of the region), Talakadi to Bengaluru (could restrict this to being conquered again, but it's annoying when it was definitively founded by the Vijayanagara Empire), Tamralipta to Karnasuvarna (could be lost if we like the idea of holding on to Tamralipta for all of history, as ahistorical as it is of course, though it is currently the only way Karnasuvarna can appear on the map), Vengipuram to Bezavada/Vijayawada (this one can probably go though).

In Industrial we get Debal to Kolachi (I'm fairly confident that one should stay, and depending on where you think Debal was it's essentially a rename anyway), Ratnapura/Ratanpur to Bilaspur (the power centre shifted under Maratha rule, so not really sure how you'd reflect that without an era-defined change), Srirangapatna to Mahisuru (it feels odd to not have India be able to have Mysore of their own accord to me, but given when independent it can change to Mysore anyway I think I'll cut this for now), and Vizhinjam to Thiruvananthapuram (don't really want to change this one, to be honest).

In the modern era we just get Govapuri to Panaji and Katak to Bhubaneswara (both simply reflecting new state capitals... though actually if you never lose any cities you'll forever keep Tosali, not Katak, so discount that one). All in all, it might seem like a lot, but once I've cut the ones I mentioned there aren't really that many at all given how big India is - you'd probably only have one of these at most affecting you in a given game. Note that there are a few that look like they *should* be relocations but are actually just radically new names for existing cities... Deogarh to Uch, Saketa to Ayodhya, Kashtpur to Multan to give just three examples.


Yeah I agree with this. I really tried to let the element of chance and dynamicism infect the renames as much as I can with the toolset I had, but I'm simply not a good enough coder to come up with all new mechanics of my own. Some of the things that work best in the current version are the two distinct independent languages allowing certain tiles to drift into different directions, as well as the propensity for certain flips to completely alter a tile's history (most often seen with colonial powers - in general if you fight off colonial powers you'll never be besmirched with their cities... at least in the Old World, as the New World America spawns still have the awkwardness of being set to the languages of OTL).
Alright, I think I agree with most of what you write here. This gives me a lot to take into account when it comes to improving/extending the code.

Interesting you say that, as I've not seen England found York once in my recent run of tests... Plymouth, Newcastle and Edinburgh all round, occasionally veering into Bristol instead of Plymouth. And I think the general player strat is to go for Southampton (well, Portsmouth in my version) and Newcastle. Not quite as rigid as China, mind.
Speaking of, have you included Winchester? It was the capital of England for some time before the Norman conquest after all.

*whistles and quietly sweeps the Monaco identifier under the rug*
Just kidding, I would actually love to see it as a rare city name for its tile. I just hate basically everything about the city in real life.
 
So another thing I had been thinking about are the independent languages. It's a cool idea for more diversity, but also it seems like just the next best thing in place of a dedicated mechanic.

It seems the main purpose of it is to introduce some randomness into which "native" city name is chosen for a city (and by native I mean a language of the local population that is not necessarily the language of an actual civ in the game). So this could instead be solved by randomly choosing a name from a list of possible names.

Secondly, what do you think about making all of these local languages actual languages instead? Too much overhead? I have been thinking after some of your commentary that this might be useful because you could have code to select the language based on region, era, religion etc. to avoid languages cropping up too early for example. I'm not sure if it's worth it though.
 
Yes, Winchester is in England's city map and relocates to as most of England's city list does in the Industrial era, to Southampton.

When it comes to individual languages... in a perfect world, great, but a lot of the languages are literally used for one city and no others (take Milanese for instance). So maybe it's worth taking it on a case by case basis, with some unique languages like Tatar (which would only appear in places that Mongols or Turks had controlled at some point?) or Egyptian Coptic (limited to independent or Egyptian cities when Christian). It's possibly getting a little too precious with it when the default languages themselves already can defy the timeline - after all, there's no reason French or Spanish as we know it would exist in a world where Carthage conquered Europe.

After a busy few weeks I might have some time to work on the big map version now. Is there an Excel file or an album of screenshots of the big map anywhere?
 
Last edited:
No, but actually I had been thinking about making some screenshots. Sometimes I wanna think about the new map and it bothers me that it requires launching up the mod.
 
I've begun to translate CNM+ to the big map, starting by just mapping out the cities from my current version onto the spreadsheet version of big map. You can see my progress here! Feel free to leave comments on there, although I have only just started (and might well break for Christmas now). It's definitely proving easier to place cities on this map, so kudos to everyone who worked on it. First slight oddity I've noticed is Egypt's capital Waset/Luxor is a coastal city on this map, at least if you place cities according to their location in relation to the Nile (and you don't have much of a choice in Egypt).
 
Buzzbuzzbuzz!

Took a long break from this obviously for many reasons too numerous and boring to explain. But I'm happy to announce I'm resuming working on this project again!

So first, 1.17. I noticed a few months ago that the modmodmod was no longer compatible with the current release owing to a reformatting of the way in which Civs worked. Priority was just to get it working again... but I thought hell, while I'm here, I'll do some fixes that had long been annoying me. So I'm happy to release a new updated CNM++, fully compatible and tested with 1.17, and almost certainly compatible with the "small map" github version too, as that doesn't look to have changed since 1.17.

This features almost* everything the original had including:

  • Vastly expanded languages, with almost total translations for global languages and strong regional support for less attested ones. See the world rendered in Pinyin as you storm through Eurasia as China.
  • Fully revised city maps, with an emphasis on historicity. No more Kolkata in the Bronze Age, and much more difficult (though never impossible) to keep Babylonian cities in the Atomic.
  • Two brand new independent languages - almost every city on the map will revert to a local name when declaring independence or being overrun by barbarians. With two languages in play, even wars between independents can see cities change names, as the Sámi and Swedes wrestle over Scandinavia, or Ternate and Tidore jostle for global relevance.
  • Dynamic city pathing. Many regions have had multiple major cities throughout history. Now this is represented ingame, as the heart of Armenia can swap between Artashat, Dvin, Ani or Yerevan through conquest and independence. You'll never see the same map twice.
  • Much more historical renaming. 5000 years is a long time, and names fall out of fashion. Just ask China, whose cities seem to get a rebrand every dynasty. While the mod doesn't go *quite* that in-depth, you'll still see more examples of cities shifting over time, whether through linguistic drift or forced renaming. Likewise, adopting Communism will now see a much more thorough rebrand for the Soviets, as well as a handful of other new city names for other historically red nations.

As for what's new...

  • The Tamils are finally free of the influence of their northern neighbours, with a fully realized Tamil language (with a little Kannada, Malayalam and Telugu thrown in as a treat). Conquer India, Indonesia and beyond with a new Dravidian flair.
  • Persian and Arabic may share a script, but they're completely different languages. Now, when coming back as the Safavids, enjoy a fully Farsi flavour when uniting the Near East. With New Persian spun off, Arabia benefits too, with a more accurate city map and language support for what was once the eastern frontiers of the Abbasid Caliphate.
  • A little rejig was in order for certain city maps - while more geographically accurate, the AI wasn't to know that a certain tile now represented, say, Sanchi and not Ujjain. Now historical cities will appear a little more often when the AI are in control. (But there is nothing I can do about Mali's capital. That tile is not Djenné; it's not even remotely near Djenné. I would mind more if Djenné were actually the historic capital of the Malinese Empire)
  • Updated the 600AD and 1700AD scenarios to better reflect history (only city names are changed, not locations).
  • A long list of random bits and bobs that had been playing on my mind when running games.

To install, download the following files. Then:

  • Convert the Barbs and CityNameManager files into .py files (just rename the extension from .txt to .py), and replace the files of the same name in /Assets/Python in your DoC mod folder.
  • Simply replace the RFC_600AD and RFC_1700AD .txt files (no need to convert) in the /PrivateMaps folder.

As for what's next... well, the big map cometh, and now I've tied up loose ends with 1.17 I'll be getting to work on that immediately. It'll be a huge project, but as soon as I have a version that's at least playable, I'll be throwing it on the big map github. So stay tuned for that.

Any feedback, comments, praise or complaints welcome. Whether you tried it out previously or you're giving it a look for the first time, I hope you enjoy! :)

* I have yet to figure out how to get the religious renaming to work again. I don't actually know how to code python so everything slightly complicated is a case of me throwing what coding knowledge I do have at the wall until it sticks, and for some reason I just can't get the formatting for that down :badcomp:
 

Attachments

  • Barbs.txt
    22.5 KB · Views: 30
  • RFC_600AD.txt
    45.6 KB · Views: 25
  • RFC_1700AD.txt
    214.6 KB · Views: 23
  • CityNameManager.txt
    4.1 MB · Views: 35
Last edited:
Top Bottom