LoneGazebo / Community-Patch-DLL

Community Patch for Civilization V - Brave New World
Other
289 stars 160 forks source link

Suicidal Embarkation #2982

Closed deadstarre closed 7 years ago

deadstarre commented 7 years ago

1. Mod version (i.e Date - 4/23): most recent

2. Mod list (if using Vox Populi only, leave blank):

3. Error description: This is a problem with the unit AI. They no longer embark in front of you for no reason whatsoever (so glad thats been gone for a long time, thank you), however theres still an issue here.

I notice that on it's own, the AI often pairs ground units with naval fleet escorts to send a directed attack at a city. The problem is that during a war, once you've already killed the AI naval fleet, they still embark ground units, single file and en masse, in an attempt to cross the water and get to attack your city, but they'll doing so while you have an obvious naval fleet directly off their shore just waiting for something to do.

I've seen it over and over, not just in one game. They want their ground troops to reach my city, but they're not acknowledging the fact they couldn't possibly make the swim right through my navy, when they have no navy of their own anymore. in a late-game war with russia recently they were continuously embarking 3-5 ground units per turn, trying to swim to my cities, while i had something like 7 corvettes and 7 frigates inbetween. They knew my fleet was there, it had been continuously killing their ground troops turn after turn, and my navy was sometimes even in direct line of sight with their units on their shore, however they'd continue to embark / suicide. It leads to me gaining a big war score just by floating near their cities and waiting for sacrifices. it's seriously hampering them when their ground units should definitely stay on land in this situation, or at least until they have a naval fleet again to provide cover for the journey

4. Steps to reproduce (optional):


Supporting information: Please note that you can attach .zip files by dragging-and-dropping them. If possible, zip up all supporting data and post that way.

  1. Log files (always attach your Logs folder, located at My Documents/My Games/Sid Meier's Civilization 5. Make sure you have enabled logging before experiencing an error! Go here to find out how: http://forums.civfanatics.com/showthread.php?t=487482):

  2. Save game (always attach a save that was made a turn before the error; located at My Documents/My Games/Sid Meier's Civilization 5/ModdedSaves):

  3. CvMiniDump.dmp file (attach if experiencing a game crash. Located at Program Files/Steam/steamapps/common/Sid Meier's Civilization V):

  4. Screenshots (optional):

ilteroi commented 7 years ago

do you have a screenshot? i need to see the distances involved ... savegame would be even better but probably i won't be able to load it.

ashendashin commented 7 years ago

20170119080925_1 I hadn't planned on saying anything because the distance is so close, but this meat grinder went on for about 30 turns until I got around to mustering an invading force.

Using 43 civs, Enhanced City-States by merill, and YnAEMP. EDIT: Wrong save AutoSave_0335 AD-1575.zip

LoneGazebo commented 7 years ago

There are two functions that should help the AI get boats over there to protect the troops. Does the AI own any boats or did you destroy all of them?

ashendashin commented 7 years ago

It was just a bunch of dromons. I think they tried to escort them a little, but there were definitely some pikemen trying to rush into my land. This was 4 turns after the he DoWed me.

deadstarre commented 7 years ago

the AI had no boats at all during the embarkations i'm talking about. To me, if they have a boat, it makes sense enough to embark. But with no boats left at all, when they continue to embark turn after turn is the problem.

I dont have the most relevant save files, but i have 2 pictures to show some distances

Russia was embarking towards both Szczecin and Warsaw for many turns in a row, mostly leaving from that point just off St Petersburg where they're embarking here. I killed every boat they had long before, but the flow of ground units just kept coming. The artillery showing up on their shore here (providing cover for the embarked) and my taking of Smolensk were both very recent developments, it wasn't there until the slaughter had been going on awhile already.

2nd pictures shows the distance between Arabia and Iroquios. Arabia and Iroquois are at war and in that gap of water between Khurasan and a city that was just offscreen southwest of Grand River i had killed a lot of arabia troops that were trying to float over and attack the Iroquios. it wasn't a steady stream like russia provided, but they were guaranteed every handful of turns to embark at least 1 ground unit that was attempting a float over the bay that couldnt possibly succeed for them. This screenshot has 1 cavalry that had just embarked, literally into my fleet, presumably heading over to the iroquois as well but most of the units im talking about had come from further south.

55

66

ashendashin commented 7 years ago

Looks like I misread that response...

Anyways, the 30 turns of the meat grinder I mentioned was related to your experience. I sunk his navy and there was an endless stream of land units that followed, as you experienced.

deadstarre commented 7 years ago

theres another long gone game in my mind that had to do with france. it was much earlier in the game, but I remember starting a war with them just because i knew they'd embark units into the water gap between my city and theirs to attack me, and i had a fleet there when they really didn't. i remember the war going just as expected lol. they probly started with 2 or 3 boats, and when those were dead the stream of ground units had just kept coming. the distance between my city and theirs was about the exact same as that russia pictured i uploaded

deadstarre commented 7 years ago

ashendashin, thank you for chiming in with the same experience. im surprised this hasnt come up before honestly, but maybe cause it is kind of fun to destroy so many embarked units w your fleet, and usually the AI can afford the losses anyway considering they always have so many units =)

ashendashin commented 7 years ago

It has to do with the AI not being able to stop failed operations I think. Seems to me that there isn't enough of a focus on their navy.

saamohod commented 7 years ago

I keep seeing this even in latest patches. Enemy land units so desperate to get to my coast that they ignore the fact they will be sailing without escort past my warships and get destroyed. Seems like an unresolved flaw in otherwise very competent combat AI.

ilteroi commented 7 years ago

an interesting problem. danger is already considered for pathfinding but if there is no practical alternative the unit will still do it. and since every unit is evaluated separately each turn with no memory of previous failures, the mistake is repeated over and over.

i could try and block hostile sea completely for embarking. but what is hostile? how about one ship against 5 embarked units? the first unit wouldn't dare embark because it doesn't know about the others ... on the other hand if the ships are hiding out of sight the AI doesn't infer that they are still there and still walks into the trap.

ashendashin commented 7 years ago

@ilteroi I've never sent a large force across the ocean unless I've cleared a path. Naval superiority is required before landing, because anything else would lead to grinding against fortified units on the coast, as shown in my pic.

This would also tie into the AI naval ability, which I haven't actually dealt with properly in a long time, so I'm just throwing this out there. But most importantly, is it even possible for the AI to recognize a clear path with a safe landing? Really there should just be enough friendly ships to make sure that the majority can land safely. A coastal invasion is impossible otherwise.

Edit: I'm also really tired. Should probably fix that before I go throwing around common sense that doesn't easily apply to the AI.

deadstarre commented 7 years ago

Definitely wouldn't be an easy fix, i can see how it's a complicated problem

LoneGazebo commented 7 years ago

@ilteroi we could mark tiles where an embarked unit is killed as dangerous and give them an AoE of increased danger in the dangerplots calc (probably a lag time of around 10 turns). Comparable to how trade routes are recalculated for the AI if one was sniped by barbarians or an enemy. So you'd still have a few embarked units dying, but they'd learn after the first few deaths.

deadstarre commented 7 years ago

The other thing, which is kind of related but also more anecdotal, is that the AI doesn't seem to be nearly as adept at replacing their navy in the middle of war as they do on solid ground.

On ground, even after i've cleared all the troops around a city they will (seem to) reliably rush-buy from the sieged city, and will also have a decent flow of reinforcements coming from their other cities to protect it. For sustained periods of time, i see those ground reinforcements coming in. In the water, it feels like they'll have made a nice navy initially but that once you kill it, it's pretty smooth sailing for you the rest of the war. Even when they have a slew of coastal cities, I just don't see the naval reinforcements coming in mid-war, not nearly the way i am always seeing it happen on the ground.

It could be that with the navy gone and the embarked sacrifices happening, they are prioritizing making more ground units (which also get embarked, lost, rinse repeat) instead of just focusing on replacing their lost navy, which would help solve the issue. Could be worth a look.

deadstarre commented 7 years ago

last post, but also very related so worth a mention now while i'm here.

this screenshot doesn't account for the extra bonus frigate would get against a 'damaged' unit (he's %100), but is still is a 1 shot. this kind of lopsided naval combat does exacerbate the problem at hand, making the AI pay dearly for any mistakes.

good news tho, melee boats are balanced. my corvette was only doing 40ish damage to the same tank and of course, would take back some damage of his own for the effort as well.

civ5screen0004

ilteroi commented 7 years ago

i went with the "don't embark if tactical zone is dominated by enemy" check because it's easy. might be too restrictive tough ... we'll see.

regarding the combat result, there was a copy/paste error in the code, resulting in a wrong CS value for embarked ranged units. also fixed.

LoneGazebo commented 7 years ago

@ilteroi sounds good.

ilteroi commented 7 years ago

let's consider this fixed. it's probably still possible to ambush embarked units, but at least they shouldn't walk into obvious traps anymore.

LoneGazebo commented 7 years ago

Yeah, I'm seeing a big improvement here overall.