+2  A: 

My basic question is : is it too ambitious to go about it in the way we have planned, considering the duration of the project is abour 3 months?

Yes -- but that's not necessarily a bad thing :)

Should we go 3d and use a 3d game engine?

No. Mainly because you said:

We want to concentrate most of our energy on the AI part.

Here's what I'd do, based on my experience (and knowing that, as a student, I often bit off way more than I could chew, too):

Make your simulation function irrespective of a graphical component. Have it publish "updates" to another layer, that consist of player and ball vectors. By doing so you'll be keeping your AI tasks separate from everything else, which means you have fewer bugs to worry about, and you can also unit test your underlying simulation much easier.

Take those "updates" and create your first "visualization" layer -- make it the simplest 2D representation possible. It could just be a stream of text lines: "Player 1 has the ball / Player 1 kicked ball at (30,40) with speed 20kph". That will be hard enough for your first pass since you'll be figuring out how to take data published by the simulation and doing something with it.

Your next visualization might add a 2D grid of ANSI graphics (think rogue-like) to actually show players and the ball moving. Your next one after that might be sprites. And so on. Note how you incrementally increase the complexity of your visualization... don't make your first step go to using a technology (3d graphics engine) you've never used before. (You'll never finish your project in that case.)

As for your questions about which route to take -- FSMs, NNs, GAs, top-down design -- you should rank your interest in them from most to least (along with the rest of your group) and then tackle them, in that order. You might consider doing one style for one team and a different design for the other team. You might want to make your FSM team play against a FSM team that's had an additional tweak done to it, in order to compare and contrast if you think your changes are actually being beneficial (you might be surprised and find out they make the team worse). Actually, that's where unit testing and splitting the simulation from the visualization come in very, very handy -- you should be able to "sim" as many games as you need to to get experimental results without worrying about graphics. You might even do it in batches overnight with scripts.

In general, my advice to you is this: break down your project into the tiniest pieces you can, and tackle them one at a time, so no matter where you're at when time runs out, you'll have something interesting to show off.

Shaggy Frog
Ok, so I guess I should go with the top down approach? i.e, the player looks at everything from a top view? I don't really want to go with the text approach ...
The "text approach" is merely the first step along what is an infinite path of visualization complexity. Instead of jumping straight into graphics, you can work out all the dependencies between the "simulation layer" and the "visualization layer" by doing a "text approach" first... it will be hard enough for you, trust me.
Shaggy Frog
+1  A: 

You could have a look at guntactyx, that's what I had to use when I did my AI unit at uni.

It takes care of all the display, physics, sound etc... for you, all you have to do is program your team of bots. The API includes functions to make the bot move left or right, shoot, hear sounds (like gun shots) etc... and it comes with a few sample bots so you don't start from scratch.

Also, it's quite fun to watch your bots battling your friends' bots :)

LeSnip3R