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."
Can I keylog myself beat the whole game on an emulator and submit the log? ... Seems kinda silly having ai for games that have nothing random in it.
"We are basing the competition on a heavily modified version of the Infinite Mario Bros game by Markus Persson. That game is an all-Java tribute to the Nintendo's seminal Super Mario Bros game, WITH THE ADDED BENEFIT OF ENDLESS RANDOM LEVEL GENERATION."
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
Did someone say money? Drool... Seriously though, I hope the contestants aren't in it for the prizes.
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...
"Claiming Java is good because it works on all OS' is like claiming anal sex is good because it works on all genders."
If you think that small and fast is preferable... Your girlfriend has not been totally honest with you.
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
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.
[Pardon the AC, still haven't bothered fixing my account]
Yay, it's based on my code. :D
I wrote it a few years ago for a mario themed competition on javagaming.org, but got more and more uncomfortable with using copyrighted materials (the graphics). It was relatively popular and I didn't want to just remove everything, so I released it into the public domain.
The random level code is pretty simplistic and just stitches stretches of random types together until the total length of the level is bigger than some minimum. Stretches can be things like "pipes", "holes", "blocks" and later on "cannons". The level randomizer for the map selection map is more impressive imo, and actually produces levels that feel original and look good.
/ Markus "Notch" Persson
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.
I've never studied AI, but could you generate a bad run that does win, then use genetic algorithms to slightly modify it and keep the runs that get better times. Maybe you could use GPGPU techniques to quickly accept or reject mutations.
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.