HomeWildfire Games

Create winning teams for relic and wonder victory instead of letting all allies…
Concern RaisedrP21441

Description

Create winning teams for relic and wonder victory instead of letting all allies of a player win.

Create a getNonGaia function
Reset counters on playerDefeat
MarkPlayersAsWon function
Rename MarkPlayerAsWon to MarkPlayerAndAlliesAsWon
Stop letting winningplayers in relic depend on PlayerID

Comments By and Discussion With: elexis
Reviewed By: temple
Differential Revision: https://code.wildfiregames.com/D972
fixes #4648

Event Timeline

lyv raised a concern with this commit.Jul 1 2018, 7:48 PM
lyv added a subscriber: lyv.
lyv added inline comments.
/ps/trunk/binaries/data/mods/public/maps/scripts/WonderVictory.js
123

This resets the wonder victory timer each time a teammate resigns/get defeated. Same for relics as well. Seems counterintuitive.

This commit now has outstanding concerns.Jul 1 2018, 7:48 PM
lyv added a comment.EditedJul 1 2018, 8:07 PM

A bit more clarification:
Consider a game of 2 teams of 4 players each. First 4 players being T1. Player2 builds a wonder and start off the timer. After a while, Player1 resigns. And the timer is back to the start. In that case, it seems to be counterintuitive as Player2 still has the wonder and it still affects the same side (namely T1).

bb requested verification of this commit.Jul 1 2018, 11:34 PM

The trick here is defining when the counter needs to be reset, to me defeating a player defending a wonder is enough reason to reset the countdown, one can argue differently however. But as the case is specifically named in the commit message Reset counters on playerDefeat requesting verification, further discussion should be in a trac ticket imo.

This commit now requires verification by auditors.Jul 1 2018, 11:34 PM
elexis raised a concern with this commit.Jul 2 2018, 12:39 AM
elexis added a subscriber: elexis.

But as the case is specifically named in the commit message Reset counters on playerDefeat requesting verification

It's not in question that the code does what it claims, it's concerned that what it does is not what is reasonable.

Objectives should be as straightforward as possible, as simple as possible, so I'd rather have went with only the first rule as was the case before (which doesn't mean that there might be a simple alternative satisfying more).

If my allies were defeated or declared war on me, that shouldn't make me lose the victory timer.
It seems like a worse effect than enlarging the team and making someone win who didn't hold any critical entity for the time and wasn't part of the team for that time.

(Nitpicking about the phrasing in the victory condition descriptions:
The second rule ("reset if diplochange or defeat") now actually invalidates the first rule "win if held for X time".
Should be communicated as "win if X and Y", not as "win if X. Don't win if Y.".)

further discussion should be in a trac ticket imo

#4648 doesn't speak about defeat or diplomacy changes at all, it was only about making the set of winners independent of the playerIDs.
(So could only create a ticket with the content to revert this behavior change.)

This commit now has outstanding concerns.Jul 2 2018, 12:39 AM
lyv accepted this commit.Jul 2 2018, 8:19 AM

Since the commit does what its supposed to and the behavior was intended in the first place, accepting this as there is technically nothing broken here.
Discussion and a decision regarding this can be taken in a diff for those points.

elexis added a comment.Jul 2 2018, 8:37 AM

So when I commit a bug and call it "commit a bug", it's not broken because it does what it claims to?
Why do we have the concern feature if we don't use it to keep a list of things that should be fixed that are related to a known commit?

bb added a comment.Jul 2 2018, 9:32 PM

Objectives should be as straightforward as possible, as simple as possible, so I'd rather have went with only the first rule as was the case before (which doesn't mean that there might be a simple alternative satisfying more).

The objective is straightforward now, as the timer is reset on every event that the "winning team" changes

If my allies were defeated or declared war on me, that shouldn't make me lose the victory timer.

Certainly agree for lms, but in an allied victory game loosing a team member for me is enough reason to say the "team" is defeated. But as there is a new team meeting the victory conditions, a new timer is set for that team.

(Nitpicking about the phrasing in the victory condition descriptions:
The second rule ("reset if diplochange or defeat") now actually invalidates the first rule "win if held for X time".
Should be communicated as "win if X and Y", not as "win if X. Don't win if Y.".)

The resets doesn't invalidate "win if held for X time" as the team holding the wonder/relic doesn't hold it anymore as the team broke up.

elexis added a comment.Jul 3 2018, 1:58 PM

(One string concern for wonder.json if this concern is not addressed.)

The objective is straightforward now, as the timer is reset on every event that the "winning team" changes

Previously the objective was to build or capture a wonder and keep it for X minutes to win, or be an ally of that player at the time of victory.
Now the objective is to build or capture a wonder and keep all alliances the same way for that time and keep all allies alive for that time.
So the victory condition has now more conditions and catches than before.

The player that owns the wonder is the one that has the most vital interest to defend it, allies may withdraw their alliance for strategic reasons.
A player can never trust an ally to always peform the best decisions ingame, so the fate of the wonderowner should be put into the hands of the wonderowner, not allow to jeopardize the victory.
In practice it means that wonder victory will not be chosen anymore with 4v4 locked teams unless you happen to find 8 players which are all very familiar with every turn of events that can lead to a defeat if they have an interest in winning.

If my allies were defeated or declared war on me, that shouldn't make me lose the victory timer.

Certainly agree for lms, but in an allied victory game loosing a team member for me is enough reason to say the "team" is defeated.

For me it isn't, so we must use a stronger measure than opinion and weigh specific advantages and disadvantages of the proposed rules instead.

But as there is a new team meeting the victory conditions, a new timer is set for that team.

No, both the team and the sets of mutual allies are still the same.
The only thing that changed is the set of active mutually allied players, where the "active" part seems as unrelated as 500 wood to me.

The wonder victory description is wrong because it doesn't state the defeat part anywhere.
Defeat isn't a diplomacy change (that's wrong in the string and in the only reference in the revision proposal I saw: https://code.wildfiregames.com/D972#55526 ("ok to me" isn't a rational argument)).
Changing the set of allied active players is different from changing the set of allied players.

The timer will be reset when the Wonder is destroyed or captured or in allied victory when the owners alliances change.",

So I ask to ensure that a player still wins wonder victory after holding a wonder for X minutes, even if his ally behaves against the interest of that player or messes up:
(1) don't reset on defeat of other players
(2) don't reset on diplomacy change of other players

The current ruleset has so many constraints, that it is much less likely to fulfil, making it an unattractive victory condition.

I urge you to reconsider what your anti-use cases were that lead you to change this to begin with. If it's a weird situation, for instance that someone can win by allying the wonderowner a second before the victory, that effect must be compared to the negative impact that changing it to the current state lead to.

Victory conditions should not be be optimized to make it easy for the developer to think through all possible consequences of the rule (which group of players can win) but to optimize player experience (ease to think through everything is a playerinterest too, but not the only one).

As I said the wonder owner is the one who in doubt has to invest order of magnitude more for the team to achieve wonder victory, so it shouldn't be to his disadvantage if his allies do things that lead to their defeat.

Another impact contrary to the idea of wonder victory that gives it it's name is that you can reset the wonder victory timer either by destroying or capturing the wonder or by defeating one ally.
So the team focuses all their energy on defending the wonder, but the attacker may just plot to take out the weakest enemy instead. That's not the idea of wonder victory.
It leads to just garrisoning one woman in the victory to stay alive if regicide is disabled, that's also not a desirable effect.
The former wondervictory behavior was correct as is it was.

imo that shouldn't happen
if that gets a more public opinion
I feel something is broken here
those rules are wrong imo.
I'm okay with

Those are opinions without arguments, I like red over blue, so what? There are less sentences explaining your opinion than above statements.

enemies of eachother can win together. imo that shouldn't happen

I think there is a logically wrong conclusion / fallacy here.
AlliedVictory means that if one player wins, his allies will win too.
It nowhere states or implies that enemies of each other can't win simultaneously.
In order to win, one has to satisfy a victory condition or win allied victory, not more, not less.
Imagine a game where a player wins if he can survive X waves of attackers or gathered X resources with Y minutes. Multiple players can win that regardless of diplomacy.

For keeping this symmetrical when diplo changes
To keep symmetry on player defeat reset the wonder counter

X is equivalent to Y is more symmetrical than X implies Y, but that doesn't seem like an argument to change it that way.
Symmetry does have value in some places, for instance it can make text easier to read, or one can apply the same rule twice to predict an outcome, but compare that to the actual gameplay effect that this implies.
Now it's more symmetrical for the developer, but still not for the player (one player that invested everything into that wonder, the allies investing nothing or less than the player, with free diplomacy they can even change their interest in the course of the timer while the wonderowner might not change his interest to pursue his timer.)

Imarok added a subscriber: Imarok.Jul 3 2018, 4:49 PM

se>>! In rP21441#31054, @elexis wrote:

So when I commit a bug and call it "commit a bug", it's not broken because it does what it claims to?
Why do we have the concern feature if we don't use it to keep a list of things that should be fixed that are related to a known commit?

It's not a bug. It's a different perception of how it should work.

But I agree a reduction in the team should not reset the timer. If this still needs some discussion, I think we should discuss this in the forums or in a ticket.

lyv removed an auditor: lyv.Mar 30 2019, 9:36 PM

If this still needs some discussion, I think we should discuss this in the forums or in a ticket.

Has a topic or a ticket for this been made? For I could not find it.

Has a topic or a ticket for this been made? For I could not find it.

Ticket made by langbart at #6527.

I side with 'shouldn't reset the timer'.