Summary: [metaticket] Multipliers/policies half-bakery
                 Project: Freeciv
            Submitted by: jtn
            Submitted on: Tue 01 Jul 2014 23:47:05 BST
                Category: None
                Priority: 5 - Normal
                  Status: Need Info
                 Privacy: Public
             Assigned to: None
        Originator Email: 
             Open/Closed: Open
         Discussion Lock: Any
         Planned Release: 



A place to dump ideas related to the "effect multipliers" feature being added
in patch #4830.

If any of these grow legs, they probably want breaking out into their own


*Limits controlled by effects*

Initially the min/max for multipliers is static. By analogy with the
"Max_Rates" effect, it would be good to have it able to depend on overall
government, wonders, etc, so that better governments allow you more (or
less...) freedom to set policies.

Sketch for how rulesets could specify this:

type    = "MultiplierMin"
value   = 3
reqs    =
    { "type", "name", "range"
      "Multiplier", "Free Speech", "Local"
      "Government", "Republic", "Player"

type    = "MultiplierMax"
value   = 7
reqs    =
    { "type", "name", "range"
      "Multiplier", "Free Speech", "Local"
      "Government", "Republic", "Player"


*Cost to change* / *Limit change frequency*

It would be good to have some way(s) to optionally attach a cost to changing
these settings.

* Sliders could be used for fundamental, government-like policies, to which
you want to attach a revolution-like cost.
* Some effects can be used within a turn. It would be good to allow sliders to
be used with such effects without rewarding micromanagement.
** Imagine a trade-off of infantry vs cavalry strength, for the sake of
argument; you want to be able to prevent a player choosing a setting favouring
infantry, attack with infantry, then favouring cavalry and attacking with
cavalry, getting the best of both settings. (There are probably less contrived
** (We get away with allowing free manipulation of tax rates because they only
take effect at turn end.)

Possible cost/delay mechanisms:
* You have to pay a cost in gold depending on the magnitude of changes
* Cumulative changes over a threshold since the last revolution plunge you
into anarchy
* Changes to sliders simply don't take effect until next turn

Cost function idea: a set of settings is described as a multi-dimensional
array of coordinates in a "cost space"; the cost of changing from one setting
to another is the distance between these points. (Players only see the
relative costs, the absolute numbers of the "cost space" are a meaningless
internal detail.)

name = _("freedom of speech")
start = 0
stop = 10
step = 2
default = 0
; changing this is expensive
cost = 100

name = _("work time")
start = 2
stop = 10
default = 2
step = 1
; changing this is cheap
cost = 20

So the abstract 'cost is 100 per step of freedom-of-speech + 10 per step of
work time (in either direction). A full-scale change of both costs 10*100 +
8*20 = 1160.
You can hang gold costs, revolution thresholds etc off this cost function via
some effect-based factor (allows "statue of liberty" free policy change



How on Earth are we to teach the AI how to use this? It's a ruleset-defined
trade-offs feature; teaching the AI to understand and manipulate arbitrary
trade-offs sounds hard.----


*User interface*

This is currently presented as numeric sliders, which matches our effects
system. However, there might be value in having policies which are presented
to the user as boolean, or discrete enumerated types; this would affect
display only, the underlying data model remains that of linear numeric
effects. This would be some extra properties in multipliers.ruleset that only
the client looks at.


*Generalised tax rates*

What would it take to make science/lux/tax rates a special case of this
* Need to be able to specify a group of 3 related sliders with appropriate
constraints on all 3.
* Need effects for current tax rate values.
* Need to teach AI how to locate tax-rate-like constructs in rulesets...


Reply to this item at:


  Message sent via/by Gna!

Freeciv-dev mailing list

Reply via email to