Thank you for your feed back so far. I got some new options based on it:

I understand that in order to record I need to change the server -
either to make it record a game it self or to send the information to
something else that will record it. Would it be much work for me to
add a recording feature to the server itself compared to sending it to
someone else? Server side recording will have the additional benefit
of helping other AI's that wants to learn from records and also be a
half replay feature. In fact, if I did it this way, I would probably
also implement a playback mechanism using the Java game playing
interface in order to debug it and the recording mechanism. (Identical
initial state, including random seed, in server. One connection pr
player that would execute it's actions. Connect as Observer to view) I
know that having the playback tied to Java is far from ideal but still
more than nothing. It may even inspire someone to write a play back
mechanism that won't require Java.

An issue brought up by the developers is cheating in order to make the
AI be more of a challenge. One way to cheat is to change Freeciv from
a partially observable environment to a (more) fully observable
environment or to increase it's production like the official Freeciv
AI does at the difficulty level "cheating". A partially observable
environment is actually a feature for many cases of academic AI since
it's more challenging and therefore ideal to test ways of doing AI for
partially observable environments. On the other hand I realize that
cheating is a requested feature and that it probably could make the
system I'm hoping to connect better. (It may be interesting to compare
a cheating version of the AI I'm hoping to connect to a non-cheating
version of it everything else being equal)

One way to facilitate cheating would be to export access to the data
structures.  As I really like Freeciv's generalization I got an idea
for an alternative approach: Some cheats may be done as effects. Rule
sets could let the AI cheat based on AI-level like the default rule
set does for Cheating today. This way the changes would also be
available to other uses. An effect for looking inside enemy cities for
example could be used for an ECHALON wonder. Should actions get
generalized it could also be used for spies and diplomats "check out
city" action (with range local). A hack to even the odds in a game
with an experienced player vs a new player could be to give the same
advantages an AI would get to the new player by adding the effect to
his nation. (This could be made cleaner and more fine grained by
adding a server setting, say "/set cheatFlag SeeInsideEnemyCity
player1". This could be used as requirements like "CheatFlag",
"SeeInsideEnemyCity", "Player") Would it be possible to reuse the
existing protocol for things like looking inside enemy cities or is it
to tigthly tied to spy's and diplomats to do so? If it is would
reusing current client protocol extended with packets to say "I'm an
AI and level is" + cheats as effects probably be more or less work
than sending data structures? (Would the difference be big or small?)

One last thing: I had an accident this week. It has temporarily
redused my work capacity a lot. I know it may be hard to communicate
with a late responder since you forget the details. Would you prefer
that I start asking again later instead of being late like now? (I
could use my remaining work capacity on other areas while I get
better) It will probably be 2 weeks before I can do serious
implementation work.

Freeciv-dev mailing list

Reply via email to