Project

Profile

Help

HostedRedmine.com has moved to the Planio platform. All logins and passwords remained the same. All users will be able to login and use Redmine just as before. *Read more...*

Bug #871932

open

Cities processed twice in alternating games

Added by Alexandro Ignatiev over 2 years ago. Updated about 2 months ago.

Status:
New
Priority:
Normal
Assignee:
-
Category:
Server
Sprint/Milestone:
Start date:
Due date:
% Done:

0%

Estimated time:

Description

Cities are processed at the end of the phase of their player. That's good until we think about alternating players/teams cases and that city may change hands during a player's phase. Player 1 builds a warrior in a city N, then moves Player 2, kills the warrior, takes the city and builds his own one (collecting the trade and other output again), repeat for the number of player. That may be a heavy exploit allowing n allied players to exchange their cities and collect taxes n times.

Maybe that's wontfix for 2.6 but in newer versions something should be done to it. Maybe disallow one to tax a city the turn it is obtained if it has been already taxed that turn.


Related issues

Related to Freeciv - Task #880778: remove_obsolete_buildings_city works too rareNew

Actions
Actions #1

Updated by Marko Lindqvist over 2 years ago

Alexandro Ignatiev wrote:

Maybe disallow one to tax a city the turn it is obtained if it has been already taxed that turn.

It should be relatively easy to just not process a city again if it has already been processed on that turn. Less straightforward, but fortunately also a lot less important, problem to fix is when city gets handed to a player whose phase has already passed and thus city is not processed at all.

Actions #2

Updated by Alexandro Ignatiev over 2 years ago

Marko Lindqvist wrote:

It should be relatively easy to just not process a city again if it has already been processed on that turn. Less straightforward, but fortunately also a lot less important, problem to fix is when city gets handed to a player whose phase has already passed and thus city is not processed at all.

Is that a problem? When a city changes hands, in the messup it's natural that some output may be lost. If you want to get all the production, conquer cities in your phases and hold them, don't wait for sudden gifts :) That's just should be impossible to get more output from the tiles than they have, losing is fun what happens sometimes. Of course we should examine the side effects better.

Actions #3

Updated by Marko Lindqvist over 2 years ago

That's not fair for the player in earlier phase. It puts players in different position depending on their phase. One with early phase do not get output from the cities exchanged, one with later phase does.

Actions #4

Updated by Alexandro Ignatiev over 2 years ago

Marko Lindqvist wrote:

That's not fair for the player in earlier phase. It puts players in different position depending on their phase. One with early phase do not get output from the cities exchanged, one with later phase does.

The earlier player does get the city updated - finishing the phase next turn that is probably not far ahead. The receiving player's taxing season this turn is over, like, the citizens just drink away out of joy whatever they save on the bureaucratic collision. Players are playing in a cycle; that cycle has to start at some position but generally it's mostly even for whatever is done per phase.

In theory, a city can be volleyed around in such a way that it never belongs to the current phase player for several turns, maybe it won't end phase in the same hands it has begun it until the end of the game... I hardly can see a universal and fair way to fix it.
Just, maybe, force processing a city at any player phase end towards its current owner if it has not been processed for two turns minus a phase before? A bit too complicated and I doubt we won't have some quirks to deal with when cities of a player are updated not in a single piece of a turn. But in fact random city processing time might become a nice effect in Longturn, so maybe worth plotting... though in this particular case I would prefer leave it unprocessed.

Actions #5

Updated by Alexandro Ignatiev over 2 years ago

Marko Lindqvist wrote:

Alexandro Ignatiev wrote:

Maybe disallow one to tax a city the turn it is obtained if it has been already taxed that turn.

It should be relatively easy to just not process a city again if it has already been processed on that turn. Less straightforward, but fortunately also a lot less important, problem to fix is when city gets handed to a player whose phase has already passed and thus city is not processed at all.

Oh wait... The solution I've suggested is uneven: inability to tax a city never happens to phase 1 player and has biggest chances to happen for the last phase one. What comes into mind is remember for any city when it is taxed its owner, turn number and phase_number * 1000 / N_phases when a city is taxed (players may attach and detach in certain games); if the owner is different at the end of the phase, don't tax it before the corresponding moment of the next turn is reached. If we put our will into taxing any existing city once in a turn, we can put all cities changing hands onto a queue and process each one to its current owner at the end of each phase when the time comes, even if it is not this owner's phase. (Maybe, for the newer versions, just fix the taxing turn fraction of any city at the value it has been founded at? In Longturn, it would be an improvement if we make the moment a city is taxed detached from phase end, maybe random, maybe owner-controlled...) But my mind is that to be counted as an owner of a city in most senses you must hold it until the end of your phase. There are some ways to abuse this rule, but that's why city transfers are more or less made uneasy in many multiplayer games.

Actions #6

Updated by Alexandro Ignatiev over 2 years ago

  • Related to Task #880778: remove_obsolete_buildings_city works too rare added
Actions #7

Updated by Anonymous over 2 years ago

If cities get tax and production at the end of the owning player's move, I'm pretty sure there's no way to avoid double or missed production on a particular turn number with arbitrary changes in city ownership allowed. So, unless there's something relevant that happens when the turn number changes, the turn number is just a distraction and trying to stick to it will put the players in unequal positions one way or the other. (but see below)

I was going to suggest to just make it so that the player (or team) must have held the city continuously for their whole move for it to produce. Which I think is what was already suggested. That could still be exploited by always trading the city to the next player in order, skipping one. I.e. on A's turn, A produces; on B's turn, trade city from A to C; on C's turn, C produces; on D's turn, trade city to from C to A; repeat.

So, make it so that the city produces at the end of the current owner's phase, if and only if it has been owned by that player continuously since the last time it would have produced?

Then, if a player gains a city during their phase, it does not produce immediately. If a player gains a city on someone else's turn, it still doesn't produce after their next move. That could be implemented simply by keeping track of the next player who is allowed to produce, only updating that right after the city tries to produce, not when the city changes hands. This also might be what Alexandro last suggested, but it's probably easier to do by keeping track this way rather than counting phases if their total number may change.

Both of those options mean that cities may skip some production when changing hands, and if they change hands repeatedly, they can go long times without producing. In particular, it would mean that it would now be impossible to e.g. build City Walls in a city just after conquering it.

On the other hand, alternating turn games already put the players in unequal setting: When player B moves, he has done one less move and production than player A. In other words, if B attacks A, the defender has had one more turn to build up than in the opposite case. This is why board games often give the later players some extra initial bonus.

Actions #8

Updated by Marko Lindqvist almost 2 years ago

  • Sprint/Milestone changed from 2.6.3 to 2.6.4
Actions #9

Updated by Marko Lindqvist over 1 year ago

  • Sprint/Milestone changed from 2.6.4 to 2.6.5
Actions #10

Updated by Marko Lindqvist over 1 year ago

  • Sprint/Milestone changed from 2.6.5 to 2.6.6
Actions #11

Updated by Marko Lindqvist 12 months ago

  • Sprint/Milestone changed from 2.6.6 to 3.0.1
Actions #12

Updated by Marko Lindqvist 8 months ago

  • Sprint/Milestone changed from 3.0.1 to 3.0.2
Actions #13

Updated by Marko Lindqvist 6 months ago

  • Sprint/Milestone changed from 3.0.2 to 3.0.3
Actions #14

Updated by Marko Lindqvist 4 months ago

  • Sprint/Milestone changed from 3.0.3 to 3.0.4
Actions #15

Updated by Marko Lindqvist about 2 months ago

  • Sprint/Milestone changed from 3.0.4 to 3.0.5

Also available in: Atom PDF