-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hey,

I'm a master student AI and I'm currently investigating whether wesnoth
is suitable to use for my thesis. I'm new to AI development for Wesnoth.
I've played wesnoth a little bit for the last couple of months.

Why am I thinking about doing something with wesnoth regarding my thesis
?

* wesnoth is open source
* python AI API available (IMHO python is powerful,suitable for research
and my personal favorite)
* I like playing wesnoth
* wesnoth's engine seems nice and fast
* I like the simplicity of the wesnoth game rules
* there are AI's for wesnoth available (I know of the default c++ AI,
chesslike python AI, sample python AI)
* there's room for a new "smarter" AI

To give you a rough idea about some rough ideas I currently have for
possible directions : try to handle the huge state space, analyze a
played game (or a map) by using some machine learning
technique,generating map specific AI, adapting AI to map and/or opponent
factions, Reinforcement Learning.

Some things I have to do before making the final decision whether or not
to use wesnoth for my thesis :
* I have to figure out the scientific part. I have to come up with a
research question, problem statement and that kind of stuff. I have to
do literature research. I have to figure out exactly what I am going to
do and how. But I can probably handle all of that myself with a little
bit of help from my supervisor.
* I have to figure out some practical stuff and I'm hoping you guys can
help me shed some light on them.

For me the most important is graduating with original,new and exciting
research. It would be nice if my research would result in a nice and
usable AI but this probably can't be the goal of scientific research. I
want to open source my work and I will try hard to do so but sadly I'm
not yet sure whether my university will allow that.

I read a little bit about restricting python. I do like
reviewing/renaming solutions but personally I don't like technical
restrictions. Python being powerful/versatile makes it a nice language
for doing research with (you can hook into all kinds of existing stuff,
you can quickly prototype something). IMHO you probably can't restrict
any c++ AI so IMHO considering restricting python AI's but not c++ AI's
seems inconsistent. Also it's not like there are lots of python AI's
available for wesnoth so the reviewing/renaming solution probably
doesn't add much to the workload of the volunteers who do this.

Here's some practical things I've discovered but please correct me if
I'm wrong :

 * I think it's possible for games to be played within a few minutes. I
did some testing with default AI's which confirms this (starting from
command line games take roughly 10-80 seconds). My research AI will
probably be a bit more time consuming than this default AI but I think
I'm safe here.
 * As I understand it each turn the AI is re-initialized. Assuming
set_variable() and get_variable() will only work for variables and not
for (more complex) objects,dictionaries,lists,lists of lists (matrices)
this will mean I have to pickle my objects and matrices. Assuming that
importing cPickle is allowed this will probably mean an overhead in the
order of seconds per game. (IMHO it would be nicer if you force python
AI's to implement a save and load function but that approach might have
the drawback of a slightly steeper learning curve)

So here's a list of practical stuff that's not yet clear to me :

 * if python will be restricted somehow in the future will I be able to
turn this of by compiling wesnoth with --unrestricted-python ?
 * if python will be restricted somehow will I still be able to import
standard python libraries ? I consider math,random,cPickle and some
module(s) for threading most essential.
 * Are there differences regarding the python AI API between the 1.2
stable branch and the 1.3 development branch of wesnoth ?
 * Do you think I should run the 1.3 development branch of wesnoth or
the 1.2 stable branch of wesnoth ? Why ?

Practical stuff about finishing :

 * Is there some way for the python AI to know when the game is finished
? It's really important to have something like this because without this
it makes it really hard to make your AI actually learn.
I would like to know at which place I (the current python AI) is
finished and I would need to know how much players were in the game
(finishing 2nd out of 2 players is bad whereas finishing 2nd out of 8
players is quite good). Most learning probably happens after a game is
finished.
 * To be specific : I would like to have the following "finishing stuff"
: knowing whether or not the game is finished, knowing which place I
finished at (knowing the place of all players would be nice), knowing
whether the game is started from command line(all time available) or gui
(less time available either enforced or just make sure not to use too
much time),being able to do some computation when the game is finished
 * Consider the following 2-player example if I would use some basic
reinforcement learning technique (such as q-learning) I can give a
positive reward to all my actions when I'm finished at first place and a
negative reward for all my actions for finishing 2nd place. Giving out
this reward probably isn't computationally heavy but it needs to happen
after the game is finished.
 * Consider another (2 player) example. My python AI plays against the
default AI but after the game is finished I apply some Machine
Learning/Statistical technique to find interesting places on the map.
This can actually be computationally heavy if needed because ideally it
only needs to be done once for each map and it can be done offline by
me. The stuff you learn here can be used "online" in the map specific
part of my AI.
 * When running wesnoth from GUI python AI's should make sure not to use
(too much) noticeable time.
 * When running wesnoth from command line the allowed time for
computation after having finished a game isn't important because human
players don't see this. Only some AI developers would use it.
 * If this "finishing information" doesn't exist can this be included in
the next development version of Wesnoth ?
 * If this "finishing information" doesn't exist can you please give me
some pointers about how to implement it myself and most importantly where.

I will probably take a while until I can say something definitive about
whether my research will use Wesnoth or not.

Thank you very much for your feedback,help,tips and suggestions. Feel
free to ask any questions :)










-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQFGX0qPadqpfxv/6LsRAuprAJ9wCseciBU0FaZkVXVocezcRFVAwwCdGhT3
dACRcZuJ/1Snh2Pcbsm0LG8=
=xohw
-----END PGP SIGNATURE-----

_______________________________________________
Wesnoth-dev mailing list
[email protected]
https://mail.gna.org/listinfo/wesnoth-dev

Reply via email to