Complete.Org: Mailing Lists: Archives: freeciv-dev: September 2002:
[Freeciv-Dev] Re: city_incite_cost
Home

[Freeciv-Dev] Re: city_incite_cost

[Top] [All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index] [Thread Index]
To: "Per I. Mathisen" <per@xxxxxxxxxxx>
Cc: freeciv-dev@xxxxxxxxxxx
Subject: [Freeciv-Dev] Re: city_incite_cost
From: Thomas Strub <ue80@xxxxxxxxxxxxxxxxxxx>
Date: Wed, 25 Sep 2002 22:19:39 +0200

On Wed, Sep 25, 2002 at 05:21:30PM +0000, Per I. Mathisen wrote:
> On Wed, 25 Sep 2002, Thomas Strub wrote:
> > i think that the city_incite_cost for cities with units, buildings and
> > wonders in it is to cheap.
> >
> > My approach for city_value is not final, so feel free to upgrade it.
> 
> I intend to change this function to
> 
>       int city_incite_cost(pplayer, pcity)
> 
> and remove pcity->incite_revolt_cost before adding the AI diplomats patch,
> in order to get some code consistency. This means moving the
> half-price-if-previously-your-city check into this function.

Have no problems with that.
 
> Anyway, back to your patch.
> 
>    if (city_got_building(pcity, B_PALACE)) {
>      pcity->incite_revolt_cost = INCITE_IMPOSSIBLE_COST;
> 
> I think INCITE_IMPOSSIBLE_COST should be changed to -1, so that bugs
> dealing with it don't get hidden but properly blow up in our faces.
> 
> Anyway, another digression.

A decision of coding style. 
 
>    } else {
> -    pcity->incite_revolt_cost = city_owner(pcity)->economic.gold + 1000;
> +    goldfactor = city_owner(pcity)->economic.gold + 1000;
> +    goldfactor *= pcity->size;
> 
> Instead of size, I would like to multiply by the number of happy people in
> the city times two. So it gets harder to bribe happy cities, which makes
> sense, I think. Also this multiplication should be moved down to right
> before the distance division, so that it affects everything in the city.

I think perhaps the score number would be better.
2 for happy
1 for normal
0 for unhappy/angry (perhaps -)
1 for specialists

Perhaps with an additional *2 for celebrating cities (begin of turn
celebrating, not at the moment. Because otherwise i play 99% of turntime
with max lux ... and not anarchy)

>      pcity->incite_revolt_cost /= (dist + 3);
> 
> This should be moved down, so that all costs are divided by dist. We
> should retain the rule that incite costs go down dramatically as we
> approach the empire's periphery. This is an important civ mechanic, and
> one which makes a lot of sense.

I know its an important mechanic. But more later.
 
> IMHO, this and the size multiplication provide the balance that the other
> factors should be adjusted by. No factor should be added to the cost
> unadjusted.

I have no good idea how to do that and get fair numbers.
 
> +    unit_list_iterate(pcity->units_supported, punit) {
> +      city_value += unit_type(punit)->build_cost/2;
> +    } unit_list_iterate_end;
> +
> +    unit_list_iterate(map_get_tile(pcity->x,pcity->y)->units,punit){
> +      city_value += unit_type(punit)->build_cost/2;
> +    } unit_list_iterate_end;
> 
> I think we should choose here which one of these we want to use. Both is
> overkill. I think I would go for units actually in the city, since they
> make it harder to revolt, while units away from the city contribute
> unhappiness, the very in-game reason behind revolt.
 
I think for the value of a city both are useful. Perhaps 1/4 to 3/4 is
better. But a city which is supporting units should be more expensive
than a city which isn't.  

> +    built_impr_iterate(pcity, i) {
> +      if (!is_wonder(i)) {
> +        city_value += improvement_value(i)/2;
> 
> For non-ICS games, ouch. Divide at least by 4.
> 
> +      } else {
> +        city_value += improvement_value(i);
> 
> It will be almost impossible to bribe a wondercity then. Maybe that is a
> good thing, though. Or halve this by two.

The numbers aren't 100% balanced, but i think that the values should be
something like that. A city with 5 clads for 30 gold is a joke.

> +    pcity->incite_revolt_cost += city_value*4;
> 
> ???!!

There is a big problem to get numbers which are fair. With my current
solution a city with temple give costs 40/2*4 = 80 more than one
without. With the modifiers that number can change

goldfactor * sizemodifier is ~ 1500*4 = 6000
city_value is ~ prodution of last 50 rounds = 400 

So adding the city_value is useless it nearly doesn't change the
buycost for normal cities.
The money in the capital is far away, because that the
distance-modifiers. But the buildings are local. So i divided them
by a distance-modifier = 1. 

I would change the buy back modifier in:
normal city: 2
original enemy city: 4
original own city: 1 
 
> Have you tried this patch? What kind of values do you get? Can you give
> some examples of costs for various cities?

I have tried it and cities get little bit more expensive. The first
concept from me was to make buying cities expensive. 
Cities with low distance to capital got cheaper after buying a wonder
... (the round after)

Thomas
-- 
Thomas Strub  ***  eMail ue80@xxxxxxxxxxxxxxxxxxx
Nur weil das Aufzeichnen, Kopieren und Schnüffeln bei elektronischem 
Datenverkehr leichter als bei der klassischen Post ist, darf man es nicht
einfach tun.


[Prev in Thread] Current Thread [Next in Thread]