Home

Awesome

<p align="center"> <a href="#features">Features</a> &mdash; <a href="#use">How To Use</a> &mdash; <a href="#papers">Related Papers</a> &mdash; <a href="#missing">Missing Features</a> &mdash; <a href="#copyrights">Copyrights</a> </p> <p align="center"> <img width="300" height="300" alt="Robin Baumgarten A* agent" src="https://raw.githubusercontent.com/amidos2006/Mario-AI-Framework/master/img/frameworkAD.gif"> </p> <p align="center"> <b>Current Framework Version: 0.8.0</b> </p>

The Mario AI framework is a framework for using AI methods with a version of Super Mario Bros.

This is an updated version for the Mario AI Framework. As the first version was released in 2009, this is the tenth anniversary edition, integrating features from all previous versions and adding several new features. This new code includes a better interface for playing the game with planning algorithms (the planning track of the competition), generating levels (the level generation track), and possibly will support the learning track in the future . The framework comes with multiple different planning agents, level generators and thousands of levels including generated levels from diffeent generators as well as the original Mario levels. Also, the framework is compatible with Video Game Level Corpus (VGLC) processed notations.

If you want to access the old framework, feel free to check out the old websites for the previous competitions (2015 - 2012 - 2011 - 2009).

<h3 id="features">Features</h3>
<h3 id="use">How To Use</h3>

Planning Track

Download the repo and run the PlayLevel.java file. It will run robinBaumgarten A* agent on the first Mario level from the original Super Mario Bros. The game will run for 20 seconds (in-game time) and with Mario starting as small Mario and visuals appearing. To change the agent just change the package name of the agent in the following code

printResults(game.runGame(new agents.robinBaumgarten.Agent(), getLevel("levels/original/lvl-1.txt"), 20, 0, true));

to any of the package names that are found in src/agents/ folder, feel free to use any in your work. If you want to play a level yourself uncomment the following code in PlayLevel.java file

//printResults(game.playGame(getLevel("levels/original/lvl-1.txt"), 200, 0));

and comment the agent running line from before. This code will run the framework to play the first mario level of the original Super Mario Bros with 200 tick on the game clock and with Mario starting as small mario. Feel free to change the 0 to 1 to start as Large Mario or 2 to start as Fire Mario.

Level Generation Track

Download the repo and run the GenerateLevel.java from the src/ folder to test the framework. It will run the notch generator to generate a level then it will run robinBaumgarten A* agent to play that generated level. Feel free to try another generators by changing the package name of generator in the following line

MarioLevelGenerator generator = new levelGenerators.notch.LevelGenerator();

to any of the other package names of the other generator that can be found in in src/levelGenerators/ folder, feel free to use any in your work. The generators runs for maximum time of 5 hours to generate a level of 150x16 tiles using the following line:

String level = generator.getGeneratedLevel(new MarioLevelModel(150, 16), new MarioTimer(5*60*60*1000));

If you want to play the level by yourself or change the AI playing agent check the Planning Track subsection.

<h3 id="papers">Related Papers</h3>

The following paper describes the original Mario AI Benchmark:

The following list show all the papers that talk mainly about playing the game in the Mario AI framework:

The following is a list of papers about level generation in Mario AI Framework:

The following list includes papers that do not fit in the previous categories but still use the Mario AI Framework:

We are aware that this list is not complete. If you want your paper added, please contact us and we will add it to the list.

<h3 id="missing">Missing Features</h3>
<h3 id="copyrights">Copyrights</h3>

This framework is not endorsed by Nintendo and is only intended for research purposes. Mario is a Nintendo character which the authors don't own any rights to. Nintendo is also the sole owner of all the graphical assets in the game. Any use of this framework is expected to be on a non-commercial basis. This framework was created by Ahmed Khalifa, based on the original Mario AI Framework by Sergey Karakovskiy, Noor Shaker, and Julian Togelius, which in turn was based on Infinite Mario Bros by Markus Persson.