Complete.Org: Mailing Lists: Archives: freeciv-ai: February 2005: [freeciv-ai] Making novice level easier by fixing the AI's tendency to o

[freeciv-ai] Making novice level easier by fixing the AI's tendency to o

[Top] [All Lists]

 To: freeciv-ai@xxxxxxxxxxx Subject: [freeciv-ai] Making novice level easier by fixing the AI's tendency to overbuild From: saywhat@xxxxxxxxxxxx (Eddie Anderson) Date: Fri, 25 Feb 2005 02:23:12 -0500

```Short version:

I have an idea that may fix two problems at once:

Problem 1:
The "novice difficulty" AI's tendency to defeat novice players

Problem 2:
The AI's tendency to paralyze itself under rules that punish ICS

As I see it, both problems occur because the AI apparently has
no internal limit on its desire to build cities.  My idea is to
create a user-adjustable limit for the AI's city building.
Unlike some other limits, this limit can be enforced without using
unhappy citizen effects.  Here's how:

This solution has three rules.  All the rules refer to "X".  "X"
is the maximum number of cities that an AI civ is allowed to build.

Rule 1:

If an AI civ already has X (or more) cities, do not allow it to
issue a "build city" order to a Settler.

Rule 2:

With Rule 1 in place, extra Settlers become unnecessary.  But
other sections of the AI's logic may still be tempted to build a
Settler.  To override that, we have to prevent the AI from
building a Settler when it already has enough.

How many Settlers are enough?  Enough to build the civ's Xth
city.  E.g. if "X" = 6 and the civ already has 4 cities and 1
Settler, then that civ should build, at most, one more Settler.
Note that this calculation should also include any Settlers that
the AI is already building in other cities.

To implement this rule, I imagine that the code that
determines the city's production choices needs to be changed like
this:

a) the number of cities in this civ
b) the number of Settlers owned by this civ
c) the number of Settlers under construction in this civ's
other cities

If a+b+c < X then build a Settler.  Otherwise build something
else.

Rule 3:

At the beginning of a game, when a user selects a difficulty level
of "easy" or "novice", then automatically set X to a low value
(e.g. 2).

For other difficulty levels, tell the user to set the value of
"X" as s/he likes.

So what should "X" be?  My suggestion is to use the existing
value that appears in the popup city report (on the happiness tab).
AIUI, that value is:

cityfactor + empire_size_mod.

With cityfactor set to 6, that combination starts the game at
"2" (under despotism) and increases to a maximum of 6 under
democracy.  (BTW I think that Republic's empire_size_mod should be
changed (down to -2 or maybe -3) in the interest of making Republic
less powerful.)

When higher values of "X" are desired (e.g. for non-novice
games), "X" can be set higher by simply changing the value of
cityfactor.

Or "X" could be a completely new and independent variable.  I'm
open to suggestions.

If there's sufficient interest in this idea, then I will post a
"long version" description of it and its subtle effects.  There are
many potential benefits from this change.  Initially I didn't
realize some of its possible uses.  But as I was writing this, I
recognized a wide variety of potential uses and benefits.