As I understand it the core concepts for a Jotnar civilisation are their lower birth rates and more powerful units. The two concepts are linked because the low birth rate implies that there are fewer of those powerful units.
Originally the small population was handled by limiting their cities to just one ring. This leads to a tightly packed city placement scheme which doesn't feel giantish (I'm assuming here, not having really played Jotnar). The proposed Steading improvement will place a similar control on the Jotnar population but will also give a sense that they live at a larger scale as their cities take up more tiles than those of any other civ. I like that improvement approach.
Originally, the jotnar staedding (city) was limited to 10 population and one ring, they didn't had settler, instead they could sacrifice a level 5 fort commander to build a new city, a rework has been done for rise from erebus. The rework removed the population limit, give them acess to settler, made every of their city plot radius to 3. Changed their population food usage to 3. Giving a more giant feel to their city but apparently impossible to balance and getting away from the original lore (each city was supposed to represent a familly). Also, It felt like a mix between Kuriokates, archos and grigori mechanics.
My changes will make their mechanics unique but will stay far from the original lore (that should already had be rewritten with the rework)
Can the player control their placement or is it just handled by python?
Is the number of giant units linked to the population or the number of these improvements, either through a spawning or hard limit function?
Can the AI handle it or is it to be a player only civ?
Will a human player be left with interesting decisions to make that will effect how well the civ performs?
I think it gives the player more control and interest if they can build the Steading improvements. I would limit where these can be built;
Must be touching a Jotnar city or another Steading (to reflect that they are in truth extensions of the city rather than completely separate entities).
Can only be built in certain terrains/features with a pre-requisite tech.
I'd allow city population to grow to a certain level without Steadings. To grow beyond this requires Steadings. The player can either position these optimally by having workers build them or when a population would have increased, a new Steading improvement is placed using python and the city doesn't gain the population that time. A player who plans ahead and builds the Steadings will get constant growth while one who doesn't will grow at a slower rate but will still grow.
I intended to handle the improvement placement entirely by pyton but letting the player control the growth to some extend would be nice. For now the only control they would had is the last spawn priority (spawn on road). The way you propose would be harder to code for little benefit but I could give the jotnar worker an ability to plan expansion via another improvement (Jotnar district foundation) requiring the Construction technology and add it higher on the placement priority list.
I'd like for the AI to be able to use the civ correctly but I have no idea if they'll be able to without altering the dll. I may learn to do it if I feel they need it. But a period where they're player only may occur.
Allowing the basic giant to be built and assigning a type (hill, frost, triton, etc) randomly on completion could work fine. I'd weight the chances of any particular type of giant sub species based on the tiles (terrain/features) where cities and Steadings have been built. This retains some chance but the player can influence it if he wants to focus on particular types or have a mix of giants.
There isn't only giants in jotnar city. According to the wiki the jotnar familly are composed of multiple races held together by traditions. I've read goblin, troll, triton, giant. Some units description mention orc but it's probably a copy of another units entry. I would add more if I think about some that would fit within their city, maybe give Uxol's unit a chance to be halfbreed.
I want to let multiple thing alter the outcome and the tile a city can work is at the top of my list making each district give more meaning to their tile is a pretty neat idea.
I don't think that there's a python function to count how many of a particular type of improvement a player has and there definitely isn't a shortcut function to tell you how many of each improvement you have on each terrain type. To minimise the calculation work on any turn I suggest that when a Jotnar city is founded or a Staeding is built that a non-tradable resource (Hill Clan, Triton Clan, etc) is created on the tile. There are functions to tell how many of a given type of resource a civ has so using this would allow simpler calculation functions. It would mean that any bonuses originally on the tiles where a city/Steading is built would be lost but as the player can control where these go, he should only lose resources by choice or negligence.
The district mechanic hurt the jotnar enough without making their city remove existing ressources. I don't know if there's a shortcut or no but since the calculation will only be done when the unit spawn or when the player want to see the probabilities for a specific unit in a specific city the calculation will not slow the game when it isn't needed.
___________________
One of the main problem I have currently is that every jotnar unit need multiple tech in order to get and most of their units aren't replacing anything.
So I'll have to adapt a lot if I don't want to destroy what's already created.
Edit: isn't too bad, check next post
Easy unit to adapt look like Fyrd needing bronze working and cartography. So I would probably never give giant to axemen unless the civilization also have the cartography technology.
Harder unit to adapt would be like hurler, archer that only need only masonry. If I don't want to alter the jotnar too much I could give acess to archer when the race have either masonry or archery. Making one would only be able to give a goblin rockthrower or a hurler if they only have masonry. Or a troll, triton or goblin archer if they only have archery. A simpler way would be to spawn giant archer (hurler) only if the civilization have masonry
Or, I could remove almost every prerequiste and rework most the unit to fit with the normal ones
I like the fact that the jotnar need multiple tech in order to have a chance to spawn giant so I will probably try to keep the concept