Complete.Org: Mailing Lists: Archives: freeciv-dev: April 2002:
[Freeciv-Dev] Re: questions about agents
Home

[Freeciv-Dev] Re: questions about agents

[Top] [All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index] [Thread Index]
To: "Per I. Mathisen" <Per.Inge.Mathisen@xxxxxxxxxxx>
Cc: freeciv-dev@xxxxxxxxxxx
Subject: [Freeciv-Dev] Re: questions about agents
From: Mike Kaufman <kaufman@xxxxxxxxxxxxxxxxxxxxxx>
Date: Tue, 2 Apr 2002 15:55:26 -0600

On Tue, Apr 02, 2002 at 10:50:47PM +0200, Per I. Mathisen wrote:
> What are the current plans for Settler Management Agent? Is there any
> code, any specs or anyone working on it? Is the plan to replace all the
> current autosettlers code with this, or just some of it? And move GOTO to
> the client (please)?
> 
> Why are we not using the agents code for the server-side AI? (I know I've
> asked about this before but I have forgotten the answer and it seems so
> strange I have to ask again.)

As I have mentioned, I don't have the answers to these (Raimar has a much
better idea), but I do have some comments.

My feeling is that agents should simply be the interface between the client
and the ai. citizen management, autosettler, autoexplore, etc are more
mundane things that the human client hands off to the ai to do. It's code
duplication and bad practice to have two different sets of code do citizen
management. 

Agents should do two things. Get directives from the client to tell the ai 
what to do and then request the server to do that thing. Using CMA as an
example, the agent should 1. get the goals from the client gui and ask the
ai function what worker arrangement best satisfies that goal directive. 2.
then send some packets to the server requesting worker rearrangement. All
the actually calculation should accomplished in ai/

Actually this might be a good first step toward a more rigorous ai
advisor type setup. The advisor in advdomestic.c presents goals---just like
the human client---to the core cma code which returns the best arrangement.
The advisor then implements that arrangement in the current server-ai
setup, or will send requests to the server in the future client-ai setup.

another example is the autoexplorer. Right now, we hand the unit off to the
server which calls ai_manage_explorer. In a perfect world, the server
should not be the one doing this. There should be an agent which manages
all the autoexplorers doing the calls into ai_manage_explorer, and then
send destination or move info to the server through the regular request
packets.

I don't know that the plan was for SMA, but the plan should be as generally
outlined above. All the settler "want" code in settlers.c should be moved
to ai/ and then an agent and the helper gui should be added to call into
that code, which will then send requests to the server on a per-settler
basis.

anybody have any comments? yay, nay? Raimar?

-mike


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