Jump to content

Introduction


Recommended Posts

Hi!

I'm Andrea and I'm a student from Italy (University of Bologna).

I'm developing an AI for 0ad as my thesis for my Master in Computer Engineering and I wanted to introduce myself in your forums since I thought it would be nice to start posting here some of what I was doing.

The main theme of my work is to use BDI Agents to govern the behaviours of the AIPlayer's units and buildings: in essence every unit (and building) is an intelligent agent with his own beliefs, desires and goals and they all interact to achieve different objectives.

Instead of having a single mind like the other AIs, this one aims to reach the main goal by having multiple simple minds interact.

I've already developed the underlying framework and I'm now adding the agent's behaviours, so I'll soon start to share the Bot to see how it goes against better players than myself ( since I've always loved RTSs but I was never very good at them :sorry: ).

Since I'm very interested in game development I'll also try to help if needed with other parts of the project; I've used Java, C++, PHP, javascript and other languages in the past but I'll need to refresh a bit my C++ since I've mostly programmed in Java in the last 2-3 years.

See you in the forums and probably in your dev chat too (if it is open for everyone). :cheers:

Link to comment
Share on other sites

Welcome to the 0AD forum.

In the dev chat I could read:

'interesting thread btw: http://www.wildfireg...=0'

...and I'm not a team member.

Your AI development sounds nice to me and I'm thinking of writing an own one, too.

I'd appreciate to rip the heart off your AI when playing against it. I'm not the best player but usually have a 30/1 kill ratio against 2 AIs so it will do ^^

Optionally I'd like to run AI matches anyways. So if ready to use post it and I'd gladly test it.

Edited by FeXoR
Link to comment
Share on other sites

Hi Andrea,

That sounds very interesting! I'm not very knowledgeable about AI myself, so I'd be eager to see how this plays out :)

As I'm sure you've noticed we've got a couple of bots in the making already; there's been some talk recently about joining efforts to move to a single definitive AI bot, but I'm not sure what stage those plans are at this time (I'll have to defer to the people directly involved for that). Nonetheless, I don't think that should stop you from being able to create a separate bot, and although I don't know how the current bots work, I suspect they'll find it interesting to see how yours does.

Out of curiosity, if this is your master's thesis, how are you being mentored? I ask because your faculty is presumably not very familiar with our codebase to help out should you run into trouble, so you'll probably have to do quite some digging around in the code yourself.

Also, the dev chat is most definitely open for everyone. Come hit us up on #0ad-dev @ quakenet!

Link to comment
Share on other sites

Hi Andrea,

That sounds very interesting! I'm not very knowledgeable about AI myself, so I'd be eager to see how this plays out :)

As I'm sure you've noticed we've got a couple of bots in the making already; there's been some talk recently about joining efforts to move to a single definitive AI bot, but I'm not sure what stage those plans are at this time (I'll have to defer to the people directly involved for that). Nonetheless, I don't think that should stop you from being able to create a separate bot, and although I don't know how the current bots work, I suspect they'll find it interesting to see how yours does.

Out of curiosity, if this is your master's thesis, how are you being mentored?

Also, the dev chat is most definitely open for everyone. Come hit us up on #0ad-dev @ quakenet!

I know about the other AIs and I read most of their code to see how they accessed game data and sent commands to the engine; my work will probably overlap in the "decision making" part, but not in regard of map analysis or entity collection access which I will probably leave as it is.

I also plan to develop a parser to let people (even non programmers) write behaviours for the agents, that way anyone could try to find the best way to handle that little community of intelligent ants :D

About the mentoring: I'm pretty much free to take the direction I want and when I have some hard decisions to make I ask for opinions; I'm being followed by experts in multi agent systems so I usually ask advice about choices in the infrastructure and common agent interaction problems.

So I'm digging myself through the code, but so far I've managed to find what needed (thanks also to the good AIs already present); in case I'll need some info about parts of the codebase I'll ask here :)

Edited by Relish
Link to comment
Share on other sites

Welcome and thanks for the report, it's cool to hear about 0 A.D. being useful to someone else even though it's not finished yet if nothing else ;)

I assume(/hope) you're using the SVN version to stay on top of new development? Just so you take advantage of any new improvements :) (Though if you're short on time it might be better to be using a static version so you don't have to keep up with any changes =) )

Link to comment
Share on other sites

Welcome and thanks for the report, it's cool to hear about 0 A.D. being useful to someone else even though it's not finished yet if nothing else ;)

I assume(/hope) you're using the SVN version to stay on top of new development? Just so you take advantage of any new improvements :) (Though if you're short on time it might be better to be using a static version so you don't have to keep up with any changes =) )

yes I'm using the svn to keep on par, but my bot only uses the common AI api (and not in a intesive way): so it should be very easy to port and adapt to any new version.

Would you mind saying if you are male or female? (Either way you are very welcome here!)

I'm male. In Italy Andrea is a male name (like it was originally since it means "Man" in ancient greek :P). I forgot in other parts of the world it is used by both genders, I should have used Andrew :)

Link to comment
Share on other sites

Hi, welcome to the forums. AI is my main area of interest here so I will be looking forward to seeing what you come up with. I will be curious to see how far you can push the agent idea. I have just started trying to introduce more of this style into qBot, (the new worker.js is the only example so far, I'm hoping to add military sometime).

My view is that this isn't particularly well suited to RTS AI's as a whole, the resources are inherently centralized and when fighting you want your whole army acting in a coordinated manner (based on practically all military theory for non guerrilla warfare). Hence I have decided on a single central planner system for qBot. This is mainly guesswork though, hopefully your AI will surprise me :).

Link to comment
Share on other sites

Hi, welcome to the forums. AI is my main area of interest here so I will be looking forward to seeing what you come up with. I will be curious to see how far you can push the agent idea. I have just started trying to introduce more of this style into qBot, (the new worker.js is the only example so far, I'm hoping to add military sometime).

My view is that this isn't particularly well suited to RTS AI's as a whole, the resources are inherently centralized and when fighting you want your whole army acting in a coordinated manner (based on practically all military theory for non guerrilla warfare). Hence I have decided on a single central planner system for qBot. This is mainly guesswork though, hopefully your AI will surprise me :).

What you say it's true, resources are centralized, it is for that reason that all my agents take the informations they want from gamestate in their "perceptions" cycle, after that they only use their internal belief system; I haven't used the metadata field to store anything so far.

Centralization is partly present: you're correct in saying that centralization is needed, in fact at the moment I'm working on emergent behaviours in that area.

Some units act as military leaders, assembling armies and leading them in a centralized manner; other units, while maintaining their independence, follow orders into battle.

What I'm trying to do at the moment is to make units emerge as leaders; so far I've tried a hierarchical structure (heroes on top) where, based on the unit's type, it gets recognized as leader by the others.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...