AI Contest Type Thing

Pages: 123
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.

Anyone interested?
closed account (N36fSL3A)
Sounds cool. We need teems tho.
closed account (Dy7SLyTq)
im in! let me know what happens
We'd need a framework that would drive the AI, so that each submission would not have to recreate the entire game.

Though I probably won't have time to participate.
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.
Even that is too much work.

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
class GameWorld
{
public:
   Pos getMyPawnPosition();
   Pos getOpponentPawnPosition();

   bool wallPlaced( Pos pos );
};

class AI()
{
public:
   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.
http://alifecontest.wikidot.com/

1
2
3
4
5
6
7
8
9
class your_microorganism: public Microorganism{
public:
   void move(Movement &mov);
   bool mitosis();

   string getName();
   string getAuthor();
   string getAffiliation();
};
Last edited on
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.
It would probably be best to have the whole game made first, then derive an AI class from a base Player.

@ne555: That looks pretty sweet. It makes me wonder if this idea would better come to fruition if we made our own game with very simple rules.
Last edited on
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)
How about the game be a random maze generator and each person must program AI to solve the maze... Which ever AI pawn gets through the mase in the least time might be the best.
closed account (N36fSL3A)
^Seems pretty cool. We should split in teams of 3 to 'oddify' the decision making progress, unless you want to be a lone wolf.

The microorganism thing sounds cool, but it's in Java. It be awesome if we had to fight through a simulated immune system or whatever.







Can you please make the game OOP based? I have a problem with C-ish C++.
Last edited on
closed account (o1vk4iN6)
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
Last edited on
closed account (N36fSL3A)
Fair enough, that Petri dish is cool. Who would rewrite the game in C++ then?
I've tried to create such a thing, web-based, year ago. It used small java-based runner to run bots. Bots themselves were written in JavaScript. This allowed to create a "sandbox" for them. Frontend was written in PHP.

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...

Similar approach could be used in C++, I think - write the core, the execution system in C++ - and bots in some scripting language for which has ready implementation in C++. For example V8 by Google for JavaScript.

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.
closed account (N36fSL3A)
That seems luck-based, not programming-ability-based.
closed account (Dy7SLyTq)
with the understanding that nothing is set in stone right now... i would like to say (in the event we can do teams/have to do an interface) that fred and i are on a team
I've made a maze resolver already and I'd say no to be fair, it's so easy and isn't really "Intelligent" to be artificial intelligence.

I'd be in tho.
What about bool IsValidAction(Action)?
Should we all team up to make the core game code?
Pages: 123