Would anyone be interested in having a go at making an AI to play a game and we can have a little competition for who makes the strongest one? Just a friendly contest. I believe a lot could be learnt from doing this.
I think an AI for a lesser done game would be interesting. For example, maybe Quiridor: en.wikipedia.org/wiki/Quoridor though I'm open to other suggestions.
I once saw a game in which there were these little tanks that would shoot at each other. Each tank was driven by AI. And so the "players" could only program their tank and then see which tank performed best. It was cool to watch.
We'd need a framework that would drive the AI, so that each submission would not have to recreate the entire game.
I agree, maybe we could simplify the contest to only using console, it shouldn't take long to make a simple engine type program. It could operate by simple responding to queries by competing programs through I/O. Similar to how online judges do it.
If the contest is about the AI, then that's what we should isolate. We should create a common interface for the AI. Something simple like this:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
bool wallPlaced( Pos pos );
Action takeTurn(GameWorld& world); // Where 'Action' is a type to denote
// what the AI decides to do for its turn.
Contest submissions would write implementation for the AI class only. They would get data about the current state of the game world through the GameWorld class.
The framework should take care of everything else. User I/O (if we even need any of that... wouldn't this be pitting AI's against each other? no need for IO in that case), keep track of the game world.
This sounds like a cool enough idea, I'm not familiar with the game at all but it doesn't seem overly complex. My question is this: say the game calls my instance of the AI player, in my head it would pass a pointer to the board to my class and the board would contain all of the pawn and active wall positions. Now let's say I'm a block head and there is an error in my logic where I try to pass through a wall. How would the game tell my AI class that this is an invalid move? Similar question for the placement of walls that would block in an opponent.
Or you could use something that's already made and simply code the AI now.
> How would the game tell my AI class that this is an invalid move?
1. You lost, end of game.
a. call to the `you_made_an_invalid_move()' method in the AI player.
\alpha. Do nothing, simply call `move()' again
(you may want to count infractions and end in alternative `1' at some point)
The maze one is too generic, it is already researched and you can just google the best algorithms to use to go through a maze. If you are talking about a pawn navigating a maze without knowing nothing other than what's in front of it like a human, than you can't say the best is the one that took the least time. Rather it got lucky in guessing the most appropriate path than any other.
> The microorganism thing sounds cool, but it's in Java.
The runner is in java, but you can code in c++ too.
> It be awesome if we had to fight through a simulated immune system or whatever.
For now is two colonies in a Petri dish battling for supremacy.
I found that more interesting as they fight in equal conditions
I had run a beta-test - there were about 10-20 participants. However I left the idea later - there was not too much excitement in colleagues :)
We were playing simple dice-game: each of player casts the dice as many time as he wants, summing up points - but if the '1' is thrown, all his points for this move are reset and turn passes to opponent. One who reaches 100 wins. However there could be many games implemented simply. Gathering of "mushrooms" which pops (grows) on rectangular field was my next idea. Two bots can run through the field and try to select the best path...
Other variant is to run bots in apparmor or other kind of sandbox, as separate programs - and exchange info via files. That is the way Google AI Challenge worked.