Tip:
Highlight text to annotate it
X
Hello there!! Our theme is Mario AI Championship. Before I say to you further details, I want
you to see the Super Mario Game from java programmers in Mario Competition in 2011.
So, let’s play! As you can see, button A is for run and S is for jump..It’s amazing
how they can achieve this result on our screen… They really did an amazing job and really
fun! It’s an Infinite Mario with different levels!!
Now I’m gonna present you more details about this competition and how is related with artificial
intelligence. You don’t know what artificial intelligence is?? Well, let’s get started!
Artificial intelligence is the intelligence of machines and the branch of computer science
that aims to create it. Game artificial intelligence refers to techniques
used in computer and video games to produce illusion of intelligence in behavior of non-player
characters. The techniques used typically draw upon existing methods from the field
of artificial intelligence. However, the term game AI is often used to refer to a board
set of algorithms that also include techniques from control theory, robotics, computer graphics
and computer science in general. And here you can see some examples of games which are
related with game artificial intelligence. Now, let’s talk about Mario AI Championship.
In the last few years, a number of game AI competitions have been run in association
with major international conferences, several of them sponsored by the IEEE Computational
Intelligence Society. These competitions are based either on classical board game(such
as Othello and Go) or video games (such as Pac-Man, Super Mario Bros and Unreal Tournament).
In most of these competitions, competitors submit controllers that interface to the game
through an API built by the organizers of the competition. The Competition is won by
the person or team that submitted the controller that played the game best, either on its own(for
single-player games such as Pac-Man) or against others.
If you plan to participate, you should join the Mario Competition Google Group. All technical
and organizational questions should be posted to this group, where they will be answered
by the organizers and stored in a searchable achieve.
You participate in the competition by submitting a controller. Your submission could consist
of a piece of Java code or a WOX file. You could submit both I you want.
But first you will have to develop your controller, using your method of choice and the Java software
package. As people submit their controllers they will
publish a league table for the controllers submitted so far. At the end of the competition
source code for all controllers will be posted on the final league table.
And now we have to inform you about Competitions Rules right? Well, as you can see the first
rule refers to your controllers which must be implement using Agent interface
All information about the Environment is provided by Environment interface.
Any use of java reflection of similar methods to directly access or influence the workings
or internal state of the environment during runtime is forbidden.
The controllers need to run in real time. This means that each time step can to run
in real time. This means that each time step can not require more than 40ms processing
on a Mac Book Pro from 2008. How fast your submission runs on your computer can be gauged
using the Stats class. Scoring will be measured as the average distance
travelled on a number of previously unseen levels featuring enemies. We will use the
Competition Score with seed 0 in your submission, but we will not release the seed used in final
scoring before the scoring event (in order to prevent over fitting controllers to a specific
seed). Multi objective fitness: This rule may conclude
the case of two different agents having the same fitness. However, we still have tiebreakers
for this weird case. What is tiebreakers? If two controllers get
the same score a number of tiebreakers would be applied in the prescribed order: -Number
of creatures killed -Number of coins gained
-Time(milliseconds) -Time(running time)
Now, what algorithms are used mostly for the competition. First of all A*. A* search is
well known, simple and fast algorithm to find shortest paths which seemed perfect for the
Mario Competition. As it turned out, A* search is fast and flexible enough to find routes
through the generated levels in real time. Secondly, Genetic Algorithm. Genetic algorithm
is a search heuristic that mimics the process of natural evolution. This heuristic is routinely
used to generate useful solutions to optimization and search problems. Genetic algorithms belong
to the larger class of evolutionary algorithms, which generate solutions to optimization problems
using techniques inspired by natural evolution, such as inheritance, mutation, selection and
crossover. And finally (c) Neural Networks: Artificial
neural networks are composer of interconnecting artificial neurons (programming constructs
that mimic the properties of biological neurons). Artificial neural networks may either be used
to gain an understanding of biological neural networks, or for solving artificial intelligence
problems without necessarily creating a model of a real biological system.
Implementation process: We will focus on the implementation process using the A* algorithm.
The implementation process can be separated into these phases:
(a) building physics simulation including world states and object movement
(b) Using this simulation in A* planning algorithm and
(c) Optimizing the search engine to fulfill real-time requirements with partial information.
And now let’s see more details: (a) Simulating the Game Physics: Due to being open source,
the entire physics engine of Infinite Mario Bros is directly accessible and can be used
to simulate future world state. This was achieved by copying the entire physics engine to the controller
and removing all unnecessary parts, such as rendering and some navigation code.
(b) A* for Infinite Mario: The A* search algorithm is a widely used best-first graph search algorithm
that finds a path with the lowest cost between a pre-defined start node and one out of possibly
several goal-nodes. A* uses a heuristic that estimates the remaining distance to the goal
nodes in order to determine the sequence of nodes that are searched by the algorithm.
It does so, by adding the estimated remaining distance to the previous path cost from the
start node to the current node. This heuristic should be admissible for optimality to be
guaranteed. However, if only near-optimality is required, this constraint can be relaxed
to speed up path-finding. With a heuristic that overestimates by x, the path will be
at most x too long. And finally ( c) variable Optimization: While
A* the A* search algorithm is quite solid and guarantees optimality, certain restrictions
need to be put on its execution time to stay within the allowed 40ms for each game update.
These restrictions will likely lead to a non-optimal solution, so careful testing has to be undertaken.
Now we can see Mario AI based on genetic algorithm. We can see on our screen pressed keys L, R,
Jump and Run. Agent: is genetic agent. It’s seems really fun.
Now we can see Mario AI based on neural network. As it was before, we can see Right, Jump,
Speed and Left which are the selected actions. We can see all kills by fire, by shell or
by stomp. Well, If you’re a java lover then what are
you waiting for?? Just give it a chance! You will enjoy it!!
Thanks for watching my video and I hope you liked it!