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

[freeciv-ai] Opinions on some AI issues

[Top] [All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index] [Thread Index]
To: freeciv-ai@xxxxxxxxxxx
Subject: [freeciv-ai] Opinions on some AI issues
From: Gregory Berkolaiko <Gregory.Berkolaiko@xxxxxxxxxxxx>
Date: Mon, 17 Jun 2002 19:29:19 +0100 (BST)

Just to let you know my opinion on a couple of issues and maybe also 
revive the list.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
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.

%%%%%%%%%%%%%%
II. Fuzzy AI

Fuzziness is good.  AI should make mistakes.  Some might argue that the 
whole AI behaviour is one big mistake, but I disagree.  Fuzziness is cheap 
and general method to have a spectrum of difficulty levels.  We mustn't 
rely on it exclusively, of course, but neither we should ignore it.

Not much more to say, actually.
 

%%%%%%%%%%%%%%%%%%%%%%%
III. Danger estimation.

When evaluating danger, it is important to remember the most dangerous 
units.  In order to attack them later.  Right now the priority is to 
attack more expensive and less defended units.  But choosing to attack a 
caravan over a guarded howitzer can be deadly (another argument in favour 
of fuzziness: AI will always attack one and not the other -- and one can 
exploit it).  Of course it is better to kill both :)


%%%%%%%%%%%%%%
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?


%%%%%%%%%%%%%%%%
V. Ruleset tips.

More!

For example:

Bodyguarding is a great idea.  CivIII got it (I think they stole quite a
few features from FreeCiv, actually).  But to see a rifleman guarded by a
mech.inf. is hilarious!  It happens because rifleman had 5A > 5D which
qualifies him as an attacking unit.  And 6A/6D mech.inf. is a defender!  
How do we distinguish an attacking unit from a defending one?  We can 
write complicated functions or we can use more role tips in the rulesets.


Well, enough for today.

G.




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