Game Development Community

dev|Pro Game Development Curriculum

Plan for Bruno Grieco

by Bruno Grieco · 01/16/2005 (2:20 pm) · 10 comments

My 2004 project, Crowmania, has reached "frigidaire" status. Since I wasn't able to find a designer team to work with me, it's on the fridge till further notice. But let's go to the good news :

I'll be starting my Master Degree in Artificial Inteligence in the Federal University of Rio de Janeiro, in the NCE ( Nucleus for Eletronic Computing ) and my ideas for thesis are the following :

1) an AI scripting language, something somewhat close to Prolog that could be compiled/translated to TorqueScript

2) Genetic Algorithms connected to Rag Doll Physics and it's implementation ( that's a real challenge cause I know nothing about either )

3) Whatever shows up in the way...

So, I beleive 2005 will be a very productive year !!!

#1
01/16/2005 (7:31 pm)
whoa. That's cool stuff~! Good luck!
#2
01/17/2005 (2:37 am)
What design teams are you looking for?
#3
01/17/2005 (3:59 am)
What "genetic algorithms" means ?
#4
01/17/2005 (4:02 am)
:o) already done an Msc in AI a few years back now heading for the ol' PHd.

The scripting language sounds cool but you would need to create an interpreter for it and this will need to be integrated into Torque, along with the logic to handle the commands e.g. say you have the following ai script

monster:think.route(toplayer)

if( monster:think.sucess)
//head along the chosen path

where route is a path finding routine and the variable toplayer is a rules data block definition that has a number of ai parameters set within it such as consideration for the distance to target, line of sight etc.

It get's real complex real quick!

Strangely enough the rag doll thing with the genetic algorithms sounds easier to do :o}
#5
01/17/2005 (7:39 am)
Check out swi-prolog at:

www.swi-prolog.org/

It is under the LGPL license, so it is compatable with Torque license-wise. I have had great experience with it investigating declarative languages, the IDE is a lot of fun to use to step thru your projects to see exactly what is going on as prolog can be a bit confusing at first. The API of the libraries provided is well documented and easy to work with. Someone familiar with the torque codebase could get this rolled in and working hand in hand with Torquescript (I dont think it can replace it) within a week.

Good Luck with it!

Jameson
#6
01/17/2005 (8:06 am)
Gabor:

Genetic Algorithms is a field of study in AI based on the principles of evolution. Effectively, you allow algorithms to create offspring in multiple generations.

What you do is you set up a task, and a 'fitness' algorithm to measure the degree of success of the programs. Let's say the task is survival. Then you create a set of programs - preferably in the format of some bytecode where even a random string of numbers represents a legitimate program (so you won't end up with 'crashes').

Now you create a number of random programs. You set them loose on the task, measure their success with the fitness algorithm, and you allow the 'best' programs to replicate themselves - possibly 'mating' and exchanging 'genetic code', and creating duplicates of themselves with small 'mutations' - random changes in their code. Then you run the test again.

Early on in the development of the game Jet Moto, I toyed with genetic algorithms. I started with some randomly horrible AI riders, set them loose on a track, and watched in amusement as they all crashed, drove backwards, plowed into walls, and never got more than a hundred feet down the track. I left it running overnight.

The next morning I came into the office, and checked out how my little AI hover-cycles were doing. Curiously enough, they had discovered a 'hole' in the level - a missing collision volume that the level designer had neglected to put in (the visual image of the wall was there, but they were not collideable). The bikes had learned to exploit this 'shortcut' completely, taking a massive shortcut, barely hitting the waypoint I'd set for them on the other side of the track (an error in my fitness algorithm), and completing the lap in an unbelievably short amount of time.
#7
01/17/2005 (8:17 am)
Guys, thanks for the feedback.

@John,
I've been looking for help in the past year to create a design team for my crowmania project.

@Gabor,
A Genetic Algorithm is one based on Darwin's Natural Selection Theory. Say you want to make a smarter bot. You then spawn 30 bots, each one with a different characterist, measure their degree of sucess, discard the 25 worst, and spawn other 30 based on the characterist of the winning 5. repeat it until you breed a bot that fulfills it's task.

@Peter
Sure, your'e right. Specially cause I've seen a genetic Algorithm with physics simulation called "Breve" so I know it's feasable. But the script stuff is a real challenge.

@Jameson
Thanks for the link, I'll check it out later.
#8
01/17/2005 (12:32 pm)
@Bruno: just a thought that might interest you... I'm also interested in GA, and made a successful very simple test using a trivial fourlegged creature in a realtime physics environment. My goal was to make it figure out how to stand up, with no instruction from me. The creature had one main body and four straight legs (so total of five bodyparts).

The fitness function was very simple: 1) reward it for raising the main bodypart (positive Z value), 2) penalize it for traveling (changing location on the XY plane from where it started), and finally 3) penalize it for feet being in the air, i.e. flailing its legs, because this was slowing down the early generations.

The input was simply two floating points for each leg, representing up/down and side-to-side motion. I made each "sequence" consist of six simple motions, each the same length of time, and the total of all six motions together represented the "competitor" in the genetic algorithm. I mixed ten of these sequences to form one generation, then took the top two and swapped out elements, plus mutating, to get the next set of ten.

Within fifty or sixty it was standing up pretty well, wobbly but definitely doing something. Plan on going a lot farther with it, but it got a lot more complicated.

Good luck, sounds like you have a lot of interesting projects to keep you busy!
#9
01/17/2005 (5:56 pm)
@Chris

Thanks for the input. Good to know I'll have company with this idea.
#10
01/18/2005 (9:16 pm)
Well, if you need a little help in design aspects, you can email me in vidextreme@yahoo.com and let me see what I can do.