[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

Re: [bos-dev] Intro - Another One of Those Student Devs



New AI methods would be great. I've tried to write a good AI script but have found the inability to micromanage fairly frustrating. If you can also add functions to control individual units (especially engineers) and to find out how much magma and energy are available, that would be incredibly helpful.

On Feb 17, 2014 12:49 PM, "François Beerten" <francois.beerten@xxxxxxxxxxx> wrote:
On 02/17/14 20:30, zerted wrote:
Greetings,

I thought I should introduce myself as I'll be around for at least the next few months.  I'm a Masters student in Computer Science and I'm writing an RTS AI for my thesis.  As you can guess I'm doing it on Bos Wars.  There's a few tweaks to the game that I'm making to support better automated AI testing:  improving the command line options and adding Machine vs Machine games.

Bos Wars is a good game for RTS research.  It's a full game that isn't too complicated (Zero-K) nor too simple (ORTS).  It's maintained so it still works on modern systems, but isn't so actively developed that it's APIs are unstable (0 A.D.).  The code is free and not closed source (Starcraft) and mostly easy to understand.  There's a surprising amount of papers using Stratagus and I think that would increase if every researcher didn't have to make these same tweaks.

The largest change I'll be making is the addition of a new AI API. My AI needs to have the same abilities of a human player and the nice AI framework you guys have is too simple.  I don't have all the details yet, but I'm thinking of:

* OnUnitVisible() - List of all newly seen units this cycle/turn.
* OnUnitHidden() - List of all units that moved out of sight (and maybe died.  I'm not sure how to handle entering/leaving transports.)
* OnDiscoveredTitle() - Titles the AI has uncovered.  This is only used for unexplored areas, not fog-of-war.
* OnActionCompleted() - Completion of something the AI asked the game do to.
* PerformAction() - How the AI yells at it's units.
* GetUnitStats() - For getting details about units (health, location, etc...).

I was thinking of only passing around unit ids to avoid tolua++ object reference issues.  I want to keep the cross talk as minimal as possible.  I know some of those functions already exists in various states.  I need review the current AI API a lot more.  I'm not sure how this fits in with BigBrain, if at all.

While it doesn't have any bearing on my thesis, I'd like to work with you guys and try to get my AI updates into the game.  If I can improve the game, I'd consider that a job well done.  Research is pointless if it isn't applied anywhere.

Regards,

~zerted
Hi Zerted,

We are very happy to see you join us. There have been quite a few academic projects on Bos Wars, but sadly they never effectively contributed back. I really like your 2 last sentences.

About the technical aspects, I propose we do it over IRC where we already started the discussion. Note that the AI in Bos Wars exists in different places. You have the top level AI scripts which mostly just tell the gllobal actions that need tbe done. Next AI code in the engine to perform the global action by the AI player. Finally, we have AI code in the engine for all units (example path finding, target selection and so on).

Best,
Feb.