Complete.Org: Mailing Lists: Archives: freeciv-ai: July 2003:
[freeciv-ai] Re: Hi, I'm back. aiclient

[freeciv-ai] Re: Hi, I'm back. aiclient

[Top] [All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index] [Thread Index]
To: Manuel Gutierrez Algaba <stemanolo@xxxxxxxx>
Cc: freeciv-ai@xxxxxxxxxxx
Subject: [freeciv-ai] Re: Hi, I'm back. aiclient
From: Raimar Falke <i-freeciv-lists@xxxxxxxxxxxxx>
Date: Wed, 2 Jul 2003 11:16:08 +0200

On Tue, Jul 01, 2003 at 07:34:53PM +0200, Manuel Gutierrez Algaba wrote:
> El Mar 01 Jul 2003 08:09, Raimar Falke escribió:
> > > There's no easy way to do AI, and the ideas are many, that requires that
> > > the process is as abstract and structured as possible. Part of my project
> > > was to feed each of the engines with "fake" data so that the debugging
> > > was much faster. Having a socket-fed aiclient gives the possibility of
> > > creating series of orders:
> > > move settler 10,30;
> > > fight falanx 7,6;
> > > ...
> > > so the ai can be debug without the need of running the entire program.
> >
> > While this is a nice idea it won't work IMHO. The problem is that the
> > (at least a top-down) AI has to check the results of the
> > commands. Example: you have a unit which has moves left. The AI
> > decides that the unit should attack an enemy unit which is nearby. You
> > issue the attack order by there is no fight. Where is there no fight?
> > One cause could be that the enemy unit moved away. As a client AI you
> > have to cope with a changing world. Here a server AI has an advantage
> > because it can "freeze" the whole game until all of its actions are
> > carried out. Back to the fight. There was no fight. So the client AI
> > has to be aware of this and now since the unit still have moves left
> > have to think about further actions.
> Yes, but the idea is to "fake" the response (writing them by hand ) of the 
> server or even you can write a fake-server (which may be hard or simple if 
> that server is restricted to some parts of the gameplay) to answer those 
> queries, and thus understanding/restructuring civserver... 

Suppose the fake server answer to command A with B and then to C with
D. If the client now sends C you can't answer with D. So there is no
1:1 mapping from request to response.

> > So you aren't going to code this interface? You want to code only the
> > clisp aiclient?
> >

> That's right, but it's only because of a matter of economy, I'd need
> many hours to understand the socket C client and packets, you'd need
> many minutes, only. But, consider this just as a request. Some other
> users may ask you to code a better ai-diplomacy or a green frog in
> the corner of the canvas. I'm an user that request you this to
> become a developer.

> That interface would open a lot of possibilities, 

> team-playing with the same civilization

Already possible with the current code. See "explain allowconnect".

> just chaining civclient-civclient-civlient--> civserver using that
> interface. Or text based clients (I think there're already), in the
> long run. I don't know, it's a nice idea. And someone may want to
> appear in the Credits as the guy who made it real, just forward it
> to other lists, and someone may be interested. It can be a key part
> of the future.
> And writing clips aiclients? or PyLog clients? Yes, I do think I have the 
> motivation, I've lost many games just by no managing correctly my units. I 
> can't promise extremely good AI in two months. In fact, I'm starting soon a 
> new job, and probably, I'll have much less spare time. 
> Such interface would be the Pandora box, opened for all people wanting to 
> improve the playability of civclient. And eventually, the hold for any AI 
> programmer that now or ever reaches near here. 

I understand you. We agree that hard-coding stuff is bad. So there
need commands to request information. These have to be coded timely
close to the aiclient development. However there is no need to code
these all at the start. So you (or someone other) have to extend the
interface on a regular base.


 email: rf13@xxxxxxxxxxxxxxxxx
  What's nice about GUI is that you see what you manipulate.
  What's bad about GUI is that you can only manipulate what you see.

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