[BNW] Combat Puzzles

vadalaz

Emperor
GOTM Staff
Joined
Sep 15, 2014
Messages
1,503
This thread is a place where you can share a save file and ask for combat advice in your specific scenario. General advice on domination victory and tactics is also welcome, but concrete examples should be the focus here.

The first scenario was posted by @beetle in another thread:

"Save is Deity Sweden, T198. Last turn Vijayanagara fell. Expect many Indian units in the fog.

Please report back how long it takes you to capture Delhi, and your losses. I wouldn’t expect the number of opponent kills to vary much player-to-player, but I now I regret not keeping track of that. Please also report anything of particular note. For example, I caught a 4-charge GPr on T200.

This particular setup is about as straightforward as it gets. In the screenshot, near Vijayanagara, there are 4x well-promoted XB, 3x Caroleans, a Knight, a Calvary, a Cannon (Dynamite soon), and a Hakkapeliitta. At the top of the screen shot you can see Sigtuna and one more Carolean, but there are three others there. The only other units worth mentioning I think are another Knight UU and a Hakkapeliitta. Several more XB are stationed in cities, but they are too fragile at this point in the game. Feel free to borrow from Sejong or Nebuchadnezzar, to upgrade the two Knights sooner than later.

I didn’t take Delhi until T211, so 14 turns. I lost two Caroleans, but no other units. I feel like my run was just okay, but maybe it is better to kick off the conversation with a mediocre benchmark? One signifiant mistake I made was researching Steam Power before Dynamite."

Spoiler Screenshot :

It's also important to note that all these units have Altitude Training, the Carolean in Vijayanagara was upgraded from a Janissary, and Ninja used to be a Scout so he ignores terrain cost.

The save file of T198 is attached. I played from there and took Delhi on turn 204 without any losses. I deliberately didn't research Dynamite first to follow @beetle's tech path and ignored all aspects of the game except combat (had all cities build research and put all irrelevant units to sleep). Here's a walkthrough. Split into two posts as I couldn't upload all the images in one.

Spoiler T198-200 :
The general idea here is to attack Delhi from the east, as Gandhi can't flank from there.

Turn 198: Gold for upgrades: 5 Aluminium, 8 GPT <> 429 gold w/ Sejong; 2 Iron <> 90 gold w/ Neb.

Knight moves 1 tile SE, pillages the tile, moves back to the Bison tile, upgrades to Cavalry. Janissary-Carolean stationed in Vija moves out and kills the badly hurt Indian XB, healing 50 HP.

Two other Caroleans move SE. Cavalry from the far back kills XB in our lands. Hakka and GG move onto the forest tile SE. Range-Logistics-Accuracy III XBs move closer to Delhi and upgrade to Gatlings.

Spoiler End of T198 screen :
20210912082800_1.jpg

Turn 199:
Spoiler Beginning of T199 screen :
20210912083034_1.jpg
Spoiler Setting up :
20210912083318_1.jpg

The goal here is to kill the Muskets quickly and keep all our units in safe positions. Caroleans can deal a lot of damage but it's dangerous for them to move in without more intel on Gandhi's defenses, so they attack first and let ranged units and Cavalry finish off the Muskets. Middle-Musket has to die so that Jani-Carolean isn't zone-of-controlled and gets to punch West-Musket.

Hakka attacks XB. Cavalry finishes off XB. General moves west to give the bonus to other units.

Southmost Carolean slams into Musket. Ninja shoots that Musket, gets a lucky draw and finishes him off.

Middle Carolean slams into Musket. Gatling shoots that Musket. Barrage III XB finishes him off.

Jani-Carolean and Cavalry move adjacent to the last Indian Musket, Logistics XB moves in range of him as well. Carolean slams, XB shoots, Cavalry finishes off and retreats back one tile, pillages the tile.
Spoiler End of T199 :
20210912084405_1.jpg

Turn 200:
Spoiler Beginning of T200 :
20210912084543_1.jpg
Jani-Carolean moves one tile west first to give Cavalry a flanking bonus.

Promote South-Cavalry to double Medic. Both Cavalries slam into XBs. Southern one lives with 1 HP, northern one gets finished off by Logistics XB. Jani-Carolean uses its second move to get closer to Delhi. North-Cavalry stays in place to cover XB from a potential flanking mounted unit.

Hakka pillages Cotton and Mine. Units move in.

Spoiler End of T200 :
20210912085734_1.jpg
 

Attachments

  • Gustavus Adolphus_0198 AD-1380.Civ5Save
    1.9 MB · Views: 47
Last edited:
Spoiler T201-204 :
Turn 201:
Spoiler Beginning of T201 :

Gandhi moved a crossbow to the same spot, so we move a Hakka to give North-Cav a flanking bonus again and capture a GPr along the way, move the General as well for another combat bonus, slam North-Cav into XB and finish it off with Logistics XB.

General moves back to give Cannon its bonus. Cannon kills embarked Musket. South-Cav kills XB, moves in to pillage a tile. Caroleans move in, two of them slam into the city. Gatlings and XB get in range and start shooting the city as well.
Spoiler End of T201 :

Turn 202:
Spoiler Beginning of T202 :


Eastern Musket dies to 3 Gatling shots and 1 XB shot. Carolean pillages Wheat and moves SW to block the other Musket. Double Medic Cavalry moves adjacent to the hurt Carolean who pillages the Silk. Cannon moves in range of Delhi. Delhi takes 1 XB shot, 1 Gatling shot and 1 Deer-Carolean slam.

Forgot to take a screen of end of T202.

Turn 203:
Spoiler Beginning of T203 :

Gatling promotion - March. Eastern Musket takes 3 Gatling shots and 1 XB shot again. Deer-Carolean pillages and slams into Delhi again. Double Medic Cavalry pillages Dyes and moves back one tile to heal two Caroleans in the turn rollover. Hurt Carolean retreats one tile and pillages it. South Carolean pillages a farm and slams into Musket, the Musket lives with 2 HP. Ranged units that still have attacks left shoot Delhi. Northern XB moves one tile closer. Delhi's in the red.
Spoiler End of T203 :

Turn 204:
Spoiler Beginning of T204 :

Delhi gets 10 more combat strength, but it's too late. Ranged units shoot it, Carolean captures.
Spoiler End of T204 :
 
Last edited:
Very useful analysis. Something I immediately notice that is different from my play is the ratio of mêlée units to ranged units. A lot of meatshields for protection here, which is a lesson I no doubt need to take away.
 
Hi! Cool thread. I tried to see how I fare.

Spoiler :
Captured Bangalore (201), Delhi (202) and Mumbai (204) with no losses. Used up a great general for faster push but it turns out it isn't really needed. Used scientist for Dynamite.
Also captured prophet with 4 charges on t 200.
edit: wanted to upload final picture but for some reason I can't.
 
Last edited:
This is on deity? Interesting, I never really though Riflemen pushes would be viable
Looks like Delhi could be taken anyway, but it depends on how quick you want to do it
 
I appreciate that the thread is for a particular situation, or a specific problem, but there is a context to it. There are two things I note:

1. the units have a stack of promotions, so I assume they must have been farming experience somewhere.
2. the home cities are pretty big, despite taking Liberty instead of Tradition. I wonder how happiness has been managed.

Can you enlighten us on those aspects?
 
Just as I suspected, @vadalaz and @Tiberiu took half as many turns as I did!

Thank you @vadalaz for breaking this out into a separate thread, and for your generous turn-by-turn breakdown. I think this is exactly what @TheGuineaPig was asking for in that other recent thread.
the units have a stack of promotions, so I assume they must have been farming experience somewhere.
No farming per se, but it is mid-game. Caroleans get March for free. The unit named Adam is our starting Warrior and other than him, I think only one melee unit is above Level 3.

In my experience, a few well-promoted ranged units is essential to taking cities, and we have that here. Getting those ranged units well-promoted early enough is where I struggle!

I do think this shared file is as good a place to start this conversation as any. But this is very much an easy example. When Flight or Dynamite unlocks, the combat dynamic changes completely. It is earlier in the game when I struggle so against AI opponents with 10x my army value.

What I am hoping to (eventually) see in this thread is examples of taking cities with CB, Spear, and Horseman. But I think it is more instructive to first start with more straightforward situations.

I am also hoping to see examples of Rifles + (earlyish) Cannons, which is a combo that I have tried (and failed) to make work a few times.

In between those two scenarios, is taking cities with Longsword and XB. I actually feel like I have a handle on that phase of the game. (But I might be fooling myself there.)
the home cities are pretty big, despite taking Liberty instead of Tradition. I wonder how happiness has been managed.
In that regard, this game feels pretty typical to me, but the map is larger than usual, and we had the space to make Liberty work. For the most part, we only planted cities that got us a new lux, and we have been paying attention to WLtKD opportunities. Also, our opponents provided us good (and early) opportunities to acquire their faith buildings. Pinging @raider980 who might provide some insights as to how this game unfolded as compared to his usual Liberty runs.
 
Last edited:
Attachments are working again.

With a citadel I got Delhi on T201 with no casualties, although it does feel like a waste of a General, at least as Sweden.

20210912170011_1.jpg

Not shifting to the east this time, not focusing down the Muskets and just moving straight for Delhi instead. The key is to get the Cannon, Ninja-Gatling and two R+L XBs in position as quickly as possible (the citadelled road does help) and simply cover their flanks. Cavalries and Caroleans can attack the city as well.

The AI is very stupid and doesn't even attack Caroleans with its Muskets. Guess it doesn't like unfavorable damage trades with melee units, same as when you steal a worker with a spearman and the AI doesn't attack it with its warrior.
 
1. the units have a stack of promotions, so I assume they must have been farming experience somewhere.
2. the home cities are pretty big, despite taking Liberty instead of Tradition. I wonder how happiness has been managed.

Pinging @raider980 who might provide some insights as to how this game unfolded as compared to his usual Liberty runs.
For this game:
#1 question: We got attacked early by Pacal and then we fought two other wars (vs. Morocco and Assyria) so that's the main reason the units are so well promoted.
#2 question: At this point in the game we got first ideology and took two Order happiness policies so that's why our happiness is good now. How we managed it earlier, I don't quite remember. We are Sweden so we were able to get Mercantile CS's on our side fairly easily. Happiness is my bane in Civ 5, I hate how it is handled so I usually struggle with it in my own games.

Honestly, even though I'm playing in these succession games, half the time I don't know how we're doing as well as we are. (The other players are much better than me). I have learned a good deal though so it has been very educational as well as fun. I don't know if we did it in this game but one thing regarding happiness is I learned is the Tradition policy Aristocracy is very strong (+1 happiness for every 10 citizens in addition to the Wonder bonus) when going Liberty. I often open Tradition when Playing Liberty but never thought about taking Aristocracy later in the game also.

Regarding this example, I am playing T205-T215 from where beetle left off and I just captured Delhi on T212. I took one turns worth of shots at Delhi with the XB and they did almost no damage so I moved them back our territory to upgrade to Gats. Once I upgraded the canon to an Artillery and got the Logistics&Range promoted Gats in range, Delhi fell in three turns (it was already damaged a little). Some things mentioned above, which would lead to better capture times, that I know I fail to do in my campaigns are:
  • Correct positioning of units.
  • Flanking Bonus; I never think about that.
  • Using the GG bonus wisely, like moving him mid turn to cover other units. Half the time I forget to position him at all.
  • Citadels; I don't really use them.
  • The order of attack with the various units; I often am not sure the best order to use them.
Edit. Attached the screenshot after capturing Delhi. I am slightly worried about that Rifle in the lake but I don't think he should be able to cap it back by himself.
 

Attachments

  • T212 Delhi capture.jpg
    T212 Delhi capture.jpg
    270.3 KB · Views: 61
Last edited:
Gave it a try. Couldn´t quite match @vadalaz pace but I got Delhi one turn later (t202). I lost one Carolean in the process.
 

Attachments

  • GustavinDelhit202.jpg
    GustavinDelhit202.jpg
    303.2 KB · Views: 61
Dunno what I'm doing and what rules there are, but I managed to take Delhi T203. Lost one carolean but sacrifices have to be made

upload_2021-9-12_20-34-34.png

I can't put my picture in the same message, apparently

Moderator Action: Posts merged -- Browd
 
Last edited by a moderator:
Does anyone know for sure what determines which city new GGs spawn in? Is it random?

I've managed to take Delhi on turn 200 with a citadel and a Knight sacrifice but it's dicey. The very first attack you make spawns a new GG, and if he spawns in Stockholm, he'll get to Delhi in time to give units a combat bonus. It is possible to take Delhi even if the GG spawns somewhere else, but you need lots of high damage rolls.

Obviously I couldn't play like this in a blind playthrough, but I thought this might be interesting anyway. I didn't think it'd be possible to take Delhi on turn 200 when I first opened the T198 save. Video is sped up a bit, I left quick movement off for the turns and turned it on for the turn transitions.

Spoiler Turn actions :

Turn 198:
- (Not shown) Put irrelevant units to sleep, cities on Wealth to minimize prompts. Take loans for unit upgrades
- Hakka moves first to free the tile. Logistics Crossbow with no Range (basically the most useless one) steps in, finishes off Indian XB to remove zone of control. Cavalry and GG move in to give bonuses to Hakka, Hakka attacks
- Plant citadel, Knight can now move onto the Cotton and still have enough MPs to pillage and attack the XB.
- Healthy Caroleans move in, provide flanking bonuses. Hurt Janissary-Carolean moves in and one-shots an XB to heal up.
- Cannon moves onto the citadel tile, next turn it can move, setup and fire thanks to the road.
- Accuracy L+R Crossbow uses the road and upgrades into a Gatling. Plan for next turn is to get it on the tile west of Cotton which will be 1.67 MPs so it will be able to attack once
- Barrage L+R Crossbow moves onto the road and shoots an XB. Plan for the next turn is to get it on the citadel tile and shoot twice.
- L+R Scarcher moves to Vijaya. Next turn it can move on the hill SE of the Citadel and still have enough MP to fire a shot thanks to Altitude Training and scout movement
- Mandekalu doesn't really matter but it can get to Delhi in time so might as well move it in
- General has spawned too far from the action so he sleeps. If you want the GG to spawn in Stockholm, attack with Hakka as your first move.

Turn 199:

- Hakka kills XB and pillages a farm
- Cavalry does good damage to a Musket, Janissary-Carolean pillages Silk and kills the Musket to heal up
- Barrage XB shoots Musket on the Deer twice, Shock Carolean provides flanking bonus, Drill Carolean kills the Musket. In my playthrough this Musket took a lot of damage from Janissary-Carolean on Gandhi's turn, so 2 shots from the XB are enough here, but you might need another one from Ninja
- Other ranged units shoot the city, Shock Carolean attacks the city as well
- Knight gets Medic II to heal Caroleans one last time. Moves in to sacrifice his life for the greater good (the Cannon)
- Logistics XB behind gets on the road. Next turn it move on the tile currently occupied by the Knight and shoot the city once
- Mandekalu hits a XB

Turn 200 just shoot the city with everything. If your GG spawned in Stockholm, your first move should be to move him in to provide a bonus for all these units.
 
Last edited:
I believe the city that spawns the GG is dependent on which unit triggers the GG threshold; so for example if a unit built in your capital hits that 200/400/whatever exp, then it will spawn from your capital.
 
@TheGuineaPig — Are you saying that the GG will spawn in the city where the unit (which triggered the GG spawn) was originally built? That is remarkable insight! It is a pattern that I never picked up on, and it makes sense. It also fits the game thematically. Very nice!

Also, I love @vadalaz doubling up on a weak promotion (Medic on Knight), getting some utility from it, and then sacrificing the unit (since, hey, it was an obsolete unit, with two weak promotions).

I am glad to see that this little combat puzzle, which I worried about being too easy, is piquing some interest.
 
My memory is probably playing tricks on me, but I thought there was a mod that made Great Generals spawn in the city nearest to the action. However, I can't find it now.
 
I did a bit of digging and if I'm reading the game code correctly, when a GG needs to spawn, each city gets assigned a value equal to (4 * random number between 0 and [# of cities - 1]) + Yield Rate Ranks (there are ranks for every yield including science, culture etc) + Population Rank

It seems that Yield Rate Ranks and Population Rank are numbers from 1 to [# of cities], and they're higher for cities with higher yields/population. So the most populated city in an empire of 10 cities will have a population rank of 10, second most populated city rank 9 etc. If there's a tie, the city that was planted earlier gets the higher rank. Same thing with yields.

Great General spawns in the city for which this value (random + yield ranks + pop rank) is the highest. In a 10-city empire the random number can be as low as 0 or as high as 36. Attacking with different units just resets the random seed, I suppose.

Relevant bits of code in the spoiler.
Spoiler :

Choosing the best city; CvPlayer::setCombatExperience(int iExperience) from CvPlayer.cpp
Code:
       // Enough XP for a Great General to appear?
       if (!isBarbarian())
       {
           int iExperienceThreshold = greatGeneralThreshold();
           if (m_iCombatExperience >= iExperienceThreshold && iExperienceThreshold > 0)
           {
               // create great person
               CvCity* pBestCity = NULL;
               int iBestValue = INT_MAX;
               int iLoop;
               for (CvCity* pLoopCity = firstCity(&iLoop); pLoopCity != NULL; pLoopCity = nextCity(&iLoop))
               {
                   int iValue = 4 * GC.getGame().getJonRandNum(getNumCities(), "Great General City Selection");

                   for (int i = 0; i < NUM_YIELD_TYPES; i++)
                   {
                       iValue += pLoopCity->findYieldRateRank((YieldTypes)i);
                   }
                   iValue += pLoopCity->findPopulationRank();

                   if (iValue < iBestValue)
                   {
                       pBestCity = pLoopCity;
                       iBestValue = iValue;
                   }
               }
               [...]
               pBestCity->createGreatGeneral(eUnit);

Population rank. The yield rank function is analogous. From CvCity.cpp
Code:
int CvCity::findPopulationRank()
{
   VALIDATE_OBJECT
   if (!m_bPopulationRankValid)
   {
       int iRank = 1;

       int iLoop;
       CvCity* pLoopCity;
       for (pLoopCity = GET_PLAYER(getOwner()).firstCity(&iLoop); pLoopCity != NULL; pLoopCity = GET_PLAYER(getOwner()).nextCity(&iLoop))
       {
           if ((pLoopCity->getPopulation() > getPopulation()) ||
               ((pLoopCity->getPopulation() == getPopulation()) && (pLoopCity->GetID() < GetID())))
           {
               iRank++;
           }
       }

       // shenanigans are to get around the const check
       m_bPopulationRankValid = true;
       m_iPopulationRank = iRank;
   }

   return m_iPopulationRank;
}

Random number. From CvGame.cpp
Code:
/// Get a synchronous random number in the range of 0...iNum-1
/// Allows for logging.
int CvGame::getJonRandNum(int iNum, const char* pszLog)
{
   return m_jonRand.get(iNum, pszLog);
}


I guess this means that if you want to increase the chances of getting a GG to spawn in a particular city, you should micro your citizens so that this city has high yields and others don't. It can still roll a 0 for the random number though.

I tested this in the Sweden save and unassigned citizens everywhere except Stockholm and Birka, the cities closest to the action. This time the GG did spawn in Stockholm instead of Helsinki when I attacked with the XB.
 
Last edited:
I tested this in the Sweden save and unassigned citizens everywhere except Stockholm and Birka, the cities closest to the action. This time the GG did spawn in Stockholm instead of Helsinki when I attacked with the XB.
Very nice!
 
Top Bottom