Game Development Community

AI Arena

by William Finlayson · in Technical Issues · 04/30/2001 (8:30 pm) · 5 replies

I get what you mean about more intrest then time, but even if nothing comes of it, it makes in an interesting discusion :)

There are a lot of things that would go into it, but I think that to start off with, there should be an 'arena'.

Something 2D would do the trick, keep things nice and simple. Either using coordinate system, or a grid type-map. Keeping it simple is the key, so how about starting off with clear terrain, and barriers.

Barriers - Block line-of sight and movement.
Clear Terrain - well... um... it's empty.

The agents should be given avatars in the arena. These bodies will have a few actions they could perform, for example -

Walk(X,Y) - just walk to a place, not too energy intensive.
Run(X,Y) - adds possibility of tiredness.
Attack - (self-explanatory)
Look(direction) - return what can be seen

Just some sugestions. The actual capabilities would have to be well defined and quite few in number.

The AI itself. You would write the AI to control your avatar, just a matter of using actions to get inputs, and then acting upon them.

Then again, it could be something much simpler. I haven't had time to write much, but hopefully it's enough to start with. I'm afrai I'm going to have to sleep soon, but I'll be posting again soon.

Tell me what you think, an alternative would be to have a system like your's, but with more actions.

Anyway.... sleep time...mmm....

#1
04/30/2001 (8:49 pm)
William,

(Some starting thoughts....)

In order to develop such an Arena, we need to set-up the basic framework --here are some initial thoughts:

Definitions:

Agent: AI entity that "fights" in the arena;
Trainer: human that owns the Agent;

- initially, combat should be 1-on-1;
- the trainer should be able to set attributes to a starting value --the attributes are then modified based on outcomes from the conflicts;
- at any point the agent should be able to be snapshoted --including a history of all of the outcomes of previous actions;
- the agent should never be allowed to access the un-perceived attributes of his opponents --i.e. the snapshots should only record the "guessed" strenghts of the foe and then the outcome. This should lead to the ability for the agent to apply a probabilty weight to its guesses.

As for format/venue --I am a Win programmer ---mostly Corporate Intranet stuff and we don't use CGI; however shouldn't be too much to pick up as long as we can get some space that would permit the proper access.... or maybe Client Side JavaScript in HTML? I'm not sure which will be the best....

A 2D map with graphics would probably be best; especially if swarming/groups are added ---a text log displaying too much is usually counter productive.

Conflict depiction would be like:
-- A "withdraw" would be a move backward; a "retreat" would be a larger move to the rear ; and a "route" would be a large move to the rear.....
-- A "win" would be a move forward; a "major win" would be a larger move forward; and so on.;
-- Variations would mean that the AI could choose a Flanking move if it has less Agression and more Intelligence--- or a Frontal Assault if it had more Agression and Less Self Worth..........

For now I will put some more thought into the app and probably stay with a Windows EXE of some sort...

Comments?
#2
05/01/2001 (10:14 am)
It has to be said that I agree with everything you've said there.

What I was saying about doing it on the web using CGI would only apply for a non-graphical thing. Another option would be to use a java applet. Doing it on the web allows user's to fight each-other online, but graphics will be poor, and it's bound to be slow.

The other option like you said is a windows executable. If graphics are needed, then I am in the process of writting a very small, fast, and nice looking sprite engine.

I think that it should be kept simple and near to what you describe. A few key stats that the user gets to allocate from 'points', wins allow upgrading of stats. Simple actions like you describe would be good, as they could be quite flexible, and using them properly, and in the right circumstances would provide complexity to the AI.

Anyway, if it's going to be in windows, then the sprite engine that I am writting would be good as it can do fullscreen or windowed graphics, and it can use native windows methods or DirectDraw.

If it were to be really competitive, then I would condsider having a java version as well as the windows version, for playing on-line. I have a site with php access, so you can upload files and things, but I think starting with the exe would be better.
#3
05/09/2001 (9:28 pm)
AI Wars: the insect mind

would be a great starting point or learning experience for such a project. I love it and the language to "train" your ai
#4
05/11/2001 (5:40 am)
the following code is from AIWars for a simple drone just so ya'll can take a look


name DroneD4
author Tactical Neuronics
iff code DroneD4

;Simple shoot and evade drone

raise shield
phase1:
long range scan
if scan found enemy then 
	gosub killit
end if
scan perimeter
if scan found enemy then discharge energy
if bump barrier then move backward
turn right
if damage is > 1 then attempt repairs
goto phase1


killit:
lower shield
if missile ready then launch missile
raise shield
turn left
move forward
return

of course there are way more advanced bugs anyways i'd like to here if anyone else has ever played around with it.
#5
05/12/2001 (6:45 pm)
Hi Brad, I thought you'd given up on this thread, so I haven't checked it for a while.

The thing above is what I was thinking of, some sort of AI language. It looks ideal. I am writing a 2D game in Java right now as a commercial project, but when I'm finished with that, I should have enough knowledge to do this in Java. The main advantages of using Java over anything else would be the cross platform support, and the ease of adding internet capabilities if needed at some point. As the graphics will just be 2D, so the speed issue should not pose a problem.

Like I said though, I am in the middle of another project, I still work on this, but just not speedily. It would be a good idea to sort out the inhabitants, arena, and the scripting language before any coding anyhow.