views:

469

answers:

8

In school, one of my professors had created a 3D game (not just an engine), where all the players were entirely AI-controlled, and it was our assignment to program the AI of a single player. We were basically provided an API to interact with the game world.

Our AI implementations were then dropped into the game together, and we watched as our programs went to battle against each other.

It was like robot soccer, but virtual, with lots of big guns, and no soccer ball.

I'm now looking for anything similar (and open source) to play with. (Preferably in Java, but I'm open to any language.) I'm not looking for a game engine, or a framework... I'm looking for a complete game that simply lacks AI code... preferably set up for this kind of exercise. Suggestions?

+13  A: 

This sounds very similar to Robocode.

Robocode is a programming game, where the goal is to develop a robot battle tank to battle against other tanks in Java or .NET. The robot battles are running in real-time and on-screen.

Bill the Lizard
My one complaint about RoboCode is that it quickly turns into a trig learning project rather than an API or AI learning project. Once you develop a set of libraries to abstract away the trig you can get to work programming the AI. IMHO it should come with such a library as part of the API.
Chris Nava
@Chris Nava: I'm writing that down in my notebook of ideas for open source projects.
Bill the Lizard
@Bill the Lizard, Let me know if you get it off the ground.
Chris Nava
RoboCode is great fun. I used to work for a company where we'd have in-house team battles on away-days. You'd have to develop your robot using TDD and check the code into SVN. Every 20 minutes CruiseControl would check out the latest code, run the unit tests (I think you had to have a certain percentage of code coverage as well) and launch a battle on a projected screen. You'd half watch the battle while improving your robot for the next round 20 minutes later. Great fun.
Drew Noakes
+4  A: 

My AI class used the open-source BZFlag, which turned out to be quite entertaining and informative.

TreDubZedd
+2  A: 

You may start with this game

Some AI is already implemented so that you can take example

Marc
+4  A: 

Check out Mario AI. You get to program an AI to control mario. There's a competition and some papers associated with it. Very easy to setup and get running with Java or any JVM language.

derivation
+1  A: 

Check out ORTS.

Shaggy Frog
This is just a game engine.
Dolph
ORTS is an open-source RTS game framework. You set it up, define the game, and then you write AI agents that use the API to play the game.
Shaggy Frog
+2  A: 

I know you indirectly referenced RoboCup in your question, but I think it's worth a mention here given the heading. There are both 2D and 3D versions:

The 2D league is more abstract with commands like move, catch, kick.

The 3D league is more complex as you have to control the angles of each hinge in a 3D robot's body (22 of them with the Nao model).

Both are equally valid exercises for AI. It probably depends what area of AI you want to play with.

Both can be programmed from any language/platform that supports TCP sockets. You'll find sample code in Java online to get you started. I've been maintaining a list of existing libraries for 3D RoboCup on the SimSpark Wiki here.

If you want to use .NET for the 3D league, you can use the TinMan library I created.

Drew Noakes
+3  A: 
Eric
+1 BWAPI. I totally forgot about this.
Caleb Thompson
+1 nice call, don't know how i didn't remember that one. on a side note: when you say "Unlike other platforms such as Robocup" you're talking about the 3D league since the 2D league is, as Drew Noakes said, "more abstract".
João Portela
Yes, I was referring to the 3D league. You're right that the 2D league is more abstract. In the 2D league the basic operators are "move, dash, turn and kick".
Eric
A: 

Torcs is a racing game engine that lets you build your own drivers in C++.

reseter