Skip to content
This repository has been archived by the owner on Sep 28, 2023. It is now read-only.

Prevent New Kingdoms From Surrendering Too Early/Often #56

Closed
sraboy opened this issue Feb 6, 2016 · 13 comments
Closed

Prevent New Kingdoms From Surrendering Too Early/Often #56

sraboy opened this issue Feb 6, 2016 · 13 comments

Comments

@sraboy
Copy link
Contributor

sraboy commented Feb 6, 2016

Feature Request to Disable: https://www.7kfans.com/forums/viewtopic.php?f=6&t=621
Possible Bug: https://www.7kfans.com/forums/viewtopic.php?f=17&t=348&p=3303
Related issue in 7K2: https://www.7kfans.com/forums/viewtopic.php?f=21&t=451

There are a lot of ideas about how to resolve this. No bug has been 100% verified. Some of the ideas on resolving this:

@MicroVirus
Copy link
Contributor

I think this is one of those points where there are people that like it and people that dislike it, which just screams for making it a game setting.

@sraboy
Copy link
Contributor Author

sraboy commented Feb 8, 2016

I'm all for a game setting. I like the option but do want to see it tweaked a bit.

@the3dfxdude
Copy link
Owner

I think disable/enable is an obvious solution, especially to keep both sides happy.

But I think there could still be something can be considered a bug or a detrimental piece of logic that doesn't really work. I can see this more in the reports that the current behavior is undesired, than there is for a request to simply turn it off. So even if you would want to play with it on, it should behave in a normal way. I might have a way to audit the behavior, if I can get some time on it. With data, I think we can confirm or deny the problem existed.

@MicroVirus
Copy link
Contributor

@the3dfxdude What was your idea/way for auditing the behaviour?

@the3dfxdude
Copy link
Owner

Basically,

  1. Identify all the parameters that are used to calculated surrender/buyout.
  2. Do logging for these parameters for each nation over the course of an entire game. Run at speed 9 as an observer. Repeat for other matches. Also print when a surrender occurs.
  3. Analyze data and identify patterns.
  4. Make adjustments, and rerun previous scenarios and check for improvements.

In the earlier forums posts, there was an accusation that the AI can cheat. I don't quite believe it, but it should be easy to prove and fix.

If not an easy bug, then find out why AI nations seem susceptible. If the AI economy or pure random number generation (sometimes it is) is not a factor here, then I can be convinced about turning off AI buyouts then if it is better for gameplay.

@the3dfxdude
Copy link
Owner

the3dfxdude commented Aug 4, 2016

I've investigated some.

There are two paths to surrender.

  1. The current nation thinks about surrendering. It will if has zero pop or no cash.
  2. The current nation considers a buyout offer (purchase thrones)

NOTE: I'm simulating the aggressiveness set to medium. I understand the concepts of surrender and high aggressiveness, and do not think testing that specifically matters.

Almost always (1) happens because they have zero pop. It seems strongly coupled with being defeated already.

The (1) path seems the most likely to happen in testing, due to the if test being hit more often.

The (2) path is very unlikely due to restrictions. The (2) path is more likely if the nation is running out of cash, and then removes almost all restrictions. However, the restrictive path does happen sometimes, and it seems to be coupled with very large cash offers.

It may be interesting to note changes wrt 7k2, that they did make the requirements stricter:

  1. Think surrender: 7k2 added a random surrender_pref and grudges.
    Likely does not change much at all. This could be used in scenarios to disable surrendering, but I can't see how that actually prevents it entirely.
  2. Consider surrender offer: 7k2 now also checks population in the "ignore all thinking", but in a different way from (1). So this change probably allows overriding the economic aspect only and offer to buy someone defeated rather than letting them randomly choose. Doesn't seem like it will help.

Current thoughts:
I don't believe there is a major issue here, except for players that want longer games. For those players: Don't run with high aggressiveness, and think about turning on new kingdoms/towns for longer games. Those games seem to run longer in simulation.

If we want to make a difference, just increase the cash requirements slightly for the surrender offer (2). We can entertain for an option to turn (2) off.

(1) is really not a big deal. Almost always they should be surrendering when they've been militarily defeated, which seems to be the case here.

@the3dfxdude
Copy link
Owner

I think that with (2) the "ignore normal thinking" possibility is ok, since the kingdom is probably going to die. I think the remaining aspect is to understand the "normal" thinking of accepting a purchase offer, which is mainly a cash comparison. I'm going to review the cash situation.

@the3dfxdude
Copy link
Owner

OK there isn't really even a cash problem. The cash comparison doesn't amount to much, and basically, the ultimate factor is going to be the relative scores of each kingdom, and that all that matters. It is rarely triggered, unless the bought kingdom was about ready to die, or a very lopsided situation. Again very rare, most kingdoms have zero pop when they surrender.

I don't think there is much of a problem here. I don't think we should bother tweaking it, but rather try to find out why economies go bust, or the real prevailing factors why in the end they are pop=0.

I'm ok with an option to turn it off, but that is a simple wishlist item that someone can implement if they really want it. I'm tempted just to close this one, since there does not seem to be a "bug".

@the3dfxdude
Copy link
Owner

OK so there is a 3rd path to surrender, and that's in think_unite_against_big_enemy(). I did not see any evidence of this happening so far. But I will check it. Well, I've been playing OPTION_MEDIUM already to not deal with the skewed behavior in accepting a buyout. It's getting pretty apparent what greater than MEDIUM is really for.

I'm still thinking of the possibility of patching some of the behavior in a reasonable way, but the more I look at this, ai_aggressiveness > OPTION_MEDIUM really is intended to get the AIs to consolidate on purpose. This means the best option is to just play MEDIUM, and I think it will be fine.

@the3dfxdude
Copy link
Owner

OK, I am pretty settled now on what the issue is. I believe it is essentially playing with ai_aggressiveness > MEDIUM, which I'm sure what many people are inclined to do based on interpretation. Really, all the aggressiveness parameter is doing is heavily slanting the AI against you, and in multiplayer games, against the human players. So its a great option for a challenge in single player, and great for allied human players against AI. The AI will find any excuse to attack you, and any excuse to team up. That is why consolidation happens so quickly.

So if you want to largely prevent buyouts, use MEDIUM. If it happening alot still, then I'd be really curious on what needs to be tweaked then. But I don't see much evidence there needs to be a tweak.

On greater than MEDIUM, the buyouts aren't a bug, but by design. Really. But if this does not make it more challenging, we need to find out why the AI is not making it more challenging.

I'll leave this open for a little while for discussion.

@sraboy
Copy link
Contributor Author

sraboy commented Aug 6, 2016

I think the complaint comes from confusion about how the AI works, and it was the same for me for a while. The problem is that it's Human vs All-the-AI, not Human vs AI#1 vs AI#2 vs AI#3, which is what a reasonable person would assume... I mean, I don't enable the other 6 kingdoms with the intention of fighting a single player that controls 6 kingdoms, but that's essentially what happens. I think the expectation is that I'd battle 6 distinct AI entities. Given that, it's definitely by design, though probably my least favorite feature of the AI.

@MicroVirus
Copy link
Contributor

I agree that we should try to tackle the underlying causes for unnecessary/prolific surrenders, rather than try to patch the symptoms.

I think it would be fun to play/tweak the difficulty options a bit such that higher AI aggressiveness means just exactly that and disconnect it from the tendency to band together against human players. It seems to me that this is what most of the complaints are about: people want more difficult AI, but not less AI players.

There's also the large issue, underlying several aspects of the game, of the AI's economy fluctuating too much, causing it to run out of cash.

@the3dfxdude
Copy link
Owner

We discussed in the forum reasons for the "surrenders". This got tricky, because I shared reasons why this seemed to be a game design feature, at least for certain scenarios. But we can still look at why it is prolific.

There are three ways a surrender may happen.

  1. A Nation/AI accepts to be bought out.
  2. The Nation/AI decides it has lost the game and surrenders to give someone else a chance.
  3. The Nation/AI decides to gang up on the winning human player based on high aggression setting.

Number 3 is not really a surrender, and does not have to be loosing. Since it is focused on defeating the human player, it would have been nice that the message said player A and B decided to join to defeat you.

Also Number 3 is especially hard to decide how to fix, because it is clear they original designers intended this to be a thing at the high aggression setting.

But there is an interesting aspect to this. When considering the code that determines when to take this action, there is a place that the minimum relation level is checked. The minimum relation level for an AI to merge with another AI is "NEUTRAL". Which means that pretty much any AI will be willing to join with the other since they are already focused on fighting you. Secondly, "NEUTRAL" is the default relation level for a new AI. Any new AI nation will already be considering to join another nation before any relations are formally established.

With that, I have offered to introduce the advanced setting to control the min relation level for this AI thinking, with the default to the original level NEUTRAL. The advanced settings are considered "mod" level settings that aren't fully tested, and don't normally want to support. However, if this proves to work and improve the game, I am open to changing the defaults.

That said, I think we have studied this long enough and at this point the option is the best thing we have going to address this issue. I will close this issue with the commit done to create the option.

Note this option does not address buyouts or impending loosing. Testing showed these were rather rare, and the code seems reasonable.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants