Show whole topic Dec 16, 2012 3:24 pm
Toranaga Offline
Developer
Registered since: Dec 28, 2005
Location: Hamburg


Subject: Re: Ai implementation
Hi Razvan,
welcome to the maxr board and thanks for your efforts and sharing the code! Happy
As you might have already suspected, you're not the only one who thinks about AI. But you're one of the few who actually presented some code and didn't just post on the board that he wants to work on the AI (if you search the forum you will find some AI approaches that never really got to something usable).

I myself started some time ago to write an AI that is in general like yours, i.e. it connects like a regular player and behaves like a "bot". You might be interested in this thread, there is some info (and also a practical application to put this "bot" to some use in a scenario game): http://www.maxr.org/...q=scenario
I wrote it in JAVA (because for my job I'm writing C++ and wanted to keep a little up to date to JAVA...) and started with an empty project (but of course knowing some of the code of maxr). But having no time I skipped the project (for now?).

In general there should be some work/plan on how to really make an AI and not just start some more little individual projects that are discarded after some time. This shouldn't mean that your efforts are not appreciated! It's just that for the maxr project we would need something mid/long-term that will scale up and can be maintained and extended.
But I have to say: The maxr team is currently focussing on the multiplayer part and having the full feature set of the original M.A.X. for multiplayer. And unfortunately I also have to say: Currently not much work is put into maxr as none of the developers find the time.

About the options for an AI in general. I see two different approaches:
A) Make a bot that connects like a normal player.
B) Integrate it in the server, so that the AI has easier access to the world model.

I started myself with A, because it's of course a nice project to work on and you're independent. Negative: You have to implement many things twice (as long as the code is not easily reusable from the maxr code base), e.g. parsing the unit description xmls. And second: We have no "formal" specification of the network-protocol and the xml descriptions. These sometimes change and then the bot breaks. If we want to go for A, we would have to make sure that we don't change protocols once they were released.

In my opinion we should aim for B as I think it's more appropriate for a game and very probably easier to implement (this is no academic project where we do "general research" about AI and therefore would like to simulate an independent AI-agent).

Would be interested to hear your thoughts.

Yours,
Paul

P.S.: If you want to share, I would be interested to hear where you make your PhD and with which topic.
Paul Grathwohl (pagra)