Mario AI Competition

Sergey Karakovskiy and Julian Togelius

In association with the IEEE Consumer Electronics Society Games Innovation Conference 2009 and with the IEEE Symposium on Computational Intelligence and Games

Deadlines: August 18 (ICE-GIC) and September 3 (CIG)

Getting started
Advanced options
Submitting your controller
ICE-GIC league table
CIG league table

Last update: September 12, 2009

How to get started (it's easy!)

First of all, download the source code. Bug reports are welcome. Unpack, and go to the classes directory. To get a feel for how the code works, you can then try the following commands:

java ch.idsia.scenarios.Play

Lets you play a game of Mario yourself on the lowest difficulty level. Controls are the arrow keys, a and s.

java ch.idsia.scenarios.Play

Shows a hard-coded agent playing the same Mario level.

java ch.idsia.scenarios.Evolve

Evolves a neural-network based controller using a simple Evolution Strategy.

java ch.idsia.scenarios.Play evolved.xml

Shows your recently evolved controller playing the same Mario level as in the examples above.

java ch.idsia.scenarios.Stats evolved.xml 0

Tests your recently evolved controllers on a large number of levels of different difficulty. This class will be used for ranking the submitted controllers and deciding the winner, but a different seed than 0 will be used.


Brings up a graphical user interface with a number of options for running different agents on different Mario levels.

After trying this, your fingers are probably itching to get coding. Well then, do it! Take a look at how and HeuristicController are constructed, and write your own class, extending and maybe also For those of you who use IntelliJ, project files are supplied, if you use another IDE the project structure should be simple to set up.

One final thing before you get going, though: please join the Mario Competition Google Group and send a message notifying us (and your competitors) that you plan to participate!