CityNameManager+ Release

LacsiraxAriscal

Below Settler
Joined
Jan 31, 2010
Messages
382
Location
York and Manchester (UK)
Hello everyone. Time to finally share what I've been working on for way way too long. I know I said I'd stream today in another thread, but to be honest I've just had one of those days, so I'll stream a little more some other time.

I'm proud to announce the CityNameManager+ release for the "small" map version of Dawn of Civilization. This is in essence a full rewrite of the file that attributes names to newly founded cities and also manages their renames (when conquered, when eras pass, or when other events occur). This is a wide-ranging redo that both completely revamps each civ's city list to be more geographically and historically accurate, and adds far more rename data than you could ever dream of. I've made a full write-up detailing the ethos behind the changes to each language here. But I'll summarise some of the more interesting changes in this post.

The most notable change is the rewrite of city lists. I've done at least minor alterations to every single city list in the game, but many have been completely overhauled. My two main priorities were: to afford as much attention to non-European city lists as had been taken to European ones, and to add a greater level of dynamicism to city lists with regards to historical changes in main urban centres. On the former front, that meant a lot of research went into ancient Indian kingdoms and their capitals, the major settlements of empires like the Songhai, Khmer and Indonesian dynasties, obscure central African proto-nations, and much more. I'm now confident that every civilization has a city list that better represents their history. The ones to receive the biggest overhauls are: Indian, Tibetan, Greek, Ethiopian, Khmer, Indonesian, Malian, Quechua/Inca, Mongolian, Aztec, Turkish (particularly in the Turkic area), Thai and Congolese.

And history takes us onto that other point - ever get tired of seeing a Classical Indian empire found Kolkata, or spawning as Japan to see Shanghai and Qingdao as the nearest Chinese cities? Well no more, as modern cities will no longer appear until an appropriate era or event has occurred.* Instead, cities that defined most of their region's history - like Suzhou or Tamralipta - take precedence. You might find the city is replaced with its modern counterpart when you start to hit later eras, or for many cities you might find you can hold onto your ancient powerhouse for all of history if you play your cards right. Keep control of Sopara as India and continue to watch the city thrive - lose it to England or Portugal and watch as they lose interest in your settlement and replace it with some backwater called "Bombay" instead.

That brings us neatly onto rename data. I've tried to add, essentially, as much rename data as I could find. For some civs, this means almost every old world city - conquer Eurasia as China or Japan and there won't be many cities you annex that don't get translated into your language. The languages that received a medium-to-massive size of rename data are: Indian/Tamil, Chinese, Greek, Latin, Japanese, Ethiopian, Korean, Viking, Arabic, Khmer, Spanish, French, English, German, Russian, Dutch, Polish, Portuguese, Italian, Mongolian, Turkish and Thai. Every list got a few new additions at least (except poor Harappan). Oh, and one more thing...

There are two brand new languages added to the game: Independent and IndependentAlt. That means when a city falls to Independents, Natives or Barbarians, you can expect it to adopt a brand new name. Maybe it'll be a name you're used to - Paris will always be Paris - but often you'll find the city takes a name unique to its own culture. Rather than being a blanket grey omniciv, which you can happily send a few knights in to annex, you'll have to reckon with the fact you're crushing the dreams of a distinct culture that's just trying to forge their own little nation. It was a lot of fun deep-diving into regional languages to source a lot of these names - Europe in particular pulls from all the regional languages that dominated prior to nationalism, while Chinese cities could pull from the names adopted when a minor breakaway state picked a certain city as their capital.

And that's not all - these two independent languages, which are essentially randomised (one is assigned to each of the two independent civs, with the natives and barbarians sharing the first independent language) give an increased level of dynamism to the city lists. An independent city in Slovakia might take a Slovak name, or a Hungarian one - and the varieties of languages independent cities can pull from also changes over time. But that's not all: cities might also shift to a different power centre on the same tile, often permanently. As an example of the amount of dynamism that can happen in just one tile, let's take Armenia. Found Artaxata as Rome, and see the Armenians move their capital to Armavir when they declare independence. Arabia then conquer the territory and establish their power centre in Dvin. After a brief Armenian uprising moves the capital to Ani, Russia finally exert their influence to shift the power centre to Erivan (Yerevan), with the capital remaining there forever after. Or, in another universe, Armenia keep their capital in Artaxata forever - hopefully, you'll never see the same map twice!

A few small caveats. Firstly, I do not speak every single language featured in the game. My transliteration of certain languages, particularly Korean, Farsi/Urdu, Thai, Khmer, Burmese, Tamil, Tibetan and Arabic, may leave something to be desired. If anyone out there is fluent in one or more of these languages I'd love to work further with you on improving the city names if you consider my transliterations to not be up to scratch.

This release is also focused mostly on the Old World, which here means Eurasia-Africa. I've not yet decided on the best way to treat the Americas, though I did still rewrite the three native civs' city lists and add some extra rename data here and there. However, in the future, I'd like to study this a little deeper.

And finally, this is not compatible with the WIP "big map" version of DoC - but making a version that is compatible is my next priority,

To install the expansion, simply convert these two files to .py files (for some godforsaken reason, I can't upload them to CFC as .py) and replace the pre-existing files of the same name with these ones (you should find them in RFC Dawn of Civilization/Assets/Python). The Barbs file simply changes some of the Independent city spawn names. Leoreth expressed interest in incorporating the expansion into the core DoC package, but I imagine if he's still interested, he probably wants to at least test them a bit first - and I figured in the mean time anyone interested in giving it a go can help as well. If you do notice anything awry, please let me know! It's a huge rewrite, and while after a fair bit of testing I'm certain that the majority of things are functioning well, there will certainly be quirks and oddities I haven't spotted.

Thanks for reading, let me know how you get on and if there are any problems. I'll be in France until Tuesday, so won't be able to update the file at all before then, but will try to keep up with replies.

* There are a few exceptions - I can't stop Japan settling Hokkaido before the modern era, and they simply didn't settle any cities beyond the very south of the island until very late. There are other such example scattered around the map, but hopefully not many.

EDIT 1: Minor patch to make 600 AD and 1700 AD scenarios compatible with the expansion. Several of the cities in this scenario contradict the ethos of historicity, namely India in 600 AD, but I don't currently plan to edit these. However, I would recommend when playing the 1700 AD scenario to head to Worldbuilder and change the name of the Spanish city in Yucatan from Ciudad Real to Valladolid, as I use the name Ciudad Real to represent San Cristobal de las Casas in Chiapas.
 

Attachments

  • Barbs.txt
    27.8 KB · Views: 143
  • CityNameManager.txt
    3.9 MB · Views: 137
Last edited:
Thank you so much again for doing this and for this great write up. This is not only incredible in itself, but also prompted me to think more about how to support what you are doing in the underlying code. But I haven't gotten a chance to look into your implementation yet.

As far as incorporating this goes, I didn't expect to make extensive changes to anything related to the current map, but this is definitely very attractive. To that end, it would definitely help if it is playtested by multiple people already. As you may have noticed, I am currently not very active development wise, and my time is currently spent on investigating multiple causes for crashes, so this is not my highest priority. However once this is well tested and I had the chance to review it, I see no reason not to include it.

Also I hope that everyone is sharing screenshots from this.
 
Thanks for the kind words Leoreth, really appreciated! As I've said elsewhere, the vast majority of this will be portable to the big map, with the only real changes to be made being adapting it to the single city map format, giving extra city names and associated rename data for spots that were unavailable on the small map, and separating out some of the rename data that can shift cities between two different locations that occupy the same tile on the smaller map but a different one on the bigger map (one example being that I assume Zanzibar has its own tile on this map, where at the moment I've had Dar es Salaam and Zanzibar shifting depending on who controls the area). The bread and butter of the work (the expansion of rename data, inclusion of independent languages and historical revisions) should be directly transferable.

I've also finished summarising my changes.
 
I did a check of the Dutch translations and I am really impressed. I learned many new (old) Dutch exonyms I didn't know (old) Dutch even had exonyms for. I have 2 minor remarks.

1. The (old) Dutch name for Carthage is Karthago (with a K instead of a C). Or alternatively Karthaag. I really like Karthaag, because that sounds like a real Dutch exonym, whereas Karthago just sounds like the Dutch spelling of the name.
(I would use the modern spelling Carthago these days, but I think the ones with a K give more flavour.)

2. There are 2 translations of "Frederiksstad" in the file. One with a single s and one with double s. Is there a reason for this?
 
This post reminded me about a pull request I made to the DoC repository almost two years ago, where I incorporated most of the suggested edits to the CityNameManager file. I'll be revisiting it and suggest revisions of my own.

Some initial comments:
1. Why did the generalized Latin names in the New World remain?
2. There's only one tile for the island named Nan Madol in the Polynesian CNM, but the files display two spots where the name can be used. For other languages, there are two separate names (Palikir/Kolonia and Majuro), and the tile where Majuro is supposed to be used is a coast tile.
 
Thanks for the suggestions you two, I’ll be back from France on Tuesday and will have a look at everything you’ve said (picked up a few things on my last test run too - I’m not sure I’ll ever finish tweaking it tbh). Re the Latin new world names, mainly because they weren’t hurting anyone. Rome might well found a city in eg Ukraine in ordinary gameplay, and it would be annoying to see Scythia Asiatica or something exist there for centuries. But if Rome are settling in America... well, it would be the player who’s playing as them, not AI, and they can really name the city whatever they want! And in any case I just think it’s a bit less harmful to the game as a whole as you’d likely be settling America shortly before winnng. Might still get rid of them but not sure it’s necessary, basically.
 
Back again! Thanks for the replies as I say, I've plugged in Karthaag and fixed the Frederiksstad duplication - if anyone else sees any duplicates like that in the rename data let me know, it's probably unintentional.

The Polynesia thing is a problem with the map, and I'd rather not touch the map for now given the whole thing's being rehauled anyway - when it comes to making a big map version I'll be bearing in mind the various different Micronesian centres.

Anyway rather than do another stream I ran another quick test and put together a little highlights album, which you can find here: https://aar.li/a/g3kbx4

And there's also a new update of the mod to accompany it, which I'll edit into the original post now.
 
Back again! Thanks for the replies as I say, I've plugged in Karthaag and fixed the Frederiksstad duplication - if anyone else sees any duplicates like that in the rename data let me know, it's probably unintentional.

The Polynesia thing is a problem with the map, and I'd rather not touch the map for now given the whole thing's being rehauled anyway - when it comes to making a big map version I'll be bearing in mind the various different Micronesian centres.

Anyway rather than do another stream I ran another quick test and put together a little highlights album, which you can find here: https://aar.li/a/g3kbx4

And there's also a new update of the mod to accompany it, which I'll edit into the original post now.

It would actually be great if you could do more pictures/albums, I personally much prefer them over videos/streams.

Also (to directly reference something in your album) I don't know if you've found it already, but I did come across "Ninii" as the Ancient Egyptian name for Nineveh.
 
That was great to see and really helpful when thinking about your changes. I have lots of thoughts, both feedback for what you've done and also ideas for what I could do in the future to help with this, and a lot of questions. Unfortunately I can't write them in the level of detail that would be appropriate for this right now (I'm on vacation), maybe a bit later though, or in parts over time. Note that I also didn't have the opportunity to look into your code yet. I am really excited about it though!
 
DC123456789, thanks for bringing that to my attention. I see a few tertiary sources pointing to it now though no idea how reliable - that's probably true of most sources for things in the ancient Near East, eh? I'll throw it in, as well as a Persian one I missed. In general Egyptian could probably be improved, I might have a look for some more exonyms tomorrow.

Enjoy your holiday Leoreth! Whereabouts you kicking back? Look forward to hearing your thoughts and queries anyway :)
 
I'm in Sevilla catching the last warm sun rays of Europe! Coincidentally I was in Italica today, the abandoned Roman settlement a bit off the city (ancestral home of Trajan and Hadrian), so city relocations were on my mind.
 
How strange, I was just thinking of booking a holiday to Seville myself! Let me know if it's worth seeing (I think I already know the answer). I managed to get to Cordoba and Granada last year on account of my friend doing a term abroad in Granada, but didn't quite make it to Seville. Andalucia is a big old state, and Granada's train station was for some reason completely non-operational that summer, so it was buses or nothing. Still, absolutely loved what I did see.

Weirdly enough Italica shifting to Hispalis is something I've already included in the CNM+ mod by the looks of things, though I think I'm gonna go a little bit more hardcore and add it into Rome's city data - after all, they didn't actually found Hispalis, Carthage did, so it makes sense if they settle Italica instead and only get Hispalis if they conquer the area off Carthage. Not sure which was more important to Rome throughout history, I think I remember seeing that Hispalis was the third most populous city of the Empire at some point. Anyway at the moment Italica's only languishing in the Byzantine city list for some reason, which does seem a waste given I can't see them ever getting to found it.

Anyway here's another photo album: https://aar.li/a/d4g1z5 Accompanying update will come later, still bugged by the best way to address Crimea as I don't really want it turning Tatar in the Classical era, and I'm still trying to get my head around what's happening in Egypt with the Coptic names.
 
How strange, I was just thinking of booking a holiday to Seville myself! Let me know if it's worth seeing (I think I already know the answer). I managed to get to Cordoba and Granada last year on account of my friend doing a term abroad in Granada, but didn't quite make it to Seville. Andalucia is a big old state, and Granada's train station was for some reason completely non-operational that summer, so it was buses or nothing. Still, absolutely loved what I did see.

Weirdly enough Italica shifting to Hispalis is something I've already included in the CNM+ mod by the looks of things, though I think I'm gonna go a little bit more hardcore and add it into Rome's city data - after all, they didn't actually found Hispalis, Carthage did, so it makes sense if they settle Italica instead and only get Hispalis if they conquer the area off Carthage. Not sure which was more important to Rome throughout history, I think I remember seeing that Hispalis was the third most populous city of the Empire at some point. Anyway at the moment Italica's only languishing in the Byzantine city list for some reason, which does seem a waste given I can't see them ever getting to found it.

Anyway here's another photo album: https://aar.li/a/d4g1z5 Accompanying update will come later, still bugged by the best way to address Crimea as I don't really want it turning Tatar in the Classical era, and I'm still trying to get my head around what's happening in Egypt with the Coptic names.
For Coimbra, IIRC that's the tile of Edo/Benin in Merjin's Nigerian Civ, if that helps.
 
I would say it's definitely worth it! Not sure how you like to spend your holidays, I'm mostly an enjoy the sunlight and see some historical stuff kind of guy (surprise) when I'm traveling on my own. I'd say you can get at least 4-5 good days out of the city with that. The Alcazar is worth an entire day alone. And the city is really great in terms of food too. I've been to Cordoba too for a day, and it's nothing like that; Cordoba seems to be just the Mezquita-Cathedral and lots of those annoying touristy shops centered around them, I was pretty much done with the city after seeing the main attraction. Seville on the other hand is just constantly busy and it feels like a good mix of tourists and the actual people living there and never like you're sequestered into the tourist zone. Would have definitely done a day in Cadiz too if I had more time. Too bad the trains didn't work for you, I found the Spanish railway system the most organised one I've ever used. After I figured out how to get digital tickets on my phone without a Spanish phone number that is.

Regarding Italica, it's frustrating to never get like a proper positioning into the historical context at those excavation sites but my understanding is that it's always been subordinate to Hispalis, which was very important to the Guadalquivir trade even back then. Italica's significance comes mostly from the fact that it was Trajan and Hadrian's hometown and they put a lot of money into it (that's why it has an actual large amphitheatre to be excavated). It seems like it was more an upperclass residence town than a full fledged city and it seems to have been important only in the 100-200s AD while Hispalis has an older and more continuous history. Considering that Phoenicia is more likely to found a city there regardless, it might still be a fair rule to let Rome found Italica and Phoenicia found Hisbaal, and then fold Italica back into the Hispalis rename chain after the Roman collapse. The current Spanish town of Santiponce at the site seems to be basically a direct successor of Italica though, so if you really want it could be another name under some specific conditions.
 
1SDAN, yeah it's around Edo (which I've had to render as Edo-Benin for the record... not sure how Merjin does it to avoid the issue with Edo, Japan), or Calabar or even the far west of Cameroon. It's just I can't find any Portuguese settlement there... Not sure why it's in their settler map, I guess to represent Sao Tome but that's a) an island and b) a fair bit further south. I may well have missed something though.

Interesting you found Cordoba too touristy even in winter - I went in peak tourist season and god it was packed with people. I did love the Mezquita and I think the Alcazar looked pretty cool but I only had a few hours so didn't have time for that. I will say the Mudejar church was gorgeous too, and if you headed way off the beaten track over to the more Roman side there was a really pretty square and the remains of a temple. Still preferred Granada infinitely mind - sounds like Seville is more similar to Granada anyway.

I think having it as you say and folding back into Hispalis is the best option, not sure I want a Spanish Santiponce (and on a rudimentary glance I can't find the Arabic name anyway).
 
Yeah it's not too touristy in the amount of people being there but that rather that everything in the old town was just geared towards tourists, like every storefront being gimmicky souvenirs and so on. It feels very artificial. With Alcazar I meant the Royal Alcazar in Seville though, the one in Cordoba seemed kinda underwhelming by comparison and it was closed by the time I made it there. 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. Also one good thing I have to say about Cordoba is that I had the best food there of the whole week.
 
1SDAN, yeah it's around Edo (which I've had to render as Edo-Benin for the record... not sure how Merjin does it to avoid the issue with Edo, Japan)

For the renaming, I used a similiar mechanic that avoids the British York from being renamed. I didn't encounter any other problems that there are 2 cities with the same name.

Code:
def onTechAcquired(iCiv):
    pCiv = gc.getPlayer(iCiv)
    lCities = utils.getCityList(iCiv)
   
    iEra = pCiv.getCurrentEra()
   
    for iEra in range(pCiv.getCurrentEra()+1):
        for city in lCities:
            sIdentifier = getIdentifier(city.getName())
            if not sIdentifier: continue
           
            if sIdentifier == 'York' and city.getRegionID() == rBritain: continue # do not rename English York
       
            sNewIdentifier = getEraRename(city.getName(), iEra)
            if not sNewIdentifier: continue
           
            # Nigerian and Japanese Edo
            if sIdentifier == 'Edo':
                if city.getRegionID() == rWestAfrica and sNewIdentifier == 'Toukyou': continue
                if city.getRegionID() == rJapan and sNewIdentifier == 'Benin': continue
           
            sNewName = getRenameName(iCiv, sNewIdentifier)
            if sNewName: city.setName(sNewName, False)
 
Last edited:
For the renaming, I used a similiar mechanic that avoids the British York from being renamed. I didn't encounter any other problems that there are 2 cities with the same name.
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.
 
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.
Considering one is in Iberia and the other in Northwest Africa, most likely.
 
Top Bottom