Use trade from previous TC in traderoute bonus calculation

What would you like to see in Freeciv? Do you have a good idea what should be improved or how?
Post Reply
User avatar
soundnfury
Posts: 28
Joined: Sat Apr 11, 2020 12:09 pm

Use trade from previous TC in traderoute bonus calculation

Post by soundnfury »

The one-time revenue from Establish Trade Route or Enter Marketplace depends on the trade of the source (and destination) cities. But this trade depends on worker placement at the time the action is performed, meaning the player can make temporary changes to boost (or minimise) revenue, then change them back before TC. This is bad for several reasons:
  • It creates tedious micro, which players may feel compelled to do to remain competitive in multiplayer.
  • It's not clear from the documentation that this is possible, so some players may be unaware — yet another 'secret trick'…
  • Ephemeral changes shouldn't have lasting effects (similar to the "set lux rate to max during turn to increase incite cost"), partly because it doesn't make logical sense and partly because it creates an advantage in longturn games for being online at TC.
To remedy this, I propose that the city's trade output be stored at each TC, and this value used (rather than the instantaneous trade) in trade revenue bonus calculation. That way, in order for a civ to get a bonus from generating lots of trade in the source city, it has to actually spend a turn generating that trade (potentially at the expense of food, shields etc. output from the city).
Creator of the Aviation ruleset. Try it out today!
nef
Elite
Posts: 324
Joined: Mon Jun 25, 2018 5:01 pm

Re: Use trade from previous TC in traderoute bonus calculation

Post by nef »

More than just worker placement. In the (modified) civ1 games I always stay in despotism for its shield production and (free) army support. When forming trade routes I temporarily change the CMA and also the government to democracy. The change is an increase of about 120% or more. Micro management is a chore but cash is in short supply in despotism. Definitely an exploit also present in the commercial version.

There are several ways to provide a 1 turn delay but in the end this is just that - a one turn delay. In the case of trade one could consider something more persistent - like using city size instead of trade.

Which brings me to another point barely related - fc uses current gross trade but Civ I used trade nett of recurrent revenue from existing trade routes. It is possible to change total OTR by changing the order you create the routes, but for me this is getting ridiculous so I don`t use it. But it might make a difference in LT games.
cazfi
Elite
Posts: 3077
Joined: Tue Jan 29, 2013 6:54 pm

Re: Use trade from previous TC in traderoute bonus calculation

Post by cazfi »

nef wrote:like using city size instead of trade.
That's what you get with the server setting trade_revenue_style value CLASSIC.

In 3.0:

Code: Select all

> explain trade_revenue_style 
Option: trade_revenue_style  -  Trade revenue style
Description:
  The formula for the trade a city receives from a traderoute. CLASSIC
  revenues are given by the sum of the two city sizes plus the distance
  between them, with multipliers for overseas and international routes.
  SIMPLE revenues are proportional to the average trade of the two
  cities.
Status: changeable
Possible values:
- CLASSIC: "Classic Freeciv"
- SIMPLE: "Proportional to tile trade"
Value: "Classic Freeciv" (CLASSIC), Default: "Classic Freeciv" (CLASSIC)
Edit: This helptext was still wrong in 3.0.0-beta3. It has been corrected to above one since.
User avatar
soundnfury
Posts: 28
Joined: Sat Apr 11, 2020 12:09 pm

Re: Use trade from previous TC in traderoute bonus calculation

Post by soundnfury »

cazfi wrote:That's what you get with the server setting trade_revenue_style value CLASSIC.

Code: Select all

  The formula for the trade a city receives from a traderoute.
Is that one-time revenue, though, or ongoing trade? Or does it control both? The relevant section of "Math of Freeciv" on the wiki appears not to have been updated since 2.2 so I'm not sure I trust a word it says… I might have to RTFS… seems like caravan_bonus_style might be the one I want. And looking at the code… it appears that CBS_CLASSIC is proportional to O_TRADE surplus of both cities, whereas CBS_LOGARITHMIC uses max_trade_prod().

So one way to avoid this problem is to use caravan_bonus_style=LOGARITHMIC, though that may also affect balance or other dynamics of the game.

trade_revenue_style on the other hand really doesn't matter for this issue, because ongoing trade revenue is accrued at TC so the "true" trade output of the city is what determines it (instead of potentially being some mid-turn value from temporarily moving workers and putting them back before TC).
Creator of the Aviation ruleset. Try it out today!
Post Reply