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 [email protected] https://mail.gna.org/listinfo/freeciv-dev
