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

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

[Top] [All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index] [Thread Index]
To: freeciv-ai@xxxxxxxxxxx
Subject: [freeciv-ai] Hi, I'm back. aiclient
From: Manuel Gutierrez Algaba <stemanolo@xxxxxxxx>
Date: Sat, 28 Jun 2003 11:16:39 +0200

Hi,
        I was "working" with Mitch Davis and other some years to go to build an 
AI, 
but finally I never did anything. I did my final year work about AI in a 
"freeciv-like" game, which was interesting but not what I had in mind. I'm 
the author of the wegener generator map, included in the ftp server. And my 
name, with the old email (irmina) appears in the "people" section of freeciv. 

        After having thinking and experienced a lot about, AI development and 
open 
software, I think that "big leaps" are much harder to take in soft. 
development. 

        I think that anybody that has a slight idea of "freeciv AI" knows to 
facts:
- Rules are hardcoded in C.
- It'd be a great idea to split "decision-taking" and "decision-execution" . 
- AI should be a client, as civclient (almost) 

        I'm not going to plan any big development or anything that cost a lot 
of 
effort on any developer. Besides, due to the lack of time, I'll keep coding 
collaboration in a 0 status, at least the freeciv C code. 

        Well, that's my idea. freeciv playing management is hard, I mean, when 
you 
have 100 cities and 300 units it's hard to move them... ok? Fortunately, we 
DO have people with motivation enough to write war clients, that means that 
there's a small ammount of energy which is being spoilt by the main freeciv 
code. There're many ways of starting an AI coding. We may start here. War 
clients. How ? With a simple small step.

        Per is right, when he says that civlog has all the info about the game. 
But it's in the server. Just imagine this: a small client of the civclient 
program, thus the structure of freeciv would be:
    aiclient --> civclient --> civserver , where --> is a socket connection

What's the flow in aiclient--> civclient ?
Well, as I say, any user wants to manage cities and units the right way. 
aiclient 0.0.1 has this input from civclient (to start with):
- city/ production \n  . So this can be parsed by a perl, prolog or a python 
code ( that is aiclient may written in anything) . This says to aiclient 
what's everyone producing. This is a "get" instruction.

- city-prod-change / new production \n  . This is a "set" instruction. 

This is a model of the kind of SNMP, set/get-next/get. 

So you may have a script ( aiclient, connected by a socket to civclient) to 
change the prod of all your cities coding in the aiclient in your favourite 
language.
This has several advantages:
- As I say, people want to improve the playibility of the game, and get more 
power. 
- The code of freeciv remains untouched, almost, just civclient must fake the 
orders coming from aiclient and send what receives from civserver to 
aiclient. So great development stability. 
- Small steps, but real advances in every single step. 

As you may imagine, the aiclient will converge over the time into a superb 
aiclient for artificial players (just connecting them directly to civserver).

Well, tell me what you think. I may help in aiclients written in python and in 
guidance and profecy (as always :) ) .

---
mga



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