Possibly controversial change I plan to make

Koshling

Vorlon
Joined
Apr 11, 2011
Messages
9,254
I have a potentially controversial change I intend to make. This post sets out the background and I'd appreciate anyone that feels strongly (either agreeing OR disagreeing) posting please.

The past couple of days I have been working on a save game from Faustmouse that illustrates some issues the AI had with attacking past blockading points. I'm not going to go into the specifics of the issues I found here (I'll detail it in the SVN thread post when I push the fixes), but the interesting aspect from the perspective of this thread is that once I had resolved the problems the end result was actually WORSE than before!

The situation in Faustmouse's game was this. On the GEM map Faustmouse owns the area around the Middle east up to it's border with Africa (at Egypt). This connection is a 2-tile-wide region through which anything wishing to cross between Africa and Eurasia must pass (if by land anyway). Faustmouse has wisely built a fort on one of these tiles (a hill) and populated it with a decent garrison (more on that later). Because it's a fort it exerts a ZOC, so the ONLY way through is a direct attack that takes the fort.

Slightly west of this choke point, in Egypt is an AI city, in which an AI attack stack of OVER 250 units has gathered.

The originally reported problem was that it just sat there and never did anything. This was because of a number of detailed bugs/issues that prevented it seeing that it had to take the fort in order to get anywhere.

Once I resolved the problems so that the AI realized what needed doing I was amazed to find that when it attacked the fort it lost all 250+ units WITHOUT killing a SINGLE defender!! Now, the garrison is not a bad one, and in particular it includes a Warlord Commander and a hero (Sargon). Both of these units are approximately twice the strength of most the AI's attacking units, and obviously they benefit a lot from being in a hill-fort.

Regardless of this it seems crazy that (even after I modified the AI to do maximum archery bombardment first, so they were not at full strength), they can defeat a horde of 250 units (horsemen and similar with a smattering of crossbowmen and light swordsmen). In fact they came out of it at nearly full health!

The reason for this is battlefield promotions. Basically the defenders get promoted often enough to get healed back up faster than they are beaten down. To me this seems quite wrong - battlefield promotions are a reward for surviving tough battles, no some miraculous healing you get in the heat of battle.

I therefore propose to change things so that any earnt battlefield promotions are awarded at the END of ALL the combat, not between attacks by individual units. The net effect is that they will kill a LOT of the enemy but ultimately won't survive to see their promotions (in this case).

Opinions please...
 
Great analysis, I am VERY glad you found a way to teach AI chokepoints!!!!
1000*thx for that alone!

So if I built a ring of Forts with overlapping ZOCs around a city (or many cities) AI will now attack the forts to reach the cities?! :goodjob:


Regarding the question yes, bf promotions at the end of the turn please, not in between.

Btw please tell me how I can modify fort costs so the more forts I build the more worker turns they need... or that the improvement has (era-increasing) cost per turn... and how to tell the AI to build them more often outside of their territory :)
 
Great analysis, I am VERY glad you found a way to teach AI chokepoints!!!!
1000*thx for that alone!

So if I built a ring of Forts with overlapping ZOCs around a city (or many cities) AI will now attack the forts to reach the cities?! :goodjob:
Yes (at least if there aren't softer targets to go after first)

Regarding the question yes, bf promotions at the end of the turn please, not in between.

Btw please tell me how I can modify fort costs so the more forts I build the more worker turns they need... or that the improvement has (era-increasing) cost per turn... and how to tell the AI to build them more often outside of their territory :)

The AI needs work in this area, and I am aware of it. For now here is nothing you can do.
 
I think this is a good idea and one which will hopefully make things a little harder for the player.

I just thought that this will also make early hunting a little harder (I assume that this change will apply to combat with animals too).
 
Yes. Oh so much yes.

In a related anecdote, I was sieging an AI city with an atl-atl thrower. (The city originally had a full garrison, but the atl-atl survived) It took me 10-15 turns of attacking him, with him retreating to gain promotions, before I was finally able to land that killing blow. It was entertaining, but silly.

EDIT: Does this also resolve the AI pathing breaking when there is a single unit blocking its path? Such as a thin landbridge connecting landmasses, being defended by a single obsidian axeman, diverting a 20-stack of barbarians.
 
1 Red Key in Super Forts teach AI to find choke points
http://forums.civfanatics.com/showthread.php?t=444512 (latest version)

It will be good if AI will be able to build forts in that places.

2 That situation from first post never happens again when TB Combat Mod will be finished. TB plan to add stamina to units so they will be exhausted after each combat in same turn.
 
Well, I have a few Heroes with some 400 XP (or so, don't remember), so the definitely killed a whole load of enemmies.
The problem that you mentioned with all those 250 units dying, is rather weird - cause one can obviously kill even a unit with x3 atk, if attacked by some 20 units consequently during the same turn.
They should simply eat away its defense slowly-but-surely.
Some of my weaker Heroes got killed that way, when ambushed by enemy hordes (not animals of course, those die by hundreds).
As of the new idea - I'm not sure what you mean by that, but I can agree to anything - and simply adapt to later on. :D
 
EDIT: Does this also resolve the AI pathing breaking when there is a single unit blocking its path? Such as a thin landbridge connecting landmasses, being defended by a single obsidian axeman, diverting a 20-stack of barbarians.

Yes, should do (at least where AI attack stacks that are after you cities are concerned)
 
But doing so will it actually solve the killing of the 250 units?? I wonder? Or is there another reason this many units wee killed, and was there any siege weapons involved? If so then something in that area needs changing also or anything that can do collateral damage i am guessing? Dont know if i wrote this down correctly, i am having a terrible headache right now, sorry. How many units where at the fort??
 
The gameplay mechanics changes seems reasonable to me, I would hope this could lead to more decisive wars and more dynamic empire expansion and contraction.
 
But doing so will it actually solve the killing of the 250 units?? I wonder? Or is there another reason this many units wee killed, and was there any siege weapons involved? If so then something in that area needs changing also or anything that can do collateral damage i am guessing? Dont know if i wrote this down correctly, i am having a terrible headache right now, sorry. How many units where at the fort??

Oh it definately solves it. Faustmouse is going to find his borders somewhat breached when he gets the modified AI version, unless he fortifies it considerably more before upgrading ;)
 
Oh it definately solves it. Faustmouse is going to find his borders somewhat breached when he gets the modified AI version, unless he fortifies it considerably more before upgrading ;)

Luckily I managed to conquer Tasa and destroying most of those units ;)
But the siege was wierd: The AI didn't do anything against my stack. As a player, I would gather my troups there asap, surrounding my enemy and then take his stack off.
 
I play with battlefield promotions off. This change might make m consider playing with it on. My units kept getting the promotion after they died!
 
Simplest solution will be:
Not heal unit when new promotion is granted.

This sounds very simple to do and good from realism and gameplay perspective.
 
Luckily I managed to conquer Tasa and destroying most of those units ;)
But the siege was wierd: The AI didn't do anything against my stack. As a player, I would gather my troups there asap, surrounding my enemy and then take his stack off.

That's because the AI doesn't understand two crucial concepts:

1) Surround and Destroy
2) Attacking even if the individual odds are low if the overall stack strength is in its favour

If you have a save from the start of that siege it might be a good case to work on...
 
That's because the AI doesn't understand two crucial concepts:

1) Surround and Destroy
2) Attacking even if the individual odds are low if the overall stack strength is in its favour

If you have a save from the start of that siege it might be a good case to work on...

Uhm... You could be lucky, I uploaded two Savegames from the Siege in the "AI and the Art of war" Thread, it is not directly the begin but very early of the siege and the AI has lots of troups.



Nimek said:
Simplest solution will be:
Not heal unit when new promotion is granted.

This sounds very simple to do and good from realism and gameplay perspective.

Once the Motivation is implented, Promotions could rise that instead of healing. But I still prefer to give units their Battlefieldpromotions at the end of the battle, not just a single fight. No General will run at the battlefield during a big battle just to promote a unit...
 
Ok, update on this. The analysis was slightly off, and the battlefield promotion are only somewhat contributory but are NOT (by far the main cause).

Firstly - battlefield promotions do NOT heal (directly). However, they can provide strength increases which has a similar effect. I'd still like to defer them to the end of combat, but it isn't the main issue in Faustmouse's game.

If a hero has the 'Retinue' promotion he will get a chance of a full heal for every combat he survives. This isn't the case here, but it would have a similar effect. It's probably too powerful. For my suggested solution see later.

If a player has built the Temple of Ah Cacao (which Faustmouse HAS, and this IS the main issue) then every time ANY of that player's units wins a combat they have a 1 in 4 chance to fully heal. This essentially makes a well fortified strong unit totally invulnerable. It is the main cause of the problem in the save game I have.

I propose to modify BOTH of the above mechanics (Temple Wonder and Retinue promotion) so that they can only operate ONCE in any given game turn on any given unit.

How does that sound to people?

Note - both of these are implemented in Python, which I'm not very familiar with, but I think I can figure out how to do it.
 
Firstly - battlefield promotions do NOT heal (directly). However, they can provide strength increases which has a similar effect. I'd still like to defer them to the end of combat, but it isn't the main issue in Faustmouse's game.

If a hero has the 'Retinue' promotion he will get a chance of a full heal for every combat he survives. This isn't the case here, but it would have a similar effect. It's probably too powerful. For my suggested solution see later.

If a player has built the Temple of Ah Cacao (which Faustmouse HAS, and this IS the main issue) then every time ANY of that player's units wins a combat they have a 1 in 4 chance to fully heal. This essentially makes a well fortified strong unit totally invulnerable. It is the main cause of the problem in the save game I have.

I propose to modify BOTH of the above mechanics (Temple Wonder and Retinue promotion) so that they can only operate ONCE in any given game turn on any given unit.

How does that sound to people?

Note - both of these are implemented in Python, which I'm not very familiar with, but I think I can figure out how to do it.

I figured something else was also a contributing factor, but is there a way ALSO to have XML figured into the equation also someplace??
 
When combat won, check unit script data.
If empty or not = game turn, heal and set script data to game turn.
Else, if script data = game turn, don't heal.
Tada
 
Back
Top Bottom