Mario AI Competition
togelius writes "We're running a competition to see who can program the best AI for a version of Super Mario Bros. It's about deciding what to do at each time step — run, jump, shoot etc. — based on a description of the platforms, items and enemies around Mario. This is hard. It's so hard we believe that some sort of machine learning algorithm will be necessary to reach good playing performance. But really, any approach is fair game. We welcome hard-coded submissions, commercial AI programmers, academics and amateurs alike. Whoever wins, it will be really interesting. The competition is associated with two IEEE conferences, and there are cash prizes available for the best submissions."
If you had read TFA you'd know that they are using the game Infinite Mario Bros, which has randomly generated levels.
Too bad. Otherwise, you could send them one of the files from the TAS of SMB (available somewhere on here) which is very probably frame-perfect at this point.
http://tasvideos.org/
TAS = Tool Assisted Speed Runs. Basically you program controller inputs (at very slow speeds) and then play them back at 1:1 speeds and you watch a pre-programmed controller run through an entire game as quickly as possible. There are runs for basically most of the more popular NES and SNES games as well as other games. Pretty interesting stuff and usually a daunting task is creating a TAS of a game.
500 dollars for the winner, but you are expecting evolutionary neural nets, genetic programming, fuzzy logic, and temporal difference learning.
The temporal difference between the effort to build such an AI and 500 bucks seems a little too great.
We welcome hard-coded submissions, commercial AI programmers, academics and amateurs alike.
Yet you only post this on slashdot with 13 days before the deadline. You couldn't have posted it here back in May? (the earliest date a post seems to have in your google group).
This is hard. I think if I were going to do it, I would break it up into steps.
First, I would teach the AI to move around on flat surfaces. Then I would teach it how to navigate over holes. Then I would add pipes and things it would need to jump over. Finally I would add random bricks. These are hard because if you jump underneath them, you might bump your head and change your trajectory.
Secondly I would start adding bad guys. Start with goombas, then add green turtles, then red turtles, then piranha plants, then bullets.
This is hard, the AI will need to learn to recognize certain features of the landscape, which is something humans are really good at doing. It will have to learn things like, "if I stand next to a tube, the piranha plant will not come out." It will have to learn that sometimes a short hop is appropriate, and sometimes a long jump is better. It will have to recognize that if a red turtle is on a ledge, it doesn't need to worry about it falling, and it can run underneath at full speed.
Heh, maybe I'll enter. How hard can it be?
Qxe4
First thought: "WOAH, this seems awesome! Can't wait to see what kind of crazy awesome stuff people come up with! Perhaps something like Air Man versus Genetic Algorithm?"
Second though: "Hmm.. Emulating keypresses is easy as cake, but I wonder how their game passes info about Mario's environment to the controller? After all, this is a contest of skill and creativity, so there should be a system in place to allow code monkeys and 1337 programmers to contribute, regardless of their tools of choice."
Still thinking: "Java only? What the hell !? I don't like Java! Ok, so I know Java probably doesn't suck as much as the purist c anti-Java crowd would have me believe, but I still think it's bloatware compared to c/c++ or even .Net stuff and I'm still kind of stuck on the ol' saying "Claiming Java is good because it works on all OS' is like claiming anal sex is good because it works on all genders.". I do ok for a n00b c/c++ programmer, I can monkey my way through anything with c/Pascal or BASIC syntax and an IDE, I'm an effin wiz at php, but of course this otherwise awesome competition has to be Java-only. For the love of all that is retro, why isn't this "heavily modded version" of the game made with an interface that would let me talk to it with good old QBASIC or c (which would be time appropriate ) or any other language for that matter!?
This challenge is still too tempting for me to just write a Flamebait-only reply though.. Could any of you brilliant, experienced guys point me in the direction of a Java dev tool (compiler, IDE, etc.) that is appropriate for someone who runs Windows on their main machine and has little to no experience doing Java development? I could really need something that is at least simple to set up and use so all I have to wrestle with is getting used to the actual language.
Thanks!
Stop spamming already.
For large sets, this will be our guide even unto death, for the LORD will work for each type of data it is applied to...
I highly like this competitions idea, but I won't participate, because the deadline is far, far too soon.
I mean, I am supposed to understand their framework and implement, test and tweak an artificial intelligence for a pretty complicated task like this in a month (let alone, 2 weeks), with my rusty java, rusty AI-knowledge (I'd try emergent behaviour, probably)? Sorry, but this is just plain impossible, since there is enough work to do from the university and other hobby projects. Give me until, like. Christmas and I'd try.
Plus, the time shortens even further, as it appears that there are documentation issues, so one would probably have to work out how the game state is given to the AI.
So overall: very interesting, but too short for someone who actually has other work to do
Just so happens, my girlfriend and I have been together and lived with each other for two years now. She might be lying but considering
;)
A. She's hot as hell
B. I'm not exactly Johnny Depp or Brad Pitt
C. I don't have a very deep wallet =(
I'm guessing my 16cm, all-in-all pretty average self somehow manages to keep her happy ^^,
Oh, btw.. From what I know both from personal experience and what friends of both genders tell me, neither the size nor the speed matter all that much without stability, and that often comes down to skill more than tools.
I'm running a competition to see who can program an AI that will create the game Super Mario Bros, by analyzing the behavior patterns of human subjects.
Brute forcing this is not really feasible, but there are probably a large number of states that you can treat as equivalent. For example, you don't care about whether a block is destructible if you are above it, you don't care about the state of any tile under the one you are standing on, and so on.
I am TheRaven on Soylent News
Are you an idiot who doesn't realise that this has absolutely no relevance to the discussion and that CUDA is incredibly poorly suited to the kind of branch-heavy coding that a solution to this is likely to involve, or is nVidia paying you to spam?
I am TheRaven on Soylent News
I assume this competition will end before New Super Mario Bros. Wii comes out. But when it does, someone should try to get that AI to work on the game for this competition. The AI I am speaking of is the new feature where if something is too difficult you can press start, select an option, and it will complete the area for you.
Actually you are quite wrong to say CUDA is irrelavent. Not all the AI techniques that could be applied to this problem require heavy branching. Neural networks, for example, can have minimal branching and will be considerably accelerated using CUDA/OpenCL.
Programming games are fun!
However, I've yet to see a such a contest in which the successful entries used AI techniques rather than handcoded decision-making. My money says the winners of this will be handcoded and possibly tuned automatically, and not based on neural networks or genetic programming or whatever. I suspect this is true because these games are set up so that the game mechanics and the outlines of good strategy are very intuitive to humans, and so it's most efficient for the human programmer to encode that knowledge into the controller. Then if there's some minor detail that the programmer doesn't know how to optimize, like "what is the exact threshold from which I should switch from strategy X to strategy Y", then that can be found by running a lot of games automatically.
That's how I'll be working, at least; in any case, I don't think I could write a decent learning algorithm for something like this in a month (or probably even given a lot more time).
I hope this isn't considered spam, but those interested in this might like to know about some other programming games I've enjoyed:
http://jrobots.sf.net/ (Java clone of CRobots)
http://robocode.sourceforge.net/ (More complicated version of above)
http://sillysoft.net/ (Risk game that accepts AI plugins)
But really, any approach is fair game
Just how random is the 'random' level generator. If the AI is beaten by weaker AI because another team managed to exploit pattens in pseudo-randomness, then your competition results wouldn't really mean anything
Not to mention that you need to be present at the conference to claim your prize. Otherwise you just get a certificate.
In that case, the prize might not even cover airfare and a hotel stay.
We also used Infinite Mario Bros, but combined it with the RL-glue coding framework to make the interface easier. That way, a well-coded agent is automatically compatible with any other domain that is RL-glue compatible.
The prizes were also comparable: ~$450 for the first place team, ~$250 for the second place team.
The results were interesting: far from developing interesting and novel RL algorithms, most competitors used clever feature engineering combined with dimensionality reduction to reduce the full Mario problem to a simpler one that could be solved efficiently using existing RL algorithms that are robust and well understood.
One of the big lessons that we took away from this was that we haven't solved the mechanism design problem of competitions in AI. While Mario sounds like a good "grand challenge" problem for RL / AI, it turns out that simple heuristics work pretty well. I think this is a common problem for most of these competitions -- there's the Trading Agent Competition, there's Netflix, there's the General Game Playing Competition, etc. They all have the same goals, and they all have the same problem: competitors engineer algorithms to solve the competition, not to spur progress in general AI. These games are all a proxy for what we really care about (like the Turing test), and the proxy isn't perfect (like the Turing test).
I think the only way to get around this is to craft a domain that mimics the real world, because then if anyone "solves the competition," you've made progress on what you really care about.
It would be interesting to design a competition with these goals in mind. Maybe an extraordinary complex simulator based on a physics engine (Bullet or Havok) would be a step in the right direction -- different objects with continuous, high-dimensional state spaces and complex material properties (some are soft, some are rigid, some break, etc); interesting physical interactions between objects (collisions, joints, hinges, stacking, breaking, etc.); multiple levels of spatio-temporal abstraction (from low-level motor control to abstract tasks) and a strong vision component. Now that would be a cool competition!
David Wingate
wingated@mit.edu
---- Computers are useless. They can only provide an answer.
Asteroids played by robots. Contest: http://www.heise.de/ct/projekte/machmit/asteroids/ Results: http://www.heise.de/ct/creativ/08/02/ergebnisse/ (push on the play buttons to see the videos)
Atari rules... ermm... ruled.
Can humans even do this reasonably? By that what I mean is, when we play, we don't play based off what we see on the current screen. I doubt many people have beaten the game on their first play through. Most of us had multiple tries, seen more of the level and honed our timing in tricky spots.
So how does it test that a random level is completable? Seems to me that if there were an algorithm to do this, this competition would be moot. If there's not, there's going to be a lot of trouble with impossible random levels.
Give me Classic Slashdot or give me death!
You dont need Mario to explore every last block in the game, alls you need is for him to finish the level, and if the AI is smart, it will do it without the use of items (stars, mushrooms, etc). You could just use a simple pathfinding algorithm with detection for enemies and obstacles, and let mario complete the entire level while running and stopping only to wait for certain events (such as those stairs moving up or down).
8^300 states is a lot of data and would never perform well in realtime AI calculations anyways.
Do you D?
I know, I know ^^ I also work out. As in, at the gym, not with our Nintendo Wii. =O
I think exploring some various state machine configurations would help here.
With the way you get into these personal attacks, I'd love to see what you look like. I'm a perfectly normal guy who tries to stay in shape and keep my diabetes under control. I don't use linux because.. well.. Like c/c++, eventhough I am fairly competent at it, for most my needs it would be a whole hell of a lot more effort to use linux for day-to-day activities than Windows.
And by "normal" I don't mean 20kg++ overweight, and by "diabetes" I mean the type (type 1) you get for no spesific known reason, not the one (type 2) you get for being a lazy, sugar gorging dumbass.
You do realize right that most people work out in one way or another...
Do you have any idea how dumb you sound when you say something as down-right wrong as that? What is your definition of a work out? Walking to the bathroom? To the car, perhaps? Lifting the can of Coke to your mouth and swallowing..? Because that is unfortunately the total amount of physical work your average person gets done in a day. If everyone were working out, why is the average American adult 17 lbs over the "ideal". Even more scary when you take into consideration that this "ideal" they operate with has been adjusted over the last decades to better fit the weight trends we are experiencing. And by "we", I sadly have to include the rest of the world, even fairly reasonable Norway! 10 years ago, at school, there was perhaps 1 somewhat overweight kid per 50. These days the numbers seem reversed to where 1-in-50 work out and stay fit while the other 49 don't give a shit and waddle around, flabby and unhealthy, complaining about lack of energy and why they just can't seem to lose weight no matter how hard they work! (Normally, that last thing is said while chewing furiously at something made mostly from white flour and/or sugar)
So I ask you, Mr. Troll, how can you claim that most people work out and that actually doing something to stay healthy is something to be ashamed of, when you can't walk around town for 3 minutes without seeing at least one morbidly obese schmuck?
To the rest of you most highly respected slashdotters who might stumble on to and read this: I am sorry! I really am! I know I shouldn't feed the troll, but.. I've never really seen one live before! To be able to interact with a moron of this caliber is, to tell the truth, quite hillarious!
Here is one guy doing it. Pretty impressive... http://www.youtube.com/watch?v=0s3d1LfjWCI
No sig for now.
A few words of advice from someone who is in a similar marriage and has been since 1974. The most difficult years in marriage are after the wedding. :-)
I say that because so many people think that marriage will bring eternal bliss. It doesn't. But it doesn't have to be a living hell, either.
Marriage isn't so much about how compatible you are but how well you deal with incompatibility. It helps to find common interests that you can share in together. Look at disagreements as a challenge to work out together, not a reason to terminate the marriage. When people divorce and remarry, they don't realize that often they are taking with them into the new marriage the same problems that led to the failure of the previous marriage. It's better to work out those problems and not divorce in the first place.
Heh, I'm not American, but the eating habits and general ignorance they have over there seem to be spreading, just like every other type of "americanization" (language, fast-food, coke, advertising, etc.). 10 years ago nearly everyone I knew was into football (soccer), karate, or something and everyone used their bikes to get around if the weather allowed it.
These days, I know one person who works out actively (as in, needing a shower and change of clothes), and that is the guy who owns the basement gym I work out at. Every other friend I know start working out once or twice a year, only to give up after at most a month and go back to their wow-playing-takes-priority-over-outside-stuff couch potato lifestyle.
"I fuck supermodels every day"
Hahaha, that actually made me laugh! As I am sure you understood, I said "I work out" because of the whole "haha, everyone on slashdot is a pasty-pale geek who lives in his moms basement and jerks off to linux conf files and/or night elf screenshots"-gag. I wasn't trying to brag. Trust me, on a site filled with engineers, doctors, lawyers, astronomers and all sorts of other incredibly smart people, saying "I work out" to brag works about as well as saying "I picks ma noses and den I eats it!" with the same intent. ;)
Lastly, where is all this hostility coming from? Could you point me to the exact things I have written that makes me come off as "fat, full of entitlement and ignorant"? Because I just re-read my posts, and I don't think I come off as an unfriendly guy.. If anything, I have repeatedly said I don't claim to have any particularly noteworthy programming skills, that I'm not very good looking and that I don't have a lot of earth monies, but that I do what I can with what I've been given.