1. We have added a Gift Upgrades feature that allows you to gift an account upgrade to another member, just in time for the holiday season. You can see the gift option when going to the Account Upgrades screen, or on any user profile screen.
    Dismiss Notice

Advanced Civ

Discussion in 'Civ4 - Modpacks' started by f1rpo, Apr 16, 2017.

  1. f1rpo

    f1rpo plastics

    Joined:
    May 22, 2014
    Messages:
    556
    Location:
    Germany
    Probably because of the setDimensions call. Well, I've given it a try and the same procedure as for wide-screen works for me: Git commit
    Still need to go through the individual screens; currently, the additional space isn't used well.
     
  2. devolution

    devolution Prince

    Joined:
    Oct 7, 2016
    Messages:
    343
    Gender:
    Male
    Location:
    Stavanger, Norway
    Ok, I kind of assumed that you would object to 4 or 5 combat rounds as the default. We could of course start out with the WTP default of 7 rounds, which conveniently results in a 77.4 % chance of survival for evenly matched units, thus it will be almost 50% higher than in BTS.


    The adaptive component could thus aim to keep the survival chance at roughly this "balancing point" so that a weaker attacker would still engage in a fewer rounds when attacking a stronger unit. For stronger units, the number of combat rounds would remain 7 which most likely would result in a close to 0% chance of the attacker dying.

    I guess we're at the point where it would be easier to just experiment with the implementation. Will do my best to publish what I have during next week.

    Edit: Here are some additional thoughts:

    This is not really related to combat rounds but this is roughly my idea of unit roles:

    - Adopt a modified and improved version of civ6 combat classes
    - Split mounted units into two categories: heavy (charge) cavalry and light (flanking\skirmishing) cavalry.
    HC : +25% attack in "open" terrain, -25% attack vs. (walled?) cities, -25% defensive in "dense" terrain. Intended to "rule" the open battlefield and be slightly weaker elsewhere. Maybe causes collateral damage to 1 other unit. Base strength is about par with the strongest infantry of the era.
    Just like in history.
    LC: Engages in less combat rounds "than normal" so that the draw outcome is the most likely one. No combat bonus like HC, but same penalties. Intended to weaken enemy stacks.
    Maybe re-use the existing BTS flank attack vs. specific units but balance it.
    Siege (pre-cannon): "Useless in the field", strong vs. cities.Collateral damage to 3-5 units, but only cities ?
    Ranged units (pre-musket) like archers: Uses the C4R collateral\range ability with a low combat round limit on attack. Normal combat round limit when attacked. Need to specialize in the collateral role or as city(fort) defender by introducing specific promotions.
    Cannon and beyond: Combines the ranged\siege roles. Field artillery class ? Here we break with civ6 and stop differentiating ranged\siege.
    Muskets and beyond: Considered melee units like in civ6.
    Note: Need to introduce some additional units compared to BTS to ensure decent coverage of unit combat roles per era.

    In my opinion this is a decent stating point for fixing many of the issues with BTS.
    Here are some examples:
    Catapults\Trebuchet were rarely used in field battles and should not be effective in in the open field. They should specialize in assaulting cities.
    Horse archers need to be considered light cavalry since they did not attack head on but rather harassed enemy troops.
     
    Last edited: May 29, 2019
  3. f1rpo

    f1rpo plastics

    Joined:
    May 22, 2014
    Messages:
    556
    Location:
    Germany
    When I advocate for a more conservative approach, it's not meant as a criticism and hopefully didn't come across as negative. I'm hoping that by going only 50% of the way, 75% of the effort could be avoided, and that the major changes would remain few and simple enough to explain in a few sentences.

    Another angle I could see: The mod could demonstrate that a balanced and enjoyable combat system for Civ by no means requires a xUPT rule and isn't fundamentally at odds with a competent AI. It's not clear that a few surgical changes can lead to a convincing result here; after all, several mods have already gone down that road without quite getting there in every respect. So I can appreciate a more comprehensive approach too. (That said, showing combat odds of 100% retreat half of the time may still fall into the "avoid silly mistakes" category. :p)
    Currently, it matters most for Spearman and Pikeman. The former is historically dubious anyway and Pike happens to be contemporary only with heavy cavalry; though encounters with Horse Archer and Industrial-era Cavalry can't be ruled out of course. I've been meaning to use anti-Melee bonuses for light cavalry to smooth this over. For the elephant-scares-horse thing, a single Mounted class is handy.
    So you'd attach (some of) those rules to the unit class? That would reduce the complexity of the individual units. Though, in that case, it would be nice to give every class an ability; e.g. +25% Hill defense for Archery/Ranged. What happened to "receives no defensive bonuses"? At least for pre-classical warfare, a realistic metagame could be that cavalry (chariotry) isn't really useful for attacking cities, but has to be brought along to match the cavalry of the city owner – except if the city can be approached through rough terrain (e.g. Peloponnese). That's probably too radical a change (for the AI), but it would be nice to move a bit in that direction.
    Since I'm not necessarily on board with an adaptive combat round limit as the general rule, I could imagine using it for the skirmish ability. Would Chariot be light cavalry? If so (or if there's just one cavalry class), then a scalable ability would be desirable because Horse Archer should be better at hit-and-run than Chariot.
    That sounds also like a heavy cavalry thing.
    If you're going to rename the class to "ranged", then it would make sense to me to include Musketman as Musketman is contemporary with actual Melee units (Pikeman, Maceman).
    OK, I see. So Catapult is about city attack/bombardment, Archer about softening (any) defenders (quite a role reversal) and Cannon both. And Horse Archer really is an Archer on four legs (minus the collateral damage).
    "Gunpowder units" isn't a great name (nor is "Pinch"), but reusing Melee invites problems with Crossbowman and Maceman.
     
    Last edited: May 30, 2019
  4. keldath

    keldath LivE LonG AnD PrOsPeR

    Joined:
    Dec 20, 2005
    Messages:
    6,527
    Location:
    israel
  5. devolution

    devolution Prince

    Joined:
    Oct 7, 2016
    Messages:
    343
    Gender:
    Male
    Location:
    Stavanger, Norway
    None taken :)

    Since it seems that we've taken a slight detour from discussing new combat mechanics, we may as well continue the discussion on unit roles :p

    I recently came across this thread in the civ6 forum that is a rather good read concerning reworking unit roles.
    https://forums.civfanatics.com/threads/valuing-units-buildings.646107/

    As for your comments:
    In my view, spearmen and pikeman (and probably a tercio\pike'n shot unit) are needed to counter the strongest cavalry of their ages, in other words the HC class. Melee units would not counter LC since these they would never meet in melee (that is if the riders are any good at what they're doing which should be to pelt the slow moving melee troops with harassment attacks due to their superior mobility :p ). HC would not have the BTS flank attack due to attacking "head-on". Also the heavy weight of armor etc. would limit their mobility so that they could not easily pick off weak siege units. That role is better served by LC.
    Note that the anti-cav units are poorly represented in BTS and I agree that pikemen should not be much weaker than medieval melee in general.
    The War Elephant is a bit of an oddity, but if we choose to keep it around it should be considered HC.
    The chariot (ignoring the weird chariot archer here) would be a form of HC (like in civ6).
    It seems that I forgot to write anything about axes and swords. In my opinion these need to be differentiated a bit better. Axes would be heavy shock \ line melee infantry while swords would get a special ability that ignores X% of the targets defensive bonuses. Thus swords would be good at attacking cities and attacking into dense terrain while axes would be the melee unit of choice used in the open field. Note that I use the term dense to denote combat taking place in forests or cities.


    As for muskets, they could simply get the range stat (they have one in C4R) to differentiate them a bit from "regular" melee. Note that early musket equipped troops would only fire a couple of volleys and then fight with side-arms like swords. Also, this issue only really apply in the transition period from "true" melee to all warfare being ranged (except perhaps the cuirassier)


    As for special abilities per unit class, this is definitely where I am heading. This would clean up much of the clutter introduced when giving a unit +X% versus another unit type (For instance the chariot's bonus vs. axemen). In this sense the civ6 system is superior.
    Archers would get a bonus when defended in an "elevated" plot (hills and behind walls). Cavalry needs to be weaker than contemporary melee when attacking cities in my opinion.


    Regarding the merging of archers\post-trebuchet siege into a common ranged class, I can tell that you're already on board with that since you're proposing that cannons can be city defenders :p Horse Archer would be LC and have a different purpose than archers. However, I did consider having LC being the collateral\stack-softener unit of choice but that would require the player to have horses and would not represent history that well.


    Note that I haven't covered modern combat or naval combat yet. These need to be reworked as well since they surely need something and this is where it would sense to add additional mechanics like actual ranged combat.
     
  6. f1rpo

    f1rpo plastics

    Joined:
    May 22, 2014
    Messages:
    556
    Location:
    Germany
    I was thinking of posting a link to that thread too. :) I always at least skim through Boris Gudenuf's posts when I come across them. (Should I tag his user name? I don't think this thread will be interesting to him really, but I guess it's good to know when you're being talked about, so: @Boris Gudenuf)
    A cavalry charge can also hit the flanks of an army. Then again, the BtS Flank Attack ability isn't really about that but, as you say, "pick(s) off weak siege units". Attacks against the enemy flank in general would be rewarded by your width mechanism; anything with 2 moves will benefit from that. (Of course, one could also introduce a combat bonus for attacking a target from more than one direction. I think Civ 5 has that.)

    My takeaway from reading about warfare in the ancient Near East (prior to modding Civ 4) had been that spear formations weren't commonly used against chariots, I guess, ultimately, because charging wasn't the primary tactic of chariots. Upon reviewing some of my sources, it seems that this changed toward the early Iron Age:
    Spoiler :
    A brief look at chariots in ancient China and chariots in ancient Indian warfare
    suggests that the Chinese chariots were rather heavy and Indian rather light.

    Considering that there is a unique Egyptian Chariot unit (which should be light), a Spearman bonus against heavy cavalry (non-Egyptian Chariot, War Elephant) seems justified. Doesn't have to be 100% and not necessarily on the attack. Unless the Spearman is repurposed as a more primitive garrison/ all-round unit anyway. If heavy chariots don't really work for India: History Rewritten has a unique Indian Chariot called Ratha. Seeing that the current Indian UU is a bit of an open issue ...
    Spoiler :
    Tercio: It would be a bit of a pity to represent that as a single unit because the (defensive) advantage of a combined-arms force (i.e. a mixed stack) is, for once, something that the Civ 4 combat system captures well.
    That sounds good.
    For the later muskets, I suppose you'll introduce a new unit (e.g. Fusilier as suggested in the Civ 6 thread). Though that will encroach on the role of Grenadier. Well, instead of quizzing you about individual units, I should better wait for access to your Google Docs.
    I feel that they need something to compensate for nerfing collateral damage. Cannons are pretty iconic, in the field and on the battlements.
    They do sound similar:
    'LC: Engages in less combat rounds "than normal" so that the draw outcome is the most likely one. [...] Intended to weaken enemy stacks.'
    'Ranged units (pre-musket) like archers: Uses the C4R collateral\range ability with a low combat round limit on attack.'
    But I see that you're well aware of the need to differentiate the unit roles, so you've probably already worked this out or are keeping an eye on it.

    I remain a little bit concerned about the necessary volume of help text for unit abilities, particularly in the early game. When I start a game with certain Civ 4 mods, I find myself thinking "I'm not reading all that". Shifting abilities to unit classes won't make this a non-issue (especially if the classes become more fine-grained). But I guess some of the abilities you've mentioned are just alternative/tentative ideas.
     
    Last edited: May 31, 2019
  7. f1rpo

    f1rpo plastics

    Joined:
    May 22, 2014
    Messages:
    556
    Location:
    Germany
    :trophy:

    As one can infer from the list of mod components behind the link, this was a pretty big effort, and I was skeptical if anything was going to come out of it. But keldath labored like an Indian Fast Worker and pulled it off. Only about half of the original DotO components are used in the current version, but the others (and the extended tech tree) were also working or at least mostly until keldath decided to strip the mod down.
     
  8. keldath

    keldath LivE LonG AnD PrOsPeR

    Joined:
    Dec 20, 2005
    Messages:
    6,527
    Location:
    israel
    :lol::lol::lol:

    yeah i was fully into it.
    couldnt have done this without you.


    anyway , later on ill change/add stuff, ill see how it goes :)
     
  9. keldath

    keldath LivE LonG AnD PrOsPeR

    Joined:
    Dec 20, 2005
    Messages:
    6,527
    Location:
    israel
    hey ,

    been playing on my doto , 260 turns,
    cool so far, brutal ai, i love it.

    one thing,
    maybe ai city founding evaluation should be considered...ai built a city in a space near my borders with 2-3 vacant culture , very silly for city placement.
     
  10. f1rpo

    f1rpo plastics

    Joined:
    May 22, 2014
    Messages:
    556
    Location:
    Germany
    Screenshot?
     
  11. keldath

    keldath LivE LonG AnD PrOsPeR

    Joined:
    Dec 20, 2005
    Messages:
    6,527
    Location:
    israel
    Too late,
    I was crushed by 3 nations...

    :(

    Ill try another game, then back to mod update and things we spoke of.
     
  12. devolution

    devolution Prince

    Joined:
    Oct 7, 2016
    Messages:
    343
    Gender:
    Male
    Location:
    Stavanger, Norway
    @f1rpo:

    I've pushed my work concerning the limited tile attacks feature to the "limited_attacks" branch in my fork. Had to roll back my work on the limited defender set feature since I am not happy with the implementation and because I unfortunately put all of this stuff in the same branch :(
     
  13. f1rpo

    f1rpo plastics

    Joined:
    May 22, 2014
    Messages:
    556
    Location:
    Germany
    @devolution: I've finally gotten around to reading through your code and (briefly) trying out the attack limit.

    Attack width - some ramblings:
    Spoiler :
    * It's hard to say how it will work with other changes in place; currently, mounted units seem quite useful for attacking cities. Even if the mounted units don’t get good combat modifiers (no +25% strength promotions), they’re still good enough for the last few attacks against damaged defenders.
    * It's a bit unsatisfactory that the limit of 8 tends to matter rarely until Renaissance. However, a limit based on the size of the attacked stack – I've realized – would be complicated by the fact that the size can decrease through successful attacks. The formulas I had in mind (min{4, 1.5*stack_size} or maybe 4+stack_size) had seemed a bit too complicated anyway, so I guess a stack-size-based formula won't really work.
    * Idea: Distinguish only four directions and count diagonal attacks for both adjoining cardinal directions. To address my own concern about "treating diagonal adjacency just the same as orthogonal [being] awkward as the former is represented by just a corner on the map (infinitely small width geometrically speaking)."
    Defender set – outdated code, but still gave me a clearer idea how to implement it:
    I had misread this; I thought you meant five teams at war with the same enemy, but that wouldn't actually be a problem. It's about enemies stacked with non-enemies. In that case, the non-enemies mustn't be in the defender set at all. Really, only units that can defend against a given attacking unit must be in the set. Otherwise, the set will effectively be smaller, which, at an intended size of only 4 (or so), makes a great difference and will be exploited by players.

    So updating once per game turn isn't enough; will have to be once per player turn and will have to update on at-war status changes too.

    Here's how I'd go about it. This may already be obsoleted by your own progress, but, well, it won't take me long to type out. Or if you're not on it, I could also implement it (in an AdvCiv branch).
    Spoiler :
    * A container at CvPlot for the defender set. Use a list for fast removal? Don't really need random access and I understand that std::set is a bit clunky for such a small container. Perhaps safer to use unit ids (IDInfo) instead of pointers. So I guess CLinkList<IDInfo>, like CvPlot::m_units. Think of this container as a cache. Could (later) wrap it into a small new class.

    * Cache update: Randomizes the available units for a given (potential) attacking unit:
    Go through all units in the tile that can defend against the attacker and compute a, say, availability value as the sum of a bias value (to account at least for remaining hitpoints) and a pseudo-random hash value. Inputs for the hash function: game turn number, owner id of the attacker, unit id, plot coordinates and some sort of game id to make sure that the results are unpredictable (I normally use some player's starting coordinates). Make the units with the highest value available by putting them into the cache. This algorithm is stable insofar that the set of available defenders won't totally change when the set of legal defenders changes slightly, e.g. when a Catapult (maximally damaged units can't defend) is selected as the attacker instead of some other unit. It's also important (for multiplayer sync and other reasons) that, if the attacker stays the same, the algorithm yields the exact same result regardless of the timing within the turn.

    * Function to check whether a particular unit is currently available. This should only be needed for the tile hover text, so performance doesn't matter.

    * Some function for accessing the whole cache/ iteration. Any read access needs to update the cache first if it's invalid. Due to the way that the inputs are chosen for the hash function, it should be OK to always update the cache here; just a matter of performance.

    * getBestDefender: If pAttacker is set, then return the best available defender (and maybe a civilian if no defenders are available). Not sure if any change is needed (e.g. for updateCenterUnit) if pAttacker==NULL.

    * Function to invalidate the cache. When to invalidate: I have a list of specific cases, but it's probably better (for compatibility with mod-mods) to always invalidate – as in your implementation – in CvUnit::kill and setXY (source and destination). Edit (a few days later): And will of course have to invalidate at the start of each player's turn and upon declaring war or making peace (only plots with military units owned by the war target). And I guess the cache will have to store more than just the 4 available units because the legal defenders can change whenever the attacking unit changes, so only the availability values (or order of the defenders according to those values) can really be cached. Seems better to try it without any caching at first. :sad:

    * When a defender dies in combat, the hash-based update will replace it with another defender; that's fine. Special treatment might be needed when a unit is damaged in combat. I was going to increase the plot's maximal number of available defenders (cache capacity) in that case (until end of turn), but now it seems to me that it's OK to let the (stable) update algorithm replace damaged units. So, possibly update on non-lethal damage too.
    * (Possibly: function to change the max. number of available defenders; should trigger a cache update.)

    * In any player documentation and game text, I'd prefer to call the defender set feature/ module something like "defender randomization"; the "set" is more of an implementation detail to me.
    @MatteM: I finished the fullscreen Sevopedia a while ago. Git commit
     
    Last edited: Jul 1, 2019
  14. xyx

    xyx Chieftain

    Joined:
    Aug 7, 2013
    Messages:
    29
    Thank you for working on this, I really enjoy it and use it as a base in my own mod. Also thank you for the great documentation of all changes. I observed some quirks during my plays I'd like to see fixed:

    As someone in this thread noted, the AI is somewhat erratic on trades, as it cancels trades just to accept the same or even a worse offer in the same turn (say, paying 10 instead of 8 gold for some resource). That's a bit annoying.

    The same also happens in peace evaluations. Ragner is willing to capitulate before I take his city. After taking his city (so he lost 10 units and a city while I have no casualties), Ragner no longer wants to capitulate. Ok, so I move my army to his next city, but he won't be willing to capitulate ever again. It's also annoying that the AI makes demands for peace as soon you conquered their final city on a continent, so before taking their final city on continent it is willing to pay for peace, but after taking the city the AI make demands -- even if their remaining cities are close, easily reached, and will fall. I think the presence of foreign army in own territories is factored way too much during peace evaluations. More generally, I wish the AI would behave a bit more consistently.

    I also think that there is too much anger when a city is conquered, because this often leads a size 20 city shrink to a size 5 city. I don't think that's makes sense, most people wouldn't prefer starvation over occupation. I think setting CLOSED_BORDERS_CULTURE_ANGER_MODIFIER to somewhere about 20 is more sensible.

    I don't like the anti-fogbusting change (spawns in all fow tiles), not so much because of more barbarians in the early game, but because this makes early warfare annoying. If you conquer a city, you'll often have fow tiles because of the city occupation timer, just to see barbs spawning in between two cities, thereby sometimes actually helping the attacker. It would be nice, if this could be configurable.
     
  15. f1rpo

    f1rpo plastics

    Joined:
    May 22, 2014
    Messages:
    556
    Location:
    Germany
    @xyx: Thanks for your thoughts.
    One fundamental source of instability is that the AI war evaluation is based on a single predicted outcome of the war. That means, any tiny change in the power ratio can tip the scales on whether the AI believes that a war is a stalemate or will lead to the conquest of a city. Considering multiple trajectories, as simulation-based algorithms normally do, would take too long. However, I could actually implement two trajectories (one slightly optimistic, one slightly pessimistic) for situations when performance isn't an issue, e.g. so long as an AI civ knows fewer than 100 cities. I think, in the late game, outcomes tend to be clearer (greater disparities in military power) anyway.

    Another fundamental change I've been considering is to move all AI decisions about trades offered to humans and deal cancellation to the start of the human turn. Currently, AI offers are locked in during the AI turn, and several other civs may take their turns before the offer is put to the human. So the AI may cancel a deal and lose access to another resource before the cancellation popup gets shown. Ideally, any AI-to-human offers should immediately result in a diplo popup. That'll require some trickery as the EXE is responsible for showing diplo popups. I'm not sure if the turn order is the only cause of erratic deal cancellation. How often do you reckon it happens per game?
    It's intentional that the overall power ratio hardly matters when the AI doesn't believe that the war enemy can reach its cities within 25 turns, or when it believes that the cities will be of too little value to the enemy to bother. The AI can't be certain of this, but erring on the side of not paying for peace when there is no imminent danger seems reasonable to me because a powerful enemy may well attack again 10 turns later or at any convenient moment. Also, a civ that has lost its core cities doesn't have much to lose. It should still try to survive of course, but, in general, the more an AI civs falls behind, the more willing it should be to take risks.

    Asking for payment after losing cities seems a bit too audacious but is perhaps not really an issue if the demanded payment is a negligible expenditure for the winner.
    It may well be that the AI fails to recognize this sometimes. A screenshot (or savegame) might be helpful here and also for the refusal to capitulate and anger in conquered cities. I rarely win games through Domination, so it's possible that wars of conquest in the late game are more frustrating than I realize. In any case, I already have an AI function for evaluating (simply based on the power ratio) the abstract possibility of an enemy invasion past the 25-turn time horizon of the military analysis. It's currently only used for deciding whether to start a war, but it would be easy enough to (optionally) also take it into account when computing the peace terms.
    So far so good. Having a sufficient number of units within the AI's borders is a prerequisite for capitulation. The idea is that the AI only capitulates at gunpoint. After you've just taken a city, even if you're very powerful, who knows if you'll bother (war weariness, maintenace, supply, other potential wars) to conquer another. Perhaps you were already aware of this behavior; anyway, I should probably add a loading-screen hint about it. Also, an XML option for disabling the boots-on-the-ground check would be easy for me to implement.
    Well, that's not good. :(
    I think of it as emigration -- of course, they never arrive anywhere because the game lacks a migration mechanism, and when there isn't even any nearby city to take the immigrants in, then this fiction really doesn't work. :undecide:
    I think the way it works currently is – for a worst-case example:
    A size-20 city with 100% culture of the former owner receives
    40%*100%*20=8 anger :c5angry: from "being ruled by a foreign culture" (formerly "yearn to join our motherland") when the borders are open – as in BtS (well, I guess BtS would round down to 7). When the borders are closed (doesn't matter in BtS), it's 150%*40%*100%*20=12 and, when at war, 200%*40%*100%*20=16 (12 or 11 in BtS). 12 anger after making peace should lead to a loss of more than half of the population only in rare circumstances. 16 is indeed a lot. :think: Setting CLOSED_BORDERS_CULTURE_ANGER_MODIFIER to 25 would reduce that to 14 and hopefully wouldn't affect smaller cities much because the current anger seems about right for those.
    That's an unintended side-effect, but I thought it's kind of flavorful that Barbarians can take advantage of wars between civs. The units could also be marauders. The fogbusting change can be reverted by setting MIN_BARBARIAN_STARTING_DISTANCE in GlobalDefines_advc.xml back to 2.

    As for "more barbarians in the early game": High on my to-do list is to decrease Barbarian spawning near tiles where they have recently been spawned or killed. I do think that too many Barbarians spawn in the late Classical era and beyond when the civs don't get all the land under control.
     
  16. xyx

    xyx Chieftain

    Joined:
    Aug 7, 2013
    Messages:
    29
    Thanks for taking the time to respond.

    This happens quite often - well, basically the AI wants to re-negotiate nearly every 10-15 turns, and about half of the trades are equal to or worse (for the AI) than before. That's why this is a bit annoying.

    So this is probably a matter of philosophy. I expected the AI to offer anything to survive, even if an enemy may perhaps come 25 turns later again. But I agree that you have a point, since this also avoids exploits. Still, I think that making demands for peace if the AI is actually in the very need for peace is quite odd. Personally, it leads me to crush an enemy instead of letting them some minor cities. Maybe an intermediate approach would be that the AI just refuses to pay for peace at some point, instead of making demands.

    I'll post something once it happens again.

    Yes, I was aware of that change and actually like this behavior. But the issue is this erratic behavior: Once the AI is ready to capitulate, it shouldn't change his mind when it becomes weaker and there is still an immediate threat.

    Migration makes sense, didn't think about it this way. As a matter of fact, I play with CLOSED_BORDERS_CULTURE_ANGER_MODIFIER at 20 and that seems to work well. 25 will of course also do.

    Ah thanks, a missed this setting.
     
  17. f1rpo

    f1rpo plastics

    Joined:
    May 22, 2014
    Messages:
    556
    Location:
    Germany
    Well ... for symmetry with the 50% for war. I'll include that change in v0.96 (which is almost finished). The other things will take a bit longer to address. Will need to come across some concrete examples.
    Thanks. I'll also keep an eye out.
    At least not always after 10 turns. :sad: Trading is certainly too fickle. But the "equal or worse" cases bother me the most because they make the AI look erratic. And it sounds like there is actually some erratic behavior and not just bad timing regarding the turn order. First up, I'll look into (further) decreasing the per-turn probability of cancellation for deals that no longer appear worthwhile. Perhaps also for trades between AI civs (currently, it's mostly AI-to-human cancellation that gets discouraged) because canceled AI-AI deals might have a domino effect.
    That's reasonable – barring, perhaps, oddball characters like Sitting Bull (high RefuseToTalkWarThreshold and low MakePeaceRand). But generally the, say, pride of the other side (especially if that's a human) is worth considering. Also, these rather symbolic reparations are really too unimportant to risk perplexing players.
    Right. Assuming that your units were once more in Ragnar's borders (too few units would result in "you'll have to take it from our cold, dead hands"), I can only imagine that Ragnar was "thinking" :mischief: that you might just leave his last few worthless cities alone. Of course that wouldn't be a good line of reasoning.
     
  18. xyx

    xyx Chieftain

    Joined:
    Aug 7, 2013
    Messages:
    29
    Sounds like good idea to make this personality dependent

    Here are two saves showing the erratic AI trade behavior. Mansa will cancel a deal and accept the same or a worse deal on the same turn. I tried to provoke this happening and realized this doesn't occur as often as as I remembered, so maybe it's just bad timing.

    Another issue is that the AI sometimes (rarely) announces to cancel an "empty" trade, say, giving some gold in exchange for nothing, though no such trade actually existed. I did not figure out when or why this happens.
     

    Attached Files:

  19. xyx

    xyx Chieftain

    Joined:
    Aug 7, 2013
    Messages:
    29
    On a second thought: Does a warfaring AI actually understand what's going on? Could this lead to an AI continuing a war because it actually expects the other party to pay some tribute for peace?
     
  20. xyx

    xyx Chieftain

    Joined:
    Aug 7, 2013
    Messages:
    29
    ...and more more question (sorry for the message spam): Did you change the civ placement code (apart from the starting plot normalization)? I have the feeling that some civs receive quite weird starting locations, but I am unsure whether this is an issue of AdvCiv (I use a modified totestra map script; could also be due to my modifications) .
     

Share This Page