Hello
I designed a new policy for map exchange in the AI evaluation code of
diplomatic trade. The current understanding, which is also documented in
code comments like "we are omniscient, we don't need other's maps" etc.,
is false. The game should simulate for good a natural interest of all
players, including AI players. So AI should be interested in purchasing
maps from other players in a reasonable way and other players should be
able to more easily obtain maps from AI players. Thus diplomacy and
gameplay benefit and there are more options for human players to gain
some Gold from AI players or insight into unexplored or outdated world
view, while I think it is or can be made non-exploitable.
New Policy:
-- DS_ALLIANCE and DS_TEAM relations always render maps for free
-- DS_WAR, DS_CEASEFIRE and DS_NO_CONTACT make map trade unavailable
-- love-for other-player below -MAX_AI_LOVE/2 or "sharing vision"
make map trade unavailable
-- recent map trade w/ other-player <= 7 days make map trade unavailable
(discriminates giving and receiving maps)
otherwise map trade is enabled
Map value calculation:
Basic Map Value: 10 * map-scale, w/ min 25 and max 120
(map-scale is for now the number of cities of the giving player)
-- added 1/3 of that for each of the following conditions:
-- dipl.-state other than DS_PEACE
-- love-for below -MAX_AI_LOVE/4
-- other-player is dangerous
-- other-player is rich (> 500)
-- other-player is super rich (> 1200)
Time related deductions:
Of the basic map value are subtracted time or event related parts of the
value.
-- a general deduction for game age (ratio of turn per 600)
-- a rebate for map trade events in the past w/ other-player (0..60 %)
(discriminates giving and receiving maps)
-- full reduction (value 0) in the first 20 days after having received a
map from other-player
-- linear sinking deduction in the days 21..32 after receiving a map
from other-player
Requirements:
-- 4 int values to be serialised into the save-game in the frame of
'struct ai_dip_intel'.
I confess I have implemented this on 3.0.4 when I had some time for it
and the tests and corrections I performed recently are running well and
looking good to me.
I put this of course to open discussion to the developers here.
Regards, Free Willy