Complete.Org: Mailing Lists: Archives: freeciv-ai: June 2002:
[freeciv-ai] Re: Opinions on some AI issues
Home

[freeciv-ai] Re: Opinions on some AI issues

[Top] [All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index] [Thread Index]
To: Per I Mathisen <per@xxxxxxxxxxx>
Cc: freeciv-ai@xxxxxxxxxxx
Subject: [freeciv-ai] Re: Opinions on some AI issues
From: Gregory Berkolaiko <Gregory.Berkolaiko@xxxxxxxxxxxx>
Date: Thu, 20 Jun 2002 21:48:34 +0100 (BST)

On Thu, 20 Jun 2002, Per I Mathisen wrote:

> On Mon, 17 Jun 2002, Gregory Berkolaiko wrote:
> > I. Technology selection by AI.
> >
> > Right now the AI evaluates units (and I
> > guess buildings) that it can build to select the build but it also
> > evaluates the things it cannot yet build and if they are found useful,
> > the want of the enabling techs is bumped up.  IMO it is a very good
> > philosophy.  Unfortunately it is hard to maintain, hard to generalize, it
> > encourages spaghetti-coding and slows down the server.  Also it is hard to
> > weigh importance of musketeers on the same scale as importance of
> > cathedrals.
> >
> > Instead I suggest that tech slection be done randomly, based on some
> > general tendencies.  We can define few general tech directions, like
> > Social, Economy, Military.  Then we can have base weights for each civ
> > plus some situational modifiers (e.g. a lot of cities in danger -- go for
> > Military, too many elvii -- go for social, empty coffers -- go for
> > economy).  The next tech will be selected randomly with more probability
> > going to the more desired directions.
> >
> > This is a very basic idea.  It can be made more complicated (and therefore
> > flexible, I hope), by several means:
> > 1. Split basic directions
> >                  Military
> >             /        \
> >       Defense        Offense
> >      /       \
> >     Buildings       Units
> >
> > 2. Each tech can have a precomputed score in each of the directions.
> > You combine (scalar product) these with the civs weight and it becomes the
> > probability of this tech's selection.
> >
> > 3. Each civ can have it's character reflected in the base wieghts.
> 
> And these tech weights should be in the rulesets? No, thanks. Rather
> calculate these weights in game start. The ruleset author is not in a good
> position to know beforehand what tech strategies are going to be good and
> which are not.

If you can calculate the weights in the code, you have an algorithm and 
can therefore ask the ruleset author to apply it, if he is dumb.  And he 
can also have some freedom, if he knows something about his ruleset that 
the designers of the algorithm did not take into account.

> > %%%%%%%%%%%%%%
> > IV. Invasions.
> >
> > Invasion targets should be selected on a high level.  The current
> > "everybody is going there so I go there too" attitude is pathetic.  But
> > what is a good city to attack?
> 
> A group of poorly defended cities connected by road or rail is always the
> best target. The capital is always the second best target. The nearest
> enemy is rarely the best target.

What is a "poorly defended city"?  Is it better to go for a 4-pop city 
with one defender or for 6-pop with 2 defenders?


> We can write complicated functions or we can make rulesets complicated and
> trust ruleset authors to know how to give the AI good hints. My vote is
> for the former. Often ruleset authors don't know what units are good
> before their ruleset has been tested a few gazillion times. A calculating
> will help here. It is easy change the balance of which unit rocks with a
> tiny change with unforseen effects, which will not be reflected in AI
> hints, but may be picked up by the complicated function.
> 
> Also, for some very complex rulesets, it may not be apparent which units
> will be available at the same time as other units are. So it is not
> impossible that Riflemen are the best attacking unit. Hardcoding it as a
> defender would be wrong in that case.

It is not impossible for non-standard rulesets.  For the standard one the 
cannon (artillery, howitzer) is always a better attacker.  And it has a 
flag "AttackStrong".

And don't you think that ruleset authors are dumber than the AI coders.

In any case, there should be functions 

is_strong_attacker
is_fast_attacker
is_good_defender

so whether we opt for complicated code or just ruleset flags, the changes 
would be localized.  Also, with such functions we can combine two 
approaches.

G.



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